This patch should be applied to an un-modified XFree86 version 4.1.0 source tree. It is the first of four patches that will will convert the source tree to XFree86 version 4.2.0. To apply this patch, run the following from the directory containing your 'xc' directory: patch -p0 -E < 4.1.0-4.2.0.diff1 patch -p0 -E < 4.1.0-4.2.0.diff2 patch -p0 -E < 4.1.0-4.2.0.diff3 patch -p0 -E < 4.1.0-4.2.0.diff4 rm -f xc/extras/freetype2/builds/mac/ftlib.prj rm -fr xc/extras/freetype2/docs/design rm -fr xc/extras/freetype2/docs/glyphs rm -fr xc/extras/freetype2/docs/image rm -fr xc/extras/freetype2/docs/tutorial rm -f xc/programs/Xserver/hw/darwin/bundle/English.lproj/MainMenu.nib/objects.nib rm -f xc/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Localizable.strings rm -f xc/programs/Xserver/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/objects.nib gzip -d < 4.2.0.tgz | tar vxf - ------------------------------------------------------------------------------- Prereq: 4.1.0 Index: xc/programs/Xserver/hw/xfree86/CHANGELOG diff -u xc/programs/Xserver/hw/xfree86/CHANGELOG:3.1785.2.32 xc/programs/Xserver/hw/xfree86/CHANGELOG:3.2144 --- xc/programs/Xserver/hw/xfree86/CHANGELOG:3.1785.2.32 Sat Jun 2 11:27:50 2001 +++ xc/programs/Xserver/hw/xfree86/CHANGELOG Fri Jan 18 15:09:22 2002 @@ -1,115 +1,1253 @@ -XFree86 4.1.0 (2 June 2001) - 619. Disable PCI resource conflict checking for Linux/Alpha (Jay Estabrook). +XFree86 4.2.0 (18 January 2002) + 690. Workaround for hardware bug that prevents older ATI 3D Rage adapters from + being assigned to XF86Config device sections (Marc La France). + +XFree86 4.1.99.7 (17 January 2002) + 689. Fix bug introduced in snapshot 4.1.99.5 causing XDarwin's PseudoramiX + extension to always be disabled (Torrey T. Lyons). + 688. Disable the pipe check for stdout/stderr that was added in the previous + snapshot because it looks like it might cause too many problems + (David Dawes). + 687. Update the Arabic (ar) XKB keyboard map (#5145, Arabeyes team). + 686. Update the Russian (ru) XKB keyboard map, adding two new variants + ("typewriter" and "phonetic") (#5143, Ivan Pascal). + 685. Remove the lt_a and lt_p XKB keyboard maps (#5139, Nerijus Baliunas). + 684. Disable the DRI and print a warning message for Radeon 8500 cards + until they are supported (Kevin Martin). + 683. Properly detect when no BIOS is present on Radeon cards (#4978, + Charles Hannum, Kevin Martin). + 682. Delay before restoring VGA registers for Radeons to "fix" VT switch + problems (Kevin Martin). + 681. Add new PCI IDs from ATI (Kevin Martin). + 680. Update the Xinstall.sh script to create version compatibility links for + shared freetype libraries when needed (David Dawes). + 679. Update Freetype2 shared library versions to match the versions libtool + generates (Keith Packard). + 678. Doc updates (lots of people, includes #5142, 5144) + +XFree86 4.1.99.6 (14 January 2002) + 677. Change the default verbosity level for stderr from 1 to 0 (David Dawes). + 676. Set the X server's stderr to non-blocking for non-root users + (David Dawes). + 675. Don't allow the X server to start when stdout or stderr is a pipe for + non-root users (David Dawes). + 674. Add OpenGL man pages. + 673. Avoid duplicate symbol problem with xkbevd on some platform (#A.769, + Nicholas Leippe). + 672. Updated Ukranian XKB symbols file (#A.764, Andriy Rysin). + 671. Fix ELF loader for ARM architecture (#5138, Phil Blundell and + Adam C. Powell IV). + 670. Fix a race condition in the Linux kernel DRM code (#5136, + Arjan van de Ven). + 669. Fix DGA support in the s3virge driver (#5135, Kevin Brosius). + 668. Add XvBskew, XvRskew to adjust skew values for centering of an + Xvideo window for the trident driver (Alan Hourihane). + 667. Fix loader for Motorola 68k machines (Alan Hourihane). + 666. Fix very high resolution modes (e.g. 1600x1200@16bpp) in the + Trident driver (Alan Hourihane). + 665. - + 664. Quick hack to allow GLX to be included in non-XFree86 servers + (Marc La France). + 663. More ROP_NEEDS_SOURCE fixes for Savage chipsets (Egbert Eich). + 662. Improvements to the SiS driver which should fix a lot of the 630 + issues (Thomas Winischhofer). + 661. In XDarwin IOKit mode, ignore screens sized 1x1 (Torrey T. Lyons). + 660. Some missing QNX fixes (#5121, Frank Liu). + 659. Update XDarwin man page and usage message for XFree86 4.2.0. Add + XFree86 man page to XDarwin distribution (Torrey T. Lyons). + 658. Add bn_BD.UTF-8 to locale.dir (Taneem Ahmed). + 657. Fix luit not dropping priviledges when run with the -c flag (#5134, + Juliusz Chroboczek). + 656. Fix unresolved symbol and loader symbol registration problems in the + i810 driver that were introduced with the i830 support (David Dawes, + Abraham vd Merwe). + 655. Fix sparklies problem for other Trident *BladeXP chipsets + (Alan Hourihane). + 654. In XDarwin IOKit mode, ignore screens that can not provide the requested + size, depth, or refresh rate instead of generating a fatal error + (Torrey T. Lyons). + +XFree86 4.1.99.5 (7 January 2002) + 653. Fix some typos in the DRI README (#A.757, Andreas Mohr). + 652. xon.sh path setting from 3.3.6 (#A.756, Marc Herbert). + 651. Fix a problem with the Radeon driver that was causing the sync polarity + to be ignored (#A.753, Vedran Rodic). + 650. Set the max clock correctly for the G550 second head (#5133, + Luugi Marsan). + 649. Fix a Radeon DRI lockup problem (#5128, Steven Pritchard). + 648. Back out some mga_g450pll.c changes that cause problems on at least + some G450 configurations (#5122, David Woodhouse). + 647. Fix some xterm build warnings on *BSD (David Dawes, Thomas Dickey). + 646. Some QNX4 fixes/updates (#5121, 5124, 5130, 5131, Frank Liu). + 645. Prefer POSIX O_NONBLOCK to O_NDELAY (when defined) in lib/dps (#5121, + Frank Liu). + 644. Fix portability problem with XpmI.h (based on #5121, Frank Liu). + 643. Only use SA_RESTART in xterm when it's available (#5121, Frank Liu). + 642. Work around Watcom compiler bug that shows up when building Mesa's + stencil.c (David Dawes, based on #5121, Frank Liu). + 641. Handle __inline and __inline__ in compiler.h for non-GNU compilers, + which makes it more likely that drivers will build with other compilers + (David Dawes, based on #5121, Frank Liu). + 640. Build fixes for xedit/lisp. Don't define NEED_SNPRINTF when not needed. + Avoid a double recursion into subdirs (#5123, Matthieu Herrb). + Added code for systems without getpagesize. + 639. Fix the xdm's handling of keys, allowing keypad keys to work (#A.662, + Servaas Vandenberghe). + 638. Fix hang when quitting XDarwin before starting X server + (Torrey T. Lyons). + 637. Don't add XDarwin's PseudoramiX extension with only one screen + (Greg Parker). + 636. Add Spanish localization of XDarwin help file (Pablo Di Noto). + 635. Improve XDarwinStartup's error reporting (Torrey T. Lyons). + +XFree86 4.1.99.4 (28 December 2001) + 634. Update the ati/radeon driver to recognise the All-in-Wonder 8500's + ID (#5117, Vladimir Dergachev). + 633. Fix bug where a pointer may be checked without being intialized in xman + (#5120, Martin Husemann). + 632. Add an informational message to the radeon driver when LCD/DFP mode + validation fails (#5118, Vladimir Dergachev). + 631. Handle the ATI Rage128 "PP" variant like the "PR" variant (#4982, + Mike Harris). + 630. Fix a LynxOS on PowerPC build problem (#A.746, Stuart Lissaman). + 629. Fix the names of the Northern Saami keyboards (#A.742, + Petter Reinholdtsen). + 628. Add Xinerama info to xdpyinfo (#A.741, Greg Parker). + 627. Fix an xdm problem caused by not handling an interrupted read (#A.728, + Darren Marshall). + 626. Add functions completing text control for Render. Bump XRender library + minor version (Keith Packard). + 625. Add XKB layout info for a newer Logitech iTouch keyboard (#A.727, + Dimitromanolakis Apostolos). + 624. Fix a problem that shows up with the summa tablet driver when using + a Genius EasyPen (#A.714, Anders Melchiorsen). + 623. Fix for VT switch problem with the S3 driver (based on #A.677, + Juergen Lesny). + 622. Remove some more spurious entries in the KSC 5601 encoding file (#A.678, + Jungshik Shin). + 621. Fix for APM problem on devfs-based Linux systems with APM in a kernel + module (#A.663, Denis Zaitsev). + 620. Update the mga Xv double buffering to match the more recent submission + (#4976, Didier Gautheron). + 619. Fix a bug in the XKB Slovak (sk) layout (#A.621, Juraj Bednar). + 618. Fix a small window when a SIGIO may be received without a handler + installed (David Dawes, based on #A.620, Michel Lespinasse). + 617. ISO 8859-{1,7,15} Compose file updates and fixes (#5114, + Vasilis Vasaitis). + 616. In XDarwin multi-monitor IOKit mode, read screen location from the + kernel (Torrey T. Lyons). + 615. Update XDarwin credits file (Torrey T. Lyons). + 614. Fix various XDarwin crashes in multi-monitor rootless mode by using + a new "light" version of PanoramiX/Xinerama called PseudoramiX + (Gregory Parker). + 613. Fix some typos in the X.Org INSTALL doc (#5113, Chris Pepper). + 612. Fix an bug that prevented the releasing of XvMC memory on exit (#5112, + Matthew J. Sottek). + 611. Some Xprint build warning fixes (David Dawes). + 610. Xprt PCL3 support (#5111, Mark Snitily, from X11R6.6). + 609. Xprt PostScript bitmap cache (#5110, Chris Bare, from X11R6.6). + 608. Updates for the Romanian (ro) XKB map (#5108, Marius Andreiana). + 607. Update s3virge docs (#5107, Kevin Brosius). + 606. Disable pixmap24 option for Permedia3/4/R4 as the chip doesn't support + this (Alan Hourihane). + 605. Fixed a infinite loop in the i2c code. + 604. Fixed a Sig11 problem in siliconmotion driver (Egbert Eich). + 603. Fixes to silicon motion driver: + - gamma correction for 24 bit true color mode. + - XAA: clipping rectangle was clipped to visible screen, so offscreen + pixmaps could not been drawn at with accelerated drawing functions. + - in SMI_ScreenInit frame buffer size calculation for video changed. + - smi_video: partly rewritten. + - Support for 7111 + - interlaced video via + - XF86Config Option "Interlaced" or + - attribute XV_INTERLACED (Corvin Zahn). + 602. Add French localization of XDarwin help file (Olivier Verdier). + +XFree86 4.1.99.3 (19 December 2001) + 601. Change the property Xprint uses to identify pmf printer internal fonts + to avoid a clash with DPS (#5106, Chris Bare, from X11R6.6). + 600. Fix a C type aliasing bug in xkbcomp (#5104, Jakub Jelinek). + 599. Fix a bug in Xprint's PS output code that was over-optimizing out + clip change requests (#5102, Chris Bare, from X11R6.6). + 598. Improved error handling for Xprint's -XpFile option (#5101, 5105, + Chris Bare, from X11R6.6). + 597. Add higher resolution options to the Xprint postscript printer support + (#5096, Chris Bare, from X11R6.6). + 596. BuildLoadableXlibI18n should be keyed off "SharedLibX11" rather than + "BuildX11Lib" (#5095, Ernie Coskrey). + 595. Fix a luit inconsistency between the default data used when a + locale is unknown and the data used by ISO 8859-1 locales (#5092, + Juliusz Chroboczek). + 594. Add eo_EO locale entries, which is what GNU libc 2.2 uses for the + Esperanto locale (#5091, Juliusz Chroboczek). + 593. Fix an Xprt page handling problem (#5090, Chris Bare, from X11R6.6). + 592. Update the X.Org release number from 6.5.1 to 6.6 in various + documents and header files (#5089, 5100, Chris Bare, from X11R6.6). + 591. Recognise __SVR4 as an alternative for SVR4 in Xosdefs.h (#5087, + Chris Bare, from X11R6.6). + 590. Cleanup some header files to make them more C++ friendly (#5086, 5088, + Chris Bare, from X11R6.6). + 589. Update the driver status document (#5085, Branden Robinson). + 588. Fix the SiS drm driver (#5084, Torsten Duwe). + 588. Fix Trident driver pitch values when accelerator is in use, applies + to Image and Blade series chips (Alan Hourihane). + 586. Minor bugfix to SiS driver, restructured VT switching code + (Egbert Eich). + 585. Attempt to fix flickering in 24bpp on Trident CyberBladeXPAi1 + (Egbert Eich). + 584. Fixed UTF8lib support (Mike Fabian). + 583. Re-instate makedepend's recognition of backslash line terminations + (Marc La France). + 582. Add proper reference counting to the XvMCContext so that destroying + the context before destroying associated surfaces is handled correctly + (#5083, Matthew J. Sottek). + 581. Fix the xtt (X-TrueType) font module so that it will recognise + fonts with upper-case suffixes (".TTF" and ".TTC") (#5082, + ISHIKAWA Mutsumi). + 580. Use uname instead of hostname in rstart and xon scripts for portability, + plus some other rstart and xon fixes (#5081, Chris Bare, from X11R6.6). + 579. Some newport driver cleanups and fixes (#5080, 5103, Guido Guenther). + 578. Fix XagNsingleScreen definition and some related side-effects (#5077, + Chris Bare, from X11R6.6). + 577. Fix some doc typos, and remove references to the non-existent + shadowfb(4) man page (#5076, David Krause). + 576. Pitch calculation updates for the r128 driver (#5074, Michel Dänzer). + 575. Updates for VMware SVGA programming documentation (#5073, + Jeremy (VMware)). + 574. Fix cases where makedepend reports the wrong line number and file when + an error occurs (#5072, Mark Snitily, from X11R6.6). + 573. Fix differences in libXt behaviour when using poll() compared with + when using select() (#5071, Chris Bare, from X11R6.6). + 572. Some warning cleanups for Tru64 (#5069, Antti Tapaninen). + 571. Fix a typo in the mt_us keymap entry (#5067, Nerijus Baliunas). + 570. Add some missing UNDEFINE lines to the iso8859-11 and tis620-2 + encoding files (#5065, 5066, Theppitak Karoonboonyanan). + 569. Some Luxi font updates: + - update the Type 1 versions to fix a UID-related bug and cover more + glyphs + - update the TTF fonts.scale file to include ISO 8859-13 + - update the docs to properly reflect the fonts' glyph coverage + (#5064, B&H, Juliusz Chroboczek). + 568. Fix "The Open Group" copyright notices to reflect the change in + post R6.4 licensing (#5093, Mark Snitily, from X11R6.6). + 567. Added debugging helpers (Egbert Eich). + 566. Added support for the Trident CyberBladeXPAi1 (Egbert Eich). + 565. Fixed Mono8x8Fill problem in S3 Virge and Savage drivers (Egbert Eich). -XFree86 4.0.99.902 (1 June 2001) - 618. Fix Linux xf86GetPciSizeFromOS() parsing when the kernel is 64 bit +XFree86 4.1.99.2 (12 December 2001) + 564. Fix XDarwin GetImage bug on screens other than 0 in rootless mode + (Gregory Parker). + 563. Fix acceleration, hw cursor and console restoration in the "nv" driver + on PowerPC (Mark Vojkovich). + 562. Fix console switching on r128 & radeon drivers using FBDev (#5075, + Benjamin Herrenschmidt (radeon), Michel Dänzer (r128) ). + 561. Implement double buffering for XVputimage in the mga driver (#A.601, + Didier Gautheron). + 560. Fix a wheel emulation problem that prevented delivery of button + events when the wheel button was the same as one of the emulated + button (#A.600, Antonio Larrosa Jiménez). + 559. Fix some 'make install.sdk' problems (#A.586, Stanislav Brabec). + 558. Fix mga DGA when UseFBDev is enabled (#A.584, Wayne Whitney). + 557. Fix dri module build when BuildXinerama is set to NO (David Dawes, + based on #A.599, Pontus Lidman). + 556. Fix libXext build when BuildLBX is set to NO (based on #A.582, + Didier Gautheron). + 555. Fix typo in ms_MY locale name (was ms_NY) (Hasbullah Bin Pit). + 554. Fix incorrect code in signal handlers in most of the clients, + xterm and xdm not done yet (Matthieu Herrb). + 553. Add Glint R4 and Gamma2 support to the glint driver (Alan Hourihane). + 552. Fix rotated display in the nv driver (Mark Vojkovich). + 551. By default, validate all available modes rather than only the largest + such mode (Marc La France). + 550. Various XDarwin improvements: + - Use all 8 bits of PseudoColor in full screen Quartz mode. + - Write XDarwin version number to console log. + - Move Alt/Option key back to Mod1 by default. + (Torrey T. Lyons) + 549. Fix offscreen memory manager segfault (Jacques Gangloff). + 548. XDarwin Quartz mode cursor improvements: + - Safely free QuickDraw cursors. + - Fix disappearing cursor in rootless mode with multiple monitors. + (Gregory Parker and Torrey T. Lyons) + 547. i810 XvMC fixes (#5078, Matthew J. Sottek). + 546. Downgrade DDC-related mode rejections to warnings as some monitors + advertise their nominal, rather than actual, tolerances (Marc La France). + 545. Add Korean localization of XDarwin front end (Kyunghwan Kim). + 544. Allow XDarwin to launch from the Finder even if there are spaces, etc. + in the path to its application bundle (Torrey T. Lyons). + 543. Add XvHsync, XvVsync to adjust skew values for centering of an + Xvideo window for the trident driver (Geoffrey Hausheer, Alan Hourihane). + 542. Fixed xkb to avoid setting of AccessXTimeout to 0 (Egbert Eich). + 541. Added option to sync the logfile after every line written (Egbert Eich). + 540. Improved APM handling: + - Added disable of Input Handlers. + - Added support for undo on failed APM requests. + - Set vtSema to false (Egbert Eich). + 539. Improved detection of primary device especially for non-PC platforms + (Egbert Eich). + 538. Silicon Motion driver Fixes: + - Removed separate loading of int10 code. + - Added reset of graphics engine on EnterVT (Egbert Eich). + 537. Set flag ROP_NEEDS_SOURCE for CPUToScreenColorExpand for all + S3 Savage chips (Egbert Eich). + 536. SiS driver: + - Added fix to restore fbdev mode properly on VT switch/exit. + - Improved LCD handling on SiS 630. + - fixed screen blanking in SiS driver to properly blank LCDs + (Egbert Eich). + 535. Trident driver: + - Fixed screen centering for 640x480 Modes. + - Fixed video playback for BladeAi1. + - Fixed hotkey internal/external switching for XPm8/16. + - Added support for on-the-fly video recentering. + - Attempt to fix contrast settings for video (Egbert Eich). + 534. Added reset code for PS/2 mice when replug events occurs + (required for later Linux 2.4.x kernels) (Egbert Eich). + 533. xf86cfg: start AccessX controls even when started from a running server + (Egbert Eich). + 532. Add support in glint driver for booting secondary cards that have + the VGA disable jumper set (so no access to the BIOS) (Jay Estabrook). + 531. Add Spanish localization of XDarwin front end (Pablo Di Noto). + 530. Set the r128 DRI driver version back to 2.2 so that the major version is + the same as for the version in XFree86 4.1.0. + 529. Fixes for DGA2.0 support in the radeon driver (#A.585, + Shyouzou Sugitani). + 528. Fix mkfontdir's scanning of fonts.scale files to detect a bad file + resulting from concatenating two fonts.scales files, and to avoid + buffer overruns from over-long strings (#A.563, Jonathan Kamens). + 527. Avoid i810 VT switching problems on FreeBSD (David Dawes). + 526. Fix a possible SIGFPE in the X-TrueType fonts (#A.640, Nam SungHyun). + 525. Fix -probe and -configure to not clear the screen on exit on SunOS SPARC. + (Marc La France). + 524. Fix support for ATI Graphics Pro Turbo 1600 adapters (Marc La France). + 523. Newport driver updates, including 24-bit support (#5062, Guido Guenther). + 522. Fix pixel info not being returned from the APPGROUP extension (#5061, + Chris Bare, from X11R6.6). + 521. Remove debug message in the calcomp driver (#5060, Martin Kroeker). + 520. Replace "X Windows" with "X Window System" or "X" in various places + (#5058, David Krause). + 519. Fix the size of some lbx struct members on 64-bit architectures + (#5053, Chris Bare, from X11R6.6). + 518. Fix the size of some xXagGetAttrReply struct members on 64-bit + architectures (#5052, Chris Bare, from X11R6.6). + 517. Add a NULL check that was missing in the CID part of the Type1 code + (#5050, Mark Snitily, from X11R6.6). + 516. XKB AccessX LED beep feature (#5047, Chris Bare, from X11R6.6). + 515. Fix WriteToClient flushing bug (#5046, Chris Bare, from X11R6.6). + 514. Fix improper freeing of widget translations in libXt when + REFCNT_TRANSLATIONS is defined (#5044, Chris Bare, from X11R6.6). + 513. Fix XPrint memory leak (#5042, Chris Bare, from X11R6.6). + 512. Local Authorization Fix (#5041, Chris Bare, from X11R6.6). + 511. Add locale entries for Sami (#5055, Børre Gaup). + 510. Fix XProcessInternalConnection man page duplication (#5040, Chris Bare, + from X11R6.6). + 509. Minor xrx Imakefile fix (#5038, Chris Bare, from X11R6.6). + 508. Remove outdated xc/fonts/encodings/large/README (#5033, + Juliusz Chroboczek). + 507. Enable XVideo support for the SuperSavage (#5031, Tim Roberts). + 506. Add some missing locale entries (#5026, Mike Harris). + 505. s3virge driver updates, including: + - cr3a patch (#4884, Adam J. Richter) + - ViRGE MX XVideo patch (#4915, Sven Menke) + - An option to disable XVideo + - Disable solid filled rects for Trio3D because of trouble reports + - Some MX fixes + - Fix ViRGE MX XVideo so window overlap works + - Enable ViRGE GX2 XVideo + - Fix low resolution problems on ViRGE MX (&GX2) + (#5024, 5030, 5034, Kevin Brosius). + 504. Some new/updated xkb files (#5019, Pablo Saratxaga). + 503. Add some ATI PCI IDs (#5018, Mike Harris). + 502. Implement a hack for the DEC TGA2 cards which maps an extra page + before framebuffer start as the acceleration code is slightly + broken (Jay Estabrook). + 501. Allow secondary MGA boards to be used on Alpha that have the VGA + disable switch set (Jay Estabrook). + 500. Fix Radeon jerky cursor movement bug (Jay Estabrook, #5054, Mike Harris). + 499. Add new Luxi fonts from Bigelow & Holmes (#5010, Charles Bigelow and + Kris Holmes, integrated by Juliusz Chroboczek). + 498. Update the ClearlyU fonts to version 1.8 (#5009, Mark Leisher). + 497. Add XKB symbols for Saami (#5006, 5059, Børre Gaup). + 496. Change the mapping of the JIS reverse solidus to what most Japanese + users expect (#5002, Juliusz Chroboczek). + 495. Fix hiding/showing of mouse cursor under Windows on Cygwin/XFree86 + (#5056, Harold Hunt). + 494. Fix Permedia3 SDRAM based boards planemask problems (Jay Estabrook). + 493. Don't use int10 in glint driver when using fbdev interface (#5039, + Michel Dänzer). + 492. Fix SlowBCopy for MIPS and PowerPCs (Marc La France). + 491. Fix XF86Config overrides for I/O base, framebuffer address and video + memory size in cyrix driver (Marc La France). + 490. Don't interfere with ATI panel support when using DDC information for + monitor tolerance defaults (Marc La France). + 489. Add Dutch localization of XDarwin help file (Paul Edens). + 488. Add stub functions needed by libGL to libXThrStubs. Link libGL against + libXthrStubs on systems that build it. (#4997, Matthieu Herrb). + 487. Fix building and loading of I18N modules by Xlib on NetBSD and OpenBSD + (#5049, Matthieu Herrb). + 486. Fix duplicate loader symbols (#5048, Vladimir Dergachev). + 485. Fix problems with clipping in fb when the clip list contains negative + coordinates (Gregory Parker). + 484. Fix return value of VBEBankSwitch() (Norm Raden). + 483. Updates/fixes for the QNX6 (aka Neutrino) port (#4990, Frank Liu). + 482. Autodetect when -fno-merge-constants is needed for building modules, + and enable its use by default in those cases (Marc La France, + David Dawes). + 481. Status doc updates (#4991, Branden Robinson). + 480. Fix for flickering i815 LCDs (#4968, Poul-Henning Kamp, Harald Koenig). + 479. Move much of the I18N code in Xlib into separately loadable + modules (#4965, 5043, Ernie Coskrey, from X11R6.6). + 478. Modify UXTerm.ad's font5 resource so that xterm can display double + width characters using a font distributed with XFree86 (#4962, + Tomohiro KUBOTA). + 477. Add Dutch localization of XDarwin front end (Paul Edens). + 476. Add a quick check to not use as the default mode any internal modes + with horizontal timing parameters that aren't CRT-friendly (David Dawes). + 475. Add an 832x624 @ 75Hz mode line to the default mode set (#4960, + Andrew C. Aitchison). + 474. Fix Radeon LCD Panel detection and Power Delay (ATI Technologies). + 473. Ignore XDarwin full screen switch key combination when in rootless mode + (Torrey T. Lyons). + 472. Xterm patches #163, #164 (Thomas Dickey): mostly bug fixes. + 471. Fix race condition in XDarwin causing occasional hangs or crashes when + quitting from the menu (Torrey T. Lyons). + 470. Cygwin/XFree86 updates (#5035, #5036, Harold Hunt). + 469. Make sure Cygwin checks ENOBUFS for error test in XlibInt.c, as under + Cygwin when the socket is full ENOBUFS is returned (Brian Genisio). + 468. Fix SIGFPE in LastLinePel for ATI Radeon, console restoring on dual CRT + head on VE, improved panel and ddc line detection (ATI Technologies). + 467. Fix bug that caused hardware cursors to disappear on mode switches when + silken mouse is disabled (Marc La France). + 466. Preliminary changes to keyboard handling for SPARC SunOS + (Marc La France). + 465. Zero out SPARC SunOS primary framebuffer on exit, like Sun's servers do + (Marc La France). + 464. More driver name normalisation (Marc La France). + 463. Minor speedup for Mach64 acceleration for big-endian architectures + (Marc La France). + 462. Fix bug that prevented relocation of unassigned PCI I/O bases + (Marc La France). + 461. Add Swedish localization of the XDarwin help file (Patrik Montgomery). + 460. Fix use of gethostbyname and getservbyname to _XGethostbyname and + _XGetservbyname for portability (#5017, Mark W. Snitily, from X11R6.6). + 459. Fix buffer problems used by xrdb to build command line, noticed on + systems with a large amount of visuals (#5016, Alan Coopersmith). + 458. Fix bug regarding signal handling in x11perf by inserting an abort + test after each run (#5015, Mark W. Snitily, from X11R6.6). + 457. Add improved diagnostic messages and error checking to libXfont + which is used by bdftopcf command (#5014, Chris Bare, from X11R6.6). + 456. Fix advertised surfaces for the i810 Motion Compensation driver and + make use of new XVMC_INTRA_UNSIGNED surface flag (#5003, Matthew Sottek). + 455. Fix r128 driver to call wrapped screen functions when using the + fbdevhw layer (#5004, Michel Dänzer). + 454. Add Rage128 Pro PP detection to ati driver (#5025, Alfred Perlstein, + Mike Harris). + 453. Add CyberBladeXPAi1 recognition to the trident driver (#A.658, + Jani Jaakkola). + 452. Fix typo in PCI bus scanning that caused a hang when there was more than + one PCI bus (#A.652, Uwe Dannowski). + 451. Update Japanese localization of XDarwin help file (Toshimitsu Tanaka). + 450. Update XDarwin help file (Torrey T. Lyons). + 449. Fix XDarwin SHAPE support in rootless mode (Gregory Parker). + 448. More corrections to Xaw manpage (#5022, Branden Robinson). + 447. Fix XDarwin crash if a NULL mask is passed to Composite in rootless + mode (Torrey T. Lyons). + 446. Fix XDarwin crash if more than one keyboard interface is returned from + NXEventSystemInfo (Gregory Parker). + 445. Big5 encoding fix (#4957, Juliusz Chroboczek). + 444. Use DDC sync (disabled by default) and DPMS info (#4955, + Andrew C Aitchison). + 443. Update the i810 XVideo support to double the maximum image width + to 1440 (#4933, Philip Pokorny). + 442. Fix several memory leaks in x11perf (#4931, Ernie Coskrey, from X11R6.6). + 441. Bypass startup VT #1 switching hack for FreeBSD/syscons unless running + on a pre-3.1 version of FreeBSD (#4926, Huver). + 440. Catch bogus flat panel dimensions in the ati/r128 driver (#4907, + Michel Dänzer). + 439. Fix Maltese entry in xkbcomp/keymap/xfree86 (#4921, Nerijus Baliunas). + 438. Fix a locale.alias typo (#4920, Nerijus Baliunas). + 437. Documents Options for the Matrox and Neomagic drivers, and makes + HW/SWcursor generic options (#5021, Dr. Andrew C. Aitchison). + 436. Corrections and updates to Xaw manpage (#5020, Branden Robinson). + 435. Add German localization of XDarwin front end (Andreas Monitzer). + 434. Add the DEC-XTRAP extension and sample clients (#4904, 4918, + Paul Stewart). + 433. Update the us_intl XKB symbols map to include all diacritics used + in latin script (#4917, Pablo Saratxaga). + 432. Add a Compose file for utf-8 (#4917, 5019, Pablo Saratxaga). + 431. Fix radeon and sis GL module Imakefiles (#4916, Bill Nottingham). + 430. Bug fixes and updates for Savage driver (#5001, Tim Roberts). + 429. Add luit (#4914, Juliusz Chroboczek). + 428. Fix a typo in fontenc that prevents building with no dependency on + libfont (#4913, Juliusz Chroboczek). + 427. Add an encoding file for the KSC Johab encoding (#4912, Jungshik Shin). + 426. Remove some spurious entries in the KSC 5601 encoding file (#4910, + Jungshik Shin). + 425. Add Swedish localization of XDarwin front end (Patrik Montgomery). + 424. Fill in mode switch characters in XDarwin keymap (Mario Klebsch and + Torrey T. Lyons). + 423. Linux/PA-RISC portability fixes (#4892, Grant Grundler, Bdale Garbee, + and LaMont Jones). + 422. Linux/mips portability patch (#4891, 4919, Guido Guenther). + 421. Preliminary support for building on Linux/arm32 (#4890, + Branden Robinson). + 420. Make it possible to build the X server on Linux/m68k platforms + (#4889, Christian T. Steigies). + 419. Fixes for xman's manpath config handling (#4886, Branden Robinson and + Colin Watson). + 418. Fix some man page aliases (#4882, Branden Robinson). + 417. Define __GLX_ALIGN64 for glx on Alpha (based on #4888, Branden Robinson). + 416. Remove PEX5 from the lists of specs in doc/specs/Imakefile (#4881, + Branden Robinson). + 415. linux.cf updates (#4874, Branden Robinson). + 414. Updates for zh locale files (#4879, Branden Robinson). + 413. xf86config man page update (#4877, Branden Robinson). + 412. Startx enhancements and cleanups (#4875, Branden Robinson and + Henry T. So). + 411. Use DirectDraw2 instead of DirectDraw on Cygwin (#5012, Harold Hunt). + 410. Add French localization of XDarwin front end (Olivier Verdier). + 409. Fix portability problem in the generation of the man page version string + (Marc La France). + 408. Fix a NativeGDI problem on Cygwin/XFree86 (#5007, #5008, Harold Hunt). + 407. Fix for threaded libraries (Marc La France). + 406. Finish removal of SuperProbe (Marc La France). + 405. A rather large number of warning fixes throughout (Marc La France). + 404. Fix bug in HTML install script (Marc La France). + 403. Missing ident lines for some XFree86-modified files (Marc La France). + 402. Add default half-width doublescanned modes (Marc La France). + 401. Mark all driver-registered resources with ResBus (Marc La France). + 400. Fix DPMS-related build problem (Marc La France). + 399. Log a message just before calling each ChipProbe() during '-probe' + processing (Marc La France). + 398. Temporarily disable ISA probing on SPARCs and PowerPCs (Marc La France). + 397. Add PCI IDs for Sun hardware (Marc La France). + 396. Fix memory leak in resource relocation (Marc La France). + 395. Do not relocate resources that only conflict with disabled non-video PCI + devices or disabled PCI ROMs (Marc La France). + 394. Re-organise SBUS code (Marc La France). + 393. Add as-yet-unused definitions for PCI resource types other than I/O and + memory (Marc La France). + 392. Add doc for Solaris, but don't format it yet (Marc La France). + 391. Normalise driver names (Marc La France). + 390. For SPARCs, disable DGA support in ATI driver + (from #4650, David S. Miller). + 389. Clean up some debugging messages (Marc La France). + 388. Fix newport driver for when a /proc fs isn't mounted (Marc La France). + 387. Fix DAC handling bugs in s3 driver (Marc La France). + 386. Fix resource registration bug for PCI Tseng's (Marc La France). + 385. Add aperture driver for Solaris (not yet used) (Marc La France). + 384. Rework scanpci to fix problems that prevented it from completely + displaying non-PCI bridges and Simba bridges (Marc La France). + 383. Fix build problems in some input drivers (Marc La France). + 382. Fix int10 compile problem for SPARCs and PowerPCs (Marc La France). + 381. Ensure master aborts on secondary buses complete normally during PCI + scans (Marc La France). + 380. Some memory mapping and Solaris cleanups (Marc La France). + 379. Fix XDarwin crash on server reset and problem in full screen mode when + switching from X to Aqua to X too rapidly (Torrey T. Lyons). + 378. Add __apploaddir__ definition to imake MANDEFS, to specify location of + app-defaults directory, fixes Debian bug report #87611 (Thomas Dickey). + 377. Xterm patches #161, #162 (Thomas Dickey): mostly bug fixes. + 376. Add new CyberBladeXP Aladdin based chip ID's (#4994, Hubert Feyrer). + 375. fix a potential issue where POSIX allows the string returned + from getenv to be overwritten (from X11R6.6, Chris Bare). + 374. Cygwin/XFree86 cleanups and fixes (#4992, #4993, #4999 Harold Hunt). + 373. Fix i830 VT switching problems which hang the ring buffer (#4987, + #4989, Abraham vd Merwe). + 372. fix a format string problem in lbxproxy, apparently not exploitable + (r0gue@vertarmy.org, Matthieu Herrb). + 371. Fix disappearing cursor in XDarwin rootless mode by falling back to + system cursor for cursors bigger than 16x16 (Torrey T. Lyons). + 370. Make XDarwin start more robustly from the Finder (Torrey T. Lyons). + 369. Update XDarwin Japanese localization (Toshimitsu Tanaka). + 368. Fix calculation of DPI when Xinerama in use (#4986, Andrew C Aitchison). + 367. Update XDarwin preferences GUI to match current features + (Torrey T. Lyons). + 366. Xkb fixes for international keyboards (Matthieu Herrb). + 365. Add client side sparc64 support for NetBSD and OpenBSD (Eduardo Horvath, + Matthieu Herrb). + 364. Allow xkbcomp to be used in a cross-compile environment (Alan Hourihane). + 363. Update documention for the SiS driver, the Options file + (Ademar de Souza Reis Jr.). + 362. Xterm patches #157, #158, #159, #160 (Thomas Dickey): mostly bug fixes. + 361. Fix high-res modes in the nv driver. Add interlaced support for + chips older than NV11 (Mark Vojkovich). + 360. Cross compilation fixes (#4981, Harold Hunt, Alan Hourihane). + 359. Fix cursor artifacts when running XDarwin in full screen Quartz mode + with 8 bit depth (Torrey T. Lyons). + 358. Fix byte ordering issue in XDarwin when loading keymapping files on x86 + and correctly set ByteOrder for PPC and x86 (Rob Braun). + 357. When XDarwin is launched from the Finder, start X clients in an + interactive shell if user's shell is Bourne-based (Torrey T. Lyons). + 356. Add CaseSensitiveFileSystem definition, which defaults to YES, except + on Darwin, Cygwin, and OS/2. Fix another case problem spotted by + NAKAHASHI Ichiro (Torrey T. Lyons). + 355. Enable Vendor specific FatalError for Cygwin/XFree86 and create + the Xserver as a windows executable (#4967, Harold Hunt). + 354. Add i830 2D and DRI driver (#A.604, VA Linux Systems, 2D3D). + 353. Use the -no-cpp-precomp compiler option on Darwin, rather than the + deprecated -traditional-cpp (Christoph Pfisterer). + 352. Reverting patch #340, fixing type (Egbert Eich). + 351. Fix rotation in fbdev driver (#4958, #4959, Michel Dänzer). + 350. Resync with DRI CVS trunk (DRI Project). + 349. Move ati driver out of DevelDrivers on PPC platforms (#4952, + Michel Dänzer). + 348. SECURITY: set default value of authComplain resource in xdm to true. + This closes a hole where anyone can connect to the X server if + the xdm auth dir doesn't exist (Galen Hancock). + 347. SECURITY: don't let a non-root user halt the machine by having X + send SIGUSR1 to init (Thomas Moestl). + 346. Changed int10 module to stub on Sparc (Egbert Eich). + 345. Added hyperpen driver (Roland Jansen et. al.). + 344. Fixed alignments of x86emu-structures for AXP (Jay Estabrook). + 343. Fixed XLoadQueryFont() and XLoadFont() to support locales + (required for Euro support) (Markus Kuhn). + 342. Modified XtCvtStringToFont() to match any ISO8859 instead of + latin1 as fallback. Required for Euro Support (Markus Kuhn). + 341. Added acute to compose key list for iso8859-15 (Markus Kuhn). + 340. Modified XV Xinerama support to recognize adaptors if screen 0 + has no adaptor (Egbert Eich). + 339. Modified order of disable devices and LeaveVT() to be symetric + to the enter case (Egbert Eich). + 338. Modified GetTimeInMillis() to handle non monotonous system clocks + (Egbert Eich). + 337. Added comment about a Zeos Meridan 850c Notebook to C&T docs (Alan Cox). + 336. Added call to vbeFree() to apm driver (Egbert Eich). + 335. C&T driver: + - fixed sig11 problem for non-69030 chipsets. + - fixed DGA to announce acellerated functions only if accelleration + is enabled. + - added FP_mode flag to C&T driver which allows to override the detected + state of the flat panel (Egbert Eich). + - fixed driver to act appropriately if the BIOS switches to the + external monitor it detects when doing DDC. + - Set IOBase correctly for MMIO when detection 65545 PCI. + - fixed text screen restauration on 69030 (Egbert Eich). + - reinabled correct KGA handling of C&T chips: unblank before the end + of scanline. + - added support for composite sync. + - when FP is active disallow display sizes greater than panel. + - added double buffering to video support. + - fixed register settings to prevent flickering during video playback. + (Egbert Eich). + 334. Fixed bug in C&T driver that caused interlaced mode not to work + (Claus Hulstrøm). + 333. Added full MMIO support for C&T 69030 chips (Gregg H. Burman). + 332. Fixed MMIO accel code in Cirrus Alpine driver, got PIO accel code to + work (Egbert Eich). + 331. Fixed fbdev to obtain 24 bit framebuffer format from the kernel, added + more failure messages to fbdev driver (Egbert Eich). + 330. Added calls to vbeFree() to rendition, savage, silicon motion, + i740 and i810 driver (Egbert Eich). + 329. Modified MGA driver for new Sparse allocation sceme (Jay Estabrook). + 328. Modified handling of sparse addresses on AXP: The code now no longer + maps the entire sparse range. Now the required ranges are mapped + relative to a fixed base address (Jay Estabrook). + 327. Fixed HW cursor for MGA G100 (Egbert Eich). + 326. Fixed MGA drivers to be able to use overlay modes when HAL lib is + loaded (Egbert Eich). + 325. Disabled accel functions that cause lockups on certain neomagic + systems by default. They can be reenabled by setting the option + "StrangeLockups" to "no" (Egbert Eich). + 324. Did a further fix on ScreenToScreenCopy() for Neomagic 2200 + (Egbert Eich). + 323. Added experimental support for Toshiba Libretto. This can be enabled + by the option "DisplayHeight480" (Egbert Eich). + 322. Fixed clipping in Savage driver, update to version 1.1.1.19 + (Tim Roberts). + 321. fixed calls to BLTSync() on SiS driver (Egbert Eich). + 320. Fixed Mono8x8PatternFill(): Moving SETROPFG behind SETROPBG did the + trick (Egbert Eich). + 319. Setting 24 bpp pximap flags correctly in SiS driver dependening + on chipset (Egbert Eich). + 318. Setting depth and bpp of framebuffer correctly for suncg14 and sunleo + driver (Thorsten Kukuk). + 317. Tseng driver not longer ignores results of TsengDoMemLimit() which + tests for certain restrictions on the usable framebuffer size + (Egbert Eich). + 316. Vesa driver: adding calls to vbeFree() before exiting PreInit(). + Reinit vbe in ScreenInit() (Egbert Eich). + 315. Adding int10 initialization to generic vga driver (Egbert Eich). + 314. Modified generic vga driver to use shadow fb for vga16 on AXP. + This works around the problem that AXP can address memory only 32bit + wide which doesn't work on a latched register planar fb (Egbert Eich). + 313. Removing 3.3 code from wacom driver. Makes driver hard to read + (Egbert Eich). + 312. Removing message output from xf86WcmPlug() which causes -configure + to core dump (Egbert Eich). + 311. Modified int10 Pci code to be able to use new version of + xf86ReadPciBIOS() (Egbert Eich). + 310. Modified int10 int1A handler to return valid when an unimplemented int10 + call is encountered. This allows fallback to system BIOS (Egbert Eich). + 309. Modified xf86ReadPciBIOS() to check for valid i386 PC signature. + Added functions xf86GetAvailablePciBIOSTypes() and + xf86ReadPciBIOSByType() to obtain available PCI BIOS types and + retrieve a certain BIOS by type (Egbert Eich). + 308. Reversed bogus patch 1050 of version 4.0.2. The graphics engine will + *never* be called after receiving an APM suspend and before receiving + an APM resume. If the neomagic locks up on resume this has a different + reason (Egbert Eich). + 307. Change real/effective user ID to 0/0 before calling modprobe in + xf86LoadKernelModule() on Linux so user can also load drm modules. Fixed + PATH environment variable to /sbin (Stefan Dirsch, Egbert Eich). + 306. Removed disable/enable interrupt code on ia64 as interrupts cannot + be controled from user level (Egbert Eich). + 305. Further attempt to fix split algorithm for MTRR regions (Egbert Eich). + 304. Fixed problem in XAACopyPlaneNtoNColorExpand() that caused bogus + memory accesses when src was not in fb memory (Egbert Eich). + 303. Fixed cfb8_32PaintWindow() to use correct cfb32FillBoxTileOdd function + (Egbert Eich). + 302. Fix to xdm PAM support (Werner Fink). + 301. Fixed cz and cz_querty keyboard layouts, added support for Slovak + keyboard (Jan Holesovsky). + 300. Fixed core dump in twm if no locales are present (Egbert Eich). + 299. Modified xterm app default to use LFD fontnames instead of old type + (Michael Schroeder). + 298. Add a f.startwm function to twm to start another manager. + (Matthieu Herrb). + 297. Disable MIT-SHM in Xnest, caused a segfault (Matthieu Herrb). + 296. Update wskbd keyboard protocol handling for OpenBSD/macppc + (Matthieu Herrb). + 295. Fix problems starting XDarwin from the Finder and pasting with + multi-button mouse emulation (Torrey T. Lyons). + 294. S3 driver updates. Restore console for 964 with Ti3025 and Trio64, and + support for Aurora64V+ (#4953, Ani Joshi). + 293. Fix USB Keyboard access when no PS/2 controller present + (#4948, Pontus Lidman). + 292. Add i810 XvMC (Motion Compensation) driver (#4946, #4964, #4966, + Matthew Sottek, Intel). + 291. When using XKB and LEDs are switched on/off by external application + the keyboard module doesn't change phisycal LEDs state immediately + (#4951, Ivan Pascal). + 290. Clean up Cygwin/XFree86 keyboard files (#4949 Harold Hunt). + 289. Add Matrox G550 support (#4947, Luugi Marson, Matrox). + 288. Remove SuperProbe.man definition for manual page + (#4944, Ishikawa Mutsumi). + 287. Ark driver updates (#4943, Ani Joshi). + 286. Fix xterm when XIM is disabled - caused a segfault + (#4942, Tomohiro Kubota). + 285. Add Big Endian support (PowerPC) to radeon driver (#4934, Ani Joshi). + 284. Fix support for legacy Windows TrueType fonts in Big5 encoding + (#4938, Joe Man). + 283. Support Radeon 7500, 8500 and Rage128ProII (#4941, ATI Technologies). + 282. Support Trident TGUI96xx and greater with Xv (Alan Hourihane). + 281. XDarwin fixes for Xinerama in Quartz modes: + - Turn Xinerama on by default. + - Fix warping the cursor. + Also load keymapping from file in IOKit mode for Mac OS X 10.1 + compatibility. (Torrey T. Lyons and Gregory Parker) + 280. Fix Trident 96xx high clock setting, acceleration fixes (Alan Hourihane). + 279. Fix XDarwin rootless crashing bug when window resizing with the Mac menu + bar not on X11 main screen (Gregory Parker). + 278. Define X_LOCALE on Darwin as Darwin's setlocale() does not work + properly (Torrey T. Lyons). + 277. Fix problems with XDarwin multi-monitor support for some screen + arrangements (Gregory Parker). + 276. Preliminary big endian (PowerPC) support for the "nv" driver + (Ani Joshi, Mark Vojkovich). + 275. Enable ThreadedX for Cygwin/XFree86 using auto import features of + newer binutils packages (Alan Hourihane). + 274. Exclude the Mac OS X menu bar from the X11 screen while running XDarwin + in rootless mode (Yannick Bessette and Torrey T. Lyons). + 273. Add support for builtin MTRR and AGP support in NetBSD 1.5Y. + (Matthias Drochner and Frank van der Linden). + 272. Rework XDarwin front end to start X clients in the user's normal + environment and fix issues while quitting (Torrey T. Lyons). + 271. SECURITY: fix glyph clipping for large origin (Keith Packard). + Reported to be remotly exploitable through konqueror or netscape + by Georgi Guninski. + 270. Fix setting of memPhysBase in a few drivers (#4937, Gerd Knorr). + 269. Finish merging freetype-2-0-4 into trunk by resolving conflicts. This + also fixes a syntax error on Darwin caused by an out of date version of + ttgload.c (Torrey T. Lyons). + 268. Update VMware driver (#4935, Jeremy (VMware)). + 267. Native GDI infrastructure sync with Cygwin/XFree86 (#4936, Harold Hunt). + 266. Update Darwin build configuration files including: + - Report full OS version and more capabilities. + - Fix X server build problem due to libraries in ProjectRoot being + listed as dependencies for some targets. + - Allow dynamic shared libraries to take advantage of two-level + namespace on Darwin 1.4. + (Torrey T. Lyons) + 265. Disable clipboard viewer, external program xwinclip handles this (fow now) + (#4932, Harold Hunt). + 264. Add ability to let Aqua and X use different display modes while running + XDarwin full screen (Torrey T. Lyons). + 263. Fix build dependency problem in xedit/lisp/lisp.rules + (#4930, Harald Koenig). + 262. Fix a fontenc-related problem that can cause the TrueType backend + to crash (#4909, Juliusz Chroboczek). + 261. Fix DPMS support for I128 driver (Robin Cutshaw). + 260. Add OSVErrorF for Cygwin/XFree86 (#4923, Harold Hunt). + 259. Support Trident Cyber9320, TGUI9440, TVGA8900C, TVGA9000 ISA chips + (Alan Hourihane). + 258. Fix banked 24bpp displayWidth calculation (Marc La France). + 257. Fix accel initialisation bugs in ATI driver (Marc La France). + 256. Add entry to initialise framebuffer manager by area (allowing for a + possible extra partial scanline) and make it print all largest areas + (Marc La France). + 255. Make xdm use BSD authentification on OpenBSD and use setproctitle() + instead of home grown version where available (enabled on + OpenBSD and NetBSD only) (Matthieu Herrb). + 254. Make -configure generate the DisplaySize from the acquired DDC + information (#4897, Andrew C Aitchison). + +XFree86 4.1.99.1 (20 August 2001) + 253. Fix bad xalloc() in the new fontenc code (#4899, ISHIKAWA Mutsumi). + 252. Fix some Xrandr build issues on Cygwin/XFree86 (#4898, Suhaib Siddiqi). + 251. Fix some Cygwin/XFree86 dependencies in cygwin.rules (#4894, Harold Hunt). + 250. Add ATI Xpert2000 (Rage 128 SM) (#4896, Mike Harris). + 249. Fix '-configure' crash introduced recently (#4895, Andrew C Aitchison). + 248. Re-write Xvideo support for Permedia3 (Alan Hourihane). + 247. Add Texas Instruments Permedia to Delta attached chips (Alan Hourihane). + 246. Add Permedia4 support (different clock synth) (Jay Estabrook). + 245. Resync with DRI CVS trunk (VA Linux Systems). + 244. Add XKB descriptions for the extra keys on a Dell Internet keyboard + (#A.533, Ben Liblit). + 243. Add a Maltese XKB map and locale support (#A.527, Ramon Casha). + 242. Add a new "bksl" variant of the Czech XKB map (#A.515, Stanislav Brabec). + 241. Fix the initialization sequence for ExplorerPS/2 (#A.510, + Arndt Schoenewald). + 240. When xdm is built with PAM support, don't call getpwnam() before + calling the various PAM functions associated with authenticating a user + (A.504, Ben Harris). + 239. Fix ccmakedep to handle source file extensions of more than one + character (#A.507, Andy Wiggin). + 238. Fix a VT switching crash in the cirrus driver when acceleration is + disabled (#A.489, Kirill V. Semenkov, #A.518, B. D. Elliott). + 237. Add support for the "PR" variant of the Rage 128 Pro (#A.487, + Alfred Perlstein). + 236. Make the config file created with 'XFree86 -configure' load the + speedo and/or type1 modules if relevant font directory is in + the font path (#A.484, Dmitry Yu. Bolkhovityanov). + 235. Fix a bug in the nv driver's detection of the crystal frequency (A.481, + Leo L. Schwab). + 234. Make xfontsel use the same order in its menus as the sort order used + by the X server and xfs (#A.480, Dmitry Yu. Bolkhovityanov). + 233. Add an input driver for DMC FIT10 touch-panel (#A.477, Mayk Langer). + 232. Fix xf86PostMotionEvent() to handle first_valuator values other than + zero (#A.468, Joe Krahn). + 231. Change the Swedish xkb map to map AltGr+Space to space (#A.467, + David Härdeman). + 230. Fix the return value information in the Xv library man pages (#A.458, + Tommi Vainikainen). + 229. Fix the DGA client library so that it can map the video memory on + Solaris 8 x86 (#A.454, Juergen Keil). + 228. Change {Max,Min}{X,Y}Position options in the elographics and mutouch + drivers to {Max,Min}{X,Y} so that it's consistent with the other + drivers. + 227. Some Bulgarian and Serbian locale updates (#A.444, Anton Zinoviev). + 226. Add a usage message to glxinfo (#A.430, Mike Coleman). + 225. Set the Alt/Windows key mappings for 104-key keyboards to be + compatible with 101-key keyboards by default, and add some new + XKB options to set them differently. + 224. Add some new XKB options to select third level shift and group + switchers/togglers (#A.425, Anton Zinoviev). + 223. Fix a bug in the Serbian XKB map (#A.424, Anton Zinoviev). + 222. Export from the loader the DIX symbols necessary for a modular version + of the DEC-XTRAP extension (#4797, Paul Stewart). + 221. Add a workaround for FreeBSD to make programs (like mkfontdir) that + are run as part of the build use the shared libraries from the build + rather than those that may be installed on the system (David Dawes). + 220. Use MAXSOCKS for connection limit in Cygwin/XFree86 (Alan Hourihane). + 219. Add Render's layer support to Cygwin/XFree86 (#4872, Harold Hunt). + 218. Support for OpenBSD/powerpc (Matthieu Herrb). + 217. Experimental change to default behaviour of ATI panel support to override + the horizontal and vertical porches of all modes to that found in the + mode on entry (Marc La France). + 216. Fix detection of a panel's mode on entry in the ATI driver + (Marc La France). + 215. Fix for Option "CRTScreen" in ATI driver (Marc La France). + 214. Patch for the Thai glyphs in Mark Leisher's ClearlyU font (#4846, + Theppitak Karoonboonyanan). + 213. Add a font encoding file for tis620-2 (#4845, Theppitak Karoonboonyanan). + 212. Add a font encoding file for ISO8859-16 (#4844, Markus Kuhn). + 211. Make the input method framework in Xlib work better in an UTF-8 + locale (#4843, Yao Zhang and Bruno Haible). + 210. Default *sampleText*international to false in xfontsel's app-defaults + file, since it breaks if the user has '*international: true' (#4842, + Juliusz Chroboczek). + 209. A new version of the fontenc layer. A major difference is that it + reads from a "system" encodings directory + /lib/fonts/encodings/encodings.dir, which is searched + after any encodings.dir file in the font's directory. The font + ABI version is bumped to 0.3 and the Xfont shared library's version + is bumped to 1.4 (#4839, Juliusz Chroboczek). + 208. Add support to xload for displaying the load of remote hosts by using + information in rwhod(1)'s database (#4833, Anders Eriksson). + 207. Rename the XVisibilityNotifyEvent man page to XVisibilityEvent, + which matches the naming convention for the other X Event man pages + (#4830, Ernie Coskrey, from X11R6.6). + 206. Update the registry to match X.Org's X11R6.6 version (#4829, + Ernie Coskrey, from X11R6.6). + 205. Fix for the SlowKeys feature of the AccessX portion of XKB not working + when the delay is longer than the amount of time between the delivery + of key press events to the extension (#4828, Ernie Coskrey, + from X11R6.6). + 204. Add a locale alias for "th_TH.TIS-620" (#4827, + Theppitak Karoonboonyanan). + 203. Some linux.cf updates (#4825, Branden Robinson). + 202. Make the vbe module build like the other modules. + 201. - + 200. Add a command line options (-show) to xvidtune to print out the current + video mode (#4809, Markus Kuhn). + 199. A new driver for the "Acecad Flair" tablet (not enabled by default yet) + (#4800, Edouard TISSERANT). + 198. Fix some typos in the iso8859-2 Compose file (#4799, Kamil Toman). + 197. Add some XKB options to allow the CapsLock behaviour to be easily + selected (#4794, Ivan Pascal). + 196. Don't reference the log file in the FatalError message if it hasn't + been opened yet (#4793, Branden Robinson). + 195. Add Calcomp input driver (#A.554 Martin Kroeker). + 194. Add preliminary 8 bit PseudoColor support to XDarwin full screen Quartz + mode and fix IOKit mode PseudoColor that was broken by the multi-monitor + patch (Torrey T. Lyons). + 193. Load XDarwin keymapping from file by default and give more useful error + message if getting keymapping from kernel fails. Change keymapping + translation so delete key is XK_BackSpace by default (Torrey T. Lyons). + 192. Create the two sets of locale.alias and locale.dir entries (those with + and those without the ':' separator) from a single set of entries in + the source files (David Dawes). + 191. Add an MS mouse driver for KDrive (#4754, Juliusz Chroboczek). + 190. Improve "true Big5" and "Emacs Big5" support (#4792, Yong Li, #4798, + Tomohiro KUBOTA). + 189. Fix a non-standard character set bug in Xlib (#4792, Ivan Pascal). + 188. Fix for the savage driver on 64-bit platforms (#4788, Jay Estabrook). + 187. Xv fix for the r128 driver on big-endian architectures (#4781, + Michel Dänzer). + 186. Fix an Xlib bug that affects conversion from CTEXT to multibyte / + wide character (#4780, Tomohiro KUBOTA, #4783, Bruno Haible). + 185. Release notes (4.1.0) and Status doc fixes (#4778, 4779, + Branden Robinson). + 184. 64-bit fix for lib/X11/ImUtil.c (#4773, Mike Harris). + 183. Fix dashed lines for the r128 driver on big-endian architectures + (#4769, Michel Dänzer). + 182. Fix Xlib's parsing of CTEXT with multi-byte characters in GR (#4761, + Juliusz Chroboczek). + 181. Fixes for the Romanian (ro) XKB map (#4746, Marius Andreiana). + 180. XDarwin bug fixes: + - Stop FatalError re-entry in "no Quartz support" messages. + - Synchronize XDarwin serverVisible state with application on rootless + startup. + (Torrey T. Lyons) + 179. Fix an XDarwin bug that broke XWarpPointer in Quartz modes (Gregory + Parker). + 178. Fix some more mi build warnings (David Dawes). + 177. Fix some mi build warnings (#4716-4719,4721-4724, Adam Sulmicki). + 176. Port for Linux/SuperH (Jornada680/690 and SEGA Dreamcast) (#4680, 4681, + ISHIKAWA Mutsumi). + 175. Support for mouse wheel emulation (#A.506, Henry T. So). + 174. Add support to Cygwin/XFree86 to use CTRL+ALT+BKSPACE as the shutdown + signal and fix up command line options to accomodate. + (#4838, Alexander Gottwald). + 173. In XDarwin, add ability to change modifiers to use when faking multiple + mouse buttons (Gregory Parker). + 172. Do not build Cygwin/XFree86 with -ansi as Cygwin's library (newlib) lacks + some prototype definitions that cause runtime failures (hypot being one + of them) (Alan Hourihane). + 171. Add extra library flags (commented out for now) for building + Cygwin/XFree86's server (#4834, Harold Hunt). + 170. Fix a bug in the v4l module which caused multiple TV cards not to work + (#4835, Gerd Knorr). + 169. Add multi-monitor support to XDarwin for all display modes using + Xinerama (Gregory Parker and Torrey T. Lyons). + 168. Fix 16bpp colour maps on Mach64's (Marc La France). + 167. Fix Mach64 DPMS bug (Marc La France). + 166. Fix bug that prevented hardware cursors on Mach64 CT's (Marc La France). + 165. Document what a ChipAdjustFrame() function should to to prevent moving + of hardware cursors during mode switches (Marc La France). + 164. -Wimplicit warning cleanup [`make World` >required<] (Marc La France). + 163. Ensure installed headers can find the headers they, in turn, #include + (Marc La France). + 162. Make imake pass its -W* flags to cpp (Marc La France). + 161. More accomodations for newer GCC's (Mike A. Harris). + 160. Remove a CYGWIN define from Xserver/include/windowstr.h + (#4832, Harold Hunt). + 159. Fix a casting problem which causes bdftopcf to write corrupted + fonts on buffer boundaries (#A.522, Jakub Bogusz). + 158. Cygwin/XFree86 updates (#4824, #4826 Harold Hunt). + 157. Fix horizontal stripes problem in Permedia3 driver (Alan Hourihane). + 156. Remove most X_NOT_STDC_ENV code, and assume that __STDC__ is defined + (David Dawes). + 155. Remove (stale) support for Amoeba and Minix (David Dawes). + 154. Update Cygwin/XFree86 cross-compilation and update to latest + source base (#4801, #4802, Harold Hunt). + 153. Fix 'make install' for Freetype. (#4812, Carlos A M dos Santos). + 152. Turn on dll style modules for Linux/MIPS. (#4807, Guido Guenther). + 151. Add support for ATI's Radeon VE, Mobility M6, All-In-Wonder Radeon + and Rage128 Pro Ultra, Digital Flat Panel support. Use DDC2 interface. + (#4817, Mike Smith, ATI Technologies). + 150. Add IBM S/390 support for building the tree (#4815, Mike A. Harris) + 149. Fixes incorrect spelling of "XChangeWindowAttributes" found in + XCreateColormap(3X11) and XInstallColormap(3X11) + (#4813 Carlos A M dos Santos). + 148. Fix a serious memory leak in XAA (Mark Vojkovich). + 147. Add a DriverPrivate field to I2C devices (Marc La France). + 146. In the ATI driver, initialise the fb manager whether or not XAA is also + used (Marc La France). + 145. Fix typos in radeon and wacom drivers. + 144. Don't disable the secondary CRTC on ATI Rage XL adapters (it doesn't + exist) (Marc La France). + 143. Speed up ix86 block moves in ATI driver (Marc La France). + 142. Temporarily disable hardware cursor support for ATI GX & CX adapters + (Marc La France). + 141. Make composite sync the default in the ATI driver (David S. Miller). + 140. Rework stretching of small DFP modes in ATI driver (Marc La France). + 139. Add an interesting PCI ID (Marc La France). + 138. Allow ChipValidMode() functions to pre-calculate a mode's horizontal + sync and vertical refresh rates (Marc La France). + 137. Another fix for mode switch and cursor interactions (Marc La France). + 136. Temporary fix for endianness problems in ATI driver (Marc La France). + 135. Add XGetIMValues() prototype to Xlib.h (Marc La France). + 134. Use a more reasonable numbering for recent binutils versions on Linux + (Marc La France). + 133. Fix dependencies for building drivers in a static server + (Marc La France). + 132. Update XDarwin Japanese localization to include rootless UI changes + (Toshimitsu Tanaka). + 131. Fix potential XDarwin bug in translating Darwin keymappings to X11 + keymaps with unrecognized modifier keys (Gregory Parker). + 130. Make XDarwin ignore Caps Lock when checking for VT switch, except when + the user's switch key preference includes Caps Lock (Gregory Parker). + 129. Update XDarwin Cocoa UI and preferences for rootless mode. Add more + explicit error message for users trying to run in Quartz modes without + Quartz support. Remove unneeded info.nib files (Torrey T. Lyons). + 128. Added XDarwin menu bar hiding/showing in rootless mode (Gregory Parker). + 127. Fix DDC from reporting misleading information. + (#4806 Andrew C Aitchison) + 126. Patch to make VBE DDC honour the NoDDC option. + Before this, NoDDC disabled only 2 of the 3 ways the server might + ask the monitor for DDC infomation. + (#4805 Andrew C Aitchison) + 125. Stops xf86cfg complaining about non-video chips from Intel. + Adds a few PCI card ids for Intel and one for Matrox. + (#4804 Andrew C Aitchison) + 124. Add support for NVIDIA nForce integrated graphics (Mark Vojkovich). + 123. Fix a possible fatal crash in Xv when Xinerama is used (Mark Vojkovich). + 122. Corrects typos in output of xf86cfg when checking modules and + documents ddc module options (Andrew C Aitchison). + 121. On Mac OS X, allow users to disable mouse acceleration changes by + XDarwin (Torrey T. Lyons). + 120. By default, don't build the MagicTouch input driver until a common layer + interface is coded for it (Marc La France). + 119. Fix Offscreen Image support for Xv/v4l in tdfx driver (Alan Hourihane). + 118. Add MagicTouch driver (A.482, Mauro Ziliani) + 117. Fix side effect in XFree86 of the recent changes to libxf86config + (A.486, Knuts Andy). + 116. Define Xutf8LookupString in X11-def.cpp for Cygwin/XFree86 + (#4790, Suhaib Siddiqi). + 115. Turn on RandR build for Cygwin/XFree86 (#4789, Harold Hunt). + 114. Import of Gregory Parker's rootless code for Mac OS X. The code has + been cleaned up, reorganized, and modified to use Cocoa and fb + (Gregory Parker and Torrey T. Lyons). + 113. Freshen SCO port (#4709, J. Kean Johnston). + 112. Fix int10 build for GCC 3.0 (Marc La France). + 111. An attempt at fixing the i740 driver to not reference options before they + are collected (Marc La France). + 110. Fix for RandR build (Bill Crawford). + 109. Fix 3Dfx Voodoo Banshee boards with timing issues (Alan Hourihane). + 108. Allow Cygwin/XFree86 to be cross compiled (#4784-#4786 Harold Hunt). + 107. Fix fatal bug in XAA's N-to-N CopyPlane acceleration (Elliot Lee). + 106. Add RandR support to the Kdrive PCMCIA driver (Alan Hourihane). + 105. Fix SharedLibGL to SharedLibGlx in cygwin.rules and some Cygwin/XFree86 + fixes including enabling backing store. (#4770, #4771 Harold Hunt). + 104. xf86UnMapVidMem shows the wrong number of arguments in + os-support/README.OS-lib (#4357, Guido Guenther). + 103. Some driver loader symbol req/ref registration cleanups (David Dawes). + 102. Cygwin/XFree86 fixes. + Release pressed modifier keys when server looses focus. + Remove declaration in lib/X11/lcGetConv.c (no longer needed). + Remove unnecessary #if(n)def __CYGWIN__ in lib/X11/lcGetConv.c, one in + lib/dps/csconndi.c and one in lib/font/Type1/regions.h. + Add a new SharedDepLibraryTarget rule (#4763-#4768, Harold Hunt). + 101. Fix bogus handling of BUS_CNTL Mach64 register (Marc La France). + 100. Fix a typo in xc/programs/bitmap/Bitmap.h (#4757, Suhaib Siddiqi). + 99. Add Cygwin/XFree86 manpage and minor tweaks (#4756, Harold Hunt). + 98. Ensure PCI master aborts are allowed to complete normally on non-root + buses (Marc La France). + 97. Allow ChipScreenInit()'s to load modules during the first server + generation (Marc La France). + 96. Update XvMC header files to match the spec (Matthew Sottek). + 95. Darwin build configuration changes: + - Turn on building Xv and GLX extensions. + - Make GLX and GLU build successfully. + - Use Darwin's libz instead of building one for XFree86. + - Use XFree86's standard compiler optimization flags per CPU type. + (Torrey T. Lyons). + 94. Fix Xserver/Imakefile typo which broke XDarwin build (Torrey T. Lyons). + 93. Fix Darwin bindist files so that dynamic shared libraries are put in + Xbin.tgz instead of Xprog.tgz (Torrey T. Lyons). + 92. Fix problem in Ib/Xaw/AsciiSrc.c:nitStringOrFile() when descriptor 0 + is closed, as a zero return value from open(2) is taken as an error + (splite at purdue.edu). + 91. Fix glide driver that causes -configure to fail for all drivers + (Alan Hourihane). + 90. Don't define SVR4 on Cygwin/XFree86 (#4751, Suhaib Siddiqi, + Alan Hourihane). + 89. Don't override system commands specified in host.def on Cygwin/XFree86 + (#4753, Alexander Gottwald). + 88. Fix cursor problem in server respawn's on Cygwin/XFree86 + (#4750, Harold Hunt). + 87. Fix typo definition of CplusplusCmd in cygwin.cf + (#4752, Alexander Gottwald). + 86. Fix makedepend for use on Cygwin/XFree86. + Use makedepend on Cygwin/XFree86. + Fix SharedDepLibraryTarget so that build dependencies are correct, + this fixes libGLU's build problem (Alan Hourihane). + 85. Don't define MKSTEMP on Cygwin/XFree86 (#4725, Harold Hunt). + 84. Fix memory count function for I128 (Mark Thompson). + 83. Use TermcapLibrary as -lncurses instead of -ltermcap, fixes problem + building xterm/resize on Cygwin/XFree86 (#4749, Harold Hunt). + 82. Fix X server segfault in the GLX code (Brian Paul). + 81. PseudoColor fixes for Cygwin/XFree86 (#4745, Harold Hunt). + 80. Fix broken TGA driver (Alan Hourihane). + 79. Fix FIFO reset trouble in tdfx driver by lowering the FIFO size due to + suspect code in Glide3. (Alan Hourihane). + 78. Fix Xvideo in tdfx driver when using YUY2 or UYVY data (Alan Hourihane). + 77. Add two missing symbols to loader reference for the glint driver + (#4740, Mike Harris). + 76. Make Cygwin/XFree86 work at 8bpp, and re-arrange some command line + flags. (#4743, Harold Hunt). + 75. Fix some build issues on Cygwin/XFree86 (#4736, #4737, Suhaib Siddiqi). + 74. Some Cygwin/XFree86 cleanups (#4735, Harold Hunt). + 73. Fix XAA's incorrect acceleration of X-Render's repeated sources and + masks (Mark Vojkovich). + 72. Disable PCI resource conflict checking for Linux/Alpha (Jay Estabrook). + 71. Fix Linux xf86GetPciSizeFromOS() parsing when the kernel is 64 bit and any base or size is larger than 32 bits in magnitude (#4732, David S. Miller). - 617. Make XDarwin ddx pass up proper right and middle mouse button numbers + 70. Xinstall.sh updates and bug fixes (David Dawes). + 69. Make XDarwin ddx pass up proper right and middle mouse button numbers and fix mouse button 5 (Christoph Pfisterer and Torrey T. Lyons). - 616. Restore backwards compatibility from 4.0.[2,3] to 4.1.0 for + 68. Restore backwards compatibility from 4.0.[2,3] to 4.1.0 for the i810, r128 and radeon DRI drivers (Gareth Hughes). - 615. Fix a problem when using patterns of horizontal lines with the mga + 67. Fix a problem when using patterns of horizontal lines with the mga video overlay (#A.442, Ewald Snel). - 614. Xinstall.sh updates and bug fixes (David Dawes). - 613. Remove duplicate XineramaLibrary section in X11.tmpl (#4731, + 66. Remove duplicate XineramaLibrary section in X11.tmpl (#4731, Mike Harris). - 612. Enable building DRI for Linux/ppc, and fix a drm-related bug + 65. Enable building DRI for Linux/ppc, and fix a drm-related bug for Linux/ppc (#4728, 4730, Michel Dänzer). - 611. Document Options for the r128 and fbdev drivers (#4727, 4729, + 64. Document Options for the r128 and fbdev drivers (#4727, 4729, Michel Dänzer). - 610. Add a BuildBindist switch which causes a file containing the XFree86 + 63. Add a BuildBindist switch which causes a file containing the XFree86 version number to be installed in ProjectRoot, include this in the Xbin bindist tarballs, and turn on this switch in the bindist host.def files. The purpose is to allow the installer script to easily identify which version the bindist tarballs are (David Dawes). - 609. Resync bindist and Xinstall.sh with changes made for 4.0.3 (David Dawes). - 608. Fix the Shape extension's XShapeCombineMask to handle cases where + 62. Resync bindist and Xinstall.sh with changes made for 4.0.3 (David Dawes). + 61. Fix the Shape extension's XShapeCombineMask to handle cases where src_mask is None according to the spec. This reportedly fixes an X server crash (#4715, Huver). - 607. Make sure -UXF86DRI is after -DXF86DRI when compiling vfb/miinitext.c - (#4714, Frederic Lepied). - 606. Fix ATI Radeon driver on Alpha. Seems as though the BIOS doesn't + 60. Exclude the DRI extension when NO_HW_ONLY_EXTS is defined (based on + #4714, Frederic Lepied). + 59. Fixup Cygwin/XFree86 after recent Xrandr changes (#4726, Harold Hunt). + 58. Fix ATI Radeon driver on Alpha. Seems as though the BIOS doesn't like Re-POSTing and memory setup gets confused. (Jay Estabrook, Jeff Weidemeier) - 605. Fix build for Cygwin/XFree86 (#4711,#4713 Harold Hunt). - 604. Fix problem with Xinstall.sh on Darwin 1.3.x (#A.431, Stefan Pantos). - 603. Update Xinstall.sh and Darwin bindist directories to optionally + 57. Build fixes for Cygwin/XFree86 (#4710,#4711,#4713 Harold Hunt). + 56. Fix problem with Xinstall.sh on Darwin 1.3.x (#A.431, Stefan Pantos). + 55. Update Xinstall.sh and Darwin bindist directories to optionally install Quartz support and to add an x86 distribution (Torrey T. Lyons). - -XFree86 4.0.99.901 (29 May 2001) - 602. Add missing return value for miSetPixmapDepths() (#4708, + 54. Install xterm.termcap and xterm.terminfo when installing xterm + (Torrey T. Lyons). + 53. Add missing return value for miSetPixmapDepths() (#4708, ISHIKAWA Mutsumi). - 601. Fill in the v4l man page template with some useful information (#4707, + 52. Fill in the v4l man page template with some useful information (#4707, Gerd Knorr). - 600. Fix FFB OpenGL SwapBuffers (#4705, David S. Miller). - 599. Work around a problem building the rstart specs doc with a symlinked + 51. Fix FFB OpenGL SwapBuffers (#4705, David S. Miller). + 50. Fix some mi build warnings (#4695-4701,4704, Adam Sulmicki). + 49. Work around a problem building the rstart specs doc with a symlinked build tree (David Dawes). - 598. Remove SPARC-specific byte-swapping code that would not work on older + 48. Fix Glint 300SX+Delta support. Add faster 500TX text acceleration + based on other code (Alan Hourihane). + 47. Remove SPARC-specific byte-swapping code that would not work on older SPARC CPUs (part of #4653, David S. Miller). - 597. NULLify mapVidMem() and remove DEV_MEM #define for Linux/SPARC + 46. NULLify mapVidMem() and remove DEV_MEM define for Linux/SPARC (#4651, David S. Miller). - 596. Fix Glint 300SX+Delta support. Add faster 500TX text acceleration - based on other code (Alan Hourihane). - 595. Fixing MTRR split code (hopefully) (Egbert Eich). - 594. Fixing coredump when doing vbeFree() twice: S3 Virge and C&T + 45. Fixing MTRR split code (hopefully) (Egbert Eich). + 44. Fixing coredump when doing vbeFree() twice: S3 Virge and C&T (Egbert Eich). - 593. Fixing HWCursor for mga driver in fbdev mode (Egbert Eich). - 592. Fix xmh's use of XtNewString() with getenv (#4694, Tim Waugh). - 591. Xdm/PAM fixes: leave it to PAM to observe whether or not an account + 43. Fixing HWCursor for mga driver in fbdev mode (Egbert Eich). + 42. Make the entire source tree (except GLX) compile under SunOS/SPARC 5.7. + Functions that have yet to be ported are FatalError()'s. This is + temporarily controlled through a BuildXFree86onSparcSunOS #define in + host.def (Marc La France). + 41. Merge support for all Solaris/ix86 versions together (Marc La France). + 40. Replace Xserver/Imakefile's DDXDIRn scheme with a more general scheme + (Marc La France). + 39. For GCC on SVR4 variants, use -fPIC rather than -fpic to generate shared + objects (Marc La France). + 38. Fix xmh's use of XtNewString() with getenv (#4694, Tim Waugh). + 37. Xdm/PAM fixes: leave it to PAM to observe whether or not an account is locked, and reinitialize credentials after calling initgroups(), because sometimes the credentials pam_setcred() gives are in the form of group membership (#4693, Mike Harris). - 590. Add an encodings file for standard box drawing characters for + 36. Add an encodings file for standard box drawing characters for VT100-compatible terminals (#4691, Juliusz Chroboczek). - 589. Fix warnings when building mieq.c (#4689, Adam Sulmicki). - 588. Fix some bugs in the cz and sk entried in XKB's keymap/xfree86 file + 35. Fix warnings when building mieq.c (#4689, Adam Sulmicki). + 34. Fix some bugs in the cz and sk entried in XKB's keymap/xfree86 file (#4692, Ivan Pascal). - 587. Add 'hr' entries to XKB's keymap/xfree86 and rules/xfree86.lst files + 33. Add 'hr' entries to XKB's keymap/xfree86 and rules/xfree86.lst files (#4687, Nerijus Baliunas). - 586. Include in shape.h to get Region typedef (#4686, + 32. Include in shape.h to get Region typedef (#4686, Adam Sulmicki). - 585. Acceleration fixes for GLINT Permedia1 (Alan Hourihane). - 584. Ensure glint driver chips don't exceed the specified virtual sizes. + 31. Acceleration bug fixes for GLINT Permedia1 (Alan Hourihane). + 30. Ensure glint driver chips don't exceed the specified virtual sizes. (Alan Hourihane). - 583. Remove all VGA'isms from the glint driver, it doesn't need them + 29. ATI DGA changes (Patrick Chase and Marc La France): + - Add accelerated DGA primitives for Mach64 variants; + - Add accelerated DGA transparent blits for Rage128 and Radeon; + - Fix setting of DGA_CONCURRENT_ACCESS; + - Take XaaNo* options into consideration. + 28. Simplify DGAShutdown() (Marc La France). + 27. Fix colourmap bug when switching out of a DGA mode (Marc La France). + 26. Make it possible, but not required, for a driver to initialise DGA after + XAA so that it may factor in any XaaNo* options in determining what DGA + drawing primitives to support (Marc La France). + 25. Prevent mode switches while DGA modes are set (Marc La France). + 24. Remove all VGA'isms from the glint driver, it doesn't need them (Alan Hourihane). - 582. Support the Delta in the glint driver, needed for boards that have + 23. Support the Delta in the glint driver, needed for boards that have the Delta connected to the rasterizer, as it acts as an arbiter for the bus. Resolves acceleration troubles. (Alan Hourihane). - 581. Add an lv entry to XKB's keymap/xfree86 file (#4685, Nerijus Baliunas). - 580. Fix some typos in XKB's xfree86.lst file (#4684, Nerijus Baliunas). - 579. Add DDXOSVERRORF ifdefs to the XFree86 ddx code that make use of the + 22. Add an lv entry to XKB's keymap/xfree86 file (#4685, Nerijus Baliunas). + 21. Fix some typos in XKB's xfree86.lst file (#4684, Nerijus Baliunas). + 20. Add DDXOSVERRORF ifdefs to the XFree86 ddx code that make use of the OsVendorVErrorFProc feature (#4678, Michel Dänzer). - 578. Convert the r128 driver's "UseBIOSDisplay" option into a more general + 19. Convert the r128 driver's "UseBIOSDisplay" option into a more general "Display" option (#4678, Michel Dänzer). - 577. Treat GL_POINT like GL_POINTS and GL_LINE like GL_LINES in the sunffb - DRI driver (#4677, David S. Miller) - 576. Fix bsdLib.rules and bsdLib.tmpl problems that show up when + 18. Treat GL_POINT like GL_POINTS and GL_LINE like GL_LINES in the sunffb + DRI driver (#4677, David S. Miller). + 17. Some doc updates related to cross compiling (#A.413, Scott A McConnell). + 16. Fix bsdLib.rules and bsdLib.tmpl problems that show up when X11ProjectRoot is defined (#4676, Johnny C. Lam). - 575. Fix Trident XVideo colorkey at depth 15, 24 (Alan Hourihane). - 574. Fix a typo in the lv XKB description, and fix things so that it gets - installed (#4675, 4679, Andris Pavenis). - 573. Fix some apm driver bugs, including one that prevented acceleration + 15. Fix Trident XVideo colorkey at depth 15, 24 (Alan Hourihane). + 14. Fix some apm driver bugs, including one that prevented acceleration from working (#4674, Loïc Grenié). - 572. Fix 555 (depth 15) palette handling in the i810 driver (#4673, + 13. Fix 555 (depth 15) palette handling in the i810 driver (#4673, Andrew C. Aitchison). - 571. [SECURITY] Fix authentication issues with mmap() on drm devices + 12. [SECURITY] Fix authentication issues with mmap() on drm devices (Jeff Hartmann). - 570. Add euro locales and some other missing locales to locale.alias and + 11. Add euro locales and some other missing locales to locale.alias and locale.dir (#4662, 4665, 4667, Mike Harris). - 569. Fix Romanian XKB map (#4664, Mike Harris). - 568. Spell Portuguese correctly in XKB lst files (#4663, Mike Harris). - 567. Fix new ioperm calls in lnx_video.c for Alpha that are not needed + 10. Fix Romanian XKB map (#4664, Mike Harris). + 9. Spell Portuguese correctly in XKB lst files (#4663, Mike Harris). + 8. Fix new ioperm calls in lnx_video.c for Alpha that are not needed (Jay Estabrook). - 566. Fix problems with assembler file dependencies when using gccmakedep + 7. Add drivers for PCMCIA cards, HP VGA Out F1252A, and the ColorGraphic + Voyager VGA card to the KDrive server. Tested on the Compaq IPAQ. + Use -listmodes, to check resolutions supported. + (Alan Hourihane). + 6. Add RandR extension (Jim Gettys) + 5. Fix int10 option handling and DDC max clock reporting (Marc La France). + 4. Fix problems with assembler file dependencies when using gccmakedep with the build (Frederic Lepied). - 565. Finish DRI resync, including tdfx driver updates for textured video - support (VA Linux Systems). - 564. Fix formatting of max clock reported by DDC (Marc La France). - 563. Update Japanese localization of XDarwin help file (Toshimitsu Tanaka). - 562. Update XDarwin man pages, help files, and version info. Add option to + 3. Update Japanese localization of XDarwin help file (Toshimitsu Tanaka). + 2. Update XDarwin man pages, help files, and version info. Add option to build XDarwin.app bundle for deployment (Torrey Lyons). + 1. Finish DRI resync, including tdfx driver updates for textured video + support (VA Linux Systems). XFree86 4.0.99.900 (18 May 2001) 561. Add an XKB description for Latvian (lv) keyboards (#A.411, Ilya Ketris). @@ -13417,4 +14555,4 @@ XFree86 3.0 (26 April 1994) -$XFree86: xc/programs/Xserver/hw/xfree86/CHANGELOG,v 3.1785.2.32 2001/06/02 15:27:50 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/CHANGELOG,v 3.2144 2002/01/18 20:09:22 dawes Exp $ Index: xc/INSTALL-X.org diff -u xc/INSTALL-X.org:1.2 xc/INSTALL-X.org:1.5 --- xc/INSTALL-X.org:1.2 Mon Jan 22 17:26:59 2001 +++ xc/INSTALL-X.org Fri Dec 21 16:00:06 2001 @@ -7,7 +7,7 @@ - Building and Installing X11R6.5.1 + Building and Installing X11R6.6 @@ -15,14 +15,13 @@ - Kaleb S. KEITHLEY - August 20, 2000 + April 4, 2001 @@ -30,14 +29,13 @@ -Copyright (C) 1999,2000 Compaq Computer Corporation -Copyright (C) 1999,2000 Hewlett-Packard Company -Copyright (C) 1999,2000 IBM Corporation -Copyright (C) 1999,2000 Hummingbird Communications Ltd. -Copyright (C) 1999,2000 Silicon Graphics, Inc. -Copyright (C) 1999,2000 Sun Microsystems, Inc. -Copyright (C) 1999,2000 The Open Group -Copyright (C) 1998 The Open Group +Copyright (C) 1999,2000,2001 Compaq Computer Corporation +Copyright (C) 1999,2000,2001 Hewlett-Packard Company +Copyright (C) 1999,2000,2001 IBM Corporation +Copyright (C) 1999,2000,2001 Hummingbird Communications Ltd. +Copyright (C) 1999,2000,2001 Silicon Graphics, Inc. +Copyright (C) 1999,2000,2001 Sun Microsystems, Inc. +Copyright (C) 1998,1999,2000,2001 The Open Group Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Soft- @@ -70,14 +68,13 @@ 1. Introduction This document is the installation notes that were provided with X.Org's -X11R6.5.1 release. If you're building XFree86, it can be used as a -rough guide. Be aware that most of the details are not targetted -specifically at the current XFree86 source tree. XFree86-specific docu- -mentation can be found in the xc/programs/Xserver/hw/xfree86/doc direc- -tory and on-line at http://www.xfree86.org/current/. Some of the docu- -mentation there is out of date, so also be aware of that. There is cur- -rently no up to date document specifically targetted at building XFree86 -from source. +X11R6.6 release. If you're building XFree86, it can be used as a rough +guide. Be aware that most of the details are not targeted specifically +at the current XFree86 source tree. XFree86-specific documentation can +be found in the xc/programs/Xserver/hw/xfree86/doc directory and on-line +at http://www.xfree86.org/current/. Some of the documentation there is +out of date, so also be aware of that. There is currently no up to date +document specifically targeted at building XFree86 from source. 2. Easy Build Instructions @@ -86,18 +83,23 @@ tions later in this document. Edit xc/config/cf/site.def for local preferences. If you want to -install somewhere other than /usr/X11R6.5.1, change ProjectRoot. (Do not -use DESTDIR.) If you want to build with gcc uncomment the HasGcc2 line. -If you have gcc, but not cc, please read the full build instructions. - -If some time has elapsed since the initial release of R6.5.1, check to -see if any public patches have been released. The source tar files may -have been updated -- check the patch-level line in the bug-report tem- -plate. If the source in the tar files has not been updated then get all -the patches and apply them, following the instructions at the top of -each patch. Ignore the rebuild steps in the patch application instruc- -tions. +install and use the installation from somewhere other than /usr, change +ProjectRoot. (Do not use DESTDIR.) +If you are cross compiling you will want to use DESTDIR to specify where +the installation should take place. Failure to do so will corrupt your +native installation of X. + +If you want to build with gcc uncomment the HasGcc2 line. If you have +gcc, but not cc, please read the full build instructions. + +If some time has elapsed since the initial release of R6.6, check to see +if any public patches have been released. The source tar files may have +been updated -- check the patch-level line in the bug-report template. +If the source in the tar files has not been updated then get all the +patches and apply them, following the instructions at the top of each +patch. Ignore the rebuild steps in the patch application instructions. + Check the appropriate vendor-specific .cf file in xc/config/cf/ to make sure that OSMajorVersion, OSMinorVersion, and OSTeenyVersion are set correctly for your system. On most systems imake will figure these out @@ -134,12 +136,12 @@ -3. Building and Installing R6.5.1 +3. Building and Installing R6.6 -Historically the MIT X Consortium and The X Consortium, Inc., sample -implementation releases have always been source-code-only releases, and -this release is no different. +Historically the MIT X Consortium, The X Consortium, Inc., and X.Org +sample implementation releases have always been source-code-only +releases, and this release is no different. 3.1. Introduction @@ -147,22 +149,22 @@ Every release of X has been progressively easier to configure, build, and install than the preceding releases -- and we believe this release -is the easiest release to build yet. That not withstanding, if things do +is the easiest release to build yet. That notwithstanding, if things do go amiss during the build we assume that you have the basic skills nec- essary, and the willingness, to debug any errors that may occur in the build process. When you install, if you're going to use xdm or replace your system's old X, we assume you have a basic understanding of your system's initialization process. For Remote Execution (RX, embedding) we -assume you that you understand the fundamentals of HTTP, CGI, and HTML. -If these assumptions are not correct then you should consider finding -someone who has proficiency in these areas to do the build and install -for you. +assume that you understand the fundamentals of HTTP, CGI, and HTML. If +these assumptions are not correct then you should consider finding some- +one who has proficiency in these areas to do the build and install for +you. After the release has been out for a while more up to date information about any newly-discovered problems may be found in the Frequently Asked -Questions posting appearing monthly on the Usenet newsgroup comp.win- -dows.x and xpert mailing list. The FAQ is also available via anonymous -FTP from ftp://ftp.x.org/ in the file ftp://ftp.x.org/con- +Questions posting, which appears monthly on the Usenet newsgroup +comp.windows.x and xpert mailing list. The FAQ is also available via +anonymous FTP from ftp://ftp.x.org/ in the file ftp://ftp.x.org/con- trib/faqs/FAQ.Z, or possibly on one of X mirror sites. @@ -170,7 +172,7 @@ The source is distributed in four gzip compressed UNIX Tape ARchive -(tar) files. You will need about 200 Mb of disk space in order to unpack +(tar) files. You will need about 230 Mb of disk space in order to unpack and build the release. Installing requires an additional 30-50 Mb assum- ing you have shared libraries (80-100 Mb without). @@ -178,7 +180,7 @@ pressed tar files to extract the sources. There are several to chose from, we do not make recommendations about which one you should use. -Release 6.5.1 sources are distributed among the tar files as follows: +Release 6.6 sources are distributed among the tar files as follows: xorg-1.tar contains everything in xc/ that isn't in the other tar files @@ -192,7 +194,7 @@ need xorg-2.tar to build. If you already have the fonts from prior releases you can use those instead of downloading them again. We presume that you know how to copy or move them from your old source tree to the -R6.5.1 source tree. +R6.6 source tree. 3.3. Unpacking the Distribution @@ -217,13 +219,12 @@ 3.4. Applying Patches -If some time has elapsed since the initial release of R6.5.1, check to -see if any public patches have been released. The source tar files may -have been updated -- check the patch-level line in the bug-report tem- -plate. If the source in the tar files has not been updated then get all -the patches and apply them, following the instructions at the top of -each patch. Ignore the rebuild steps in the patch application instruc- -tions. +If some time has elapsed since the initial release of R6.6, check to see +if any public patches have been released. The source tar files may have +been updated -- check the patch-level line in the bug-report template. +If the source in the tar files has not been updated then get all the +patches and apply them, following the instructions at the top of each +patch. Ignore the rebuild steps in the patch application instructions. See the section "Public Patches" later in this document. @@ -323,7 +324,7 @@ Some systems require the X server to run as root to access the devices it needs. If you are on such a system and will not be using xdm, you may set this variable to YES to install the X server - setuid to root; however the X Project Team strongly recommends that + setuid to root; however the X.Org Group strongly recommends that you not install your server suid-root, but that you use xdm instead. Talk to your system manager before setting this variable to YES. @@ -352,8 +353,7 @@ pegasus.cf, x386.cf. Amoeba.cf is known to require additional patches. The file xc/lib/Xdmcp/Wraphelp.c, for XDM-AUTHORIZATION-1, is not -included in this release. See ftp://ftp.x.org/pub/R6.5.1/xdm- -auth/README. +included in this release. See ftp://ftp.x.org/pub/R6.6/xdm-auth/README. 3.6. System Build Notes @@ -393,19 +393,19 @@ Use of the GNU BinUtils assembler, as, and linker, ld, is not supported -- period! If you have them installed on your system you must rename or -remove them for the duration of the R6.5.1 build. (You can restore them +remove them for the duration of the R6.6 build. (You can restore them afterwards.) -The system-supplied make works just fine for building R6.5.1 and that's +The system-supplied make works just fine for building R6.6 and that's what we suggest you use. If you've replaced your system's make with GNU make then we recommend that you restore the system make for the duration -of your R6.5.1 build. After R6.5.1 is done building you can revert to -GNU make. GNU make on most systems (except Linux, where it is the -default make) is not a supported build configuration. GNU make may work -for you, and if it does, great; but if it doesn't we do not consider it -a bug in R6.5.1. If, after this admonition, you still use GNU make and -your build fails, reread the above, and retry the build with the sys- -tem's make before you file a bug-report. +of your R6.6 build. After R6.6 is done building you can revert to GNU +make. GNU make on most systems (except Linux, where it is the default +make) is not a supported build configuration. GNU make may work for you, +and if it does, great; but if it doesn't we do not consider it a bug in +R6.6. If, after this admonition, you still use GNU make and your build +fails, reread the above, and retry the build with the system's make +before you file a bug-report. 3.6.3. IBM AIX 4.x @@ -552,10 +552,10 @@ 3.9. Shared Libraries -The version number of some of the the shared libraries has been changed. -On SunOS 4, which supports minor version numbers for shared libraries, -programs linked with the R6.5.1 libraries will use the new libraries -with no special action required. +The version number of some of the shared libraries has been changed. On +SunOS 4, which supports minor version numbers for shared libraries, pro- +grams linked with the R6.6 libraries will use the new libraries with no +special action required. On most other modern operating systems the version portion of the library name, i.e. "6.1" portion of "libX11.so.6.1" is a string. Even if @@ -690,7 +690,7 @@ run-level files. -3.11.4. On SystemV-based systems +3.11.4. On Unix System V-based systems On systems with a /etc/inittab file, you can edit this file to add the @@ -788,12 +788,11 @@ 4. Public Patches -The Open Group X Project Team may from time to time issue public patches -for this release to fix any serious problems that are discovered. Such -fixes are a subset of fixes available to X Project Team members. Public -patches are available via anonymous FTP from -ftp://ftp.x.org/pub/R6.5.1/fixes, or from your local X mirror site. -Check the site closest to you first. +The X.Org Group may from time to time issue public patches for this +release to fix any serious problems that are discovered. Such fixes are +a subset of fixes available to X.Org members. Public patches are avail- +able via anonymous FTP from ftp://ftp.x.org/pub/R6.6/fixes, or from your +local X mirror site. Check the site closest to you first. You can determine which public patches have already been applied to your source tree by examining the "VERSION" line of xc/bug-report. The source Index: xc/Makefile diff -u xc/Makefile:3.21 xc/Makefile:3.22 --- xc/Makefile:3.21 Sat Mar 3 17:03:43 2001 +++ xc/Makefile Wed Dec 19 16:37:26 2001 @@ -2,12 +2,12 @@ -# $XFree86: xc/Makefile,v 3.21 2001/03/03 22:03:43 tsi Exp $ +# $XFree86: xc/Makefile,v 3.22 2001/12/19 21:37:26 dawes Exp $ # Luna users will need to either run make as "make MAKE=make" # or add "MAKE = make" to this file. -RELEASE = "Release 6.5" +RELEASE = "Release 6.6" SHELL = /bin/sh RM = rm -f MV = mv Index: xc/RELNOTES diff -u xc/RELNOTES:1.2 xc/RELNOTES:1.6 --- xc/RELNOTES:1.2 Fri Mar 2 12:48:40 2001 +++ xc/RELNOTES Thu Jan 17 18:27:41 2002 @@ -1,23 +1,23 @@ - Release Notes for XFree86[tm] 4.0.2 + Release Notes for XFree86[tm] 4.2.0 The XFree86 Project, Inc - 17 December 2000 + 17 January 2002 Abstract - This document contains some information about the features present - in XFree86 4.0.2 and their status. + This document contains some information about features present in + XFree86 4.2.0 and their status. 1. Introduction to the 4.x Release Series XFree86 4.0 was the first official release of the new XFree86 4 series. The -current release (4.0.2) is the latest in that series. XFree86 4 represents a +current release (4.2.0) is the latest in that series. XFree86 4 represents a significant redesign of the XFree86 X server. Not all of the hardware drivers from 3.3.x have been ported to 4.x yet, but conversely, 4.x has some hardware support not present in 3.3.x. Our Driver Status document summarizes -how the hardware driver support compares between 3.3.6 and 4.0.2. Please -check there first before downloading 4.0.2. +how the hardware driver support compares between 3.3.6 and 4.2.0. Please +check there first before downloading 4.2.0. The 4.0.1 release introduced a new graphical configuration tool, "xf86cfg", and a text mode interface was added to it for the 4.0.2 release. It is work @@ -28,7 +28,7 @@ for some hardware. To try it out, just run (as root) "XFree86 -configure". Each of these configuration options will give you a reasonable starting point for a suitable configuration file. We've put some effort into documenting -the 4.0.2 config file format, and you can find that information in the +the 4.2.0 config file format, and you can find that information in the XF86Config manual page. Check that, the driver manual pages and the related documentation for further information. @@ -37,259 +37,197 @@ save you some time and help you figure out which of the binary releases you need. -The next section describes what is new in the latest version (4.0.2). The -other sections below describe some of the new features and changes between -3.3.x and 4.0. There are lot's of new features, and we definitely don't have -enough space to cover them all here. +The next section describes what is new in the latest version (4.2.0) compared +with the previous full release (4.1.0). The other sections below describe +some of the new features and changes between 3.3.x and 4.0. There are lot's +of new features, and we definitely don't have enough space to cover them all +here. -2. Summary of new features in 4.0.2. +2. Summary of new features in 4.2.0. -2.1 X server +2.1 Video Driver Enhancements - o Darwin/Mac OS X is now supported and the X server runs on PowerPC. The - X server for this platform is called "Xdarwin", and its installation and - configuration is different from the "XFree86" server used on other plat- - forms. Please read the XFree86 on Darwin and Mac OS X document for fur- - ther information. + o An s3 driver is added, which provides support for many of the older + non-ViRGE and non-Savage S3 chipsets. - o Mesa has been updated to the 3.4 stable release. + o Some vmware driver problems are fixed, and the driver is updated to + take advantage of VMWare Workstation 3.0 features. These include + improved hardware cursor handling and support for 8 bit emulation. - o A driver for ATI Radeon adapters has been added. + o Support added for Trident *BladeXP chipsets (currently not-acceler- + ated). - o ATI driver support for multi-head configurations and non-Intel platforms - has been improved. + o Xv support added for Trident TGUI series chips (not 9440 though). - o The ATI driver has been changed to invoke the appropriate driver for any - Rage 128 and Radeon adapters that it finds in the system. + o Support added for the older Trident chipsets again for ISA/VLBus (not + tested) - o A driver (i128) for Number Nine chipsets has been added. + o Support added to the glint driver for 3DLabs Permedia4, GLINT R4 and + Gamma 2 chipsets. - o A driver (savage) for S3 Savage chipsets has been added. + o Support added to the i810 driver for Intel i830 (tested on Linux only). - o A driver (siliconmotion) for some Silicon Motion chipsets has been - added. + o Support added to the ATI radeon driver for Radeon 7500 (2D and 3D), + Radeon 8500 (2D only), and Rage128ProII. - o The driver (ark) for Ark Logic chips has been ported to 4.x. + o Support added for the Matrox G550 support. This included dual-head + support. - o A VESA driver has been added. + o Support added for NVIDIA nForce integrated graphics. - o A driver for SGI newport cards has been added (Linux/mips). + o The NVIDIA nv driver now has preliminary powerpc support for the NV11 + and NV20. - o The trident driver has lots of fixes to the CyberBlade/Blade support, - XVideo support for the Image/Blade series (although scaling doesn't work - yet on the Image series). + o Support added to the NVIDIA nv driver for interlaced modes on hardware + that supports this, and support for resolutions higher than 1600x1200. - o The s3virge driver has stabilized ViRGE GX2 support, includes ViRGE DX - and ViRGE support for XVideo YUV images, and various fixes. + o Fixes for the savage driver on 64-bit platforms, XVideo support for the + SuperSavage, and other savage driver updates. - o The 3Dlabs (glint) driver now has Permedia3 support. + o The ATI r128 driver now uses the CCE DMA engine for 2D acceleration + when direct rendering is enabled, which reduces context switching over- + head and improves stability and performance for XVideo and some 2D oper- + ations. - o The SiS driver has had many updates, and XVideo support for the 630 is - included. + o The fbdev driver now supports rotation. - o The NVIDIA (nv) driver has been updated to include support for the - GeForce2, and line acceleration has been added. Also, DDC support has - been improved, and support added for Alpha platforms (dense only). + o Various updates to the apm, ark, chips (C&T), cirrus, i128, neomagic, + newport, s3virge, siliconmotion, sis, tdfx, tseng, vesa, and vga + drivers. - o The neomagic driver has had various bug fixes and extended acceleration - support. DGA support has also been added. +2.2 Input Driver Enhancements - o The Chips and Technologies driver (chips) has initial support for the - 69030. + o The mouse driver now has support for mouse wheel emulation. - o The tseng driver has multi-head fixes and DGA support has been added. + o The mouse driver can now handle replug events on Linux for PS/2 mice. - o Most video drivers have been converted to use the integrated "fb" frame- - buffer code instead of the old "cfb" code. + o The "Min/Max X/Y Position" options in the elographics and mutouch + drivers are changed to "Min/Max X/Y" to be consistent with the other + input drivers. - o DRI support has been updated for the Rage 128, 3Dfx Voodoo3 and Voodoo5, - Intel i810/i815 and Matrox G400. DRI support for SiS and Sun Creator3D - is available. The DRI is now also available on Alpha platforms. + o Linux USB keyboard access is fixed when no PS/2 controller is present. - o An input driver (citron) for Citron Infrared Touch devices has been - added. + o Added calcomp input driver. - o An input driver (penmount) for PenMount devices has been added. + o Added DMC input driver. - o An input driver (digitaledge) for DigitalEdge devices has been added. + o Added hyperpen input driver. - o Big endian problems in Xinerama have been fixed. +2.3 X Server and Extension Updates - o The new "render" extension has been added (see below (section 4.11, page - 1)). The design has been extended in the following ways: + o Resynced with X.Org's X11R6.6. - o A new FillRectangles request was added. + o Mesa updated to the post-3.4.2 3.4 branch version as of November 2001. - o The 'mask' operand was changed to allow per-channel alphas. + o DRI drivers resynced with the latest from the DRI project. - Server implementation: + o Various updates to the Xft library. - o Implemented remaining code for client clip lists. + o The DEC-XTRAP extension is now available. - o Fixed plenty of bugs related to text rendering. + o The PEX and XIE extensions are no longer built/distributed by default. - o Complete compositing code, except for separate alpha. + o A security problem related to glyph clipping for large origins is + fixed. - Todo: + o An i810 XvMC (motion compensation) driver is now available (Linux + only). - o Polygons + o A fatal bug XVideo Xineramification bug is fixed. - o Image scaling +2.4 Client and Library Updates - o Separate alpha channels + o FreeType2 updated to version 2.0.6. - o Support for visuals other than TrueColor. + o Added libGL man pages. - Drivers with render extension support include: i128, glint, ati (r128 - and radeon), chips, cirrus, mga, neomagic, nv, tdfx, trident, tseng, - vesa, s3virge. + o Xload now has support for displaying the load of remote hosts. - Acceleration for the render extension: + o Xterm updated to patch level 165. - o XAA infrastructure for acceleration. + o SuperProbe is removed. - o Experimental MGA acceleration using XAA + o Sample xtrap clients added. - o kdrive (TinyX) infrastructure +2.5 I18N and Font Updates - o Experimental TinyX Trident 9525DVD acceleration + o New Luxi scalable fonts (TrueType and Type 1) from Bigelow & Holmes. + These fonts are original designs by Kris Holmes and Charles Bigelow. + See below (section 4.22, page 1) for further information. - Xft library: + o More locale/international keyboards supported. - o New font naming/access library. + o Modularized I18N support in Xlib is included from X11R6.6. - o Abstraction for core/Render text. + o A problem that caused bdftopcf to sometimes write corrupted fonts is + fixed. - o Uses FreeType2 rasterizer. + o Some problem with Xlib's handling of CTEXT and multi-byte characters + are fixed. - o Allows anti-aliased/subpixel sampled text. + o The fontenc layer is updated, and the fontenc library is now installed + and available for other applications. - o Gracefully falls back to core rendering. + o Improvements to the input method framework in Xlib for UTF-8 locales. - o Complicated font matching mechanism. + o A filter called ``luit'' is added, which provides locale and ISO 2022 + support to any Unicode terminal, notably xterm. Use of luit is still + experimental in this release. - o Uses server DPI to convert point sizes to pixel sizes, even for - core fonts. +2.6 OS Support Updates - xterm: + o Build problems on both QNX4 and QNX6 are fixed. - o Can use Xft, by default uses core fonts. + o VT switching problems with the i810 driver on FreeBSD are worked + around. - o Uses new options '-fa' for family name and '-fs' for font size (in - points). + o Problems building modules with some enhanced versions of gcc are fixed. - x11perf: + o Lots of updates for Darwin/Mac OS X, including: - o Add tests for anti-aliased, subpixel sampled and aliased fonts - using the Xft library. + o On Mac OS X, a new rootless mode is added to the XDarwin X server. + This allows X clients to display windows on the Aqua desktop. - xditview: + o Xinerama support added to XDarwin - o When the Xft library is build, uses Xft for all font access. + o With XDarwin in full screen mode, the depth, size, and refresh + rate can now be chosen to be different from the settings used by + Aqua. - Qt, Gtk, twm: + o GLX support added for Darwin and Mac OS X with software rendering. - o Qt changes available here . + o Keymap setup in XDarwin is improved, particularly for interna- + tional keyboards. - o Gtk changes in process. + o In addition to English and Japanese, the XDarwin user interface is + now localized in Dutch, French, German, Spanish, and Korean. - o twm hacks should never see the light of day. + o Lots of Cygwin support updates. - o xf86cfg, a new graphical configuration tool for XFree86 4.x, and can be - used to either write the initial configuration or make customisations to - the current configuration. xf86cfg is a work in progress, and allows - configuration of: + o Support added for OpenBSD/powerpc. - o Specific setup of monitors, cards, keyboards and mice, as well as - adding or removing them. + o Build support added for Linux on IBM S/390. - o Server layout setup, allowing complex configuration of physical - monitor positions, default color depth and/or rotated monitors. + o Removed stale support for Amoeba and Minix. - o Mode line editor that can be used to configure multiple monitors, - and allows adding a modeline specific to a monitor directly to the - configuration file. + o Client-side support added for sparc64 on NetBSD and OpenBSD. - o AccessX configuration interface, that provides an interface to easy - setup of most AccessX options, including: + o Support added for building the X server on Linux/m68k. - o Timeout to reset controls. + o Support added for building on Linux/arm32. - o StickyKeys, for people with disabilities that cannot press two - keys at the same time. + o Updates to Linux/mips support. - o MouseKeys, mouse control only with the keyboard. +A more complete list of changes can be found in the CHANGELOG that is part of +the XFree86 source tree. It can also be viewed online at our CVSweb server +. - o RepeatKeys, repeat rate and repeat delay. - - o SlowKeys, to avoid pressing keys accidentally, they're only - accepted if pressed for some specific amount of time. - - o BounceKeys, helps avoiding multiple key presses by only - accepting a key if it is pressed only once and not pressed - again in a specific amount of time. - - New configuration options are being worked on, as well as correcting - some of the bugs in the current options. A protocol for plugging in - external modules is also planned. - -2.2 X libraries and clients. - - o Significant updates to the internationalisation support in Xlib (see - below (section 2.3, page 1)). - - o Some xfs updates, including font path verification, and new options. - - o XTerm updates. - - o New "xvinfo" client for querying the XVideo extension. - -2.3 Fonts and Internationalisation - - o Many of the "misc" bdf fonts have been updated and extended, and a wider - range of ISO-8859 subsets have been added. These are now auto-generated - from ISO-10646 encoded master fonts. - - o The ClearlyU ISO-10646 encoded fonts have been updated. - - o Functions to read keyboard input in locale independent UTF-8 encoding - have been added to libX11: Xutf8LookupString, Xutf8ResetIC. - - o Functions to output strings in locale independent UTF-8 encoding have - been added to libX11: Xutf8DrawString, Xutf8DrawImageString, Xutf8Tex- - tEscapement, Xutf8TextExtents, Xutf8TextPerCharExtents, Xutf8DrawText. - - o Functions to convert between Compound Text or locale dependent encoding - and UTF-8 have been added to libX11: Xutf8TextListToTextProperty, - Xutf8TextPropertyToTextList. The converter between Compound Text and - UTF-8 in Xlib has been improved; a round-trip conversion now correctly - converts all graphic Unicode characters back and forth. - - o libXaw now offers selected text using both selection targets, - UTF8_STRING and COMPOUND_TEXT. - - o Locales with UTF-8 encodings are now supported; but the UTF-8 displaying - facilities are not adequate yet. - - o XKB keyboard definitions have been added and updated for some countries. - -2.4 Platforms - - o Darwin/Mac OS X. - - o Greatly improved IA-64 support. - - o Improved Linux/mips support. - - o Support has been added for more Alpha platforms under Linux. This now - includes all platforms that require sparse memory mapping. - 3. Drivers 3.1 Video Drivers -XFree86 4.0.2 includes the following video drivers: +XFree86 4.2.0 includes the following video drivers: +--------------+--------------------------+----------------------------------+ |Driver Name | Description | Further Information | @@ -300,7 +238,7 @@ |chips | Chips & Technologies | README.chips, chips(4) | |cirrus | Cirrus Logic | | |cyrix (*) | Cyrix MediaGX | README.cyrix | -|fbdev | Linux fbdev | fbdev(4) | +|fbdev | Linux framebuffer device | fbdev(4) | |glide | Glide2x (3Dfx) | glide(4) | |glint | 3Dlabs, TI | glint(4) | |i128 | Number Nine | README.I128, i128(4) | @@ -312,6 +250,7 @@ |newport (-) | SGI Newport | README.newport, newport(4) | |nv | NVIDIA | nv(4) | |rendition | Rendition | README.rendition, rendition(4) | +|s3 | S3 (not ViRGE or Savage) | | |s3virge | S3 ViRGE | README.s3virge, s3virge(4) | |savage | S3 Savage | savage(4) | |siliconmotion | Silicon Motion | siliconmotion(4) | @@ -329,6 +268,7 @@ |tseng | Tseng Labs | | |vesa | VESA | vesa(4) | |vga | Generic VGA | vga(4) | +|vmware | VMWare guest OS | vmware(4) | +--------------+--------------------------+----------------------------------+ Drivers marked with (*) are present in a preliminary form in this release, @@ -341,18 +281,20 @@ Darwin/Mac OS X uses IOKit drivers and does not use the module loader drivers listed above. Further information can be found in README.Darwin. -XFree86 4.0.2 includes the following input drivers: +XFree86 4.2.0 includes the following input drivers: 3.2 Input Drivers +------------+--------------------+---------------------+ |Driver Name | Description | Further Information | +------------+--------------------+---------------------+ - |acecad | AceCad | | + |calcomp | Calcomp | | |citron | Citron | citron(4) | |digitaledge | DigitalEdge | | + |dmc | DMC | dmc(4) | |dynapro | Dynapro | | |elographics | EloGraphics | | + |hyperpen | HyperPen | | |keyboard | generic keyboards | keyboard(4) | |microtouch | MicroTouch | | |mouse | most mouse devices | mouse(4) | @@ -364,15 +306,15 @@ |wacom | Wacom tablets | wacom(4) | +------------+--------------------+---------------------+ -4. Summary of XFree86 4. +4. Overview of XFree86 4.x. Unlike XFree86 3.3.x where there are multiple X server binaries, each of -which drive different hardware, XFree86 4.0.2 has a single X server binary +which drive different hardware, XFree86 4.2.0 has a single X server binary called XFree86. This binary can either have one or more video drivers linked in statically, or, more usually, dynamically load the video drivers and other modules that are needed. -XFree86 4.0.2 has X server support for most UNIX(R) and UNIX-like operating +XFree86 4.2.0 has X server support for most UNIX(R) and UNIX-like operating systems on Intel/x86 platforms, plus support for Linux on Alpha, PowerPC, IA-64, Sparc, and Mips platforms, and for Darwin on PowerPC. Work on support for additional architectures and operating systems is in progress, and is @@ -394,7 +336,7 @@ the future we plan to take advantage of this to provide more frequent driver module updates in between major releases. -The loader in version 4.0.2 has support for Intel (x86), Alpha and PowerPC +The loader in version 4.2.0 has support for Intel (x86), Alpha and PowerPC platforms. It also has preliminary support for Sparc platforms. The X server makes use of modules for video drivers, X server extensions, @@ -424,11 +366,12 @@ has preliminary support for generating a basic config file. This is done by running (as root) "XFree86 -configure". Alternatively, the sample config file XF86Config.eg that is installed in /usr/X11R6/lib/X11 may be used as a -starting point. The XF86Setup utility is currently not usable, but work is -continuing in this area. +starting point. The xf86cfg utility can also be used to create a new config- +uration file or to edit an existing one. The XF86Setup utility is currently +not usable, but work is continuing in this area. -The main changes are covered here, but please refer to the XF86Config manual -page for more comprehensive information: +The main changes are covered here, but please refer to the XF86Config(5) man- +ual page for more comprehensive information: o The Module section is used to load server extension modules and font modules, but not XInput drivers. The .so suffix should no longer be @@ -449,8 +392,6 @@ Load "dbe" Load "record" Load "glx" - Load "pex5" - Load "xie" Load "extmod" Load "type1" @@ -499,6 +440,13 @@ Option "suspend time" "30" Option "off time" "40" + The new option AllowDeactivateGrabs allows deactivating any active grab + with the key sequence Ctrl+Alt+Keypad-Divide and the new option Allow- + ClosedownGrabs allows closing the conection to the grabbing client with + the key sequence Ctrl+Alt+Keypad-Multiply. Note that these options are + off by default as they allow users to remove the grab used by screen + saver/locker programs. + o The Keyboard, Pointer and XInput sections have been replaced by a more general InputDevice section. The old Keyboard and Pointer sections are still recognised for compatibility purposes, but they are discommended @@ -677,7 +625,7 @@ specified multiple times to increase the verbosity level (as with 3.3.x), or the verbosity level may be specified explicitly as a number. The default verbosity level is - 1. + 0. -xf86config filename @@ -687,6 +635,9 @@ This makes it possible for users to choose from multiple config files that the the sysadmin has provided. +A more complete list of XFree86 X server command line options can be found in +the XFree86(1) manual page. + 4.4 XAA The XFree86 Acceleration Architecture (XAA) has been completely rewritten @@ -733,7 +684,7 @@ 4.7 DGA version 2 -DGA 2.0 is included in 4.0.2, but is not implemented by all drivers. Prelim- +DGA 2.0 is included in 4.2.0, but is not implemented by all drivers. Prelim- inary documentation for the client libraries can be found in the README.DGA document. A good degree of backwards compatibility with version 1.0 is pro- vided. @@ -749,23 +700,24 @@ Option "NoDDC". We have support for DDC versions 1 and 2; these can be dis- abled independently with Option "NoDDC1" and Option "NoDDC2". -At startup the server prints out DDC information from the display, but it -does not yet use it the determine modelines. For some drivers, the X -server's new -configure option uses the DDC information when generating the -config file. - -Changed behavior caused by DDC. Several drivers uses DDC information to set -the screen size and pitch. This can be overridden by explicitly resetting it -to the and non-DDC default value 75 with the -dpi 75 command line option for -the X server, or by specifying appropriate screen dimensions with the "Dis- -playSize" keyword in the "Monitor" section of the config file. +At startup the server prints out DDC information from the display, and can +use this information to set or warn about monitor sync limits (but not mode- +lines yet). For some drivers, the X server's new -configure option uses the +DDC information when generating the config file. + +4.8.1 Changed behavior caused by DDC. + +Several drivers uses DDC information to set the screen size and pitch. This +can be overridden by explicitly resetting it to the and non-DDC default value +75 with the -dpi 75 command line option for the X server, or by specifying +appropriate screen dimensions with the "DisplaySize" keyword in the "Monitor" +section of the config file. 4.9 GLX and the Direct Rendering Infrastructure (DRI) -Precision Insight (now part of the Pro- -fessional Services group at VA Linux Systems ) -was provided with funding and support from Red Hat , SGI , 3Dfx , Intel +Precision Insight was provided with +funding and support from Red Hat , SGI +, 3Dfx , Intel , ATI , and Matrox to integrate the GLX extension for 3D rendering in an X11 window. The 3D core rendering component is the Mesa @@ -801,7 +753,7 @@ overlays and other image operations not possible with the core X rendering system. -XFree86 4.0.2 provides a partial implementation of Render sufficient for +XFree86 4.2.0 provides a partial implementation of Render sufficient for drawing anti-aliased text and image composition. Still to be implemented are geometric primitives and affine transformation of images. @@ -836,10 +788,10 @@ 4.11.2 FreeType support in Xft -XFree86 4.0.2 includes sources for FreeType version 2.0.1, and, by default, +XFree86 4.2.0 includes sources for FreeType version 2.0.1, and, by default, they are built and installed automatically. -If you prefer, you can configure XFree86 4.0.2 to use an existing Freetype2 +If you prefer, you can configure XFree86 4.2.0 to use an existing Freetype2 installation by telling XFree86 not to build the internal copy and indicating where that external version has been installed. Edit (or create) con- fig/cf/host.def to include: @@ -856,7 +808,7 @@ 4.11.3 Application Support For Anti-Aliased Text -Only three applications have been modified in XFree86 4.0.2 to work with the +Only three applications have been modified in XFree86 4.2.0 to work with the Render extension and the Xft and FreeType libraries to provide anti-aliased text. Xterm, xditview and x11perf. Migration of other applications may occur in future releases. @@ -884,9 +836,9 @@ the new server architecture. The area of mode validation needs further work, and the extension should be used with care. This extension has support for changing the gamma setting at run-time, for modes where this is possible. -The new xgamma utility makes use of this feature. Compatibility with the -3.3.x version of the extension is provided. The missing parts of this exten- -sion and some new features should be completed in a future release. +The xgamma utility makes use of this feature. Compatibility with the 3.3.x +version of the extension is provided. The missing parts of this extension +and some new features should be completed in a future release. 4.13 Xaw @@ -1021,9 +973,9 @@ 4.20 Large font optimisation The glyph metrics array, which all the X clients using a particular font have -access to, is now placed in shared memory, so as to reduce redundant memory -consumption. For non-local clients, the glyph metrics array is transmitted -in a compressed format. +access to, is placed in shared memory, so as to reduce redundant memory con- +sumption. For non-local clients, the glyph metrics array is transmitted in a +compressed format. 4.21 Unicode/ISO 10646 support @@ -1058,18 +1010,30 @@ o Both the xfsft (the "freetype" module) and the X-TrueType (the "xtt" module) TrueType font backends support Unicode-encoded fonts. -4.22 Lucidux fonts from Bigelow and Holmes +4.22 Luxi fonts from Bigelow and Holmes -XFree86 now includes the ``Lucidux'' family of professionally hinted Type 1 -fonts. This family consists of the fonts ``Lucidux Serif'', ``Lucidux Sans'' -and ``Lucidux Mono'' in Roman and oblique variants, and includes over 370 -glyphs in each font covering among others the glyphs needed for ISO 8859-1, -2, 3, 4, 9 and 15. Bold variants will be included in a future release. The -design and font outlines were donated by Charles Bigelow and Kris Holmes from -Bigelow and Holmes Inc., and the hinting was donated by Berthold Horn and -Blenda Horn from Y&Y, Inc. For more information, please contact - or , or consult Y&Y's web site -. +XFree86 now includes the ``Luxi'' family of Type 1 fonts and TrueType fonts. +This family consists of the fonts ``Luxi Serif'', ``Luxi Sans'' and +``Luxi Mono'' in Roman, oblique, bold and bold oblique variants. The True- +Type version have glyphs covering the basic ASCII Unicode range, the Latin 1 +range, as well as the Extended Latin range and some additional punctuation +characters. In particular, these fonts include all the glyphs needed for +ISO 8859 parts 1, 2, 3, 4, 9, 13 and 15, as well as all the glyphs in the +Adobe Standard encoding and the Windows 3.1 character set. + +The glyph coverage of the Type 1 versions is somewhat reduced, and only cov- +ers ISO 8859 parts 1, 2 and 15 as well as the Adobe Standard encoding. + +The Luxi fonts are original designs by Kris Holmes and Charles Bigelow from +Bigelow and Holmes Inc., who developed the Luxi typeface designs in Ikarus +digital format. URW++ Design and Development GmbH converted the Ikarus for- +mat fonts to TrueType and Type 1 font programs and implemented the grid-fit- +ting "hints" and kerning tables in the Luxi fonts. + +The license terms for the Luxi fonts are included in the file `COPYRIGHT.BH', +as well as in the License document. For further information, please contact + or , or consult the URW++ web +site . 4.23 Directory rearrangements @@ -1082,7 +1046,7 @@ located under the appropriate subdirectories of /var, again with the relevant symbolic links in the old location. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml,v 1.60 2001/03/02 17:40:48 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml,v 1.70 2002/01/17 18:14:59 dawes Exp $ -$XFree86: xc/RELNOTES,v 1.2 2001/03/02 17:48:40 dawes Exp $ +$XFree86: xc/RELNOTES,v 1.6 2002/01/17 23:27:41 dawes Exp $ Index: xc/RELNOTES-X.org diff -u xc/RELNOTES-X.org:1.2 xc/RELNOTES-X.org:1.4 --- xc/RELNOTES-X.org:1.2 Mon Jan 22 17:26:59 2001 +++ xc/RELNOTES-X.org Fri Dec 21 16:00:06 2001 @@ -9,7 +9,7 @@ X Window System, Version 11 - Release 6.5.1 + Release 6.6 Release Notes @@ -25,7 +25,7 @@ - August 20, 2000 + April 4, 2001 @@ -33,13 +33,13 @@ -Copyright (C) 1999,2000 Compaq Computer Corporation -Copyright (C) 1999,2000 Hewlett-Packard Company -Copyright (C) 1999,2000 IBM Corporation -Copyright (C) 1999,2000 Hummingbird Communications Ltd. -Copyright (C) 1999,2000 Silicon Graphics, Inc. -Copyright (C) 1999,2000 Sun Microsystems, Inc. -Copyright (C) 1999,2000 The Open Group +Copyright (C) 1999,2000,2001 Compaq Computer Corporation +Copyright (C) 1999,2000,2001 Hewlett-Packard Company +Copyright (C) 1999,2000,2001 IBM Corporation +Copyright (C) 1999,2000,2001 Hummingbird Communications Ltd. +Copyright (C) 1999,2000,2001 Silicon Graphics, Inc. +Copyright (C) 1999,2000,2001 Sun Microsystems, Inc. +Copyright (C) 1999,2000,2001 The Open Group All rights reserved. @@ -75,7 +75,7 @@ 1. Introductory Note This document is the release notes that were provided with X.Org's -X11R6.5.1 release. The XFree86-specific information in this document is +X11R6.6 release. The XFree86-specific information in this document is out of date. The XFree86-specific documentation can be found in the xc/programs/Xserver/hw/xfree86/doc directory, and on-line at http://www.xfree86.org/current/. @@ -94,15 +94,14 @@ interface (the windows) on inexpensive desktop machines. -3. What is Release 6.5.1 +3. What is Release 6.6 -Release 6.5.1 (R6.5.1) is X.Org's update to the Open Group's X Project -Release 6.4 patch 3 and all prior releases. It is compatible with with -all releases going back to R1 at both the source and protocol levels. -Note that Release 6.5 was an internal X.Org release, and Release 6.5.1 -supersedes it. +Release 6.6 (R6.6) is The X.Org Group's update to its Release 6.5.1 +patch 1 and all prior releases. It is compatible with with all releases +going back to R1 at both the source and protocol levels. + The X Consortium was an independent, not-for-profit membership corpora- tion formed in 1993 as the successor to the MIT X Consortium. It was dissolved at the end of 1996 and all assets such as trademarks and copy- @@ -116,14 +115,14 @@ available to X.Org members. The contractor has been chartered to pro- vide quarterly update releases to the X source. -Membership information for X.Org may be found at http://www.x.org/mem- -bers.htm. +Membership information for X.Org may be found at: + http://www.x.org/members.htm. This X.Org release addresses a portion of the backlog of bug reports since Release 6.4 patch 3, along with additional fixes from the Xfree86 community. -Instructions for building and installing R6.5.1 can be found in the file +Instructions for building and installing R6.6 can be found in the file INSTALL.TXT (INSTALL-X.org), available separately and also contained in the release. @@ -131,14 +130,14 @@ 4. Overview of the X.Org Release -Like all the releases that preceded it, R6.5.1 is a source code release. +Like all the releases that preceded it, R6.6 is a source code release. In order to use the release it is necessary to first unpack the distri- bution, compile it, and then install it. The source contains the follow- ing items: Documentation - Sample implemenations + Sample implementations Fonts and bitmaps Utility libraries Programs @@ -212,12 +211,12 @@ 9. Extensions Supported -Release 6.5.1 includes source for the following extensions: BIG- -REQUESTS, DOUBLE-BUFFER, DPMS, Extended-Visual-Information, LBX, MIT- -SHM, MIT-SUNDRY-NONSTANDARD, Multi-Buffering, RECORD, SECURITY, SHAPE, -SYNC, TOG-CUP, X3D-PEX, XC-APPGROUP, XC-MISC, XFree86-VidModeExtension, -XIE (X Image Extension), XINERAMA. XInputExtension, XKEYBOARD, XpExten- -sion (printing), XTEST, and XTestExtension1, +Release 6.6 includes source for the following extensions: BIG-REQUESTS, +DOUBLE-BUFFER, DPMS, Extended-Visual-Information, LBX, MIT-SHM, MIT- +SUNDRY-NONSTANDARD, Multi-Buffering, RECORD, SECURITY, SHAPE, SYNC, TOG- +CUP, X3D-PEX, XC-APPGROUP, XC-MISC, XFree86-VidModeExtension, XIE (X +Image Extension), XINERAMA. XInputExtension, XKEYBOARD, XpExtension +(printing), XTEST, and XTestExtension1, Not all of these extensions are standard; see the Standards manual page. Some of these extensions may not be supported on every platform. @@ -242,7 +241,7 @@ instructions and xc/config/cf/X11.tmpl for details of how these configuration variables are used. - By default the imake variable ProjectRoot is /usr/X11R6.5 and + By default the imake variable ProjectRoot is /usr/X11R6.6 and XFILESEARCHPATH has these components: $ProjectRoot/lib/X11/%L/%T/%N%C%S @@ -318,13 +317,12 @@ ftp://ftp.x.org/pub/unsupported/lib/IMdkit/. -11. What is Unchanged in Release 6.5.1 +11. What is Unchanged in Release 6.6 As this is an update release, there is a great deal of stability in the standards, libraries, and clients. No existing standards have changed in -a material way. All previous interfaces in these and all other -libraries are unchanged. +a material way. All previous interfaces are unchanged. 12. New OS Support @@ -334,28 +332,28 @@ were used to develop this and prior releases: -System R6 R6.1 R6.[23] R6.4 R6.5.1 +System R6 R6.1 R6.[23] R6.4 R6.5R6.6 -AIX 3.2.5 4.1.4 4.2 4.2 - -A/UX 3.0.1 - - - - -BSD/386 1.0 - - - - -Compaq Tru64 UNIX 1.0/1.3 3.2C 4.0A 4.0A 5.0 -FreeBSD - 2.1.0 2.1.6 2.2.2 - -Fujitsu UXP - - - V20L10 - -HP-UX 9.1 10.01 10.01 10.20 10.20 -IRIX 5.2 5.3 6.2 6.2 - -Linux (kernel) - Slackware 2.3 - 1.2.11 - - - - Slackware 3.1 - - 2.0 - - - S.u.S.E. 5.0 - - - 2.0.30 - -Mach 2.5 - - - - -NEWS-OS 6.0 - - - - -Solaris 2.3 2.4 2.5 2.5 7.0 -SunOS 4.1.3 4.1.3 4.1.4 4.1.4 - -Ultrix-32 4.3 4.4 - - - -UNICOS 8.0 - - - - -Unixware SVR4.2 1.0 2.02 2.02 - - -Windows NT 3.1 3.5 4.0 3.51 - +AIX 3.2.5 4.1.4 4.2 4.2 - - +A/UX 3.0.1 - - - - - +BSD/386 1.0 - - - - - +Compaq Tru64 UNIX 1.0/1.3 3.2C 4.0A4.0A5.0 +FreeBSD - 2.1.0 2.1.6 2.2.2 - - +Fujitsu UXP - - - V20L10 - +HP-UX 9.1 10.01 10.01 10.20 10.20 10.20 +IRIX 5.2 5.3 6.2 6.2 - - +Linux (kernel) +Slackware 2.3 - 1.2.11 - - - +Slackware 3.1 - - 2.0 - - +S.u.S.E. 5.0 - - - 2.0.30 - +Mach 2.5 - - - - - +NEWS-OS 6.0 - - - - - +Solaris 2.3 2.4 2.5 2.5 7.0 7.0 +SunOS 4.1.3 4.1.3 4.1.4 4.1.4 - - +Ultrix-32 4.3 4.4 - - - - +UNICOS 8.0 - - - - - +Unixware SVR4.2 1.0 2.02 2.02 - - +Windows NT 3.1 3.5 4.0 3.51 - @@ -387,17 +385,17 @@ R6.1 was officially the last release that supported traditional K&R C. -Like R6.3 and R6.4, R6.5 assumes a Standard C compiler and environment. -We have not intentionally removed any K&R C support from old code, and -most of the release will continue to build on platforms without an ANSI -C compiler. +Like all releases since R6.3, R6.6 assumes a Standard C compiler and +environment. We have not intentionally removed any K&R C support from +old code, and most of the release will continue to build on platforms +without an ANSI C compiler. 15. VSW5 -We have tested this release with VSW5 version 5.0.0. This release passes -all tests in VSW5 with the following exceptions: +We have tested this release with VSW5 version 5.1.1A. This release +passes all tests in VSW5 with the following exceptions: o tests for which a permanent waiver has been granted. @@ -409,27 +407,22 @@ http://www.rdg.opengroup.org/interpretations/database/. -16. XtAppPeekEvent() behavior +16. XtAppPeekEvent() behavior - Environment variable no longer needed XtAppPeekEvent() has been modified in R6.5.1 to behave as it is docu- -mented in the Xt spec. The routine will now process timer events with- -out returning to the caller. However, there are applications which rely -on the previous behavior of XtAppPeekEvent(). One such application is -Netscape, as of version 4.7. - -To allow these applications to work with R6.5.1, the environment vari- -able XTAPPPEEKEVENT_SKIPTIMER can be set to any value prior to starting -the application. If the environment variable is set, XtAppPeekEvent() -will revert to its previous behavior. For example, the following shell -commands - - export XTAPPPEEKEVENT_SKIPTIMER=1 - /opt/netscape/netscape +mented in the Xt spec. Certain applications, including Netscape, did +not work properly with these modifications, so the routine was changed +so that users could set the XTAPPPEEKEVENT_SKIPTIMER environment vari- +able in order to make XtAppPeekEvent() behave as it did prior to R6.5.1. + +In R6.6, the routine has been changed so that there is no need to set +the environment variable. Timers are handled as specified by the spec, +but Netscape and other applications now work properly without the envi- +ronment variable. In R6.6, the XTAPPPEEKEVENT_SKIPTIMER variable is +ignored, and users may unset it if they were using it in R6.5.1. -can be used to make Netscape function properly with R6.5.1. - 17. Year 2000 (Y2K) Compliance @@ -484,12 +477,77 @@ 20. Acknowledgements -Jeff Walls of Hewlett Packard. +The following individuals served as X.Org representatives for their +respective companies. These companies are Executive Members of X.Org. -Garry Paxinos of Metro Link. -Irene McCartney of Compaq. +Paul Anderson of Hewlett-Packard. -Paul Shearer of IBM. +Heather Lanigan of Compaq. + + +Danny Masci of Hummingbird. + + +Dan McNichol of IBM. + + +Richard Offer of SGI. + + Steve Swales of Sun Microsystems, Inc. + + +The following individuals contributed significantly to the development +of X11R6.6, in the form of code, testing, and support. + + +Stuart Anderson of Metro Link, Inc. + + +Robert W. Boone of Metro Link, Inc. + + +Alan Coopersmith of Sun Microsystems, Inc. + + +Glen Cornell of Metro Link, Inc. + + +Ernie Coskrey of Metro Link, Inc. + + +Gudrun Enger of Metro Link, Inc. + + +Gemma Exton of Adacel Technologies Limited. + + +Jay Hobson of Sun Microsystems, Inc. + + +Steve McClure of Metro Link, Inc. + + +Scott McDonald of Metro Link, Inc. + + +Andrew Miller of Marconi Corporation. + + +Quentin Neill of Metro Link, Inc. + + +Keith Packard of The XFree86 Project. + + +Simon Pickup of Adacel Technologies Limited. + + +Paul Shearer of IBM. + + +Hidetoshi Tajima of Sun Microsystems, Inc. + + Index: xc/bug-report diff -u xc/bug-report:1.4 xc/bug-report:1.6 --- xc/bug-report:1.4 Mon Jan 22 17:21:32 2001 +++ xc/bug-report Mon Jan 7 13:14:55 2002 @@ -4,12 +4,16 @@ [Send to xbugs@x.org, as shown in the sample message header below] +[NOTE: This form is intended for reporting bugs to X.Org about X.Org releases. +If you're reporting an XFree86-specific bug, please use the BugReport form +in xc/programs/Xserver/hw/xfree86/doc/ and send it to xfree86@xfree86.org.] + To: xbugs@x.org Subject: [area]: [synopsis] [replace with actual area and short description] VERSION: -R6.5.1, public-patch-1 +R6.6 CLIENT MACHINE and OPERATING SYSTEM: Index: xc/registry diff -u xc/registry:1.4 xc/registry:1.5 --- xc/registry:1.4 Mon Jan 22 17:21:32 2001 +++ xc/registry Mon Aug 13 15:34:49 2001 @@ -1,4 +1,4 @@ -/* $Xorg: registry,v 1.5 2000/08/17 19:41:44 cpqbld Exp $ */ +/* $Xorg: registry,v 1.7 2001/06/01 18:55:58 coskrey Exp $ */ X Registry @@ -9,17 +9,18 @@ xregistry@x.org or to The X.Org Group -- X11 Registry - c/o X.Org Chair - Steve Swales + c/o Ienup Sung Sun Microsystems, Inc. - 901 San Antonio Road, MS MPK29-203 + 901 San Antonio Road, MS SJC07-201 Palo Alto, CA 94303-4900 Electronic mail will be acknowledged upon receipt. Please allow up to 4 weeks for a formal response to registration and inquiries. The registry is published as part of the X software distribution -from The X.Org Group. +from The X.Org Group. The latest registry can be found at: + + ftp://ftp.x.org/pub/DOCS/registry All registered items must have the postal address of someone responsible for the item, or a reference to a document describing the item and the postal @@ -505,6 +506,7 @@ "RGB_COLOR_MAP" [18] "SPAN" [16] "STRING" [16] +"UTF8_STRING" [134] "WINDOW" [16] "WM_HINTS" [16] "WM_ICON_SIZE" [16] @@ -578,6 +580,7 @@ "TEXT" [16] "TIMESTAMP" [16] "USER" [16] +"UTF8_STRING" [134] "_ADOBE_EPS" [69] "_ADOBE_EPSI" [69] "_SONY_CDFF" [37] @@ -716,11 +719,19 @@ ISO Latin alphabet No. 5 "ISO8859-10" [15],[12] ISO Latin alphabet No. 6 +"ISO8859-13" [15],[12] + ISO Latin alphabet No. 7 +"ISO8859-14" [15],[12] + ISO Latin alphabet No. 8 +"ISO8859-15" [15],[12] + ISO Latin alphabet No. 9 "FCD8859-15" [7] + (deprecated) ISO Latin alphabet No. 9, Final Committee Draft "ISO10646-1" [133] Unicode Universal Multiple-Octet Coded Character Set "ISO10646-MES" [133] + (deprecated) Unicode Minimum European Subset "JISX0201.1976-0" [38],[12] 8-Bit Alphanumeric-Katakana Code @@ -1072,9 +1083,9 @@ X.Org Chair: Steve Swales Sun Microsystems, Inc. - 901 San Antonio Road, MS MPK29-203 + 901 San Antonio Road, MS SJC07-201 Palo Alto, CA 94303-4900 - steve.swales@eng.sun.com + steve.swales@sun.com X.Org Co-Chair: Irene McCartney @@ -1107,8 +1118,8 @@ [14] VEX - Video Extension to X Todd Brunhoff, Tektronix -[15] ISO 8859, Information processing - 8-bit single-byte coded graphic - character sets, parts 1 through 10 +[15] ISO 8859, Information technology -- 8-bit single-byte coded graphic + character sets, Parts 1 through 10, 13, 14, and 15 [16] Inter-Client Communication Conventions Manual The X.Org Group @@ -1311,9 +1322,9 @@ [57] (Originally David Rosenthal) Steve Swales Sun Microsystems, Inc. - 901 San Antonio Road, MS MPK29-203 + 901 San Antonio Road, MS SJC07-201 Palo Alto, CA 94303-4900 - steve.swales@eng.sun.com + steve.swales@sun.com [58] (Originally Murali V. Srinivasan) See Reference [57] @@ -1669,3 +1680,6 @@ Cambridge CB2 3QG United Kingdom +[134] In R6.6 X.Org is reserving the string UTF8_STRING for use as an ICCCM + property type and selection target. The ICCCM spec will be updated + in a future release to fully specify UTF8_STRING. Index: xc/config/Imakefile diff -u xc/config/Imakefile:1.3.2.1 xc/config/Imakefile:1.4 --- xc/config/Imakefile:1.3.2.1 Thu May 31 18:20:18 2001 +++ xc/config/Imakefile Thu May 31 14:47:04 2001 @@ -1,5 +1,5 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:41:45 cpqbld Exp $ -XCOMM $XFree86: xc/config/Imakefile,v 1.3.2.1 2001/05/31 22:20:18 dawes Exp $ +XCOMM $XFree86: xc/config/Imakefile,v 1.4 2001/05/31 18:47:04 dawes Exp $ #define IHaveSubdirs #define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)" Index: xc/config/cf/FreeBSD.cf diff -u xc/config/cf/FreeBSD.cf:3.109 xc/config/cf/FreeBSD.cf:3.112 --- xc/config/cf/FreeBSD.cf:3.109 Thu May 3 16:12:35 2001 +++ xc/config/cf/FreeBSD.cf Thu Jan 3 11:33:49 2002 @@ -2,7 +2,7 @@ XCOMM XCOMM XCOMM -XCOMM platform: $XFree86: xc/config/cf/FreeBSD.cf,v 3.109 2001/05/03 20:12:35 alanh Exp $ +XCOMM platform: $XFree86: xc/config/cf/FreeBSD.cf,v 3.112 2002/01/03 16:33:49 tsi Exp $ #ifndef UseElfFormat #define UseElfFormat DefaultToElfFormat @@ -505,6 +505,25 @@ #ifndef PamLibraries #define PamLibraries -lpam DlLibrary +#endif + +/* + * On FreeBSD, the run-time loader will use the built-in "rpath" before + * LD_LIBRARY_PATH. This means that utilities like mkfontdir will load + * installed libraries (if they exist) in preference to the ones in the + * build tree, even though LD_LIBRARY_PATH points to the build tree. + * This can result in the build failing. One way to avoid this is to + * pre-load the libraries from the build tree. + * + * There should be a better way than this hack... + */ +#if UseElfFormat +#ifndef PreloadFontSetup +#define PreloadFontSetup LD_PRELOAD="`(cd $(XENVLIBDIR); echo libXfont*.so.?)`" +#endif +#ifndef PreloadSetup +#define PreloadSetup LD_PRELOAD="`(cd $(XENVLIBDIR); echo lib[A-f]*.so.? | grep -v Xfont)`" +#endif #endif #ifndef HasCookieMaker Index: xc/config/cf/Imake.cf diff -u xc/config/cf/Imake.cf:3.67 xc/config/cf/Imake.cf:3.74 --- xc/config/cf/Imake.cf:3.67 Wed Apr 18 13:13:58 2001 +++ xc/config/cf/Imake.cf Fri Nov 16 11:47:50 2001 @@ -17,7 +17,7 @@ * * 4. Create a .cf file with the name given by MacroFile. */ -XCOMM $XFree86: xc/config/cf/Imake.cf,v 3.67 2001/04/18 17:13:58 dawes Exp $ +XCOMM $XFree86: xc/config/cf/Imake.cf,v 3.74 2001/11/16 16:47:50 dawes Exp $ #if defined(__APPLE__) # undef __APPLE__ @@ -107,7 +107,11 @@ # undef i386 # endif # if defined(__sparc__) || defined(sparc) -# define SparcArchitecture +# if !defined(__arch64__) +# define SparcArchitecture +# else +# define Sparc64Architecture +# endif # undef sparc # endif # ifdef mips @@ -166,9 +170,15 @@ # define i386Architecture # undef i386 # endif +# if defined(__sparc64__) || defined(__sparc_v9__) || defined(__arch64__) +# define Sparc64Architecture +# endif # if defined(__sparc__) || defined(sparc) # define SparcArchitecture # undef sparc +# if defined(__sparc_v9__) || defined(__arch64__) +# define Sparc64Architecture +# endif # endif # ifdef mips # define MipsArchitecture @@ -760,10 +770,51 @@ # undef MIPSEL # undef _MIPSEL # endif +# ifdef __hppa__ +# ifndef HPArchitecture +# define HPArchitecture +# endif +# undef __hppa__ +# endif /* __hppa__ */ +# ifdef __sh__ +# ifndef SuperHArchitecture +# define SuperHArchitecture +# endif +# ifdef __BIG_ENDIAN__ +# ifndef SuperHebArchitecture +# define SuperHebArchitecture +# endif +# endif +# undef __sh__ +# endif /* __sh__ */ +# if defined(__SH3__) || defined(__sh3__) +# ifndef SuperH3Architecture +# define SuperH3Architecture +# endif +# undef __SH3__ +# undef __sh3__ +# endif /* __SH3__ or __sh3__ */ +# ifdef __SH4__ +# ifdef __SH4_NOFPU__ +# ifndef SuperH4NOFPUArchitecture +# define SuperH4NOFPUArchitecture +# endif +# undef __SH4_NOFPU__ +# else +# ifndef SuperH4Architecture +# define SuperH4Architecture +# endif +# endif +# undef __SH4__ +# endif /* __SH4__ */ XCOMM for compatibility with 3.3.x # ifdef PpcArchitecture # define PowerPCArchitecture # endif +# if defined(__s390x__) +# define s390xArchitecture +# undef __s390x__ +# endif #endif /* linux */ #if (defined(__Lynx__) || defined(Lynx)) && (defined(i386) || defined(__i386__) || defined(__x86__) || defined(__powerpc__) || defined(__sparc__) || defined(sparc)) @@ -886,20 +937,24 @@ #define MacroIncludeFile #define MacroFile nto.cf #define NTOArchitecture -#ifdef PPC -# define PPCArchitecture -# undef PPC -#else -#ifdef MIPS -# define mipsArchitecture -# undef MIPS -#else -#ifdef i386 -# define i386Architecture -# undef i386 -#endif -#endif -#endif +# ifdef PPC +# define PPCArchitecture +# undef PPC +# endif +# ifdef MIPS +# define mipsArchitecture +# undef MIPS +# endif +# ifdef i386 +# define i386Architecture +# undef i386 +# endif /* i386 */ +# ifdef __i386__ +# ifndef i386Architecture +# define i386Architecture +# endif +# undef __i386__ +# endif /* __i386__ */ #endif /* QNX/Neutrino */ #ifdef SparcArchitecture Index: xc/config/cf/Imake.rules diff -u xc/config/cf/Imake.rules:3.94 xc/config/cf/Imake.rules:3.102 --- xc/config/cf/Imake.rules:3.94 Thu Apr 26 17:27:48 2001 +++ xc/config/cf/Imake.rules Mon Dec 17 15:00:37 2001 @@ -5,7 +5,7 @@ XCOMM XCOMM XCOMM -XCOMM rules: $XFree86: xc/config/cf/Imake.rules,v 3.94 2001/04/26 21:27:48 dawes Exp $ +XCOMM rules: $XFree86: xc/config/cf/Imake.rules,v 3.102 2001/12/17 20:00:37 dawes Exp $ /* * MACHINE-INDEPENDENT RULES; DO NOT MODIFY @@ -25,6 +25,7 @@ * _MUse (a,b) * _MUseCat (a,b,c) * ProgramTargetName (target) + * HostProgramTargetName (target) * RunProgram (progvar,options) * RunProgramWithSetup (setup,progvar,options) * RemoveFile (file) @@ -311,6 +312,10 @@ #define ProgramTargetName(target)target #endif +#ifndef HostProgramTargetName +#define HostProgramTargetName(target)target +#endif + #ifndef RunProgram #define RunProgram(progvar,options) $(progvar) options #endif @@ -510,8 +515,14 @@ #endif /* RemoveTargetProgram */ #ifndef MakeDir -#define MakeDir(dir) DirFailPrefix@if [ -d dir ]; then set +x; \ @@\ - else (set -x; $(MKDIRHIER) dir); fi +#define MakeDir(dir) DirFailPrefix@if [ -d dir ]; then \ @@\ + set +x; \ @@\ + else \ @@\ + if [ -h dir ]; then \ @@\ + (set -x; rm -f dir); \ @@\ + fi; \ @@\ + (set -x; $(MKDIRHIER) dir); \ @@\ + fi #endif /* MakeDir */ #ifndef BuildIncludesTop @@ -1211,7 +1222,7 @@ InstallHtmlManPageAliases(file,aliases,$(MANSUFFIX)) @@\ @@\ install.man:: @@\ - @(TMP=#tmp.$$$$; \ @@\ + @(TMP="#tmp.$$$$"; \ @@\ RemoveFile($${TMP}); \ @@\ echo .so `basename destdir`/file.$(MANSUFFIX) > $${TMP}; \ @@\ for i in aliases; do (set -x; \ @@\ @@ -1246,7 +1257,7 @@ InstallHtmlManPageAliases(file,aliases,suffix) @@\ @@\ install.man:: @@\ - @(TMP=#tmp.$$$$; \ @@\ + @(TMP="#tmp.$$$$"; \ @@\ RemoveFile($${TMP}); \ @@\ echo .so `basename destdir`/file.suffix > $${TMP}; \ @@\ for i in aliases; do (set -x; \ @@\ @@ -1594,10 +1605,10 @@ */ #ifndef LinkFileList #define LinkFileList(step,list,dir,sub) @@\ -step:: list @@\ +step:: @@\ @MakeFlagsToShellFlags(i,set +e); \ @@\ echo " cd" dir; cd dir && \ @@\ - for i in list; do (set -x; RemoveFile($$i); $(LN) sub/$$i .); done + for i in list; do (set -x; $(LN) -f sub/$$i .); done #endif @@ -1615,6 +1626,15 @@ * * Since the link is used in the installation process, we need to * make the link relative in order to honor $(DESTDIR) if it is set. + * + * Note: The sed script used here is not completely general. It assumes + * that no elements of the path are '..', and that none start with '.' + * that aren't just '.'. + * + * For a more general solution $(REVPATH) could be used. Even though + * it was intended for something a little different, it does do what is + * required here. + * */ #ifndef LinkConfDirectoryLong #if UseSeparateConfDir && HasSymLinks @@ -1625,7 +1645,7 @@ @MakeFlagsToShellFlags(i,set +e); \ @@\ if [ -d Concat($(DESTDIR),opath/cdir) ]; then \ @@\ RELPATH=`echo opath/cdir | \ @@\ - sed -e 's:^.::' -e 's:[^/.][^/]*:..:'g`; \ @@\ + sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ @@\ cd Concat($(DESTDIR),opath/cdir); \ @@\ if [ -d rdir -a ! -h rdir ]; then \ @@\ (cd rdir; tar cf - . | \ @@\ @@ -3167,7 +3187,8 @@ @@\ name.$(MANNEWSUFFIX): name.$(MANSRCSUFFIX) @@\ RemoveFile($@) @@\ - $(LN) name.$(MANSRCSUFFIX) $@ @@\ + cd `dirname name` && \ @@\ + $(LN) `basename name.$(MANSRCSUFFIX)` `basename $@` @@\ @@\ clean:: @@\ RemoveFile(name.$(MANNEWSUFFIX)) Index: xc/config/cf/Imake.tmpl diff -u xc/config/cf/Imake.tmpl:3.102 xc/config/cf/Imake.tmpl:3.116 --- xc/config/cf/Imake.tmpl:3.102 Thu Apr 26 17:09:38 2001 +++ xc/config/cf/Imake.tmpl Tue Jan 15 16:22:33 2002 @@ -5,7 +5,7 @@ XCOMM XCOMM XCOMM -XCOMM $XFree86: xc/config/cf/Imake.tmpl,v 3.102 2001/04/26 21:09:38 dawes Exp $ +XCOMM $XFree86: xc/config/cf/Imake.tmpl,v 3.116 2002/01/15 21:22:33 keithp Exp $ XCOMM ---------------------------------------------------------------------- /* @@ -210,6 +210,14 @@ #define BuildRman YES #endif +#ifndef HasGperf +#define HasGperf NO +#endif + +#ifndef GperfCmd +#define GperfCmd gperf +#endif + #ifndef RmanCmd #if BuildRman #ifdef UseInstalled /* assume BINDIR in path */ @@ -339,6 +347,9 @@ #define HasVFork YES #endif #endif +#ifndef HasSetProcTitle +#define HasSetProcTitle NO +#endif #ifndef HasSetUserContext #define HasSetUserContext NO #endif @@ -390,7 +401,7 @@ #define ByteOrder X_LITTLE_ENDIAN #elif defined(ia64Architecture) #define ByteOrder X_LITTLE_ENDIAN -#elif defined(SparcArchitecture) +#elif defined(SparcArchitecture) || defined(Sparc64Architecture) #define ByteOrder X_BIG_ENDIAN #elif defined(AlphaArchitecture) #define ByteOrder X_LITTLE_ENDIAN @@ -400,10 +411,20 @@ #define ByteOrder X_BIG_ENDIAN #elif defined(Mc88000Architecture) #define ByteOrder X_BIG_ENDIAN +#elif defined(s390Architecture) +#define ByteOrder X_BIG_ENDIAN +#elif defined(s390xArchitecture) +#define ByteOrder X_BIG_ENDIAN #elif defined(Arm32Architecture) #define ByteOrder X_LITTLE_ENDIAN #elif defined(PpcArchitecture) #define ByteOrder X_BIG_ENDIAN +#elif defined(HPArchitecture) +#define ByteOrder X_BIG_ENDIAN +#elif defined(SuperHArchitecture) +#define ByteOrder X_LITTLE_ENDIAN +#elif defined(SuperHebArchitecture) +#define ByteOrder X_BIG_ENDIAN #endif #endif /* ByteOrder */ #ifndef HasFortran @@ -450,6 +471,9 @@ #ifndef HasZlib #define HasZlib NO #endif +#ifndef OsNeedZlibHeaders +#define OsNeedZlibHeaders !HasZlib +#endif #if !HasZlib /* if OS doesn't have it, we'll build it */ #undef GzipLibrary /* GzipLibrary was valid only if HasZlib */ #endif @@ -616,6 +640,17 @@ #define TclLibrary #endif #endif +/* + * Libtool has two different behaviours for version numbers. + * On platforms which support a minor number, the library + * version is (version - minor).minor, on those that don't, + * the version if version.0. Linux and Darwin support minor + * numbers; some BSDs do as well. Set this to YES if libtool + * uses minor numbers on your platform. + */ +#ifndef LibtoolMinorVersions +#define LibtoolMinorVersions NO +#endif #ifndef NeedConstPrototypes #define NeedConstPrototypes NO #endif @@ -642,6 +677,10 @@ #define UseGccMakeDepend NO #endif +#ifndef CaseSensitiveFileSystem +#define CaseSensitiveFileSystem YES +#endif + /* DefaultUsrBin is independent of ProjectRoot. This is a directory where programs will be found even if PATH is not set, for example when coming in remotely via rsh. */ @@ -747,6 +786,9 @@ #ifndef DriverManDir #define DriverManDir $(MANSOURCEPATH)$(DRIVERMANSUFFIX) #endif +#ifndef AppLoadDefs +#define AppLoadDefs -D__apploaddir__=$(XAPPLOADDIR) +#endif #ifndef FileManDefs #define FileManDefs -D__filemansuffix__=$(FILEMANSUFFIX) #endif @@ -1086,7 +1128,10 @@ #define RmCmd rm -f #endif -/* Module cross-compile stuff */ +/* + * Module cross-compile stuff. By default they are defined to be exactly the + * same as the non-module versions. + */ #ifndef ModuleCcCmd #define ModuleCcCmd CcCmd #endif @@ -1094,7 +1139,7 @@ #define ModuleCppCmd CppCmd #endif #ifndef ModuleCFlags -#define ModuleCFlags $(CDEBUGFLAGS) $(CCOPTIONS) $(THREAD_CFLAGS) $(ALLDEFINES) +#define ModuleCFlags $(CFLAGS) #endif #ifndef ModuleAsCmd #define ModuleAsCmd AsCmd @@ -1118,7 +1163,7 @@ #define NeedModuleRanlib NO #endif #ifndef ModuleRanlibCmd -#define ModuleRanlibCmd /*won't be used unless NeedModuleRanlib is YES*/ +#define ModuleRanlibCmd RanlibCmd #endif #ifndef StandardIncludes /* for platform-specifics */ @@ -1165,7 +1210,11 @@ #endif #ifndef LdPreLib #if !defined(UseInstalled) +#if !BuildLibraries && AlternateUsrLibDir +#define LdPreLib -L$(BUILDLIBDIR) -L$(USRLIBDIR) +#else #define LdPreLib -L$(BUILDLIBDIR) +#endif #else #if AlternateUsrLibDir #define LdPreLib -L$(USRLIBDIR) @@ -1489,6 +1538,11 @@ CXXDEFINES = $(CXXINCLUDES) $(CXXSTD_DEFINES) $(THREADS_CXXDEFINES) $(DEFINES) $(CXXEXTRA_DEFINES) CXXFLAGS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(THREADS_CXXFLAGS) $(CXXDEFINES) #endif + +#if !BuildLibraries && AlternateIncRoot +INSTALLED_INCLUDES = -I$(INCROOT) +#endif + COMPRESS = CompressCmd GZIPCMD = GzipCmd CPP = CppCmd $(STD_CPP_DEFINES) /* simple filters */ @@ -1524,7 +1578,7 @@ DRIVERMANSUFFIX = DriverManSuffix /* suffix for driver man pages */ MANSRCSUFFIX = ManSrcSuffix /* suffix for man page source */ MANNEWSUFFIX = ManNewSuffix /* suffix for preprocessed man source */ - MANDEFS = FileManDefs MiscManDefs DriverManDefs ProjectManDefs $(XORGMANDEFS) $(VENDORMANDEFS) + MANDEFS = AppLoadDefs FileManDefs MiscManDefs DriverManDefs ProjectManDefs $(XORGMANDEFS) $(VENDORMANDEFS) COMPRESSMANCMD = CompressManCmd @@ -1680,7 +1734,7 @@ * INCLUDES contains client-specific includes set in Imakefile * LOCAL_LDFLAGS contains client-specific ld flags flags set in Imakefile */ - ALLINCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) $(TOP_INCLUDES) $(STD_INCLUDES) + ALLINCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) $(TOP_INCLUDES) $(INSTALLED_INCLUDES) $(STD_INCLUDES) ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(PROTO_DEFINES) $(THREADS_DEFINES) $(MODULE_DEFINES) $(DEFINES) $(EXTRA_DEFINES) CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(THREADS_CFLAGS) $(MODULE_CFLAGS) $(ALLDEFINES) LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES) $(DEPEND_DEFINES) Index: xc/config/cf/Imakefile diff -u xc/config/cf/Imakefile:3.26 xc/config/cf/Imakefile:3.27 --- xc/config/cf/Imakefile:3.26 Wed Jan 17 11:22:30 2001 +++ xc/config/cf/Imakefile Mon Aug 27 13:40:55 2001 @@ -1,5 +1,5 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:41:46 cpqbld Exp $ -XCOMM $XFree86: xc/config/cf/Imakefile,v 3.26 2001/01/17 16:22:30 dawes Exp $ +XCOMM $XFree86: xc/config/cf/Imakefile,v 3.27 2001/08/27 17:40:55 dawes Exp $ XCOMM Some compilers generate fatal errors if an -L directory does XCOMM not exist. Since BUILDLIBDIR may not exist yet suppress its use. @@ -130,7 +130,10 @@ all:: +#if BuildLibraries InstallMultipleDestFlags(install,$(INSTFILES),$(CONFIGDIR),$(INSTDATFLAGS)) +#endif + InstallDriverSDKMultipleDestFlags($(INSTFILES),$(DRIVERSDKDIR)/config/cf,$(INSTDATFLAGS)) #ifdef InstallEmptyHostDef Index: xc/config/cf/Library.tmpl diff -u xc/config/cf/Library.tmpl:3.13 xc/config/cf/Library.tmpl:3.15 --- xc/config/cf/Library.tmpl:3.13 Wed Jan 17 11:22:30 2001 +++ xc/config/cf/Library.tmpl Mon Aug 27 13:40:55 2001 @@ -19,7 +19,7 @@ -XCOMM $XFree86: xc/config/cf/Library.tmpl,v 3.13 2001/01/17 16:22:30 dawes Exp $ +XCOMM $XFree86: xc/config/cf/Library.tmpl,v 3.15 2001/08/27 17:40:55 dawes Exp $ #ifndef LibraryCplusplusOptions # if DoSharedLib && defined(SharedLibraryCplusplusOptions) @@ -302,13 +302,14 @@ #ifndef MakeStringsDependency # define MakeStringsDependency @@\ MAKESTRS = $(CONFIGSRC)/util/makestrs @@\ -NoCmpScript(ProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf) @@\ +NoCmpScript(HostProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf) @@\ @@\ -ProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf: @@\ - cd $(CONFIGSRC)/util && $(MAKE) ProgramTargetName(makestrs) @@\ +HostProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf: @@\ + cd $(CONFIGSRC)/util && $(MAKE) HostProgramTargetName(makestrs) @@\ @@\ -includes:: ProgramTargetName($(MAKESTRS)) +includes:: HostProgramTargetName($(MAKESTRS)) #endif + #ifndef ToolkitMakeStrings # if defined(LibTookitMakeStringsDependency) && LibTookitMakeStringsDependency # define ToolkitMakeStrings(files,source,options,depends,dest) @@\ @@ -364,6 +365,10 @@ # define _LinkBuildLibrary(lib) $(_NULLCMD_) # endif +# if defined(LibBuild) && !LibBuild +# define LibCreate NO +# endif + # if !defined(LibCreate) || LibCreate # if DoSharedLib # if HugeLibrary && defined(SharedLibraryTarget3) @@ -423,27 +428,35 @@ InstallLintLibrary($(LIBNAME),$(LINTLIBDIR)) # endif # else /* not LibCreate */ -# if HugeLibrary +# if LibBuild +# if HugeLibrary AllTarget($(OBJS1)) AllTarget($(OBJS2)) AllTarget($(OBJS3)) -# else +# else AllTarget($(OBJS)) -# endif +# endif +# endif /* LibBuild */ # endif /* LibCreate */ # ifdef IncSubdir # ifdef IncSubSubdir BuildIncludes($(HEADERS),IncSubdir/IncSubSubdir,../..) +# if BuildLibraries InstallMultipleFlags($(HEADERS),$(INCDIR)/IncSubdir/IncSubSubdir,$(INSTINCFLAGS)) +# endif # else BuildIncludes($(HEADERS),IncSubdir,..) +# if BuildLibraries InstallMultipleFlags($(HEADERS),$(INCDIR)/IncSubdir,$(INSTINCFLAGS)) +# endif # endif # else # ifndef CplusplusSource # if !defined(LibHeaders) || LibHeaders BuildIncludesTop($(HEADERS)) +# if BuildLibraries InstallMultipleFlags($(HEADERS),$(INCDIR),$(INSTINCFLAGS)) +# endif # endif # endif # endif Index: xc/config/cf/NetBSD.cf diff -u xc/config/cf/NetBSD.cf:3.95 xc/config/cf/NetBSD.cf:3.102 --- xc/config/cf/NetBSD.cf:3.95 Sun Apr 22 04:54:03 2001 +++ xc/config/cf/NetBSD.cf Thu Jan 3 11:33:49 2002 @@ -2,7 +2,7 @@ -XCOMM platform: $XFree86: xc/config/cf/NetBSD.cf,v 3.95 2001/04/22 08:54:03 herrb Exp $ +XCOMM platform: $XFree86: xc/config/cf/NetBSD.cf,v 3.102 2002/01/03 16:33:49 tsi Exp $ #ifndef OSName @@ -40,6 +40,7 @@ #define SetTtyGroup YES #define DBMLibrary /**/ #define HasDlopen YES +#define HasSetProcTitle YES #ifndef HasLibCrypt # define HasLibCrypt YES #endif @@ -108,7 +109,11 @@ #define MkdirHierCmd mkdir -p +#if OSMajorVersion < 1 || OSMajorVersion == 1 && OSMinorVersion < 5 #define CppCmd /usr/libexec/cpp +#else +#define CppCmd /usr/bin/cpp +#endif #define StandardCppOptions -traditional #define StandardCppDefines /**/ #define PreProcessCmd CppCmd @@ -121,7 +126,8 @@ #define DefaultCCOptions /**/ #else #ifdef Arm32Architecture -#define DefaultCCOptions -ansi -Dasm=__asm -fsigned-char -fomit-frame-pointer GccWarningOptions +#define DefaultCCOptions -ansi -Dasm=__asm -fsigned-char \ + -fomit-frame-pointer GccWarningOptions #else #define DefaultCCOptions -ansi -Dasm=__asm GccWarningOptions #endif @@ -186,13 +192,13 @@ # define OptimizedCDebugFlags -O2 # if defined(SparcArchitecture) || defined(AlphaArchitecture) # define ServerOSDefines -DDDXOSINIT -# else -# ifdef Arm32Architecture +# elif defined(Arm32Architecture) # define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -# else +# elif defined(PpcArchitecture) +# define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -DDDXOSINIT +# else # define ServerOSDefines /**/ # endif -# endif # define ServerExtraSysLibs /**/ #endif #ifdef i386Architecture @@ -206,23 +212,26 @@ # define XFree86ConsoleDefines -DPCCONS_SUPPORT -DPCVT_SUPPORT # endif # endif -#else -# if defined(SparcArchitecture) -# define ServerExtraDefines XFree86ServerDefines -# else -# if defined(AlphaArchitecture) -# define ServerExtraDefines GccGasOption -D_XSERVER64 +#elif defined(SparcArchitecture) +# if defined(Sparc64Architecture) +# define ServerExtraDefines XFree86ServerDefines -D_XSERVER64 # else -# ifdef Arm32Architecture -# define ServerExtraDefines GccGasOption XFree86ServerDefines -# ifndef XFree86ConsoleDefines -# define XFree86ConsoleDefines -DPCCONS_SUPPORT -# endif -# else -# define ServerExtraDefines GccGasOption +# define ServerExtraDefines XFree86ServerDefines # endif -# endif -#endif +#elif defined(AlphaArchitecture) +# define ServerExtraDefines GccGasOption -D_XSERVER64 +#elif defined(Arm32Architecture) +# define ServerExtraDefines GccGasOption XFree86ServerDefines +# ifndef XFree86ConsoleDefines +# define XFree86ConsoleDefines -DPCCONS_SUPPORT +# endif +#elif defined(PpcArchitecture) +# define ServerExtraDefines GccGasOption XFree86ServerDefines +# ifndef XFree86ConsoleDefines +# define XFree86ConsoleDefines -DWSCONS_SUPPORT +# endif +#else +# define ServerExtraDefines GccGasOption #endif #define StandardDefines -DCSRG_BASED @@ -268,6 +277,9 @@ #define HasFlex YES +/* NetBSD doesn't have gperf in the base install */ +#define DontRebuildGperfOutput YES + /* * NetBSD doesn't have perl in default system * you may override this in host.def if you installed perl from the packages @@ -277,6 +289,14 @@ #endif /* + * NetBSD doesn't have gperf in default system + * you may override this in host.def if you installed perl from the packages + */ +#ifndef HasGperf +#define HasGperf NO +#endif + +/* * Make & install Features */ #define HasBsdMake YES @@ -314,16 +334,38 @@ # endif # endif +/* + * Builtin MTRR support (NetBSD 1.5Y and up) + */ +# if ((OSMajorVersion > 1) || \ + (OSMajorVersion == 1 && OSMinorVersion >= 6) || \ + (OSMajorVersion == 1 && OSMinorVersion == 5 && \ + OSTeenyVersion >= 25)) +# define HasMTRRBuiltin YES +# else /* - * MTRR support is provided by the Aperture driver + * MTRR support provided by the Aperture driver */ -# if HasNetBSDApertureDriver -# ifndef HasMTRRSupport -# define HasMTRRSupport YES +# if HasNetBSDApertureDriver +# ifndef HasMTRRSupport +# define HasMTRRSupport YES +# endif # endif -# endif +# endif /* MTRRBuiltin */ #endif /* i386Architecture */ +/* + * agpgart support (NetBSD 1.5Y and up) + */ +#if ((OSMajorVersion > 1) || \ + (OSMajorVersion == 1 && OSMinorVersion >= 6) || \ + (OSMajorVersion == 1 && OSMinorVersion == 5 && \ + OSTeenyVersion >= 25)) +# ifndef HasAgpGart +# define HasAgpGart YES +# endif +#endif + #ifndef HasCookieMaker # if OSMajorVersion == 1 && OSMinorVersion >= 5 || OSMajorVersion >= 2 /* NetBSD 1.5 and later have /dev/urandom */ @@ -335,6 +377,7 @@ # endif #endif + /* * ForceSubdirs - force make to build subdirectories * @@ -469,7 +512,7 @@ #include #endif /* HasSharedLibraries */ -#if defined(i386Architecture) || defined(Arm32Architecture) +#if defined(i386Architecture) || defined(Arm32Architecture) || defined(PpcArchitecture) # include #endif @@ -522,6 +565,22 @@ #define BuildServer NO /* Build the shared XDM greeter on Alph if it supports shared libs */ #define SharedLibXdmGreet HasSharedLibraries +#endif + +/* + * Definition for compile on macppc machines + */ +#ifdef PpcArchitecture + +# define OptimizedCDebugFlags -O2 +# define XkbServerDefines -DXKB_ALWAYS_USES_SOFT_REPEAT + +# ifndef DoLoadableServer +# define DoLoadableServer YES +# endif + +# define UseElfFormat YES + #endif /* Index: xc/config/cf/OpenBSD.cf diff -u xc/config/cf/OpenBSD.cf:3.54 xc/config/cf/OpenBSD.cf:3.66 --- xc/config/cf/OpenBSD.cf:3.54 Sun Apr 22 12:28:18 2001 +++ xc/config/cf/OpenBSD.cf Thu Jan 3 11:33:49 2002 @@ -1,4 +1,4 @@ -XCOMM platform: $XFree86: xc/config/cf/OpenBSD.cf,v 3.54 2001/04/22 16:28:18 herrb Exp $ +XCOMM platform: $XFree86: xc/config/cf/OpenBSD.cf,v 3.66 2002/01/03 16:33:49 tsi Exp $ XCOMM #ifndef OSName @@ -50,16 +50,11 @@ #define HasShm YES #define HasWChar32 YES #define HasMkstemp YES +#define HasSetProcTitle YES #define HasZlib YES #ifndef HasKrbIV #define HasKrbIV YES #endif -#define HasDlopen YES -#ifndef PpcArchitecture -# define DlLibrary /**/ -#else -# define DlLibrary -ldl -#endif #define HasUsableFileMmap YES #define HasNCurses YES @@ -86,6 +81,35 @@ # endif #endif +/* OpenBSD >= 2.8 has setusercontext() */ +#if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion > 7) +#define HasSetUserContext YES +#endif + +/* OpenBSD after 2.9 has BSD authentication */ +#if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 9) +# define HasBSDAuth YES +#endif + +/* OpenBSD 3.0 has APM with kqueue interface */ +#if OSMajorVersion >= 3 +# define HasApmKqueue YES +#endif + +/* OpenBSD 3.0 has libusb, next versions have libusbhid */ +#if OSMajorVersion >= 3 +# define HasLibUsb YES +# ifndef HasLibUsbHid +# if OSMajorVersion == 3 && OsMinorVersion > 0 || OSMajorVersion > 3 +# define HasLibUsbHid YES +# define UsbHidLib -lusbhid +# else +# define HasLibUsbHid NO +# define UsbHidLib -lusb +# endif +# endif +#endif + /* * Compiler Features */ @@ -115,7 +139,8 @@ #define DefaultCCOptions /**/ #else # ifdef PpcArchitecture -# define DefaultCCOptions -ansi -fsigned-char -Dasm=__asm GccWarningOptions +# define DefaultCCOptions -ansi -fsigned-char -Dasm=__asm \ + GccWarningOptions # else # define DefaultCCOptions -ansi -Dasm=__asm GccWarningOptions # endif @@ -137,6 +162,9 @@ #define HasFlex YES +/* OpenBSD doesn't have gperf in the base install */ +#define DontRebuildGperfOutput YES + /* * Make & install Features */ @@ -302,29 +330,34 @@ #ifdef AlphaArchitecture # define OptimizedCDebugFlags -O2 -# define ServerOSDefines -DDDXOSINIT -# define ServerExtraDefines GccGasOption -D_XSERVER64 -DXFree86Server # define HasWeakSymbols NO -# if (OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 9)) +# if (OSMajorVersion >= 3) # define UseElfFormat YES -# endif -# if 1 +# else # define HasSharedLibraries NO # define SharedLibXThrStub NO -# else /* NOT YET */ -# define HasSharedLibraries YES # endif - # define XF86Server NO + +/* Definitions for building the XFree86 server */ +# if XF86Server +# define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -DDDXOSINIT +# define ServerExtraDefines GccGasOption -D_XSERVER64 XFree86ServerDefines +# ifndef DoLoadableServer +# define DoLoadableServer YES +# endif +# ifndef XFree86ConsoleDefines +# define XFree86ConsoleDefines -DWSCONS_SUPPORT +# endif -# define BuildDPMSLibrary NO -# define BuildDPMSExt NO +# endif /* XF86Server */ -# define BuildXF86DGALibrary NO -# define BuildXF86DGA NO +/* FreeType2 don't work on 64bit machines */ +# define BuildFreetype2Library NO +# define BuildXftLibrary NO # include @@ -380,7 +413,7 @@ /* A hack to work around an optimization problem with gcc 2.95.2 */ -# if OSMajorVersion == 2 && OSMinorVersion >= 6 +# if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 6) # define GccOptBug295 # endif @@ -581,33 +614,35 @@ # endif # ifndef XF86Server -# define XF86Server NO +# define XF86Server YES # endif /* Definitions for building the XFree86 server */ # if XF86Server # define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -DDDXOSINIT # define ServerExtraDefines GccGasOption XFree86ServerDefines -# if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 8) -# ifndef DoLoadableServer -# define DoLoadableServer YES -# endif -# define DevelDrivers cirrus ati - /* Support for USB Mices */ -# define UsbMouseSupport YES -# include - -# else /* 2.7 and earlier */ -# include -# ifndef BuildServer -# define BuildServer NO -# endif +# ifndef DoLoadableServer +# define DoLoadableServer YES +# endif +# ifndef XF86CardDrivers +# define XF86CardDrivers ati mga glint s3virge sis savage\ + trident chips tdfx \ + DevelDrivers vga \ + XF86OSCardDrivers XF86ExtraCardDrivers +# endif +# ifndef DevelDrivers +# define DevelDrivers nv +# endif -# define HasSharedLibraries NO -# define BuildDynamicLoading NO + /* Support for USB Mices */ +# ifndef UsbMouseSupport +# define UsbMouseSupport YES # endif + # endif /* XF86Server */ +# include + #endif /* PpcArchitecture */ /* @@ -646,6 +681,32 @@ #endif /* SparcArchitecture */ +/* + * Definitions for the sparc64 architecture + */ + +#ifdef Sparc64Architecture + +# define OptimizedCDebugFlags -O2 + +# define HasWeakSymbols NO +# define UseElfFormat YES + +# ifndef XF86Server +# define XF86Server NO +# endif + +# define ServerExtraDefines GccGasOption -D_XSERVER64 XFree86ServerDefines +# define ServerOSDefines XFree86ServerOSDefines -DDDXTIME + +/* FreeType2 don't work on 64bit machines */ +# define BuildFreetype2Library NO +# define BuildXftLibrary NO + +# include + +#endif /* Sparc64Architecture */ + /* End or architecture specific section */ /* @@ -743,6 +804,19 @@ # define OSBinaryType [ELF] # else # define OSBinaryType /**/ +# endif +#endif + +#ifndef HasDlopen +# define HasDlopen YES +#endif + +#ifndef DlLibrary +# if (OSMajorVersion < 3 || OSMajorVersion == 3 && OsMinorVersion == 0)\ + && UseElfFormat +# define DlLibrary -ldl +# else +# define DlLibrary /**/ # endif #endif Index: xc/config/cf/OpenBSDLib.rules diff -u xc/config/cf/OpenBSDLib.rules:1.1 xc/config/cf/OpenBSDLib.rules:1.3 --- xc/config/cf/OpenBSDLib.rules:1.1 Mon Nov 6 14:24:00 2000 +++ xc/config/cf/OpenBSDLib.rules Thu Jan 17 18:29:05 2002 @@ -7,7 +7,7 @@ * OpenBSD shared library rules */ -XCOMM $XFree86: xc/config/cf/OpenBSDLib.rules,v 1.1 2000/11/06 19:24:00 dawes Exp $ +XCOMM $XFree86: xc/config/cf/OpenBSDLib.rules,v 1.3 2002/01/17 23:29:05 dawes Exp $ #ifndef UseElfFormat #define UseElfFormat NO @@ -160,3 +160,4 @@ clean:: @@\ RemoveFile(module) #endif /* DynamicModuleTarget */ + Index: xc/config/cf/QNX4.cf diff -u xc/config/cf/QNX4.cf:1.3 xc/config/cf/QNX4.cf:1.4 --- xc/config/cf/QNX4.cf:1.3 Fri Jul 7 16:06:56 2000 +++ xc/config/cf/QNX4.cf Mon Jan 7 15:38:18 2002 @@ -1,15 +1,11 @@ -XCOMM platform: $XFree86: xc/config/cf/QNX4.cf,v 1.3 2000/07/07 20:06:56 tsi Exp $ +XCOMM platform: $XFree86: xc/config/cf/QNX4.cf,v 1.4 2002/01/07 20:38:18 dawes Exp $ #define StripInstalledPrograms NO #define BuildServer YES #define DoLoadableServer NO /* sorry, are u listenning QSSL? */ #define BuildLBX YES /* For now */ #define ExpandManNames YES -XCOMM you can only one space (or tab) between ByteOrder and X_LITTLE_ENDIAN -XCOMM or you will have -DX_BYTE_ORDER= X_LITTLE_ENDIAN -XCOMM instead of -DX_BYTE_ORDER=X_LITTLE_ENDIAN -XCOMM in the generated Makefile -#define ByteOrder X_LITTLE_ENDIAN +#define ByteOrder X_LITTLE_ENDIAN #ifndef OSName #define OSName QNX4 @@ -34,7 +30,11 @@ #undef ArCmd #define ArCmd wlib -b -c -p=256 #define MkdirHierCmd mkdir -p -#define InstallCmd /usr/X11R6/bin/install.qnx +#ifdef UseInstalled +#define InstallCmd install +#else +#define InstallCmd $(SHELL) $(CONFIGSRC)/util/install.sh +#endif #define DefaultCCOptions -5s -Otx -Wc,-r -b -j -Wc,-ei -N128000 -zp4 -mf #define LibraryCCOptions -5s -Otx -Wc,-r -b -j -Wc,-ei -zp4 -mf @@ -43,7 +43,7 @@ #define ExtraLibraries -lsocket -lunix #define CLibrary #define PosixLibraries -#define ConnectionFlags -DTCPCONN +#define ConnectionFlags -DUNIXCONN -DTCPCONN #define CppCmd /usr/X11R6/bin/cpp #define HasShadowPasswd YES @@ -54,6 +54,14 @@ #define HasPutenv YES #define HasCbrt NO #define HasVarDirectory NO +#define HasSnprintf YES +#define HasBSD44Sockets YES +#define HasPerl NO +#define LogDirectory /usr/adm +#define XLogFile XFree86 + +#define BuildHtmlManPages NO /* We don't want HTML manpages */ +#define BuildRman NO #define AvoidNullMakeCommand YES #define CompressAllFonts YES @@ -68,6 +76,8 @@ #define NeedWidePrototypes NO #endif +#define LexCmd flex -l +#define LexLib -lfl #define TermcapLibrary -lncurses #ifndef UseStaticTermcapLib #define UseStaticTermcapLib NO Index: xc/config/cf/QNX4.rules diff -u xc/config/cf/QNX4.rules:1.1 xc/config/cf/QNX4.rules:1.2 --- xc/config/cf/QNX4.rules:1.1 Sun Dec 26 19:45:43 1999 +++ xc/config/cf/QNX4.rules Mon Jan 7 15:38:18 2002 @@ -1,4 +1,4 @@ -XCOMM platform: $XFree86: xc/config/cf/QNX4.rules,v 1.1 1999/12/27 00:45:43 robin Exp $ +XCOMM platform: $XFree86: xc/config/cf/QNX4.rules,v 1.2 2002/01/07 20:38:18 dawes Exp $ XCOMM Rules to work around wlib for QNX... @@ -13,16 +13,6 @@ clean:: @@\ RemoveFile(tofile) -XCOMM This special rule is used to install the install script. -XCOMM Else there's a name conflict with the QNX installer. - -#define QNXCopyInstaller(tofile, fromfile) @@\ -tofile:: @@\ - $(CP) fromfile tofile @@\ - @@\ -includes:: tofile - - #define ObjectFromSpecialSource(dst, src, flags) @@\ NoConfigRec(dst.c) @@\ @@\ @@ -58,13 +48,16 @@ /* This is the rule to make reloc. OMF objects. We use a little * trick which works only for OMF.... + * "catomf" can be downloaded from + * http://prdownloads.sourceforge.net/openqnx/catomf.tar.gz + * or contact Rick Lake */ #define NormalRelocatableTarget(objname,objlist) @@\ AllTarget(objname.Osuf) @@\ @@\ objname.Osuf: objlist $(EXTRALIBRARYDEPS) @@\ RemoveFile($@) @@\ - /bin/cat objlist > $@ + /usr/local/bin/catomf -O $@ objlist Index: xc/config/cf/README diff -u xc/config/cf/README:1.13 xc/config/cf/README:1.15 --- xc/config/cf/README:1.13 Wed Jan 17 11:22:30 2001 +++ xc/config/cf/README Sat Sep 29 13:38:41 2001 @@ -3,7 +3,7 @@ -$XFree86: xc/config/cf/README,v 1.13 2001/01/17 16:22:30 dawes Exp $ +$XFree86: xc/config/cf/README,v 1.15 2001/09/29 17:38:41 herrb Exp $ The easiest way to write an Imakefile is to find another one that does something similar and copy/modify it! @@ -76,6 +76,7 @@ HasPurify boolean for system has Purify HasPutenv boolean for libc has putenv() HasSecureRPC boolean for Sun Secure RPC + HasSetProcTitle boolean for setproctitle() HasSetUserContext boolean for setusercontext() HasSentinel boolean for system has Sentinel available HasSharedLibraries boolean for system has shared libraries @@ -446,6 +447,16 @@ 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: + + ProjectRoot The directory under which the installation + will operate. This value will be hard coded + into some programs. As a result do not use it + to specify the installation directory for a + cross compiled system, use DESTDIR to + accomplish that task. + The following variables are used by some part of the tree: AckToolset programs/Xserver/hw/xfree86 @@ -546,7 +557,9 @@ DESTDIR directory under which "make install" should install instead of "/"; used only for testing - "make install" rules. + "make install" rules, binary package building, + and specifying alternative installation directories + for cross compiles. FILE file for "lint1" target to run lint on. CDEBUGFLAGS -g and/or -O flag to control C compiler optimization. CXXDEBUGFLAGS -g and/or -O flag to control C++ optimization. Index: xc/config/cf/X11.tmpl diff -u xc/config/cf/X11.tmpl:1.115.2.3 xc/config/cf/X11.tmpl:1.141 --- xc/config/cf/X11.tmpl:1.115.2.3 Thu May 31 22:24:14 2001 +++ xc/config/cf/X11.tmpl Tue Jan 15 17:55:26 2002 @@ -5,7 +5,7 @@ XCOMM XCOMM XCOMM -XCOMM $XFree86: xc/config/cf/X11.tmpl,v 1.115.2.3 2001/06/01 02:24:14 dawes Exp $ +XCOMM $XFree86: xc/config/cf/X11.tmpl,v 1.141 2002/01/15 22:55:26 herrb Exp $ /*************************************************************************** * * @@ -41,7 +41,7 @@ /* X.Org release string */ #ifndef XOrgReleaseString -#define XOrgReleaseString Release 6.5 +#define XOrgReleaseString Release 6.6 #endif #ifndef XOrgManNameString @@ -66,7 +66,7 @@ VENDORMANVERSION = XVendorManVersionString #ifndef VendorManDefs -#define VendorManDefs -D__vendorversion__='"$(VENDORMANVERSION)" "$(VENDORMANNAME)"' +#define VendorManDefs -D__vendorversion__="$(VENDORMANVERSION) $(VENDORMANNAME)" #endif /* @@ -90,6 +90,9 @@ #ifndef BuildLibraries #define BuildLibraries (!BuildServersOnly || BuildClients) #endif +#ifndef BuildLibrariesForXServers +#define BuildLibrariesForXServers BuildServer +#endif #ifndef BuildFontServer #define BuildFontServer YES #endif @@ -132,9 +135,12 @@ #ifndef BuildCIDFonts #define BuildCIDFonts YES #endif +#ifndef BuildTrueTypeFonts +#define BuildTrueTypeFonts YES +#endif /* Not used now */ #ifndef BuildLatin2Fonts -#define BuildLatin2Fonts YES +#define BuildLatin2Fonts NO #endif #ifndef BuildCyrillicFonts #define BuildCyrillicFonts YES @@ -232,6 +238,21 @@ #ifndef BuildXAServer #define BuildXAServer (HasXAServer & HasCplusplus) #endif +#ifndef BuildX11Lib +#define BuildX11Lib (BuildLibraries || (BuildLibrariesForXServers && XnestServer)) +#endif +#ifndef BuildLoadableXlibI18n +#define BuildLoadableXlibI18n (HasDlopen && SharedLibX11) +#endif +#ifndef BuildXextLib +#define BuildXextLib (BuildLibraries || (BuildLibrariesForXServers && XnestServer)) +#endif +#ifndef BuildXauLib +#define BuildXauLib (BuildLibraries || BuildLibrariesForXServers) +#endif +#ifndef BuildXdmcpLib +#define BuildXdmcpLib (BuildLibraries || BuildLibrariesForXServers) +#endif #ifndef BuildMITMiscExt #define BuildMITMiscExt YES #endif @@ -280,12 +301,38 @@ #ifndef BuildDPMS #define BuildDPMS YES #endif +#ifndef BuildFontLib +#if !defined(XF86Server) || !XF86Server +#define BuildFontLib (BuildLibraries || BuildServer) +#else +#define BuildFontLib (BuildLibraries || \ + (BuildServer && !DoLoadableServer) || \ + XnestServer || XVirtualFramebufferServer || \ + XprtServer || KDriveXServer) +#endif +#endif #ifndef BuildFontCache #define BuildFontCache YES #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 BuildLowMem #define BuildLowMem NO #endif @@ -315,6 +362,16 @@ #ifndef BuildXKBuilib #define BuildXKBuilib (BuildXKB && !BuildServersOnly) #endif +#ifndef BuildXKBfilelib +#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 * between many clients (such as xterm) and pre-XKB shared @@ -406,8 +463,23 @@ #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 +#if BuildGlxExt && !defined(XFree86Version) +#undef BuildXF86DRI +#undef BuildXF86DRM +#undef BuildXF86DRIDriverSupport +#define BuildXF86DRI NO +#define BuildXF86DRM NO +#define BuildXF86DRIDriverSupport NO +#endif #endif #ifndef BuildGLXLibrary #define BuildGLXLibrary (BuildGlxExt && !BuildServersOnly) @@ -415,6 +487,9 @@ #ifndef BuildGLULibrary #define BuildGLULibrary (BuildGLXLibrary && HasCplusplus) #endif +#ifndef BuildGLwLibrary +#define BuildGLwLibrary (BuildGlxExt || BuildGLXLibrary) +#endif #ifndef BuildXF86RushExt #define BuildXF86RushExt NO #endif @@ -452,6 +527,13 @@ #define BuildFreetype2Library (UseFreetype2 && !HasFreetype2) #endif +#ifndef BuildRandR +#define BuildRandR NO +#endif +#ifndef BuildRandRLibrary +#define BuildRandRLibrary !BuildServersOnly +#endif + #ifndef BuildMiscDocs #define BuildMiscDocs NO #endif @@ -658,6 +740,13 @@ #define XTestDefines /**/ #endif #endif +#ifndef XTrapDefines +#if BuildXTrap +#define XTrapDefines -DXTRAP +#else +#define XTrapDefines /**/ +#endif +#endif #ifndef XSyncDefines #if BuildSyncExt #define XSyncDefines -DXSYNC @@ -843,6 +932,14 @@ #endif #endif +#ifndef XvMCExtensionDefines +#if BuildXvMCExt +#define XvMCExtensionDefines -DXVMC +#else +#define XvMCExtensionDefines /**/ +#endif +#endif + #ifndef RECORDDefines #if BuildRECORD #define RECORDDefines -DXRECORD @@ -899,6 +996,14 @@ #endif #endif +#ifndef RandRDefines +#if BuildRandR +#define RandRDefines -DRANDR +#else +#define RandRDefines /**/ +#endif +#endif + #ifndef FontCacheExtentionDefines #if BuildFontCache #define FontCacheExtensionDefines -DFONTCACHE @@ -916,18 +1021,18 @@ XCSecurityDefines CupDefines PervasiveDBEDefines \ XF86BigfontExtensionDefines DPMSDefines \ LowMemDefines XprintDefines XineramaDefines \ - SitePervasiveExtensionDefines RenderDefines + SitePervasiveExtensionDefines RenderDefines RandRDefines #endif #ifndef SiteExtensionDefines #define SiteExtensionDefines /**/ #endif #ifndef BaseExtensionDefines #define BaseExtensionDefines \ - MultibufferDefines MITMiscDefines XTestDefines XSyncDefines \ - XCMiscDefines RECORDDefines \ + MultibufferDefines MITMiscDefines XTestDefines XTrapDefines \ + XSyncDefines XCMiscDefines RECORDDefines \ PexDefines ShmDefines XieDefines BigReqDefines VidModeExtensionDefines \ XF86MiscExtensionDefines DBEDefines DPMSDefines EVIDefines \ - ScreenSaverExtensionDefines XvExtensionDefines \ + ScreenSaverExtensionDefines XvExtensionDefines XvMCExtensionDefines \ GlxDefines FontCacheExtensionDefines SiteExtensionDefines #endif #define ExtensionDefines BaseExtensionDefines ExtensionOSDefines @@ -1057,7 +1162,7 @@ #define XTrueTypeCConvIncDir $(INCROOT)/X11/fonts/codeconv #endif #ifndef XTrueTypeInstallCConvHeaders -#define XTrueTypeInstallCConvHeaders YES +#define XTrueTypeInstallCConvHeaders BuildLibraries #endif #ifndef XTrueTypeCConvModuleDir #define XTrueTypeCConvModuleDir $(USRLIBDIR)/modules @@ -1355,9 +1460,9 @@ UCSMAPPREFIX = $(FONTDIR)/util/map- #else RGB = $(CLIENTENVSETUP) $(XBUILDBINDIR)/rgb - FONTC = $(CLIENTENVSETUP) $(XBUILDBINDIR)/bdftopcf - MKFONTDIR = $(CLIENTENVSETUP) $(XBUILDBINDIR)/mkfontdir - XFTCACHE = $(CLIENTENVSETUP) XFT_CONFIG=$(XFTLIBSRC)/XftConfig $(XBUILDBINDIR)/xftcache + FONTC = $(CLIENTENVSETUP) $(PRELOADFONTSETUP) $(XBUILDBINDIR)/bdftopcf + MKFONTDIR = $(CLIENTENVSETUP) $(PRELOADFONTSETUP) $(XBUILDBINDIR)/mkfontdir + XFTCACHE = $(CLIENTENVSETUP) $(PRELOADSETUP) XFT_CONFIG=$(XFTLIBSRC)/XftConfig $(XBUILDBINDIR)/xftcache #if HasPerl MKHTMLINDEX = RunPerlScript($(CONFIGSRC)/util/mkhtmlindex.pl,) #else @@ -1423,6 +1528,13 @@ CLIENTENVSETUP = #endif +#ifdef PreloadSetup + PRELOADSETUP = PreloadSetup +#endif +#ifdef PreloadFontSetup + PRELOADFONTSETUP = PreloadFontSetup +#endif + #ifndef ShLibIncludeFile /* need this to make ANSI-style preprocessors happy */ #define ShLibIncludeFile @@ -1473,7 +1585,7 @@ XTHRSTUBLIBSRC = $(LIBSRC)/XThrStub #if SharedLibXThrStub #ifndef SharedXThrStubRev -#define SharedXThrStubRev 6.0 +#define SharedXThrStubRev 6.1 #endif SharedLibReferences(XTHRSTUB,XThrStub,$(XTHRSTUBLIBSRC),SOXTHRSTUBREV,SharedXThrStubRev) #else @@ -1571,6 +1683,21 @@ #endif #endif +#if BuildXvMCLibrary +#ifndef SharedLibXvMC +#define SharedLibXvMC NO +#endif +#ifndef NormalLibXvMC +#define NormalLibXvMC YES +#endif +#ifndef DebugLibXvMC +#define DebugLibXvMC NO +#endif +#ifndef ProfileLibXvMC +#define ProfileLibXvMC NO +#endif +#endif + #if BuildXineramaLibrary #ifndef SharedLibXinerama #define SharedLibXinerama NO @@ -1647,6 +1774,21 @@ #endif #endif +#if BuildRandRLibrary +#ifndef SharedLibXrandr +#define SharedLibXrandr HasSharedLibraries +#endif +#ifndef NormalLibXrandr +#define NormalLibXrandr YES +#endif +#ifndef DebugLibXrandr +#define DebugLibXrandr NO +#endif +#ifndef ProfileLibXrandr +#define ProfileLibXrandr NO +#endif +#endif + #if BuildGLULibrary #ifndef SharedLibGlu #define SharedLibGlu HasSharedLibraries @@ -1741,7 +1883,6 @@ XLIB = $(EXTENSIONLIB) $(XONLYLIB) LINTXLIB = $(LINTXONLYLIB) -#if BuildScreenSaverLibrary XSSLIBSRC = $(LIBSRC)/Xss #if SharedLibXss #ifndef SharedXssRev @@ -1751,9 +1892,7 @@ #else ProjectUnsharedLibReferences(XSS,Xss,$(XSSLIBSRC),XBuildLibDir) #endif -#endif -#if BuildXF86MiscLibrary XXF86MISCLIBSRC = $(LIBSRC)/Xxf86misc #if SharedLibXxf86misc #ifndef SharedXxf86miscRev @@ -1763,9 +1902,7 @@ #else ProjectUnsharedLibReferences(XXF86MISC,Xxf86misc,$(XXF86MISCLIBSRC),XBuildLibDir) #endif -#endif -#if BuildXF86VidModeLibrary XXF86VMLIBSRC = $(LIBSRC)/Xxf86vm #if SharedLibXxf86vm #ifndef SharedXxf86vmRev @@ -1775,9 +1912,7 @@ #else ProjectUnsharedLibReferences(XXF86VM,Xxf86vm,$(XXF86VMLIBSRC),XBuildLibDir) #endif -#endif -#if BuildXF86DGALibrary XXF86DGALIBSRC = $(LIBSRC)/Xxf86dga #if SharedLibXxf86dga #ifndef SharedXxf86dgaRev @@ -1787,10 +1922,8 @@ #else ProjectUnsharedLibReferences(XXF86DGA,Xxf86dga,$(XXF86DGALIBSRC),XBuildLibDir) #endif -#endif -#if BuildXF86RushLibrary XXF86RUSHLIBSRC = $(LIBSRC)/Xxf86rush #if SharedLibXxf86rush #ifndef SharedXxf86rushRev @@ -1800,10 +1933,8 @@ #else ProjectUnsharedLibReferences(XXF86RUSH,Xxf86rush,$(XXF86RUSHLIBSRC),XBuildLibDir) #endif -#endif -#if BuildXvLibrary XVLIBSRC = $(LIBSRC)/Xv #if SharedLibXv #ifndef SharedXvRev @@ -1813,9 +1944,18 @@ #else ProjectUnsharedLibReferences(XV,Xv,$(XVLIBSRC),XBuildLibDir) #endif + + + XVMCLIBSRC = $(LIBSRC)/XvMC +#if SharedLibXvMC +#ifndef SharedXvMCRev +#define SharedXvMCRev 1.0 +#endif +SharedLibReferences(XVMC,XvMC,$(XVMCLIBSRC),SOXVMCREV,SharedXvMCRev) +#else +ProjectUnsharedLibReferences(XVMC,XvMC,$(XVMCLIBSRC),XBuildLibDir) #endif -#if BuildXineramaLibrary XINERAMALIBSRC = $(LIBSRC)/Xinerama #if SharedLibXinerama #ifndef SharedXineramaRev @@ -1825,9 +1965,7 @@ #else ProjectUnsharedLibReferences(XINERAMA,Xinerama,$(XINERAMALIBSRC),XBuildLibDir) #endif -#endif -#if BuildDPSLibrary DPSLIBSRC = $(LIBSRC)/dps #if SharedLibDps #ifndef SharedDpsRev @@ -1837,9 +1975,7 @@ #else ProjectUnsharedLibReferences(DPS,dps,$(DPSLIBSRC),XBuildLibDir) #endif -#endif -#if BuildDPSTkLibrary DPSTKLIBSRC = $(LIBSRC)/dpstk #if SharedLibDpsTk #ifndef SharedDpsTkRev @@ -1849,9 +1985,7 @@ #else ProjectUnsharedLibReferences(DPSTK,dpstk,$(DPSTKLIBSRC),XBuildLibDir) #endif -#endif -#if BuildPSResLibrary PSRESLIBSRC = $(LIBSRC)/psres #if SharedLibPSRes #ifndef SharedPSResRev @@ -1861,9 +1995,7 @@ #else ProjectUnsharedLibReferences(PSRES,psres,$(PSRESLIBSRC),XBuildLibDir) #endif -#endif -#if BuildGLULibrary GLULIBSRC = $(LIBSRC)/GLU #if SharedLibGlu #ifndef SharedGluRev @@ -1873,9 +2005,7 @@ #else ProjectUnsharedLibReferences(GLU,GLU,$(GLULIBSRC),XBuildLibDir) #endif -#endif -#if BuildGLXLibrary GLXLIBSRC = $(LIBSRC)/GL #if SharedLibGlx #ifndef SharedGlxRev @@ -1894,21 +2024,27 @@ #else ProjectUnsharedLibReferences(GLW,GLw,$(GLWIDGETSRC),XBuildLibDir) #endif -#endif /* BuildGLXLibrary */ -#if BuildRenderLibrary XRENDERLIBSRC = $(LIBSRC)/Xrender #if SharedLibXrender #ifndef SharedXrenderRev -#define SharedXrenderRev 1.0 +#define SharedXrenderRev 1.1 #endif SharedLibReferences(XRENDER,Xrender,$(XRENDERLIBSRC),SOXRENDERREV,SharedXrenderRev) #else ProjectUnsharedLibReferences(XRENDER,Xrender,$(XRENDERLIBSRC),XBuildLibDir) #endif + + XRANDRRLIBSRC = $(LIBSRC)/Xrandr +#if SharedLibXrandr +#ifndef SharedXrandrRev +#define SharedXrandrRev 1.0 #endif +SharedLibReferences(XRANDR,Xrandr,$(XRANDRLIBSRC),SOXRANDRREV,SharedXrandrRev) +#else +ProjectUnsharedLibReferences(XRANDR,Xrandr,$(XRANDRLIBSRC),XBuildLibDir) +#endif -#if BuildFontCacheLib # ifndef SharedLibXfontcache # define SharedLibXfontcache NO # endif @@ -1921,6 +2057,7 @@ # ifndef ProfileLibXfontcache # define ProfileLibXfontcache NO # endif + XFONTCACHELIBSRC = $(LIBSRC)/Xfontcache #if SharedLibXfontcache #ifndef SharedXfontcacheRev @@ -1930,7 +2067,6 @@ #else ProjectUnsharedLibReferences(XFONTCACHE,Xfontcache,$(XFONTCACHELIBSRC),XBuildLibDir) #endif -#endif #ifndef SharedLibXau #define SharedLibXau NO /* don't need shared form */ @@ -2371,7 +2507,7 @@ FONTLIBSRC = $(LIBSRC)/font #if SharedLibFont #ifndef SharedFontRev -#define SharedFontRev 1.3 +#define SharedFontRev 1.4 #endif SharedFontLibReferences() XCOMM SharedLibReferences(XFONT,Xfont,$(FONTLIBSRC),SOFONTREV,SharedFontRev) @@ -2385,6 +2521,29 @@ DEPFONTLIB = $(DEPXFONTLIB) $(DEPFONTSTUBLIB) FONTLIB = $(XFONTLIB) $(FONTSTUBLIB) + +#ifndef SharedLibFontEnc +#define SharedLibFontEnc NO +#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,fontenc,$(FONTENCLIBSRC),SOFONTENCREV,SharedFontEncRev) +#else +ProjectUnsharedLibReferences(XFONTENC,fontenc,$(FONTENCLIBSRC),XBuildLibDir) +#endif + #ifndef SharedLibXpm #define SharedLibXpm HasSharedLibraries #endif @@ -2420,9 +2579,19 @@ #define ProfileLibFreetype2 NO #endif FREETYPE2LIBSRC = $(LIBSRC)/freetype2 + +/* FreeType 2.0.6, version_info 8:0:2 */ +#ifndef Freetype2Version +#define Freetype2Version 8.0.2 +#endif + #if SharedLibFreetype2 #ifndef SharedFreetype2Rev -#define SharedFreetype2Rev 6.0 +#if LibtoolMinorVersions +#define SharedFreetype2Rev 6.2 +#else +#define SharedFreetype2Rev 8.0 +#endif #endif SharedLibReferences(FREETYPE2,freetype,$(FREETYPE2LIBSRC),SOFREETYPE2REV,SharedFreetype2Rev) #else @@ -2476,7 +2645,7 @@ XFTLIBSRC = $(LIBSRC)/Xft #if SharedLibXft #ifndef SharedXftRev -#define SharedXftRev 1.0 +#define SharedXftRev 1.1 #endif SharedLibReferences(XFT,Xft,$(XFTLIBSRC),SOXFTREV,SharedXftRev) #else @@ -2530,7 +2699,11 @@ XKBCOMPCMD = $(BINDIR)/XkbComp #else XKBCOMPSRC = $(PROGRAMSRC)/XkbComp - XKBCOMPCMD = $(CLIENTENVSETUP) $(XBUILDBINDIR)/XkbComp +#if CrossCompiling + XKBCOMPCMD = $(PROGRAMSRC)/XkbComp/cross/XkbComp +#else + XKBCOMPCMD = $(CLIENTENVSETUP) $(PRELOADSETUP) $(XBUILDBINDIR)/XkbComp +#endif #endif #else /* !BuildXKBlib */ #ifndef XkbClientDepLibs @@ -2541,7 +2714,6 @@ #endif #endif /* BuildXKBlib */ -#if BuildXKBuilib XKBUILIBSRC = $(LIBSRC)/xkbui ProjectUnsharedLibReferences(XKBUI,xkbui,$(XKBUILIBSRC),XBuildLibDir) #ifndef XkbuiLibs @@ -2550,14 +2722,6 @@ #ifndef XkbuiDepLibs #define XkbuiDepLibs $(DEPXKBFILELIB) #endif -#else /* !BuildXKBuilib */ -#ifndef XkbuiLibs -#define XkbuiLibs -#endif -#ifndef XkbuiDepLibs -#define XkbuiDepLibs -#endif -#endif /* BuildXKBuilib */ #ifndef XawClientDepLibs #define XawClientDepLibs $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXPMLIB) $(DEPXLIB) @@ -2566,6 +2730,28 @@ #define XawClientLibs $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XPMLIB) $(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,XTrap,$(XTRAPLIBSRC),SOXTRAPREV,SharedXTrapRev) +#else +ProjectUnsharedLibReferences(XTRAP,XTrap,$(XTRAPLIBSRC),XBuildLibDir) +#endif + #ifndef NeedDefaultDepLibs #define NeedDefaultDepLibs YES #endif @@ -2830,7 +3016,7 @@ @(E=; for i in dirlist; do \ @@\ E="$$E -e $$i"; done; \ @@\ set -x; \ @@\ - RunProgram(MKFONTDIR, -r -p inst/ $$E .)) @@\ + RunProgram(MKFONTDIR, -n -r -p inst/ $$E .)) @@\ @@\ clean:: @@\ RemoveFiles(fonts.dir encodings.dir) Index: xc/config/cf/bsdLib.rules diff -u xc/config/cf/bsdLib.rules:3.15.2.1 xc/config/cf/bsdLib.rules:3.18 --- xc/config/cf/bsdLib.rules:3.15.2.1 Thu May 24 12:35:38 2001 +++ xc/config/cf/bsdLib.rules Thu Jan 17 18:29:05 2002 @@ -4,7 +4,7 @@ -XCOMM $XFree86: xc/config/cf/bsdLib.rules,v 3.15.2.1 2001/05/24 16:35:38 dawes Exp $ +XCOMM $XFree86: xc/config/cf/bsdLib.rules,v 3.18 2002/01/17 23:29:05 dawes Exp $ /* * NetBSD/FreeBSD shared library rules */ @@ -416,5 +416,6 @@ #endif #endif + #endif /* UseElfFormat */ Index: xc/config/cf/bsdLib.tmpl diff -u xc/config/cf/bsdLib.tmpl:3.8.2.1 xc/config/cf/bsdLib.tmpl:3.9 --- xc/config/cf/bsdLib.tmpl:3.8.2.1 Thu May 24 12:35:38 2001 +++ xc/config/cf/bsdLib.tmpl Thu May 24 12:34:49 2001 @@ -1,5 +1,5 @@ XCOMM $Xorg: bsdLib.tmpl,v 1.3 2000/08/17 19:41:47 cpqbld Exp $ -XCOMM $XFree86: xc/config/cf/bsdLib.tmpl,v 3.8.2.1 2001/05/24 16:35:38 dawes Exp $ +XCOMM $XFree86: xc/config/cf/bsdLib.tmpl,v 3.9 2001/05/24 16:34:49 dawes Exp $ /* * NetBSD/FreeBSD/OpenBSD shared library template Index: xc/config/cf/cross.rules diff -u xc/config/cf/cross.rules:1.2 xc/config/cf/cross.rules:1.6 --- xc/config/cf/cross.rules:1.2 Fri Dec 8 22:33:18 2000 +++ xc/config/cf/cross.rules Thu Nov 15 18:15:55 2001 @@ -1,21 +1,25 @@ -XCOMM $XFree86: xc/config/cf/cross.rules,v 1.2 2000/12/09 03:33:18 dawes Exp $ +XCOMM $XFree86: xc/config/cf/cross.rules,v 1.6 2001/11/15 23:15:55 alanh Exp $ -#define HostLinkRule(target, flags, src, libs) cc -I$(BUILDINCDIR) -o target src +#ifndef HostCcCmd +#define HostCcCmd cc +#endif +#define HostLinkRule(target, flags, src, libs) HostCcCmd -I$(BUILDINCDIR) -o target src libs + /* ComplexHostProgramTarget - Compile a program such that we can run * it on this host, i.e., don't use the default cross compiler. */ #ifndef ComplexHostProgramTarget #define ComplexHostProgramTarget(program) @@\ - CC=cc @@\ + CC=HostCcCmd @@\ STD_INCLUDES= @@\ CFLAGS=$(TOP_INCLUDES) $(INCLUDES) $(BOOTSTRAPCFLAGS) @@\ EXTRA_LOAD_FLAGS= @@\ PROGRAM = program @@\ @@\ -AllTarget(program) @@\ +AllTarget(HostProgramTargetName(program)) @@\ @@\ -program: $(OBJS) $(DEPLIBS) @@\ +HostProgramTargetName(program): $(OBJS) $(DEPLIBS) @@\ RemoveTargetProgram($@) @@\ HostLinkRule($@,$(_NOOP_),$(OBJS),$(DEPLIBS) $(LOCAL_LIBRARIES)) @@\ @@\ @@ -24,22 +28,23 @@ LintTarget() @@\ @@\ clean:: @@\ - RemoveFile(ProgramTargetName(program)) + RemoveFile(HostProgramTargetName(program)) #endif /* ComplexHostProgramTarget */ + #ifndef SimpleHostProgramTarget #define SimpleHostProgramTarget(program) @@\ SRCS = program.c @@\ @@\ - CC=cc @@\ + CC=HostCcCmd @@\ STD_INCLUDES= @@\ CFLAGS=$(TOP_INCLUDES) $(INCLUDES) $(BOOTSTRAPCFLAGS) @@\ EXTRA_LOAD_FLAGS= @@\ PROGRAM = program @@\ @@\ -AllTarget(program) @@\ +AllTarget(HostProgramTargetName(program)) @@\ @@\ -program: program.o $(DEPLIBS) @@\ +HostProgramTargetName(program): program.o $(DEPLIBS) @@\ RemoveTargetProgram($@) @@\ HostLinkRule($@,$(_NOOP_),program.o,$(DEPLIBS) $(LOCAL_LIBRARIES)) @@\ @@\ @@ -48,5 +53,89 @@ LintTarget() @@\ @@\ clean:: @@\ - RemoveFile(ProgramTargetName(program)) + RemoveFile(HostProgramTargetName(program)) #endif /* SimpleHostProgramTarget */ + +#ifndef SimpleHostProgramTarget_1 +#define SimpleHostProgramTarget_1(program) @@\ + SRCS = program.c @@\ + @@\ + CC=cc @@\ + STD_INCLUDES= @@\ + CFLAGS=$(TOP_INCLUDES) $(INCLUDES) $(BOOTSTRAPCFLAGS) @@\ +EXTRA_LOAD_FLAGS= @@\ + PROGRAM = program @@\ + @@\ +AllTarget(HostProgramTargetName(program)) @@\ + @@\ +HostProgramTargetName(program): program.o $(DEPLIBS) @@\ + RemoveTargetProgram($@) @@\ + HostLinkRule($@,$(_NOOP_),program.o,$(DEPLIBS) $(LOCAL_LIBRARIES)) @@\ + @@\ +DependTarget() @@\ +LintTarget() @@\ + @@\ +clean:: @@\ + RemoveFile(HostProgramTargetName(program)) +#endif /* SimpleHostProgramTarget_1 */ + + +#ifndef SimpleHostProgramTarget_2 +#define SimpleHostProgramTarget_2(program) @@\ + SRCS = program.c @@\ + @@\ + CC=cc @@\ + STD_INCLUDES= @@\ + CFLAGS=$(TOP_INCLUDES) $(INCLUDES) $(BOOTSTRAPCFLAGS) @@\ +EXTRA_LOAD_FLAGS= @@\ + PROGRAM = program @@\ + @@\ +AllTarget(HostProgramTargetName(program)) @@\ + @@\ +HostProgramTargetName(program): program.o $(DEPLIBS) @@\ + RemoveTargetProgram($@) @@\ + HostLinkRule($@,$(_NOOP_),program.o,$(DEPLIBS) $(LOCAL_LIBRARIES)) @@\ + @@\ +clean:: @@\ + RemoveFile(HostProgramTargetName(program)) +#endif /* SimpleHostProgramTarget_2 */ + +#ifndef SimpleHostProgramTarget_3 +#define SimpleHostProgramTarget_3(program) @@\ + SRCS = program.c @@\ + @@\ + CC=cc @@\ + STD_INCLUDES= @@\ + CFLAGS=$(TOP_INCLUDES) $(INCLUDES) $(BOOTSTRAPCFLAGS) @@\ +EXTRA_LOAD_FLAGS= @@\ + PROGRAM = program @@\ + @@\ +AllTarget(HostProgramTargetName(program)) @@\ + @@\ +HostProgramTargetName(program): program.o $(DEPLIBS) @@\ + RemoveTargetProgram($@) @@\ + HostLinkRule($@,$(_NOOP_),program.o,$(DEPLIBS) $(LOCAL_LIBRARIES)) @@\ + @@\ +clean:: @@\ + RemoveFile(HostProgramTargetName(program)) +#endif /* SimpleHostProgramTarget_3 */ + +#ifndef SimpleHostProgramTarget_4 +#define SimpleHostProgramTarget_4(program) @@\ + SRCS = program.c @@\ + @@\ + CC=cc @@\ + STD_INCLUDES= @@\ + CFLAGS=$(TOP_INCLUDES) $(INCLUDES) $(BOOTSTRAPCFLAGS) @@\ +EXTRA_LOAD_FLAGS= @@\ + PROGRAM = program @@\ + @@\ +AllTarget(HostProgramTargetName(program)) @@\ + @@\ +HostProgramTargetName(program): program.o $(DEPLIBS) @@\ + RemoveTargetProgram($@) @@\ + HostLinkRule($@,$(_NOOP_),program.o,$(DEPLIBS) $(LOCAL_LIBRARIES)) @@\ + @@\ +clean:: @@\ + RemoveFile(HostProgramTargetName(program)) +#endif /* SimpleHostProgramTarget_4 */ Index: xc/config/cf/cygwin.cf diff -u xc/config/cf/cygwin.cf:3.16.2.1 xc/config/cf/cygwin.cf:3.34 --- xc/config/cf/cygwin.cf:3.16.2.1 Wed May 30 10:29:27 2001 +++ xc/config/cf/cygwin.cf Mon Dec 10 11:22:37 2001 @@ -1,4 +1,4 @@ -XCOMM platform: $XFree86: xc/config/cf/cygwin.cf,v 3.16.2.1 2001/05/30 14:29:27 alanh Exp $ +XCOMM platform: $XFree86: xc/config/cf/cygwin.cf,v 3.34 2001/12/10 16:22:37 alanh Exp $ #ifndef OSName #define OSName Cygwin @@ -13,10 +13,10 @@ #define OSMinorVersion 3 #endif #ifndef OSTeenyVersion -#define OSTeenyVersion 1 +#define OSTeenyVersion 6 #endif -#define ProjectRoot /usr/X11R6 +#define ProjectRoot /usr/X11R6 #define BuildServer YES @@ -28,8 +28,13 @@ #define GccUsesGas YES #define UseGas YES #define GnuCpp YES + +#if !CrossCompiling #define BootstrapCFlags -L/lib/automode.o +#endif +#define ExtraLoadFlags -Wl,--enable-auto-import + #define HasShadowPasswd NO #define HasLibCrypt YES #define HasPutenv YES @@ -56,10 +61,19 @@ #define HasSockets YES #define GzipFontCompression YES #define HasZlib YES +#define GzipLibrary -lz.dll -#define SharedLibFont NO +/* We don't need -lm */ +#define MathLibrary /**/ + +/* + * /lib/libtermcap.a doesn't have tgetent, which is needed for + * xc/programs/xterm/resize.exe + */ +#define TermcapLibrary -lncurses.dll + #define AvoidNullMakeCommand YES -#define StripInstalledPrograms NO +#define StripInstalledPrograms YES #define CompressAllFonts YES #define Malloc0ReturnsNull NO #define NeedConstPrototypes YES @@ -71,59 +85,85 @@ #define ExpandManNames NO #define HasDlopen NO #define HasGnuMake YES -#define UseGccMakeDepend YES - -/* - * This options may depend on the state of POSIX thread - * support in Cygwin, which is improving as of 2001-04-12. - */ -#define ThreadedX NO -#define HasThreadSafeAPI NO +#define UseGccMakeDepend NO +#define ThreadedX YES +#define HasThreadSafeAPI YES +#define CaseSensitiveFileSystem NO #define LnCmd ln -s +#ifndef CcCmd #define CcCmd gcc -#define CpluplusCmd c++ -fpermissive +#endif /* CcCmd */ +#ifndef CplusplusCmd +#define CplusplusCmd g++ +#endif /* CplusplusCmd */ +#ifndef AsCmd #define AsCmd as +#endif /* AsCmd */ #define GccGasOption -DGCCUSESGAS #define AsmDefines -DUSE_GAS -DGCCUSESGAS +#ifndef LdCmd #define LdCmd ld +#endif /* LdCmd */ #define MkdirHierCmd mkdir -p +#ifndef CppCmd #define CppCmd cpp +#endif /* CppCmd */ +#ifndef YaccCmd #define YaccCmd byacc +#endif /* YaccCmd */ #define LexCmd flex -l #define LexLib -lfl #define HasFlex YES #define PreProcessCmd CcCmd -E - -#define StdIncDir `CcCmd --print-libgcc-file-name | sed 's,\\\\,/,g' | sed 's,libgcc.a,../../../../i686-pc-cygwin/include,'` +#ifndef PostIncDir #define PostIncDir `CcCmd --print-libgcc-file-name | sed 's,\\\\,/,g' | sed 's,libgcc.a,include,'` +#endif +#ifndef ExtraIncDir +#define ExtraIncDir /usr/include/w32api +#endif #define LdCombineFlags -r +/* We don't define -ansi yet as newlib (which is cygwin's library) doesn't + * define some needed prototypes when -ansi is set, when that's fixed + * we can remove these lines and use the default XFree86 options. */ +#ifndef DefaultCCOptions +# define DefaultCCOptions /* -ansi -pedantic */ GccWarningOptions +#endif + # ifndef OptimizedCDebugFlags # define OptimizedCDebugFlags DefaultGcc2i386Opt # endif -#define StandardDefines -D__i386__ -DWIN32_LEAN_AND_MEAN -DX_LOCALE -D_X86_ -D__STDC__ -DNO_TCP_H -D__CYGWIN__ -D_XOPEN_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE -DX_SOURCE +#define StandardDefines -D__i386__ -DWIN32_LEAN_AND_MEAN -DX_LOCALE -D_X86_ -D__STDC__ -DNO_TCP_H -D__CYGWIN__ -D_XOPEN_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE #define XawI18nDefines -DUSE_XWCHAR_STRING -DUSE_XMBTOWC #define HasWChar32 YES #define StandardCppOptions -traditional #if UseCygIPC -# define StandardCppDefines -DHAS_SHM StandardDefines +# if ThreadedX +# define StandardCppDefines -DHAS_THREADS -DHAS_SHM StandardDefines +# else +# define StandardCppDefines -DHAS_SHM StandardDefines +# endif #else -# define StandardCppDefines StandardDefines +# if ThreadedX +# define StandardCppDefines -DHAS_THREADS StandardDefines +# else +# define StandardCppDefines StandardDefines +# endif #endif -#define ServerOSDefines XFree86ServerDefines -DDDXTIME -DFD_SETSIZE=256 -DDXOSINIT +#define ServerOSDefines XFree86ServerDefines -DDDXTIME -DFD_SETSIZE=256 -DDDXOSINIT -DDDXOSVERRORF -DDDXOSFATALERROR #define XkbServerDefines -DXKB_ALWAYS_USES_SOFT_REPEAT #define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines #define ConnectionFlags -DTCPCONN -DUNIXCONN #define ExtraLibraries #define InstUidFlags -m 4711 -#define UseRgbTxt YES -#define ExtraFilesToClean *.obj *.orig *.rej junk.c *.exe *.dll *.lib *~ +#define UseRgbTxt YES +#define ExtraFilesToClean *.obj *.orig *.rej junk.c *.exe *.dll *.lib *~ /* * You'll probably want BuildDebug to be YES if you are debugging :) @@ -167,12 +207,13 @@ #define BuildGlxExt YES #define BuildXInputExt YES #define BuildXF86VidModeExt YES -#define BuildXF86DGA NO +#define BuildXF86DGA NO /* No direct access to hardware */ #define BuildXvExt YES -#define BuildXF86MiscExt YES +#define BuildXF86MiscExt NO #define BuildRender YES -#define BuildXF86DRI NO -#define BuildXF86DRM NO +#define BuildRandR YES +#define BuildXF86DRI NO /* No direct access to hardware */ +#define BuildXF86DRM NO /* No direct access to hardware */ #define BuildXKB YES #define BuildXCMiscExt YES #define BuildTestExt YES @@ -189,7 +230,7 @@ #define BuildXCSecurity YES #define BuildAppgroup YES #define BuildShapeExt YES -#define BuildScanpci NO +#define BuildScanpci NO /* No direct access to hardware */ #define BuildScreenSaverExt NO @@ -239,6 +280,12 @@ #define XF86CardDrivers /**/ + +/* + * These man rules were ganked from linux.cf, verbatim. + * I am not convinced that we need them. + */ +#if 0 /* Some of these man page defaults are overriden in the above OS sections */ #ifndef ManSuffix # define ManSuffix 1x @@ -258,10 +305,9 @@ #ifndef FileManDir # define FileManDir $(MANSOURCEPATH)5 #endif +#endif -/* we don't need -lm */ -#define MathLibrary /**/ -#define TermcapLibrary -ltermcap +/* Server build rules */ #define XnestServer YES #define BuildXprint YES #define XprtServer YES @@ -269,12 +315,15 @@ #define XWinServer YES /* - * Why we don't use the smart scheduler? + * 2001-06-19 - SmartScheduler is terribly slow on Cygwin. It causes + * visible delays in updating of windows, cursor position, etc. */ #define UseSmartScheduler NO -/* --unix option of cygwin make fools the standard MakeFlagsToShellFlags macro */ -#define MakeFlagsToShellFlags(makeflags,shellcmd)\ +/* + * --unix option of Cygwin make fools the standard MakeFlagsToShellFlags macro + */ +#define MakeFlagsToShellFlags(makeflags,shellcmd) \ for flag in ${MAKEFLAGS} ''; do \ @@\ case "$$flag" in *=*) ;;--*) ;; *[makeflags]*) shellcmd;; esac; done Index: xc/config/cf/cygwin.rules diff -u xc/config/cf/cygwin.rules:3.5 xc/config/cf/cygwin.rules:3.18 --- xc/config/cf/cygwin.rules:3.5 Fri Apr 27 08:32:42 2001 +++ xc/config/cf/cygwin.rules Thu Nov 15 18:15:55 2001 @@ -1,41 +1,35 @@ -XCOMM $XFree86: xc/config/cf/cygwin.rules,v 3.5 2001/04/27 12:32:42 alanh Exp $ +XCOMM $XFree86: xc/config/cf/cygwin.rules,v 3.18 2001/11/15 23:15:55 alanh Exp $ -#define CPPOnlyAsm(basename,options) RemoveFile(basename.i) @@\ - $(CPP) AsmDefines $(DEFINES) $(INCLUDES) options basename.S | grep -v '^\#' > basename.i - - - /* * Cygwin shared library rules (DLL versions) */ -#define HasSharedLibraries YES -#define NeedLibInsideFlag YES -#define ForceNormalLib NO -#define SharedLibXaw NO -#define SharedLibXmu NO -#define SharedLibXt NO -#define SharedLibSM YES -#define SharedLibICE YES -#define SharedLibXext YES -#define SharedLibXie YES -#define SharedLibXi YES -#define SharedLibPex YES -#define SharedLibXtst YES -#define SharedOldX YES -#define SharedLibXp YES -#define SharedLibGL YES -#define SharedLibXpm YES -#define SharedLibFont NO -#define SharedLibXaw6 NO -#define SharedLibgetsurf NO -#define SharedLibDps YES -#define SharedLibDpsTk YES -#define NormalLibGlu YES -#define SharedLibGlu YES +#define HasSharedLibraries YES +#define NeedLibInsideFlag NO +#define ForceNormalLib NO +#define SharedLibXaw NO +#define SharedLibXmu NO +#define SharedLibXt NO +#define SharedLibSM YES +#define SharedLibICE YES +#define SharedLibXext YES +#define SharedLibXie YES +#define SharedLibXi YES +#define SharedLibPex YES +#define SharedLibXtst YES +#define SharedOldX YES +#define SharedLibXp YES +#define SharedLibGlx YES +#define SharedLibFont NO +#define SharedLibXaw6 NO +#define SharedLibgetsurf NO +#define SharedLibDps YES +#define SharedLibDpsTk YES +#define SharedLibGlu YES #ifndef SharedDataSeparation -#define SharedDataSeparation NO +#define SharedDataSeparation NO #endif + #ifndef SharedCodeDef #define SharedCodeDef /**/ #endif @@ -58,25 +52,94 @@ #define UseExportLists YES #endif + /* * SharedDepLibraryTarget - generate rules to create a shared library. */ + #ifndef SharedDepLibraryTarget -#ifdef UseInstalled -#ifndef LinkBuildSonameLibrary -#define LinkBuildSonameLibrary(lib) -#endif -#else -#ifndef LinkBuildSonameLibrary -#define LinkBuildSonameLibrary(lib) (RemoveFile($(BUILDLIBDIR)/lib); \ +# ifdef UseInstalled +# ifndef LinkBuildSonameLibrary +# define LinkBuildSonameLibrary(lib) +# endif +# else /* !UseInstalled */ +# ifndef LinkBuildSonameLibrary +# define LinkBuildSonameLibrary(lib) (RemoveFile($(BUILDLIBDIR)/lib); @@\ cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/lib .) -#endif -#endif +# endif +# endif /* UseInstalled */ + + +/* + * SharedDepLibraryTarget + */ #define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\ -SharedLibraryTarget(libname,rev,solist,down,up) +AllTarget(Concat3(lib,libname,.dll)) @@\ + @@\ +CppFileTarget(libname.def,libname-def.cpp,-DLIBRARY_VERSION=rev,$(ICONFIGFILES)) @@\ + @@\ + @@\ + @@\ +Concat3(lib,libname,.dll): deplist libname.def @@\ + RemoveFile(LibraryTargetName(libname)) @@\ + RemoveFile(Concat3(lib,libname,.dll)) @@\ + MakeDLL(libname,solist) @@\ + LinkBuildLibrary(Concat3(lib,libname,.a)) @@\ + LinkBuildDLL(Concat3(lib,libname,.dll)) @@\ + @@\ +clean:: @@\ + RemoveFile(LibraryTargetName(libname)) @@\ + RemoveFile(Concat3(lib,libname,.dll)) @@\ + #endif /* SharedDepLibraryTarget */ +/* + * SharedDepCplusplusLibraryTarget - generate rules to create a shared library. + */ + +#ifndef SharedDepCplusplusLibraryTarget +# ifdef UseInstalled +# ifndef LinkBuildSonameLibrary +# define LinkBuildSonameLibrary(lib) +# endif +# else /* !UseInstalled */ +# ifndef LinkBuildSonameLibrary +# define LinkBuildSonameLibrary(lib) (RemoveFile($(BUILDLIBDIR)/lib); @@\ + cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/lib .) +# endif +# endif /* UseInstalled */ + + +/* + * SharedDepCplusplusLibraryTarget + */ + +#define SharedDepCplusplusLibraryTarget(libname,rev,deplist,solist,down,up) @@\ +AllTarget(Concat3(lib,libname,.dll)) @@\ + @@\ +CppFileTarget(libname.def,libname-def.cpp,-DLIBRARY_VERSION=rev,$(ICONFIGFILES)) @@\ + @@\ + @@\ + @@\ +Concat3(lib,libname,.dll): deplist libname.def @@\ + RemoveFile(LibraryTargetName(libname)) @@\ + RemoveFile(Concat3(lib,libname,.dll)) @@\ + MakeCplusplusDLL(libname,solist) @@\ + LinkBuildLibrary(Concat3(lib,libname,.a)) @@\ + LinkBuildDLL(Concat3(lib,libname,.dll)) @@\ + @@\ +clean:: @@\ + RemoveFile(LibraryTargetName(libname)) @@\ + RemoveFile(Concat3(lib,libname,.dll)) @@\ + +#endif /* SharedDepCplusplusLibraryTarget */ + + +/* + * SharedDepModuleTarget + */ + #ifndef SharedDepModuleTarget #define SharedDepModuleTarget(name,deps,solist) @@\ AllTarget(name) @@\ @@ -88,30 +151,50 @@ RemoveFile(name) #endif /* SharedDepModuleTarget */ + /* * SharedLibraryDataTarget - generate rules to create shared data file */ + #ifndef SharedLibraryDataTarget #define SharedLibraryDataTarget(libname,rev,salist) #endif + + /* * InstallSharedLibraryData - generate rules to install the shared library data */ + #ifndef InstallSharedLibraryData #define InstallSharedLibraryData(libname,rev,dest) #endif /* InstallSharedLibraryData */ -BASE_COUNTER=/tmp/DLL_BASE_COUNTER +/* + * MakeDllProg + */ + +#define MakeDLLProg(libname,solist,prog) @@\ + prog -shared -Wl,--out-implib=Concat3(lib,libname,.a) -Wl,--enable-auto-import --def libname.def -o Concat3(lib,libname,.dll) solist $(REQUIREDLIBS) + +/* + * MakeDll + */ + +#define MakeDLL(libname,solist) @@\ + MakeDLLProg(libname,solist,$(CC)) + +/* + * MakeCplusplusDll + */ + +#define MakeCplusplusDLL(libname,solist) @@\ + MakeDLLProg(libname,solist,$(CXX)) + -#define MakeDLL(libname,solist) @@\ - if [ -f $(BASE_COUNTER) ]; then true; \ @@\ - else echo 0x67000000 > $(BASE_COUNTER); fi @@\ - dllwrap -s --def libname.def --output-lib Concat3(lib,libname,.a) -o Concat3(lib,libname,.dll) solist junk.o $(REQUIREDLIBS) -image-base `cat $(BASE_COUNTER)` @@\ - IMAGE_LENGTH=`objdump -x Concat3(lib,libname,.dll) |awk '/SizeOfImage/ {print "0x"$$2}'`; \ @@\ - export IMAGE_LENGTH=`expr '(' \`printf %u $$IMAGE_LENGTH\` / 65536 + 1 ')' '*' 65536` ; \ @@\ - export IMAGE_BASE=`cat $(BASE_COUNTER)`; \ @@\ - printf 0x%x `expr \`printf %u $$IMAGE_BASE\` + $$IMAGE_LENGTH` > $(BASE_COUNTER) +/* + * SharedLibraryTarget + */ #define SharedLibraryTarget(libname,rev,solist,down,up) @@\ AllTarget(Concat3(lib,libname,.dll)) @@\ @@ -119,33 +202,60 @@ CppFileTarget(libname.def,libname-def.cpp,-DLIBRARY_VERSION=rev,$(ICONFIGFILES)) @@\ @@\ @@\ -junk.c: @@\ - echo "#include " >junk.c @@\ - echo "DECLARE_CYGWIN_DLL(dll_main);" >>junk.c @@\ - echo "int WINAPI dll_main(HINSTANCE a, DWORD reason, void *q)" >>junk.c @@\ - echo "{ return 1; }" >>junk.c @@\ -Concat3(lib,libname,.dll): solist junk.o libname.def @@\ +Concat3(lib,libname,.dll): solist libname.def @@\ RemoveFile(LibraryTargetName(libname)) @@\ RemoveFile(Concat3(lib,libname,.dll)) @@\ MakeDLL(libname,solist) @@\ LinkBuildLibrary(Concat3(lib,libname,.a)) @@\ - LinkBuildDLL(Concat3(lib,libname,.dll)) @@\ + LinkBuildDLL(Concat3(lib,libname,.dll)) @@\ clean:: @@\ RemoveFile(LibraryTargetName(libname)) @@\ RemoveFile(Concat3(lib,libname,.dll)) @@\ - RemoveFile(junk.o) @@\ - RemoveFile(junk.c) @@\ - RemoveFile($(BASE_COUNTER)) + + +/* + * InstallSharedLibrary + */ #define InstallSharedLibrary(libname,rev,dest) @@\ InstallTarget(install,LibraryTargetName(libname),$(INSTLIBFLAGS),$(USRLIBDIR)) @@\ InstallTarget(install,Concat3(lib,libname,.dll),$(INSTLIBFLAGS),$(BINDIR)) + + +/* + * ProgramTargetName - This can be simply 'target' or 'target.exe' when + * building on Cygwin proper, as Cygwin automatically appends .exe to compiled + * executables and make, rm, ln, etc. will automatically search for a file + * with .exe appended if the raw file name cannot be found. However, + * building with a cross compiler requires 'target.exe', as the cross + * compiler doesn't know to append .exe, nor do the cross compiler tools + * know to search for files with .exe appended if the raw file name cannot + * be found. + */ + +#define ProgramTargetName(target) Concat(target,.exe) + + +/* + * HostProgramTargetName - Don't add .exe if cross-compiling. + */ + +#ifndef HostProgramTargetName +# if CrossCompiling +# define HostProgramTargetName(target) target +# else +# define HostProgramTargetName(target) ProgramTargetName(target) +# endif +#endif -#define ProgramTargetName(target)target.exe /* - * LinkBuildDLL - export a .dll to exports/bin. + * LinkBuildDLL - Cygwin only rule, similar to LinkBuildModule. + * Unfortunately, we have to create a copy of each DLL in xc/exports/bin; + * linking doesn't work, the executables (e.g. xkbcomp) will report + * that they cannot find DLLs (e.g. libX11.dll). */ + #ifdef UseInstalled #define LinkBuildDLL(lib) $(_NULLCMD_) #else @@ -154,79 +264,60 @@ cd $(BUILDBINDIR) && $(CP) $(BUILDBINTOP)/$(CURRENT_DIR)/lib . #endif + /* - * LinkBuildBinary - export an .exe to exports/bin. + * LinkBuildBinary - This rule normally creates a link in xc/exports/bin + * to a binary, but we create an actual copy of the binary. + * Creating a link causes the DLLs that the binary depend on, such as + * libX11.dll, not to be found. Copying the binary causes the runtime + * directory to be xc/exports/bin, which is the location of the DLLs, thus, + * the DLLs can now be found by the binary. Phew... + * + * Note that sometimes the binary is not an executable. One example + * is the rgb binary file. + * + * ProgramTargetName is passed to LinkBuildBinary if the binary + * is actually an executable; thus, we do not wrap the binary name + * with ProgramTargetName here. */ - #ifndef LinkBuildBinary -#define LinkBuildBinary(program) @@\ -all:: program @@\ - MakeDir($(BUILDBINDIR)) @@\ - RemoveFile($(BUILDBINDIR)/program) @@\ - $(CP) $(BUILDBINTOP)/$(CURRENT_DIR)/program $(BUILDBINDIR) +#define LinkBuildBinary(binary) @@\ +all:: binary @@\ + MakeDir($(BUILDBINDIR)) @@\ + RemoveFile($(BUILDBINDIR)/binary) @@\ + $(CP) $(BUILDBINTOP)/$(CURRENT_DIR)/binary $(BUILDBINDIR) #endif /* LinkBuildBinary */ -/* This is to replace an ugly hack in /xc/nls/XLC_LOCALE */ -/* the corresponding Imake.rules rule would be: - define LinkFileSpecial(gotodir,tofile,fromfile) @@\ - @MakeFlagsToShellFlags(i,set +e); \ @@\ - cd dir && (set -x; RemoveFile(tofile); $(LN) fromfile tofile) - */ -/* And this replaces a similarlry ugly hack in InstallDynamicModule */ +/* + * ComplexProgramTarget - Imake.rules doesn't wrap the program name + * with ProgramTargetName(), so we need this rule for Cygwin. + */ -#ifndef LinkBuildModule -#ifdef UseInstalled -#define LinkBuildModule(module,subdir) $(_NULLCMD_) -#else -#define LinkBuildModule(module,subdir) @@\ - MakeDir($(BUILDMODULEDIR)/subdir) @@\ - RemoveFile($(BUILDMODULEDIR)/subdir/module) @@\ - $(LN) $(BUILDMODULETOP)/$(CURRENT_DIR)/module $(BUILDMODULEDIR)/subdir/module -#endif -#endif /* LinkBuildModule */ - -#ifndef LinkBuildNamedModule -#define LinkBuildNamedModule(module,name) MakeDir($(BUILDMODULEDIR)) @@\ - RemoveFile($(BUILDMODULEDIR)/module) @@\ - $(BUILDMODULEDIR) $(BUILDMODULETOP)/$(CURRENT_DIR)/module name -#endif /* LinkBuildNamedModule */ - -#define NormalProgramTarget(program,objects,deplibs,locallibs,syslibs) @@\ -AllTarget(ProgramTargetName(program)) @@\ -ProgramTargetName(program): objects deplibs @@\ - RemoveTargetProgram($@) @@\ - LinkRule($@,$(LDOPTIONS),objects,locallibs $(LDLIBS) syslibs) @@\ +#define ComplexProgramTarget(program) @@\ + AllTarget(ProgramTargetName(program)) @@\ + ProgramTargetHelper(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\ + DependTarget() @@\ + LintTarget() @@\ @@\ clean:: @@\ RemoveFile(ProgramTargetName(program)) -#define ProgramTargetHelper(program,srcs,objs,deplib,locallib,syslib) @@\ -ProgramTargetName(program): $(objs) $(deplib) @@\ - RemoveTargetProgram($@) @@\ - LinkRule($@,$(LDOPTIONS),$(objs),locallib $(LDLIBS) syslib) @@\ - @@\ -InstallProgram(program,$(BINDIR)) @@\ -InstallManPage(program,$(MANDIR)) -#define ComplexProgramTarget(program) @@\ -AllTarget(ProgramTargetName(program)) @@\ - @@\ -ProgramTargetHelper(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\ - @@\ -DependTarget() @@\ -LintTarget() @@\ - @@\ -clean:: @@\ - RemoveFile(ProgramTargetName(program)) +/* + * ComplexProgramTarget_1 - Imake.rules doesn't wrap the program names + * with ProgramTargetName(), so we need this rule for Cygwin. + */ #define ComplexProgramTarget_1(program,locallib,syslib) @@\ - OBJS = $(OBJS1) $(OBJS2) $(OBJS3) @@\ - SRCS = $(SRCS1) $(SRCS2) $(SRCS3) @@\ - PROGRAM1 = ProgramTargetName(program) @@\ + OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(OBJS5) \ @@\ + $(OBJS6) $(OBJS7) $(OBJS8) $(OBJS9) $(OBJS10) @@\ + SRCS = $(SRCS1) $(SRCS2) $(SRCS3) $(SRCS4) $(SRCS5) \ @@\ + $(SRCS6) $(SRCS7) $(SRCS8) $(SRCS9) $(SRCS10) @@\ + PROGS_EXE = $(foreach prog,$(PROGRAMS),ProgramTargetName($(prog))) @@\ @@\ -AllTarget($(PROGRAM1) $(PROGRAM2) $(PROGRAM3)) @@\ +AllTarget($(PROGS_EXE)) @@\ @@\ ProgramTargetHelper(program,SRCS1,OBJS1,DEPLIBS1,locallib,syslib) @@\ @@\ @@ -234,46 +325,15 @@ LintTarget() @@\ @@\ clean:: @@\ - for i in $(PROGRAMS); do $(RM) ProgramTargetName($$i); done - -#define ComplexProgramTarget_2(program,locallib,syslib) @@\ - PROGRAM2 = ProgramTargetName(program) @@\ - @@\ -ProgramTargetHelper(program,SRCS2,OBJS2,DEPLIBS2,locallib,syslib) - -#define ComplexProgramTarget_3(program,locallib,syslib) @@\ - PROGRAM3 = ProgramTargetName(program) @@\ - @@\ -ProgramTargetHelper(program,SRCS3,OBJS3,DEPLIBS3,locallib,syslib) + RemoveFiles($(PROGS_EXE)) -#define ServerTargetWithFlags(server,subdirs,objects,libs,syslibs,flags) @@\ -AllTarget(ProgramTargetName(server)) @@\ -ProgramTargetName(server): subdirs objects libs @@\ - MoveToBakFile($@) @@\ - LinkRule($@,$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\ - @@\ -Concat(load,server): @@\ - MoveToBakFile(ProgramTargetName(server)) @@\ - LinkRule(ProgramTargetName(server),$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\ - @@\ -loadX:: Concat(load,server) @@\ - @@\ -SentinelProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\ -SentinelLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\ -PurifyProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\ -PurifyLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\ -ProofProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\ -ProofLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\ - @@\ -InstallProgramWithFlags(server,$(BINDIR),flags) @@\ - @@\ -clean:: @@\ - RemoveFile(ProgramTargetName(server)) /* - * ProfiledRelocatableTarget - generate rules to produce a profiled relocatable - * object file instead of a library. + * ProfiledRelocatableTarget - generate rules to produce a profiled + * relocatable object file instead of a library. Differs from Imake.rules + * by passing '--oformat pe-i386' to ld. */ + #ifndef ProfiledRelocatableTarget #define ProfiledRelocatableTarget(objname,objlist) @@\ AllTarget(Concat(objname,_p.Osuf)) @@\ @@ -287,8 +347,10 @@ /* * DebuggedRelocatableTarget - generate rules to produce a debuggable - * relocatable object file instead of a library. + * relocatable object file instead of a library. Differs from Imake.rules + * by passing '--oformat pe-i386' to ld. */ + #ifndef DebuggedRelocatableTarget #define DebuggedRelocatableTarget(objname,objlist) @@\ AllTarget(Concat(objname,_d.Osuf)) @@\ @@ -300,3 +362,70 @@ #endif /* DebuggedRelocatableTarget */ +/* + * DependDependencyStatement - Imake.rules wraps $(DEPEND) in + * ProgramTargetName(), which causes cross compiling to think that + * $(DEPEND) hasn't been built, as $(DEPEND) is a host tool, and should + * not be wrapped with ProgramTargetName(). Perhaps there should be + * a HostProgramTargetName()... + */ + +#ifndef DependDependencyStatement +#if HasMakefileSafeInclude +#define DependDependencyStatement() @@\ +DependFileName:: $(DEPEND) +#else +#define DependDependencyStatement() @@\ +depend:: $(DEPEND) +#endif +#endif + + +/* + * DependDependency - Imake.rules wraps $(DEPEND) in ProgramTargetName(). + * This doesn't work when cross compiling, see the locally defined + * DependDependencyStatement comment (above) for more information. + */ + +#ifndef DependDependency +#ifdef UseInstalled +#define DependDependency() /**/ +#else +#define DependDependency() @@\ +DependDependencyStatement() @@\ + @@\ +NoCmpScript($(DEPEND)) @@\ + @@\ +$(DEPEND): @@\ + @echo "checking $@ over in $(DEPENDSRC) first..."; \ @@\ + cd $(DEPENDSRC) && $(MAKE); \ @@\ + echo "okay, continuing in $(CURRENT_DIR)" + +#endif /* UseInstalled */ +#endif /* DependDependency */ + + +/* + * ImakeDependency - Imake.rules wraps $(IMAKE) in ProgramTargetName(), + * which doesn't work when cross compiling, as imake is supposed to be a + * host program. See the locally defined DependDependencyStatement + * comment (above) for more information. + */ + +#ifndef ImakeDependency +#ifdef UseInstalled +#define ImakeDependency(target) /**/ +#else +#define ImakeDependency(target) @@\ +target:: $(IMAKE) @@\ + @@\ +NoCmpScript($(IMAKE) $(IMAKE).Osuf) @@\ + @@\ +$(IMAKE) $(IMAKE).Osuf: @@\ + -@(cd $(IMAKESRC) && if [ -f Makefile ]; then \ @@\ + echo "checking $@ in $(IMAKESRC) first..."; $(MAKE) all; else \ @@\ + echo "bootstrapping $@ from Makefile.ini in $(IMAKESRC) first..."; \ @@\ + $(MAKE) -f Makefile.ini BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)"; fi; \ @@\ + echo "okay, continuing in $(CURRENT_DIR)") +#endif /* UseInstalled */ +#endif /* ImakeDependency */ Index: xc/config/cf/cygwin.tmpl diff -u xc/config/cf/cygwin.tmpl:3.4 xc/config/cf/cygwin.tmpl:3.9 --- xc/config/cf/cygwin.tmpl:3.4 Wed Apr 18 13:13:58 2001 +++ xc/config/cf/cygwin.tmpl Thu Nov 15 19:52:27 2001 @@ -1,10 +1,16 @@ XCOMM $XConsortium: WinLib.tmpl,v 1.1 94/01/08 18:32:51 rws Exp $ -XCOMM $XFree86: xc/config/cf/cygwin.tmpl,v 3.4 2001/04/18 17:13:58 dawes Exp $ +XCOMM $XFree86: xc/config/cf/cygwin.tmpl,v 3.9 2001/11/16 00:52:27 dawes Exp $ +#if UseCygIPC +#define SharedX11Reqs -lcygipc +#else +#define SharedX11Reqs +#endif #define SharedOldXReqs $(LDPRELIB) $(XLIBONLY) +#define SharedXReqs $(XTOOLLIB) $(XPLIB) $(XLIB) $(LDPOSTLIBS) #define SharedXtReqs $(LDPRELIB) $(SMLIB) $(ICELIB) $(XLIBONLY) #define SharedXawReqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XPMLIB) $(XLIB) -#define SharedXaw6Reqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XLIB) +#define SharedXaw6Reqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XPMLIB) $(XLIB) #define SharedXmuReqs $(LDPRELIB) $(XTOOLLIB) $(XLIB) #define SharedXextReqs $(LDPRELIB) $(XLIBONLY) #define SharedXiReqs $(LDPRELIB) $(XLIB) @@ -27,7 +33,7 @@ #define SharedXrenderReqs $(LDPRELIB) $(EXTENSIONLIB) $(XLIB) #define SharedpsresReqs $(LDPRELIB) $(SMLIB) $(ICELIB) $(XTOOLLIB) $(XLIB) #define SharedXmuuReqs $(LDPRELIB) $(XTOOLLIB) $(XLIB) - +#define SharedXrandrReqs $(LDPRELIB) $(XLIB) #ifndef FixupLibReferences #define FixupLibReferences() @@\ @@ -36,6 +42,5 @@ #endif #ifndef XawClientLibs -#define XawClientLibs $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XLIB) $(XPMLIB) +#define XawClientLibs $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XPMLIB) $(XLIB) #endif - Index: xc/config/cf/darwin.cf diff -u xc/config/cf/darwin.cf:1.14 xc/config/cf/darwin.cf:1.21 --- xc/config/cf/darwin.cf:1.14 Fri May 18 13:48:23 2001 +++ xc/config/cf/darwin.cf Tue Jan 15 16:22:31 2002 @@ -1,26 +1,53 @@ -XCOMM $XFree86: xc/config/cf/darwin.cf,v 1.14 2001/05/18 17:48:23 torrey Exp $ +XCOMM platform: $XFree86: xc/config/cf/darwin.cf,v 1.21 2002/01/15 21:22:31 keithp Exp $ /* Darwin / Mac OS X configuration by John Carmack */ /* imake determines the default values by parsing uname */ +#ifndef OSName #define OSName DefaultOSName +#endif +#ifndef OSMajorVersion #define OSMajorVersion DefaultOSMajorVersion +#endif +#ifndef OSMinorVersion #define OSMinorVersion DefaultOSMinorVersion -#define OSTeenyVersion 0 +#endif +#ifndef OSTeenyVersion +#define OSTeenyVersion DefaultOSTeenyVersion +#endif +XCOMM operating system: OSName (OSMajorVersion./**/OSMinorVersion./**/OSTeenyVersion) + +/* + * Define the operating system's capabilities + */ #define HasSnprintf YES #define HasPutenv YES #define HasBSD44Sockets YES -#define BuildGlxExt NO +#define HasUsableFileMmap YES +#define HasZlib YES #ifndef HasShm # define HasShm YES #endif +#define HasNdbm YES + +#ifndef HasGroff +# define HasGroff YES +#endif + +/* Libtool on Darwin always uses minor numbers */ +#define LibtoolMinorVersions YES + +/* The most common file system, HFS+, is not case sensitive. */ +#ifndef CaseSensitiveFileSystem +# define CaseSensitiveFileSystem NO +#endif /* * This enables some settings for developers. */ #ifndef XFree86Devel -# define XFree86Devel NO +# define XFree86Devel NO #endif /* @@ -28,7 +55,7 @@ * Turn off to build on raw Darwin systems. */ #ifndef DarwinQuartzSupport -# define DarwinQuartzSupport YES +# define DarwinQuartzSupport YES #endif /* we don't need -lm */ @@ -40,6 +67,8 @@ /* we don't have a dbm library */ #define DBMLibrary /**/ +#define MkdirHierCmd mkdir -p + /* our cpp isn't in /lib/cpp and it doesn't like -undef */ #define CppCmd /usr/bin/cpp #define RawCppCmd CppCmd @@ -48,22 +77,15 @@ #define CcCmd /usr/bin/cc #define CplusplusCmd /usr/bin/c++ -/* uncommenting this line will get -g instead of -O, which builds - * a lot faster and gets debug info - */ -#if 0 -#define DefaultCDebugFlags -g -#endif - /* default flags to pass to cc */ #ifndef DefaultCCOptions #if XFree86Devel # define DefaultCCOptions -Wall -Wpointer-arith -Wstrict-prototypes \ -Wmissing-prototypes -Wmissing-declarations \ -Wredundant-decls -Wnested-externs \ - -traditional-cpp + -no-cpp-precomp #else -# define DefaultCCOptions -Wall -Wpointer-arith -traditional-cpp +# define DefaultCCOptions -Wall -Wpointer-arith -no-cpp-precomp #endif #endif @@ -72,23 +94,32 @@ # define LibraryCCOptions DefaultCCOptions -fno-common #endif +#ifdef PpcDarwinArchitecture +# define DarwinMachineDefines -D__powerpc__ +# define OptimizedCDebugFlags -O2 +# define ByteOrder X_BIG_ENDIAN +#endif /* PpcDarwinArchitecture */ + +#ifdef i386DarwinArchitecture +# define DarwinMachineDefines -D__i386__ +# define OptimizedCDebugFlags -O2 -fno-strength-reduce +# define ByteOrder X_LITTLE_ENDIAN +#endif /* i386DarwinArchitecture */ + /* * __DARWIN__ will be used for platform specific #ifdefs that can't * be handled by existing X defines. * * Darwin's alloca() seg faults (rather than returning NULL) on failed * allocations, so we can't use it. + * + * Darwin's setlocale() doesn't work properly, so use X11's instead. */ -#ifdef PpcDarwinArchitecture -#define StandardDefines -D__powerpc__ -D__DARWIN__ -DNO_ALLOCA -#else -#define StandardDefines -D__DARWIN__ -DNO_ALLOCA -#endif - -/* programs/rgb/rgb.h and others needs this */ -#define HasNdbm YES +#define StandardDefines DarwinMachineDefines -D__DARWIN__ \ + -DNO_ALLOCA -DX_LOCALE -/* set this to NO to just build the client libs, which should work without +/* + * Set this to NO to just build the client libs, which should work without * having to write any platform specific code. */ #define BuildServer YES @@ -98,15 +129,9 @@ /* Thanks to the IOKit, the X server does not have to be SetUID. */ #ifndef InstallXserverSetUID -# define InstallXserverSetUID NO +# define InstallXserverSetUID NO #endif -/* pex? bah. I'm not going to bother getting the device - * dependent part of this working. If I get the time, i'll - * get glx working instead. - */ -#define BuildPexExt NO - /* no direct graphics extension */ #define BuildXF86DGA NO @@ -116,16 +141,6 @@ /* no Display Power Management extension */ #define BuildDPMSExt NO - -#define BuildXvExt NO - -/* no OpenGL libraries */ -#ifndef BuildGLXLibrary -# define BuildGLXLibrary NO -#endif -#ifndef BuildGLULibrary -# define BuildGLULibrary NO -#endif #define BuildLibPathVar DYLD_LIBRARY_PATH Index: xc/config/cf/darwinLib.rules diff -u xc/config/cf/darwinLib.rules:1.1 xc/config/cf/darwinLib.rules:1.4 --- xc/config/cf/darwinLib.rules:1.1 Mon Mar 12 21:36:12 2001 +++ xc/config/cf/darwinLib.rules Tue Jan 15 19:39:59 2002 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/config/cf/darwinLib.rules,v 1.1 2001/03/13 02:36:12 torrey Exp $ +XCOMM $XFree86: xc/config/cf/darwinLib.rules,v 1.4 2002/01/16 00:39:59 keithp Exp $ /* * Darwin/Mac OS X shared library rules */ @@ -26,7 +26,7 @@ #define ShLibIncludeFile #endif #ifndef SharedLibraryLoadFlags -#define SharedLibraryLoadFlags -dynamiclib -undefined suppress +#define SharedLibraryLoadFlags -dynamiclib #endif #ifndef PositionIndependentCFlags #define PositionIndependentCFlags -dynamic @@ -43,7 +43,7 @@ install:: Concat(lib,libname.rev.dylib) @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) Concat(lib,libname.rev.dylib) $(DESTDIR)dest @@\ - @MAJREV=`expr rev : '\(.*\)\.'`; \ @@\ + @MAJREV=`expr rev : '\([^.]*\)'`; \ @@\ set -x; $(RM) Concat($(DESTDIR)dest/lib,libname.$$MAJREV.dylib) && \ @@\ $(LN) Concat(lib,libname.rev.dylib) Concat($(DESTDIR)dest/lib,libname.$$MAJREV.dylib) @@\ @if $(SOSYMLINK); then (set -x; \ @@\ @@ -69,7 +69,7 @@ @@\ Concat(lib,libname.rev.dylib): solist $(EXTRALIBRARYDEPS) @@\ $(RM) $@~ @@\ - @MAJREV=`expr rev : '\(.*\)\.'`; \ @@\ + @MAJREV=`expr rev : '\([^.]*\)'`; \ @@\ INSTALLNAME=Concat(lib,libname.$$MAJREV.dylib); \ @@\ set -x; (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -install_name $(USRLIBDIR)/$$INSTALLNAME -current_version rev -compatibility_version rev solist $(REQUIREDLIBS)); \ @@\ $(RM) $$INSTALLNAME; $(LN) $@ $$INSTALLNAME; \ @@\ @@ -83,7 +83,7 @@ LinkBuildLibraryMaybe(Concat(lib,libname.dylib),$(SOSYMLINK)) @@\ @@\ clean:: @@\ - @MAJREV=`expr rev : '\(.*\)\.'`; \ @@\ + @MAJREV=`expr rev : '\([^.]*\)'`; \ @@\ set -x; $(RM) Concat(lib,libname.$$MAJREV.dylib) @@\ $(RM) Concat(lib,libname.rev.dylib) Concat(lib,libname.dylib) @@ -109,7 +109,7 @@ @@\ Concat(lib,libname.rev.dylib): deplist $(EXTRALIBRARYDEPS) @@\ $(RM) $@~ @@\ - @MAJREV=`expr rev : '\(.*\)\.'`; \ @@\ + @MAJREV=`expr rev : '\([^.]*\)'`; \ @@\ INSTALLNAME=Concat(lib,libname.$$MAJREV.dylib); \ @@\ set -x; (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -install_name $(USRLIBDIR)/$$INSTALLNAME -current_version rev -compatibility_version rev solist $(REQUIREDLIBS)); \ @@\ $(RM) $$INSTALLNAME; $(LN) $@ $$INSTALLNAME; \ @@\ @@ -123,7 +123,7 @@ LinkBuildLibraryMaybe(Concat(lib,libname.dylib),$(SOSYMLINK)) @@\ @@\ clean:: @@\ - @MAJREV=`expr rev : '\(.*\)\.'`; \ @@\ + @MAJREV=`expr rev : '\([^.]*\)'`; \ @@\ set -x; $(RM) Concat(lib,libname.$$MAJREV.dylib) @@\ $(RM) Concat(lib,libname.rev.dylib) Concat(lib,libname.dylib) Index: xc/config/cf/darwinLib.tmpl diff -u xc/config/cf/darwinLib.tmpl:1.1 xc/config/cf/darwinLib.tmpl:1.2 --- xc/config/cf/darwinLib.tmpl:1.1 Mon Mar 12 21:36:12 2001 +++ xc/config/cf/darwinLib.tmpl Wed Sep 12 21:28:57 2001 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/config/cf/darwinLib.tmpl,v 1.1 2001/03/13 02:36:12 torrey Exp $ +XCOMM $XFree86: xc/config/cf/darwinLib.tmpl,v 1.2 2001/09/13 01:28:57 torrey Exp $ /* * Darwin/Mac OS X shared library template */ @@ -13,23 +13,30 @@ #define XawClientLibs $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XPMLIB) $(XLIB) #endif -#define CplusplusLibC -#define FrescoSysLibs CplusplusLibC MathLibrary - /* Allow for libpthread, as overridden by OS definitions */ #if !defined(SharedX11Reqs) #define SharedX11Reqs #endif -#define SharedOldXReqs $(LDPRELIB) $(XLIBONLY) -#define SharedXtReqs $(LDPRELIB) $(XLIBONLY) $(SMLIB) $(ICELIB) + +#define SharedGLReqs $(LDPRELIB) $(XLIB) +#define SharedGLUReqs $(LDPRELIB) $(XLIB) $(GLXLIB) +#define SharedSMReqs $(LDPRELIB) $(ICELIB) #define SharedXawReqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XPMLIB) $(XLIB) #define SharedXaw6Reqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XLIB) -#define SharedXmuReqs $(LDPRELIB) $(XTOOLLIB) $(XLIB) #define SharedXextReqs $(LDPRELIB) $(XLIBONLY) +#define SharedXfontReqs $(LDPRELIB) $(FONTSTUBLIB) GzipLibrary #define SharedXiReqs $(LDPRELIB) $(XLIB) -#define SharedPexReqs $(LDPRELIB) $(XLIBONLY) MathLibrary +#define SharedXmuReqs $(LDPRELIB) $(XTOOLLIB) $(XLIB) +#define SharedXmuuReqs $(LDPRELIB) $(XTOOLLIB) $(XLIB) +#define SharedXpReqs $(LDPRELIB) $(XAUTHLIB) $(EXTENSIONLIB) $(XLIBONLY) +#define SharedXpmReqs $(LDPRELIB) $(XLIB) +#define SharedXrandrReqs $(LDPRELIB) $(XLIB) +#define SharedXrenderReqs $(LDPRELIB) $(EXTENSIONLIB) $(XLIB) +#define SharedXssReqs $(LDPRELIB) $(XLIB) $(EXTENSIONLIB) $(XTOOLLIB) +#define SharedXtReqs $(LDPRELIB) $(XLIBONLY) $(SMLIB) $(ICELIB) #define SharedXtstReqs $(LDPRELIB) $(XLIB) -#define SharedXieReqs $(LDPRELIB) $(XLIBONLY) -#define SharedSMReqs $(LDPRELIB) $(ICELIB) -#define SharedFrescoReqs $(LDPRELIB) $(XLIBONLY) FrescoSysLibs -#define SharedXtfReqs $(LDPRELIB) $(FRESCOLIB) $(XTOOLLIB) $(XLIB) FrescoSysLibs +#define SharedXvReqs $(LDPRELIB) $(XLIB) +#define SharedDPSReqs $(LDPRELIB) $(SMLIB) $(ICELIB) $(XTOOLLIB) $(XLIB) +#define SharedDPSTKReqs $(LDPRELIB) $(SMLIB) $(ICELIB) $(XTOOLLIB) $(DPSLIB) $(XLIB) +#define SharedOldXReqs $(LDPRELIB) $(XLIBONLY) +#define SharedpsresReqs $(LDPRELIB) $(SMLIB) $(ICELIB) $(XTOOLLIB) $(XLIB) Index: xc/config/cf/gnuLib.rules diff -u xc/config/cf/gnuLib.rules:1.4 xc/config/cf/gnuLib.rules:1.5 --- xc/config/cf/gnuLib.rules:1.4 Tue Nov 14 13:20:31 2000 +++ xc/config/cf/gnuLib.rules Tue Jan 15 19:39:59 2002 @@ -1,7 +1,7 @@ /* * GNU/Hurd shared library rules * - * $XFree86: xc/config/cf/gnuLib.rules,v 1.4 2000/11/14 18:20:31 dawes Exp $ + * $XFree86: xc/config/cf/gnuLib.rules,v 1.5 2002/01/16 00:39:59 keithp Exp $ */ /* @@ -113,7 +113,7 @@ LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK)) @@\ @@\ clean:: @@\ - @MAJREV=`expr rev : '\(.*\)\.'`; \ @@\ + @MAJREV=`expr rev : '\([^.]*\)'`; \ @@\ set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\ $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) @@ -152,7 +152,7 @@ LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK)) @@\ @@\ clean:: @@\ - @MAJREV=`expr rev : '\(.*\)\.'`; \ @@\ + @MAJREV=`expr rev : '\([^.]*\)'`; \ @@\ set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\ $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) Index: xc/config/cf/kdrive.cf diff -u xc/config/cf/kdrive.cf:1.9 xc/config/cf/kdrive.cf:1.12 --- xc/config/cf/kdrive.cf:1.9 Tue Apr 10 12:07:47 2001 +++ xc/config/cf/kdrive.cf Sat Jun 23 13:00:03 2001 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/config/cf/kdrive.cf,v 1.9 2001/04/10 16:07:47 dawes Exp $ +XCOMM $XFree86: xc/config/cf/kdrive.cf,v 1.12 2001/06/23 17:00:03 keithp Exp $ /* * This configuration file contains all of the configuration * information for the XFree86 based X Servers. @@ -13,8 +13,11 @@ #ifndef XTS300Server #define XTS300Server NO #endif +#ifndef XipaqServer +#define XipaqServer NO +#endif #ifndef XfbdevServer -#define XfbdevServer YES +#define XfbdevServer NO #endif #ifndef XIGSServer #define XIGSServer NO @@ -33,6 +36,9 @@ #endif #ifndef XvesaServer #define XvesaServer NO +#endif +#ifndef Xmach64Server +#define Xmach64Server NO #endif #if XItsyServer Index: xc/config/cf/linux.cf diff -u xc/config/cf/linux.cf:3.165.2.1 xc/config/cf/linux.cf:3.175 --- xc/config/cf/linux.cf:3.165.2.1 Thu May 31 22:24:14 2001 +++ xc/config/cf/linux.cf Tue Jan 15 16:22:31 2002 @@ -4,7 +4,7 @@ -XCOMM platform: $XFree86: xc/config/cf/linux.cf,v 3.165.2.1 2001/06/01 02:24:14 dawes Exp $ +XCOMM platform: $XFree86: xc/config/cf/linux.cf,v 3.175 2002/01/15 21:22:31 keithp Exp $ #ifndef LinuxElfDefault # define LinuxElfDefault YES @@ -101,13 +101,6 @@ # define XF86SetupUsesStaticTcl NO /* un-comment this when it is un-broken */ /* # define JoystickSupport YES */ -# define InstallXinitConfig YES -# define InstallXdmConfig YES -# define InstallFSConfig YES -# define DebuggableLibraries YES -# define ForceNormalLib YES -# define BuildSpecsDocs YES -# define SpecsDocDirs CTEXT GL ICCCM X11 Xext Xv i18n xterm # 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 */ @@ -125,8 +118,6 @@ # define HasZlib YES # define SharedLibGlu YES # define NormalLibGlu YES -# define BuildRman NO -# define BuildHtmlManPages NO # define FSUseSyslog YES /* @@ -141,24 +132,43 @@ # define BuilderEMailAddr "submit@bugs.debian.org" # define XFree86Devel YES # define BuildAllSpecsDocs YES +# define InstallXinitConfig YES +# define InstallXdmConfig YES +# define InstallFSConfig YES +# define DebuggableLibraries YES +# define ForceNormalLib YES +# define BuildSpecsDocs YES +# define SpecsDocDirs CTEXT GL ICCCM X11 Xext Xv i18n xterm +# 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 +# endif # define HasXdmAuth YES -/* modern LaTeX chokes on ancient sync.tex document */ -/* # define HasLatex YES */ -# define BuilderEMailAddr "submit@bugs.debian.org" -/* right now glide only works on i386 */ +# define HasLatex YES +/* at present, glide2 only works on i386 */ # ifdef i386Architecture -# define HasMMXSupport YES -# define Has3DNowSupport YES -/* 2.4 is not yet the official (or predominant) kernel in unstable */ -# define HasKatmaiSupport NO # define HasGlide2 YES # define Glide2IncDir /usr/include/glide +# endif /* i386Architecture */ +/* at present, glide3 only works on alpha and i386 */ +# if defined(i386Architecture) || defined(AlphaArchitecture) # define HasGlide3 YES # define Glide3IncDir /usr/include/glide3 +# endif /* i386Architecture || AlphaArchitecture */ +/* extended instruction set support */ +# ifdef i386Architecture +# define HasMMXSupport YES +# define Has3DNowSupport YES +/* 2.4 is not yet the official (or predominant) kernel in unstable */ +# define HasKatmaiSupport NO # endif /* i386Architecture */ -# endif /* DebianMaintiner */ +# endif /* DebianMaintainer */ #endif /* LinuxDebian */ #if LinuxDistribution == LinuxRedHat @@ -234,6 +244,9 @@ # endif #endif +/* Libtool on linux always uses minor numbers */ +#define LibtoolMinorVersions YES + /* On x86, determine whether to build with MTRR support */ #ifndef HasMTRRSupport # ifdef i386Architecture @@ -252,6 +265,8 @@ #ifndef XF86INT10_BUILD # ifdef i386Architecture # define XF86INT10_BUILD X86VM +# elif defined SparcArchitecture +# define XF86INT10_BUILD X86INT10_STUB # else # define XF86INT10_BUILD X86EMU_GENERIC # endif @@ -282,11 +297,13 @@ #endif /* - * Build shared libGL and the DRI modules without -fPIC. This improves - * performance. + * Build shared libGL and the DRI modules without -fPIC on some architectures. + * This improves performance. */ #if BuildXF86DRI +# if defined(i386Architecture) # define BuildLibGlxWithoutPIC YES +# endif #endif /* The DRM module requires kernel services that appeared in late 2.1.x @@ -470,8 +487,8 @@ # ifndef AsCmd # define AsCmd gcc -c -x assembler-with-cpp # endif -# ifndef DoLoadableServer -# define DoLoadableServer NO +# ifndef MakeDllModules +# define MakeDllModules YES # endif # endif /* MipsArchitecure */ # ifndef CcCmd @@ -515,12 +532,19 @@ # define LdCmd /usr/alpha-linuxecoff/bin/ld -m alpha # define AsmDefines -DUSE_GAS -U__ELF__ # endif /* AlphaArchitecture */ +# ifdef HPArchitecture +# define CcCmd gcc +# define CplusplusCmd g++ +# define AsCmd as +# define LdCmd ld +# define AsmDefines -DUSE_GAS -U__ELF__ +# endif /* HPArchitecture */ # ifdef ia64Architecture -# define CcCmd gcc -# define CplusplusCmd g++ -# define AsCmd as -# define LdCmd ld -# define AsmDefines -DUSE_GAS -U__ELF__ +# define CcCmd gcc +# define CplusplusCmd g++ +# define AsCmd as +# define LdCmd ld +# define AsmDefines -DUSE_GAS -U__ELF__ # endif /* ia64Architecture */ # ifdef i386Architecture # define CcCmd gcc -b i486-linuxaout @@ -553,6 +577,14 @@ # define LdCmd ld # define AsmDefines -D__ELF__ # endif /* ia64Architecture */ +# ifdef HPArchitecture +# define CcCmd gcc +# define CplusplusCmd g++ +# define AsCmd as +# define LdCmd ld +# define AsmDefines -D__ELF__ +# define SharedLibXau YES +# endif /* HPArchitecture */ # ifdef i386Architecture # define CcCmd gcc -b i486-linux # define AsCmd /usr/i486-linux/bin/as @@ -576,7 +608,11 @@ #endif #if UseElfFormat # ifndef DoLoadableServer -# define DoLoadableServer YES +# ifdef HPArchitecture +# define DoLoadableServer NO +# else +# define DoLoadableServer YES +# endif # endif #endif #ifndef CppCmd @@ -627,6 +663,14 @@ # define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines #endif /* s390Architecture */ +#ifdef s390xArchitecture +/*#define DefaultCCOptions -fsigned-char */ +#define OptimizedCDebugFlags -O3 +#define LinuxMachineDefines -D__s390x__ +#define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -DPART_NET +#define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines -D_XSERVER64 +#endif /* s390xArchitecture */ + #ifdef AlphaArchitecture # ifndef OptimizedCDebugFlags # define OptimizedCDebugFlags DefaultGcc2AxpOpt @@ -642,7 +686,7 @@ #ifdef Arm32Architecture # define DefaultCCOptions -fsigned-char # ifndef OptimizedCDebugFlags -# define OptimizedCDebugFlags -O3 +# define OptimizedCDebugFlags -O3 # endif # define LinuxMachineDefines -D__arm__ -D__arm32__ -U__arm -Uarm # define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -DPART_NET @@ -651,9 +695,9 @@ #ifdef ia64Architecture # ifndef OptimizedCDebugFlags -# define OptimizedCDebugFlags -O2 +# define OptimizedCDebugFlags -O2 # endif -# define LinuxMachineDefines -D__ia64__ +# define LinuxMachineDefines -D__ia64__ # define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -DPART_NET # define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines -D_XSERVER64 #endif /* ia64Architecture */ @@ -703,6 +747,38 @@ # define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines #endif +#ifdef HPArchitecture +# define OptimizedCDebugFlags -O2 +# define LinuxMachineDefines -D__hppa__ +# define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -DPART_NET +# define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines +#endif + +#ifdef SuperHArchitecture +# ifndef SuperHArchOptFlags +# ifdef SuperH4Architecture +# define SuperHArchOptFlags -m4 +# elifdef SuperH4NOFPUArchitecture +# define SuperHArchOptFlags -m4-nofpu +# else +# define SuperHArchOptFlags -m3 +# endif +# endif +# ifndef SuperHebArchitecture +# ifdef SuperHebArchitecture +# define SuperHEndianFlags -mb +# else +# define SuperHEndianFlags -ml +# endif +# endif +# ifndef OptimizedCDebugFlags +# define OptimizedCDebugFlags -O2 SuperHArchOptFlags SuperHEndianFlags +# endif +# define LinuxMachineDefines -D__sh__ +# define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -DPART_NET +# define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines +#endif + #ifndef StandardDefines # define StandardDefines -Dlinux LinuxMachineDefines LinuxSourceDefines #endif @@ -772,7 +848,7 @@ #define TtClientLibs $(TTLIB) $(XTOOLLIB) $(XLIB) #define TtClientDepLibs $(DEPTTLIB) $(DEPXTOOLLIB) $(DEPXLIB) -#ifdef s390Architecture +#if (defined s390Architecture) || (defined s390xArchitecture) # define HasXServer NO #endif Index: xc/config/cf/lnxLib.rules diff -u xc/config/cf/lnxLib.rules:3.40 xc/config/cf/lnxLib.rules:3.42 --- xc/config/cf/lnxLib.rules:3.40 Thu Feb 15 20:26:08 2001 +++ xc/config/cf/lnxLib.rules Tue Jan 15 19:39:59 2002 @@ -1,5 +1,5 @@ XCOMM $Xorg: lnxLib.rules,v 1.3 2000/08/17 19:41:47 cpqbld Exp $ -XCOMM $XFree86: xc/config/cf/lnxLib.rules,v 3.40 2001/02/16 01:26:08 dawes Exp $ +XCOMM $XFree86: xc/config/cf/lnxLib.rules,v 3.42 2002/01/16 00:39:59 keithp Exp $ /* * Linux shared library rules (DLL & ELF versions) @@ -141,7 +141,7 @@ LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK)) @@\ @@\ clean:: @@\ - @MAJREV=`expr rev : '\(.*\)\.'`; \ @@\ + @MAJREV=`expr rev : '\([^.]*\)'`; \ @@\ set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\ $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) @@ -180,11 +180,50 @@ LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK)) @@\ @@\ clean:: @@\ - @MAJREV=`expr rev : '\(.*\)\.'`; \ @@\ + @MAJREV=`expr rev : '\([^.]*\)'`; \ @@\ set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\ $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) #endif /* SharedDepLibraryTarget */ + +/* + * SharedDepCplusplusLibraryTarget - generate rules to create a shared library. + */ +#ifndef SharedDepCplusplusLibraryTarget +#ifdef UseInstalled +#ifndef LinkBuildSonameLibrary +#define LinkBuildSonameLibrary(lib) true +#endif +#else +#ifndef LinkBuildSonameLibrary +#define LinkBuildSonameLibrary(lib) (RemoveFile($(BUILDLIBDIR)/lib); \ + cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/lib .) +#endif +#endif + +#define SharedDepCplusplusLibraryTarget(libname,rev,deplist,solist,down,up) @@\ +AllTarget(Concat(lib,libname.so.rev)) @@\ + @@\ +Concat(lib,libname.so.rev): deplist $(EXTRALIBRARYDEPS) @@\ + $(RM) $@~ @@\ + @SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; set -x; \ @@\ + (cd down; $(CXX) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ + $(RM) $$SONAME; $(LN) $@ $$SONAME; \ @@\ + LinkBuildSonameLibrary($$SONAME) @@\ + $(RM) $@ @@\ + $(MV) $@~ $@ @@\ + @if $(SOSYMLINK); then (set -x; \ @@\ + $(RM) Concat(lib,libname.so); \ @@\ + $(LN) $@ Concat(lib,libname.so)); fi @@\ + LinkBuildLibrary($@) @@\ + LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK)) @@\ + @@\ +clean:: @@\ + @MAJREV=`expr rev : '\([^.]*\)'`; \ @@\ + set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\ + $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) + +#endif /* SharedDepCplusplusLibraryTarget */ #ifndef SharedDepModuleTarget #define SharedDepModuleTarget(name,deps,solist) @@\ Index: xc/config/cf/lnxLib.tmpl diff -u xc/config/cf/lnxLib.tmpl:3.13 xc/config/cf/lnxLib.tmpl:3.14 --- xc/config/cf/lnxLib.tmpl:3.13 Wed Jan 17 11:22:32 2001 +++ xc/config/cf/lnxLib.tmpl Tue Jul 31 20:44:32 2001 @@ -1,5 +1,5 @@ XCOMM $Xorg: lnxLib.tmpl,v 1.3 2000/08/17 19:41:47 cpqbld Exp $ -XCOMM $XFree86: xc/config/cf/lnxLib.tmpl,v 3.13 2001/01/17 16:22:32 dawes Exp $ +XCOMM $XFree86: xc/config/cf/lnxLib.tmpl,v 3.14 2001/08/01 00:44:32 tsi Exp $ /* * Linux shared library template @@ -20,24 +20,25 @@ #define CplusplusLibC #define SharedX11Reqs -#define SharedOldXReqs $(LDPRELIB) $(XLIBONLY) -#define SharedXtReqs $(LDPRELIB) $(XLIBONLY) $(SMLIB) $(ICELIB) -#define SharedXaw6Reqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XLIB) -#define SharedXawReqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XPMLIB) $(XLIB) -#define SharedXmuReqs $(LDPRELIB) $(XTOOLLIB) $(XLIB) -#define SharedXextReqs $(LDPRELIB) $(XLIBONLY) -#define SharedXiReqs $(LDPRELIB) $(XLIB) -#define SharedPexReqs $(LDPRELIB) $(XLIBONLY) MathLibrary -#define SharedXtstReqs $(LDPRELIB) $(XLIB) -#define SharedXieReqs $(LDPRELIB) $(XLIBONLY) -#define SharedSMReqs $(LDPRELIB) $(ICELIB) +#define SharedOldXReqs $(LDPRELIB) $(XLIBONLY) +#define SharedXtReqs $(LDPRELIB) $(XLIBONLY) $(SMLIB) $(ICELIB) +#define SharedXaw6Reqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XLIB) +#define SharedXawReqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XPMLIB) $(XLIB) +#define SharedXmuReqs $(LDPRELIB) $(XTOOLLIB) $(XLIB) +#define SharedXextReqs $(LDPRELIB) $(XLIBONLY) +#define SharedXiReqs $(LDPRELIB) $(XLIB) +#define SharedXrenderReqs $(LDPRELIB) $(EXTENSIONLIB) $(XLIB) +#define SharedPexReqs $(LDPRELIB) $(XLIBONLY) MathLibrary +#define SharedXtstReqs $(LDPRELIB) $(XLIB) +#define SharedXieReqs $(LDPRELIB) $(XLIBONLY) +#define SharedSMReqs $(LDPRELIB) $(ICELIB) #if GlxUseBuiltInDRIDriver #define ExtraSharedGLReqs /**/ #else #define ExtraSharedGLReqs -ldl #endif -#define SharedGLReqs $(LDPRELIB) $(XLIB) ExtraSharedGLReqs +#define SharedGLReqs $(LDPRELIB) $(XLIB) ExtraSharedGLReqs #else /* UseElfFormat */ Index: xc/config/cf/lnxdoc.rules diff -u xc/config/cf/lnxdoc.rules:3.22 xc/config/cf/lnxdoc.rules:3.26 --- xc/config/cf/lnxdoc.rules:3.22 Sun Dec 17 21:43:27 2000 +++ xc/config/cf/lnxdoc.rules Wed Dec 19 18:07:24 2001 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/config/cf/lnxdoc.rules,v 3.22 2000/12/18 02:43:27 dawes Exp $ +XCOMM $XFree86: xc/config/cf/lnxdoc.rules,v 3.26 2001/12/19 23:07:24 dawes Exp $ XCOMM XCOMM Rules for formatting Linuxdoc-SGML documentation XCOMM @@ -93,22 +93,26 @@ echo "\$$XFree86\$$" >> dstdir/textfile; \ @@\ else \ @@\ $(RM) __tmp1__ __tmp2__; \ @@\ - grep "Generated from XFree86:" textfile > __tmp1__; \ @@\ - grep "Generated from XFree86:" dstdir/textfile > __tmp2__; \ @@\ - if diff __tmp1__ __tmp2__ > /dev/null 2>&1; then :; \ @@\ + fgrep -v "\$$XFree86:" textfile > __tmp1__; \ @@\ + fgrep -v "\$$XFree86:" dstdir/textfile > __tmp2__; \ @@\ + if diff -B __tmp1__ __tmp2__ > /dev/null 2>&1; then :; \ @@\ else set -x; \ @@\ if [ "$(FOLLOWLINK)" = no ]; then \ @@\ $(RM) dstdir/textfile; \ @@\ fi; \ @@\ cp textfile dstdir/textfile ; \ @@\ echo "" >> dstdir/textfile; \ @@\ - echo "\$$XFree86\$$" >> dstdir/textfile; \ @@\ + echo "\$$XFree86"": \$$" >> dstdir/textfile; \ @@\ fi; \ @@\ fi; \ @@\ fi @@\ @$(RM) __tmp1__ __tmp2__ #endif +/* + * Avoid using LinuxDocTargetLong with base != sgmlfile because HTML + * index generation assumes that base == sgmlfile. + */ #define LinuxDocTargetLong(sgmlfile,textfile,base) @@\ LinuxDocSgmlToText(sgmlfile,textfile) @@\ LinuxDocSgmlToHtml(sgmlfile,base) @@\ Index: xc/config/cf/lynx.cf diff -u xc/config/cf/lynx.cf:3.43 xc/config/cf/lynx.cf:3.45 --- xc/config/cf/lynx.cf:3.43 Thu Apr 19 15:54:43 2001 +++ xc/config/cf/lynx.cf Thu Jan 3 11:33:49 2002 @@ -3,7 +3,7 @@ -XCOMM platform: $XFree86: xc/config/cf/lynx.cf,v 3.43 2001/04/19 19:54:43 dawes Exp $ +XCOMM platform: $XFree86: xc/config/cf/lynx.cf,v 3.45 2002/01/03 16:33:49 tsi Exp $ #ifndef OSName @@ -111,7 +111,7 @@ # define CcCmd gcc # endif # if OSMajorVersion > 2 || OSMinorVersion == 5 -# define DefaultCCOptions -ansi -pedantic -fcommon GccWarningOptions +# define DefaultCCOptions -ansi -pedantic -fcommon GccWarningOptions # endif #else # define CplusplusCmd g++ Index: xc/config/cf/nto.cf diff -u xc/config/cf/nto.cf:1.3 xc/config/cf/nto.cf:1.4 --- xc/config/cf/nto.cf:1.3 Fri Jul 7 16:06:56 2000 +++ xc/config/cf/nto.cf Fri Nov 16 11:47:50 2001 @@ -1,20 +1,23 @@ -/* $XFree86: xc/config/cf/nto.cf,v 1.3 2000/07/07 20:06:56 tsi Exp $ */ -/* Get X to build using the gcc toolchain, from QNX4 */ +/* $XFree86: xc/config/cf/nto.cf,v 1.4 2001/11/16 16:47:50 dawes Exp $ */ +/* Get X to build using the gcc toolchain, self hosted RTP x86 */ /* Let us try to separate the x86 stuff out of here as well... */ +/* don't want to conflict with QSSL's Xphoton in /usr/X11R6 */ +#define ProjectRoot /opt/X11R6 + #ifndef OSName -#define OSName Neutrino +#define OSName QNX6/Neutrino #endif #ifndef OSVendor #define OSVendor QNX Corp. #endif #ifndef OSMajorVersion -#define OSMajorVersion 2 +#define OSMajorVersion 6 #endif #ifndef OSMinorVersion -#define OSMinorVersion 0 +#define OSMinorVersion 1 #endif #if defined(i386Architecture) @@ -22,21 +25,27 @@ #else #define BuildServer NO #endif + +#define DoLoadableServer YES -/* Use a non-broken shell ... */ -#define BourneShell /bin/pdksh +#define BourneShell /bin/sh #define OSDefines -DNO_REGEX -DSTRINGS_ALIGNED #define XawI18nDefines -DUSE_XWCHAR_STRING -DUSE_XMBTOWC #define StripInstalledPrograms NO #define BuildLBX YES +#define ForceNormalLib YES -#define SourceDefines -D_POSIX_SOURCE -#define CrossCompiling YES +#define SourceDefines -D_POSIX_SOURCE -D_QNX_SOURCE +#define CrossCompiling NO #define DoRanlibCmd YES #define GccUsesGas YES #define MkdirHierCmd mkdir -p -#define InstallCmd /usr/X11R6/bin/install.qnx +#ifdef UseInstalled +#define InstallCmd install +#else +#define InstallCmd $(SHELL) $(CONFIGSRC)/util/install.sh +#endif #define DefaultCCOptions #define LibraryCCOptions #define ServerCCOptions @@ -52,7 +61,11 @@ #define HasSockets YES #define HasPutenv YES #define HasCbrt NO -#define HasShadowPasswd YES +#define HasShadowPasswd YES +#define HasSnprintf YES +#define HasBSD44Sockets YES + +#define BuildHtmlManPages NO /* We don't want HTML manpages */ #define AvoidNullMakeCommand YES #define CompressAllFonts YES @@ -68,7 +81,9 @@ #define NeedWidePrototypes NO #endif -#define LexLib +#define YaccCmd bison -y +#define LexCmd flex -l +#define LexLib -lfl #define TermcapLibrary -lncurses #ifndef UseStaticTermcapLib #define UseStaticTermcapLib NO @@ -81,12 +96,15 @@ #define BootstrapCFlags -D__QNXNTO__ -Di386 #define OSDefines -DNO_REGEX -DSTRINGS_ALIGNED #define NTODefines -D__i386__ -D__ELF__ -D__QNXNTO__ -D_i386 -#define CcCmd /usr/gcc/ntox86/bin/gcc -bntox86 -#define ArCmd /usr/gcc/bin/ar cq -#define LdCmd /usr/gcc/bin/ld -#define AsCmd /usr/gcc/ntox86/bin/as -#define RanlibCmd /usr/gcc/bin/ranlib -#define CppCmd /usr/gcc/lib/gcc-lib/ntox86/2.8.1/cpp +#define CcCmd gcc +#define CplusplusCmd g++ -fhonor-std -fno-builtin +#define ArCmd ar cq +#define LdCmd ld +#define AsCmd as +#define RanlibCmd ranlib +#define CppCmd /usr/bin/cpp +/* do this until NTO's cpp can support -undef in the future */ +#define RawCppCmd CppCmd -Uunix -Ui386 #define AsmDefines -DUSE_GAS -D__ELF__ -D__QNXNTO__ #define ExtraLibraries -lsocket #endif Index: xc/config/cf/nto.rules diff -u xc/config/cf/nto.rules:1.2 xc/config/cf/nto.rules:1.4 --- xc/config/cf/nto.rules:1.2 Sun Dec 26 19:45:44 1999 +++ xc/config/cf/nto.rules Tue Jan 15 19:40:00 2002 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/config/cf/nto.rules,v 1.2 1999/12/27 00:45:44 robin Exp $ +XCOMM $XFree86: xc/config/cf/nto.rules,v 1.4 2002/01/16 00:40:00 keithp Exp $ XCOMM Rules for QNX/Neutrino XCOMM Note that some of these will disappear when we stop cross-compiling @@ -36,16 +36,6 @@ clean:: @@\ RemoveFile(tofile) -XCOMM This special rule is used to install the install script. -XCOMM Else theres a name conflict with the QNX installer. - -#define QNXCopyInstaller(tofile, fromfile) @@\ -tofile:: @@\ - $(CP) fromfile tofile @@\ - @@\ -includes:: tofile - - #define ObjectFromSpecialSource(dst, src, flags) @@\ NoConfigRec(dst.c) @@\ @@\ @@ -111,8 +101,6 @@ @@\ ComplexHostProgramTarget(program) -#define HostLinkRule(target,flags,src,libs) @@\ - cc -F -o target src $(ALLINCLUDES) #ifndef FixupLibReferences #define FixupLibReferences() @@\ @@ -139,13 +127,14 @@ LinkBuildSonameLibrary($$SONAME) @@\ $(RM) $@ @@\ $(MV) $@~ $@ @@\ - $(RM) Concat(lib,libname.so) @@\ - $(LN) $@ Concat(lib,libname.so) @@\ + @if $(SOSYMLINK); then (set -x; \ @@\ + $(RM) Concat(lib,libname.so); \ @@\ + $(LN) $@ Concat(lib,libname.so)); fi @@\ LinkBuildLibrary($@) @@\ LinkBuildLibrary(Concat(lib,libname.so)) @@\ @@\ clean:: @@\ - @MAJREV=`expr rev : '\(.*\)\.'`; \ @@\ + @MAJREV=`expr rev : '\([^.]*\)'`; \ @@\ set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\ $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) #endif @@ -160,8 +149,9 @@ $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\ @T=`echo Concat($(DESTDIR)dest/lib,libname.so.rev) | sed 's/\.[^\.]*$$//'`;\ set -x; $(RM) $$T && $(LN) Concat(lib,libname.so.rev) $$T @@\ - $(RM) Concat($(DESTDIR)dest/lib,libname.so) @@\ - $(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so) + @if $(SOSYMLINK); then (set -x; \ + $(RM) Concat($(DESTDIR)dest/lib,libname.so); \ @@\ + $(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so)); fi #endif /* InstallSharedLibrary */ /* @@ -210,3 +200,59 @@ clean:: @@\ RemoveFile(ProgramTargetName(server)) #endif /* ServerTargetWithFlags */ + +/* + * SharedDepLibraryTarget - generate rules to create a shared library. + */ +#ifndef SharedDepLibraryTarget +#ifdef UseInstalled +#ifndef LinkBuildSonameLibrary +#define LinkBuildSonameLibrary(lib) true +#endif +#else +#ifndef LinkBuildSonameLibrary +#define LinkBuildSonameLibrary(lib) (RemoveFile($(BUILDLIBDIR)/lib); \ + cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/lib .) +#endif +#endif + +#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\ +AllTarget(Concat(lib,libname.so.rev)) @@\ + @@\ +Concat(lib,libname.so.rev): deplist $(EXTRALIBRARYDEPS) @@\ + $(RM) $@~ @@\ + @SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; set -x; \ @@\ + (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ + $(RM) $$SONAME; $(LN) $@ $$SONAME; \ @@\ + LinkBuildSonameLibrary($$SONAME) @@\ + $(RM) $@ @@\ + $(MV) $@~ $@ @@\ + @if $(SOSYMLINK); then (set -x; \ @@\ + $(RM) Concat(lib,libname.so); \ @@\ + $(LN) $@ Concat(lib,libname.so)); fi @@\ + LinkBuildLibrary($@) @@\ + LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK)) @@\ + @@\ +clean:: @@\ + @MAJREV=`expr rev : '\([^.]*\)'`; \ @@\ + set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\ + $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) + +#endif /* SharedDepLibraryTarget */ + +#ifndef SharedDepModuleTarget +#define SharedDepModuleTarget(name,deps,solist) @@\ +AllTarget(name) @@\ + + @@\ +name: deps @@\ + $(RM) $@~ @@\ + $(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\ + $(RM) $@ @@\ + $(MV) $@~ $@ @@\ + @@\ +clean:: @@\ + $(RM) name + +#endif /* SharedDepModuleTarget */ + Index: xc/config/cf/os2.cf diff -u xc/config/cf/os2.cf:3.34 xc/config/cf/os2.cf:3.36 --- xc/config/cf/os2.cf:3.34 Thu Apr 19 15:54:43 2001 +++ xc/config/cf/os2.cf Wed Nov 7 21:09:06 2001 @@ -2,7 +2,7 @@ -XCOMM platform: $XFree86: xc/config/cf/os2.cf,v 3.34 2001/04/19 19:54:43 dawes Exp $ +XCOMM platform: $XFree86: xc/config/cf/os2.cf,v 3.36 2001/11/08 02:09:06 tsi Exp $ #define OSName OS/2 #define OSVendor IBM @@ -150,7 +150,7 @@ #define ModuleCcCmd gcc_elf #define ModuleCppCmd cpp_elf -#define ModuleCFlags $(CDEBUGFLAGS) $(THREAD_CFLAGS) $(ALLDEFINES) +#define ModuleCFlags $(CDEBUGFLAGS) $(THREADS_CFLAGS) $(ALLDEFINES) #define ModuleAsCmd as_elf #define ModuleLdCmd ld_elf #define ModuleLdCombineFlags -X -r @@ -231,6 +231,7 @@ #define GzipFontCompression YES #define DefaultUserPath .;/os2;/emx/bin;/tcpip/bin;$(BINDIR) #define DefaultSystemPath /os2;/emx/bin;$(BINDIR) +#define CaseSensitiveFileSystem NO #ifndef ExtraFilesToClean # define ExtraFilesToClean *.~* *.exe *.dll *.obj *.lib *.map Index: xc/config/cf/sco5.cf diff -u xc/config/cf/sco5.cf:3.7 xc/config/cf/sco5.cf:3.8 --- xc/config/cf/sco5.cf:3.7 Sat Jul 25 01:57:16 1998 +++ xc/config/cf/sco5.cf Sat Jun 30 18:41:43 2001 @@ -1,18 +1,14 @@ -XCOMM $XFree86: xc/config/cf/sco5.cf,v 3.7 1998/07/25 05:57:16 dawes Exp $ +XCOMM $XFree86: xc/config/cf/sco5.cf,v 3.8 2001/06/30 22:41:43 tsi Exp $ /* - * This is for SCO Open Server 5.0.2 or later. + * This is for SCO Open Server 5.0.6A or later. */ -#ifndef ScoOsMouse -# define ScoOsMouse YES -#endif - #ifndef OSName -#define OSName UNIX System V/386 Open Server 5.0.4 +#define OSName UNIX System V/386 Open Server Release 5 #endif #ifndef OSVendor -#define OSVendor SCO +#define OSVendor Caldera #endif #ifndef OSMajorVersion #define OSMajorVersion 5 @@ -21,7 +17,7 @@ #define OSMinorVersion 0 #endif #ifndef OSTeenyVersion -#define OSTeenyVersion 4 +#define OSTeenyVersion 6 #endif /* @@ -35,7 +31,7 @@ * product of this is that we get better signals too. */ -#define StandardDefines -Dsco -DSCO -DSYSV -Di386 -DSCO325 -DFD_SETSIZE=256 -D_NO_STATIC +#define StandardDefines -Dsco -DSCO -DSYSV -Di386 -DSCO325 -DFD_SETSIZE=256 -D_NO_STATIC -DMAXPATHLEN=1024 #ifdef HasGcc2 # define DefaultCCOptions -melf GccWarningOptions # define CcCmd gcc @@ -69,22 +65,17 @@ #endif #define XawI18nDefines -DHAS_WCHAR_H -DHAS_ISW_FUNCS -#if ScoOsMouse -# define ServerExtraSysLibs $(CBRT) -lm -levent SCODynamicFlags -# define ServerExtraDefines ServerCCOptions -DUSE_OSMOUSE XFree86ServerDefines -#else -# define ServerExtraSysLibs $(CBRT) -lm SCODynamicFlags -# define ServerExtraDefines ServerCCOptions XFree86ServerDefines -#endif +#define ServerExtraSysLibs $(CBRT) -lm -levent SCODynamicFlags #define ExtraLibraries -lsocket #define NeedWidePrototypes NO -#define ServerOSDefines -DDDXTIME +#define ServerOSDefines -DDDXTIME XFree86ServerOSDefines #define ToolkitStringsABIOptions -intelabi #define ThreadedX NO #define HasThreadSafeAPI NO #define HasNdbm YES #define HasVFork YES #define HasPutenv YES +#define HasSnprintf YES #define ExecableScripts YES #define HasShadowPasswd YES #define ManSourcePath $(MANPATH)/cat. @@ -107,27 +98,24 @@ #define LdCombineFlags -r #define HasLdRunPath YES -#define HasPoll NO +#define HasPoll YES #define PatheticCpp YES #define ArCmdBase ar #define AsCmd as #define CppCmd /lib/cpp #define LdCmd ld -#define LexCmd lex +#define LexCmd flex #define MakeCmd make #define YaccCmd yacc #define DefaultUserPath /bin:/usr/bin:$(BINDIR):/usr/bin/X11:/usr/local/bin:/etc #define DefaultSystemPath /etc:/bin:/usr/bin:$(BINDIR):/usr/bin/X11 -/* - * If you are compiling on an SCO Open Server release prior to 5.0.2, - * you may need to remove -DLOCALCONN. There have been reports of it - * working on some 5.0.0 machines but not others. - */ #define ConnectionFlags -DLOCALCONN -DTCPCONN -DUNIXCONN +#define SharedGLUReqs $(LDPRELIB) $(XLIB) $(GLXLIB) + #define InstallManPageAliases(file,destdir,aliases) @@\ install.man:: @@\ @(SUFFIX=`echo $(DESTDIR)destdir/file.* | cut -f3,4 -d.`; \ @@\ @@ -140,7 +128,4 @@ #include /* minor changes to sv4Lib.rules */ #include -#ifdef i386Architecture #include -#endif - Index: xc/config/cf/scoLib.rules diff -u xc/config/cf/scoLib.rules:1.6 xc/config/cf/scoLib.rules:1.7 --- xc/config/cf/scoLib.rules:1.6 Wed Jan 17 11:22:33 2001 +++ xc/config/cf/scoLib.rules Sat Jun 30 18:41:43 2001 @@ -1,5 +1,5 @@ XCOMM $Xorg: scoLib.rules,v 1.3 2000/08/17 19:41:48 cpqbld Exp $ -XCOMM $XFree86: xc/config/cf/scoLib.rules,v 1.6 2001/01/17 16:22:33 dawes Exp $ +XCOMM $XFree86: xc/config/cf/scoLib.rules,v 1.7 2001/06/30 22:41:43 tsi Exp $ /* * SharedLibraryTarget3 - generate rules to create a shared library; @@ -24,12 +24,29 @@ $(RM) Concat(lib,libname.so); \ @@\ $(LN) $@ Concat(lib,libname.so)); fi @@\ LinkBuildLibrary($@) @@\ - LinkBuildLibraryMaybe(Concat(lib,libname.so)$(SOSYMLINK)) @@\ + LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK)) @@\ @@\ clean:: @@\ $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) #endif /* SharedLibraryTarget */ + +#ifndef LinkWithExports +# if UseExportLists +# define LinkWithExports(libname,rev,solist,down,up) \ + (cd down; $(CCENVSETUP) $(LD) -o up/$@~ $(SHLIBLDFLAGS) -h $(DESTDIR)$(SHLIBDIR)/$@ solist $(REQUIREDLIBS)) @@\ + if [ -f Concat(lib,libname.elist) ]; then \ @@\ + $(RM) down/$@.exports $@.list; \ @@\ + $(CPP) $(ALLINCLUDES) $(EXTRA_DEFINES) $(PROTO_DEFINES) $(THREADS_DEFINES) $(DEFINES) Concat(lib,libname.elist) | CppSedMagic >$@.list; \ @@\ + $(EXPORTLISTGEN) $@~ $@.list > down/$@.exports; \ @@\ + (cd down; $(CCENVSETUP) $(LD) -o up/$@~ $(SHLIBLDFLAGS) -h $@ ShlibExportListOpt($@.exports) solist $(REQUIREDLIBS)); \ @@\ + $(RM) down/$@.exports $@.list; \ @@\ + fi; +# else +# define LinkWithExports(libname,rev,solist,down,up) \ + (cd down; $(CCENVSETUP) $(LD) -o up/$@~ $(SHLIBLDFLAGS) -h $(DESTDIR)$(SHLIBDIR)/$@ solist $(REQUIREDLIBS)) +# endif +#endif /* * Redefine this so we can drop -b elf and build COFF objects for the Index: xc/config/cf/sun.cf diff -u xc/config/cf/sun.cf:3.56 xc/config/cf/sun.cf:3.61 --- xc/config/cf/sun.cf:3.56 Fri May 11 05:03:05 2001 +++ xc/config/cf/sun.cf Thu Jan 3 11:33:49 2002 @@ -3,7 +3,7 @@ -XCOMM platform: $XFree86: xc/config/cf/sun.cf,v 3.56 2001/05/11 09:03:05 alanh Exp $ +XCOMM platform: $XFree86: xc/config/cf/sun.cf,v 3.61 2002/01/03 16:33:49 tsi Exp $ #ifndef OSName # define OSName DefaultOSName @@ -168,21 +168,18 @@ # if OSMajorVersion > 4 # if OSMinorVersion >= 8 # define ServerExtraDefines AllocateLocalDefines XFree86ServerDefines \ - -D__EXTENSIONS__ -D__SOL8__ + -D__SOL8__ # else -# define ServerExtraDefines AllocateLocalDefines XFree86ServerDefines \ - -D__EXTENSIONS__ +# define ServerExtraDefines AllocateLocalDefines XFree86ServerDefines # endif -# define ServerOSDefines XFree86ServerOSDefines IncludeCG2HeaderDefine # else # define ServerExtraDefines AllocateLocalDefines -# define ServerOSDefines -DDDXOSINIT IncludeCG2HeaderDefine # endif #else -# define ServerExtraDefines AllocateLocalDefines -# define ServerOSDefines -DDDXOSINIT IncludeCG2HeaderDefine +# define ServerExtraDefines AllocateLocalDefines XFree86ServerDefines # define HasPlugin YES #endif +#define ServerOSDefines XFree86ServerOSDefines IncludeCG2HeaderDefine #ifndef HasPerl /* Solaris 8 comes with perl. Earlier versions don't. */ @@ -237,15 +234,17 @@ # define InstallCmd /usr/ucb/install # endif # ifdef i386Architecture -# define StandardDefines -Dsun -Di386 -DSVR4 -D__i386 +# define StandardDefines -Dsun -Di386 -DSVR4 -D__EXTENSIONS__ -D__i386 # define ToolkitStringsABIOptions -intelabi # else -# define StandardDefines -Dsun -DSVR4 +# define StandardDefines -Dsun -Dsparc -DSVR4 -D__EXTENSIONS__ # define ToolkitStringsABIOptions -sparcabi # endif # define ExtraLibraries -lsocket -lnsl # if OSMinorVersion > 1 -# define ThreadedX YES +# ifndef ThreadedX +# define ThreadedX YES +# endif # define MTSafeAPIDefines -DXUSE_MTSAFE_API -DXUSE_NETDB_R_API # if HasSunC && CCompilerMajorVersion > 2 # define ThreadsCompileFlags -mt @@ -310,14 +309,32 @@ # ifndef BuildPexExt # define BuildPexExt (XsunServer || Xsun24Server) # endif -#if (OSMajorVersion > 4) -# ifdef UseGas -# define AsVISOption -Av9a -# else -# define AsVISOption -xarch=v8plus -#endif -# define AsOutputArchSize 32 -#endif +# undef BuildXF86DRI +# undef BuildXF86DRM +# define BuildXF86DRI NO +# define BuildXF86DRM NO +# if (OSMajorVersion > 4) +# if !defined(AsOutputArchSize) || \ + ((AsOutputArchSize != 32) && (AsOutputArchSize != 64)) +# undef AsOutputArchSize +# define AsOutputArchSize 32 +# endif +# ifndef AsVISOption +# if AsOutputArchSize == 32 +# ifdef UseGas +# define AsVISOption -Av8plusa +# else +# define AsVISOption -xarch=v8plusa +# endif +# else +# ifdef UseGas +# define AsVISOption -Av9a +# else +# define AsVISOption -xarch=v9a +# endif +# endif +# endif +# endif #endif /* not i386Architecture */ #if OSMajorVersion >= 4 @@ -325,19 +342,16 @@ #endif #if HasGcc -# if OSMajorVersion > 4 && defined(i386Architecture) +# if OSMajorVersion > 4 # ifndef DefaultCCOptions # if UseInstalled # define DefaultCCOptions -DNO_ASM +# elif OSMinorVersion > 6 +# define DefaultCCOptions -DNO_ASM GccWarningOptions +# elif OSMinorVersion > 3 +# define DefaultCCOptions -DNO_ASM GccWarningOptions -ansi -pedantic # else -# if OSMinorVersion > 6 -# define DefaultCCOptions -DNO_ASM -D__EXTENSIONS__ GccWarningOptions -# elif OSMinorVersion > 3 -# define DefaultCCOptions -ansi -pedantic -DNO_ASM \ - -D__EXTENSIONS__ GccWarningOptions -# else -# define DefaultCCOptions -DNO_ASM -# endif +# define DefaultCCOptions -DNO_ASM # endif # endif # endif Index: xc/config/cf/sunLib.rules diff -u xc/config/cf/sunLib.rules:1.3 xc/config/cf/sunLib.rules:1.4 --- xc/config/cf/sunLib.rules:1.3 Wed Jan 17 11:38:49 2001 +++ xc/config/cf/sunLib.rules Sun May 27 22:42:25 2001 @@ -4,7 +4,7 @@ * SunOS shared library rules */ -XCOMM $XFree86: xc/config/cf/sunLib.rules,v 1.3 2001/01/17 16:38:49 dawes Exp $ +XCOMM $XFree86: xc/config/cf/sunLib.rules,v 1.4 2001/05/28 02:42:25 tsi Exp $ #ifndef HasSharedLibraries #define HasSharedLibraries YES @@ -26,14 +26,14 @@ #endif #ifndef PositionIndependentCFlags #if HasGcc2 -#define PositionIndependentCFlags -fpic +#define PositionIndependentCFlags -fPIC #else #define PositionIndependentCFlags -pic #endif #endif #ifndef PositionIndependentCplusplusFlags #if HasGcc2ForCplusplus -#define PositionIndependentCplusplusFlags -fpic +#define PositionIndependentCplusplusFlags -fPIC #else #define PositionIndependentCplusplusFlags -pic #endif Index: xc/config/cf/sv4Lib.rules diff -u xc/config/cf/sv4Lib.rules:3.7 xc/config/cf/sv4Lib.rules:3.8 --- xc/config/cf/sv4Lib.rules:3.7 Wed Jan 17 11:38:49 2001 +++ xc/config/cf/sv4Lib.rules Sun May 27 22:42:25 2001 @@ -4,7 +4,7 @@ * SVR4 shared library rules */ -XCOMM $XFree86: xc/config/cf/sv4Lib.rules,v 3.7 2001/01/17 16:38:49 dawes Exp $ +XCOMM $XFree86: xc/config/cf/sv4Lib.rules,v 3.8 2001/05/28 02:42:25 tsi Exp $ #ifndef HasSharedLibraries # define HasSharedLibraries YES @@ -26,14 +26,14 @@ #endif #ifndef PositionIndependentCFlags # if HasGcc2 -# define PositionIndependentCFlags -fpic +# define PositionIndependentCFlags -fPIC # else # define PositionIndependentCFlags -K PIC # endif #endif #ifndef PositionIndependentCplusplusFlags # if HasGcc2ForCplusplus -# define PositionIndependentCplusplusFlags -fpic +# define PositionIndependentCplusplusFlags -fPIC # else # define PositionIndependentCplusplusFlags -K PIC # endif Index: xc/config/cf/svr4.cf diff -u xc/config/cf/svr4.cf:3.43 xc/config/cf/svr4.cf:3.46 --- xc/config/cf/svr4.cf:3.43 Wed Jan 17 11:38:50 2001 +++ xc/config/cf/svr4.cf Tue Jan 15 17:59:23 2002 @@ -2,7 +2,7 @@ -XCOMM $XFree86: xc/config/cf/svr4.cf,v 3.43 2001/01/17 16:38:50 dawes Exp $ +XCOMM $XFree86: xc/config/cf/svr4.cf,v 3.46 2002/01/15 22:59:23 dawes Exp $ /* * A default OS name */ @@ -101,6 +101,11 @@ #define ArAddCmd ArCmdBase rus #endif +/* Libtool on SVR4 uses minor numbers */ +#ifndef LibtoolMinorVersions +#define LibtoolMinorVersions YES +#endif + #ifndef SunArchitecture /* * These come from usl.cf, and at least some are required by other @@ -238,11 +243,32 @@ #define SharedLibXdmGreet YES #endif -#if defined(i386Architecture) || defined(PpcArchitecture) +/* + * At this point, an XFree86 port to Sparc/SunOS cannot be officially supported + * because the system I am using to develop this is just a loaner from Sun. + */ +#if defined(i386Architecture) || \ + defined(PpcArchitecture) || \ + (defined(SparcArchitecture) && \ + defined(SunArchitecture) && \ + defined(BuildXFree86OnSparcSunOS)) #ifndef DoLoadableServer #define DoLoadableServer YES #endif #include +#endif + +#ifndef DoLoadableServer +# define DoLoadableServer NO +#endif +#ifndef GccWarningOptions +# define GccWarningOptions /* */ +#endif +#ifndef XFree86ServerDefines +# define XFree86ServerDefines /* */ +#endif +#ifndef XFree86ServerOSDefines +# define XFree86ServerOSDefines -DDDXOSINIT #endif #include Index: xc/config/cf/xf86.rules diff -u xc/config/cf/xf86.rules:3.33 xc/config/cf/xf86.rules:3.34 --- xc/config/cf/xf86.rules:3.33 Wed Jan 17 11:38:51 2001 +++ xc/config/cf/xf86.rules Wed Jul 18 22:22:44 2001 @@ -3,7 +3,7 @@ -XCOMM $XFree86: xc/config/cf/xf86.rules,v 3.33 2001/01/17 16:38:51 dawes Exp $ +XCOMM $XFree86: xc/config/cf/xf86.rules,v 3.34 2001/07/19 02:22:44 tsi Exp $ /* * These rules are needed to build the XFree86 X Servers @@ -109,7 +109,7 @@ #ifndef DriverObjectList #define DriverObjectList(drivers,list) @@\ -list: $(ICONFIGFILES) @@\ +list: $(ICONFIGFILES) drivers @@\ RemoveFile(list) @@\ @echo Creating list for drivers; \ @@\ DRIVERS="drivers"; \ @@\ Index: xc/config/cf/xf86.tmpl diff -u xc/config/cf/xf86.tmpl:3.28 xc/config/cf/xf86.tmpl:3.30 --- xc/config/cf/xf86.tmpl:3.28 Wed Jan 17 11:38:51 2001 +++ xc/config/cf/xf86.tmpl Thu Nov 15 19:41:47 2001 @@ -2,7 +2,7 @@ -XCOMM $XFree86: xc/config/cf/xf86.tmpl,v 3.28 2001/01/17 16:38:51 dawes Exp $ +XCOMM $XFree86: xc/config/cf/xf86.tmpl,v 3.30 2001/11/16 00:41:47 dawes Exp $ #ifdef BuilderEMailAddr BUILDERADDR = BuilderEMailAddr @@ -37,14 +37,26 @@ #define JoystickSupport NO #endif -/* Module support: These overrides must be here, not in xf86.rules, +/* + * Module support: These overrides must be here, not in xf86.rules, * because they will replace rules after having seen the first lines * of Imakefile (include ) */ +#ifndef HasGccMergeConstants +#define HasGccMergeConstants NO +#endif + +#if HasGccMergeConstants && DoLoadableServer && !MakeDllModules +MODULE_GCC_FLAGS = -fno-merge-constants +#endif + #if defined(IHaveModules) && MakeDllModules -MODULE_CFLAGS = $(PICFLAGS) +MODULE_PIC_FLAGS = $(PICFLAGS) #endif + +MODULE_CFLAGS = $(MODULE_PIC_FLAGS) $(MODULE_GCC_FLAGS) + #if defined(IHaveModules) # if DoLoadableServer MODULE_DEFINES = -DIN_MODULE -DXFree86Module @@ -53,7 +65,7 @@ # endif #endif -#if defined(IHaveModules) && DoLoadableServer && defined(OS2Architecture) +#if defined(IHaveModules) && DoLoadableServer /* This overrides the ObjCompile in Imake.rules! */ #undef ObjectCompile Index: xc/config/cf/xf86site.def diff -u xc/config/cf/xf86site.def:3.173 xc/config/cf/xf86site.def:3.179 --- xc/config/cf/xf86site.def:3.173 Thu Apr 5 15:29:36 2001 +++ xc/config/cf/xf86site.def Wed Jan 16 13:36:00 2002 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.173 2001/04/05 19:29:36 dawes Exp $ +XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.179 2002/01/16 18:36:00 dawes Exp $ /******************************************************************************/ /* * This file is to provide a quick method for most people to change the @@ -396,6 +396,13 @@ */ /* + * To enable binary compatibility with previous versions of the font + * encoding support, uncomment this. + * +#define FontencCompatibility YES + */ + +/* * 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) @@ -434,6 +441,12 @@ */ /* + * 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 @@ -467,8 +480,10 @@ /* * Select the XInput devices you want by uncommenting this. * -#define XInputDrivers mouse dynapro elo2300 elographics magellan microtouch \ - mutouch spaceorb wacom void +#define XInputDrivers mouse acecad calcomp citron \ + digitaledge dmc dynapro elographics \ + microtouch mutouch penmount spaceorb summa \ + wacom void magictouch */ /* @@ -698,7 +713,7 @@ * the docs that XFree86 has changed or added. * #define BuildSpecsDocs YES -#define SpecsDocDirs CTEXT GL ICCCM X11 Xext Xmu Xv i18n xterm +#define SpecsDocDirs CTEXT GL ICCCM X11 Xext Xmu Xv XvMC i18n xterm */ /* Index: xc/config/cf/xfree86.cf diff -u xc/config/cf/xfree86.cf:3.360.2.1 xc/config/cf/xfree86.cf:3.388 --- xc/config/cf/xfree86.cf:3.360.2.1 Tue May 22 17:25:40 2001 +++ xc/config/cf/xfree86.cf Thu Jan 3 17:51:54 2002 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/config/cf/xfree86.cf,v 3.360.2.1 2001/05/22 21:25:40 dawes Exp $ +XCOMM $XFree86: xc/config/cf/xfree86.cf,v 3.388 2002/01/03 22:51:54 alanh Exp $ /* * This configuration file contains all of the configuration * information for the XFree86 based X Servers. @@ -40,9 +40,9 @@ #ifndef XFree86VersionString #ifdef XF86_VERSION_MAJOR #if XF86_VERSION_SNAP == 0 -#define XFree86VersionString XF86_VERSION_MAJOR.XF86_VERSION_MINOR.XF86_VERSION_PATCH +#define XFree86VersionString `echo XF86_VERSION_MAJOR XF86_VERSION_MINOR XF86_VERSION_PATCH | sed 's/ /./g'` #else -#define XFree86VersionString XF86_VERSION_MAJOR.XF86_VERSION_MINOR.XF86_VERSION_PATCH.XF86_VERSION_SNAP +#define XFree86VersionString `echo XF86_VERSION_MAJOR XF86_VERSION_MINOR XF86_VERSION_PATCH XF86_VERSION_SNAP | sed 's/ /./g'` #endif #endif #endif @@ -120,11 +120,16 @@ #endif #endif -#if BuildXFree86ConfigTools +#ifndef BuildLibrariesForConfigTools +#define BuildLibrariesForConfigTools BuildXFree86ConfigTools +#endif + +#if BuildXFree86ConfigTools && BuildLibrariesForConfigTools #define BuildLibraries YES #define BuildXF86MiscLibrary YES #define BuildXF86VidModeLibrary YES #define BuildXKBlib YES +#define BuildXKBfilelib YES #define BuildXKBuilib YES #endif @@ -134,16 +139,11 @@ /* XInput drivers */ #ifndef XInputDrivers -#if 1 -#define XInputDrivers mouse digitaledge dynapro elographics \ - microtouch mutouch spaceorb summa \ - wacom void citron -#else -#define XInputDrivers mouse digitaledge dynapro elo2300 \ - elographics magellan citron \ - microtouch mutouch spaceorb summa wacom void +#define XInputDrivers mouse /* acecad */ calcomp citron \ + digitaledge dmc dynapro elographics \ + microtouch mutouch penmount spaceorb summa \ + wacom void /* magictouch */ hyperpen #endif -#endif /* support mainly for USB support */ #ifndef HasLinuxInput @@ -291,10 +291,13 @@ # define AgpGartDrivers /**/ # endif -/* Drivers under development, but not ready for binary releases */ +/* + * Drivers under development, but not ready for binary releases, or + * drivers included on this platform only for build testing. + */ # ifndef DevelDrivers # if XFree86Devel -# define DevelDrivers imstt +# define DevelDrivers imstt newport # else # define DevelDrivers /**/ # endif @@ -302,7 +305,7 @@ /* Pure PCI drivers should go first */ # ifndef XF86CardDrivers -# define XF86CardDrivers mga glint nv tga s3virge sis rendition \ +# define XF86CardDrivers mga glint nv tga s3 s3virge sis rendition \ neomagic i740 tdfx savage \ cirrus vmware tseng trident chips apm \ GlideDriver fbdev i128 \ @@ -316,7 +319,7 @@ # define TdfxDriDriver /**/ # endif # ifndef DriDrivers -# define DriDrivers gamma TdfxDriDriver mga i810 r128 radeon sis +# define DriDrivers gamma TdfxDriDriver mga i810 i830 r128 radeon sis # endif #endif @@ -325,8 +328,7 @@ #if defined(SparcArchitecture) && \ !defined(LynxOSArchitecture) && \ !defined(NetBSDArchitecture) && \ - !defined(OpenBSDArchitecture) && \ - !defined(SunArchitecture) + !defined(OpenBSDArchitecture) # ifndef XF86Server # define XF86Server YES # endif @@ -472,7 +474,7 @@ # endif # ifndef XF86CardDrivers -# define XF86CardDrivers mga glint nv s3virge sis savage \ +# define XF86CardDrivers mga glint nv s3 s3virge sis savage \ trident chips tdfx fbdev ati \ DevelDrivers newport \ XF86OSCardDrivers XF86ExtraCardDrivers @@ -547,7 +549,7 @@ # ifndef DevelDrivers # if XFree86Devel -# define DevelDrivers ati +# define DevelDrivers /* */ # else # define DevelDrivers /* */ # endif @@ -555,7 +557,7 @@ /* Pure PCI drivers should go first */ # ifndef XF86CardDrivers -# define XF86CardDrivers mga tdfx glint s3virge rendition tga \ +# define XF86CardDrivers mga tdfx glint s3 s3virge rendition tga ati \ savage nv DevelDrivers siliconmotion vga \ XF86OSCardDrivers XF86ExtraCardDrivers # endif @@ -571,8 +573,10 @@ /* * For Motorola 68k and PPC (currently Linux, LynxOS and Net/OpenBSD) + * and Intel StrongARM (currently Linux, maybe NetBSD) */ -#if defined(PpcArchitecture) || defined(Mc68020Architecture) +#if defined(PpcArchitecture) || defined(Mc68020Architecture) || \ + defined(Arm32Architecture) || defined(HPArchitecture) # ifndef XF86Server # define XF86Server YES # endif @@ -640,7 +644,7 @@ # ifndef DevelDrivers # if XFree86Devel -# define DevelDrivers ati imstt +# define DevelDrivers imstt # else # define DevelDrivers /* */ # endif @@ -648,7 +652,7 @@ /* Pure PCI drivers should go first */ # ifndef XF86CardDrivers -# define XF86CardDrivers mga glint s3virge sis savage\ +# define XF86CardDrivers ati mga glint s3 s3virge sis savage\ trident chips tdfx fbdev \ DevelDrivers vga \ XF86OSCardDrivers XF86ExtraCardDrivers @@ -664,6 +668,72 @@ #endif +/* SuperH drivers */ + +#if defined(SuperHArchitecture) +# ifndef XF86Server +# define XF86Server YES +# endif +/* 1bpp module */ +# ifndef XF1Bpp +# define XF1Bpp YES +# endif +/* 4bpp module */ +# ifndef XF4Bpp +# define XF4Bpp YES +# endif +/* 8/32bpp overlay module */ +# ifndef XF8_32Bpp +# define XF8_32Bpp YES +# endif +/* 8/16bpp dual fb module */ +# ifndef XF8_16Bpp +# define XF8_16Bpp YES +# endif +/* 24/32bpp conversion module */ +# ifndef XF24_32Bpp +# define XF24_32Bpp YES +# endif +/* shadow fb module */ +# ifndef XFShadowFB +# define XFShadowFB YES +# endif +/* fbdevhw module */ +# ifndef XF86FBDevHw +# define XF86FBDevHw YES +# endif +/* XAA module */ +# ifndef XF86XAA +# define XF86XAA YES +# endif +/* ramdac module */ +# ifndef XF86Ramdac +# define XF86Ramdac YES +# endif +/* I2C module */ +# ifndef XF86I2C +# define XF86I2C YES +# endif +/* DDC module */ +# ifndef XF86DDC +# define XF86DDC YES +# endif +/* RAC (Resource Access Control) module */ +# ifndef XF86RAC +# define XF86RAC YES +# endif + +/* int10 module */ +# ifndef XF86Int10 +# define XF86Int10 YES +# endif + +# ifndef XF86CardDrivers +# define XF86CardDrivers fbdev XF86OSCardDrivers XF86ExtraCardDrivers +# endif +#endif + + /* * For Mips/Arc platforms, the default is to build all modules which * are supported on this platform. @@ -680,6 +750,14 @@ # define DebugDefines /**/ #endif +#ifndef XF86Server +# define XF86Server NO +#endif +#if !XF86Server +# undef DoLoadableServer +# define DoLoadableServer NO +#endif + /* * Fbdev module defines. They are set to indicate the fb types supported * on different architectures. @@ -733,14 +811,13 @@ * The server-side of PEX is not 64-bit clean. */ #if !defined(BuildPexExt) -# if XF86Server && !defined(AlphaArchitecture) && !defined(ia64Architecture) -# define BuildPexExt YES +# if XF86Server && !defined(AlphaArchitecture) && !defined(ia64Architecture) && !defined(s390xArchitecture) +# define BuildPexExt NO /* But we turn off PEX anyway now */ # else # define BuildPexExt NO # endif #endif - /* * Build GLX server interface * --- Doesn't work for 1-bit and 4-bit servers @@ -779,6 +856,9 @@ # ifndef GlxBuiltInI810 # define GlxBuiltInI810 NO # endif +# ifndef GlxBuiltInI830 +# define GlxBuiltInI830 NO +# endif # ifndef GlxBuiltInR128 # define GlxBuiltInR128 NO # endif @@ -795,6 +875,7 @@ # if GlxBuiltInTdfx || \ GlxBuiltInMga || \ GlxBuiltInI810 || \ + GlxBuiltInI830 || \ GlxBuiltInR128 || \ GlxBuiltInRadeon || \ GlxBuildInFfb || \ @@ -806,6 +887,7 @@ GlxBuiltInTdfx || \ GlxBuiltInMga || \ GlxBuiltInI810 || \ + GlxBuiltInI830 || \ GlxBuiltInR128 || \ GlxBuiltInRadeon || \ GlxBuiltInFfb || \ @@ -832,6 +914,9 @@ # if GlxBuiltInI810 # define DriDrivers i810 # endif +# if GlxBuiltInI830 +# define DriDrivers i830 +# endif # if GlxBuiltInR128 # define DriDrivers r128 # endif @@ -878,15 +963,16 @@ # define GlxCoreLibDefines /**/ # endif -# if defined(SparcArchitecture) || defined(ia64Architecture) +# if defined(SparcArchitecture) || defined(ia64Architecture) || defined(s390xArchitecture) # define GlxArchDefines -D__GLX_ALIGN64 -# else -# if defined(AlphaArchitecture) +# elif defined(AlphaArchitecture) /* On the Alpha we need to ensure floating point accuracy for 3D */ -# define GlxArchDefines -mieee -# else -# define GlxArchDefines /**/ -# endif +# define GlxArchDefines -D__GLX_ALIGN64 -mieee +# elif defined(DarwinArchitecture) +/* GLX contains lots of uninitalized globals, which can upset Darwin */ +# define GlxArchDefines -fno-common +# else +# define GlxArchDefines /**/ # endif # ifndef GlxExtraDefines @@ -932,16 +1018,12 @@ */ #ifndef BuildXIE # if XF86Server -# define BuildXIE YES +# define BuildXIE NO # else # define BuildXIE NO # endif #endif -#ifndef BuildXIElib -# define BuildXIElib YES -#endif - #ifndef BuildDBElib # define BuildDBElib YES #endif @@ -1001,6 +1083,9 @@ #ifndef BuildXvLibrary # define BuildXvLibrary YES #endif +#ifndef BuildXvMCLibrary +# define BuildXvMCLibrary YES +#endif #ifndef BuildGLXLibrary # define BuildGLXLibrary YES #endif @@ -1029,13 +1114,6 @@ #endif /* - * Build SuperProbe - */ -#ifndef BuildSuperProbe -# define BuildSuperProbe NO -#endif - -/* * Build XF86Setup -- needs Tk and Tcl */ /* There are problems building XF86Setup, so turn it off for now */ @@ -1080,6 +1158,13 @@ # define BuildXvExt YES #endif +/* + * Build the X Video Motion Compensation Extension + */ +#ifndef BuildXvMCExt +# define BuildXvMCExt YES +#endif + #if Malloc0ReturnsNull # ifndef XtMalloc0ReturnsNullDefines @@ -1158,12 +1243,12 @@ #ifndef BuildCIDFonts # define BuildCIDFonts YES #endif +#ifndef BuildTrueTypeFonts +# define BuildTrueTypeFonts YES +#endif #ifndef BuildCyrillicFonts # define BuildCyrillicFonts YES #endif -#ifndef BuildLatin2Fonts -# define BuildLatin2Fonts YES -#endif #ifndef UseKoi8RForCyrillic # define UseKoi8RForCyrillic YES #endif @@ -1219,6 +1304,12 @@ # define XFree86XvDefines /**/ #endif +#if BuildXvMCExt +# define XFree86XvMCDefines -DXvMCExtension +#else +# define XFree86XvMCDefines /**/ +#endif + #ifndef DlopenHack # define DlopenHack -DDLOPEN_HACK #endif @@ -1267,6 +1358,7 @@ XFree86DGADefines XFree86XvDefines \ XFree86LoaderDefines -DXFree86Server \ VidModeExtensionDefines \ + XFree86XvMCDefines \ ServerSnprintfDefines \ SmartScheduleDefines \ DebugDefines \ Index: xc/config/imake/Imakefile diff -u xc/config/imake/Imakefile:3.11 xc/config/imake/Imakefile:3.12 --- xc/config/imake/Imakefile:3.11 Wed Jan 24 12:28:55 2001 +++ xc/config/imake/Imakefile Thu Nov 15 19:45:05 2001 @@ -3,7 +3,7 @@ XCOMM XCOMM XCOMM -XCOMM $XFree86: xc/config/imake/Imakefile,v 3.11 2001/01/24 17:28:55 tsi Exp $ +XCOMM $XFree86: xc/config/imake/Imakefile,v 3.12 2001/11/16 00:45:05 dawes Exp $ XCOMM Some compilers generate fatal errors if an -L directory does XCOMM not exist. Since BUILDLIBDIR may not exist yet suppress its use. @@ -15,7 +15,9 @@ INCLUDES = -I$(TOP)/include $(TOP_X_INCLUDES)/X11 CPP_PROGRAM = CppCmd CPP_DEFINES = -DCPP_PROGRAM="\"$(CPP_PROGRAM)\"" -DEFINES = $(SIGNAL_DEFINES) $(BOOTSTRAPCFLAGS) $(CPP_DEFINES) +GCC_COMMAND = $(CC) -fmerge-constants -xc /dev/null -S -o /dev/null 2> /dev/null 1> /dev/null +GCC_DEFINES = -DHAS_MERGE_CONSTANTS=`if $(GCC_COMMAND); then echo 1; else echo 0; fi` +DEFINES = $(SIGNAL_DEFINES) $(BOOTSTRAPCFLAGS) $(CPP_DEFINES) $(GCC_DEFINES) #if defined(MacIIArchitecture) || defined(SequentArchitecture) || defined(i386ScoArchitecture) XBSDLIB = /**/ Index: xc/config/imake/ccimake.c diff -u xc/config/imake/ccimake.c:1.2 xc/config/imake/ccimake.c:1.3 --- xc/config/imake/ccimake.c:1.2 Sun Apr 1 09:59:56 2001 +++ xc/config/imake/ccimake.c Fri Dec 14 14:53:18 2001 @@ -1,9 +1,13 @@ -/* $Xorg: ccimake.c,v 1.3 2000/08/17 19:41:50 cpqbld Exp $ */ +/* $Xorg: ccimake.c,v 1.4 2001/02/09 02:03:15 xorgcvs Exp $ */ /* Copyright (c) 1993, 1994, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -20,7 +24,7 @@ in this Software without prior written authorization from The Open Group . */ -/* $XFree86: xc/config/imake/ccimake.c,v 1.2 2001/04/01 13:59:56 tsi Exp $ */ +/* $XFree86: xc/config/imake/ccimake.c,v 1.3 2001/12/14 19:53:18 dawes Exp $ */ /* * Warning: This file must be kept as simple as posible so that it can Index: xc/config/imake/imake.c diff -u xc/config/imake/imake.c:3.41 xc/config/imake/imake.c:3.48 --- xc/config/imake/imake.c:3.41 Wed Jan 17 11:38:55 2001 +++ xc/config/imake/imake.c Fri Dec 14 14:53:18 2001 @@ -1,4 +1,3 @@ -/* $Id */ /*************************************************************************** * * @@ -8,13 +7,17 @@ * be passed to the template file. * * * ***************************************************************************/ -/* $XFree86: xc/config/imake/imake.c,v 3.41 2001/01/17 16:38:55 dawes Exp $ */ +/* $XFree86: xc/config/imake/imake.c,v 3.48 2001/12/14 19:53:18 dawes Exp $ */ /* * Copyright (c) 1985, 1986, 1987, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -44,6 +47,8 @@ * on the Makefile. * Options: * -D define. Same as cpp -D argument. + * -U undefine. Same as cpp -U argument. + * -W warning. Same as cpp -W argument. * -I Include directory. Same as cpp -I argument. * -T template. Designate a template other * than Imake.tmpl @@ -149,9 +154,7 @@ #include #include #include "Xosdefs.h" -#ifndef X_NOT_STDC_ENV #include -#endif #include #ifdef WIN32 # include "Xw32defs.h" @@ -224,27 +227,16 @@ # define WIFEXITED(w) waitCode(w) # endif #endif /* X_NOT_POSIX */ -#ifndef X_NOT_STDC_ENV -# include -#else -char *malloc(), *realloc(); -void exit(); -#endif +#include #if defined(macII) && !defined(__STDC__) /* stdlib.h fails to define these */ char *malloc(), *realloc(); #endif /* macII */ -#ifdef X_NOT_STDC_ENV -extern char *getenv(); -#endif #include -#ifdef X_NOT_STDC_ENV -extern int errno; -#endif #ifdef __minix_vmd #define USE_FREOPEN 1 #endif -#if !(defined(X_NOT_STDC_ENV) || (defined(sun) && !defined(SVR4)) || defined(macII)) +#if !((defined(sun) && !defined(SVR4)) || defined(macII)) #define USE_STRERROR 1 #endif #ifdef __EMX__ @@ -270,11 +262,6 @@ #include #endif -/* - * is strstr() in on X_NOT_STDC_ENV? - * are there any X_NOT_STDC_ENV machines left in the world? - */ -#include #include "imakemdep.h" /* @@ -294,7 +281,7 @@ #include #endif -#if !(defined(Lynx) || defined(__Lynx__) || (defined(SVR4) && !defined(sun))) +#if !(defined(Lynx) || defined(__Lynx__) || (defined(SVR4) && !defined(sun))) && !defined(__CYGWIN__) #define HAS_MKSTEMP #endif @@ -318,7 +305,7 @@ * space instead of being deleted. Blech. */ #ifdef FIXUP_CPP_WHITESPACE -void KludgeOutputLine(), KludgeResetRule(); +void KludgeOutputLine(char **), KludgeResetRule(void); #else # define KludgeOutputLine(arg) # define KludgeResetRule() @@ -399,7 +386,7 @@ int main(int argc, char *argv[]) { - FILE *tmpfd; + FILE *tmpfd = NULL; char makeMacro[ BUFSIZ ]; char makefileMacro[ BUFSIZ ]; @@ -414,7 +401,9 @@ if ((tmpfd = fopen(tmpMakefile, "w+")) == NULL) LogFatal("Cannot create temporary file %s.", tmpMakefile); } else { +#ifdef HAS_MKSTEMP int fd; +#endif tmpMakefile = Strdup(tmpMakefile); #ifndef HAS_MKSTEMP if (mktemp(tmpMakefile) == NULL || @@ -587,6 +576,8 @@ AddCppArg(argv[0]); } else if (argv[0][1] == 'U') { AddCppArg(argv[0]); + } else if (argv[0][1] == 'W') { + AddCppArg(argv[0]); } else if (argv[0][1] == 'f') { if (argv[0][2]) Imakefile = argv[0]+2; @@ -1052,8 +1043,13 @@ } while (c != EOF && !isdigit (c)); ungetc (c, ldprog); (void) fscanf (ldprog, "%d.%d", &ldmajor, &ldminor); + /* Start conversion to a more rational number */ + if ((ldmajor > 2) || ((ldmajor == 2) && (ldminor > 9))) + ldmajor *= 100; + else + ldmajor *= 10; fprintf(inFile, "#define DefaultLinuxBinUtilsMajorVersion %d\n", - ldmajor * 10 + ldminor); + ldmajor + ldminor); pclose (ldprog); } } @@ -1154,6 +1150,9 @@ #endif fprintf (inFile, "#define GccMajorVersion %d\n", __GNUC__); fprintf (inFile, "#define GccMinorVersion %d\n", __GNUC_MINOR__); +#if defined(HAS_MERGE_CONSTANTS) + fprintf (inFile, "#define HasGccMergeConstants %d\n", HAS_MERGE_CONSTANTS); +#endif } #endif @@ -1383,7 +1382,9 @@ strcmp(ptoken, "pragma") && strcmp(ptoken, "undef")) { if (outFile == NULL) { +#ifdef HAS_MKSTEMP int fd; +#endif tmpImakefile = Strdup(tmpImakefile); #ifndef HAS_MKSTEMP if (mktemp(tmpImakefile) == NULL || @@ -1573,7 +1574,7 @@ initialized = TRUE; fprintf (tmpfd, "# Makefile generated by imake - do not edit!\n"); fprintf (tmpfd, "# %s\n", - "$Xorg: imake.c,v 1.5 2000/08/18 04:03:59 coskrey Exp $"); + "$Xorg: imake.c,v 1.6 2001/02/09 02:03:15 xorgcvs Exp $"); } for (p1 = pline; p1 < end; p1++) { Index: xc/config/imake/imake.man diff -u xc/config/imake/imake.man:1.7 xc/config/imake/imake.man:1.8 --- xc/config/imake/imake.man:1.7 Wed Feb 7 17:51:55 2001 +++ xc/config/imake/imake.man Fri Dec 14 14:53:19 2001 @@ -1,7 +1,11 @@ -.\" $Xorg: imake.man,v 1.3 2000/08/17 19:41:50 cpqbld Exp $ +.\" $Xorg: imake.man,v 1.4 2001/02/09 02:03:16 xorgcvs Exp $ .\" Copyright (c) 1993, 1994, 1998 The Open Group .\" -.\" All Rights Reserved. +.\" Permission to use, copy, modify, distribute, and sell this software and its +.\" documentation for any purpose is hereby granted without fee, 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. @@ -19,7 +23,7 @@ .\" other dealings in this Software without prior written authorization .\" from The Open Group. .\" -.\" $XFree86: xc/config/imake/imake.man,v 1.7 2001/02/07 22:51:55 tsi Exp $ +.\" $XFree86: xc/config/imake/imake.man,v 1.8 2001/12/14 19:53:19 dawes Exp $ .\" .TH IMAKE 1 __xorgversion__ .SH NAME Index: xc/config/imake/imakemdep.h diff -u xc/config/imake/imakemdep.h:3.50 xc/config/imake/imakemdep.h:3.56 --- xc/config/imake/imakemdep.h:3.50 Wed Apr 25 12:44:54 2001 +++ xc/config/imake/imakemdep.h Fri Dec 14 14:53:19 2001 @@ -1,9 +1,13 @@ -/* $Xorg: imakemdep.h,v 1.5 2000/08/17 19:41:50 cpqbld Exp $ */ +/* $Xorg: imakemdep.h,v 1.6 2001/02/09 02:03:16 xorgcvs Exp $ */ /* Copyright (c) 1993, 1994, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -20,7 +24,7 @@ in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/config/imake/imakemdep.h,v 3.50 2001/04/25 16:44:54 tsi Exp $ */ +/* $XFree86: xc/config/imake/imakemdep.h,v 3.56 2001/12/14 19:53:19 dawes Exp $ */ /* @@ -65,7 +69,7 @@ #ifdef imake_ccflags #undef imake_ccflags #endif -#define imake_ccflags "-Dsco -DSYSV" +#define imake_ccflags "-Dsco -DSYSV -DSCO -DSCO325" #endif #ifdef sony @@ -292,12 +296,16 @@ #define DEFAULT_CPP "cpp" #endif #ifdef __CYGWIN__ -#define USE_CC_E #define DEFAULT_CC "gcc" +#define DEFAULT_CPP "/usr/bin/cpp" #endif #if defined (__QNX__) +#ifdef __QNXNTO__ +#define DEFAULT_CPP "/usr/bin/cpp" +#else #define DEFAULT_CPP "/usr/X11R6/bin/cpp" #endif +#endif /* * Step 5: cpp_argv * The following table contains the flags that should be passed @@ -352,12 +360,30 @@ # ifdef __arm__ "-D__arm__", # endif +# ifdef __s390x__ + "-D__s390x__", +# endif # ifdef __sparc__ "-D__sparc__", # endif # ifdef __m68k__ "-D__m68k__", # endif +# ifdef __sh__ + "-D__sh__", +# endif +# ifdef __sh3__ + "-D__sh3__", +# endif +# ifdef __SH3__ + "-D__SH3__", +# endif +# ifdef __SH4__ + "-D__SH4__", +# endif +# ifdef __SH4NOFPU__ + "-D__SH4_NOFPU__", +# endif # ifdef __GNUC__ "-traditional", # endif @@ -460,7 +486,7 @@ # ifdef SCO "-DSCO", # ifdef _SCO_DS - "-DSCO325 -DSVR4", + "-DSCO325", # endif # endif # endif @@ -498,7 +524,7 @@ # ifdef SCO "-DSCO", # ifdef _SCO_DS - "-DSCO325 -DSVR4", + "-DSCO325", # endif # endif # ifdef ESIX @@ -642,6 +668,9 @@ #if defined(i386) "-Di386", #endif +#if defined(__i386__) + "-D__i386__", +#endif #if defined(PPC) "-DPPC", #endif @@ -1119,6 +1148,21 @@ # endif # ifdef __s390__ {"__s390__", "1"}, +# endif +# ifdef __sh__ + {"__sh__", "1"}, +# endif +# ifdef __sh3_ + {"__sh3__", "1"}, +# endif +# ifdef __SH3__ + {"__SH3__", "1"}, +# endif +# ifdef __SH4__ + {"__SH4__", "1"}, +# endif +# ifdef __SH4NOFPU__ + {"__SH4NOFPU__", "1"}, # endif #if defined(__ppc__) {"__ppc__", "1"}, Index: xc/config/makedepend/Imakefile diff -u xc/config/makedepend/Imakefile:3.8 xc/config/makedepend/Imakefile:3.11 --- xc/config/makedepend/Imakefile:3.8 Wed Jan 17 11:38:57 2001 +++ xc/config/makedepend/Imakefile Tue Oct 9 17:40:21 2001 @@ -3,7 +3,7 @@ XCOMM XCOMM XCOMM -XCOMM $XFree86: xc/config/makedepend/Imakefile,v 3.8 2001/01/17 16:38:57 dawes Exp $ +XCOMM $XFree86: xc/config/makedepend/Imakefile,v 3.11 2001/10/09 21:40:21 alanh Exp $ SRCS = include.c main.c parse.c pr.c cppsetup.c ifparser.c OBJS = include.o main.o parse.o pr.o cppsetup.o ifparser.o @@ -29,7 +29,12 @@ POSTINCDIR = PostIncDir POSTINC_DEFINES = -DPOSTINCDIR=\"$(POSTINCDIR)\" #endif -INC_DEFINES = $(PREINC_DEFINES) $(STDINC_DEFINES) $(POSTINC_DEFINES) +#ifdef ExtraIncDir +EXTRAINCDIR = ExtraIncDir +EXTRAINC_DEFINES = -DEXTRAINCDIR=\"$(EXTRAINCDIR)\" +#endif +INC_DEFINES = $(PREINC_DEFINES) $(STDINC_DEFINES) $(POSTINC_DEFINES) \ + $(EXTRAINC_DEFINES) OSUF = .Osuf OSUF_DEFINES = -DOBJSUFFIX=\"$(OSUF)\" MAIN_DEFINES = $(INC_DEFINES) $(SIGNAL_DEFINES) $(OSUF_DEFINES) @@ -41,7 +46,7 @@ XBSDLIB = /**/ #endif -AllTarget(ProgramTargetName(makedepend)) +AllTarget(HostProgramTargetName(makedepend)) /* * bootstrapping: want to build the real makedepend Index: xc/config/makedepend/cppsetup.c diff -u xc/config/makedepend/cppsetup.c:3.9 xc/config/makedepend/cppsetup.c:3.11 --- xc/config/makedepend/cppsetup.c:3.9 Sun Apr 29 19:25:02 2001 +++ xc/config/makedepend/cppsetup.c Mon Dec 17 15:52:22 2001 @@ -1,9 +1,13 @@ -/* $Xorg: cppsetup.c,v 1.3 2000/08/17 19:41:50 cpqbld Exp $ */ +/* $Xorg: cppsetup.c,v 1.5 2001/02/09 02:03:16 xorgcvs Exp $ */ /* Copyright (c) 1993, 1994, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -20,7 +24,7 @@ in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/config/makedepend/cppsetup.c,v 3.9 2001/04/29 23:25:02 tsi Exp $ */ +/* $XFree86: xc/config/makedepend/cppsetup.c,v 3.11 2001/12/17 20:52:22 dawes Exp $ */ #include "def.h" @@ -122,6 +126,7 @@ struct _parse_data { struct filepointer *filep; struct inclist *inc; + char *filename; const char *line; }; @@ -130,7 +135,7 @@ { struct _parse_data *pd = (struct _parse_data *) ip->data; int lineno = pd->filep->f_line; - char *filename = pd->inc->i_file; + char *filename = pd->filename; char prefix[300]; int prefixlen; int i; @@ -200,7 +205,10 @@ } int -cppsetup(char *line, struct filepointer *filep, struct inclist *inc) +cppsetup(char *filename, + char *line, + struct filepointer *filep, + struct inclist *inc) { IfParser ip; struct _parse_data pd; @@ -209,6 +217,7 @@ pd.filep = filep; pd.inc = inc; pd.line = line; + pd.filename = filename; ip.funcs.handle_error = my_if_errors; ip.funcs.eval_defined = my_eval_defined; ip.funcs.eval_variable = my_eval_variable; Index: xc/config/makedepend/def.h diff -u xc/config/makedepend/def.h:3.9 xc/config/makedepend/def.h:3.12 --- xc/config/makedepend/def.h:3.9 Sun Apr 29 19:25:02 2001 +++ xc/config/makedepend/def.h Mon Dec 17 15:52:22 2001 @@ -1,9 +1,13 @@ -/* $Xorg: def.h,v 1.3 2000/08/17 19:41:50 cpqbld Exp $ */ +/* $Xorg: def.h,v 1.4 2001/02/09 02:03:16 xorgcvs Exp $ */ /* Copyright (c) 1993, 1994, 1998 The Open Group. -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -20,15 +24,13 @@ in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/config/makedepend/def.h,v 3.9 2001/04/29 23:25:02 tsi Exp $ */ +/* $XFree86: xc/config/makedepend/def.h,v 3.12 2001/12/17 20:52:22 dawes Exp $ */ #include "Xos.h" #include "Xfuncproto.h" #include #include -#ifndef X_NOT_STDC_ENV #include -#endif #include #if 0 #ifndef X_NOT_POSIX @@ -125,15 +127,10 @@ long f_line; }; -#ifndef X_NOT_STDC_ENV #include #if defined(macII) && !defined(__STDC__) /* stdlib.h fails to define these */ char *malloc(), *realloc(); #endif /* macII */ -#else -char *malloc(); -char *realloc(); -#endif char *copy(char *str); int match(char *str, char **list); @@ -169,12 +166,12 @@ char *include, int type, boolean failOK); -int cppsetup(char *line, struct filepointer *filep, +int cppsetup(char *filename, + char *line, + struct filepointer *filep, struct inclist *inc); -#if NeedVarargsPrototypes extern void fatalerr(char *, ...); extern void warning(char *, ...); extern void warning1(char *, ...); -#endif Index: xc/config/makedepend/ifparser.h diff -u xc/config/makedepend/ifparser.h:3.4 xc/config/makedepend/ifparser.h:3.5 --- xc/config/makedepend/ifparser.h:3.4 Wed Jan 17 11:38:58 2001 +++ xc/config/makedepend/ifparser.h Wed Jul 25 11:04:40 2001 @@ -57,13 +57,10 @@ * ParseIfExpression parse a string for #if */ -/* $XFree86: xc/config/makedepend/ifparser.h,v 3.4 2001/01/17 16:38:58 dawes Exp $ */ +/* $XFree86: xc/config/makedepend/ifparser.h,v 3.5 2001/07/25 15:04:40 dawes Exp $ */ #include -#ifndef __STDC__ -#define const /**/ -#endif typedef int Bool; #define False 0 #define True 1 @@ -79,10 +76,8 @@ } IfParser; const char *ParseIfExpression ( -#ifdef __STDC__ IfParser *, const char *, long * -#endif ); Index: xc/config/makedepend/include.c diff -u xc/config/makedepend/include.c:3.6 xc/config/makedepend/include.c:3.7 --- xc/config/makedepend/include.c:3.6 Sun Apr 29 19:25:02 2001 +++ xc/config/makedepend/include.c Fri Dec 14 14:53:20 2001 @@ -1,9 +1,13 @@ -/* $Xorg: include.c,v 1.3 2000/08/17 19:41:51 cpqbld Exp $ */ +/* $Xorg: include.c,v 1.4 2001/02/09 02:03:16 xorgcvs Exp $ */ /* Copyright (c) 1993, 1994, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -20,7 +24,7 @@ in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/config/makedepend/include.c,v 3.6 2001/04/29 23:25:02 tsi Exp $ */ +/* $XFree86: xc/config/makedepend/include.c,v 3.7 2001/12/14 19:53:20 dawes Exp $ */ #include "def.h" Index: xc/config/makedepend/main.c diff -u xc/config/makedepend/main.c:3.20 xc/config/makedepend/main.c:3.27 --- xc/config/makedepend/main.c:3.20 Sun Apr 29 19:25:02 2001 +++ xc/config/makedepend/main.c Thu Dec 20 11:14:06 2001 @@ -1,9 +1,13 @@ -/* $Xorg: main.c,v 1.3 2000/08/17 19:41:51 cpqbld Exp $ */ +/* $Xorg: main.c,v 1.5 2001/02/09 02:03:16 xorgcvs Exp $ */ /* Copyright (c) 1993, 1994, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -20,7 +24,7 @@ in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/config/makedepend/main.c,v 3.20 2001/04/29 23:25:02 tsi Exp $ */ +/* $XFree86: xc/config/makedepend/main.c,v 3.27 2001/12/20 16:14:06 tsi Exp $ */ #include "def.h" #ifdef hpux @@ -41,9 +45,7 @@ #endif #endif -#if NeedVarargsPrototypes #include -#endif #ifdef MINIX #define USE_CHMOD 1 @@ -100,11 +102,6 @@ boolean warn_multiple = FALSE; /* Warn on multiple includes of same file */ static void redirect(char *line, char *makefile); -#if !NeedVarargsPrototypes -void fatalerr(); -void warning(); -void warning1(); -#endif static #ifdef SIGNALRETURNSINT @@ -118,7 +115,7 @@ fatalerr ("got signal %d\n", sig); } -#if defined(USG) || (defined(i386) && defined(SYSV)) || defined(WIN32) || defined(__EMX__) || defined(Lynx_22) +#if defined(USG) || (defined(i386) && defined(SYSV)) || defined(WIN32) || defined(__EMX__) || defined(Lynx_22) || defined(__CYGWIN__) #define USGISH #endif @@ -369,6 +366,12 @@ *incp++ = INCLUDEDIR; #endif +#ifdef EXTRAINCDIR + if (incp >= includedirs + MAXDIRS) + fatalerr("Too many -I flags.\n"); + *incp++ = EXTRAINCDIR; +#endif + #ifdef POSTINCDIR if (incp >= includedirs + MAXDIRS) fatalerr("Too many -I flags.\n"); @@ -556,39 +559,68 @@ lineno = filep->f_line; for(bol = p--; ++p < eof; ) { - if (*p == '/' && *(p+1) == '*') { /* consume comments */ - *p++ = ' ', *p++ = ' '; - while (*p) { - if (*p == '*' && *(p+1) == '/') { - *p++ = ' ', *p = ' '; + if (*p == '/' && (p+1) < eof && *(p+1) == '*') { + /* Consume C comments */ + *(p++) = ' '; + *(p++) = ' '; + while (p < eof && *p) { + if (*p == '*' && (p+1) < eof && *(p+1) == '/') { + *(p++) = ' '; + *(p++) = ' '; break; } - else if (*p == '\n') + if (*p == '\n') lineno++; - *p++ = ' '; + *(p++) = ' '; } - continue; + --p; } - else if (*p == '/' && *(p+1) == '/') { /* consume comments */ - *p++ = ' ', *p++ = ' '; - while (*p && *p != '\n') - *p++ = ' '; - if (*p == '\n') --p; - continue; - } - else if (*p == '\\') { - if (*(p+1) == '\n') { - *p = ' '; - *(p+1) = ' '; - lineno++; + else if (*p == '/' && (p+1) < eof && *(p+1) == '/') { + /* Consume C++ comments */ + *(p++) = ' '; + *(p++) = ' '; + while (p < eof && *p) { + if (*p == '\\' && (p+1) < eof && + *(p+1) == '\n') { + *(p++) = ' '; + lineno++; + } + else if (*p == '?' && (p+3) < eof && + *(p+1) == '?' && + *(p+2) == '/' && + *(p+3) == '\n') { + *(p++) = ' '; + *(p++) = ' '; + *(p++) = ' '; + lineno++; + } + else if (*p == '\n') + break; /* to process end of line */ + *(p++) = ' '; } + --p; + } + else if (*p == '\\' && (p+1) < eof && *(p+1) == '\n') { + /* Consume backslash line terminations */ + *(p++) = ' '; + *p = ' '; + lineno++; } + else if (*p == '?' && (p+3) < eof && + *(p+1) == '?' && *(p+2) == '/' && *(p+3) == '\n') { + /* Consume trigraph'ed backslash line terminations */ + *(p++) = ' '; + *(p++) = ' '; + *(p++) = ' '; + *p = ' '; + lineno++; + } else if (*p == '\n') { lineno++; if (*bol == '#') { char *cp; - *p++ = '\0'; + *(p++) = '\0'; /* punt lines with just # (yacc generated) */ for (cp = bol+1; *cp && (*cp == ' ' || *cp == '\t'); cp++); @@ -670,12 +702,12 @@ fatalerr("cannot open \"%s\"\n", makefile); sprintf(backup, "%s.bak", makefile); unlink(backup); -#if defined(WIN32) || defined(__EMX__) +#if defined(WIN32) || defined(__EMX__) || defined(__CYGWIN__) fclose(fdin); #endif if (rename(makefile, backup) < 0) fatalerr("cannot rename %s to %s\n", makefile, backup); -#if defined(WIN32) || defined(__EMX__) +#if defined(WIN32) || defined(__EMX__) || defined(__CYGWIN__) if ((fdin = fopen(backup, "r")) == NULL) fatalerr("cannot open \"%s\"\n", backup); #endif @@ -706,65 +738,31 @@ } void -#if NeedVarargsPrototypes fatalerr(char *msg, ...) -#else -/*VARARGS*/ -fatalerr(msg,x1,x2,x3,x4,x5,x6,x7,x8,x9) - char *msg; -#endif { -#if NeedVarargsPrototypes va_list args; -#endif fprintf(stderr, "%s: error: ", ProgramName); -#if NeedVarargsPrototypes va_start(args, msg); vfprintf(stderr, msg, args); va_end(args); -#else - fprintf(stderr, msg,x1,x2,x3,x4,x5,x6,x7,x8,x9); -#endif exit (1); } void -#if NeedVarargsPrototypes warning(char *msg, ...) -#else -/*VARARGS0*/ -warning(msg,x1,x2,x3,x4,x5,x6,x7,x8,x9) - char *msg; -#endif { -#if NeedVarargsPrototypes va_list args; -#endif fprintf(stderr, "%s: warning: ", ProgramName); -#if NeedVarargsPrototypes va_start(args, msg); vfprintf(stderr, msg, args); va_end(args); -#else - fprintf(stderr, msg,x1,x2,x3,x4,x5,x6,x7,x8,x9); -#endif } void -#if NeedVarargsPrototypes warning1(char *msg, ...) -#else -/*VARARGS0*/ -warning1(msg,x1,x2,x3,x4,x5,x6,x7,x8,x9) - char *msg; -#endif { -#if NeedVarargsPrototypes va_list args; va_start(args, msg); vfprintf(stderr, msg, args); va_end(args); -#else - fprintf(stderr, msg,x1,x2,x3,x4,x5,x6,x7,x8,x9); -#endif } Index: xc/config/makedepend/mkdepend.man diff -u xc/config/makedepend/mkdepend.man:1.4 xc/config/makedepend/mkdepend.man:1.6 --- xc/config/makedepend/mkdepend.man:1.4 Wed Feb 7 17:51:55 2001 +++ xc/config/makedepend/mkdepend.man Mon Dec 17 15:52:22 2001 @@ -1,7 +1,11 @@ -.\" $Xorg: mkdepend.man,v 1.3 2000/08/17 19:41:51 cpqbld Exp $ +.\" $Xorg: mkdepend.man,v 1.5 2001/02/09 02:03:16 xorgcvs Exp $ .\" Copyright (c) 1993, 1994, 1998 The Open Group .\" -.\" All Rights Reserved. +.\" Permission to use, copy, modify, distribute, and sell this software and its +.\" documentation for any purpose is hereby granted without fee, 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. @@ -19,7 +23,7 @@ .\" dealing in this Software without prior written authorization from The .\" Open Group. .\" -.\" $XFree86: xc/config/makedepend/mkdepend.man,v 1.4 2001/02/07 22:51:55 tsi Exp $ +.\" $XFree86: xc/config/makedepend/mkdepend.man,v 1.6 2001/12/17 20:52:22 dawes Exp $ .\" .TH MAKEDEPEND 1 __xorgversion__ .UC 4 @@ -235,7 +239,7 @@ Verbose operation. This option causes .B makedepend -to emit the list of files included by each input file on standard output. +to emit the list of files included by each input file. .TP 5 .B \-m Warn about multiple inclusion. Index: xc/config/makedepend/parse.c diff -u xc/config/makedepend/parse.c:1.9 xc/config/makedepend/parse.c:1.11 --- xc/config/makedepend/parse.c:1.9 Fri May 18 12:03:05 2001 +++ xc/config/makedepend/parse.c Mon Dec 17 15:52:22 2001 @@ -1,9 +1,13 @@ -/* $Xorg: parse.c,v 1.4 2000/08/17 19:41:51 cpqbld Exp $ */ +/* $Xorg: parse.c,v 1.6 2001/02/09 02:03:16 xorgcvs Exp $ */ /* Copyright (c) 1993, 1994, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -20,7 +24,7 @@ in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/config/makedepend/parse.c,v 1.9 2001/05/18 16:03:05 tsi Exp $ */ +/* $XFree86: xc/config/makedepend/parse.c,v 1.11 2001/12/17 20:52:22 dawes Exp $ */ #include "def.h" @@ -34,7 +38,7 @@ static int deftype (char *line, struct filepointer *filep, struct inclist *file_red, struct inclist *file, int parse_it); -static int zero_value(char *exp, struct filepointer *filep, +static int zero_value(char *filename, char *exp, struct filepointer *filep, struct inclist *file_red); static int merge2defines(struct inclist *file1, struct inclist *file2); @@ -83,8 +87,11 @@ case ELIFGUESSFALSE: return(type); case -1: - warning("%s, line %d: unknown directive == \"%s\"\n", - file_red->i_file, filep->f_line, line); + warning("%s", file_red->i_file); + if (file_red != file) + warning1(" (reading %s)", file->i_file); + warning1(", line %d: unknown directive == \"%s\"\n", + filep->f_line, line); break; } } @@ -132,7 +139,7 @@ */ debug(0,("%s, line %d: #elif %s ", file->i_file, filep->f_line, p)); - ret = zero_value(p, filep, file_red); + ret = zero_value(file->i_file, p, filep, file_red); if (ret != IF) { debug(0,("false...\n")); @@ -166,7 +173,7 @@ /* * parse an expression. */ - ret = zero_value(p, filep, file_red); + ret = zero_value(file->i_file, p, filep, file_red); debug(0,("%s, line %d: %s #if %s\n", file->i_file, filep->f_line, ret?"false":"true", p)); break; @@ -300,9 +307,12 @@ * Return type based on if the #if expression evaluates to 0 */ static int -zero_value(char *exp, struct filepointer *filep, struct inclist *file_red) +zero_value(char *filename, + char *exp, + struct filepointer *filep, + struct inclist *file_red) { - if (cppsetup(exp, filep, file_red)) + if (cppsetup(filename, exp, filep, file_red)) return(IFFALSE); else return(IF); @@ -602,8 +612,11 @@ break; case UNDEF: if (!*line) { - warning("%s, line %d: incomplete undef == \"%s\"\n", - file_red->i_file, filep->f_line, line); + warning("%s", file_red->i_file); + if (file_red != file) + warning1(" (reading %s)", file->i_file); + warning1(", line %d: incomplete undef == \"%s\"\n", + filep->f_line, line); break; } undefine(line, file_red); @@ -620,7 +633,10 @@ break; case ERROR: case WARNING: - warning("%s: %d: %s\n", file_red->i_file, + warning("%s", file_red->i_file); + if (file_red != file) + warning1(" (reading %s)", file->i_file); + warning1(", line %d: %s\n", filep->f_line, line); break; Index: xc/config/makedepend/pr.c diff -u xc/config/makedepend/pr.c:1.4 xc/config/makedepend/pr.c:1.5 --- xc/config/makedepend/pr.c:1.4 Sun Apr 29 19:25:02 2001 +++ xc/config/makedepend/pr.c Fri Dec 14 14:53:21 2001 @@ -1,9 +1,13 @@ -/* $Xorg: pr.c,v 1.3 2000/08/17 19:41:51 cpqbld Exp $ */ +/* $Xorg: pr.c,v 1.4 2001/02/09 02:03:16 xorgcvs Exp $ */ /* Copyright (c) 1993, 1994, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -20,7 +24,7 @@ in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/config/makedepend/pr.c,v 1.4 2001/04/29 23:25:02 tsi Exp $ */ +/* $XFree86: xc/config/makedepend/pr.c,v 1.5 2001/12/14 19:53:21 dawes Exp $ */ #include "def.h" Index: xc/config/pswrap/lexer.l diff -u xc/config/pswrap/lexer.l:1.9 xc/config/pswrap/lexer.l:1.10 --- xc/config/pswrap/lexer.l:1.9 Wed Jun 7 15:48:09 2000 +++ xc/config/pswrap/lexer.l Sat Oct 27 23:32:03 2001 @@ -36,7 +36,7 @@ * * Author: Adobe Systems Incorporated */ -/* $XFree86: xc/config/pswrap/lexer.l,v 1.9 2000/06/07 19:48:09 tsi Exp $ */ +/* $XFree86: xc/config/pswrap/lexer.l,v 1.10 2001/10/28 03:32:03 tsi Exp $ */ #include #include @@ -346,7 +346,7 @@ DEBUGP((stderr,"DEF ->CINTEGER %s\n",yytext)); /* I have no idea why the cast is needed in the next line, but it seems to make the compiler happy on alpha */ - sscanf((char *) yytext,"%o",&yylval.intobj); + sscanf((char *) yytext,"%lo",&yylval.intobj); return CINTEGER; } } @@ -355,7 +355,7 @@ if (nonComment) { DEBUGP((stderr,"DEF ->CINTEGER %s\n",yytext)); /* See previous comment... */ - sscanf((char *) yytext,"0x%x",&yylval.intobj); + sscanf((char *) yytext,"0x%lx",&yylval.intobj); return CINTEGER; } } Index: xc/config/pswrap/main.c diff -u xc/config/pswrap/main.c:1.4 xc/config/pswrap/main.c:1.5 --- xc/config/pswrap/main.c:1.4 Wed Jun 7 15:50:47 2000 +++ xc/config/pswrap/main.c Fri Aug 17 22:47:10 2001 @@ -35,7 +35,7 @@ * * Author: Adobe Systems Incorporated */ -/* $XFree86: xc/config/pswrap/main.c,v 1.4 2000/06/07 19:50:47 tsi Exp $ */ +/* $XFree86: xc/config/pswrap/main.c,v 1.5 2001/08/18 02:47:10 dawes Exp $ */ #include @@ -129,7 +129,7 @@ strcpy(headid, slash ? slash+1 : hfile); for (c = headid; *c != '\0'; c++) { if (*c == '.') *c = '_'; - else isascii(*c) && islower(*c) && (*c = toupper(*c)); + else if (isascii(*c) && islower(*c)) *c = toupper(*c); } break; case 'o': Index: xc/config/pswrap/pswpriv.h diff -u xc/config/pswrap/pswpriv.h:1.6 xc/config/pswrap/pswpriv.h:1.7 --- xc/config/pswrap/pswpriv.h:1.6 Wed Jun 7 17:58:25 2000 +++ xc/config/pswrap/pswpriv.h Fri Aug 17 22:47:10 2001 @@ -35,7 +35,7 @@ * * Author: Adobe Systems Incorporated */ -/* $XFree86: xc/config/pswrap/pswpriv.h,v 1.6 2000/06/07 21:58:25 tsi Exp $ */ +/* $XFree86: xc/config/pswrap/pswpriv.h,v 1.7 2001/08/18 02:47:10 dawes Exp $ */ #ifndef PSWPRIV_H #define PSWPRIV_H @@ -132,7 +132,6 @@ extern boolean noUserNames; /* -n flag */ extern char *currentPSWName; extern char *hfile; -extern char *ifile; extern char *ifile; /* input file name for error messages */ extern char *ofile; extern char *prog; @@ -141,7 +140,6 @@ extern char headid[]; extern int bigFile; extern int doANSI; /* -a flag */ -extern int errorCount; extern int maxstring; /* max PS string length to scan (-s) */ extern int lexdebug; /* debug flag for lexer */ extern int errorCount; /* non-fatal errs */ Index: xc/config/pswrap/pswtypes.h diff -u xc/config/pswrap/pswtypes.h:1.1 xc/config/pswrap/pswtypes.h:1.3 --- xc/config/pswrap/pswtypes.h:1.1 Sat Feb 12 19:12:35 2000 +++ xc/config/pswrap/pswtypes.h Sun Jul 29 01:01:10 2001 @@ -35,13 +35,12 @@ * * Author: Adobe Systems Incorporated */ +/* $XFree86: xc/config/pswrap/pswtypes.h,v 1.3 2001/07/29 05:01:10 tsi Exp $ */ #ifndef PSWTYPES_H #define PSWTYPES_H -#ifndef NULL -#define NULL 0 -#endif +#include #define false 0 #define true 1 Index: xc/config/util/Imakefile diff -u xc/config/util/Imakefile:3.36 xc/config/util/Imakefile:3.42 --- xc/config/util/Imakefile:3.36 Thu Apr 26 17:09:39 2001 +++ xc/config/util/Imakefile Mon Jan 7 15:38:21 2002 @@ -2,7 +2,7 @@ -XCOMM $XFree86: xc/config/util/Imakefile,v 3.36 2001/04/26 21:09:39 dawes Exp $ +XCOMM $XFree86: xc/config/util/Imakefile,v 3.42 2002/01/07 20:38:21 dawes Exp $ #if UseCCMakeDepend CCMDEP_PROG = ccmakedep @@ -18,20 +18,18 @@ #ifndef OS2Architecture GCCMDEP_PROG = gccmakedep -LNDIR_PROG = ProgramTargetName(lndir) +#if CrossCompiling +LNDIR_PROG = HostProgramTargetName(lndir) +#else +LNDIR_PROG = lndir #endif - -#if BuildRman -RMAN_PROG = ProgramTargetName(rman) #endif -#ifdef QNX4Architecture -QNXCopyInstaller($(PROJECTROOT)/bin/install.qnx,./install.sh) +#if BuildRman +RMAN_PROG = rman #endif -PROGRAMS = xmkmf $(CCMDEP_PROG) $(GCCMDEP_PROG) mergelib $(LNDIR_PROG) \ - $(RMAN_PROG) ProgramTargetName(revpath) \ - ProgramTargetName(makestrs) $(EXPORTLISTGEN) $(CMKDIRHIER) +PROGRAMS = $(RMAN_PROG) $(LNDIR_PROG) makestrs revpath $(EXPORTLISTGEN) $(CMKDIRHIER) DEPLIBS = #ifndef Win32Architecture EXTRA_LIBRARIES = @@ -51,7 +49,7 @@ LDPOSTLIB = #endif -all:: $(PROGRAMS) +all:: xmkmf mergelib $(CCMDEP_PROG) $(GCCMDEP_PROG) $(PROGRAMS) #if HasGcc GCCCMD = $(CC) @@ -59,7 +57,11 @@ GCCCMD = gcc #endif +#if CrossCompiling +includes:: HostProgramTargetName(makestrs) +#else includes:: ProgramTargetName(makestrs) +#endif #ifdef ExportListGenSource CppScriptTarget(exportlistgen,ExportListGenSource,-DCXXFILT=$(CXXFILT),) @@ -76,7 +78,7 @@ #ifndef OpenBSDArchitecture #if HasSymLinks #if CrossCompiling -SimpleHostProgramTarget(lndir) +SimpleHostProgramTarget_2(lndir) #else AllTarget($(LNDIR_PROG)) SimpleProgramTarget_2(lndir) @@ -89,19 +91,30 @@ 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 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+XFree86" +#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)' -DXFree86) LinkSourceFile(rman.c,$(TOP)/extras/rman) LinkFile(rman.man,$(TOP)/extras/rman/rman.1) @@ -125,6 +138,9 @@ InstallNamedProg(xmkmf,xmkmf,$(BINDIR)) InstallNamedProg(mkdirhier.sh,mkdirhier,$(BINDIR)) InstallNamedProg(gccmakedep,gccmakedep,$(BINDIR)) +#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)) Index: xc/config/util/checktree.c diff -u xc/config/util/checktree.c:1.1.1.3 xc/config/util/checktree.c:1.4 --- xc/config/util/checktree.c:1.1.1.3 Tue Jan 16 16:54:39 2001 +++ xc/config/util/checktree.c Fri Dec 14 14:53:22 2001 @@ -1,10 +1,14 @@ -/* $Xorg: checktree.c,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ */ +/* $Xorg: checktree.c,v 1.4 2001/02/09 02:03:16 xorgcvs Exp $ */ /* Copyright (c) 1993, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -20,6 +24,7 @@ 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.4 2001/12/14 19:53:22 dawes Exp $ */ #include #include @@ -57,10 +62,6 @@ #define fmode_bits_maxset 0777 #define fmode_bits_write 0222 #define dmode_bits_minset 0775 - -#ifdef X_NOT_STDC_ENV -extern int errno; -#endif int dorcs = 1; /* check RCS file */ int do83 = 1; /* check for 8+3 clash */ Index: xc/config/util/chownxterm.c diff -u xc/config/util/chownxterm.c:1.1.1.3 xc/config/util/chownxterm.c:1.2 --- xc/config/util/chownxterm.c:1.1.1.3 Tue Jan 16 16:54:40 2001 +++ xc/config/util/chownxterm.c Fri Dec 14 14:53:22 2001 @@ -1,9 +1,13 @@ -/* $Xorg: chownxterm.c,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ */ +/* $Xorg: chownxterm.c,v 1.4 2001/02/09 02:03:16 xorgcvs Exp $ */ /* Copyright (c) 1993, 1994, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. Index: xc/config/util/gccmdep.cpp diff -u xc/config/util/gccmdep.cpp:3.8.2.1 xc/config/util/gccmdep.cpp:3.9 --- xc/config/util/gccmdep.cpp:3.8.2.1 Tue May 22 17:25:40 2001 +++ xc/config/util/gccmdep.cpp Tue May 22 09:29:17 2001 @@ -3,7 +3,7 @@ XCOMM XCOMM makedepend which uses 'gcc -M' XCOMM -XCOMM $XFree86: xc/config/util/gccmdep.cpp,v 3.8.2.1 2001/05/22 21:25:40 dawes Exp $ +XCOMM $XFree86: xc/config/util/gccmdep.cpp,v 3.9 2001/05/22 13:29:17 dawes Exp $ XCOMM XCOMM Based on mdepend.cpp and code supplied by Hongjiu Lu XCOMM Index: xc/config/util/lndir.c diff -u xc/config/util/lndir.c:3.13 xc/config/util/lndir.c:3.15 --- xc/config/util/lndir.c:3.13 Sun Apr 1 09:59:57 2001 +++ xc/config/util/lndir.c Fri Dec 14 14:53:22 2001 @@ -1,11 +1,15 @@ -/* $Xorg: lndir.c,v 1.4 2000/08/17 19:41:52 cpqbld Exp $ */ +/* $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 -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -22,7 +26,7 @@ in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/config/util/lndir.c,v 3.13 2001/04/01 13:59:57 tsi Exp $ */ +/* $XFree86: xc/config/util/lndir.c,v 3.15 2001/12/14 19:53:22 dawes Exp $ */ /* From the original /bin/sh script: @@ -69,13 +73,8 @@ #define MAXPATHLEN 2048 #endif -#if NeedVarargsPrototypes #include -#endif -#ifdef X_NOT_STDC_ENV -extern int errno; -#endif int silent = 0; /* -silent */ int ignore_links = 0; /* -ignorelinks */ int with_revinfo = 0; /* -withrevinfo */ @@ -84,22 +83,12 @@ char *curdir; static void -quit ( -#if NeedVarargsPrototypes - int code, char * fmt, ...) -#else - code, fmt, a1, a2, a3) - char *fmt; -#endif +quit (int code, char * fmt, ...) { -#if NeedVarargsPrototypes va_list args; va_start(args, fmt); vfprintf (stderr, fmt, args); va_end(args); -#else - fprintf (stderr, fmt, a1, a2, a3); -#endif putc ('\n', stderr); exit (code); } @@ -112,28 +101,16 @@ } static void -msg ( -#if NeedVarargsPrototypes - char * fmt, ...) -#else - fmt, a1, a2, a3) - char *fmt; -#endif +msg (char * fmt, ...) { -#if NeedVarargsPrototypes va_list args; -#endif if (curdir) { fprintf (stderr, "%s:\n", curdir); curdir = 0; } -#if NeedVarargsPrototypes va_start(args, fmt); vfprintf (stderr, fmt, args); va_end(args); -#else - fprintf (stderr, fmt, a1, a2, a3); -#endif putc ('\n', stderr); } Index: xc/config/util/lndir.man diff -u xc/config/util/lndir.man:1.2 xc/config/util/lndir.man:1.3 --- xc/config/util/lndir.man:1.2 Sat Jan 27 13:19:55 2001 +++ xc/config/util/lndir.man Fri Dec 14 14:53:22 2001 @@ -1,8 +1,12 @@ -.\" $Xorg: lndir.man,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ +.\" $Xorg: lndir.man,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ .\" .\" Copyright (c) 1993, 1994, 1998 The Open Group .\" -.\" All Rights Reserved. +.\" Permission to use, copy, modify, distribute, and sell this software and its +.\" documentation for any purpose is hereby granted without fee, 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. @@ -21,7 +25,7 @@ .\" from The Open Group. .\" .\" -.\" $XFree86: xc/config/util/lndir.man,v 1.2 2001/01/27 18:19:55 dawes Exp $ +.\" $XFree86: xc/config/util/lndir.man,v 1.3 2001/12/14 19:53:22 dawes Exp $ .\" .TH LNDIR 1 __xorgversion__ .SH NAME Index: xc/config/util/makeg.man diff -u xc/config/util/makeg.man:1.2 xc/config/util/makeg.man:1.3 --- xc/config/util/makeg.man:1.2 Sat Jan 27 13:19:55 2001 +++ xc/config/util/makeg.man Fri Dec 14 14:53:22 2001 @@ -1,7 +1,11 @@ -.\" $Xorg: makeg.man,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ +.\" $Xorg: makeg.man,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ .\" Copyright (c) 1996, 1998 The Open Group .\" -.\" All Rights Reserved. +.\" Permission to use, copy, modify, distribute, and sell this software and its +.\" documentation for any purpose is hereby granted without fee, 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. @@ -20,7 +24,7 @@ .\" from The Open Group. .\" .\" -.\" $XFree86: xc/config/util/makeg.man,v 1.2 2001/01/27 18:19:55 dawes Exp $ +.\" $XFree86: xc/config/util/makeg.man,v 1.3 2001/12/14 19:53:22 dawes Exp $ .\" .TH MAKEG 1 __xorgversion__ .SH NAME Index: xc/config/util/makestrs.c diff -u xc/config/util/makestrs.c:3.5 xc/config/util/makestrs.c:3.7 --- xc/config/util/makestrs.c:3.5 Wed Jan 17 11:39:01 2001 +++ xc/config/util/makestrs.c Fri Dec 14 14:53:22 2001 @@ -4,7 +4,11 @@ Copyright (c) 1991, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -21,18 +25,14 @@ in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/config/util/makestrs.c,v 3.5 2001/01/17 16:39:01 dawes Exp $ */ +/* $XFree86: xc/config/util/makestrs.c,v 3.7 2001/12/14 19:53:22 dawes Exp $ */ /* Constructs string definitions */ #include #include -#ifndef X_NOT_STDC_ENV #include #include -#else -char *malloc(); -#endif #if defined(macII) && !defined(__STDC__) /* stdlib.h fails to define these */ char *malloc(); #endif /* macII */ @@ -233,7 +233,7 @@ (void) fprintf (f, "%s\n%s\n/* %s ABI version -- Do not edit */\n", - "/* $Xorg: makestrs.c,v 1.5 2000/08/18 04:03:59 coskrey Exp $ */", + "/* $Xorg: makestrs.c,v 1.6 2001/02/09 02:03:17 xorgcvs Exp $ */", "/* This file is automatically generated. */", abistring[abi]); @@ -404,7 +404,7 @@ (void) printf ("%s\n%s\n/* %s ABI version -- Do not edit */\n", - "/* $Xorg: makestrs.c,v 1.5 2000/08/18 04:03:59 coskrey Exp $ */", + "/* $Xorg: makestrs.c,v 1.6 2001/02/09 02:03:17 xorgcvs Exp $ */", "/* This file is automatically generated. */", abistring[abi]); Index: xc/config/util/makestrs.man diff -u xc/config/util/makestrs.man:3.7 xc/config/util/makestrs.man:3.8 --- xc/config/util/makestrs.man:3.7 Wed Feb 7 18:25:54 2001 +++ xc/config/util/makestrs.man Fri Dec 14 14:53:22 2001 @@ -1,7 +1,11 @@ -.\" $Xorg: makestrs.man,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ +.\" $Xorg: makestrs.man,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ .\" Copyright (c) 1993, 1994, 1998 The Open Group .\" -.\" All Rights Reserved. +.\" Permission to use, copy, modify, distribute, and sell this software and its +.\" documentation for any purpose is hereby granted without fee, 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. @@ -19,7 +23,7 @@ .\" dealing in this Software without prior written authorization from The .\" Open Group. .\" -.\" $XFree86: xc/config/util/makestrs.man,v 3.7 2001/02/07 23:25:54 dawes Exp $ +.\" $XFree86: xc/config/util/makestrs.man,v 3.8 2001/12/14 19:53:22 dawes Exp $ .\" .TH MAKESTRS 1 __xorgversion__ .SH NAME Index: xc/config/util/mdepend.cpp diff -u xc/config/util/mdepend.cpp:3.9 xc/config/util/mdepend.cpp:3.10 --- xc/config/util/mdepend.cpp:3.9 Thu Apr 26 16:55:10 2001 +++ xc/config/util/mdepend.cpp Fri Aug 17 09:27:50 2001 @@ -22,7 +22,7 @@ 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 $XFree86: xc/config/util/mdepend.cpp,v 3.10 2001/08/17 13:27:50 dawes Exp $ XCOMM CC=PREPROC @@ -175,8 +175,15 @@ | awk '{ if ($1 != $4 && $2 != "#ident" && $2 != "#pragma") { - ofile = substr ($1, 1, length ($1) - 2) "'"$objsuffix"'" - print ofile, $4 + 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 \ Index: xc/config/util/mergelib.cpp diff -u xc/config/util/mergelib.cpp:1.1.1.3 xc/config/util/mergelib.cpp:1.2 --- xc/config/util/mergelib.cpp:1.1.1.3 Tue Jan 16 16:54:47 2001 +++ xc/config/util/mergelib.cpp Fri Dec 14 14:53:22 2001 @@ -1,10 +1,14 @@ XCOMM!/bin/sh XCOMM -XCOMM $Xorg: mergelib.cpp,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ +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 All Rights Reserved +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. Index: xc/config/util/mkdirhier.c diff -u xc/config/util/mkdirhier.c:1.4 xc/config/util/mkdirhier.c:1.5 --- xc/config/util/mkdirhier.c:1.4 Wed Jan 17 11:39:02 2001 +++ xc/config/util/mkdirhier.c Fri Dec 14 14:53:22 2001 @@ -1,9 +1,13 @@ -/* $Xorg: mkdirhier.c,v 1.3 2000/08/17 19:41:53 cpqbld Exp $ */ +/* $Xorg: mkdirhier.c,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ */ /* Copyright (C) 1996, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. Index: xc/config/util/mkdirhier.man diff -u xc/config/util/mkdirhier.man:1.2 xc/config/util/mkdirhier.man:1.3 --- xc/config/util/mkdirhier.man:1.2 Sat Jan 27 13:19:55 2001 +++ xc/config/util/mkdirhier.man Fri Dec 14 14:53:22 2001 @@ -1,7 +1,11 @@ -.\" $Xorg: mkdirhier.man,v 1.3 2000/08/17 19:41:53 cpqbld Exp $ +.\" $Xorg: mkdirhier.man,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ .\" Copyright (c) 1993, 1994, 1998 The Open Group .\" -.\" All Rights Reserved. +.\" Permission to use, copy, modify, distribute, and sell this software and its +.\" documentation for any purpose is hereby granted without fee, 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. @@ -19,7 +23,7 @@ .\" 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 $ +.\" $XFree86: xc/config/util/mkdirhier.man,v 1.3 2001/12/14 19:53:22 dawes Exp $ .\" .TH MKDIRHIER 1 __xorgversion__ .SH NAME Index: xc/config/util/mkhtmlindex.sh diff -u xc/config/util/mkhtmlindex.sh:1.3 xc/config/util/mkhtmlindex.sh:1.4 --- xc/config/util/mkhtmlindex.sh:1.3 Sat Aug 26 00:30:49 2000 +++ xc/config/util/mkhtmlindex.sh Sat Oct 27 23:32:04 2001 @@ -1,6 +1,6 @@ #!/bin/sh # -# $XFree86: xc/config/util/mkhtmlindex.sh,v 1.3 2000/08/26 04:30:49 dawes Exp $ +# $XFree86: xc/config/util/mkhtmlindex.sh,v 1.4 2001/10/28 03:32:04 tsi Exp $ # # Copyright © 2000 by Precision Insight, Inc. # @@ -44,8 +44,8 @@ EOF for i in $list; do title="`egrep '^[0-9A-Za-z]' $i | egrep -v '^Name' | head -1`" - name="`echo $title | sed -e 's/ - .*//'`" - desc="`echo $title | sed -e 's/[^-]* - //' -e 's/

//'`" + name="`echo \"$title\" | sed -e 's/ - .*//'`" + desc="`echo \"$title\" | sed -e 's/[^-]* - //' -e 's/

//'`" echo "

  • $name - $desc
  • " >> $file done cat <> $file Index: xc/config/util/xmkmf.man diff -u xc/config/util/xmkmf.man:1.2 xc/config/util/xmkmf.man:1.3 --- xc/config/util/xmkmf.man:1.2 Sat Jan 27 13:19:55 2001 +++ xc/config/util/xmkmf.man Fri Dec 14 14:53:22 2001 @@ -1,7 +1,11 @@ -.\" $Xorg: xmkmf.man,v 1.3 2000/08/17 19:41:53 cpqbld Exp $ +.\" $Xorg: xmkmf.man,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ .\" Copyright (c) 1993, 1994, 1998 The Open Group .\" -.\" All Rights Reserved. +.\" Permission to use, copy, modify, distribute, and sell this software and its +.\" documentation for any purpose is hereby granted without fee, 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. @@ -19,7 +23,7 @@ .\" 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 $ +.\" $XFree86: xc/config/util/xmkmf.man,v 1.3 2001/12/14 19:53:22 dawes Exp $ .\" .TH XMKMF 1 __xorgversion__ .SH NAME Index: xc/config/util/mkshadow/savedir.c diff -u xc/config/util/mkshadow/savedir.c:1.1.1.2 xc/config/util/mkshadow/savedir.c:1.2 --- xc/config/util/mkshadow/savedir.c:1.1.1.2 Tue Jan 16 16:54:50 2001 +++ xc/config/util/mkshadow/savedir.c Wed Jul 25 11:04:41 2001 @@ -14,6 +14,8 @@ (The FSF has modified its usual distribution terms, for this file, as a courtesy to the X project.) */ +/* $XFree86: xc/config/util/mkshadow/savedir.c,v 1.2 2001/07/25 15:04:41 dawes Exp $ */ + /* Written by David MacKenzie . Modified to use by default. Per Bothner . */ @@ -43,17 +45,9 @@ #define CLOSEDIR(d) closedir (d) #endif -#ifdef STDC_HEADERS #include #include -#else -char *malloc (); -char *realloc (); -int strlen (); -#ifndef NULL -#define NULL 0 -#endif -#endif +#include char *stpcpy (); Index: xc/doc/man/GL/Imakefile diff -u xc/doc/man/GL/Imakefile:1.2 xc/doc/man/GL/Imakefile:1.3 --- xc/doc/man/GL/Imakefile:1.2 Mon Jun 14 03:23:27 1999 +++ xc/doc/man/GL/Imakefile Mon Jan 14 20:16:28 2002 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/doc/man/GL/Imakefile,v 1.2 1999/06/14 07:23:27 dawes Exp $ +XCOMM $XFree86: xc/doc/man/GL/Imakefile,v 1.3 2002/01/15 01:16:28 dawes Exp $ XCOMM The contents of this file are subject to the GLX Public License Version 1.0 XCOMM (the "License"). You may not use this file except in compliance with the XCOMM License. You may obtain a copy of the License at Silicon Graphics, Inc., @@ -19,7 +19,7 @@ #define IHaveSubdirs #define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)' -SUBDIRS = glx +SUBDIRS = gl glx MakeSubdirs($(SUBDIRS)) InstallManSubdirs($(SUBDIRS)) Index: xc/doc/man/GL/gl/Imakefile diff -u /dev/null xc/doc/man/GL/gl/Imakefile:1.4 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/Imakefile Tue Jan 15 12:53:02 2002 @@ -0,0 +1,432 @@ +XCOMM $XFree86: xc/doc/man/GL/gl/Imakefile,v 1.4 2002/01/15 17:53:02 dawes Exp $ + +XCOMM License Applicability. Except to the extent portions of this file are +XCOMM made subject to an alternative license as permitted in the SGI Free +XCOMM Software License B, Version 1.1 (the "License"), the contents of this +XCOMM file are subject only to the provisions of the License. You may not use +XCOMM this file except in compliance with the License. You may obtain a Copy +XCOMM of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +XCOMM Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +XCOMM +XCOMM http://oss.sgi.com/projects/FreeB +XCOMM +XCOMM Note that, as provided in the License, the Software is distributed on an +XCOMM "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +XCOMM DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +XCOMM CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +XCOMM PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +XCOMM +XCOMM Original Code. The Original Code is: OpenGL Sample Implementation, +XCOMM Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +XCOMM Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +XCOMM Copyright in any portions created by third parties is as indicated +XCOMM elsewhere herein. All Rights Reserved. +XCOMM +XCOMM Additional Notice Provisions: The application programming interfaces +XCOMM established by SGI in conjunction with the Original Code are The +XCOMM OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +XCOMM April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +XCOMM 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +XCOMM Window System(R) (Version 1.3), released October 19, 1998. This software +XCOMM was created using the OpenGL(R) version 1.2.1 Sample Implementation +XCOMM published by SGI, but has not been independently verified as being +XCOMM compliant with the OpenGL(R) version 1.2.1 Specification. +XCOMM + +MANDIR = $(LIBMANDIR) +MANSUFFIX = $(LIBMANSUFFIX) +MSUFF = man + +InstallManPage(glAccum,$(MANDIR)) +InstallManPage(glActiveTextureARB,$(MANDIR)) +InstallManPage(glAlphaFunc,$(MANDIR)) +InstallManPage(glAreTexturesResident,$(MANDIR)) +InstallManPage(glArrayElement,$(MANDIR)) +InstallManPage(glBegin,$(MANDIR)) +InstallManPageAliases(glBegin,$(MANDIR),glEnd) +InstallManPage(glBindTexture,$(MANDIR)) +InstallManPage(glBitmap,$(MANDIR)) +InstallManPage(glBlendColor,$(MANDIR)) +InstallManPage(glBlendEquation,$(MANDIR)) +InstallManPage(glBlendFunc,$(MANDIR)) +InstallManPage(glCallList,$(MANDIR)) +InstallManPage(glCallLists,$(MANDIR)) +InstallManPage(glClear,$(MANDIR)) +InstallManPage(glClearAccum,$(MANDIR)) +InstallManPage(glClearColor,$(MANDIR)) +InstallManPage(glClearDepth,$(MANDIR)) +InstallManPage(glClearIndex,$(MANDIR)) +InstallManPage(glClearStencil,$(MANDIR)) +InstallManPage(glClientActiveTextureARB,$(MANDIR)) +InstallManPage(glClipPlane,$(MANDIR)) +InstallManPage(glColor,$(MANDIR)) +InstallManPageAliases(glColor,$(MANDIR),glColor3b glColor3d glColor3f glColor3i glColor3s glColor3ub glColor3ui glColor3us glColor4b glColor4d glColor4f glColor4i glColor4s glColor4ub glColor4ui glColor4us glColor3bv glColor3dv glColor3fv glColor3iv glColor3sv glColor3ubv glColor3uiv glColor3usv glColor4bv glColor4dv glColor4fv glColor4iv glColor4sv glColor4ubv glColor4uiv glColor4usv) +InstallManPage(glColorMask,$(MANDIR)) +InstallManPage(glColorMaterial,$(MANDIR)) +InstallManPage(glColorPointer,$(MANDIR)) +InstallManPage(glColorSubTable,$(MANDIR)) +InstallManPage(glColorTable,$(MANDIR)) +InstallManPage(glColorTableParameter,$(MANDIR)) +InstallManPageAliases(glColorTableParameter,$(MANDIR),glColorTableParameterfv glColorTableParameteriv) +InstallManPage(glConvolutionFilter1D,$(MANDIR)) +InstallManPage(glConvolutionFilter2D,$(MANDIR)) +InstallManPage(glConvolutionParameter,$(MANDIR)) +InstallManPage(glCopyColorSubTable,$(MANDIR)) +InstallManPage(glCopyColorTable,$(MANDIR)) +InstallManPage(glCopyConvolutionFilter1D,$(MANDIR)) +InstallManPage(glCopyConvolutionFilter2D,$(MANDIR)) +InstallManPage(glCopyPixels,$(MANDIR)) +InstallManPage(glCopyTexImage1D,$(MANDIR)) +InstallManPage(glCopyTexImage2D,$(MANDIR)) +InstallManPage(glCopyTexSubImage1D,$(MANDIR)) +InstallManPage(glCopyTexSubImage2D,$(MANDIR)) +InstallManPage(glCopyTexSubImage3D,$(MANDIR)) +InstallManPage(glCullFace,$(MANDIR)) +InstallManPage(glDeleteLists,$(MANDIR)) +InstallManPage(glDeleteTextures,$(MANDIR)) +InstallManPage(glDepthFunc,$(MANDIR)) +InstallManPage(glDepthMask,$(MANDIR)) +InstallManPage(glDepthRange,$(MANDIR)) +InstallManPage(glDrawArrays,$(MANDIR)) +InstallManPage(glDrawBuffer,$(MANDIR)) +InstallManPage(glDrawElements,$(MANDIR)) +InstallManPage(glDrawPixels,$(MANDIR)) +InstallManPage(glDrawRangeElements,$(MANDIR)) +InstallManPage(glEdgeFlag,$(MANDIR)) +InstallManPageAliases(glEdgeFlag,$(MANDIR),glEdgeFlagv) +InstallManPage(glEdgeFlagPointer,$(MANDIR)) +InstallManPage(glEnable,$(MANDIR)) +InstallManPageAliases(glEnable,$(MANDIR),glDisable) +InstallManPage(glEnableClientState,$(MANDIR)) +InstallManPageAliases(glEnableClientState,$(MANDIR),glDisableClientState) +InstallManPage(glEvalCoord,$(MANDIR)) +InstallManPageAliases(glEvalCoord,$(MANDIR),glEvalCoord1d glEvalCoord2d glEvalCoord2f glEvalCoord1dv glEvalCoord1fv glEvalCoord2dv glEvalCoord2fv) +InstallManPage(glEvalMesh,$(MANDIR)) +InstallManPageAliases(glEvalMesh,$(MANDIR),glEvalMesh1 glEvalMesh2) +InstallManPage(glEvalPoint,$(MANDIR)) +InstallManPageAliases(glEvalPoint,$(MANDIR),glEvalPoint1 glEvalPoint2) +InstallManPage(glFeedbackBuffer,$(MANDIR)) +InstallManPage(glFinish,$(MANDIR)) +InstallManPage(glFlush,$(MANDIR)) +InstallManPage(glFog,$(MANDIR)) +InstallManPageAliases(glFog,$(MANDIR),glFogf glFogi glFogfv glFogiv) +InstallManPage(glFrontFace,$(MANDIR)) +InstallManPage(glFrustum,$(MANDIR)) +InstallManPage(glGenLists,$(MANDIR)) +InstallManPage(glGenTextures,$(MANDIR)) +InstallManPage(glGet,$(MANDIR)) +InstallManPageAliases(glGet,$(MANDIR),glGetBooleanv glGetDoublev glGetFloatv glGetIntegerv) +InstallManPage(glGetClipPlane,$(MANDIR)) +InstallManPage(glGetColorTable,$(MANDIR)) +InstallManPage(glGetColorTableParameter,$(MANDIR)) +InstallManPageAliases(glGetColorTableParameter,$(MANDIR),glGetColorTableParameterfv glGetColorTableParameteriv) +InstallManPage(glGetConvolutionFilter,$(MANDIR)) +InstallManPage(glGetConvolutionParameter,$(MANDIR)) +InstallManPage(glGetError,$(MANDIR)) +InstallManPage(glGetHistogram,$(MANDIR)) +InstallManPage(glGetHistogramParameter,$(MANDIR)) +InstallManPage(glGetLight,$(MANDIR)) +InstallManPageAliases(glGetLight,$(MANDIR),glGetLightfv glGetLightiv) +InstallManPage(glGetMap,$(MANDIR)) +InstallManPageAliases(glGetMap,$(MANDIR),glGetMapdv glGetMapfv glGetMapiv) +InstallManPage(glGetMaterial,$(MANDIR)) +InstallManPageAliases(glGetMaterial,$(MANDIR),glGetMaterialfv glGetMaterialiv) +InstallManPage(glGetMinmax,$(MANDIR)) +InstallManPage(glGetMinmaxParameter,$(MANDIR)) +InstallManPage(glGetPixelMap,$(MANDIR)) +InstallManPageAliases(glGetPixelMap,$(MANDIR),glGetPixelMapfv glGetPixelMapuiv glGetPixelMapusv) +InstallManPage(glGetPointerv,$(MANDIR)) +InstallManPage(glGetPolygonStipple,$(MANDIR)) +InstallManPage(glGetSeparableFilter,$(MANDIR)) +InstallManPage(glGetString,$(MANDIR)) +InstallManPage(glGetTexEnv,$(MANDIR)) +InstallManPageAliases(glGetTexEnv,$(MANDIR),glGetTexEnvfv glGetTexEnviv) +InstallManPage(glGetTexGen,$(MANDIR)) +InstallManPageAliases(glGetTexGen,$(MANDIR),glGetTexGendv glGetTexGenfv glGetTexGeniv) +InstallManPage(glGetTexImage,$(MANDIR)) +InstallManPage(glGetTexLevelParameter,$(MANDIR)) +InstallManPageAliases(glGetTexLevelParameter,$(MANDIR),glGetTexLevelParameterfv glGetTexLevelParameteriv) +InstallManPage(glGetTexParameter,$(MANDIR)) +InstallManPageAliases(glGetTexParameter,$(MANDIR),glGetTexParameterfv glGetTexParameteriv) +InstallManPage(glHint,$(MANDIR)) +InstallManPage(glHistogram,$(MANDIR)) +InstallManPage(glIndex,$(MANDIR)) +InstallManPageAliases(glIndex,$(MANDIR),glIndexd glIndexf glIndexi glIndexs glIndexub glIndexdv glIndexfv glIndexiv glIndexsv glIndexubv) +InstallManPage(glIndexMask,$(MANDIR)) +InstallManPage(glIndexPointer,$(MANDIR)) +InstallManPage(glInitNames,$(MANDIR)) +InstallManPage(glInterleavedArrays,$(MANDIR)) +InstallManPage(glIsEnabled,$(MANDIR)) +InstallManPage(glIslist,$(MANDIR)) +InstallManPage(glIsTexture,$(MANDIR)) +InstallManPage(glLight,$(MANDIR)) +InstallManPageAliases(glLight,$(MANDIR),glLightf glLighti glLightfv glLightiv) +InstallManPage(glLightModel,$(MANDIR)) +InstallManPageAliases(glLightModel,$(MANDIR),glLightModelf glLightModeli glLightModelfv glLightModeliv) +InstallManPage(glLineStipple,$(MANDIR)) +InstallManPage(glLineWidth,$(MANDIR)) +InstallManPage(glListBase,$(MANDIR)) +InstallManPage(glLoadIdentity,$(MANDIR)) +InstallManPage(glLoadMatrix,$(MANDIR)) +InstallManPageAliases(glLoadMatrix,$(MANDIR),glLoadMatrixd glLoadMatrixf) +InstallManPage(glLoadName,$(MANDIR)) +InstallManPage(glLogicOp,$(MANDIR)) +InstallManPage(glMap1,$(MANDIR)) +InstallManPageAliases(glMap1,$(MANDIR),glMap1d glMap1f) +InstallManPage(glMap2,$(MANDIR)) +InstallManPageAliases(glMap2,$(MANDIR),glMap2d glMap2f) +InstallManPage(glMapGrid,$(MANDIR)) +InstallManPageAliases(glMapGrid,$(MANDIR),glMapGrid1d glMapGrid1f glMapGrid2d glMapGrid2f) +InstallManPage(glMaterial,$(MANDIR)) +InstallManPageAliases(glMaterial,$(MANDIR),glMaterialf glMateriali glMaterialfv glMaterialiv) +InstallManPage(glMatrixMode,$(MANDIR)) +InstallManPage(glMinmax,$(MANDIR)) +InstallManPage(glMultiTexCoordARB,$(MANDIR)) +InstallManPageAliases(glMultiTexCoordARB,$(MANDIR),glMultiTexCoord1dARB glMultiTexCoord1dvARB glMultiTexCoord1fARB glMultiTexCoord1fvARB glMultiTexCoord1iARB glMultiTexCoord1ivARB glMultiTexCoord1sARB glMultiTexCoord1svARB glMultiTexCoord2dARB glMultiTexCoord2dvARB glMultiTexCoord2fARB glMultiTexCoord2fvARB glMultiTexCoord2iARB glMultiTexCoord2ivARB glMultiTexCoord2sARB glMultiTexCoord2svARB glMultiTexCoord3dARB glMultiTexCoord3dvARB glMultiTexCoord3fARB glMultiTexCoord3fvARB glMultiTexCoord3iARB glMultiTexCoord3ivARB glMultiTexCoord3sARB glMultiTexCoord3svARB glMultiTexCoord4dARB glMultiTexCoord4dvARB glMultiTexCoord4fARB glMultiTexCoord4fvARB glMultiTexCoord4iARB glMultiTexCoord4ivARB glMultiTexCoord4sARB glMultiTexCoord4svARB) +InstallManPage(glMultMatrix,$(MANDIR)) +InstallManPageAliases(glMultMatrix,$(MANDIR),glMultMatrixd glMultMatrixf) +InstallManPage(glNewList,$(MANDIR)) +InstallManPageAliases(glNewList,$(MANDIR),glEndList) +InstallManPage(glNormal,$(MANDIR)) +InstallManPageAliases(glNormal,$(MANDIR),glNormal3b glNormal3d glNormal3f glNormal3i glNormal3s glNormal3bv glNormal3dv glNormal3fv glNormal3iv glNormal3sv) +InstallManPage(glNormalPointer,$(MANDIR)) +InstallManPage(glOrtho,$(MANDIR)) +InstallManPage(glPassThrough,$(MANDIR)) +InstallManPage(glPixelMap,$(MANDIR)) +InstallManPageAliases(glPixelMap,$(MANDIR),glPixelMapfv glPixelMapuiv glPixelMapusv) +InstallManPage(glPixelStore,$(MANDIR)) +InstallManPageAliases(glPixelStore,$(MANDIR),glPixelStoref glPixelStorei) +InstallManPage(glPixelTransfer,$(MANDIR)) +InstallManPageAliases(glPixelTransfer,$(MANDIR),glPixelTransferf glPixelTransferi) +InstallManPage(glPixelZoom,$(MANDIR)) +InstallManPage(glPointSize,$(MANDIR)) +InstallManPage(glPolygonMode,$(MANDIR)) +InstallManPage(glPolygonOffset,$(MANDIR)) +InstallManPage(glPolygonStipple,$(MANDIR)) +InstallManPage(glPrioritizeTextures,$(MANDIR)) +InstallManPage(glPushAttrib,$(MANDIR)) +InstallManPageAliases(glPushAttrib,$(MANDIR),glPopAttrib) +InstallManPage(glPushClientAttrib,$(MANDIR)) +InstallManPageAliases(glPushClientAttrib,$(MANDIR),glPopClientAttrib) +InstallManPage(glPushMatrix,$(MANDIR)) +InstallManPageAliases(glPushMatrix,$(MANDIR),glPopMatrix) +InstallManPage(glPushName,$(MANDIR)) +InstallManPageAliases(glPushName,$(MANDIR),glPopName) +InstallManPage(glRasterPos,$(MANDIR)) +InstallManPageAliases(glRasterPos,$(MANDIR),glRasterPos2d glRasterPos2f glRasterPos2i glRasterPos2s glRasterPos3d glRasterPos3f glRasterPos3i glRasterPos3s glRasterPos4d glRasterPos4f glRasterPos4i glRasterPos4s glRasterPos2dv glRasterPos2fv glRasterPos2iv glRasterPos2sv glRasterPos3dv glRasterPos3fv glRasterPos3iv glRasterPos3sv glRasterPos4dv glRasterPos4fv glRasterPos4iv glRasterPos4sv) +InstallManPage(glReadBuffer,$(MANDIR)) +InstallManPage(glReadPixels,$(MANDIR)) +InstallManPage(glRect,$(MANDIR)) +InstallManPageAliases(glRect,$(MANDIR),glRectd glRectf glRecti glRects glRectdv glRectfv glRectiv glRectsv) +InstallManPage(glRenderMode,$(MANDIR)) +InstallManPage(glResetHistogram,$(MANDIR)) +InstallManPage(glResetMinmax,$(MANDIR)) +InstallManPage(glRotate,$(MANDIR)) +InstallManPageAliases(glRotate,$(MANDIR),glRotated glRotatef) +InstallManPage(glScale,$(MANDIR)) +InstallManPageAliases(glScale,$(MANDIR),glScaled glScalef) +InstallManPage(glScissor,$(MANDIR)) +InstallManPage(glSelectBuffer,$(MANDIR)) +InstallManPage(glSeparableFilter2D,$(MANDIR)) +InstallManPage(glShadeModel,$(MANDIR)) +InstallManPage(glStencilFunc,$(MANDIR)) +InstallManPage(glStencilMask,$(MANDIR)) +InstallManPage(glStencilOp,$(MANDIR)) +InstallManPage(glTexCoord,$(MANDIR)) +InstallManPageAliases(glTexCoord,$(MANDIR),glTexCoord1d glTexCoord1f glTexCoord1i glTexCoord1s glTexCoord2d glTexCoord2f glTexCoord2i glTexCoord2s glTexCoord3d glTexCoord3f glTexCoord3i glTexCoord3s glTexCoord4d glTexCoord4f glTexCoord4i glTexCoord4s glTexCoord1dv glTexCoord1fv glTexCoord1iv glTexCoord1sv glTexCoord2dv glTexCoord2fv glTexCoord2iv glTexCoord2sv glTexCoord3dv glTexCoord3fv glTexCoord3iv glTexCoord3sv glTexCoord4dv glTexCoord4fv glTexCoord4iv glTexCoord4sv) +InstallManPage(glTexCoordPointer,$(MANDIR)) +InstallManPage(glTexEnv,$(MANDIR)) +InstallManPageAliases(glTexEnv,$(MANDIR),glTexEnvf glTexEnvi glTexEnvfv glTexEnviv) +InstallManPage(glTexGen,$(MANDIR)) +InstallManPageAliases(glTexGen,$(MANDIR),glTexGend glTexGenf glTexGeni glTexGendv glTexGenfv glTexGeniv) +InstallManPage(glTexImage1D,$(MANDIR)) +InstallManPage(glTexImage2D,$(MANDIR)) +InstallManPage(glTexImage3D,$(MANDIR)) +InstallManPage(glTexParameter,$(MANDIR)) +InstallManPageAliases(glTexParameter,$(MANDIR),glTexParameterf glTexParameteri glTexParameterfv glTexParameteriv) +InstallManPage(glTexSubImage1D,$(MANDIR)) +InstallManPage(glTexSubImage2D,$(MANDIR)) +InstallManPage(glTexSubImage3D,$(MANDIR)) +InstallManPage(glTranslate,$(MANDIR)) +InstallManPageAliases(glTranslate,$(MANDIR),glTranslated glTranslatef) +InstallManPage(glVertex,$(MANDIR)) +InstallManPageAliases(glVertex,$(MANDIR),glVertex2d glVertex2f glVertex2i glVertex2s glVertex3d glVertex3f glVertex3i glVertex3s glVertex4d glVertex4f glVertex4i glVertex4s glVertex2dv glVertex2fv glVertex2iv glVertex2sv glVertex3dv glVertex3fv glVertex3iv glVertex3sv glVertex4dv glVertex4fv glVertex4iv glVertex4sv) +InstallManPage(glVertexPointer,$(MANDIR)) +InstallManPage(glViewport,$(MANDIR)) + +#if 0 +GLMANDIR = $(OGLSAMPLESRCDIR)/main/doc/man/mangl/standard +GLSUFFIX = gl +#else +GLMANDIR = . +GLSUFFIX = 3gl +#endif + +LinkFile(glAccum.$(MSUFF), $(GLMANDIR)/accum.$(GLSUFFIX)) +LinkFile(glActiveTextureARB.$(MSUFF), $(GLMANDIR)/activetextureARB.$(GLSUFFIX)) +LinkFile(glAlphaFunc.$(MSUFF), $(GLMANDIR)/alphafunc.$(GLSUFFIX)) +LinkFile(glAreTexturesResident.$(MSUFF), $(GLMANDIR)/aretexturesresident.$(GLSUFFIX)) +LinkFile(glArrayElement.$(MSUFF), $(GLMANDIR)/arrayelement.$(GLSUFFIX)) +LinkFile(glBegin.$(MSUFF), $(GLMANDIR)/begin.$(GLSUFFIX)) +LinkFile(glBindTexture.$(MSUFF), $(GLMANDIR)/bindtexture.$(GLSUFFIX)) +LinkFile(glBitmap.$(MSUFF), $(GLMANDIR)/bitmap.$(GLSUFFIX)) +LinkFile(glBlendColor.$(MSUFF), $(GLMANDIR)/blendcolor.$(GLSUFFIX)) +LinkFile(glBlendEquation.$(MSUFF), $(GLMANDIR)/blendequation.$(GLSUFFIX)) +LinkFile(glBlendFunc.$(MSUFF), $(GLMANDIR)/blendfunc.$(GLSUFFIX)) +LinkFile(glCallList.$(MSUFF), $(GLMANDIR)/calllist.$(GLSUFFIX)) +LinkFile(glCallLists.$(MSUFF), $(GLMANDIR)/calllists.$(GLSUFFIX)) +LinkFile(glClear.$(MSUFF), $(GLMANDIR)/clear.$(GLSUFFIX)) +LinkFile(glClearAccum.$(MSUFF), $(GLMANDIR)/clearaccum.$(GLSUFFIX)) +LinkFile(glClearColor.$(MSUFF), $(GLMANDIR)/clearcolor.$(GLSUFFIX)) +LinkFile(glClearDepth.$(MSUFF), $(GLMANDIR)/cleardepth.$(GLSUFFIX)) +LinkFile(glClearIndex.$(MSUFF), $(GLMANDIR)/clearindex.$(GLSUFFIX)) +LinkFile(glClearStencil.$(MSUFF), $(GLMANDIR)/clearstencil.$(GLSUFFIX)) +LinkFile(glClientActiveTextureARB.$(MSUFF), $(GLMANDIR)/clientactivetextureARB.$(GLSUFFIX)) +LinkFile(glClipPlane.$(MSUFF), $(GLMANDIR)/clipplane.$(GLSUFFIX)) +LinkFile(glColor.$(MSUFF), $(GLMANDIR)/color.$(GLSUFFIX)) +LinkFile(glColorMask.$(MSUFF), $(GLMANDIR)/colormask.$(GLSUFFIX)) +LinkFile(glColorMaterial.$(MSUFF), $(GLMANDIR)/colormaterial.$(GLSUFFIX)) +LinkFile(glColorPointer.$(MSUFF), $(GLMANDIR)/colorpointer.$(GLSUFFIX)) +LinkFile(glColorSubTable.$(MSUFF), $(GLMANDIR)/colorsubtable.$(GLSUFFIX)) +LinkFile(glColorTable.$(MSUFF), $(GLMANDIR)/colortable.$(GLSUFFIX)) +LinkFile(glColorTableParameter.$(MSUFF), $(GLMANDIR)/colortableparameter.$(GLSUFFIX)) +LinkFile(glConvolutionFilter1D.$(MSUFF), $(GLMANDIR)/convolutionfilter1d.$(GLSUFFIX)) +LinkFile(glConvolutionFilter2D.$(MSUFF), $(GLMANDIR)/convolutionfilter2d.$(GLSUFFIX)) +LinkFile(glConvolutionParameter.$(MSUFF), $(GLMANDIR)/convolutionparameter.$(GLSUFFIX)) +LinkFile(glCopyColorSubTable.$(MSUFF), $(GLMANDIR)/copycolorsubtable.$(GLSUFFIX)) +LinkFile(glCopyColorTable.$(MSUFF), $(GLMANDIR)/copycolortable.$(GLSUFFIX)) +LinkFile(glCopyConvolutionFilter1D.$(MSUFF), $(GLMANDIR)/copyconvolutionfilter1d.$(GLSUFFIX)) +LinkFile(glCopyConvolutionFilter2D.$(MSUFF), $(GLMANDIR)/copyconvolutionfilter2d.$(GLSUFFIX)) +LinkFile(glCopyPixels.$(MSUFF), $(GLMANDIR)/copypixels.$(GLSUFFIX)) +LinkFile(glCopyTexImage1D.$(MSUFF), $(GLMANDIR)/copyteximage1d.$(GLSUFFIX)) +LinkFile(glCopyTexImage2D.$(MSUFF), $(GLMANDIR)/copyteximage2d.$(GLSUFFIX)) +LinkFile(glCopyTexSubImage1D.$(MSUFF), $(GLMANDIR)/copytexsubimage1d.$(GLSUFFIX)) +LinkFile(glCopyTexSubImage2D.$(MSUFF), $(GLMANDIR)/copytexsubimage2d.$(GLSUFFIX)) +LinkFile(glCopyTexSubImage3D.$(MSUFF), $(GLMANDIR)/copytexsubimage3d.$(GLSUFFIX)) +LinkFile(glCullFace.$(MSUFF), $(GLMANDIR)/cullface.$(GLSUFFIX)) +LinkFile(glDeleteLists.$(MSUFF), $(GLMANDIR)/deletelists.$(GLSUFFIX)) +LinkFile(glDeleteTextures.$(MSUFF), $(GLMANDIR)/deletetextures.$(GLSUFFIX)) +LinkFile(glDepthFunc.$(MSUFF), $(GLMANDIR)/depthfunc.$(GLSUFFIX)) +LinkFile(glDepthMask.$(MSUFF), $(GLMANDIR)/depthmask.$(GLSUFFIX)) +LinkFile(glDepthRange.$(MSUFF), $(GLMANDIR)/depthrange.$(GLSUFFIX)) +LinkFile(glDrawArrays.$(MSUFF), $(GLMANDIR)/drawarrays.$(GLSUFFIX)) +LinkFile(glDrawBuffer.$(MSUFF), $(GLMANDIR)/drawbuffer.$(GLSUFFIX)) +LinkFile(glDrawElements.$(MSUFF), $(GLMANDIR)/drawelements.$(GLSUFFIX)) +LinkFile(glDrawPixels.$(MSUFF), $(GLMANDIR)/drawpixels.$(GLSUFFIX)) +LinkFile(glDrawRangeElements.$(MSUFF), $(GLMANDIR)/drawrangeelements.$(GLSUFFIX)) +LinkFile(glEdgeFlag.$(MSUFF), $(GLMANDIR)/edgeflag.$(GLSUFFIX)) +LinkFile(glEdgeFlagPointer.$(MSUFF), $(GLMANDIR)/edgeflagpointer.$(GLSUFFIX)) +LinkFile(glEnable.$(MSUFF), $(GLMANDIR)/enable.$(GLSUFFIX)) +LinkFile(glEnableClientState.$(MSUFF), $(GLMANDIR)/enableclientstate.$(GLSUFFIX)) +LinkFile(glEvalCoord.$(MSUFF), $(GLMANDIR)/evalcoord.$(GLSUFFIX)) +LinkFile(glEvalMesh.$(MSUFF), $(GLMANDIR)/evalmesh.$(GLSUFFIX)) +LinkFile(glEvalPoint.$(MSUFF), $(GLMANDIR)/evalpoint.$(GLSUFFIX)) +LinkFile(glFeedbackBuffer.$(MSUFF), $(GLMANDIR)/feedbackbuffer.$(GLSUFFIX)) +LinkFile(glFinish.$(MSUFF), $(GLMANDIR)/finish.$(GLSUFFIX)) +LinkFile(glFlush.$(MSUFF), $(GLMANDIR)/flush.$(GLSUFFIX)) +LinkFile(glFog.$(MSUFF), $(GLMANDIR)/fog.$(GLSUFFIX)) +LinkFile(glFrontFace.$(MSUFF), $(GLMANDIR)/frontface.$(GLSUFFIX)) +LinkFile(glFrustum.$(MSUFF), $(GLMANDIR)/frustum.$(GLSUFFIX)) +LinkFile(glGenLists.$(MSUFF), $(GLMANDIR)/genlists.$(GLSUFFIX)) +LinkFile(glGenTextures.$(MSUFF), $(GLMANDIR)/gentextures.$(GLSUFFIX)) +LinkFile(glGet.$(MSUFF), $(GLMANDIR)/get.$(GLSUFFIX)) +LinkFile(glGetClipPlane.$(MSUFF), $(GLMANDIR)/getclipplane.$(GLSUFFIX)) +LinkFile(glGetColorTable.$(MSUFF), $(GLMANDIR)/getcolortable.$(GLSUFFIX)) +LinkFile(glGetColorTableParameter.$(MSUFF), $(GLMANDIR)/getcolortableparameter.$(GLSUFFIX)) +LinkFile(glGetConvolutionFilter.$(MSUFF), $(GLMANDIR)/getconvolutionfilter.$(GLSUFFIX)) +LinkFile(glGetConvolutionParameter.$(MSUFF), $(GLMANDIR)/getconvolutionparameter.$(GLSUFFIX)) +LinkFile(glGetError.$(MSUFF), $(GLMANDIR)/geterror.$(GLSUFFIX)) +LinkFile(glGetHistogram.$(MSUFF), $(GLMANDIR)/gethistogram.$(GLSUFFIX)) +LinkFile(glGetHistogramParameter.$(MSUFF), $(GLMANDIR)/gethistogramparameter.$(GLSUFFIX)) +LinkFile(glGetLight.$(MSUFF), $(GLMANDIR)/getlight.$(GLSUFFIX)) +LinkFile(glGetMap.$(MSUFF), $(GLMANDIR)/getmap.$(GLSUFFIX)) +LinkFile(glGetMaterial.$(MSUFF), $(GLMANDIR)/getmaterial.$(GLSUFFIX)) +LinkFile(glGetMinmax.$(MSUFF), $(GLMANDIR)/getminmax.$(GLSUFFIX)) +LinkFile(glGetMinmaxParameter.$(MSUFF), $(GLMANDIR)/getminmaxparameter.$(GLSUFFIX)) +LinkFile(glGetPixelMap.$(MSUFF), $(GLMANDIR)/getpixelmap.$(GLSUFFIX)) +LinkFile(glGetPointerv.$(MSUFF), $(GLMANDIR)/getpointerv.$(GLSUFFIX)) +LinkFile(glGetPolygonStipple.$(MSUFF), $(GLMANDIR)/getpolygonstipple.$(GLSUFFIX)) +LinkFile(glGetSeparableFilter.$(MSUFF), $(GLMANDIR)/getseparablefilter.$(GLSUFFIX)) +LinkFile(glGetString.$(MSUFF), $(GLMANDIR)/getstring.$(GLSUFFIX)) +LinkFile(glGetTexEnv.$(MSUFF), $(GLMANDIR)/gettexenv.$(GLSUFFIX)) +LinkFile(glGetTexGen.$(MSUFF), $(GLMANDIR)/gettexgen.$(GLSUFFIX)) +LinkFile(glGetTexImage.$(MSUFF), $(GLMANDIR)/getteximage.$(GLSUFFIX)) +LinkFile(glGetTexLevelParameter.$(MSUFF), $(GLMANDIR)/gettexlevelparameter.$(GLSUFFIX)) +LinkFile(glGetTexParameter.$(MSUFF), $(GLMANDIR)/gettexparameter.$(GLSUFFIX)) +LinkFile(glHint.$(MSUFF), $(GLMANDIR)/hint.$(GLSUFFIX)) +LinkFile(glHistogram.$(MSUFF), $(GLMANDIR)/histogram.$(GLSUFFIX)) +LinkFile(glIndex.$(MSUFF), $(GLMANDIR)/index.$(GLSUFFIX)) +LinkFile(glIndexMask.$(MSUFF), $(GLMANDIR)/indexmask.$(GLSUFFIX)) +LinkFile(glIndexPointer.$(MSUFF), $(GLMANDIR)/indexpointer.$(GLSUFFIX)) +LinkFile(glInitNames.$(MSUFF), $(GLMANDIR)/initnames.$(GLSUFFIX)) +LinkFile(glInterleavedArrays.$(MSUFF), $(GLMANDIR)/interleavedarrays.$(GLSUFFIX)) +LinkFile(glIsEnabled.$(MSUFF), $(GLMANDIR)/isenabled.$(GLSUFFIX)) +LinkFile(glIslist.$(MSUFF), $(GLMANDIR)/islist.$(GLSUFFIX)) +LinkFile(glIsTexture.$(MSUFF), $(GLMANDIR)/istexture.$(GLSUFFIX)) +LinkFile(glLight.$(MSUFF), $(GLMANDIR)/light.$(GLSUFFIX)) +LinkFile(glLightModel.$(MSUFF), $(GLMANDIR)/lightmodel.$(GLSUFFIX)) +LinkFile(glLineStipple.$(MSUFF), $(GLMANDIR)/linestipple.$(GLSUFFIX)) +LinkFile(glLineWidth.$(MSUFF), $(GLMANDIR)/linewidth.$(GLSUFFIX)) +LinkFile(glListBase.$(MSUFF), $(GLMANDIR)/listbase.$(GLSUFFIX)) +LinkFile(glLoadIdentity.$(MSUFF), $(GLMANDIR)/loadidentity.$(GLSUFFIX)) +LinkFile(glLoadMatrix.$(MSUFF), $(GLMANDIR)/loadmatrix.$(GLSUFFIX)) +LinkFile(glLoadName.$(MSUFF), $(GLMANDIR)/loadname.$(GLSUFFIX)) +LinkFile(glLogicOp.$(MSUFF), $(GLMANDIR)/logicop.$(GLSUFFIX)) +LinkFile(glMap1.$(MSUFF), $(GLMANDIR)/map1.$(GLSUFFIX)) +LinkFile(glMap2.$(MSUFF), $(GLMANDIR)/map2.$(GLSUFFIX)) +LinkFile(glMapGrid.$(MSUFF), $(GLMANDIR)/mapgrid.$(GLSUFFIX)) +LinkFile(glMaterial.$(MSUFF), $(GLMANDIR)/material.$(GLSUFFIX)) +LinkFile(glMatrixMode.$(MSUFF), $(GLMANDIR)/matrixmode.$(GLSUFFIX)) +LinkFile(glMinmax.$(MSUFF), $(GLMANDIR)/minmax.$(GLSUFFIX)) +LinkFile(glMultiTexCoordARB.$(MSUFF), $(GLMANDIR)/multitexcoordARB.$(GLSUFFIX)) +LinkFile(glMultMatrix.$(MSUFF), $(GLMANDIR)/multmatrix.$(GLSUFFIX)) +LinkFile(glNewList.$(MSUFF), $(GLMANDIR)/newlist.$(GLSUFFIX)) +LinkFile(glNormal.$(MSUFF), $(GLMANDIR)/normal.$(GLSUFFIX)) +LinkFile(glNormalPointer.$(MSUFF), $(GLMANDIR)/normalpointer.$(GLSUFFIX)) +LinkFile(glOrtho.$(MSUFF), $(GLMANDIR)/ortho.$(GLSUFFIX)) +LinkFile(glPassThrough.$(MSUFF), $(GLMANDIR)/passthrough.$(GLSUFFIX)) +LinkFile(glPixelMap.$(MSUFF), $(GLMANDIR)/pixelmap.$(GLSUFFIX)) +LinkFile(glPixelStore.$(MSUFF), $(GLMANDIR)/pixelstore.$(GLSUFFIX)) +LinkFile(glPixelTransfer.$(MSUFF), $(GLMANDIR)/pixeltransfer.$(GLSUFFIX)) +LinkFile(glPixelZoom.$(MSUFF), $(GLMANDIR)/pixelzoom.$(GLSUFFIX)) +LinkFile(glPointSize.$(MSUFF), $(GLMANDIR)/pointsize.$(GLSUFFIX)) +LinkFile(glPolygonMode.$(MSUFF), $(GLMANDIR)/polygonmode.$(GLSUFFIX)) +LinkFile(glPolygonOffset.$(MSUFF), $(GLMANDIR)/polygonoffset.$(GLSUFFIX)) +LinkFile(glPolygonStipple.$(MSUFF), $(GLMANDIR)/polygonstipple.$(GLSUFFIX)) +LinkFile(glPrioritizeTextures.$(MSUFF), $(GLMANDIR)/prioritizetextures.$(GLSUFFIX)) +LinkFile(glPushAttrib.$(MSUFF), $(GLMANDIR)/pushattrib.$(GLSUFFIX)) +LinkFile(glPushClientAttrib.$(MSUFF), $(GLMANDIR)/pushclientattrib.$(GLSUFFIX)) +LinkFile(glPushMatrix.$(MSUFF), $(GLMANDIR)/pushmatrix.$(GLSUFFIX)) +LinkFile(glPushName.$(MSUFF), $(GLMANDIR)/pushname.$(GLSUFFIX)) +LinkFile(glRasterPos.$(MSUFF), $(GLMANDIR)/rasterpos.$(GLSUFFIX)) +LinkFile(glReadBuffer.$(MSUFF), $(GLMANDIR)/readbuffer.$(GLSUFFIX)) +LinkFile(glReadPixels.$(MSUFF), $(GLMANDIR)/readpixels.$(GLSUFFIX)) +LinkFile(glRect.$(MSUFF), $(GLMANDIR)/rect.$(GLSUFFIX)) +LinkFile(glRenderMode.$(MSUFF), $(GLMANDIR)/rendermode.$(GLSUFFIX)) +LinkFile(glResetHistogram.$(MSUFF), $(GLMANDIR)/resethistogram.$(GLSUFFIX)) +LinkFile(glResetMinmax.$(MSUFF), $(GLMANDIR)/resetminmax.$(GLSUFFIX)) +LinkFile(glRotate.$(MSUFF), $(GLMANDIR)/rotate.$(GLSUFFIX)) +LinkFile(glScale.$(MSUFF), $(GLMANDIR)/scale.$(GLSUFFIX)) +LinkFile(glScissor.$(MSUFF), $(GLMANDIR)/scissor.$(GLSUFFIX)) +LinkFile(glSelectBuffer.$(MSUFF), $(GLMANDIR)/selectbuffer.$(GLSUFFIX)) +LinkFile(glSeparableFilter2D.$(MSUFF), $(GLMANDIR)/separablefilter2d.$(GLSUFFIX)) +LinkFile(glShadeModel.$(MSUFF), $(GLMANDIR)/shademodel.$(GLSUFFIX)) +LinkFile(glStencilFunc.$(MSUFF), $(GLMANDIR)/stencilfunc.$(GLSUFFIX)) +LinkFile(glStencilMask.$(MSUFF), $(GLMANDIR)/stencilmask.$(GLSUFFIX)) +LinkFile(glStencilOp.$(MSUFF), $(GLMANDIR)/stencilop.$(GLSUFFIX)) +LinkFile(glTexCoord.$(MSUFF), $(GLMANDIR)/texcoord.$(GLSUFFIX)) +LinkFile(glTexCoordPointer.$(MSUFF), $(GLMANDIR)/texcoordpointer.$(GLSUFFIX)) +LinkFile(glTexEnv.$(MSUFF), $(GLMANDIR)/texenv.$(GLSUFFIX)) +LinkFile(glTexGen.$(MSUFF), $(GLMANDIR)/texgen.$(GLSUFFIX)) +LinkFile(glTexImage1D.$(MSUFF), $(GLMANDIR)/teximage1d.$(GLSUFFIX)) +LinkFile(glTexImage2D.$(MSUFF), $(GLMANDIR)/teximage2d.$(GLSUFFIX)) +LinkFile(glTexImage3D.$(MSUFF), $(GLMANDIR)/teximage3d.$(GLSUFFIX)) +LinkFile(glTexParameter.$(MSUFF), $(GLMANDIR)/texparameter.$(GLSUFFIX)) +LinkFile(glTexSubImage1D.$(MSUFF), $(GLMANDIR)/texsubimage1d.$(GLSUFFIX)) +LinkFile(glTexSubImage2D.$(MSUFF), $(GLMANDIR)/texsubimage2d.$(GLSUFFIX)) +LinkFile(glTexSubImage3D.$(MSUFF), $(GLMANDIR)/texsubimage3d.$(GLSUFFIX)) +LinkFile(glTranslate.$(MSUFF), $(GLMANDIR)/translate.$(GLSUFFIX)) +LinkFile(glVertex.$(MSUFF), $(GLMANDIR)/vertex.$(GLSUFFIX)) +LinkFile(glVertexPointer.$(MSUFF), $(GLMANDIR)/vertexpointer.$(GLSUFFIX)) +LinkFile(glViewport.$(MSUFF), $(GLMANDIR)/viewport.$(GLSUFFIX)) + Index: xc/doc/man/GL/gl/accum.3gl diff -u /dev/null xc/doc/man/GL/gl/accum.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/accum.3gl Mon Jan 14 22:43:26 2002 @@ -0,0 +1,156 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 accum.gl +.ds Xs 43732 7 accum.gl +.TH GLACCUM 3G +.SH NAME +.B "glAccum +\- operate on the accumulation buffer + +.SH C SPECIFICATION +void \f3glAccum\fP( +GLenum \fIop\fP, +.nf +.ta \w'\f3void \fPglAccum( 'u + GLfloat \fIvalue\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIvalue\fP\ \ 'u +\f2op\fP +Specifies the accumulation buffer operation. +Symbolic constants +\%\f3GL_ACCUM\fP, +\%\f3GL_LOAD\fP, +\%\f3GL_ADD\fP, +\%\f3GL_MULT\fP, +and +\%\f3GL_RETURN\fP are accepted. +.TP +\f2value\fP +Specifies a floating-point value used in the accumulation buffer operation. +\f2op\fP determines how \f2value\fP is used. +.SH DESCRIPTION +The accumulation buffer is an extended-range color buffer. +Images are not rendered into it. +Rather, +images rendered into one of the color buffers +are added to the contents of the accumulation buffer after rendering. +Effects such as antialiasing (of points, lines, and polygons), +motion blur, +and depth of field can be created +by accumulating images generated with different transformation matrices. +.P +Each pixel in the accumulation buffer consists of +red, green, blue, and alpha values. +The number of bits per component in the accumulation buffer +depends on the implementation. You can examine this number +by calling \%\f3glGetIntegerv\fP four times, +with arguments \%\f3GL_ACCUM_RED_BITS\fP, +\%\f3GL_ACCUM_GREEN_BITS\fP, +\%\f3GL_ACCUM_BLUE_BITS\fP, +and \%\f3GL_ACCUM_ALPHA_BITS\fP. +Regardless of the number of bits per component, +the range of values stored by each component is [\-1,\ 1]. +The accumulation buffer pixels are mapped one-to-one with frame buffer pixels. +.P +\%\f3glAccum\fP operates on the accumulation buffer. +The first argument, \f2op\fP, +is a symbolic constant that selects an accumulation buffer operation. +The second argument, \f2value\fP, +is a floating-point value to be used in that operation. +Five operations are specified: +\%\f3GL_ACCUM\fP, \%\f3GL_LOAD\fP, \%\f3GL_ADD\fP, +\%\f3GL_MULT\fP, and \%\f3GL_RETURN\fP. +.P +All accumulation buffer operations are limited +to the area of the current scissor box and applied identically to +the red, green, blue, and alpha components of each pixel. +If a \%\f3glAccum\fP operation results in a value outside the range [\-1,\ 1], +the contents of an accumulation buffer pixel component are undefined. +.P +The operations are as follows: +.TP 14 +\%\f3GL_ACCUM\fP +Obtains R, G, B, and A values +from the buffer currently selected for reading (see \%\f3glReadBuffer\fP). +Each component value is divided by $2 sup n^-^1$, +where $n$ is the number of bits allocated to each color component +in the currently selected buffer. +The result is a floating-point value in the range [0,\ 1], +which is multiplied by \f2value\fP and added to the corresponding pixel component +in the accumulation buffer, +thereby updating the accumulation buffer. +.TP +\%\f3GL_LOAD\fP +Similar to \%\f3GL_ACCUM\fP, +except that the current value in the accumulation buffer is not used +in the calculation of the new value. +That is, the R, G, B, and A values from the currently selected buffer +are divided by $2 sup n^-^1$, +multiplied by \f2value\fP, +and then stored in the corresponding accumulation buffer cell, +overwriting the current value. +.TP +\%\f3GL_ADD\fP +Adds \f2value\fP to each R, G, B, and A +in the accumulation buffer. +.TP +\%\f3GL_MULT\fP +Multiplies each R, G, B, and A +in the accumulation buffer by \f2value\fP and returns the scaled component +to its corresponding accumulation buffer location. +.TP +\%\f3GL_RETURN\fP +Transfers accumulation buffer values +to the color buffer or buffers currently selected for writing. +Each R, G, B, and A component is multiplied by \f2value\fP, +then multiplied by $2 sup n^-^1$, +clamped to the range [0,$~2 sup n^-^1 $], and stored +in the corresponding display buffer cell. +The only fragment operations that are applied to this transfer are +pixel ownership, +scissor, +dithering, +and color writemasks. +.P +To clear the accumulation buffer, call \%\f3glClearAccum\fP with R, G, B, +and A values to set it to, then call \%\f3glClear\fP with the +accumulation buffer enabled. +.SH NOTES +Only pixels within the current scissor box are updated by a +\%\f3glAccum\fP operation. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2op\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if there is no accumulation buffer. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glAccum\fP +is executed between the execution of +\%\f3glBegin\fP and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_ACCUM_RED_BITS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_ACCUM_GREEN_BITS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_ACCUM_BLUE_BITS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_ACCUM_ALPHA_BITS\fP +.SH SEE ALSO +\%\f3glClear(3G)\fP, +\%\f3glClearAccum(3G)\fP, +\%\f3glCopyPixels(3G)\fP, +\%\f3glDrawBuffer(3G)\fP, +\%\f3glGet(3G)\fP, +\%\f3glReadBuffer(3G)\fP, +\%\f3glReadPixels(3G)\fP, +\%\f3glScissor(3G)\fP, +\%\f3glStencilOp(3G)\fP Index: xc/doc/man/GL/gl/activetextureARB.3gl diff -u /dev/null xc/doc/man/GL/gl/activetextureARB.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/activetextureARB.3gl Mon Jan 14 22:43:26 2002 @@ -0,0 +1,53 @@ +'\" et +'\"! eqn|tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 19:46 +.ds Dm 01 activetex +.ds Xs 15390 4 activetextureARB.gl +.TH GLACTIVETEXTUREARB 3G +.SH NAME +.B "glActiveTextureARB +\- select active texture unit + +.SH C SPECIFICATION +void \f3glActiveTextureARB\fP( +GLenum \fItexture\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2texture\fP\ \ 'u +\f2texture\fP +Specifies which texture unit to make active. The number +of texture units is implementation dependent, but must be at least +two. \f2texture\fP must be one of \%\f3GL_TEXTURE\fP$i$\f3_ARB\fP, where +0 \(<= $ i $ < \%\f3GL_MAX_TEXTURE_UNITS_ARB\fP, which is an +implementation-dependent value. The intial value is \%\f3GL_TEXTURE0_ARB\fP. +.SH DESCRIPTION +\%\f3glActiveTextureARB\fP selects which texture unit subsequent texture state calls will +affect. The number of texture units an implementation supports is +implementation dependent, but must be at least 2. +.P +Vertex arrays are client-side GL resources, which are selected by the +\%\f3glClientActiveTextureARB\fP routine. +.SH NOTES +\%\f3glActiveTextureARB\fP is only supported if \%\f3GL_ARB_multitexture\fP is included in the +string returned by \%\f3glGetString\fP when called with the argument +\%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2texture\fP is not one of +\%\f3GL_TEXTURE\fP$i$\f3_ARB\fP, +.br +where 0 \(<= $ i $ < \%\f3GL_MAX_TEXTURE_UNITS_ARB\fP. +.SH SEE ALSO +\%\f3glClientActiveTextureARB(3G)\fP, +\%\f3glGetIntegerv(3G)\fP, +\%\f3glMultiTexCoordARB(3G)\fP, +\%\f3glTexParameter(3G)\fP + Index: xc/doc/man/GL/gl/alphafunc.3gl diff -u /dev/null xc/doc/man/GL/gl/alphafunc.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/alphafunc.3gl Mon Jan 14 22:43:26 2002 @@ -0,0 +1,114 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 alphafunc +.ds Xs 25246 5 alphafunc.gl +.TH GLALPHAFUNC 3G +.SH NAME +.B "glAlphaFunc +\- specify the alpha test function + +.SH C SPECIFICATION +void \f3glAlphaFunc\fP( +GLenum \fIfunc\fP, +.nf +.ta \w'\f3void \fPglAlphaFunc( 'u + GLclampf \fIref\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2func\fP\ \ 'u +\f2func\fP +Specifies the alpha comparison function. +Symbolic constants +\%\f3GL_NEVER\fP, +\%\f3GL_LESS\fP, +\%\f3GL_EQUAL\fP, +\%\f3GL_LEQUAL\fP, +\%\f3GL_GREATER\fP, +\%\f3GL_NOTEQUAL\fP, +\%\f3GL_GEQUAL\fP, and +\%\f3GL_ALWAYS\fP are accepted. The initial value is \%\f3GL_ALWAYS\fP. +.TP +\f2ref\fP +Specifies the reference value that incoming alpha values are compared to. +This value is clamped to the range [0,\ 1], +where 0 represents the lowest possible alpha value +and 1 the highest possible value. +The initial reference value is 0. +.SH DESCRIPTION +The alpha test discards fragments depending on the outcome of a comparison +between an incoming fragment's alpha value and a constant reference value. +\%\f3glAlphaFunc\fP specifies the reference value and the comparison function. +The comparison is performed only if alpha testing is enabled. By +default, it is not enabled. +(See +\%\f3glEnable\fP and \%\f3glDisable\fP of \%\f3GL_ALPHA_TEST\fP.) +.P +\f2func\fP and \f2ref\fP specify the conditions under which +the pixel is drawn. +The incoming alpha value is compared to \f2ref\fP +using the function specified by \f2func\fP. +If the value passes the comparison, +the incoming fragment is drawn +if it also passes subsequent stencil and depth buffer tests. +If the value fails the comparison, +no change is made to the frame buffer at that pixel location. The +comparison functions are as follows: +.TP 18 +\%\f3GL_NEVER\fP +Never passes. +.TP +\%\f3GL_LESS\fP +Passes if the incoming alpha value is less than the reference value. +.TP +\%\f3GL_EQUAL\fP +Passes if the incoming alpha value is equal to the reference value. +.TP +\%\f3GL_LEQUAL\fP +Passes if the incoming alpha value is less than or equal to the reference value. +.TP +\%\f3GL_GREATER\fP +Passes if the incoming alpha value is greater than the reference value. +.TP +\%\f3GL_NOTEQUAL\fP +Passes if the incoming alpha value is not equal to the reference value. +.TP +\%\f3GL_GEQUAL\fP +Passes if the incoming alpha value is greater than or equal to +the reference value. +.TP +\%\f3GL_ALWAYS\fP +Always passes (initial value). +.P +\%\f3glAlphaFunc\fP operates on all pixel write operations, +including those resulting from the scan conversion of points, +lines, +polygons, +and bitmaps, +and from pixel draw and copy operations. +\%\f3glAlphaFunc\fP does not affect screen clear operations. +.SH NOTES +Alpha testing is performed only in RGBA mode. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2func\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glAlphaFunc\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_ALPHA_TEST_FUNC\fP +.br +\%\f3glGet\fP with argument \%\f3GL_ALPHA_TEST_REF\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_ALPHA_TEST\fP +.SH SEE ALSO +\%\f3glBlendFunc(3G)\fP, +\%\f3glClear(3G)\fP, +\%\f3glDepthFunc(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glStencilFunc(3G)\fP Index: xc/doc/man/GL/gl/aretexturesresident.3gl diff -u /dev/null xc/doc/man/GL/gl/aretexturesresident.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/aretexturesresident.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,91 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 aretextur +.ds Xs 9130 5 aretexturesresident.gl +.TH GLARETEXTURESRESIDENT 3G +.SH NAME +.B "glAreTexturesResident +\- determine if textures are loaded in texture memory + +.SH C SPECIFICATION +GLboolean \f3glAreTexturesResident\fP( +GLsizei \fIn\fP, +.nf +.ta \w'\f3GLboolean \fPglAreTexturesResident( 'u + const GLuint \fI*textures\fP, + GLboolean \fI*residences\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIresidences\fP\ \ 'u +\f2n\fP +Specifies the number of textures to be queried. +.TP +\f2textures\fP +Specifies an array containing the names of the textures to be queried. +.TP +\f2residences\fP +Specifies an array in which the texture residence status is returned. +The residence status of a texture named by an element of \f2textures\fP is +returned in the corresponding element of \f2residences\fP. +.SH DESCRIPTION +GL establishes +a ``working set'' of textures that are resident in texture memory. +These textures can be bound to a texture target much more efficiently +than textures that are not resident. +.P +\%\f3glAreTexturesResident\fP queries the texture residence status of the \f2n\fP textures named by +the elements of \f2textures\fP. +If all the named textures are resident, +\%\f3glAreTexturesResident\fP returns \%\f3GL_TRUE\fP, +and the contents of \f2residences\fP are undisturbed. +If not all the named textures are resident, \%\f3glAreTexturesResident\fP returns \%\f3GL_FALSE\fP, +and detailed status is returned in the \f2n\fP elements of \f2residences\fP. +If an element of \f2residences\fP is \%\f3GL_TRUE\fP, then the texture named by +the corresponding element of \f2textures\fP is resident. +.P +The residence status of a single bound texture may also be queried +by calling +\%\f3glGetTexParameter\fP with the \f2target\fP argument set to the +target to which the texture is bound, and the \f2pname\fP argument +set to \%\f3GL_TEXTURE_RESIDENT\fP. +This is the only way that the residence status of a default texture can be +queried. +.SH NOTES +\%\f3glAreTexturesResident\fP is available only if the GL version is 1.1 or greater. +.P +\%\f3glAreTexturesResident\fP returns the residency status of the textures at the time of +invocation. It does not guarantee that the textures will remain +resident at any other time. +.P +If textures reside in virtual memory (there is no texture memory), they +are considered always resident. +.P +Some implementations may not load a texture until the first use of +that texture. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2n\fP is negative. +.P +\%\f3GL_INVALID_VALUE\fP is generated if any element in \f2textures\fP +is 0 or does not name a texture. In that case, the function returns +\%\f3GL_FALSE\fP and the contents of \f2residences\fP is indeterminate. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glAreTexturesResident\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexParameter\fP with parameter name \%\f3GL_TEXTURE_RESIDENT\fP +retrieves the residence status of a currently bound texture. +.SH SEE ALSO +\%\f3glBindTexture(3G)\fP, +\%\f3glGetTexParameter(3G)\fP, +\%\f3glPrioritizeTextures(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP Index: xc/doc/man/GL/gl/arrayelement.3gl diff -u /dev/null xc/doc/man/GL/gl/arrayelement.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/arrayelement.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,70 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 arrayelem +.ds Xs 50127 5 arrayelement.gl +.TH GLARRAYELEMENT 3G +.SH NAME +.B "glArrayElement +\- render a vertex using the specified vertex array element + +.SH C SPECIFICATION +void \f3glArrayElement\fP( +GLint \fIi\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2i\fP\ \ 'u +\f2i\fP +Specifies an index into the enabled vertex data arrays. +.SH DESCRIPTION +\%\f3glArrayElement\fP commands are used within \%\f3glBegin\fP/\%\f3glEnd\fP pairs to +specify vertex and attribute data for point, line, and polygon +primitives. If \%\f3GL_VERTEX_ARRAY\fP is enabled when \%\f3glArrayElement\fP is called, a +single vertex is drawn, using +vertex and attribute data taken from location \f2i\fP of the enabled +arrays. If \%\f3GL_VERTEX_ARRAY\fP is not enabled, no drawing occurs but +the attributes corresponding to the enabled arrays are modified. +.P +Use \%\f3glArrayElement\fP to construct primitives by indexing vertex data, rather than +by streaming through arrays of data in first-to-last order. Because +each call specifies only a single vertex, it is possible to explicitly +specify per-primitive attributes such as a single normal per +individual triangle. +.P +Changes made to array data between the execution of \%\f3glBegin\fP and the +corresponding execution of \%\f3glEnd\fP may affect calls to \%\f3glArrayElement\fP that are made +within the same \%\f3glBegin\fP/\%\f3glEnd\fP period in non-sequential ways. +That is, a call to +.br +\%\f3glArrayElement\fP that precedes a change to array data may +access the changed data, and a call that follows a change to array data +may access original data. +.SH NOTES +\%\f3glArrayElement\fP is available only if the GL version is 1.1 or greater. +.P +\%\f3glArrayElement\fP is included in display lists. If \%\f3glArrayElement\fP is entered into a +display list, the necessary array data (determined by the array +pointers and enables) is also entered into the display list. Because +the array pointers and enables are client-side state, their values +affect display lists when the lists are created, not when the lists +are executed. +.SH SEE ALSO +\%\f3glClientActiveTextureARB(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glGetPointerv(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glInterleavedArrays(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/begin.3gl diff -u /dev/null xc/doc/man/GL/gl/begin.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/begin.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,217 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 begin.gl +.ds Xs 5437 8 begin.gl +.TH GLBEGIN 3G +.SH NAME +.B "glBegin, glEnd +\- delimit the vertices of a primitive or a group of like primitives + +.SH C SPECIFICATION +void \f3glBegin\fP( +GLenum \fImode\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2mode\fP\ \ 'u +\f2mode\fP +Specifies the primitive or primitives that will be created from vertices +presented between \%\f3glBegin\fP and the subsequent \%\f3glEnd\fP. +Ten symbolic constants are accepted: +\%\f3GL_POINTS\fP, +\%\f3GL_LINES\fP, +\%\f3GL_LINE_STRIP\fP, +\%\f3GL_LINE_LOOP\fP, +\%\f3GL_TRIANGLES\fP, +\%\f3GL_TRIANGLE_STRIP\fP, +\%\f3GL_TRIANGLE_FAN\fP, +\%\f3GL_QUADS\fP, +\%\f3GL_QUAD_STRIP\fP, and +\%\f3GL_POLYGON\fP. +.SH C SPECIFICATION +void \f3glEnd\fP( void ) +.nf +.fi + +.SH DESCRIPTION +\%\f3glBegin\fP and \%\f3glEnd\fP delimit the vertices that define a primitive or +a group of like primitives. +\%\f3glBegin\fP accepts a single argument that specifies in which of ten ways the +vertices are interpreted. +Taking $n$ as an integer count starting at one, +and $N$ as the total number of vertices specified, +the interpretations are as follows: +.TP 23 +\%\f3GL_POINTS\fP +Treats each vertex as a single point. +Vertex $n$ defines point $n$. +$N$ points are drawn. +.TP +\%\f3GL_LINES\fP +Treats each pair of vertices as an independent line segment. +Vertices $2n^-^1$ and $2n$ define line $n$. +$N/2$ lines are drawn. +.TP +\%\f3GL_LINE_STRIP\fP +Draws a connected group of line segments from the first vertex +to the last. +Vertices $n$ and $n~+~1$ define line $n$. +$N^-^1$ lines are drawn. +.TP +\%\f3GL_LINE_LOOP\fP +Draws a connected group of line segments from the first vertex +to the last, +then back to the first. +Vertices $n$ and $n~+~1$ define line $n$. +The last line, however, is defined by vertices $N$ and $1$. +$N$ lines are drawn. +.TP +\%\f3GL_TRIANGLES\fP +Treats each triplet of vertices as an independent triangle. +Vertices $3n^-^2$, $3n^-^1$, and $3n$ define triangle $n$. +$N/3$ triangles are drawn. +.BP +.TP +\%\f3GL_TRIANGLE_STRIP\fP +Draws a connected group of triangles. One triangle is defined for each +vertex presented after the first two vertices. For odd $n$, vertices +$n$, $n~+~1$, and $n~+~2$ define triangle $n$. For even $n$, vertices +$n~+~1$, $n$, and $n~+~2$ define triangle $n$. $N^-^2$ triangles are +drawn. +.TP +\%\f3GL_TRIANGLE_FAN\fP +Draws a connected group of triangles. +One triangle is defined for each vertex presented after the first two vertices. +Vertices $1$, +$n~+~1$, +and $n~+~2$ define triangle $n$. +$N^-^2$ triangles are drawn. +.TP +\%\f3GL_QUADS\fP +Treats each group of four vertices as an independent quadrilateral. +Vertices $4n^-^3$, $4n^-^2$, $4n^-^1$, and $4n$ +define quadrilateral $n$. +$N/4$ quadrilaterals are drawn. +.TP +\%\f3GL_QUAD_STRIP\fP +Draws a connected group of quadrilaterals. +One quadrilateral is defined for each pair of vertices presented +after the first pair. +Vertices $2n^-^1$, $2n$, $2n~+~2$, and $2n~+~1$ define quadrilateral $n$. +$N/2^-^1$ quadrilaterals are drawn. +Note that the order in which vertices are used to construct a quadrilateral +from strip data is different from that used with independent data. +.TP +\%\f3GL_POLYGON\fP +Draws a single, +convex polygon. +Vertices $1$ through $N$ define this polygon. +.P +Only a subset of GL commands can be used between \%\f3glBegin\fP and \%\f3glEnd\fP. +The commands are +\%\f3glVertex\fP, +\%\f3glColor\fP, +\%\f3glIndex\fP, +\%\f3glNormal\fP, +\%\f3glTexCoord\fP, +\%\f3glEvalCoord\fP, +\%\f3glEvalPoint\fP, +\%\f3glArrayElement\fP, +\%\f3glMaterial\fP, and +\%\f3glEdgeFlag\fP. +Also, +it is acceptable to use +\%\f3glCallList\fP or +\%\f3glCallLists\fP to execute +display lists that include only the preceding commands. +If any other GL command is executed between \%\f3glBegin\fP and \%\f3glEnd\fP, +the error flag is set and the command is ignored. +.P +Regardless of the value chosen for \f2mode\fP, +there is no limit to the number of vertices that can be defined +between \%\f3glBegin\fP and \%\f3glEnd\fP. +Lines, +triangles, +quadrilaterals, +and polygons that are incompletely specified are not drawn. +Incomplete specification results when either too few vertices are +provided to specify even a single primitive or when an incorrect multiple +of vertices is specified. The incomplete primitive is ignored; the rest are drawn. +.P +The minimum specification of vertices +for each primitive is as follows: +1 for a point, +2 for a line, +3 for a triangle, +4 for a quadrilateral, +and 3 for a polygon. +Modes that require a certain multiple of vertices are +\%\f3GL_LINES\fP (2), +\%\f3GL_TRIANGLES\fP (3), +\%\f3GL_QUADS\fP (4), +and \%\f3GL_QUAD_STRIP\fP (2). +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is set to an unaccepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glBegin\fP is executed between a +\%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glEnd\fP is executed without being +preceded by a \%\f3glBegin\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if a command other than +\%\f3glVertex\fP, +\%\f3glColor\fP, +\%\f3glIndex\fP, +\%\f3glNormal\fP, +\%\f3glTexCoord\fP, +\%\f3glEvalCoord\fP, +\%\f3glEvalPoint\fP, +\%\f3glArrayElement\fP, +\%\f3glMaterial\fP, +\%\f3glEdgeFlag\fP, +\%\f3glCallList\fP, or +\%\f3glCallLists\fP is executed between +the execution of \%\f3glBegin\fP and the corresponding +execution \%\f3glEnd\fP. +.P +Execution of +\%\f3glEnableClientState\fP, +\%\f3glDisableClientState\fP, +\%\f3glEdgeFlagPointer\fP, +\%\f3glTexCoordPointer\fP, +\%\f3glColorPointer\fP, +\%\f3glIndexPointer\fP, +\%\f3glNormalPointer\fP, +.br +\%\f3glVertexPointer\fP, +\%\f3glInterleavedArrays\fP, or +\%\f3glPixelStore\fP is not allowed after a call to \%\f3glBegin\fP and before +the corresponding call to \%\f3glEnd\fP, +but an error may or may not be generated. +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glCallList(3G)\fP, +\%\f3glCallLists(3G)\fP, +\%\f3glColor(3G)\fP, +\%\f3glEdgeFlag(3G)\fP, +\%\f3glEvalCoord(3G)\fP, +.br +\%\f3glEvalPoint(3G)\fP, +\%\f3glIndex(3G)\fP, +\%\f3glMaterial(3G)\fP, +\%\f3glNormal(3G)\fP, +\%\f3glTexCoord(3G)\fP, +\%\f3glVertex(3G)\fP + + Index: xc/doc/man/GL/gl/bindtexture.3gl diff -u /dev/null xc/doc/man/GL/gl/bindtexture.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/bindtexture.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,114 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 bindtextu +.ds Xs 62690 6 bindtexture.gl +.TH GLBINDTEXTURE 3G +.SH NAME +.B "glBindTexture +\- bind a named texture to a texturing target + +.SH C SPECIFICATION +void \f3glBindTexture\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglBindTexture( 'u + GLuint \fItexture\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fItexture\fP\ \ 'u +\f2target\fP +Specifies the target to which the texture is bound. +Must be either +\%\f3GL_TEXTURE_1D\fP, +\%\f3GL_TEXTURE_2D\fP, or +\%\f3GL_TEXTURE_3D\fP. +.TP +\f2texture\fP +Specifies the name of a texture. +.SH DESCRIPTION +\%\f3glBindTexture\fP lets you create or use a named texture. Calling \%\f3glBindTexture\fP with +.br +\f2target\fP set to +\%\f3GL_TEXTURE_1D\fP, \%\f3GL_TEXTURE_2D\fP, \%\f3GL_TEXTURE_3D\fP and \f2texture\fP +set to the name +of the newtexture binds the texture name to the target. +When a texture is bound to a target, the previous binding for that +target is automatically broken. +.P +Texture names are unsigned integers. The value zero is reserved to +represent the default texture for each texture target. +Texture names and the corresponding texture contents are local to +the shared display-list space (see \%\f3glXCreateContext\fP) of the current +GL rendering context; +two rendering contexts share texture names only if they +also share display lists. +.P +You may use \%\f3glGenTextures\fP to generate a set of new texture names. +.P +When a texture is first bound, it assumes the dimensionality of its +target: A texture first bound to \%\f3GL_TEXTURE_1D\fP becomes +one-dimensional, and a texture first bound to \%\f3GL_TEXTURE_2D\fP becomes +two-dimensional, and a texture first bound to \%\f3GL_TEXTURE_3D\fP becomes +a three-dimensional texture. The state of a one-dimensional texture +immediately after it is first bound is equivalent to the state of the +default \%\f3GL_TEXTURE_1D\fP at GL initialization, and similarly for +two-, and three-dimensional textures. +.P +While a texture is bound, GL operations on the target to which it is +bound affect the bound texture, and queries of the target to which it +is bound return state from the bound texture. If texture mapping of +the dimensionality of the target to which a texture is bound is +active, the bound texture is used. +In effect, the texture targets become aliases for the textures currently +bound to them, and the texture name zero refers to the default textures +that were bound to them at initialization. +.P +A texture binding created with \%\f3glBindTexture\fP remains active until a different +texture is bound to the same target, or until the bound texture is +deleted with \%\f3glDeleteTextures\fP. +.P +Once created, a named texture may be re-bound to the target of the +matching dimensionality as often as needed. +It is usually much faster to use \%\f3glBindTexture\fP to bind an existing named +texture to one of the texture targets than it is to reload the texture image +using \%\f3glTexImage1D\fP, \%\f3glTexImage2D\fP, or \%\f3glTexImage3D\fP. +For additional control over performance, use +\%\f3glPrioritizeTextures\fP. +.P +\%\f3glBindTexture\fP is included in display lists. +.SH NOTES +\%\f3glBindTexture\fP is available only if the GL version is 1.1 or greater. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2texture\fP has a dimensionality +that doesn't match that of \f2target\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glBindTexture\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_BINDING_1D\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_BINDING_2D\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_BINDING_3D\fP +.SH SEE ALSO +\%\f3glAreTexturesResident(3G)\fP, +\%\f3glDeleteTextures(3G)\fP, +\%\f3glGenTextures(3G)\fP, +\%\f3glGet(3G)\fP, +.br +\%\f3glGetTexParameter(3G)\fP, +\%\f3glIsTexture(3G)\fP, +\%\f3glPrioritizeTextures(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexParameter(3G)\fP Index: xc/doc/man/GL/gl/bitmap.3gl diff -u /dev/null xc/doc/man/GL/gl/bitmap.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/bitmap.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,132 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 bitmap.gl +.ds Xs 23189 6 bitmap.gl +.TH GLBITMAP 3G +.SH NAME +.B "glBitmap +\- draw a bitmap + +.SH C SPECIFICATION +void \f3glBitmap\fP( +GLsizei \fIwidth\fP, +.nf +.ta \w'\f3void \fPglBitmap( 'u + GLsizei \fIheight\fP, + GLfloat \fIxorig\fP, + GLfloat \fIyorig\fP, + GLfloat \fIxmove\fP, + GLfloat \fIymove\fP, + const GLubyte \fI*bitmap\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2width\fP\ \f2height\fP\ \ 'u +\f2width\fP, \f2height\fP +Specify the pixel width and height of the bitmap image. +.TP +\f2xorig\fP, \f2yorig\fP +Specify the location of the origin in the bitmap image. +The origin is measured from the lower left corner of the bitmap, +with right and up being the positive axes. +.TP +\f2xmove\fP, \f2ymove\fP +Specify the \f2x\fP and \f2y\fP offsets to be added to the current raster position +after the bitmap is drawn. +.TP +\f2bitmap\fP +Specifies the address of the bitmap image. +.SH DESCRIPTION +A bitmap is a binary image. +When drawn, +the bitmap is positioned relative to the current raster position, +and frame buffer pixels corresponding to 1's in the bitmap are +written using the current raster color or index. +Frame buffer pixels corresponding to 0's in the bitmap are not modified. +.P +\%\f3glBitmap\fP takes seven arguments. +The first pair specifies the width and height of the bitmap image. +The second pair specifies the location of the bitmap origin relative +to the lower left corner of the bitmap image. +The third pair of arguments specifies \f2x\fP and \f2y\fP offsets to be added +to the current raster position after the bitmap has been drawn. +The final argument is a pointer to the bitmap image itself. +.P +The bitmap image is interpreted like image data for the \%\f3glDrawPixels\fP +command, +with \f2width\fP and \f2height\fP corresponding to the width and height arguments +of that command, +and with \f2type\fP set to \%\f3GL_BITMAP\fP +and \f2format\fP set to \%\f3GL_COLOR_INDEX\fP. +.BP +Modes specified using \%\f3glPixelStore\fP affect the +interpretation of bitmap image data; +modes specified using \%\f3glPixelTransfer\fP do not. +.P +If the current raster position is invalid, \%\f3glBitmap\fP is ignored. +Otherwise, +the lower left corner of the bitmap image is positioned at the window coordinates +.ce +.sp +$ x sub w ~=~ \(lf ~ x sub r ~-~ x sub o ~ \(rf $ +.br +.sp +.ce +$ y sub w ~=~ \(lf ~ y sub r ~-~ y sub o ~ \(rf $ +.sp +where $ ( x sub r , y sub r ) $ is the raster position +and $ ( x sub o , y sub o ) $ is the bitmap origin. +Fragments are then generated for each pixel corresponding to a 1 (one) +in the bitmap image. +These fragments are generated using the current raster \f2z\fP coordinate, +color or color index, and current raster texture coordinates. +They are then treated just as if they had been generated +by a point, line, or polygon, +including texture mapping, +.br +fogging, +and all per-fragment operations such as alpha and depth testing. +.P +After the bitmap has been drawn, +the \f2x\fP and \f2y\fP coordinates of the current raster position are offset by +\f2xmove\fP and \f2ymove\fP. +No change is made to the \f2z\fP coordinate of the current raster position, +or to the current raster color, texture coordinates, or index. +.SH NOTES +To set a valid raster position outside the viewport, first set a valid +raster position inside the viewport, then call \%\f3glBitmap\fP with NULL +as the \f2bitmap\fP parameter and with \f2xmove\fP and \f2ymove\fP set to +the offsets of the new raster position. This technique is useful when +panning an image around the viewport. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP or \f2height\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glBitmap\fP +is executed between the execution of \%\f3glBegin\fP and the corresponding execution of +\%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_POSITION\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_COLOR\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_DISTANCE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_INDEX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_TEXTURE_COORDS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_POSITION_VALID\fP +.SH SEE ALSO +\%\f3glDrawPixels(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glRasterPos(3G)\fP + Index: xc/doc/man/GL/gl/blendcolor.3gl diff -u /dev/null xc/doc/man/GL/gl/blendcolor.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/blendcolor.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,52 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 blendcolo +.ds Xs 21257 4 blendcolor.gl +.TH GLBLENDCOLOR 3G +.SH NAME +.B "glBlendColor +\- set the blend color + +.SH C SPECIFICATION +void \f3glBlendColor\fP( +GLclampf \fIred\fP, +.nf +.ta \w'\f3void \fPglBlendColor( 'u + GLclampf \fIgreen\fP, + GLclampf \fIblue\fP, + GLclampf \fIalpha\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2red\fP\ \f2green\fP\ \f2blue\fP\ \f2alpha\fP\ \ 'u +\f2red\fP, \f2green\fP, \f2blue\fP, \f2alpha\fP +specify the components of \%\f3GL_BLEND_COLOR\fP +.SH DESCRIPTION +The \%\f3GL_BLEND_COLOR\fP may be used to calculate the source and destination +blending factors. The color components are clamped to the range [0,\ 1] +before being stored. See \%\f3glBlendFunc\fP for a complete description of the +blending operations. +Initially the \%\f3GL_BLEND_COLOR\fP is set to (0, 0, 0, 0). +.SH NOTES +\%\f3glBlendColor\fP is part of the \%\f3GL_ARB_imaging\fP subset. \%\f3glBlendColor\fP is present only +if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP is called with +\%\f3GL_EXTENSIONS\fP as its argument. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glBlendColor\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.P +.SH ASSOCIATED GETS +\%\f3glGet\fP with an argument of \%\f3GL_BLEND_COLOR\fP +.SH SEE ALSO +\%\f3glBlendEquation(3G)\fP, +\%\f3glBlendFunc(3G)\fP, +\%\f3glGetString(3G)\fP Index: xc/doc/man/GL/gl/blendequation.3gl diff -u /dev/null xc/doc/man/GL/gl/blendequation.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/blendequation.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,146 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 blendequa +.ds Xs 36751 7 blendequation.gl +.TH GLBLENDEQUATION 3G +.SH NAME +.B "glBlendEquation +\- set the blend equation + +.SH C SPECIFICATION +void \f3glBlendEquation\fP( +GLenum \fImode\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2mode\fP\ \ 'u +\f2mode\fP +specifies how source and destination colors are combined. +It must be \%\f3GL_FUNC_ADD\fP, \%\f3GL_FUNC_SUBTRACT\fP, +\%\f3GL_FUNC_REVERSE_SUBTRACT\fP, \%\f3GL_MIN\fP, \%\f3GL_MAX\fP. + +.SH DESCRIPTION +The blend equation determines how a new pixel (the ``source'' color) +is combined with a pixel already in the framebuffer (the ``destination'' +color). +.TP +\%\f3GL_MIN\fP +sets the blend equation so that each component of the result color +is the minimum of the corresponding components of the source and destination +colors. +.TP +\%\f3GL_MAX\fP +sets the blend equation so that each component of the result color +is the maximum of the corresponding components of the source and destination +colors. +.P +The remaining blend equations use the source and destination blend factors +specified by \%\f3glBlendFunc\fP. +See \%\f3glBlendFunc\fP for a description of the various blend factors. +.P +In the equations that follow, source and destination +color components are referred to as +$(R sub s, G sub s, B sub s, A sub s )$ +and +$(R sub d, G sub d, B sub d, A sub d )$, +respectively. +The result color is referred to as +$(R sub r, G sub r, B sub r, A sub r )$. +The source and destination blend factors are denoted +$(s sub R, s sub G, s sub B, s sub A )$ and +$(d sub R, d sub G, d sub B, d sub A )$, respectively. +For these equations all color components are understood to have values +in the range [0,\ 1]. +.TP +\%\f3GL_FUNC_ADD\fP +sets the blend equation so that the source and destination +data are added. +Each component of the source color is +multiplied by the corresponding source factor, then +each component of the destination color is multiplied +by the corresponding destination factor. +The result is the componentwise sum of the two products, clamped to the +range [0,\ 1]. +.P +.RS +.nf +.IP +$Rr ~=~ mark min (1, ~R sub s~s sub R ~+~ R sub d~d sub R )$ +$Gr ~=~ lineup min (1, ~G sub s~s sub G ~+~ G sub d~d sub G )$ +$Br ~=~ lineup min (1, ~B sub s~s sub B ~+~ B sub d~d sub B )$ +$Ar ~=~ lineup min (1, ~A sub s~s sub A ~+~ A sub d~d sub A )$ +.fi +.RE +.TP +\%\f3GL_FUNC_SUBTRACT\fP +Is like \%\f3GL_FUNC_ADD\fP except the product of the destination factor and +the destination color is componentwise subtracted from the product of the +source factor and the source color. +The result is clamped to the range [0,\ 1]. +.RS +.nf +.IP +$Rr ~=~ mark max (0 , ~R sub s~s sub R ~-~ R sub d~d sub R )$ +$Gr ~=~ lineup max (0 , ~G sub s~s sub G ~-~ G sub d~d sub G )$ +$Br ~=~ lineup max (0 , ~B sub s~s sub B ~-~ B sub d~d sub B )$ +$Ar ~=~ lineup max (0 , ~A sub s~s sub A ~-~ A sub d~d sub A )$ +.fi +.RE +.TP +\%\f3GL_FUNC_REVERSE_SUBTRACT\fP +Is like \%\f3GL_FUNC_ADD\fP except the product of the source factor and the +source color is componentwise subtracted from the product of the destination +factor and the destination color. +The result is clamped to the range [0,\ 1]. +.RS +.nf +.IP +$Rr ~=~ mark max (0 , ~R sub d~d sub R ~-~ R sub s~s sub R )$ +$Gr ~=~ lineup max (0 , ~G sub d~d sub G ~-~ G sub s~s sub G )$ +$Br ~=~ lineup max (0 , ~B sub d~d sub B ~-~ B sub s~s sub B )$ +$Ar ~=~ lineup max (0 , ~A sub d~d sub A ~-~ A sub s~s sub A )$ +.fi +.RE +.P +The \%\f3GL_MIN\fP and \%\f3GL_MAX\fP equations are useful for applications +that analyze +.br +image data (image thresholding against a constant color, +for example). +The \%\f3GL_FUNC_ADD\fP equation is useful +for antialiasing and transparency, among other things. +.P +Initially, the blend equation is set to \%\f3GL_FUNC_ADD\fP. +.P +.SH NOTES +\%\f3glBlendEquation\fP is part of the \%\f3GL_ARB_imaging\fP subset. \%\f3glBlendEquation\fP is present only +if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP is called with +\%\f3GL_EXTENSIONS\fP as its argument. +.P +The \%\f3GL_MIN\fP, and \%\f3GL_MAX\fP equations do not use +the source or destination factors, only the source and destination colors. +.P +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is not one of +\%\f3GL_FUNC_ADD\fP, \%\f3GL_FUNC_SUBTRACT\fP, \%\f3GL_FUNC_REVERSE_SUBTRACT\fP, +\%\f3GL_MAX\fP, or \%\f3GL_MIN\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glBlendEquation\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +.TP +\%\f3glGet\fP with an argument of \%\f3GL_BLEND_EQUATION\fP +.SH SEE ALSO +\%\f3glGetString(3G)\fP, +\%\f3glBlendColor(3G)\fP, +\%\f3glBlendFunc(3G)\fP Index: xc/doc/man/GL/gl/blendfunc.3gl diff -u /dev/null xc/doc/man/GL/gl/blendfunc.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/blendfunc.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,250 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 blendfunc +.ds Xs 18970 10 blendfunc.gl +.TH GLBLENDFUNC 3G +.SH NAME +.B "glBlendFunc +\- specify pixel arithmetic + +.SH C SPECIFICATION +void \f3glBlendFunc\fP( +GLenum \fIsfactor\fP, +.nf +.ta \w'\f3void \fPglBlendFunc( 'u + GLenum \fIdfactor\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2sfactor\fP\ \ 'u +\f2sfactor\fP +Specifies how the red, green, blue, +and alpha source blending factors are computed. +The following symbolic constants are accepted: +\%\f3GL_ZERO\fP, +\%\f3GL_ONE\fP, +\%\f3GL_DST_COLOR\fP, +\%\f3GL_ONE_MINUS_DST_COLOR\fP, +\%\f3GL_SRC_ALPHA\fP, +\%\f3GL_ONE_MINUS_SRC_ALPHA\fP, +\%\f3GL_DST_ALPHA\fP, +\%\f3GL_ONE_MINUS_DST_ALPHA\fP, and +\%\f3GL_SRC_ALPHA_SATURATE\fP. +The initial value is \%\f3GL_ONE\fP. +.TE + +Additionally, if the \%\f3GL_ARB_imaging\fP extension is supported, the +following constants are accepted: +\%\f3GL_CONSTANT_COLOR\fP, +\%\f3GL_ONE_MINUS_CONSTANT_COLOR\fP, +\%\f3GL_CONSTANT_ALPHA\fP, +\%\f3GL_ONE_MINUS_CONSTANT_ALPHA\fP. +.TP +\f2dfactor\fP +Specifies how the red, green, blue, +and alpha destination blending factors are computed. +Eight symbolic constants are accepted: +\%\f3GL_ZERO\fP, +\%\f3GL_ONE\fP, +\%\f3GL_SRC_COLOR\fP, +\%\f3GL_ONE_MINUS_SRC_COLOR\fP, +\%\f3GL_SRC_ALPHA\fP, +\%\f3GL_ONE_MINUS_SRC_ALPHA\fP, +\%\f3GL_DST_ALPHA\fP, and +\%\f3GL_ONE_MINUS_DST_ALPHA\fP. +The initial value is \%\f3GL_ZERO\fP. +.TE + +Additionally, if the \%\f3GL_ARB_imaging\fP extension is supported, the +following constants are accepted: +\%\f3GL_CONSTANT_COLOR\fP, +\%\f3GL_ONE_MINUS_CONSTANT_COLOR\fP, +\%\f3GL_CONSTANT_ALPHA\fP, +\%\f3GL_ONE_MINUS_CONSTANT_ALPHA\fP. +.SH DESCRIPTION +In RGBA mode, pixels can be drawn using a function that blends +the incoming (source) RGBA values with the RGBA values +that are already in the frame buffer (the destination values). +Blending is initially disabled. +Use \%\f3glEnable\fP and \%\f3glDisable\fP with argument \%\f3GL_BLEND\fP +to enable and disable blending. +.P +\%\f3glBlendFunc\fP defines the operation of blending when it is enabled. +\f2sfactor\fP specifies which of nine methods is used to scale the +source color components. +\f2dfactor\fP specifies which of eight methods is used to scale the +destination color components. +The eleven possible methods are described in the following table. +Each method defines four scale factors, +one each for red, green, blue, and alpha. +.P +In the table and in subsequent equations, source and destination +color components are referred to as +$(R sub s , G sub s , B sub s , A sub s )$ and +$(R sub d , G sub d , B sub d , A sub d )$. +The color specified by \%\f3glBlendColor\fP is referred to as +$(R sub c , G sub c , B sub c , A sub c )$. +They are understood to have integer values between 0 and +$(k sub R , k sub G , k sub B , k sub A )$, +where +.P +.RS +.ce +$k sub c ~=~ 2 sup m sub c - 1$ +.RE +.P +and +$(m sub R , m sub G , m sub B , m sub A )$ +is the number of red, +green, +blue, +and alpha bitplanes. +.P +Source and destination scale factors are referred to as +$(s sub R , s sub G , s sub B , s sub A )$ and +$(d sub R , d sub G , d sub B , d sub A )$. +The scale factors described in the table, +denoted $(f sub R , f sub G , f sub B , f sub A )$, +represent either source or destination factors. +All scale factors have range [0,\ 1]. +.P +.TS +center; +lb cb +l c . +_ +Parameter $(f sub R , ~~ f sub G , ~~ f sub B , ~~ f sub A )$ +_ +\%\f3GL_ZERO\fP $(0, ~0, ~0, ~0 )$ +\%\f3GL_ONE\fP $(1, ~1, ~1, ~1 )$ +\%\f3GL_SRC_COLOR\fP $(R sub s / k sub R , ~G sub s / k sub G , ~B sub s / k sub B , ~A sub s / k sub A )$ +\%\f3GL_ONE_MINUS_SRC_COLOR\fP $(1, ~1, ~1, ~1 ) ~-~ (R sub s / k sub R , ~G sub s / k sub G , ~B sub s / k sub B , ~A sub s / k sub A )$ +\%\f3GL_DST_COLOR\fP $(R sub d / k sub R , ~G sub d / k sub G , ~B sub d / k sub B , ~A sub d / k sub A )$ +\%\f3GL_ONE_MINUS_DST_COLOR\fP $(1, ~1, ~1, ~1 ) ~-~ (R sub d / k sub R , ~G sub d / k sub G , ~B sub d / k sub B , ~A sub d / k sub A )$ +\%\f3GL_SRC_ALPHA\fP $(A sub s / k sub A , ~A sub s / k sub A , ~A sub s / k sub A , ~A sub s / k sub A )$ +\%\f3GL_ONE_MINUS_SRC_ALPHA\fP $(1, ~1, ~1, ~1 ) ~-~ (A sub s / k sub A , ~A sub s / k sub A , ~A sub s / k sub A , ~A sub s / k sub A )$ +\%\f3GL_DST_ALPHA\fP $(A sub d / k sub A , ~A sub d / k sub A , ~A sub d / k sub A , ~A sub d / k sub A )$ +\%\f3GL_ONE_MINUS_DST_ALPHA\fP $(1, ~1, ~1, ~1 ) ~-~ (A sub d / k sub A , ~A sub d / k sub A , ~A sub d / k sub A , ~A sub d / k sub A )$ +\%\f3GL_SRC_ALPHA_SATURATE\fP $(i, ~i, ~i, ~1 )$ +\%\f3GL_CONSTANT_COLOR\fP $(R sub c, G sub c, B sub c, A sub c)$ +\%\f3GL_ONE_MINUS_CONSTANT_COLOR\fP $(1, ~1, ~1, ~1 ) ~-~ (R sub c, G sub c, B sub c, A sub c)$ +\%\f3GL_CONSTANT_ALPHA\fP $(A sub c, A sub c, A sub c, A sub c)$ +\%\f3GL_ONE_MINUS_CONSTANT_ALPHA\fP $(1, ~1, ~1, ~1 ) ~-~ (A sub c, A sub c, A sub c, A sub c)$ +_ +.TE +.sp +In the table, +.P +.RS +.nf +.IP +$i ~=~ min (A sub s , ~k sub A ~-~ A sub d ) ~/~ k sub A$ +.fi +.RE +.P +To determine the blended RGBA values of a pixel when drawing in RGBA mode, +the system uses the following equations: +.P +.RS +.nf +.IP +$R sub d ~=~ mark min ( k sub R, ~R sub s~s sub R~+~R sub d~d sub R )$ +$G sub d ~=~ lineup min ( k sub G, ~G sub s~s sub G~+~G sub d~d sub G )$ +$B sub d ~=~ lineup min ( k sub B, ~B sub s~s sub B~+~B sub d~d sub B )$ +$A sub d ~=~ lineup min ( k sub A, ~A sub s~s sub A~+~A sub d~d sub A )$ +.fi +.RE +.P +Despite the apparent precision of the above equations, +blending arithmetic is not exactly specified, +because blending operates with imprecise integer color values. +However, +a blend factor that should be equal to 1 +is guaranteed not to modify its multiplicand, +and a blend factor equal to 0 reduces its multiplicand to 0. +For example, +when \f2sfactor\fP is \%\f3GL_SRC_ALPHA\fP, +\f2dfactor\fP is \%\f3GL_ONE_MINUS_SRC_ALPHA\fP, +and $A sub s$ is equal to $k sub A$, +the equations reduce to simple replacement: +.P +.RS +.nf +.IP +$R sub d ~=~ mark R sub s$ +$G sub d ~=~ lineup G sub s$ +$B sub d ~=~ lineup B sub s$ +$A sub d ~=~ lineup A sub s$ +.fi +.RE +.P +.SH EXAMPLES +.P +Transparency is best implemented using blend function +(\%\f3GL_SRC_ALPHA\fP, \%\f3GL_ONE_MINUS_SRC_ALPHA\fP) +with primitives sorted from farthest to nearest. +Note that this transparency calculation does not require +the presence of alpha bitplanes in the frame buffer. +.P +Blend function +(\%\f3GL_SRC_ALPHA\fP, \%\f3GL_ONE_MINUS_SRC_ALPHA\fP) +is also useful for rendering antialiased points and lines +in arbitrary order. +.P +Polygon antialiasing is optimized using blend function +.br +(\%\f3GL_SRC_ALPHA_SATURATE\fP, \%\f3GL_ONE\fP) +with polygons sorted from nearest to farthest. +(See the \%\f3glEnable\fP, \%\f3glDisable\fP reference page and the +\%\f3GL_POLYGON_SMOOTH\fP argument for information on polygon antialiasing.) +Destination alpha bitplanes, +which must be present for this blend function to operate correctly, +store the accumulated coverage. +.SH NOTES +Incoming (source) alpha is correctly thought of as a material opacity, +ranging from 1.0 ($K sub A$), representing complete opacity, +to 0.0 (0), representing complete +transparency. +.P +When more than one color buffer is enabled for drawing, +the GL performs blending separately for each enabled buffer, +using the contents of that buffer for destination color. +(See \%\f3glDrawBuffer\fP.) +.P +Blending affects only RGBA rendering. +It is ignored by color index renderers. +.P +\%\f3GL_CONSTANT_COLOR\fP, \%\f3GL_ONE_MINUS_CONSTANT_COLOR\fP, +\%\f3GL_CONSTANT_ALPHA\fP, \%\f3GL_ONE_MINUS_CONSTANT_ALPHA\fP are only +available if the \%\f3GL_ARB_imaging\fP is supported by your implementation. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if either \f2sfactor\fP or \f2dfactor\fP is not an +accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glBlendFunc\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_BLEND_SRC\fP +.br +\%\f3glGet\fP with argument \%\f3GL_BLEND_DST\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_BLEND\fP +.br +.SH SEE ALSO +\%\f3glAlphaFunc(3G)\fP, +\%\f3glBlendColor(3G)\fP, +\%\f3glBlendEquation(3G)\fP, +\%\f3glClear(3G)\fP, +\%\f3glDrawBuffer(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glLogicOp(3G)\fP, +\%\f3glStencilFunc(3G)\fP Index: xc/doc/man/GL/gl/calllist.3gl diff -u /dev/null xc/doc/man/GL/gl/calllist.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/calllist.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,60 @@ +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 calllist. +.ds Xs 42225 4 calllist.gl +.TH GLCALLLIST 3G +.SH NAME +.B "glCallList +\- execute a display list + +.SH C SPECIFICATION +void \f3glCallList\fP( +GLuint \fIlist\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2list\fP\ \ 'u +\f2list\fP +Specifies the integer name of the display list to be executed. +.SH DESCRIPTION +\%\f3glCallList\fP causes the named display list to be executed. +The commands saved in the display list are executed in order, +just as if they were called without using a display list. +If \f2list\fP has not been defined as a display list, +\%\f3glCallList\fP is ignored. +.P +\%\f3glCallList\fP can appear inside a display list. +To avoid the possibility of infinite recursion resulting from display lists +calling one another, +a limit is placed on the nesting level of display +lists during display-list execution. +This limit is at least 64, and it depends on the implementation. +.P +GL state is not saved and restored across a call to \%\f3glCallList\fP. +Thus, +changes made to GL state during the execution of a display list +remain after execution of the display list is completed. +Use \%\f3glPushAttrib\fP, +\%\f3glPopAttrib\fP, +\%\f3glPushMatrix\fP, +and \%\f3glPopMatrix\fP to preserve GL state across \%\f3glCallList\fP calls. +.SH NOTES +Display lists can be executed between a call to \%\f3glBegin\fP +and the corresponding call to \%\f3glEnd\fP, +as long as the display list includes only commands that are allowed +in this interval. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MAX_LIST_NESTING\fP +.br +\%\f3glIsList\fP +.SH SEE ALSO +\%\f3glCallLists(3G)\fP, +\%\f3glDeleteLists(3G)\fP, +\%\f3glGenLists(3G)\fP, +\%\f3glNewList(3G)\fP, +\%\f3glPushAttrib(3G)\fP, +\%\f3glPushMatrix(3G)\fP Index: xc/doc/man/GL/gl/calllists.3gl diff -u /dev/null xc/doc/man/GL/gl/calllists.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/calllists.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,165 @@ +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 calllists +.ds Xs 46352 7 calllists.gl +.TH GLCALLLISTS 3G +.SH NAME +.B "glCallLists +\- execute a list of display lists + +.SH C SPECIFICATION +void \f3glCallLists\fP( +GLsizei \fIn\fP, +.nf +.ta \w'\f3void \fPglCallLists( 'u + GLenum \fItype\fP, + const GLvoid \fI*lists\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIlists\fP\ \ 'u +\f2n\fP +Specifies the number of display lists to be executed. +.TP +\f2type\fP +Specifies the type of values in \f2lists\fP. +Symbolic constants +\%\f3GL_BYTE\fP, +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_INT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_2_BYTES\fP, +\%\f3GL_3_BYTES\fP, and +\%\f3GL_4_BYTES\fP are accepted. +.TP +\f2lists\fP +Specifies the address of an array of name offsets in the display list. +The pointer type is void because the offsets can be bytes, +shorts, +ints, +or floats, +depending on the value of \f2type\fP. +.SH DESCRIPTION +\%\f3glCallLists\fP causes each display list in the list of names passed as \f2lists\fP +to be executed. +As a result, +the commands saved in each display list are executed in order, +just as if they were called without using a display list. +Names of display lists that have not been defined are ignored. +.P +\%\f3glCallLists\fP provides an efficient means for executing more than one display list. +\f2type\fP allows lists with various name formats to be accepted. +The formats are as follows: +.TP 25 +\%\f3GL_BYTE\fP +\f2lists\fP is treated as an array of signed bytes, +each in the range \-128 through 127. +.TP +\%\f3GL_UNSIGNED_BYTE\fP +\f2lists\fP is treated as an array of unsigned bytes, +each in the range 0 through 255. +.TP +\%\f3GL_SHORT\fP +\f2lists\fP is treated as an array of signed two-byte integers, +each in the range \-32768 through 32767. +.TP +\%\f3GL_UNSIGNED_SHORT\fP +\f2lists\fP is treated as an array of unsigned two-byte integers, +each in the range 0 through 65535. +.TP +\%\f3GL_INT\fP +\f2lists\fP is treated as an array of signed four-byte integers. +.TP +\%\f3GL_UNSIGNED_INT\fP +\f2lists\fP is treated as an array of unsigned four-byte integers. +.TP +\%\f3GL_FLOAT\fP +\f2lists\fP is treated as an array of four-byte floating-point values. +.TP +\%\f3GL_2_BYTES\fP +\f2lists\fP is treated as an array of unsigned bytes. +Each pair of bytes specifies a single display-list name. +The value of the pair is computed as 256 times the unsigned value +of the first byte plus the unsigned value of the second byte. +.TP +\%\f3GL_3_BYTES\fP +\f2lists\fP is treated as an array of unsigned bytes. +Each triplet of bytes specifies a single display-list name. +The value of the triplet is computed as 65536 times the unsigned value +of the first byte, +plus 256 times the unsigned value of the second byte, +plus the unsigned value of the third byte. +.TP +\%\f3GL_4_BYTES\fP +\f2lists\fP is treated as an array of unsigned bytes. +Each quadruplet of bytes specifies a single display-list name. +The value of the quadruplet is computed as 16777216 times the unsigned value +of the first byte, +plus 65536 times the unsigned value of the second byte, +plus 256 times the unsigned value of the third byte, +plus the unsigned value of the fourth byte. +.P +The list of display-list names is not null-terminated. +Rather, +\f2n\fP specifies how many names are to be taken from \f2lists\fP. +.P +An additional level of indirection is made available with the +\%\f3glListBase\fP command, +which specifies an unsigned offset that is added to each display-list +name specified in \f2lists\fP before that display list is executed. +.P +\%\f3glCallLists\fP can appear inside a display list. +To avoid the possibility of infinite recursion resulting from display lists +calling one another, +a limit is placed on the nesting level of display +lists during display-list execution. +This limit must be at least 64, and it depends on the implementation. +.P +GL state is not saved and restored across a call to \%\f3glCallLists\fP. +Thus, +changes made to GL state during the execution of the display lists +remain after execution is completed. +Use \%\f3glPushAttrib\fP, +\%\f3glPopAttrib\fP, +\%\f3glPushMatrix\fP, +and \%\f3glPopMatrix\fP to preserve GL state across \%\f3glCallLists\fP calls. +.SH NOTES +Display lists can be executed between a call to \%\f3glBegin\fP +and the corresponding call to \%\f3glEnd\fP, +as long as the display list includes only commands that are allowed +in this interval. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2n\fP is negative. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not one of +\%\f3GL_BYTE\fP, +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_INT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_2_BYTES\fP, +\%\f3GL_3_BYTES\fP, +\%\f3GL_4_BYTES\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_LIST_BASE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_LIST_NESTING\fP +.br +\%\f3glIsList\fP +.SH SEE ALSO +\%\f3glCallList(3G)\fP, +\%\f3glDeleteLists(3G)\fP, +\%\f3glGenLists(3G)\fP, +\%\f3glListBase(3G)\fP, +\%\f3glNewList(3G)\fP, +\%\f3glPushAttrib(3G)\fP, +.br +\%\f3glPushMatrix(3G)\fP Index: xc/doc/man/GL/gl/clear.3gl diff -u /dev/null xc/doc/man/GL/gl/clear.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/clear.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,98 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 clear.gl +.ds Xs 16977 5 clear.gl +.TH GLCLEAR 3G +.SH NAME +.B "glClear +\- clear buffers to preset values + +.SH C SPECIFICATION +void \f3glClear\fP( +GLbitfield \fImask\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2mask\fP\ \ 'u +\f2mask\fP +Bitwise OR of masks that indicate the buffers to be cleared. +The four masks are +\%\f3GL_COLOR_BUFFER_BIT\fP, +\%\f3GL_DEPTH_BUFFER_BIT\fP, +\%\f3GL_ACCUM_BUFFER_BIT\fP, and +\%\f3GL_STENCIL_BUFFER_BIT\fP. +.SH DESCRIPTION +\%\f3glClear\fP sets the bitplane area of the window to values previously selected +by \%\f3glClearColor\fP, \%\f3glClearIndex\fP, \%\f3glClearDepth\fP, +\%\f3glClearStencil\fP, and \%\f3glClearAccum\fP. +Multiple color buffers can be cleared simultaneously by selecting +more than one buffer at a time using \%\f3glDrawBuffer\fP. +.P +The pixel ownership test, +the scissor test, +dithering, and the buffer writemasks affect the operation of \%\f3glClear\fP. +The scissor box bounds the cleared region. +Alpha function, +blend function, +logical operation, +stenciling, +texture mapping, +and depth-buffering are ignored by \%\f3glClear\fP. +.P +\%\f3glClear\fP takes a single argument that is the bitwise OR of several +values indicating which buffer is to be cleared. +.P +The values are as follows: +.TP 28 +\%\f3GL_COLOR_BUFFER_BIT\fP +Indicates the buffers currently enabled for color +writing. +.TP +\%\f3GL_DEPTH_BUFFER_BIT\fP +Indicates the depth buffer. +.TP +\%\f3GL_ACCUM_BUFFER_BIT\fP +Indicates the accumulation buffer. +.TP +\%\f3GL_STENCIL_BUFFER_BIT\fP +Indicates the stencil buffer. +.P +The value to which each buffer is cleared depends on the setting of the +clear value for that buffer. +.SH NOTES +If a buffer is not present, +then a \%\f3glClear\fP directed at that buffer has no effect. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if any bit other than the four defined +bits is set in \f2mask\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glClear\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_ACCUM_CLEAR_VALUE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_DEPTH_CLEAR_VALUE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_INDEX_CLEAR_VALUE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_CLEAR_VALUE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_STENCIL_CLEAR_VALUE\fP +.SH SEE ALSO +\%\f3glClearAccum(3G)\fP, +\%\f3glClearColor(3G)\fP, +\%\f3glClearDepth(3G)\fP, +\%\f3glClearIndex(3G)\fP, +\%\f3glClearStencil(3G)\fP, +\%\f3glColorMask(3G)\fP, +\%\f3glDepthMask(3G)\fP, +\%\f3glDrawBuffer(3G)\fP, +\%\f3glScissor(3G)\fP, +\%\f3glStencilMask(3G)\fP Index: xc/doc/man/GL/gl/clearaccum.3gl diff -u /dev/null xc/doc/man/GL/gl/clearaccum.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/clearaccum.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,45 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 clearaccu +.ds Xs 2071 3 clearaccum.gl +.TH GLCLEARACCUM 3G +.SH NAME +.B "glClearAccum +\- specify clear values for the accumulation buffer + +.SH C SPECIFICATION +void \f3glClearAccum\fP( +GLfloat \fIred\fP, +.nf +.ta \w'\f3void \fPglClearAccum( 'u + GLfloat \fIgreen\fP, + GLfloat \fIblue\fP, + GLfloat \fIalpha\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2red\fP\ \f2green\fP\ \f2blue\fP\ \f2alpha\fP\ \ 'u +\f2red\fP, \f2green\fP, \f2blue\fP, \f2alpha\fP +Specify the red, green, blue, and alpha values used when the +accumulation buffer is cleared. +The initial values are all 0. +.SH DESCRIPTION +\%\f3glClearAccum\fP specifies the red, green, blue, and alpha values used by \%\f3glClear\fP +to clear the accumulation buffer. +.P +Values specified by \%\f3glClearAccum\fP are clamped to the +range [-1,\ 1]. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glClearAccum\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_ACCUM_CLEAR_VALUE\fP +.SH SEE ALSO +\%\f3glAccum(3G)\fP, +\%\f3glClear(3G)\fP Index: xc/doc/man/GL/gl/clearcolor.3gl diff -u /dev/null xc/doc/man/GL/gl/clearcolor.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/clearcolor.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,44 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 clearcolo +.ds Xs 36439 3 clearcolor.gl +.TH GLCLEARCOLOR 3G +.SH NAME +.B "glClearColor +\- specify clear values for the color buffers + +.SH C SPECIFICATION +void \f3glClearColor\fP( +GLclampf \fIred\fP, +.nf +.ta \w'\f3void \fPglClearColor( 'u + GLclampf \fIgreen\fP, + GLclampf \fIblue\fP, + GLclampf \fIalpha\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2red\fP\ \f2green\fP\ \f2blue\fP\ \f2alpha\fP\ \ 'u +\f2red\fP, \f2green\fP, \f2blue\fP, \f2alpha\fP +Specify the red, green, blue, and alpha values used when the +color buffers are cleared. +The initial values are all 0. +.SH DESCRIPTION +\%\f3glClearColor\fP specifies the red, +green, +blue, +and alpha values used by \%\f3glClear\fP to clear the color buffers. +Values specified by \%\f3glClearColor\fP are clamped to the range [0,\ 1]. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glClearColor\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_COLOR_CLEAR_VALUE\fP +.SH SEE ALSO +\%\f3glClear(3G)\fP Index: xc/doc/man/GL/gl/cleardepth.3gl diff -u /dev/null xc/doc/man/GL/gl/cleardepth.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/cleardepth.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,36 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 cleardept +.ds Xs 62352 3 cleardepth.gl +.TH GLCLEARDEPTH 3G +.SH NAME +.B "glClearDepth +\- specify the clear value for the depth buffer + +.SH C SPECIFICATION +void \f3glClearDepth\fP( +GLclampd \fIdepth\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2depth\fP\ \ 'u +\f2depth\fP +Specifies the depth value used when the depth buffer is cleared. The +initial value is 1. +.SH DESCRIPTION +\%\f3glClearDepth\fP specifies the depth value used by \%\f3glClear\fP to clear the depth buffer. +Values specified by \%\f3glClearDepth\fP are clamped to the range [0,\ 1]. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glClearDepth\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_DEPTH_CLEAR_VALUE\fP +.SH SEE ALSO +\%\f3glClear(3G)\fP Index: xc/doc/man/GL/gl/clearindex.3gl diff -u /dev/null xc/doc/man/GL/gl/clearindex.3gl:1.2 --- /dev/null Fri Jan 18 15:20:28 2002 +++ xc/doc/man/GL/gl/clearindex.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,47 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 clearinde +.ds Xs 34830 3 clearindex.gl +.TH GLCLEARINDEX 3G +.SH NAME +.B "glClearIndex +\- specify the clear value for the color index buffers + +.SH C SPECIFICATION +void \f3glClearIndex\fP( +GLfloat \fIc\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2c\fP\ \ 'u +\f2c\fP +Specifies the index used when the color index buffers are cleared. +The initial value is 0. +.SH DESCRIPTION +\%\f3glClearIndex\fP specifies the index used by \%\f3glClear\fP +to clear the color index buffers. +\f2c\fP is not clamped. +Rather, +\f2c\fP is converted to a fixed-point value with unspecified precision +to the right of the binary point. +The integer part of this value is then masked with $2 sup m^-^1$, +where $m$ is the number of bits in a color index stored in the frame buffer. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glClearIndex\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_INDEX_CLEAR_VALUE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_INDEX_BITS\fP +.SH SEE ALSO +\%\f3glClear(3G)\fP Index: xc/doc/man/GL/gl/clearstencil.3gl diff -u /dev/null xc/doc/man/GL/gl/clearstencil.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/clearstencil.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,45 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 clearsten +.ds Xs 64794 3 clearstencil.gl +.TH GLCLEARSTENCIL 3G +.SH NAME +.B "glClearStencil +\- specify the clear value for the stencil buffer + +.SH C SPECIFICATION +void \f3glClearStencil\fP( +GLint \fIs\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2s\fP\ \ 'u +\f2s\fP +Specifies the index used when the stencil buffer is cleared. +The initial value is 0. +.SH DESCRIPTION +\%\f3glClearStencil\fP specifies the index used by \%\f3glClear\fP to clear the stencil buffer. +\f2s\fP is masked with $2 sup m^-^1$, +where $m$ is the number of bits in the stencil buffer. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glClearStencil\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_STENCIL_CLEAR_VALUE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_STENCIL_BITS\fP +.SH SEE ALSO +\%\f3glClear(3G)\fP, +\%\f3glStencilFunc(3G)\fP, +\%\f3glStencilOp(3G)\fP, +\%\f3glStencilMask(3G)\fP Index: xc/doc/man/GL/gl/clientactivetextureARB.3gl diff -u /dev/null xc/doc/man/GL/gl/clientactivetextureARB.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/clientactivetextureARB.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,54 @@ +'\" et +'\"! eqn|tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 19:46 +.ds Dm 001 clientac +.ds Xs 18566 4 clientactivetextureARB.gl +.TH GLCLIENTACTIVETEXTUREARB 3G +.SH NAME +.B "glClientActiveTextureARB +\- select active texture unit + +.SH C SPECIFICATION +void \f3glClientActiveTextureARB\fP( +GLenum \fItexture\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2texture\fP\ \ 'u +\f2texture\fP +Specifies which texture unit to make active. The number +of texture units is implementation dependent, but must be at least +two. \f2texture\fP must be one of \%\f3GL_TEXTURE\fP$i$\f3_ARB\fP +where 0 \(<= $ i $ < \%\f3GL_MAX_TEXTURE_UNITS_ARB\fP, which is an +implementation-dependent value. The initial value is +\%\f3GL_TEXTURE0_ARB\fP. +.SH DESCRIPTION +\%\f3glClientActiveTextureARB\fP selects the vertex array client state parameters to be modified by +\%\f3glTexCoordPointer\fP, and enabled or disabled with +\%\f3glEnableClientState\fP or \%\f3glDisableClientState\fP, respectively, +when called with a parameter of \%\f3GL_TEXTURE_COORD_ARRAY\fP. +.SH NOTES +\%\f3glClientActiveTextureARB\fP is supported only if \%\f3GL_ARB_multitexture\fP is included in the +string returned by \%\f3glGetString\fP when called with the argument +\%\f3GL_EXTENSIONS\fP. +.P +\%\f3glClientActiveTextureARB\fP sets \%\f3GL_CLIENT_ACTIVE_TEXTURE_ARB\fP to the active texture unit. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2texture\fP is not one of +\%\f3GL_TEXTURE\fP$i$\f3_ARB\fP, where +0 \(<= $ i $ < \%\f3GL_MAX_TEXTURE_UNITS_ARB\fP. +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glDisableClientState(3G)\fP, +\%\f3glEnableClientState(3G)\fP, +\%\f3glMultiTexCoordARB(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP + Index: xc/doc/man/GL/gl/clipplane.3gl diff -u /dev/null xc/doc/man/GL/gl/clipplane.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/clipplane.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,81 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 clipplane +.ds Xs 34226 5 clipplane.gl +.TH GLCLIPPLANE 3G +.SH NAME +.B "glClipPlane +\- specify a plane against which all geometry is clipped + +.SH C SPECIFICATION +void \f3glClipPlane\fP( +GLenum \fIplane\fP, +.nf +.ta \w'\f3void \fPglClipPlane( 'u + const GLdouble \fI*equation\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIequation\fP\ \ 'u +\f2plane\fP +Specifies which clipping plane is being positioned. +Symbolic names of the form \%\f3GL_CLIP_PLANE\fP\f2i\fP, +where \f2i\fP is an integer between 0 and \%\f3GL_MAX_CLIP_PLANES\fP$^-^1$, +are accepted. +.TP +\f2equation\fP +Specifies the address of an array of four double-precision floating-point values. +These values are interpreted as a plane equation. +.SH DESCRIPTION +Geometry is always clipped against the boundaries of a six-plane frustum +in \f2x\fP, \f2y\fP, and \f2z\fP. +\%\f3glClipPlane\fP allows the specification of additional planes, +not necessarily perpendicular to the \f2x\fP, \f2y\fP, or \f2z\fP axis, +against which all geometry is clipped. +To determine the maximum number of additional clipping planes, call +\%\f3glGetIntegerv\fP with argument \%\f3GL_MAX_CLIP_PLANES\fP. All +implementations support at least six such clipping planes. +Because the resulting clipping region is the intersection +of the defined half-spaces, +it is always convex. +.P +\%\f3glClipPlane\fP specifies a half-space using a four-component plane equation. +When \%\f3glClipPlane\fP is called, +\f2equation\fP is transformed by the inverse of the modelview matrix +and stored in the resulting eye coordinates. +Subsequent changes to the modelview matrix have no effect on the +stored plane-equation components. +If the dot product of the eye coordinates of a vertex with the +stored plane equation components is positive or zero, +the vertex is \f2in\f1 with respect to that clipping plane. +Otherwise, it is \f2out\fP. +.P +To enable and disable clipping planes, call +\%\f3glEnable\fP and \%\f3glDisable\fP with the argument +\%\f3GL_CLIP_PLANE\fP\f2i\fP, +where \f2i\fP is the plane number. +.P +All clipping planes are initially defined as (0, 0, 0, 0) in eye coordinates +and are disabled. +.SH NOTES +It is always the case that \%\f3GL_CLIP_PLANE\fP$i$ = \%\f3GL_CLIP_PLANE0\fP$~+~i$. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2plane\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glClipPlane\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetClipPlane\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_CLIP_PLANE\fP\f2i\fP +.SH SEE ALSO +\%\f3glEnable(3G)\fP Index: xc/doc/man/GL/gl/color.3gl diff -u /dev/null xc/doc/man/GL/gl/color.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/color.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,269 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 color.gl +.ds Xs 48493 5 color.gl +.TH GLCOLOR 3G +.SH NAME +.B "glColor3b, glColor3d, glColor3f, glColor3i, glColor3s, glColor3ub, glColor3ui, glColor3us, glColor4b, glColor4d, glColor4f, glColor4i, glColor4s, glColor4ub, glColor4ui, glColor4us, glColor3bv, glColor3dv, glColor3fv, glColor3iv, glColor3sv, glColor3ubv, glColor3uiv, glColor3usv, glColor4bv, glColor4dv, glColor4fv, glColor4iv, glColor4sv, glColor4ubv, glColor4uiv, glColor4usv +\- set the current color + +.SH C SPECIFICATION +void \f3glColor3b\fP( +GLbyte \fIred\fP, +.nf +.ta \w'\f3void \fPglColor3b( 'u + GLbyte \fIgreen\fP, + GLbyte \fIblue\fP ) +.fi +void \f3glColor3d\fP( +GLdouble \fIred\fP, +.nf +.ta \w'\f3void \fPglColor3d( 'u + GLdouble \fIgreen\fP, + GLdouble \fIblue\fP ) +.fi +void \f3glColor3f\fP( +GLfloat \fIred\fP, +.nf +.ta \w'\f3void \fPglColor3f( 'u + GLfloat \fIgreen\fP, + GLfloat \fIblue\fP ) +.fi +void \f3glColor3i\fP( +GLint \fIred\fP, +.nf +.ta \w'\f3void \fPglColor3i( 'u + GLint \fIgreen\fP, + GLint \fIblue\fP ) +.fi +void \f3glColor3s\fP( +GLshort \fIred\fP, +.nf +.ta \w'\f3void \fPglColor3s( 'u + GLshort \fIgreen\fP, + GLshort \fIblue\fP ) +.fi +void \f3glColor3ub\fP( +GLubyte \fIred\fP, +.nf +.ta \w'\f3void \fPglColor3ub( 'u + GLubyte \fIgreen\fP, + GLubyte \fIblue\fP ) +.fi +void \f3glColor3ui\fP( +GLuint \fIred\fP, +.nf +.ta \w'\f3void \fPglColor3ui( 'u + GLuint \fIgreen\fP, + GLuint \fIblue\fP ) +.fi +void \f3glColor3us\fP( +GLushort \fIred\fP, +.nf +.ta \w'\f3void \fPglColor3us( 'u + GLushort \fIgreen\fP, + GLushort \fIblue\fP ) +.fi +void \f3glColor4b\fP( +GLbyte \fIred\fP, +.nf +.ta \w'\f3void \fPglColor4b( 'u + GLbyte \fIgreen\fP, + GLbyte \fIblue\fP, + GLbyte \fIalpha\fP ) +.fi +void \f3glColor4d\fP( +GLdouble \fIred\fP, +.nf +.ta \w'\f3void \fPglColor4d( 'u + GLdouble \fIgreen\fP, + GLdouble \fIblue\fP, + GLdouble \fIalpha\fP ) +.fi +void \f3glColor4f\fP( +GLfloat \fIred\fP, +.nf +.ta \w'\f3void \fPglColor4f( 'u + GLfloat \fIgreen\fP, + GLfloat \fIblue\fP, + GLfloat \fIalpha\fP ) +.fi +void \f3glColor4i\fP( +GLint \fIred\fP, +.nf +.ta \w'\f3void \fPglColor4i( 'u + GLint \fIgreen\fP, + GLint \fIblue\fP, + GLint \fIalpha\fP ) +.fi +void \f3glColor4s\fP( +GLshort \fIred\fP, +.nf +.ta \w'\f3void \fPglColor4s( 'u + GLshort \fIgreen\fP, + GLshort \fIblue\fP, + GLshort \fIalpha\fP ) +.fi +void \f3glColor4ub\fP( +GLubyte \fIred\fP, +.nf +.ta \w'\f3void \fPglColor4ub( 'u + GLubyte \fIgreen\fP, + GLubyte \fIblue\fP, + GLubyte \fIalpha\fP ) +.fi +void \f3glColor4ui\fP( +GLuint \fIred\fP, +.nf +.ta \w'\f3void \fPglColor4ui( 'u + GLuint \fIgreen\fP, + GLuint \fIblue\fP, + GLuint \fIalpha\fP ) +.fi +void \f3glColor4us\fP( +GLushort \fIred\fP, +.nf +.ta \w'\f3void \fPglColor4us( 'u + GLushort \fIgreen\fP, + GLushort \fIblue\fP, + GLushort \fIalpha\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2red\fP\ \f2green\fP\ \f2blue\fP\ \ 'u +\f2red\fP, \f2green\fP, \f2blue\fP +Specify new red, green, and blue values for the current color. +.TP +\f2alpha\fP +Specifies a new alpha value for the current color. +Included only in the four-argument \%\f3glColor4\fP commands. +.SH C SPECIFICATION +void \f3glColor3bv\fP( +const GLbyte \fI*v\fP ) +.nf +.fi +void \f3glColor3dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glColor3fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glColor3iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glColor3sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi +void \f3glColor3ubv\fP( +const GLubyte \fI*v\fP ) +.nf +.fi +void \f3glColor3uiv\fP( +const GLuint \fI*v\fP ) +.nf +.fi +void \f3glColor3usv\fP( +const GLushort \fI*v\fP ) +.nf +.fi +void \f3glColor4bv\fP( +const GLbyte \fI*v\fP ) +.nf +.fi +void \f3glColor4dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glColor4fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glColor4iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glColor4sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi +void \f3glColor4ubv\fP( +const GLubyte \fI*v\fP ) +.nf +.fi +void \f3glColor4uiv\fP( +const GLuint \fI*v\fP ) +.nf +.fi +void \f3glColor4usv\fP( +const GLushort \fI*v\fP ) +.nf +.fi + +.SH PARAMETERS +.TP +\f2v\fP +Specifies a pointer to an array that contains red, green, blue, +and (sometimes) alpha values. +.SH DESCRIPTION +The GL stores both a current single-valued color index +and a current four-valued RGBA color. +\%\f3glColor\fP sets a new four-valued RGBA color. +\%\f3glColor\fP has two major variants: +\%\f3glColor3\fP and \%\f3glColor4\fP. +\%\f3glColor3\fP variants specify new red, +green, +and blue values explicitly +and set the current alpha value to 1.0 (full intensity) implicitly. +\%\f3glColor4\fP variants specify all four color components explicitly. +.P +\%\f3glColor3b\fP, \%\f3glColor4b\fP, +\%\f3glColor3s\fP, \%\f3glColor4s\fP, \%\f3glColor3i\fP, and \%\f3glColor4i\fP take +three or four signed byte, short, or long integers as arguments. +When \f3v\fP is appended to the name, +the color commands can take a pointer to an array of such values. +.P +Current color values are stored in floating-point , +with unspecified mantissa and exponent sizes. +Unsigned integer color components, +when specified, +are linearly mapped to floating-point values such that the largest +representable value maps to 1.0 (full intensity), +and 0 maps to 0.0 (zero intensity). +Signed integer color components, +when specified, +are linearly mapped to floating-point values such that the most positive +representable value maps to 1.0, +and the most negative representable value maps to \-1.0. (Note that +this mapping does not convert 0 precisely to 0.0.) +Floating-point values are mapped directly. +.P +Neither floating-point nor signed integer values are clamped +to the range [0,1] before the current color is updated. +However, +color components are clamped to this range before they are interpolated +or written into a color buffer. +.SH NOTES +The initial value for the current color is (1, 1, 1, 1). +.P +The current color can be updated at any time. +In particular, +\%\f3glColor\fP can be called between a call to \%\f3glBegin\fP and the corresponding +call to \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_CURRENT_COLOR\fP +.br +\%\f3glGet\fP with argument \%\f3GL_RGBA_MODE\fP +.SH SEE ALSO +\%\f3glIndex(3G)\fP Index: xc/doc/man/GL/gl/colormask.3gl diff -u /dev/null xc/doc/man/GL/gl/colormask.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/colormask.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,58 @@ +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 colormask +.ds Xs 41408 4 colormask.gl +.TH GLCOLORMASK 3G +.SH NAME +.B "glColorMask +\- enable and disable writing of frame buffer color components + +.SH C SPECIFICATION +void \f3glColorMask\fP( +GLboolean \fIred\fP, +.nf +.ta \w'\f3void \fPglColorMask( 'u + GLboolean \fIgreen\fP, + GLboolean \fIblue\fP, + GLboolean \fIalpha\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2red\fP\ \f2green\fP\ \f2blue\fP\ \f2alpha\fP\ \ 'u +\f2red\fP, \f2green\fP, \f2blue\fP, \f2alpha\fP +Specify whether red, green, blue, and alpha can or cannot be written +into the frame buffer. +The initial values are all \%\f3GL_TRUE\fP, +indicating that the color components can be written. +.SH DESCRIPTION +\%\f3glColorMask\fP specifies whether the individual color components in the frame buffer +can or cannot be written. +If \f2red\fP is \%\f3GL_FALSE\fP, +for example, +no change is made to the red component of any pixel in any of the +color buffers, +regardless of the drawing operation attempted. +.P +Changes to individual bits of components cannot be controlled. +Rather, +changes are either enabled or disabled for entire color components. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glColorMask\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_COLOR_WRITEMASK\fP +.br +\%\f3glGet\fP with argument \%\f3GL_RGBA_MODE\fP +.SH SEE ALSO +\%\f3glClear(3G)\fP, +\%\f3glColor(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDepthMask(3G)\fP, +\%\f3glIndex(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glIndexMask(3G)\fP, +\%\f3glStencilMask(3G)\fP Index: xc/doc/man/GL/gl/colormaterial.3gl diff -u /dev/null xc/doc/man/GL/gl/colormaterial.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/colormaterial.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,94 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 colormate +.ds Xs 35305 5 colormaterial.gl +.TH GLCOLORMATERIAL 3G +.SH NAME +.B "glColorMaterial +\- cause a material color to track the current color + +.SH C SPECIFICATION +void \f3glColorMaterial\fP( +GLenum \fIface\fP, +.nf +.ta \w'\f3void \fPglColorMaterial( 'u + GLenum \fImode\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2face\fP\ \ 'u +\f2face\fP +Specifies whether front, +back, +or both front and back material parameters should track the current color. +Accepted values are +\%\f3GL_FRONT\fP, +\%\f3GL_BACK\fP, +and \%\f3GL_FRONT_AND_BACK\fP. +The initial value is \%\f3GL_FRONT_AND_BACK\fP. +.TP +\f2mode\fP +Specifies which of several material parameters track the current color. +Accepted values are +\%\f3GL_EMISSION\fP, +\%\f3GL_AMBIENT\fP, +\%\f3GL_DIFFUSE\fP, +\%\f3GL_SPECULAR\fP, +and \%\f3GL_AMBIENT_AND_DIFFUSE\fP. +The initial value is \%\f3GL_AMBIENT_AND_DIFFUSE\fP. +.SH DESCRIPTION +\%\f3glColorMaterial\fP specifies which material parameters track the current color. +When \%\f3GL_COLOR_MATERIAL\fP is enabled, +the material parameter or parameters specified by \f2mode\fP, +of the material or materials specified by \f2face\fP, +track the current color at all times. +.P +To enable and disable \%\f3GL_COLOR_MATERIAL\fP, call +\%\f3glEnable\fP and \%\f3glDisable\fP with argument \%\f3GL_COLOR_MATERIAL\fP. +\%\f3GL_COLOR_MATERIAL\fP is initially disabled. +.SH NOTES +\%\f3glColorMaterial\fP makes it possible to change a subset of material parameters for each +vertex using only the \%\f3glColor\fP command, +without calling \%\f3glMaterial\fP. +If only such a subset of parameters is to be specified for each +vertex, calling \%\f3glColorMaterial\fP is preferable to calling \%\f3glMaterial\fP. +.P +Call \%\f3glColorMaterial\fP before enabling \%\f3GL_COLOR_MATERIAL\fP. +.P +Calling \%\f3glDrawElements\fP, \%\f3glDrawArrays\fP, or \%\f3glDrawRangeElements\fP +may leave the current color indeterminate, if the color array is enabled. +If +\%\f3glColorMaterial\fP is enabled while the current color is indeterminate, the +lighting material state specified by \f2face\fP and \f2mode\fP is also indeterminate. +.P +If the GL version is 1.1 or greater, and \%\f3GL_COLOR_MATERIAL\fP is +enabled, evaluated color values affect the results of the lighting +equation as if the current color were being modified, but no change is +made to the tracking lighting parameter of the current color. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2face\fP or \f2mode\fP is not an +accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glColorMaterial\fP is executed between +the execution of \%\f3glBegin\fP and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glIsEnabled\fP with argument \%\f3GL_COLOR_MATERIAL\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_MATERIAL_PARAMETER\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_MATERIAL_FACE\fP +.SH SEE ALSO +\%\f3glColor(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glDrawElements(3G)\fP, +\%\f3glDrawRangeElements(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glLight(3G)\fP, +\%\f3glLightModel(3G)\fP, +\%\f3glMaterial(3G)\fP Index: xc/doc/man/GL/gl/colorpointer.3gl diff -u /dev/null xc/doc/man/GL/gl/colorpointer.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/colorpointer.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,123 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 colorpoin +.ds Xs 1769 6 colorpointer.gl +.TH GLCOLORPOINTER 3G +.SH NAME +.B "glColorPointer +\- define an array of colors + +.SH C SPECIFICATION +void \f3glColorPointer\fP( +GLint \fIsize\fP, +.nf +.ta \w'\f3void \fPglColorPointer( 'u + GLenum \fItype\fP, + GLsizei \fIstride\fP, + const GLvoid \fI*ptr\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIstride\fP\ \ 'u +\f2size\fP +Specifies the number of components per color. Must be 3 or 4. +The initial value is 4. +.TP +\f2type\fP +Specifies the data type of each color component in the array. +Symbolic constants +\%\f3GL_BYTE\fP, +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_INT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_FLOAT\fP, +and +\%\f3GL_DOUBLE\fP +are accepted. +The initial value is \%\f3GL_FLOAT\fP. +.TP +\f2stride\fP +Specifies the byte offset between consecutive colors. +If \f2stride\fP is 0 (the initial value), the colors are understood to be +tightly packed in the array. The initial value is 0. +.TP +\f2ptr\fP +Specifies a pointer to the first component of the first color element +in the array. +.SH DESCRIPTION +\%\f3glColorPointer\fP specifies the location and data of an array of color components +to use when rendering. +\f2size\fP specifies the number of components per color, and must be 3 or 4. +\f2type\fP specifies the data type of each color component, and \f2stride\fP +specifies the byte stride from one color to the next allowing vertices and +attributes to be packed into a single array or stored in separate arrays. +(Single-array storage may be more efficient on some implementations; +see \%\f3glInterleavedArrays\fP.) +.P +When a color array is specified, +\f2size\fP, \f2type\fP, \f2stride\fP, and \f2ptr\fP are saved as client-side +state. +.P +To enable and disable the color array, call \%\f3glEnableClientState\fP and +.br +\%\f3glDisableClientState\fP with the argument \%\f3GL_COLOR_ARRAY\fP. If +enabled, the color array is used when \%\f3glDrawArrays\fP, +\%\f3glDrawElements\fP, \%\f3glDrawRangeElements\fP, or \%\f3glArrayElement\fP is +called. +.SH NOTES +\%\f3glColorPointer\fP is available only if the GL version is 1.1 or greater. +.P +The color array is initially disabled and isn't accessed when +\%\f3glArrayElement\fP, \%\f3glDrawArrays\fP, \%\f3glDrawRangeElements\fP, +or \%\f3glDrawElements\fP is called. +.P +Execution of \%\f3glColorPointer\fP is not allowed between the execution of +\%\f3glBegin\fP and the corresponding execution of \%\f3glEnd\fP, +but an error may or may not be generated. If no error is generated, +the operation is undefined. +.P +\%\f3glColorPointer\fP is typically implemented on the client side. +.P +Color array parameters are client-side state and are therefore not saved +or restored by \%\f3glPushAttrib\fP and \%\f3glPopAttrib\fP. +Use \%\f3glPushClientAttrib\fP and \%\f3glPopClientAttrib\fP instead. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2size\fP is not 3 or 4. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2stride\fP is negative. +.SH ASSOCIATED GETS +\%\f3glIsEnabled\fP with argument \%\f3GL_COLOR_ARRAY\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_ARRAY_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_ARRAY_TYPE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_ARRAY_STRIDE\fP +.br +\%\f3glGetPointerv\fP with argument \%\f3GL_COLOR_ARRAY_POINTER\fP +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glDrawElements(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glGetPointerv(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glInterleavedArrays(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glPopClientAttrib(3G)\fP, +\%\f3glPushClientAttrib(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/colorsubtable.3gl diff -u /dev/null xc/doc/man/GL/gl/colorsubtable.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/colorsubtable.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,116 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 colorsubt +.ds Xs 37035 5 colorsubtable.gl +.TH GLCOLORSUBTABLE 3G +.SH NAME +.B "glColorSubTable +\- respecify a portion of a color table + +.SH C SPECIFICATION +void \f3glColorSubTable\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglColorSubTable( 'u + GLsizei \fIstart\fP, + GLsizei \fIcount\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + const GLvoid \fI*data\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Must be one of +\%\f3GL_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, or +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP. +.TP +\f2start\fP +The starting index of the portion of the color table to be replaced. +.TP +\f2count\fP +The number of table entries to replace. +.TP +\f2format\fP +The of the pixel data in \f2data\fP. +The allowable values are +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, and +\%\f3GL_BGRA\fP. +.TP +\f2type\fP +The type of the pixel data in \f2data\fP. +The allowable values are +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP. +.TP +\f2data\fP +Pointer to a one-dimensional array of pixel data that is processed to +replace the specified region of the color table. +.SH DESCRIPTION +\%\f3glColorSubTable\fP is used to respecify a contiguous portion of a color table previously +defined using \%\f3glColorTable\fP. The pixels referenced by \f2data\fP replace the +portion of the existing table from indices \f2start\fP to +$"start"~+~"count"~-~1$, inclusive. This region may not include any +entries outside the range of the color table as it was originally specified. +It is not an error to specify a subtexture with width of 0, but such a +specification has no effect. +.SH NOTES +\%\f3glColorSubTable\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.P +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_VALUE\fP is generated if $"start"~+~"count"~>~width$. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glColorSubTable\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetColorTable\fP, +\%\f3glGetColorTableParameter\fP +.SH SEE ALSO +\%\f3glColorSubTable(3G)\fP, +\%\f3glColorTableParameter(3G)\fP, +\%\f3glCopyColorTable(3G)\fP, +\%\f3glCopyColorSubTable(3G)\fP, +\%\f3glGetColorTable(3G)\fP Index: xc/doc/man/GL/gl/colortable.3gl diff -u /dev/null xc/doc/man/GL/gl/colortable.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/colortable.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,306 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 colortabl +.ds Xs 60942 11 colortable.gl +.TH GLCOLORTABLE 3G +.SH NAME +.B "glColorTable +\- define a color lookup table + +.SH C SPECIFICATION +void \f3glColorTable\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglColorTable( 'u + GLenum \fIinternalformat\fP, + GLsizei \fIwidth\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + const GLvoid \fI*table\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIinternalformat\fP\ \ 'u +\f2target\fP +Must be one of +\%\f3GL_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP, +\%\f3GL_PROXY_COLOR_TABLE\fP, +\%\f3GL_PROXY_POST_CONVOLUTION_COLOR_TABLE\fP, +or +\%\f3GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE\fP. +.TP +\f2internalformat\fP +The internal of the color table. +The allowable values are +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_INTENSITY4\fP, +\%\f3GL_INTENSITY8\fP, +\%\f3GL_INTENSITY12\fP, +\%\f3GL_INTENSITY16\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, and +\%\f3GL_RGBA16\fP. +.TP +\f2width\fP +The number of entries in the color lookup table specified by \f2table\fP. +.TP +\f2format\fP +The of the pixel data in \f2table\fP. +The allowable values are +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, and +\%\f3GL_BGRA\fP. +.TP +\f2type\fP +The type of the pixel data in \f2table\fP. +The allowable values are +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP. +.TP +\f2table\fP +Pointer to a one-dimensional array of pixel data that is processed to +build the color table. +.SH DESCRIPTION +\%\f3glColorTable\fP may be used in two ways: +to test the actual size and color resolution of a lookup table +given a particular set of parameters, +or to load the contents of a color lookup +table. +Use the targets \%\f3GL_PROXY_*\fP for the first case +and the other targets for the second case. +.P +If \f2target\fP is \%\f3GL_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, +or +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP, +\%\f3glColorTable\fP builds a color lookup table from an array of pixels. +The pixel array specified by \f2width\fP, \f2format\fP, \f2type\fP, and \f2table\fP +is extracted from memory and +processed just as if \%\f3glDrawPixels\fP were called, but processing +stops after the final expansion to RGBA is completed. +.P +The four scale parameters and the four bias parameters that are defined +for the table are then used to scale and bias the R, G, B, and A components +of each pixel. +(Use \%\f3glColorTableParameter\fP to set these scale and bias +parameters.) +.P +Next, the R, G, B, and A values are clamped to the range [0,\ 1]. +Each pixel is then converted to the internal specified by +\f2internalformat\fP. +This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.P +.TS +center; +lb cb cb cb cb cb cb +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +\%\f3GL_ALPHA\fP A +\%\f3GL_LUMINANCE\fP R +\%\f3GL_LUMINANCE_ALPHA\fP A R +\%\f3GL_INTENSITY\fP R +\%\f3GL_RGB\fP R G B +\%\f3GL_RGBA\fP R G B A +_ +.TE +.P +Finally, the red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in the color table. +They form a one-dimensional table with indices in the range +[0,\ \f2width\fP\ \-\ 1]. +.P +If \f2target\fP is \%\f3GL_PROXY_*\fP, +\%\f3glColorTable\fP recomputes and stores the values of the proxy color table's state +variables +\%\f3GL_COLOR_TABLE_FORMAT\fP, +\%\f3GL_COLOR_TABLE_WIDTH\fP, +\%\f3GL_COLOR_TABLE_RED_SIZE\fP, +\%\f3GL_COLOR_TABLE_GREEN_SIZE\fP, +\%\f3GL_COLOR_TABLE_BLUE_SIZE\fP, +\%\f3GL_COLOR_TABLE_ALPHA_SIZE\fP, +\%\f3GL_COLOR_TABLE_LUMINANCE_SIZE\fP, and +\%\f3GL_COLOR_TABLE_INTENSITY_SIZE\fP. +There is no effect on the image or state of any actual color table. +If the specified color table is too large to be supported, then all the +proxy state variables listed above are set to zero. +Otherwise, the color table could be supported by \%\f3glColorTable\fP +using the corresponding non-proxy target, +and the proxy state variables are set as if that target were being defined. +.P +The proxy state variables can be retrieved by calling +\%\f3glGetColorTableParameter\fP with a target of +\%\f3GL_PROXY_*\fP. +This allows the application to decide if a particular \%\f3glColorTable\fP +command would succeed, and to determine what the resulting color table +attributes would be. +.P +If a color table is enabled, and its width is non-zero, then its +contents are used to replace a subset of the components of each RGBA +pixel group, based on the internal of the table. +.P +Each pixel group has color components (R, G, B, A) +that are in the range [0.0,\ 1.0]. +The color components are rescaled to +the size of the color lookup table to form an index. +Then a subset of the components based on the internal of the table are +replaced by the table entry selected by that index. +If the color components and contents of the table are represented as follows: +.P +.TS +center; +cb cb +c l. +_ +Representation Meaning +_ +\f7r\fP Table index computed from \f7R\fP +\f7g\fP Table index computed from \f7G\fP +\f7b\fP Table index computed from \f7B\fP +\f7a\fP Table index computed from \f7A\fP +\f7L[i]\fP Luminance value at table index \f7i\fP +\f7I[i]\fP Intensity value at table index \f7i\fP +\f7R[i]\fP Red value at table index \f7i\fP +\f7G[i]\fP Green value at table index \f7i\fP +\f7B[i]\fP Blue value at table index \f7i\fP +\f7A[i]\fP Alpha value at table index \f7i\fP +_ +.TE +.P +then the result of color table lookup is as follows: +.P +.ne 10 +.TS +center; +l l s s s +l l l l l +l l l l l. +_ + Resulting Texture Components +Table Internal Format R G B A +_ +\%\f3GL_ALPHA\fP R G B A[a] +\%\f3GL_LUMINANCE\fP L[r] L[g] L[b] At +\%\f3GL_LUMINANCE_ALPHA\fP L[r] L[g] L[b] A[a] +\%\f3GL_INTENSITY\fP I[r] I[g] I[b] I[a] +\%\f3GL_RGB\fP R[r] G[g] B[b] A +\%\f3GL_RGBA\fP R[r] G[g] B[b] A[a] +_ +.TE +.P +When \%\f3GL_COLOR_TABLE\fP is enabled, the colors resulting from +the pixel map operation (if it is enabled) are mapped +by the color lookup table before being passed to the convolution +operation. The colors resulting from the convolution operation +are modified by the post convolution color lookup table when +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP +is enabled. These modified colors are then sent to the color matrix operation. +Finally, if \%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP +is enabled, the colors resulting from the color matrix operation +are mapped by the post color matrix color lookup table before being +used by the histogram operation. +.P +.SH NOTES +\%\f3glColorTable\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.P +If \f2target\fP is set to \%\f3GL_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, +or \%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP, +then \f2width\fP must be a power of two or a \%\f3GL_INVALID_VALUE\fP +error is generated. +.P +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2internalformat\fP is not one of the +allowable values. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP is less than zero. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not one of the allowable +values. +.P +\%\f3GL_TABLE_TOO_LARGE\fP is generated if the requested color table +is too large to be supported by the implementation, and \f2target\fP is +not a \%\f3GL_PROXY_*\fP target. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glColorTable\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetColorTableParameter\fP +.SH SEE ALSO +\%\f3glColorSubTable(3G)\fP, +\%\f3glColorTableParameter(3G)\fP, +\%\f3glCopyColorTable(3G)\fP, +\%\f3glCopyColorSubTable(3G)\fP, +\%\f3glGetColorTable(3G)\fP Index: xc/doc/man/GL/gl/colortableparameter.3gl diff -u /dev/null xc/doc/man/GL/gl/colortableparameter.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/colortableparameter.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,86 @@ +'\" te +'\"! tbl | eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 19:42 +.ds Dm 01 colortabl +.ds Xs 4422 4 colortableparameter.gl +.TH GLCOLORTABLEPARAMETER 3G +.SH NAME +.B "glColorTableParameteriv, glColorTableParameterfv +\- set color lookup table parameters + +.SH C SPECIFICATION +void \f3glColorTableParameteriv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglColorTableParameteriv( 'u + GLenum \fIpname\fP, + const GLint \fI*params\fP ) +.fi +void \f3glColorTableParameterfv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglColorTableParameterfv( 'u + GLenum \fIpname\fP, + const GLfloat \fI*params\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +The target color table. +Must be +\%\f3GL_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, or +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP. +.TP +\f2pname\fP +The symbolic name of a texture color lookup table parameter. +Must be one of +\%\f3GL_COLOR_TABLE_SCALE\fP or +\%\f3GL_COLOR_TABLE_BIAS\fP. +.TP +\f2params\fP +A pointer to an array where the values of the parameters are stored. +.SH DESCRIPTION +\%\f3glColorTableParameter\fP is used to specify the scale factors and bias terms applied to +color components when they are loaded into a color table. \f2target\fP +indicates which color table the scale and bias terms apply to; it +must be set to +\%\f3GL_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, or +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP. +.P +\f2pname\fP must be \%\f3GL_COLOR_TABLE_SCALE\fP to set the +scale factors. +In this case, \f2params\fP points to an array of four values, which are +the scale factors for red, green, blue, and alpha, in that order. +.P +\f2pname\fP must be \%\f3GL_COLOR_TABLE_BIAS\fP to set the +bias terms. In this case, +\f2params\fP points to an array of four values, which are the bias +terms for red, green, blue, and alpha, in that order. +.P +The color tables themselves are specified by +calling \%\f3glColorTable\fP. +.SH NOTES +\%\f3glColorTableParameter\fP is available only if \%\f3GL_ARB_imaging\fP is returned from calling +\%\f3glGetString\fP with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP or \f2pname\fP is not +an acceptable value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glColorTableParameter\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetColorTableParameter\fP +.SH SEE ALSO +\%\f3glColorTable(3G)\fP, +\%\f3glPixelTransfer(3G)\fP Index: xc/doc/man/GL/gl/convolutionfilter1d.3gl diff -u /dev/null xc/doc/man/GL/gl/convolutionfilter1d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/convolutionfilter1d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,220 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 convoluti +.ds Xs 19959 8 convolutionfilter1d.gl +.TH GLCONVOLUTIONFILTER1D 3G +.SH NAME +.B "glConvolutionFilter1D +\- define a one-dimensional convolution filter + +.SH C SPECIFICATION +void \f3glConvolutionFilter1D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglConvolutionFilter1D( 'u + GLenum \fIinternalformat\fP, + GLsizei \fIwidth\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + const GLvoid \fI*image\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIinternalformat\fP\ \ 'u +\f2target\fP +Must be \%\f3GL_CONVOLUTION_1D\fP. +.TP +\f2internalformat\fP +The internal of the convolution filter kernel. +The allowable values are +\%\f3GL_ALPHA\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_RGB\fP, and +\%\f3GL_RGBA\fP. +.TP +\f2width\fP +The width of the pixel array referenced by \f2image\fP. +.TP +\f2format\fP +The of the pixel data in \f2image\fP. +The allowable values are +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_INTENSITY4\fP, +\%\f3GL_INTENSITY8\fP, +\%\f3GL_INTENSITY12\fP, +\%\f3GL_INTENSITY16\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, or +\%\f3GL_RGBA16\fP. +.TP +\f2type\fP +The type of the pixel data in \f2image\fP. +Symbolic constants +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +are accepted. +.TP +\f2image\fP +Pointer to a one-dimensional array of pixel data that is processed to +build the convolution filter kernel. +.SH DESCRIPTION +\%\f3glConvolutionFilter1D\fP builds a one-dimensional convolution filter kernel from an array of +pixels. +.sp +The pixel array specified by \f2width\fP, \f2format\fP, \f2type\fP, and \f2image\fP +is extracted from memory and +processed just as if \%\f3glDrawPixels\fP were called, but processing +stops after the final expansion to RGBA is completed. +.sp +The R, G, B, and A components of each pixel are next scaled by the four +1D \%\f3GL_CONVOLUTION_FILTER_SCALE\fP parameters and biased by the +four 1D \%\f3GL_CONVOLUTION_FILTER_BIAS\fP parameters. +(The scale and bias parameters are set by \%\f3glConvolutionParameter\fP +using the \%\f3GL_CONVOLUTION_1D\fP target and the names +\%\f3GL_CONVOLUTION_FILTER_SCALE\fP and \%\f3GL_CONVOLUTION_FILTER_BIAS\fP. +The parameters themselves are vectors of four values that are applied to red, +green, blue, and alpha, in that order.) +The R, G, B, and A values are not clamped to [0,1] at any time during this +process. +.sp +Each pixel is then converted to the internal specified by +\f2internalformat\fP. +This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.sp +.TS +center; +lb cb cb cb cb cb cb +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +\%\f3GL_ALPHA\fP A +\%\f3GL_LUMINANCE\fP R +\%\f3GL_LUMINANCE_ALPHA\fP A R +\%\f3GL_INTENSITY\fP R +\%\f3GL_RGB\fP R G B +\%\f3GL_RGBA\fP R G B A +_ +.TE +.sp +The red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in floating-point rather than integer +. +They form a one-dimensional filter kernel image indexed with coordinate +\f2i\fP such that \f2i\fP starts at 0 and increases from left to right. +Kernel location \f2i\fP is derived from the \f2i\fPth pixel, counting from 0. +.PP +Note that after a convolution is performed, the resulting color +components are also scaled by their corresponding +\%\f3GL_POST_CONVOLUTION_c_SCALE\fP parameters and biased by their +corresponding \%\f3GL_POST_CONVOLUTION_c_BIAS\fP parameters (where +\f2c\fP takes on the values \f3RED\fP, \f3GREEN\fP, \f3BLUE\fP, and +\f3ALPHA\fP). +These parameters are set by \%\f3glPixelTransfer\fP. +.SH NOTES +\%\f3glConvolutionFilter1D\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not +\%\f3GL_CONVOLUTION_1D\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2internalformat\fP is not one of the +allowable values. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP is less than zero or greater +than the maximum supported value. +This value may be queried with \%\f3glGetConvolutionParameter\fP +using target \%\f3GL_CONVOLUTION_1D\fP and name +\%\f3GL_MAX_CONVOLUTION_WIDTH\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glConvolutionFilter1D\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2format\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2type\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2format\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2type\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGetConvolutionParameter\fP, \%\f3glGetConvolutionFilter\fP +.SH SEE ALSO +\%\f3glConvolutionFilter2D(3G)\fP, +\%\f3glSeparableFilter2D(3G)\fP, +\%\f3glConvolutionParameter(3G)\fP, +\%\f3glPixelTransfer(3G)\fP Index: xc/doc/man/GL/gl/convolutionfilter2d.3gl diff -u /dev/null xc/doc/man/GL/gl/convolutionfilter2d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/convolutionfilter2d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,236 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 convoluti +.ds Xs 37578 9 convolutionfilter2d.gl +.TH GLCONVOLUTIONFILTER2D 3G +.SH NAME +.B "glConvolutionFilter2D +\- define a two-dimensional convolution filter + +.SH C SPECIFICATION +void \f3glConvolutionFilter2D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglConvolutionFilter2D( 'u + GLenum \fIinternalformat\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + const GLvoid \fI*image\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIinternalformat\fP\ \ 'u +\f2target\fP +Must be \%\f3GL_CONVOLUTION_2D\fP. +.TP +\f2internalformat\fP +The internal of the convolution filter kernel. +The allowable values are +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_INTENSITY4\fP, +\%\f3GL_INTENSITY8\fP, +\%\f3GL_INTENSITY12\fP, +\%\f3GL_INTENSITY16\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, or +\%\f3GL_RGBA16\fP. +.TP +\f2width\fP +The width of the pixel array referenced by \f2image\fP. +.TP +\f2height\fP +The height of the pixel array referenced by \f2image\fP. +.TP +\f2format\fP +The of the pixel data in \f2image\fP. +The allowable values are +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, and +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +The type of the pixel data in \f2image\fP. +Symbolic constants +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +are accepted. +.TP +\f2image\fP +Pointer to a two-dimensional array of pixel data that is processed to +build the convolution filter kernel. +.SH DESCRIPTION +\%\f3glConvolutionFilter2D\fP builds a two-dimensional convolution filter kernel from an array of +pixels. +.sp +The pixel array specified by \f2width\fP, \f2height\fP, \f2format\fP, \f2type\fP, and +\f2image\fP is extracted from memory and processed just as if +\%\f3glDrawPixels\fP were called, but processing stops after the final +expansion to RGBA is completed. +.sp +The R, G, B, and A components of each pixel are next scaled by the four +2D \%\f3GL_CONVOLUTION_FILTER_SCALE\fP parameters and biased by the +four 2D \%\f3GL_CONVOLUTION_FILTER_BIAS\fP parameters. +(The scale and bias parameters are set by \%\f3glConvolutionParameter\fP +using the \%\f3GL_CONVOLUTION_2D\fP target and the names +\%\f3GL_CONVOLUTION_FILTER_SCALE\fP and \%\f3GL_CONVOLUTION_FILTER_BIAS\fP. +The parameters themselves are vectors of four values that are applied to red, +green, blue, and alpha, in that order.) +The R, G, B, and A values are not clamped to [0,1] at any time during this +process. +.sp +Each pixel is then converted to the internal specified by +\f2internalformat\fP. +This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.sp +.TS +center; +lb cb cb cb cb cb cb +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +\%\f3GL_ALPHA\fP A +\%\f3GL_LUMINANCE\fP R +\%\f3GL_LUMINANCE_ALPHA\fP A R +\%\f3GL_INTENSITY\fP R +\%\f3GL_RGB\fP R G B +\%\f3GL_RGBA\fP R G B A +_ +.TE +.sp +The red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in floating-point rather than integer +. +They form a two-dimensional filter kernel image indexed with coordinates +\f2i\fP and \f2j\fP such that \f2i\fP starts at zero and increases from left +to right, and \f2j\fP starts at zero and increases from bottom to top. +Kernel location \f2i,j\fP is derived from the \f2N\fPth pixel, +where \f2N\fP is \f2i\fP+\f2j\fP*\f2width\fP. +.PP +Note that after a convolution is performed, the resulting color +components are also scaled by their corresponding +\%\f3GL_POST_CONVOLUTION_c_SCALE\fP parameters and biased by their +corresponding \%\f3GL_POST_CONVOLUTION_c_BIAS\fP parameters (where +\f2c\fP takes on the values \f3RED\fP, \f3GREEN\fP, \f3BLUE\fP, and +\f3ALPHA\fP). +These parameters are set by \%\f3glPixelTransfer\fP. +.SH NOTES +\%\f3glConvolutionFilter2D\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not +\%\f3GL_CONVOLUTION_2D\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2internalformat\fP is not one of the +allowable values. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP is less than zero or greater +than the maximum supported value. +This value may be queried with \%\f3glGetConvolutionParameter\fP +using target \%\f3GL_CONVOLUTION_2D\fP and name +\%\f3GL_MAX_CONVOLUTION_WIDTH\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2height\fP is less than zero or greater +than the maximum supported value. +This value may be queried with \%\f3glGetConvolutionParameter\fP +using target \%\f3GL_CONVOLUTION_2D\fP and name +\%\f3GL_MAX_CONVOLUTION_HEIGHT\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glConvolutionFilter2D\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2height\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2height\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGetConvolutionParameter\fP, \%\f3glGetConvolutionFilter\fP +.SH SEE ALSO +\%\f3glConvolutionFilter1D(3G)\fP, +\%\f3glSeparableFilter2D(3G)\fP, +\%\f3glConvolutionParameter(3G)\fP, +\%\f3glPixelTransfer(3G)\fP Index: xc/doc/man/GL/gl/convolutionparameter.3gl diff -u /dev/null xc/doc/man/GL/gl/convolutionparameter.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/convolutionparameter.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,173 @@ +'\" et +'\"! eqn|tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 convoluti +.ds Xs 40911 7 convolutionparameter.gl +.TH GLCONVOLUTIONPARAMETER 3G +.SH NAME +.B "glConvolutionParameterf, glConvolutionParameteri, glConvolutionParameterfv, glConvolutionParameteriv +\- set convolution parameters + +.SH C SPECIFICATION +void \f3glConvolutionParameterf\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglConvolutionParameterf( 'u + GLenum \fIpname\fP, + GLfloat \fIparams\fP ) +.fi +void \f3glConvolutionParameteri\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglConvolutionParameteri( 'u + GLenum \fIpname\fP, + GLint \fIparams\fP ) +.fi + +.EQ +delim $$ +.EN +.sp -1 +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +The target for the convolution parameter. +Must be one of +\%\f3GL_CONVOLUTION_1D\fP, +\%\f3GL_CONVOLUTION_2D\fP, or +\%\f3GL_SEPARABLE_2D\fP. +.TP +\f2pname\fP +The parameter to be set. +Must be +\%\f3GL_CONVOLUTION_BORDER_MODE\fP. +.TP +\f2params\fP +The parameter value. +Must be one of +\%\f3GL_REDUCE\fP, \%\f3GL_CONSTANT_BORDER\fP, \%\f3GL_REPLICATE_BORDER\fP. +.sp 2 +.SH C SPECIFICATION +void \f3glConvolutionParameterfv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglConvolutionParameterfv( 'u + GLenum \fIpname\fP, + const GLfloat \fI*params\fP ) +.fi +void \f3glConvolutionParameteriv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglConvolutionParameteriv( 'u + GLenum \fIpname\fP, + const GLint \fI*params\fP ) +.fi + +.sp -1 +.SH PARAMETERS +.TP +\f2target\fP +The target for the convolution parameter. +Must be one of +\%\f3GL_CONVOLUTION_1D\fP, +\%\f3GL_CONVOLUTION_2D\fP, or +\%\f3GL_SEPARABLE_2D\fP. +.TP +\f2pname\fP +The parameter to be set. +Must be one of +\%\f3GL_CONVOLUTION_BORDER_MODE\fP, +\%\f3GL_CONVOLUTION_BORDER_COLOR\fP, +\%\f3GL_CONVOLUTION_FILTER_SCALE\fP, or +\%\f3GL_CONVOLUTION_FILTER_BIAS\fP. +.TP +\f2params\fP +The parameter value. +If \f2pname\fP is \%\f3GL_CONVOLUTION_BORDER_MODE\fP, \f2params\fP must be one of +\%\f3GL_REDUCE\fP, \%\f3GL_CONSTANT_BORDER\fP, or \%\f3GL_REPLICATE_BORDER\fP. +Otherwise, must be a vector of four values (for red, green, blue, and alpha, +respectively) to be used for +scaling (when \f2pname\fP is \%\f3GL_CONVOLUTION_FILTER_SCALE\fP), or +biasing (when \f2pname\fP is \%\f3GL_CONVOLUTION_FILTER_BIAS\fP) a convolution +filter kernel or setting the constant border color (when \f2pname\fP is +\%\f3GL_CONVOLUTION_BORDER_COLOR\fP. +.SH DESCRIPTION +\%\f3glConvolutionParameter\fP sets the value of a convolution parameter. +.sp +\f2target\fP selects the convolution filter to be affected: +\%\f3GL_CONVOLUTION_1D\fP, +\%\f3GL_CONVOLUTION_2D\fP, or +\%\f3GL_SEPARABLE_2D\fP +for the 1D, 2D, or separable 2D filter, respectively. +.sp +\f2pname\fP selects the parameter to be changed. +\%\f3GL_CONVOLUTION_FILTER_SCALE\fP and \%\f3GL_CONVOLUTION_FILTER_BIAS\fP +affect the definition of the convolution filter kernel; see +\%\f3glConvolutionFilter1D\fP, \%\f3glConvolutionFilter2D\fP, and +\%\f3glSeparableFilter2D\fP for details. +In these cases, \f2params\fP is an array of four values to be applied to +red, green, blue, and alpha values, respectively. The initial value for +\%\f3GL_CONVOLUTION_FILTER_SCALE\fP is (1, 1, 1, 1), and the initial value +for \%\f3GL_CONVOLUTION_FILTER_BIAS\fP is (0, 0, 0, 0). +.sp +A \f2pname\fP value of \%\f3GL_CONVOLUTION_BORDER_MODE\fP controls the +convolution border mode. The accepted modes are: +.TP +\%\f3GL_REDUCE\fP +The image resulting from convolution is +smaller than the source image. +If the filter width is $Wf$ and height is $Hf$, +and the source image width is $Ws$ and height is $Hs$, +then the convolved image width will be $Ws ~-~ Wf ~+~ 1$ and height +will be $Hs ~-~ Hf ~+~ 1$. +(If this reduction would generate an image with zero or negative width +and/or height, the output is simply null, with no error generated.) +The coordinates of the image resulting from convolution are zero +through $Ws ~-~ Wf$ in width and zero through $Hs ~-~ Hf$ in +height. +.TP +\%\f3GL_CONSTANT_BORDER\fP +The image resulting from convolution is the same size as the source image, and +processed as if the source image were surrounded by pixels with their color +specified by the \%\f3GL_CONVOLUTION_BORDER_COLOR\fP. +.TP +\%\f3GL_REPLICATE_BORDER\fP +The image resulting from convolution is the same size as the source image, and +processed as if the outermost pixel on the border of the source image were +replicated. +.SH NOTES +\%\f3glConvolutionParameter\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.P +In cases where errors can result from the specification of invalid +image dimensions, it is the dimensions after convolution that are +tested, not the dimensions of the source image. +For example, \%\f3glTexImage1D\fP requires power-of-two image size. +When \%\f3GL_REDUCE\fP border mode is in effect, +the source image must be larger than the final power-of-two size +by one less than the size of the 1D filter kernel. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2pname\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2pname\fP is +\%\f3GL_CONVOLUTION_BORDER_MODE\fP and \f2params\fP is not one of +\%\f3GL_REDUCE\fP, \%\f3GL_CONSTANT_BORDER\fP, or \%\f3GL_REPLICATE_BORDER\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glConvolutionParameter\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetConvolutionParameter\fP +.SH SEE ALSO +\%\f3glConvolutionFilter1D(3G)\fP, +\%\f3glConvolutionFilter2D(3G)\fP, +\%\f3glSeparableFilter2D(3G)\fP, +\%\f3glGetConvolutionParameter(3G)\fP Index: xc/doc/man/GL/gl/copycolorsubtable.3gl diff -u /dev/null xc/doc/man/GL/gl/copycolorsubtable.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/copycolorsubtable.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,75 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 copycolor +.ds Xs 44682 4 copycolorsubtable.gl +.TH GLCOPYCOLORSUBTABLE 3G +.SH NAME +.B "glCopyColorSubTable +\- respecify a portion of a color table + +.SH C SPECIFICATION +void \f3glCopyColorSubTable\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglCopyColorSubTable( 'u + GLsizei \fIstart\fP, + GLint \fIx\fP, + GLint \fIy\fP, + GLsizei \fIwidth\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Must be one of +\%\f3GL_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, or +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP. +.TP +\f2start\fP +The starting index of the portion of the color table to be replaced. +.TP +\f2x\fP, \f2y\fP +The window coordinates of the left corner of the row of pixels to be +copied. +.TP +\f2width\fP +The number of table entries to replace. +.SH DESCRIPTION +\%\f3glCopyColorSubTable\fP is used to respecify a contiguous portion of a color table previously +defined using \%\f3glColorTable\fP. The pixels copied from the framebuffer +replace the portion of the existing table from indices \f2start\fP to +$"start"~+~"x"~-~1$, inclusive. This region may not include any +entries outside the range of the color table, as was originally specified. +It is not an error to specify a subtexture with width of 0, but such a +specification has no effect. +.SH NOTES +\%\f3glCopyColorSubTable\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.P +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2target\fP is not a previously defined +color table. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2target\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_VALUE\fP is generated if $"start"~+~"x"~>~width$. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glCopyColorSubTable\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetColorTable\fP, +\%\f3glGetColorTableParameter\fP +.SH SEE ALSO +\%\f3glColorSubTable(3G)\fP, +\%\f3glColorTableParameter(3G)\fP, +\%\f3glCopyColorTable(3G)\fP, +\%\f3glCopyColorSubTable(3G)\fP, +\%\f3glGetColorTable(3G)\fP Index: xc/doc/man/GL/gl/copycolortable.3gl diff -u /dev/null xc/doc/man/GL/gl/copycolortable.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/copycolortable.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,160 @@ +'\" te +'\"! tbl | eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 copycolor +.ds Xs 49586 7 copycolortable.gl +.TH GLCOPYCOLORTABLE 3G +.SH NAME +.B "glCopyColorTable +\- copy pixels into a color table + +.SH C SPECIFICATION +void \f3glCopyColorTable\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglCopyColorTable( 'u + GLenum \fIinternalformat\fP, + GLint \fIx\fP, + GLint \fIy\fP, + GLsizei \fIwidth\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIinternalformat\fP\ \ 'u +\f2target\fP +The color table target. Must be +\%\f3GL_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, +or \%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP. +.TP +\f2internalformat\fP +The internal storage of the texture image. +Must be one of the following symbolic constants: +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_INTENSITY4\fP, +\%\f3GL_INTENSITY8\fP, +\%\f3GL_INTENSITY12\fP, +\%\f3GL_INTENSITY16\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, +\%\f3GL_RGBA16\fP. +.TP +\f2x\fP +The x coordinate of the lower-left corner of the pixel rectangle +to be transferred to the color table. +.TP +\f2y\fP +The y coordinate of the lower-left corner of the pixel rectangle +to be transferred to the color table. +.TP +\f2width\fP +The width of the pixel rectangle. +.SH DESCRIPTION +\%\f3glCopyColorTable\fP loads a color table with pixels from the current +\%\f3GL_READ_BUFFER\fP (rather than from main memory, as is the case for +\%\f3glColorTable\fP). +.P +The screen-aligned pixel rectangle with lower-left corner at (\f2x\fP,\ \f2y\fP) +having width \f2width\fP and height 1 +is loaded into the color table. If any pixels within +this region are outside the window that is associated with the GL +context, the values obtained for those pixels are undefined. +.P +The pixels in the rectangle are processed just as if +\%\f3glReadPixels\fP were called, with \f2internalformat\fP set to RGBA, +but processing stops after the final conversion to RGBA. +.P +The four scale parameters and the four bias parameters that are defined +for the table are then used to scale and bias the R, G, B, and A components +of each pixel. The scale and bias parameters are set by calling +\%\f3glColorTableParameter\fP. +.P +Next, the R, G, B, and A values are clamped to the range [0,1]. +Each pixel is then converted to the internal specified by +\f2internalformat\fP. This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.P +.TS +center; +lb cb cb cb cb cb cb +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +\%\f3GL_ALPHA\fP A +\%\f3GL_LUMINANCE\fP R +\%\f3GL_LUMINANCE_ALPHA\fP A R +\%\f3GL_INTENSITY\fP R +\%\f3GL_RGB\fP R G B +\%\f3GL_RGBA\fP R G B A +_ +.TE +.P +Finally, the red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in the color table. +They form a one-dimensional table with indices in the range +[0,\ \f2width\fP\ \-\ 1]. +.P +.SH NOTES +\%\f3glCopyColorTable\fP is available only if \%\f3GL_ARB_imaging\fP is returned from calling +\%\f3glGetString\fP with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated when \f2target\fP is not one of the +allowable values. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP is less than zero. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2internalformat\fP is not one of the +allowable values. +.P +\%\f3GL_TABLE_TOO_LARGE\fP is generated if the requested color table +is too large to be supported by the implementation. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glCopyColorTable\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetColorTable\fP, +\%\f3glGetColorTableParameter\fP +.SH SEE ALSO +\%\f3glColorTable(3G)\fP, +\%\f3glColorTableParameter(3G)\fP, +\%\f3glReadPixels(3G)\fP Index: xc/doc/man/GL/gl/copyconvolutionfilter1d.3gl diff -u /dev/null xc/doc/man/GL/gl/copyconvolutionfilter1d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/copyconvolutionfilter1d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,164 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 001 copyconv +.ds Xs 33614 7 copyconvolutionfilter1d.gl +.TH GLCOPYCONVOLUTIONFILTER1D 3G +.SH NAME +.B "glCopyConvolutionFilter1D +\- copy pixels into a one-dimensional convolution filter + +.SH C SPECIFICATION +void \f3glCopyConvolutionFilter1D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglCopyConvolutionFilter1D( 'u + GLenum \fIinternalformat\fP, + GLint \fIx\fP, + GLint \fIy\fP, + GLsizei \fIwidth\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIinternalformat\fP\ \ 'u +\f2target\fP +Must be \%\f3GL_CONVOLUTION_1D\fP. +.TP +\f2internalformat\fP +The internal of the convolution filter kernel. +The allowable values are +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_INTENSITY4\fP, +\%\f3GL_INTENSITY8\fP, +\%\f3GL_INTENSITY12\fP, +\%\f3GL_INTENSITY16\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, or +\%\f3GL_RGBA16\fP. +.TP +\f2x\fP, \f2y\fP +The window space coordinates of the lower-left coordinate of the +pixel array to copy. +.TP +\f2width\fP +The width of the pixel array to copy. +.SH DESCRIPTION +\%\f3glCopyConvolutionFilter1D\fP defines a one-dimensional convolution filter kernel with pixels +from the current \%\f3GL_READ_BUFFER\fP (rather than from main memory, +as is the case for \%\f3glConvolutionFilter1D\fP). +.sp +The screen-aligned pixel rectangle with lower-left corner at (\f2x\fP,\ \f2y\fP), +width \f2width\fP and height 1 is used to define +the convolution filter. If any pixels within this region are +outside the window that is associated with the GL context, the +values obtained for those pixels are undefined. +.sp +The pixels in the rectangle are processed exactly as if \%\f3glReadPixels\fP +had been called with \f2format\fP +set to RGBA, but the process stops just before final conversion. +The R, G, B, and A components of each pixel are next scaled by the four +1D \%\f3GL_CONVOLUTION_FILTER_SCALE\fP parameters and biased by the +four 1D \%\f3GL_CONVOLUTION_FILTER_BIAS\fP parameters. +(The scale and bias parameters are set by \%\f3glConvolutionParameter\fP +using the \%\f3GL_CONVOLUTION_1D\fP target and the names +\%\f3GL_CONVOLUTION_FILTER_SCALE\fP and \%\f3GL_CONVOLUTION_FILTER_BIAS\fP. +The parameters themselves are vectors of four values that are applied to red, +green, blue, and alpha, in that order.) +The R, G, B, and A values are not clamped to [0,1] at any time during this +process. +.sp +Each pixel is then converted to the internal specified by +\f2internalformat\fP. +This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.sp +.TS +center; +lb cb cb cb cb cb cb +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +\%\f3GL_ALPHA\fP A +\%\f3GL_LUMINANCE\fP R +\%\f3GL_LUMINANCE_ALPHA\fP A R +\%\f3GL_INTENSITY\fP R +\%\f3GL_RGB\fP R G B +\%\f3GL_RGBA\fP R G B A +_ +.TE +.sp +The red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in floating-point rather than integer +. +.sp +Pixel ordering is such that lower x screen coordinates correspond to +lower \f2i\fP filter image coordinates. +.PP +Note that after a convolution is performed, the resulting color +components are also scaled by their corresponding +\%\f3GL_POST_CONVOLUTION_c_SCALE\fP parameters and biased by their +corresponding \%\f3GL_POST_CONVOLUTION_c_BIAS\fP parameters (where +\f2c\fP takes on the values \f3RED\fP, \f3GREEN\fP, \f3BLUE\fP, and +\f3ALPHA\fP). +These parameters are set by \%\f3glPixelTransfer\fP. +.SH NOTES +\%\f3glCopyConvolutionFilter1D\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not +\%\f3GL_CONVOLUTION_1D\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2internalformat\fP is not one of the +allowable values. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP is less than zero or greater +than the maximum supported value. +This value may be queried with \%\f3glGetConvolutionParameter\fP +using target \%\f3GL_CONVOLUTION_1D\fP and name +\%\f3GL_MAX_CONVOLUTION_WIDTH\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glCopyConvolutionFilter1D\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetConvolutionParameter\fP, \%\f3glGetConvolutionFilter\fP +.SH SEE ALSO +\%\f3glConvolutionFilter1D(3G)\fP, +\%\f3glConvolutionParameter(3G)\fP, +\%\f3glPixelTransfer(3G)\fP Index: xc/doc/man/GL/gl/copyconvolutionfilter2d.3gl diff -u /dev/null xc/doc/man/GL/gl/copyconvolutionfilter2d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/copyconvolutionfilter2d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,176 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 001 copyconv +.ds Xs 51319 8 copyconvolutionfilter2d.gl +.TH GLCOPYCONVOLUTIONFILTER2D 3G +.SH NAME +.B "glCopyConvolutionFilter2D +\- copy pixels into a two-dimensional convolution filter + +.SH C SPECIFICATION +void \f3glCopyConvolutionFilter2D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglCopyConvolutionFilter2D( 'u + GLenum \fIinternalformat\fP, + GLint \fIx\fP, + GLint \fIy\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIinternalformat\fP\ \ 'u +\f2target\fP +Must be \%\f3GL_CONVOLUTION_2D\fP. +.TP +\f2internalformat\fP +The internal of the convolution filter kernel. +The allowable values are +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_INTENSITY4\fP, +\%\f3GL_INTENSITY8\fP, +\%\f3GL_INTENSITY12\fP, +\%\f3GL_INTENSITY16\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, or +\%\f3GL_RGBA16\fP. +.TP +\f2x\fP, \f2y\fP +The window space coordinates of the lower-left coordinate of the +pixel array to copy. +.TP +\f2width\fP +The width of the pixel array to copy. +.TP +\f2height\fP +The height of the pixel array to copy. +.SH DESCRIPTION +\%\f3glCopyConvolutionFilter2D\fP defines a two-dimensional convolution filter kernel with pixels +from the current \%\f3GL_READ_BUFFER\fP (rather than from main memory, +as is the case for \%\f3glConvolutionFilter2D\fP). +.sp +The screen-aligned pixel rectangle with lower-left corner at (\f2x\fP,\ \f2y\fP), +width \f2width\fP and height \f2height\fP +is used to define the convolution filter. If any pixels within this +region are +outside the window that is associated with the GL context, the +values obtained for those pixels are undefined. +.sp +The pixels in the rectangle are processed +exactly as if \%\f3glReadPixels\fP had been called with \f2format\fP +set to RGBA, but the process stops just before final conversion. +The R, G, B, and A components of each pixel are next scaled by the four +2D \%\f3GL_CONVOLUTION_FILTER_SCALE\fP parameters and biased by the +four 2D \%\f3GL_CONVOLUTION_FILTER_BIAS\fP parameters. +(The scale and bias parameters are set by \%\f3glConvolutionParameter\fP +using the \%\f3GL_CONVOLUTION_2D\fP target and the names +\%\f3GL_CONVOLUTION_FILTER_SCALE\fP and \%\f3GL_CONVOLUTION_FILTER_BIAS\fP. +The parameters themselves are vectors of four values that are applied to red, +green, blue, and alpha, in that order.) +The R, G, B, and A values are not clamped to [0,1] at any time during this +process. +.sp +Each pixel is then converted to the internal specified by +\f2internalformat\fP. +This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.sp +.TS +center; +lb cb cb cb cb cb cb +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +\%\f3GL_ALPHA\fP A +\%\f3GL_LUMINANCE\fP R +\%\f3GL_LUMINANCE_ALPHA\fP A R +\%\f3GL_INTENSITY\fP R +\%\f3GL_RGB\fP R G B +\%\f3GL_RGBA\fP R G B A +_ +.TE +.sp +The red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in floating-point rather than integer +. +.sp +Pixel ordering is such that lower x screen coordinates correspond to +lower \f2i\fP filter image coordinates, and lower y screen coordinates +correspond to lower \f2j\fP filter image coordinates. +.PP +Note that after a convolution is performed, the resulting color +components are also scaled by their corresponding +\%\f3GL_POST_CONVOLUTION_c_SCALE\fP parameters and biased by their +corresponding \%\f3GL_POST_CONVOLUTION_c_BIAS\fP parameters (where +\f2c\fP takes on the values \f3RED\fP, \f3GREEN\fP, \f3BLUE\fP, and +\f3ALPHA\fP). +These parameters are set by \%\f3glPixelTransfer\fP. +.SH NOTES +\%\f3glCopyConvolutionFilter2D\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not +\%\f3GL_CONVOLUTION_2D\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2internalformat\fP is not one of the +allowable values. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP is less than zero or greater +than the maximum supported value. +This value may be queried with \%\f3glGetConvolutionParameter\fP +using target \%\f3GL_CONVOLUTION_2D\fP and name +\%\f3GL_MAX_CONVOLUTION_WIDTH\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2height\fP is less than zero or greater +than the maximum supported value. +This value may be queried with \%\f3glGetConvolutionParameter\fP +using target \%\f3GL_CONVOLUTION_2D\fP and name +\%\f3GL_MAX_CONVOLUTION_HEIGHT\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glCopyConvolutionFilter2D\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetConvolutionParameter\fP, \%\f3glGetConvolutionFilter\fP +.SH SEE ALSO +\%\f3glConvolutionFilter2D(3G)\fP, +\%\f3glConvolutionParameter(3G)\fP, +\%\f3glPixelTransfer(3G)\fP Index: xc/doc/man/GL/gl/copypixels.3gl diff -u /dev/null xc/doc/man/GL/gl/copypixels.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/copypixels.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,249 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 copypixel +.ds Xs 10756 11 copypixels.gl +.TH GLCOPYPIXELS 3G +.SH NAME +.B "glCopyPixels +\- copy pixels in the frame buffer + +.SH C SPECIFICATION +void \f3glCopyPixels\fP( +GLint \fIx\fP, +.nf +.ta \w'\f3void \fPglCopyPixels( 'u + GLint \fIy\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP, + GLenum \fItype\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2x\fP\ \f2y\fP\ \ 'u +\f2x\fP, \f2y\fP +Specify the window coordinates of the lower left corner +of the rectangular region of pixels to be copied. +.TP +\f2width\fP, \f2height\fP +Specify the dimensions of the rectangular region of pixels to be copied. +Both must be nonnegative. +.TP +\f2type\fP +Specifies whether color values, +depth values, +or stencil values are to be copied. +Symbolic constants +\%\f3GL_COLOR\fP, +\%\f3GL_DEPTH\fP, +and \%\f3GL_STENCIL\fP are accepted. +.SH DESCRIPTION +\%\f3glCopyPixels\fP copies a screen-aligned rectangle of pixels +from the specified frame buffer location to a region relative to the +current raster position. +Its operation is well defined only if the entire pixel source region +is within the exposed portion of the window. +Results of copies from outside the window, +or from regions of the window that are not exposed, +are hardware dependent and undefined. +.P +\f2x\fP and \f2y\fP specify the window coordinates of +the lower left corner of the rectangular region to be copied. +\f2width\fP and \f2height\fP specify the dimensions of the +rectangular region to be copied. +Both \f2width\fP and \f2height\fP must not be negative. +.P +Several parameters control the processing of the pixel data +while it is being copied. +These parameters are set with three commands: +\%\f3glPixelTransfer\fP, +\%\f3glPixelMap\fP, and +\%\f3glPixelZoom\fP. +This reference page describes the effects on \%\f3glCopyPixels\fP of most, +but not all, of the parameters specified by these three commands. +.P +\%\f3glCopyPixels\fP copies values from each pixel with the lower left-hand corner at +(\f2x\fP + $i$, \f2y\fP + $j$) for 0 \(<= $i$ < \f2width\fP +and 0 \(<= $j$ < \f2height\fP. +This pixel is said to be the $i$th pixel in the $j$th row. +Pixels are copied in row order from the lowest to the highest row, +left to right in each row. +.P +\f2type\fP specifies whether color, depth, or stencil data is to be copied. +The details of the transfer for each data type are as follows: +.TP 15 +\%\f3GL_COLOR\fP +Indices or RGBA colors are read from the buffer currently specified as the +read source buffer (see \%\f3glReadBuffer\fP). +If the GL is in color index mode, +each index that is read from this buffer is converted +to a fixed-point with an unspecified +number of bits to the right of the binary point. +Each index is then shifted left by \%\f3GL_INDEX_SHIFT\fP bits, +and added to \%\f3GL_INDEX_OFFSET\fP. +If \%\f3GL_INDEX_SHIFT\fP is negative, +the shift is to the right. +In either case, zero bits fill otherwise unspecified bit locations in the +result. +If \%\f3GL_MAP_COLOR\fP is true, +the index is replaced with the value that it references in lookup table +\%\f3GL_PIXEL_MAP_I_TO_I\fP. +Whether the lookup replacement of the index is done or not, +the integer part of the index is then ANDed with $2 sup b -1$, +where $b$ is the number of bits in a color index buffer. +.IP +If the GL is in RGBA mode, +the red, green, blue, and alpha components of each pixel that is read +are converted to an internal floating-point with unspecified +precision. +The conversion maps the largest representable component value to 1.0, +and component value 0 to 0.0. +The resulting floating-point color values are then multiplied +by \%\f3GL_c_SCALE\fP and added to \%\f3GL_c_BIAS\fP, +where \f2c\fP is RED, GREEN, BLUE, and ALPHA +for the respective color components. +The results are clamped to the range [0,1]. +If \%\f3GL_MAP_COLOR\fP is true, +each color component is scaled by the size of lookup table +\%\f3GL_PIXEL_MAP_c_TO_c\fP, +then replaced by the value that it references in that table. +\f2c\fP is R, G, B, or A. +.IP +If the \%\f3GL_ARB_imaging\fP extension is supported, the color values may +be +additionally processed by color-table lookups, color-matrix +transformations, and convolution filters. +.IP +The GL then converts the resulting indices or RGBA colors to fragments +by attaching the current raster position \f2z\fP coordinate and +texture coordinates to each pixel, +then assigning window coordinates +($x sub r ~+~ i , y sub r ~+~ j$), +where ($x sub r , y sub r$) is the current raster position, +and the pixel was the $i$th pixel in the $j$th row. +These pixel fragments are then treated just like the fragments generated by +rasterizing points, lines, or polygons. +Texture mapping, +fog, +and all the fragment operations are applied before the fragments are written +to the frame buffer. +.TP +\%\f3GL_DEPTH\fP +Depth values are read from the depth buffer and +converted directly to an internal floating-point +with unspecified precision. +The resulting floating-point depth value is then multiplied +by \%\f3GL_DEPTH_SCALE\fP and added to \%\f3GL_DEPTH_BIAS\fP. +The result is clamped to the range [0,1]. +.IP +The GL then converts the resulting depth components to fragments +by attaching the current raster position color or color index and +texture coordinates to each pixel, +then assigning window coordinates +($x sub r ~+~ i , y sub r ~+~ j$), +where ($x sub r , y sub r$) is the current raster position, +and the pixel was the $i$th pixel in the $j$th row. +These pixel fragments are then treated just like the fragments generated by +rasterizing points, lines, or polygons. +Texture mapping, +fog, +and all the fragment operations are applied before the fragments are written +to the frame buffer. +.TP +\%\f3GL_STENCIL\fP +Stencil indices are read from the stencil buffer and +converted to an internal fixed-point +with an unspecified number of bits to the right of the binary point. +Each fixed-point index is then shifted left by \%\f3GL_INDEX_SHIFT\fP bits, +and added to \%\f3GL_INDEX_OFFSET\fP. +If \%\f3GL_INDEX_SHIFT\fP is negative, +the shift is to the right. +In either case, zero bits fill otherwise unspecified bit locations in the +result. +If \%\f3GL_MAP_STENCIL\fP is true, +the index is replaced with the value that it references in lookup table +\%\f3GL_PIXEL_MAP_S_TO_S\fP. +Whether the lookup replacement of the index is done or not, +the integer part of the index is then ANDed with $2 sup b -1$, +where $b$ is the number of bits in the stencil buffer. +The resulting stencil indices are then written to the stencil buffer +such that the index read from the $i$th location of the $j$th row +is written to location +($x sub r ~+~ i , y sub r ~+~ j$), +where ($x sub r , y sub r$) is the current raster position. +Only the pixel ownership test, +the scissor test, +and the stencil writemask affect these write operations. +.P +The rasterization described thus far assumes pixel zoom factors of 1.0. +If +.br +\%\f3glPixelZoom\fP is used to change the $x$ and $y$ pixel zoom factors, +pixels are converted to fragments as follows. +If ($x sub r$, $y sub r$) is the current raster position, +and a given pixel is in the $i$th location in the $j$th row of the source +pixel rectangle, +then fragments are generated for pixels whose centers are in the rectangle +with corners at +.P +.ce +($x sub r ~+~ zoom sub x^ i$, $y sub r ~+~ zoom sub y^j$) +.sp .5 +.ce + and +.sp .5 +.ce +($x sub r ~+~ zoom sub x^ (i ~+~ 1)$, $y sub r ~+~ zoom sub y^ ( j ~+~ 1 )$) +.P +where $zoom sub x$ is the value of \%\f3GL_ZOOM_X\fP and +$zoom sub y$ is the value of \%\f3GL_ZOOM_Y\fP. +.SH EXAMPLES +To copy the color pixel in the lower left corner of the window to the current raster position, +use +.Ex +glCopyPixels(0, 0, 1, 1, \%\f3GL_COLOR\fP); +.En +.SH NOTES +Modes specified by \%\f3glPixelStore\fP have no effect on the operation +of \%\f3glCopyPixels\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if either \f2width\fP or \f2height\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is \%\f3GL_DEPTH\fP +and there is no depth buffer. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is \%\f3GL_STENCIL\fP +and there is no stencil buffer. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glCopyPixels\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_POSITION\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_POSITION_VALID\fP +.SH SEE ALSO +\%\f3glColorTable(3G)\fP, +\%\f3glConvolutionFilter1D(3G)\fP, +\%\f3glConvolutionFilter2D(3G)\fP, +\%\f3glDepthFunc(3G)\fP, +\%\f3glDrawBuffer(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glMatrixMode(3G)\fP, +\%\f3glPixelMap(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glPixelZoom(3G)\fP, +\%\f3glRasterPos(3G)\fP, +\%\f3glReadBuffer(3G)\fP, +\%\f3glReadPixels(3G)\fP, +\%\f3glSeparableFilter2D(3G)\fP, +\%\f3glStencilFunc(3G)\fP Index: xc/doc/man/GL/gl/copyteximage1d.3gl diff -u /dev/null xc/doc/man/GL/gl/copyteximage1d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/copyteximage1d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,173 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 copytexim +.ds Xs 48778 7 copyteximage1d.gl +.TH GLCOPYTEXIMAGE1D 3G +.SH NAME +.B "glCopyTexImage1D +\- copy pixels into a 1D texture image + +.SH C SPECIFICATION +void \f3glCopyTexImage1D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglCopyTexImage1D( 'u + GLint \fIlevel\fP, + GLenum \fIinternalformat\fP, + GLint \fIx\fP, + GLint \fIy\fP, + GLsizei \fIwidth\fP, + GLint \fIborder\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIinternalformat\fP\ \ 'u +\f2target\fP +Specifies the target texture. +Must be \%\f3GL_TEXTURE_1D\fP. +.TP +\f2level\fP +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +.TP +\f2internalformat\fP +Specifies the internal of the texture. +Must be one of the following symbolic constants: +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_INTENSITY4\fP, +\%\f3GL_INTENSITY8\fP, +\%\f3GL_INTENSITY12\fP, +\%\f3GL_INTENSITY16\fP, +\%\f3GL_RGB\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, or +\%\f3GL_RGBA16\fP. +.TP +\f2x\fP, \f2y\fP +Specify the window coordinates of the left corner +of the row of pixels to be copied. +.TP +\f2width\fP +Specifies the width of the texture image. +Must be 0 or $2 sup n ~+~ 2*$\f2border\fP for some integer $n$. +The height of the texture image is 1. +.TP +\f2border\fP +Specifies the width of the border. +Must be either 0 or 1. +.SH DESCRIPTION +\%\f3glCopyTexImage1D\fP defines a one-dimensional texture image with pixels from the current +\%\f3GL_READ_BUFFER\fP. +.P +The screen-aligned pixel row with left corner at $("x", "y")$ +and with a length of $"width"~+~2~*~"border"$ +defines the texture array +at the mipmap level specified by \f2level\fP. +\f2internalformat\fP specifies the internal of the texture array. +.P +The pixels in the row are processed exactly as if +\%\f3glCopyPixels\fP had been called, but the process stops just before +final conversion. +At this point all pixel component values are clamped to the range [0,\ 1] +and then converted to the texture's internal for storage in the texel +array. +.P +Pixel ordering is such that lower $x$ screen coordinates correspond to +lower texture coordinates. +.P +If any of the pixels within the specified row of the current +\%\f3GL_READ_BUFFER\fP are outside the window associated with the current +rendering context, then the values obtained for those pixels are undefined. +.SH NOTES +\%\f3glCopyTexImage1D\fP is available only if the GL version is 1.1 or greater. +.P +Texturing has no effect in color index mode. +.P +1, 2, 3, and 4 are not accepted values for \f2internalformat\fP. +.P +An image with 0 width indicates a NULL texture. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, the RGBA components +copied from the framebuffer may be processed by the imaging pipeline. See +\%\f3glTexImage1D\fP for specific details. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not one of the +allowable values. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater +than $log sub 2 max$, +where $max$ is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2internalformat\fP is not an +allowable value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP is less than 0 +or greater than +2 + \%\f3GL_MAX_TEXTURE_SIZE\fP, +or if it cannot be represented as $2 sup n ~+~ 2~*~("border")$ +for some integer value of \f2n\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2border\fP is not 0 or 1. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glCopyTexImage1D\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexImage\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_1D\fP +.SH SEE ALSO +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +.br +\%\f3glTexParameter(3G)\fP Index: xc/doc/man/GL/gl/copyteximage2d.3gl diff -u /dev/null xc/doc/man/GL/gl/copyteximage2d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/copyteximage2d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,179 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 copytexim +.ds Xs 15515 7 copyteximage2d.gl +.TH GLCOPYTEXIMAGE2D 3G +.SH NAME +.B "glCopyTexImage2D +\- copy pixels into a 2D texture image + +.SH C SPECIFICATION +void \f3glCopyTexImage2D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglCopyTexImage2D( 'u + GLint \fIlevel\fP, + GLenum \fIinternalformat\fP, + GLint \fIx\fP, + GLint \fIy\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP, + GLint \fIborder\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIinternalformat\fP\ \ 'u +\f2target\fP +Specifies the target texture. +Must be \%\f3GL_TEXTURE_2D\fP. +.TP +\f2level\fP +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +.TP +\f2internalformat\fP +Specifies the internal of the texture. +Must be one of the following symbolic constants: +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_INTENSITY4\fP, +\%\f3GL_INTENSITY8\fP, +\%\f3GL_INTENSITY12\fP, +\%\f3GL_INTENSITY16\fP, +\%\f3GL_RGB\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, or +\%\f3GL_RGBA16\fP. +.TP +\f2x\fP, \f2y\fP +Specify the window coordinates of the lower left corner +of the rectangular region of pixels to be copied. +.TP +\f2width\fP +Specifies the width of the texture image. +Must be 0 or $2 sup n ~+~ 2*$\f2border\fP for some integer $n$. +.TP +\f2height\fP +Specifies the height of the texture image. +Must be 0 or $2 sup m ~+~ 2*$\f2border\fP for some integer $m$. +.TP +\f2border\fP +Specifies the width of the border. +Must be either 0 or 1. +.SH DESCRIPTION +\%\f3glCopyTexImage2D\fP defines a two-dimensional texture image with pixels from the current +\%\f3GL_READ_BUFFER\fP. +.P +The screen-aligned pixel rectangle with lower left corner at (\f2x\fP, +\f2y\fP) and with a width of \f2width\fP$~+~2~*~$\f2border\fP and a height of +\f2height\fP$~+~2~*~$\f2border\fP +defines the texture array +at the mipmap level specified by \f2level\fP. +\f2internalformat\fP specifies the internal of the texture array. +.P +The pixels in the rectangle are processed exactly as if +\%\f3glCopyPixels\fP had been called, but the process stops just before +final conversion. +At this point all pixel component values are clamped to the range $[0,1]$ +and then converted to the texture's internal for storage in the texel +array. +.P +Pixel ordering is such that lower $x$ and $y$ screen coordinates correspond to +lower $s$ and $t$ texture coordinates. +.P +If any of the pixels within the specified rectangle of the current +\%\f3GL_READ_BUFFER\fP are outside the window associated with the current +rendering context, then the values obtained for those pixels are undefined. +.P +.SH NOTES +\%\f3glCopyTexImage2D\fP is available only if the GL version is 1.1 or greater. +.P +Texturing has no effect in color index mode. +.P +1, 2, 3, and 4 are not accepted values for \f2internalformat\fP. +.P +An image with height or width of 0 indicates a NULL texture. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, the RGBA components +read from the framebuffer may be processed by the imaging pipeline. See +\%\f3glTexImage1D\fP for specific details. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_TEXTURE_2D\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater +than $log sub 2 max$, +where $max$ is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP or \f2height\fP is less than 0, +greater than $2~+~$\%\f3GL_MAX_TEXTURE_SIZE\fP, or if \f2width\fP or \f2height\fP cannot be +represented as $2 sup k ~+~ 2~*~$\f2border\fP for some integer +$k$. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2border\fP is not 0 or 1. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2internalformat\fP is not one of the +allowable values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glCopyTexImage2D\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexImage\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_2D\fP +.SH SEE ALSO +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +.br +\%\f3glTexParameter(3G)\fP + + Index: xc/doc/man/GL/gl/copytexsubimage1d.3gl diff -u /dev/null xc/doc/man/GL/gl/copytexsubimage1d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/copytexsubimage1d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,131 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 copytexsu +.ds Xs 28384 6 copytexsubimage1d.gl +.TH GLCOPYTEXSUBIMAGE1D 3G +.SH NAME +.B "glCopyTexSubImage1D +\- copy a one-dimensional texture subimage + +.SH C SPECIFICATION +void \f3glCopyTexSubImage1D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglCopyTexSubImage1D( 'u + GLint \fIlevel\fP, + GLint \fIxoffset\fP, + GLint \fIx\fP, + GLint \fIy\fP, + GLsizei \fIwidth\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIxoffset\fP\ \ 'u +\f2target\fP +Specifies the target texture. +Must be \%\f3GL_TEXTURE_1D\fP. +.TP +\f2level\fP +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +.TP +\f2xoffset\fP +Specifies the texel offset within the texture array. +.TP +\f2x\fP, \f2y\fP +Specify the window coordinates of the left corner +of the row of pixels to be copied. +.TP +\f2width\fP +Specifies the width of the texture subimage. +.SH DESCRIPTION +\%\f3glCopyTexSubImage1D\fP replaces a portion of a one-dimensional +texture image with pixels from the current \%\f3GL_READ_BUFFER\fP (rather +than from main memory, as is the case for \%\f3glTexSubImage1D\fP). +.P +The screen-aligned pixel row with left corner at (\f2x\fP,\ \f2y\fP), and with +length \f2width\fP replaces the portion of the +texture array with x indices \f2xoffset\fP through $"xoffset" ~+~ "width" ~-~ 1$, +inclusive. The destination in the texture array may not +include any texels outside the texture array as it was +originally specified. +.P +The pixels in the row are processed exactly as if +\%\f3glCopyPixels\fP had been called, but the process stops just before +final conversion. +At this point all pixel component values are clamped to the range [0,\ 1] +and then converted to the texture's internal for storage in the texel +array. +.P +It is not an error to specify a subtexture with zero width, but +such a specification has no effect. +If any of the pixels within the specified row of the current +\%\f3GL_READ_BUFFER\fP are outside the read window associated with the current +rendering context, then the values obtained for those pixels are undefined. +.P +No change is made to the \f2internalformat\fP, \f2width\fP, +or \f2border\fP parameters of the specified texture +array or to texel values outside the specified subregion. +.SH NOTES +\%\f3glCopyTexSubImage1D\fP is available only if the GL version is 1.1 or greater. +.P +Texturing has no effect in color index mode. +.P +\%\f3glPixelStore\fP and \%\f3glPixelTransfer\fP modes affect texture images +in exactly the way they affect \%\f3glDrawPixels\fP. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, the RGBA components +copied from the framebuffer may be processed by the imaging pipeline. See +\%\f3glTexImage1D\fP for specific details. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_TEXTURE_1D\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if the texture array has not +been defined by a previous \%\f3glTexImage1D\fP or \%\f3glCopyTexImage1D\fP operation. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP$>log sub 2$\f2 max\fP, +where \f2max\fP is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2y\fP$ ~<~ ~-b$ +or if \f2width\fP$ ~<~ ~-b$, where $b$ +is the border width of the texture array. +.P +\%\f3GL_INVALID_VALUE\fP is generated if $"xoffset" ~<~ ~-b$, or +$("xoffset"~+~"width") ~>~ (w-b)$, +where $w$ is the \%\f3GL_TEXTURE_WIDTH\fP, and $b$ is the \%\f3GL_TEXTURE_BORDER\fP +of the texture image being modified. +Note that $w$ includes twice the border width. +.P +.SH ASSOCIATED GETS +\%\f3glGetTexImage\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_1D\fP +.SH SEE ALSO +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glReadBuffer(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP Index: xc/doc/man/GL/gl/copytexsubimage2d.3gl diff -u /dev/null xc/doc/man/GL/gl/copytexsubimage2d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/copytexsubimage2d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,151 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 copytexsu +.ds Xs 21640 7 copytexsubimage2d.gl +.TH GLCOPYTEXSUBIMAGE2D 3G +.SH NAME +.B "glCopyTexSubImage2D +\- copy a two-dimensional texture subimage + +.SH C SPECIFICATION +void \f3glCopyTexSubImage2D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglCopyTexSubImage2D( 'u + GLint \fIlevel\fP, + GLint \fIxoffset\fP, + GLint \fIyoffset\fP, + GLint \fIx\fP, + GLint \fIy\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIxoffset\fP\ \ 'u +\f2target\fP +Specifies the target texture. +Must be \%\f3GL_TEXTURE_2D\fP. +.TP +\f2level\fP +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +.TP +\f2xoffset\fP +Specifies a texel offset in the x direction within the texture array. +.TP +\f2yoffset\fP +Specifies a texel offset in the y direction within the texture array. +.TP +\f2x\fP, \f2y\fP +Specify the window coordinates of the lower left corner +of the rectangular region of pixels to be copied. +.TP +\f2width\fP +Specifies the width of the texture subimage. +.TP +\f2height\fP +Specifies the height of the texture subimage. +.SH DESCRIPTION +\%\f3glCopyTexSubImage2D\fP replaces a rectangular portion of a two-dimensional +texture image with pixels from the current \%\f3GL_READ_BUFFER\fP (rather +than from main memory, as is the case for \%\f3glTexSubImage2D\fP). +.P +The screen-aligned pixel rectangle with lower left corner at +(\f2x\fP,\ \f2y\fP) and with +width \f2width\fP and height \f2height\fP replaces the portion of the +texture array with x indices \f2xoffset\fP through \f2xoffset\fP$~+~$\f2width\fP$~-~$1, +inclusive, and y indices \f2yoffset\fP through \f2yoffset\fP$~+~$\f2height\fP$~-~$1, +inclusive, at the mipmap level specified by \f2level\fP. +.P +The pixels in the rectangle are processed exactly as if +\%\f3glCopyPixels\fP had been called, but the process stops just before +final conversion. +At this point, all pixel component values are clamped to the range [0,\ 1] +and then converted to the texture's internal for storage in the texel +array. +.P +The destination rectangle in the texture array may not include any texels +outside the texture array as it was originally specified. +It is not an error to specify a subtexture with zero width or height, but +such a specification has no effect. +.P +If any of the pixels within the specified rectangle of the current +\%\f3GL_READ_BUFFER\fP are outside the read window associated with the current +rendering context, then the values obtained for those pixels are undefined. +.P +No change is made to the \f2internalformat\fP, \f2width\fP, +\f2height\fP, or \f2border\fP parameters of the specified texture +array or to texel values outside the specified subregion. +.SH NOTES +\%\f3glCopyTexSubImage2D\fP is available only if the GL version is 1.1 or greater. +.P +Texturing has no effect in color index mode. +.P +\%\f3glPixelStore\fP and \%\f3glPixelTransfer\fP modes affect texture images +in exactly the way they affect \%\f3glDrawPixels\fP. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, the RGBA components +read from the framebuffer may be processed by the imaging pipeline. See +\%\f3glTexImage1D\fP for specific details. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_TEXTURE_2D\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if the texture array has not +been defined by a previous \%\f3glTexImage2D\fP or \%\f3glCopyTexImage2D\fP operation. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater +than $log sub 2 max$, +where $max$ is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2x\fP$ ~<~ ~-b$ or if +\f2y\fP$ ~<~ ~-b$, +where $b$ is the border width of the texture array. +.P +\%\f3GL_INVALID_VALUE\fP is generated if $"xoffset" ~<~ -b$, +(\f2xoffset\fP$~+~$\f2width\fP)$~>~(w ~-~b)$, +\f2yoffset\fP$~<~ ~-b$, or +(\f2yoffset\fP$~+~$\f2height\fP)$~>~(h ~-~b)$, +where $w$ is the \%\f3GL_TEXTURE_WIDTH\fP, +$h$ is the \%\f3GL_TEXTURE_HEIGHT\fP, +and $b$ is the \%\f3GL_TEXTURE_BORDER\fP +of the texture image being modified. +Note that $w$ and $h$ +include twice the border width. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glCopyTexSubImage2D\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexImage\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_2D\fP +.SH SEE ALSO +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glReadBuffer(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP Index: xc/doc/man/GL/gl/copytexsubimage3d.3gl diff -u /dev/null xc/doc/man/GL/gl/copytexsubimage3d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/copytexsubimage3d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,158 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 copytexsu +.ds Xs 39423 7 copytexsubimage3d.gl +.TH GLCOPYTEXSUBIMAGE3D 3G +.SH NAME +.B "glCopyTexSubImage3D +\- copy a three-dimensional texture subimage + +.SH C SPECIFICATION +void \f3glCopyTexSubImage3D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglCopyTexSubImage3D( 'u + GLint \fIlevel\fP, + GLint \fIxoffset\fP, + GLint \fIyoffset\fP, + GLint \fIzoffset\fP, + GLint \fIx\fP, + GLint \fIy\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIxoffset\fP\ \ 'u +\f2target\fP +Specifies the target texture. +Must be \%\f3GL_TEXTURE_3D\fP +.TP +\f2level\fP +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +.TP +\f2xoffset\fP +Specifies a texel offset in the x direction within the texture array. +.TP +\f2yoffset\fP +Specifies a texel offset in the y direction within the texture array. +.TP +\f2zoffset\fP +Specifies a texel offset in the z direction within the texture array. +.TP +\f2x\fP, \f2y\fP +Specify the window coordinates of the lower left corner +of the rectangular region of pixels to be copied. +.TP +\f2width\fP +Specifies the width of the texture subimage. +.TP +\f2height\fP +Specifies the height of the texture subimage. +.SH DESCRIPTION +\%\f3glCopyTexSubImage3D\fP replaces a rectangular portion of a three-dimensional +texture image with pixels from the current \%\f3GL_READ_BUFFER\fP (rather +than from main memory, as is the case for \%\f3glTexSubImage3D\fP). +.P +The screen-aligned pixel rectangle with lower left corner at +(\f2x\fP,\ \f2y\fP) and with +width \f2width\fP and height \f2height\fP replaces the portion of the +texture array with x indices \f2xoffset\fP through \f2xoffset\fP$~+~$\f2width\fP$~-~$1, +inclusive, and y indices \f2yoffset\fP through \f2yoffset\fP$~+~$\f2height\fP$~-~$1, +inclusive, at z index \f2zoffset\fP and at the mipmap level specified by \f2level\fP. +.P +The pixels in the rectangle are processed exactly as if +\%\f3glCopyPixels\fP had been called, but the process stops just before +final conversion. +At this point, all pixel component values are clamped to the range [0,\ 1] +and then converted to the texture's internal for storage in the texel +array. +.P +The destination rectangle in the texture array may not include any texels +outside the texture array as it was originally specified. +It is not an error to specify a subtexture with zero width or height, but +such a specification has no effect. +.P +If any of the pixels within the specified rectangle of the current +\%\f3GL_READ_BUFFER\fP are outside the read window associated with the current +rendering context, then the values obtained for those pixels are undefined. +.P +No change is made to the \f2internalformat\fP, \f2width\fP, +\f2height\fP, \f2depth\fP, or \f2border\fP parameters of the specified texture +array or to texel values outside the specified subregion. +.SH NOTES +\%\f3glCopyTexSubImage3D\fP is available only if the GL version is 1.2 or greater. +.P +Texturing has no effect in color index mode. +.P +\%\f3glPixelStore\fP and \%\f3glPixelTransfer\fP modes affect texture images +in exactly the way they affect \%\f3glDrawPixels\fP. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, the RGBA components +copied from the framebuffer may be processed by the imaging pipeline, as +if they were a two-dimensional texture. See \%\f3glTexImage2D\fP for +specific details. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_TEXTURE_3D\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if the texture array has not +been defined by a previous \%\f3glTexImage3D\fP or \%\f3glCopyTexImage3D\fP operation. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater +than $log sub 2^max$, +where $max$ is the returned value of \%\f3GL_MAX_3D_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2x\fP$ ~<~ ~-b$ or if +\f2y\fP$ ~<~ ~-b$, +where $b$ is the border width of the texture array. +.P +\%\f3GL_INVALID_VALUE\fP is generated if $"xoffset" ~<~ -b$, +(\f2xoffset\fP$~+~$\f2width\fP)$~>~(w ~-~b)$, +\f2yoffset\fP$~<~ ~-b$, +(\f2yoffset\fP$~+~$\f2height\fP)$~>~(h ~-~b)$, +\f2zoffset\fP$~<~ ~-b$, or \f2zoffset\fP$~>~(d ~-~b)$, +where $w$ is the \%\f3GL_TEXTURE_WIDTH\fP, +$h$ is the \%\f3GL_TEXTURE_HEIGHT\fP, +$d$ is the \%\f3GL_TEXTURE_DEPTH\fP, +and $b$ is the \%\f3GL_TEXTURE_BORDER\fP +of the texture image being modified. +Note that $w$, $h$, and $d$ +include twice the border width. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glCopyTexSubImage3D\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexImage\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_3D\fP +.SH SEE ALSO +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glReadBuffer(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP Index: xc/doc/man/GL/gl/cullface.3gl diff -u /dev/null xc/doc/man/GL/gl/cullface.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/cullface.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,58 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 cullface. +.ds Xs 63441 4 cullface.gl +.TH GLCULLFACE 3G +.SH NAME +.B "glCullFace +\- specify whether front- or back-facing facets can be culled + +.SH C SPECIFICATION +void \f3glCullFace\fP( +GLenum \fImode\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2mode\fP\ \ 'u +\f2mode\fP +Specifies whether front- or back-facing facets are candidates for culling. +Symbolic constants +\%\f3GL_FRONT\fP, \%\f3GL_BACK\fP, and \%\f3GL_FRONT_AND_BACK\fP are accepted. +The initial value is \%\f3GL_BACK\fP. +.SH DESCRIPTION +\%\f3glCullFace\fP specifies whether front- or back-facing facets are culled +(as specified by \f2mode\fP) when facet culling is enabled. Facet +culling is initially disabled. +To enable and disable facet culling, call the +\%\f3glEnable\fP and \%\f3glDisable\fP commands +with the argument \%\f3GL_CULL_FACE\fP. +Facets include triangles, +quadrilaterals, +polygons, +and rectangles. +.P +\%\f3glFrontFace\fP specifies which of the clockwise and counterclockwise facets +are front-facing and back-facing. +See \%\f3glFrontFace\fP. +.SH NOTES +If \f2mode\fP is \%\f3GL_FRONT_AND_BACK\fP, no facets are drawn, but other +primitives such as points and lines are drawn. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glCullFace\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glIsEnabled\fP with argument \%\f3GL_CULL_FACE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CULL_FACE_MODE\fP +.SH SEE ALSO +\%\f3glEnable(3G)\fP, +\%\f3glFrontFace(3G)\fP Index: xc/doc/man/GL/gl/deletelists.3gl diff -u /dev/null xc/doc/man/GL/gl/deletelists.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/deletelists.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,50 @@ +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 deletelis +.ds Xs 9368 4 deletelists.gl +.TH GLDELETELISTS 3G +.SH NAME +.B "glDeleteLists +\- delete a contiguous group of display lists + +.SH C SPECIFICATION +void \f3glDeleteLists\fP( +GLuint \fIlist\fP, +.nf +.ta \w'\f3void \fPglDeleteLists( 'u + GLsizei \fIrange\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIrange\fP\ \ 'u +\f2list\fP +Specifies the integer name of the first display list to delete. +.TP +\f2range\fP +Specifies the number of display lists to delete. +.SH DESCRIPTION +\%\f3glDeleteLists\fP causes a contiguous group of display lists to be deleted. +\f2list\fP is the name of the first display list to be deleted, +and \f2range\fP is the number of display lists to delete. +All display lists \fId\fP with \f2list\fP \(<= \fId\fP \(<= \f2list\fP + \f2range\fP \- 1 +are deleted. +.P +All storage locations allocated to the specified display lists are freed, +and the names are available for reuse at a later time. +Names within the range that do not have an associated display list are ignored. +If \f2range\fP is 0, nothing happens. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2range\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glDeleteLists\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glCallList(3G)\fP, +\%\f3glCallLists(3G)\fP, +\%\f3glGenLists(3G)\fP, +\%\f3glIsList(3G)\fP, +\%\f3glNewList(3G)\fP Index: xc/doc/man/GL/gl/deletetextures.3gl diff -u /dev/null xc/doc/man/GL/gl/deletetextures.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/deletetextures.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,60 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 deletetex +.ds Xs 39225 4 deletetextures.gl +.TH GLDELETETEXTURES 3G +.SH NAME +.B "glDeleteTextures +\- delete named textures + +.SH C SPECIFICATION +void \f3glDeleteTextures\fP( +GLsizei \fIn\fP, +.nf +.ta \w'\f3void \fPglDeleteTextures( 'u + const GLuint \fI*textures\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fItextures\fP\ \ 'u +\f2n\fP +Specifies the number of textures to be deleted. +.TP +\f2textures\fP +Specifies an array of textures to be deleted. +.SH DESCRIPTION +\%\f3glDeleteTextures\fP deletes \f2n\fP textures named by the elements of the array \f2textures\fP. +After a texture is deleted, it has no contents or dimensionality, +and its name is free for reuse (for example by \%\f3glGenTextures\fP). +If a texture that is currently bound is deleted, the binding reverts +to 0 (the default texture). +.P +\%\f3glDeleteTextures\fP silently ignores 0's and names that do not correspond to +existing textures. +.SH NOTES +\%\f3glDeleteTextures\fP is available only if the GL version is 1.1 or greater. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2n\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glDeleteTextures\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glIsTexture\fP +.SH SEE ALSO +\%\f3glAreTexturesResident(3G)\fP, +\%\f3glBindTexture(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glGenTextures(3G)\fP, +\%\f3glGet(3G)\fP, +\%\f3glGetTexParameter(3G)\fP, +\%\f3glPrioritizeTextures(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexParameter(3G)\fP Index: xc/doc/man/GL/gl/depthfunc.3gl diff -u /dev/null xc/doc/man/GL/gl/depthfunc.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/depthfunc.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,88 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 depthfunc +.ds Xs 34310 5 depthfunc.gl +.TH GLDEPTHFUNC 3G +.SH NAME +.B "glDepthFunc +\- specify the value used for depth buffer comparisons + +.SH C SPECIFICATION +void \f3glDepthFunc\fP( +GLenum \fIfunc\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2func\fP\ \ 'u +\f2func\fP +Specifies the depth comparison function. +Symbolic constants +\%\f3GL_NEVER\fP, +\%\f3GL_LESS\fP, +\%\f3GL_EQUAL\fP, +\%\f3GL_LEQUAL\fP, +\%\f3GL_GREATER\fP, +\%\f3GL_NOTEQUAL\fP, +\%\f3GL_GEQUAL\fP, and +\%\f3GL_ALWAYS\fP are accepted. +The initial value is \%\f3GL_LESS\fP. +.SH DESCRIPTION +\%\f3glDepthFunc\fP specifies the function used to compare each incoming pixel depth value +with the depth value present in the depth buffer. +The comparison is performed only if depth testing is enabled. +(See \%\f3glEnable\fP and \%\f3glDisable\fP of \%\f3GL_DEPTH_TEST\fP.) +.P +\f2func\fP specifies the conditions under which the pixel will be drawn. +The comparison functions are as follows: +.TP 16 +\%\f3GL_NEVER\fP +Never passes. +.TP +\%\f3GL_LESS\fP +Passes if the incoming depth value is less than the stored depth value. +.TP +\%\f3GL_EQUAL\fP +Passes if the incoming depth value is equal to the stored depth value. +.TP +\%\f3GL_LEQUAL\fP +Passes if the incoming depth value is less than or equal to +the stored depth value. +.TP +\%\f3GL_GREATER\fP +Passes if the incoming depth value is greater than the stored depth value. +.TP +\%\f3GL_NOTEQUAL\fP +Passes if the incoming depth value is not equal to the stored depth value. +.TP +\%\f3GL_GEQUAL\fP +Passes if the incoming depth value is greater than or equal to +the stored depth value. +.TP +\%\f3GL_ALWAYS\fP +Always passes. +.P +The initial value of \f2func\fP is \%\f3GL_LESS\fP. +Initially, depth testing is disabled. +.NOTES +Even if the depth buffer exists and the depth mask is non-zero, the +depth buffer is not updated if the depth test is disabled. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2func\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glDepthFunc\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_DEPTH_FUNC\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_DEPTH_TEST\fP +.SH SEE ALSO +\%\f3glDepthRange(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glPolygonOffset(3G)\fP Index: xc/doc/man/GL/gl/depthmask.3gl diff -u /dev/null xc/doc/man/GL/gl/depthmask.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/depthmask.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,46 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 depthmask +.ds Xs 13631 3 depthmask.gl +.TH GLDEPTHMASK 3G +.SH NAME +.B "glDepthMask +\- enable or disable writing into the depth buffer + +.SH C SPECIFICATION +void \f3glDepthMask\fP( +GLboolean \fIflag\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2flag\fP\ \ 'u +\f2flag\fP +Specifies whether the depth buffer is enabled for writing. +If \f2flag\fP is \%\f3GL_FALSE\fP, +depth buffer writing is disabled. +Otherwise, it is enabled. +Initially, depth buffer writing is enabled. +.SH DESCRIPTION +\%\f3glDepthMask\fP specifies whether the depth buffer is enabled for writing. +If \f2flag\fP is \%\f3GL_FALSE\fP, +depth buffer writing is disabled. +Otherwise, it is enabled. +Initially, depth buffer writing is enabled. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glDepthMask\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_DEPTH_WRITEMASK\fP +.SH SEE ALSO +\%\f3glColorMask(3G)\fP, +\%\f3glDepthFunc(3G)\fP, +\%\f3glDepthRange(3G)\fP, +\%\f3glIndexMask(3G)\fP, +\%\f3glStencilMask(3G)\fP Index: xc/doc/man/GL/gl/depthrange.3gl diff -u /dev/null xc/doc/man/GL/gl/depthrange.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/depthrange.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,65 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 depthrang +.ds Xs 41369 4 depthrange.gl +.TH GLDEPTHRANGE 3G +.SH NAME +.B "glDepthRange +\- specify mapping of depth values from normalized device coordinates to window coordinates + +.SH C SPECIFICATION +void \f3glDepthRange\fP( +GLclampd \fInear_val\fP, +.nf +.ta \w'\f3void \fPglDepthRange( 'u + GLclampd \fIfar_val\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2near_val\fP\ \ 'u +\f2near_val\fP +Specifies the mapping of the near clipping plane to window coordinates. +The initial value is 0. +.TP +\f2far_val\fP +Specifies the mapping of the far clipping plane to window coordinates. +The initial value is 1. +.SH DESCRIPTION +After clipping and division by \f2w\fP, +depth coordinates range from \-1 to 1, +corresponding to the near and far clipping planes. +\%\f3glDepthRange\fP specifies a linear mapping of the normalized depth coordinates +in this range to window depth coordinates. +Regardless of the actual depth buffer implementation, +window coordinate depth values are treated as though they range +from 0 through 1 (like color components). +Thus, +the values accepted by \%\f3glDepthRange\fP are both clamped to this range +before they are accepted. +.P +The setting of (0,1) maps the near plane to 0 and +the far plane to 1. +With this mapping, +the depth buffer range is fully utilized. +.SH NOTES +It is not necessary that \f2near_val\fP be less than \f2far_val\fP. +Reverse mappings such as $"near_val" ~=~ 1$, and $"far_val" ~=~ 0$ +are acceptable. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glDepthRange\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_DEPTH_RANGE\fP +.SH SEE ALSO +\%\f3glDepthFunc(3G)\fP, +\%\f3glPolygonOffset(3G)\fP, +\%\f3glViewport(3G)\fP Index: xc/doc/man/GL/gl/drawarrays.3gl diff -u /dev/null xc/doc/man/GL/gl/drawarrays.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/drawarrays.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,97 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 drawarray +.ds Xs 55233 5 drawarrays.gl +.TH GLDRAWARRAYS 3G +.SH NAME +.B "glDrawArrays +\- render primitives from array data + +.SH C SPECIFICATION +void \f3glDrawArrays\fP( +GLenum \fImode\fP, +.nf +.ta \w'\f3void \fPglDrawArrays( 'u + GLint \fIfirst\fP, + GLsizei \fIcount\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIfirst\fP\ \ 'u +\f2mode\fP +Specifies what kind of primitives to render. +Symbolic constants +\%\f3GL_POINTS\fP, +\%\f3GL_LINE_STRIP\fP, +\%\f3GL_LINE_LOOP\fP, +\%\f3GL_LINES\fP, +\%\f3GL_TRIANGLE_STRIP\fP, +\%\f3GL_TRIANGLE_FAN\fP, +\%\f3GL_TRIANGLES\fP, +\%\f3GL_QUAD_STRIP\fP, +\%\f3GL_QUADS\fP, +and \%\f3GL_POLYGON\fP are accepted. +.TP +\f2first\fP +Specifies the starting index in the enabled arrays. +.TP +\f2count\fP +Specifies the number of indices to be rendered. +.SH DESCRIPTION +\%\f3glDrawArrays\fP specifies multiple geometric primitives +with very few subroutine calls. Instead of calling a GL procedure +to pass each individual vertex, normal, texture coordinate, edge +flag, or color, you can prespecify +separate arrays of vertices, normals, and colors and use them to +construct a sequence of primitives with a single +call to \%\f3glDrawArrays\fP. +.P +When \%\f3glDrawArrays\fP is called, it uses \f2count\fP sequential elements from each +enabled array to construct a sequence of geometric primitives, +beginning with element \f2first\fP. \f2mode\fP specifies what kind of +primitives are constructed, and how the array elements +construct those primitives. If \%\f3GL_VERTEX_ARRAY\fP is not enabled, no +geometric primitives are generated. +.P +Vertex attributes that are modified by \%\f3glDrawArrays\fP have an +unspecified value after \%\f3glDrawArrays\fP returns. For example, if +\%\f3GL_COLOR_ARRAY\fP is enabled, the value of the current color is +undefined after \%\f3glDrawArrays\fP executes. Attributes that aren't +modified remain well defined. +.SH NOTES +\%\f3glDrawArrays\fP is available only if the GL version is 1.1 or greater. +.P +\%\f3glDrawArrays\fP is included in display lists. If \%\f3glDrawArrays\fP is entered into a +display list, +the necessary array data (determined by the array pointers and +enables) is also +entered into the display list. Because the array pointers and +enables are client-side state, their values affect display lists +when the lists are created, not when the lists are executed. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2count\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glDrawArrays\fP is executed between +the execution of \%\f3glBegin\fP and the corresponding \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawElements(3G)\fP, +\%\f3glDrawRangeElements(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glGetPointerv(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glInterleavedArrays(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/drawbuffer.3gl diff -u /dev/null xc/doc/man/GL/gl/drawbuffer.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/drawbuffer.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,141 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 drawbuffe +.ds Xs 38775 6 drawbuffer.gl +.TH GLDRAWBUFFER 3G +.SH NAME +.B "glDrawBuffer +\- specify which color buffers are to be drawn into + +.SH C SPECIFICATION +void \f3glDrawBuffer\fP( +GLenum \fImode\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2mode\fP\ \ 'u +\f2mode\fP +Specifies up to four color buffers to be drawn into. +Symbolic constants +\%\f3GL_NONE\fP, +\%\f3GL_FRONT_LEFT\fP, +\%\f3GL_FRONT_RIGHT\fP, +\%\f3GL_BACK_LEFT\fP, +\%\f3GL_BACK_RIGHT\fP, +\%\f3GL_FRONT\fP, +\%\f3GL_BACK\fP, +\%\f3GL_LEFT\fP, +\%\f3GL_RIGHT\fP, +\%\f3GL_FRONT_AND_BACK\fP, and +\%\f3GL_AUX\fP\f2i\fP, +where \f2i\fP is between 0 and +.br +``\%\f3GL_AUX_BUFFERS\fP'' \-1, +are accepted (\%\f3GL_AUX_BUFFERS\fP is not the upper limit; use \%\f3glGet\fP +to query the number of available aux buffers.) +The initial value is \%\f3GL_FRONT\fP for single-buffered contexts, +and \%\f3GL_BACK\fP for double-buffered contexts. +.SH DESCRIPTION +When colors are written to the frame buffer, +they are written into the color buffers specified by \%\f3glDrawBuffer\fP. +The specifications are as follows: +.TP 25 +\%\f3GL_NONE\fP +No color buffers are written. +.TP +\%\f3GL_FRONT_LEFT\fP +Only the front left color buffer is written. +.TP +\%\f3GL_FRONT_RIGHT\fP +Only the front right color buffer is written. +.TP +\%\f3GL_BACK_LEFT\fP +Only the back left color buffer is written. +.TP +\%\f3GL_BACK_RIGHT\fP +Only the back right color buffer is written. +.TP +\%\f3GL_FRONT\fP +Only the front left and front right color buffers are written. +If there is no front right color buffer, +only the front left color buffer is written. +.TP +\%\f3GL_BACK\fP +Only the back left and back right color buffers are written. +If there is no back right color buffer, +only the back left color buffer is written. +.TP +\%\f3GL_LEFT\fP +Only the front left and back left color buffers are written. +If there is no back left color buffer, +only the front left color buffer is written. +.TP +\%\f3GL_RIGHT\fP +Only the front right and back right color buffers are written. +If there is no back right color buffer, +only the front right color buffer is written. +.BP +.TP +\%\f3GL_FRONT_AND_BACK\fP +All the front and back color buffers +(front left, front right, back left, back right) +are written. +If there are no back color buffers, +only the front left and front right color buffers are written. +If there are no right color buffers, +only the front left and back left color buffers are written. +If there are no right or back color buffers, +only the front left color buffer is written. +.TP +\%\f3GL_AUX\fP\f2i\fP +Only auxiliary color buffer \f2i\fP is written. +.P +If more than one color buffer is selected for drawing, +then blending or logical operations are computed and applied independently +for each color buffer and can produce different results in each buffer. +.P +Monoscopic contexts include only +.I left +buffers, and stereoscopic contexts include both +.I left +and +.I right +buffers. +Likewise, single-buffered contexts include only +.I front +buffers, and double-buffered contexts include both +.I front +and +.I back +buffers. +The context is selected at GL initialization. +.SH NOTES +It is always the case that \%\f3GL_AUX\fP$i$ = \%\f3GL_AUX0\fP + $i$. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if none of the buffers indicated +by \f2mode\fP exists. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glDrawBuffer\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_DRAW_BUFFER\fP +.br +\%\f3glGet\fP with argument \%\f3GL_AUX_BUFFERS\fP +.SH SEE ALSO +\%\f3glBlendFunc(3G)\fP, +\%\f3glColorMask(3G)\fP, +\%\f3glIndexMask(3G)\fP, +\%\f3glLogicOp(3G)\fP, +\%\f3glReadBuffer(3G)\fP Index: xc/doc/man/GL/gl/drawelements.3gl diff -u /dev/null xc/doc/man/GL/gl/drawelements.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/drawelements.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,105 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 draweleme +.ds Xs 17577 5 drawelements.gl +.TH GLDRAWELEMENTS 3G +.SH NAME +.B "glDrawElements +\- render primitives from array data + +.SH C SPECIFICATION +void \f3glDrawElements\fP( +GLenum \fImode\fP, +.nf +.ta \w'\f3void \fPglDrawElements( 'u + GLsizei \fIcount\fP, + GLenum \fItype\fP, + const GLvoid \fI*indices\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIindices\fP\ \ 'u +\f2mode\fP +Specifies what kind of primitives to render. +Symbolic constants +\%\f3GL_POINTS\fP, +\%\f3GL_LINE_STRIP\fP, +\%\f3GL_LINE_LOOP\fP, +\%\f3GL_LINES\fP, +\%\f3GL_TRIANGLE_STRIP\fP, +\%\f3GL_TRIANGLE_FAN\fP, +\%\f3GL_TRIANGLES\fP, +\%\f3GL_QUAD_STRIP\fP, +\%\f3GL_QUADS\fP, +and \%\f3GL_POLYGON\fP are accepted. +.TP +\f2count\fP +Specifies the number of elements to be rendered. +.TP +\f2type\fP +Specifies the type of the values in \f2indices\fP. Must be one of +\%\f3GL_UNSIGNED_BYTE\fP, \%\f3GL_UNSIGNED_SHORT\fP, or +\%\f3GL_UNSIGNED_INT\fP. +.TP +\f2indices\fP +Specifies a pointer to the location where the indices are stored. +.SH DESCRIPTION +\%\f3glDrawElements\fP specifies multiple geometric primitives +with very few subroutine calls. Instead of calling a GL function +to pass each individual vertex, normal, texture coordinate, edge +flag, or color, you can prespecify +separate arrays of vertices, normals, and so on and use them to +construct a sequence of primitives with a single +call to \%\f3glDrawElements\fP. +.P +When \%\f3glDrawElements\fP is called, it uses \f2count\fP sequential elements from an +enabled array, starting at \f2indices\fP to construct a sequence of +geometric primitives. \f2mode\fP specifies what kind of primitives are +constructed, and how the array elements construct these primitives. If +more than one array is enabled, each is used. If +\%\f3GL_VERTEX_ARRAY\fP is not enabled, no geometric primitives are +constructed. +.P +Vertex attributes that are modified by \%\f3glDrawElements\fP have an +unspecified value after \%\f3glDrawElements\fP returns. For example, if +\%\f3GL_COLOR_ARRAY\fP is enabled, the value of the current color is +undefined after \%\f3glDrawElements\fP executes. Attributes that aren't +modified maintain their previous values. +.SH NOTES +\%\f3glDrawElements\fP is available only if the GL version is 1.1 or greater. +.P +\%\f3glDrawElements\fP is included in display lists. If \%\f3glDrawElements\fP is entered into a +display list, +the necessary array data (determined by the array pointers and +enables) is also +entered into the display list. Because the array pointers and +enables are client-side state, their values affect display lists +when the lists are created, not when the lists are executed. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2count\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glDrawElements\fP is executed between +the execution of \%\f3glBegin\fP and the corresponding \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glDrawRangeElements(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glGetPointerv(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glInterleavedArrays(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertexPointer(3G)\fP + Index: xc/doc/man/GL/gl/drawpixels.3gl diff -u /dev/null xc/doc/man/GL/gl/drawpixels.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/drawpixels.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,545 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 drawpixel +.ds Xs 51793 21 drawpixels.gl +.TH GLDRAWPIXELS 3G +.SH NAME +.B "glDrawPixels +\- write a block of pixels to the frame buffer + +.SH C SPECIFICATION +void \f3glDrawPixels\fP( +GLsizei \fIwidth\fP, +.nf +.ta \w'\f3void \fPglDrawPixels( 'u + GLsizei \fIheight\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + const GLvoid \fI*pixels\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2width\fP\ \f2height\fP\ \ 'u +\f2width\fP, \f2height\fP +Specify the dimensions of the pixel rectangle to be written +into the frame buffer. +.TP +\f2format\fP +Specifies the of the pixel data. +Symbolic constants +\%\f3GL_COLOR_INDEX\fP, +\%\f3GL_STENCIL_INDEX\fP, +\%\f3GL_DEPTH_COMPONENT\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_LUMINANCE\fP, and +\%\f3GL_LUMINANCE_ALPHA\fP are accepted. +.TP +\f2type\fP +Specifies the data type for \f2pixels\fP. +Symbolic constants +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +are accepted. +.TP +\f2pixels\fP +Specifies a pointer to the pixel data. +.SH DESCRIPTION +\%\f3glDrawPixels\fP reads pixel data from memory and writes it into the frame buffer +.br +relative to the current raster position, provided that the raster +position is valid. Use +.br +\%\f3glRasterPos\fP to set the current raster position; use +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_POSITION_VALID\fP +to determine if the specified raster position is valid, and +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_POSITION\fP +to query the raster position. +.P +Several parameters define the encoding of pixel data in memory +and control the processing of the pixel data +before it is placed in the frame buffer. +These parameters are set with four commands: +\%\f3glPixelStore\fP, +\%\f3glPixelTransfer\fP, +\%\f3glPixelMap\fP, and \%\f3glPixelZoom\fP. +This reference page describes the effects on \%\f3glDrawPixels\fP of many, +but not all, of the parameters specified by these four commands. +.P +Data is read from \f2pixels\fP as a sequence of signed or unsigned bytes, +signed or unsigned shorts, signed or unsigned integers, or +single-precision floating-point values, depending on \f2type\fP. +When \f2type\fP is one of \%\f3GL_UNSIGNED_BYTE\fP, \%\f3GL_BYTE\fP, +\%\f3GL_UNSIGNED_SHORT\fP, \%\f3GL_SHORT\fP, \%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, or \%\f3GL_FLOAT\fP each of these bytes, shorts, integers, or +floating-point values is interpreted as one color or depth component, or +one index, depending on \f2format\fP. +When \f2type\fP is one of \%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, \%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, \%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, each unsigned value is interpreted as +containing all the components for a single pixel, with the color +components arranged according to \f2format\fP. +When \f2type\fP is one of \%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, \%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, \%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP, each unsigned value is interpreted +as containing all color components, specified by \f2format\fP, for a single +pixel in a reversed order. Indices are always treated individually. +Color components are treated as groups of one, two, three, or four +values, again based on \f2format\fP. Both individual indices and groups of +components are referred to as pixels. +If \f2type\fP is \%\f3GL_BITMAP\fP, the data must be unsigned bytes, and +\f2format\fP must be either \%\f3GL_COLOR_INDEX\fP or \%\f3GL_STENCIL_INDEX\fP. +Each unsigned byte is treated as eight 1-bit pixels, with bit ordering +determined by \%\f3GL_UNPACK_LSB_FIRST\fP (see \%\f3glPixelStore\fP). +.P +\f2width\fP$~ times ~$\f2height\fP pixels are read from memory, +starting at location \f2pixels\fP. +By default, these pixels are taken from adjacent memory locations, +except that after all \f2width\fP pixels are read, +the read pointer is advanced to the next four-byte boundary. +The four-byte row alignment is specified by \%\f3glPixelStore\fP with +argument \%\f3GL_UNPACK_ALIGNMENT\fP, +and it can be set to one, two, four, or eight bytes. +Other pixel store parameters specify different read pointer advancements, +both before the first pixel is read +and after all \f2width\fP pixels are read. +See the \%\f3glPixelStore\fP reference page for details on these options. +.P +The \f2width\fP$~ times ~$\f2height\fP pixels that are read from memory are +each operated on in the same way, +based on the values of several parameters specified by \%\f3glPixelTransfer\fP +and \%\f3glPixelMap\fP. +The details of these operations, +as well as the target buffer into which the pixels are drawn, +are specific to the of the pixels, +as specified by \f2format\fP. +\f2format\fP can assume one of 13 symbolic values: +.TP 10 +\%\f3GL_COLOR_INDEX\fP +Each pixel is a single value, +a color index. +It is converted to fixed-point , +with an unspecified number of bits to the right of the binary point, +regardless of the memory data type. +Floating-point values convert to true fixed-point values. +Signed and unsigned integer data is converted with all fraction bits +set to 0. +Bitmap data convert to either 0 or 1. +.IP +Each fixed-point index is then shifted left by \%\f3GL_INDEX_SHIFT\fP bits +and added to \%\f3GL_INDEX_OFFSET\fP. +If \%\f3GL_INDEX_SHIFT\fP is negative, +the shift is to the right. +In either case, zero bits fill otherwise unspecified bit locations in the +result. +.IP +If the GL is in RGBA mode, +the resulting index is converted to an RGBA pixel +with the help of the \%\f3GL_PIXEL_MAP_I_TO_R\fP, +\%\f3GL_PIXEL_MAP_I_TO_G\fP, +\%\f3GL_PIXEL_MAP_I_TO_B\fP, +and \%\f3GL_PIXEL_MAP_I_TO_A\fP tables. +If the GL is in color index mode, +and if \%\f3GL_MAP_COLOR\fP is true, +the index is replaced with the value that it references in lookup table +\%\f3GL_PIXEL_MAP_I_TO_I\fP. +Whether the lookup replacement of the index is done or not, +the integer part of the index is then ANDed with $2 sup b -1$, +where $b$ is the number of bits in a color index buffer. +.BP +.IP +The GL then converts the resulting indices or RGBA colors to fragments +by attaching the current raster position \f2z\fP coordinate and +texture coordinates to each pixel, +then assigning $x$ and $y$ window coordinates to the $n$th fragment such that +.sp +.RS +.ce +$x sub n ~=~ x sub r ~+~ n ~ roman mod ~ "width"$ +.sp +.ce +$y sub n ~=~ y sub r ~+~ \(lf n ^/^ "width" ~ \(rf$ +.ce 0 +.sp +.RE +.IP +where ($x sub r , y sub r$) is the current raster position. +These pixel fragments are then treated just like the fragments generated by +rasterizing points, lines, or polygons. +Texture mapping, +fog, +and all the fragment operations are applied before the fragments are written +to the frame buffer. +.TP +\%\f3GL_STENCIL_INDEX\fP +Each pixel is a single value, +a stencil index. +It is converted to fixed-point , +with an unspecified number of bits to the right of the binary point, +regardless of the memory data type. +Floating-point values convert to true fixed-point values. +Signed and unsigned integer data is converted with all fraction bits +set to 0. +Bitmap data convert to either 0 or 1. +.IP +Each fixed-point index is then shifted left by \%\f3GL_INDEX_SHIFT\fP bits, +and added to \%\f3GL_INDEX_OFFSET\fP. +If \%\f3GL_INDEX_SHIFT\fP is negative, +the shift is to the right. +In either case, zero bits fill otherwise unspecified bit locations in the +result. +If \%\f3GL_MAP_STENCIL\fP is true, +the index is replaced with the value that it references in lookup table +\%\f3GL_PIXEL_MAP_S_TO_S\fP. +Whether the lookup replacement of the index is done or not, +the integer part of the index is then ANDed with $2 sup b -1$, +where $b$ is the number of bits in the stencil buffer. +The resulting stencil indices are then written to the stencil buffer +such that the $n$th index is written to location +.P +.RS +.ce +$x sub n ~=~ x sub r ~+~ n ~ roman mod ~ "width"$ +.sp +.ce +$y sub n ~=~ y sub r ~+~ \(lf ~ n / "width" ~ \(rf$ +.fi +.sp +.RE +.IP +where ($x sub r , y sub r$) is the current raster position. +Only the pixel ownership test, +the scissor test, +and the stencil writemask affect these write operations. +.TP +\%\f3GL_DEPTH_COMPONENT\fP +Each pixel is a single-depth component. +Floating-point data is converted directly to an internal floating-point + with unspecified precision. +Signed integer data is mapped linearly to the internal floating-point + such that the most positive representable integer value maps to 1.0, +and the most negative representable value maps to \-1.0. +Unsigned integer data is mapped similarly: +the largest integer value maps to 1.0, +and 0 maps to 0.0. +The resulting floating-point depth value is then multiplied +by \%\f3GL_DEPTH_SCALE\fP and added to \%\f3GL_DEPTH_BIAS\fP. +The result is clamped to the range [0,1]. +.IP +The GL then converts the resulting depth components to fragments +by attaching the current raster position color or color index and +texture coordinates to each pixel, +then assigning $x$ and $y$ window coordinates to the $n$th fragment such that +.P +.RS +.ce +$x sub n ~=~ x sub r ~+~ n ~ roman mod ~ "width"$ +.sp +.ce +$y sub n ~=~ y sub r ~+~ \(lf ~ n / "width" ~ \(rf$ +.ce 0 +.sp +.RE +.IP +where ($x sub r , y sub r$) is the current raster position. +These pixel fragments are then treated just like the fragments generated by +rasterizing points, lines, or polygons. +Texture mapping, +fog, +and all the fragment operations are applied before the fragments are written +to the frame buffer. +.TP +\%\f3GL_RGBA\fP +.TP +\%\f3GL_BGRA\fP +Each pixel is a four-component group: for \%\f3GL_RGBA\fP, the red +component is first, followed by green, followed by blue, followed by +alpha; for \%\f3GL_BGRA\fP the order is blue, green, red and then alpha. +Floating-point values are converted directly to an internal floating-point + with unspecified precision. +Signed integer values are mapped linearly to the internal floating-point + such that the most positive representable integer value maps to 1.0, +and the most negative representable value maps to \-1.0. (Note that +this mapping does not convert 0 precisely to 0.0.) +Unsigned integer data is mapped similarly: +the largest integer value maps to 1.0, +and 0 maps to 0.0. +The resulting floating-point color values are then multiplied +by \%\f3GL_c_SCALE\fP and added to \%\f3GL_c_BIAS\fP, +where \f2c\fP is RED, GREEN, BLUE, and ALPHA +for the respective color components. +The results are clamped to the range [0,1]. +.IP +If \%\f3GL_MAP_COLOR\fP is true, +each color component is scaled by the size of lookup table +\%\f3GL_PIXEL_MAP_c_TO_c\fP, +then replaced by the value that it references in that table. +\f2c\fP is R, G, B, or A respectively. +.BP +.IP +The GL then converts the resulting RGBA colors to fragments +by attaching the current raster position \f2z\fP coordinate and +texture coordinates to each pixel, +then assigning $x$ and $y$ window coordinates to the $n$th fragment such that +.P +.RS +.ce +$x sub n ~=~ x sub r ~+~ n ~ roman mod ~ "width"$ +.sp +.ce +$y sub n ~=~ y sub r ~+~ \(lf ~ n / "width" ~ \(rf$ +.ce 0 +.sp +.RE +.IP +where ($x sub r , y sub r$) is the current raster position. +These pixel fragments are then treated just like the fragments generated by +rasterizing points, lines, or polygons. +Texture mapping, +fog, +and all the fragment operations are applied before the fragments are written +to the frame buffer. +.TP +\%\f3GL_RED\fP +Each pixel is a single red component. +This component is converted to the internal floating-point in +the same way the red component of an RGBA pixel is. It is +then converted to an RGBA pixel with green and blue set to 0, +and alpha set to 1. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.TP +\%\f3GL_GREEN\fP +Each pixel is a single green component. +This component is converted to the internal floating-point in +the same way the green component of an RGBA pixel is. +It is then converted to an RGBA pixel with red and blue set to 0, +and alpha set to 1. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.TP +\%\f3GL_BLUE\fP +Each pixel is a single blue component. +This component is converted to the internal floating-point in +the same way the blue component of an RGBA pixel is. +It is then converted to an RGBA pixel with red and green set to 0, +and alpha set to 1. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.TP +\%\f3GL_ALPHA\fP +Each pixel is a single alpha component. +This component is converted to the internal floating-point in +the same way the alpha component of an RGBA pixel is. +It is then converted to an RGBA pixel with red, green, and blue set to 0. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.BP +.TP +\%\f3GL_RGB\fP +.TP +\%\f3GL_BGR\fP +Each pixel is a three-component group: +red first, followed by green, followed by blue; for \%\f3GL_BGR\fP, the +first component is blue, followed by green and then red. +Each component is converted to the internal floating-point in +the same way the red, green, and blue components of an RGBA pixel are. +The color triple is converted to an RGBA pixel with alpha set to 1. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.TP +\%\f3GL_LUMINANCE\fP +Each pixel is a single luminance component. +This component is converted to the internal floating-point in +the same way the red component of an RGBA pixel is. +It is then converted to an RGBA pixel with red, green, and blue set to the +converted luminance value, +and alpha set to 1. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.TP +\%\f3GL_LUMINANCE_ALPHA\fP +Each pixel is a two-component group: +luminance first, followed by alpha. +The two components are converted to the internal floating-point in +the same way the red component of an RGBA pixel is. +They are then converted to an RGBA pixel with red, green, and blue set to the +converted luminance value, +and alpha set to the converted alpha value. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.P +The following table summarizes the meaning of the valid constants for the +\f2type\fP parameter: +.sp 2 +.TS +center; +lb lb +l l. +_ +Type Corresponding Type +_ +\%\f3GL_UNSIGNED_BYTE\fP unsigned 8-bit integer +\%\f3GL_BYTE\fP signed 8-bit integer +\%\f3GL_BITMAP\fP single bits in unsigned 8-bit integers +\%\f3GL_UNSIGNED_SHORT\fP unsigned 16-bit integer +\%\f3GL_SHORT\fP signed 16-bit integer +\%\f3GL_UNSIGNED_INT\fP unsigned 32-bit integer +\%\f3GL_INT\fP 32-bit integer +\%\f3GL_FLOAT\fP single-precision floating-point +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP unsigned 8-bit integer +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP unsigned 8-bit integer with reversed component ordering +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP unsigned 16-bit integer +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP unsigned 16-bit integer with reversed component ordering +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP unsigned 16-bit integer +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP unsigned 16-bit integer with reversed component ordering +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP unsigned 16-bit integer +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP unsigned 16-bit integer with reversed component ordering +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP unsigned 32-bit integer +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP unsigned 32-bit integer with reversed component ordering +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP unsigned 32-bit integer +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP unsigned 32-bit integer with reversed component ordering +_ +.TE +.sp +.BP +.P +The rasterization described so far assumes pixel zoom factors of 1. +If +.br +\%\f3glPixelZoom\fP is used to change the $x$ and $y$ pixel zoom factors, +pixels are converted to fragments as follows. +If ($x sub r$, $y sub r$) is the current raster position, +and a given pixel is in the $n$th column and $m$th row +of the pixel rectangle, +then fragments are generated for pixels whose centers are in the rectangle +with corners at +.sp +.RS +.ce +($x sub r ~+~ zoom sub x^ n$, $y sub r ~+~ zoom sub y^ m$) +.sp +.ce +($x sub r ~+~ zoom sub x^ (n ~+~ 1)$, $y sub r ~+~ zoom sub y^ ( m ~+~ 1 )$) +.ce 0 +.sp +.RE +.P +where $zoom sub x$ is the value of \%\f3GL_ZOOM_X\fP and +$zoom sub y$ is the value of \%\f3GL_ZOOM_Y\fP. +.SH NOTES +\%\f3GL_BGR\fP and \%\f3GL_BGRA\fP are only valid for \f2format\fP if the GL +version is 1.2 or greater. +.P +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP are only valid for \f2type\fP if the +GL version is 1.2 or greater. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if either \f2width\fP or \f2height\fP is negative. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP or \f2type\fP is not one of +the accepted values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2format\fP is +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGR\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, +or +\%\f3GL_LUMINANCE_ALPHA\fP, +and the GL is in color index mode. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is \%\f3GL_BITMAP\fP and +\f2format\fP is not either \%\f3GL_COLOR_INDEX\fP or \%\f3GL_STENCIL_INDEX\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2format\fP is \%\f3GL_STENCIL_INDEX\fP +and there is no stencil buffer. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glDrawPixels\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2format\fP is one +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, of +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2format\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_POSITION\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_POSITION_VALID\fP +.SH SEE ALSO +\%\f3glAlphaFunc(3G)\fP, +\%\f3glBlendFunc(3G)\fP, +\%\f3glCopyPixels(3G)\fP, +\%\f3glDepthFunc(3G)\fP, +\%\f3glLogicOp(3G)\fP, +\%\f3glPixelMap(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glPixelZoom(3G)\fP, +\%\f3glRasterPos(3G)\fP, +\%\f3glReadPixels(3G)\fP, +\%\f3glScissor(3G)\fP, +\%\f3glStencilFunc(3G)\fP Index: xc/doc/man/GL/gl/drawrangeelements.3gl diff -u /dev/null xc/doc/man/GL/gl/drawrangeelements.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/drawrangeelements.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,132 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 drawrange +.ds Xs 22158 7 drawrangeelements.gl +.TH GLDRAWRANGEELEMENTS 3G +.SH NAME +.B "glDrawRangeElements +\- render primitives from array data + +.SH C SPECIFICATION +void \f3glDrawRangeElements\fP( +GLenum \fImode\fP, +.nf +.ta \w'\f3void \fPglDrawRangeElements( 'u + GLuint \fIstart\fP, + GLuint \fIend\fP, + GLsizei \fIcount\fP, + GLenum \fItype\fP, + const GLvoid \fI*indices\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIindices\fP\ \ 'u +\f2mode\fP +Specifies what kind of primitives to render. +Symbolic constants +\%\f3GL_POINTS\fP, +\%\f3GL_LINE_STRIP\fP, +\%\f3GL_LINE_LOOP\fP, +\%\f3GL_LINES\fP, +\%\f3GL_TRIANGLE_STRIP\fP, +\%\f3GL_TRIANGLE_FAN\fP, +\%\f3GL_TRIANGLES\fP, +\%\f3GL_QUAD_STRIP\fP, +\%\f3GL_QUADS\fP, +and \%\f3GL_POLYGON\fP are accepted. +.TP +\f2start\fP +Specifies the minimum array index contained in \f2indices\fP. +.TP +\f2end\fP +Specifies the maximum array index contained in \f2indices\fP. +.TP +\f2count\fP +Specifies the number of elements to be rendered. +.TP +\f2type\fP +Specifies the type of the values in \f2count\fP. Must be one of +\%\f3GL_UNSIGNED_BYTE\fP, \%\f3GL_UNSIGNED_SHORT\fP, or +\%\f3GL_UNSIGNED_INT\fP. +.TP +\f2indices\fP +Specifies a pointer to the location where the indices are stored. +.SH DESCRIPTION +\%\f3glDrawRangeElements\fP is a restricted form of \%\f3glDrawElements\fP. \f2mode\fP, \f2start\fP, \f2end\fP, +and \f2count\fP match the corresponding arguments to \%\f3glDrawElements\fP, with +the additional constraint that all values in the arrays \f2count\fP must lie +between \f2start\fP and \f2end\fP, inclusive. +.P +Implementations denote recommended maximum amounts of vertex and +.br +index data, +which may be queried by calling \%\f3glGet\fP with argument +\%\f3GL_MAX_ELEMENTS_VERTICES\fP and \%\f3GL_MAX_ELEMENTS_INDICES\fP. +If $"end" ~-~ "start" ~+~ 1$ is greater than the value of +\%\f3GL_MAX_ELEMENTS_VERTICES\fP, or if \f2count\fP is greater than the value of +\%\f3GL_MAX_ELEMENTS_INDICES\fP, then the call may operate at reduced +performance. There is no requirement that all vertices in the range +[\f2start\fP,\ \f2end\fP] be referenced. However, the implementation may +partially process unused vertices, reducing performance from what could +be achieved with an optimal index set. +.P +When \%\f3glDrawRangeElements\fP is called, it uses \f2start\fP sequential elements from an +enabled array, starting at \f2count\fP to construct a sequence of +geometric primitives. \f2mode\fP specifies what kind of primitives are +constructed, and how the array elements construct these primitives. If +more than one array is enabled, each is used. If +\%\f3GL_VERTEX_ARRAY\fP is not enabled, no geometric primitives are +constructed. +.P +Vertex attributes that are modified by \%\f3glDrawRangeElements\fP have an +unspecified value after \%\f3glDrawRangeElements\fP returns. For example, if +\%\f3GL_COLOR_ARRAY\fP is enabled, the value of the current color is +undefined after \%\f3glDrawRangeElements\fP executes. Attributes that aren't +modified maintain their previous values. +.SH NOTES +\%\f3glDrawRangeElements\fP is available only if the GL version is 1.2 or greater. +.P +\%\f3glDrawRangeElements\fP is included in display lists. If \%\f3glDrawRangeElements\fP is entered into a +display list, +the necessary array data (determined by the array pointers and +enables) is also +entered into the display list. Because the array pointers and +enables are client-side state, their values affect display lists +when the lists are created, not when the lists are executed. +.SH ERRORS +It is an error for indices to lie outside the range [\f2start\fP,\ \f2end\fP], +but implementations may not check for this situation. Such indices +cause implementation-dependent behavior. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2count\fP is negative. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2end\fP $<$ \f2start\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glDrawRangeElements\fP is executed between +the execution of \%\f3glBegin\fP and the corresponding \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MAX_ELEMENTS_VERTICES\fP +.P +\%\f3glGet\fP with argument \%\f3GL_MAX_ELEMENTS_INDICES\fP +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glDrawElements(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glGetPointerv(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glInterleavedArrays(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/edgeflag.3gl diff -u /dev/null xc/doc/man/GL/gl/edgeflag.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/edgeflag.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,65 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 edgeflag. +.ds Xs 46953 4 edgeflag.gl +.TH GLEDGEFLAG 3G +.SH NAME +.B "glEdgeFlag, glEdgeFlagv +\- flag edges as either boundary or nonboundary + +.SH C SPECIFICATION +void \f3glEdgeFlag\fP( +GLboolean \fIflag\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2flag\fP\ \ 'u +\f2flag\fP +Specifies the current edge flag value, +either \%\f3GL_TRUE\fP or \%\f3GL_FALSE\fP. The initial value is \%\f3GL_TRUE\fP. +.SH C SPECIFICATION +void \f3glEdgeFlagv\fP( +const GLboolean \fI*flag\fP ) +.nf +.fi + +.SH PARAMETERS +.TP +\f2flag\fP +Specifies a pointer to an array that contains a single boolean element, +which replaces the current edge flag value. +.SH DESCRIPTION +Each vertex of a polygon, +separate triangle, +or separate quadrilateral specified between a \%\f3glBegin\fP/\%\f3glEnd\fP pair +is marked as the start of either a boundary or nonboundary edge. +If the current edge flag is true when the vertex is specified, +the vertex is marked as the start of a boundary edge. +Otherwise, the vertex is marked as the start of a nonboundary edge. +\%\f3glEdgeFlag\fP sets the edge flag bit to \%\f3GL_TRUE\fP if \f2flag\fP is \%\f3GL_TRUE\fP, +and to \%\f3GL_FALSE\fP otherwise. +.P +The vertices of connected triangles and connected quadrilaterals are always +marked as boundary, +regardless of the value of the edge flag. +.P +Boundary and nonboundary edge flags on vertices are significant only if +\%\f3GL_POLYGON_MODE\fP is set to \%\f3GL_POINT\fP or \%\f3GL_LINE\fP. +See \%\f3glPolygonMode\fP. +.SH NOTES +The current edge flag can be updated at any time. +In particular, +\%\f3glEdgeFlag\fP can be called between a call to \%\f3glBegin\fP and the corresponding +call to \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_EDGE_FLAG\fP +.SH SEE ALSO +\%\f3glBegin(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glPolygonMode(3G)\fP Index: xc/doc/man/GL/gl/edgeflagpointer.3gl diff -u /dev/null xc/doc/man/GL/gl/edgeflagpointer.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/edgeflagpointer.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,100 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 edgeflagp +.ds Xs 49268 6 edgeflagpointer.gl +.TH GLEDGEFLAGPOINTER 3G +.SH NAME +.B "glEdgeFlagPointer +\- define an array of edge flags + +.SH C SPECIFICATION +void \f3glEdgeFlagPointer\fP( +GLsizei \fIstride\fP, +.nf +.ta \w'\f3void \fPglEdgeFlagPointer( 'u + const GLvoid \fI*ptr\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2stride\fP\ \ 'u +\f2stride\fP +Specifies the byte offset between consecutive edge flags. +If \f2stride\fP is 0 (the initial value), the edge flags are understood +to be tightly packed in the array. The initial value is 0. +.TP +\f2ptr\fP +Specifies a pointer to the first edge flag in the array. The initial +value is zero. +.SH DESCRIPTION +\%\f3glEdgeFlagPointer\fP specifies the location and data of an array of boolean edge +flags to use when rendering. \f2stride\fP specifies the byte stride from one +edge flag to the next allowing vertices and attributes +to be packed into a single array or stored in separate arrays. +(Single-array storage may be more efficient on some implementations; +see \%\f3glInterleavedArrays\fP.) +.P +When an edge flag array is +specified, \f2stride\fP and \f2ptr\fP are saved as client-side +state. +.P +To enable and disable the edge flag array, call \%\f3glEnableClientState\fP and +.br +\%\f3glDisableClientState\fP with +the argument \%\f3GL_EDGE_FLAG_ARRAY\fP. If enabled, the edge flag array is used +when \%\f3glDrawArrays\fP, \%\f3glDrawElements\fP, or \%\f3glArrayElement\fP is called. +.P +Use \%\f3glDrawArrays\fP to construct a sequence of primitives (all of +the same type) +from prespecified vertex and vertex attribute arrays. +Use \%\f3glArrayElement\fP to specify primitives +by indexing vertices and vertex attributes and \%\f3glDrawElements\fP to +construct a sequence of primitives by indexing vertices and vertex attributes. +.SH NOTES +\%\f3glEdgeFlagPointer\fP is available only if the GL version is 1.1 or greater. +.P +The edge flag array is initially disabled and it won't be accessed when +.br +\%\f3glArrayElement\fP, \%\f3glDrawElements\fP or \%\f3glDrawArrays\fP is called. +.P +Execution of \%\f3glEdgeFlagPointer\fP is not allowed between the execution of +\%\f3glBegin\fP and the corresponding execution of \%\f3glEnd\fP, +but an error may or may not be generated. If no error is generated, +the operation is undefined. +.P +\%\f3glEdgeFlagPointer\fP is typically implemented on the client side. +.P +Edge flag array parameters are client-side state and are therefore +not saved or restored by \%\f3glPushAttrib\fP and \%\f3glPopAttrib\fP. +Use \%\f3glPushClientAttrib\fP and +.br +\%\f3glPopClientAttrib\fP instead. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2stride\fP is negative. +.SH ASSOCIATED GETS +\%\f3glIsEnabled\fP with argument \%\f3GL_EDGE_FLAG_ARRAY\fP +.br +\%\f3glGet\fP with argument \%\f3GL_EDGE_FLAG_ARRAY_STRIDE\fP +.br +\%\f3glGetPointerv\fP with argument \%\f3GL_EDGE_FLAG_ARRAY_POINTER\fP +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glDrawElements(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glGetPointerv(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glPopClientAttrib(3G)\fP, +.br +\%\f3glPushClientAttrib(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/enable.3gl diff -u /dev/null xc/doc/man/GL/gl/enable.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/enable.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,505 @@ +'\" et +'\"! eqn|tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 enable.gl +.ds Xs 48946 14 enable.gl +.TH GLENABLE 3G +.SH NAME +.B "glEnable, glDisable +\- enable or disable server-side GL capabilities + +.SH C SPECIFICATION +void \f3glEnable\fP( +GLenum \fIcap\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2cap\fP\ \ 'u +\f2cap\fP +Specifies a symbolic constant indicating a GL capability. +.SH C SPECIFICATION +void \f3glDisable\fP( +GLenum \fIcap\fP ) +.nf +.fi + +.SH PARAMETERS +.TP +\f2cap\fP +Specifies a symbolic constant indicating a GL capability. +.SH DESCRIPTION +\%\f3glEnable\fP and \%\f3glDisable\fP enable and disable various capabilities. +Use \%\f3glIsEnabled\fP or \%\f3glGet\fP to determine the current setting +of any capability. The initial value for each capability with the +exception of \%\f3GL_DITHER\fP is \%\f3GL_FALSE\fP. The initial value for +\%\f3GL_DITHER\fP is \%\f3GL_TRUE\fP. +.P +Both \%\f3glEnable\fP and \%\f3glDisable\fP take a single argument, \f2cap\fP, +which can assume one of the following values: +.TP 25 +\%\f3GL_ALPHA_TEST\fP +If enabled, +do alpha testing. See +\%\f3glAlphaFunc\fP. +.TP +\%\f3GL_AUTO_NORMAL\fP +If enabled, +generate normal vectors when either +\%\f3GL_MAP2_VERTEX_3\fP or +\%\f3GL_MAP2_VERTEX_4\fP is used to generate vertices. +See \%\f3glMap2\fP. +.TP +\%\f3GL_BLEND\fP +If enabled, +blend the incoming RGBA color values with the values in the color +buffers. See \%\f3glBlendFunc\fP. +.TP +\%\f3GL_CLIP_PLANE\fP\f2i\fP +If enabled, +clip geometry against user-defined clipping plane \f2i\fP. +See \%\f3glClipPlane\fP. +.TP +\%\f3GL_COLOR_LOGIC_OP\fP +If enabled, +apply the currently selected logical operation to the incoming RGBA +color and color buffer values. See \%\f3glLogicOp\fP. +.TP +\%\f3GL_COLOR_MATERIAL\fP +If enabled, +have one or more material parameters track the current color. +See \%\f3glColorMaterial\fP. +.TP +\%\f3GL_COLOR_TABLE\fP +If enabled, +preform a color table lookup on the incoming RGBA color values. +See \%\f3glColorTable\fP. +.TP +\%\f3GL_CONVOLUTION_1D\fP +If enabled, +perform a 1D convolution operation on incoming RGBA color values. +See \%\f3glConvolutionFilter1D\fP. +.TP +\%\f3GL_CONVOLUTION_2D\fP +If enabled, +perform a 2D convolution operation on incoming RGBA color values. +See \%\f3glConvolutionFilter2D\fP. +.TP +\%\f3GL_CULL_FACE\fP +If enabled, +cull polygons based on their winding in window coordinates. +See \%\f3glCullFace\fP. +.TP +\%\f3GL_DEPTH_TEST\fP +If enabled, +do depth comparisons and update the depth buffer. Note that even if +the depth buffer exists and the depth mask is non-zero, the +depth buffer is not updated if the depth test is disabled. See +\%\f3glDepthFunc\fP and +.br +\%\f3glDepthRange\fP. +.TP +\%\f3GL_DITHER\fP +If enabled, +dither color components or indices before they are written to the +color buffer. +.TP +\%\f3GL_FOG\fP +If enabled, +blend a fog color into the posttexturing color. +See \%\f3glFog\fP. +.TP +\%\f3GL_HISTOGRAM\fP +If enabled, +histogram incoming RGBA color values. +See \%\f3glHistogram\fP. +.TP +\%\f3GL_INDEX_LOGIC_OP\fP +If enabled, +apply the currently selected logical operation to the incoming index and color +buffer indices. See +.br +\%\f3glLogicOp\fP. +.TP +\%\f3GL_LIGHT\fP\f2i\fP +If enabled, +include light \f2i\fP in the evaluation of the lighting +equation. See \%\f3glLightModel\fP and \%\f3glLight\fP. +.TP +\%\f3GL_LIGHTING\fP +If enabled, +use the current lighting parameters to compute the vertex color or index. +Otherwise, simply associate the current color or index with each +vertex. See +.br +\%\f3glMaterial\fP, \%\f3glLightModel\fP, and \%\f3glLight\fP. +.TP +\%\f3GL_LINE_SMOOTH\fP +If enabled, +draw lines with correct filtering. +Otherwise, +draw aliased lines. +See \%\f3glLineWidth\fP. +.TP +\%\f3GL_LINE_STIPPLE\fP +If enabled, +use the current line stipple pattern when drawing lines. See +\%\f3glLineStipple\fP. +.TP +\%\f3GL_MAP1_COLOR_4\fP +If enabled, +calls to +\%\f3glEvalCoord1\fP, +\%\f3glEvalMesh1\fP, and +\%\f3glEvalPoint1\fP generate RGBA values. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_INDEX\fP +If enabled, +calls to +\%\f3glEvalCoord1\fP, +\%\f3glEvalMesh1\fP, and +\%\f3glEvalPoint1\fP generate color indices. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_NORMAL\fP +If enabled, +calls to +\%\f3glEvalCoord1\fP, +\%\f3glEvalMesh1\fP, and +\%\f3glEvalPoint1\fP generate normals. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_TEXTURE_COORD_1\fP +If enabled, +calls to +\%\f3glEvalCoord1\fP, +\%\f3glEvalMesh1\fP, and +\%\f3glEvalPoint1\fP generate +\f2s\fP +texture coordinates. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_TEXTURE_COORD_2\fP +If enabled, +calls to +\%\f3glEvalCoord1\fP, +\%\f3glEvalMesh1\fP, and +\%\f3glEvalPoint1\fP generate +\f2s\fP and +\f2t\fP texture coordinates. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_TEXTURE_COORD_3\fP +If enabled, +calls to +\%\f3glEvalCoord1\fP, +\%\f3glEvalMesh1\fP, and +\%\f3glEvalPoint1\fP generate +\f2s\fP, +\f2t\fP, and +\f2r\fP texture coordinates. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_TEXTURE_COORD_4\fP +If enabled, +calls to +\%\f3glEvalCoord1\fP, +\%\f3glEvalMesh1\fP, and +\%\f3glEvalPoint1\fP generate +\f2s\fP, +\f2t\fP, +\f2r\fP, and +\f2q\fP texture coordinates. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_VERTEX_3\fP +If enabled, +calls to +\%\f3glEvalCoord1\fP, +\%\f3glEvalMesh1\fP, and +\%\f3glEvalPoint1\fP generate +\f2x\fP, \f2y\fP, and \f2z\fP vertex coordinates. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_VERTEX_4\fP +If enabled, +calls to +\%\f3glEvalCoord1\fP, +\%\f3glEvalMesh1\fP, and +\%\f3glEvalPoint1\fP generate +homogeneous +\f2x\fP, +\f2y\fP, +\f2z\fP, and +\f2w\fP vertex coordinates. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP2_COLOR_4\fP +If enabled, +calls to +\%\f3glEvalCoord2\fP, +\%\f3glEvalMesh2\fP, and +\%\f3glEvalPoint2\fP generate RGBA values. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_INDEX\fP +If enabled, +calls to +\%\f3glEvalCoord2\fP, +\%\f3glEvalMesh2\fP, and +\%\f3glEvalPoint2\fP generate color indices. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_NORMAL\fP +If enabled, +calls to +\%\f3glEvalCoord2\fP, +\%\f3glEvalMesh2\fP, and +\%\f3glEvalPoint2\fP generate normals. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_TEXTURE_COORD_1\fP +If enabled, +calls to +\%\f3glEvalCoord2\fP, +\%\f3glEvalMesh2\fP, and +\%\f3glEvalPoint2\fP generate +\f2s\fP +texture coordinates. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_TEXTURE_COORD_2\fP +If enabled, +calls to +\%\f3glEvalCoord2\fP, +\%\f3glEvalMesh2\fP, and +\%\f3glEvalPoint2\fP generate +\f2s\fP and +\f2t\fP texture coordinates. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_TEXTURE_COORD_3\fP +If enabled, +calls to +\%\f3glEvalCoord2\fP, +\%\f3glEvalMesh2\fP, and +\%\f3glEvalPoint2\fP generate +\f2s\fP, +\f2t\fP, and +\f2r\fP texture coordinates. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_TEXTURE_COORD_4\fP +If enabled, +calls to +\%\f3glEvalCoord2\fP, +\%\f3glEvalMesh2\fP, and +\%\f3glEvalPoint2\fP generate +\f2s\fP, +\f2t\fP, +\f2r\fP, and +\f2q\fP texture coordinates. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_VERTEX_3\fP +If enabled, +calls to +\%\f3glEvalCoord2\fP, +\%\f3glEvalMesh2\fP, and +\%\f3glEvalPoint2\fP generate +\f2x\fP, \f2y\fP, and \f2z\fP vertex coordinates. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_VERTEX_4\fP +If enabled, +calls to +\%\f3glEvalCoord2\fP, +\%\f3glEvalMesh2\fP, and +\%\f3glEvalPoint2\fP generate +homogeneous +\f2x\fP, +\f2y\fP, +\f2z\fP, and +\f2w\fP vertex coordinates. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MINMAX\fP +If enabled, +compute the minimum and maximum values of incoming RGBA color values. +See \%\f3glMinmax\fP. +.TP +\%\f3GL_NORMALIZE\fP +If enabled, +normal vectors specified with \%\f3glNormal\fP are scaled to unit length +after transformation. See \%\f3glNormal\fP. +.TP +\%\f3GL_POINT_SMOOTH\fP +If enabled, +draw points with proper filtering. +Otherwise, +draw aliased points. +See \%\f3glPointSize\fP. +.TP +\%\f3GL_POLYGON_OFFSET_FILL\fP +If enabled, and if the polygon is rendered in +\%\f3GL_FILL\fP mode, an offset is added to depth values of a polygon's +fragments before the depth comparison is performed. +See \%\f3glPolygonOffset\fP. +.TP +\%\f3GL_POLYGON_OFFSET_LINE\fP +If enabled, and if the polygon is rendered in +\%\f3GL_LINE\fP mode, an offset is added to depth values of a polygon's +fragments before the depth comparison is performed. See \%\f3glPolygonOffset\fP. +.TP +\%\f3GL_POLYGON_OFFSET_POINT\fP +If enabled, an offset is added to depth values of a polygon's fragments +before the depth comparison is performed, if the polygon is rendered in +\%\f3GL_POINT\fP mode. See \%\f3glPolygonOffset\fP. +.TP +\%\f3GL_POLYGON_SMOOTH\fP +If enabled, draw polygons with proper filtering. +Otherwise, draw aliased polygons. For correct anti-aliased polygons, +an alpha buffer is needed and the polygons must be sorted front to +back. +.TP +\%\f3GL_POLYGON_STIPPLE\fP +If enabled, +use the current polygon stipple pattern when rendering +polygons. See \%\f3glPolygonStipple\fP. +.TP +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP +If enabled, +preform a color table lookup on RGBA color values after color matrix +transformation. +See \%\f3glColorTable\fP. +.TP +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP +If enabled, +preform a color table lookup on RGBA color values after convolution. +See \%\f3glColorTable\fP. +.TP +\%\f3GL_RESCALE_NORMAL\fP +If enabled, normal vectors specified with \%\f3glNormal\fP are scaled to +unit length after transformation. See \%\f3glNormal\fP. +.TP +\%\f3GL_SEPARABLE_2D\fP +If enabled, perform a two-dimensional convolution operation using a separable +convolution filter on incoming RGBA color values. +See \%\f3glSeparableFilter2D\fP. +.TP +\%\f3GL_SCISSOR_TEST\fP +If enabled, +discard fragments that are outside the scissor rectangle. +See \%\f3glScissor\fP. +.TP +\%\f3GL_STENCIL_TEST\fP +If enabled, +do stencil testing and update the stencil buffer. +See \%\f3glStencilFunc\fP and \%\f3glStencilOp\fP. +.TP +\%\f3GL_TEXTURE_1D\fP +If enabled, one-dimensional texturing is performed +(unless two- or three-dimensional texturing is also enabled). +See \%\f3glTexImage1D\fP. +.TP +\%\f3GL_TEXTURE_2D\fP +If enabled, two-dimensional texturing is performed +(unless three-dimensional texturing is also enabled). See \%\f3glTexImage2D\fP. +.TP +\%\f3GL_TEXTURE_3D\fP +If enabled, three-dimensional texturing is performed. See \%\f3glTexImage3D\fP. +.TP +\%\f3GL_TEXTURE_GEN_Q\fP +If enabled, +the \f2q\fP texture coordinate is computed using +the texture generation function defined with \%\f3glTexGen\fP. +Otherwise, the current \f2q\fP texture coordinate is used. +See \%\f3glTexGen\fP. +.TP +\%\f3GL_TEXTURE_GEN_R\fP +If enabled, +the \f2r\fP texture coordinate is computed using +the texture generation function defined with \%\f3glTexGen\fP. +Otherwise, the current \f2r\fP texture coordinate is used. +See \%\f3glTexGen\fP. +.TP +\%\f3GL_TEXTURE_GEN_S\fP +If enabled, +the \f2s\fP texture coordinate is computed using +the texture generation function defined with \%\f3glTexGen\fP. +Otherwise, the current \f2s\fP texture coordinate is used. +See \%\f3glTexGen\fP. +.TP +\%\f3GL_TEXTURE_GEN_T\fP +If enabled, +the \f2t\fP texture coordinate is computed using +the texture generation function defined with \%\f3glTexGen\fP. +Otherwise, the current \f2t\fP texture coordinate is used. +See \%\f3glTexGen\fP. +.SH NOTES +\%\f3GL_POLYGON_OFFSET_FILL\fP, \%\f3GL_POLYGON_OFFSET_LINE\fP, +\%\f3GL_POLYGON_OFFSET_POINT\fP, +\%\f3GL_COLOR_LOGIC_OP\fP, and \%\f3GL_INDEX_LOGIC_OP\fP are available +only if the GL version is 1.1 or greater. +.P +\%\f3GL_RESCALE_NORMAL\fP, and \%\f3GL_TEXTURE_3D\fP are available only if the +GL version is 1.2 or greater. +.P +\%\f3GL_COLOR_TABLE\fP, \%\f3GL_CONVOLUTION_1D\fP, \%\f3GL_CONVOLUTION_2D\fP, +\%\f3GL_HISTOGRAM\fP, \%\f3GL_MINMAX\fP, +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, and +\%\f3GL_SEPARABLE_2D\fP are available only if \%\f3GL_ARB_imaging\fP is returned +from \%\f3glGet\fP with an argument of \%\f3GL_EXTENSIONS\fP. +.P +If \%\f3GL_ARB_multitexture\fP is supported, \%\f3GL_TEXTURE_1D\fP, +\%\f3GL_TEXTURE_2D\fP, \%\f3GL_TEXTURE_3D\fP, \%\f3GL_TEXTURE_GEN_S\fP, +\%\f3GL_TEXTURE_GEN_T\fP, \%\f3GL_TEXTURE_GEN_R\fP, and \%\f3GL_TEXTURE_GEN_Q\fP +enable or disable the respective state for the active texture unit +specified with \%\f3glActiveTextureARB\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2cap\fP is not one of the values +listed previously. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glEnable\fP or \%\f3glDisable\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glAlphaFunc(3G)\fP, +\%\f3glBlendFunc(3G)\fP, +\%\f3glClipPlane(3G)\fP, +\%\f3glColorMaterial(3G)\fP, +\%\f3glCullFace(3G)\fP, +\%\f3glDepthFunc(3G)\fP, +\%\f3glDepthRange(3G)\fP, +\%\f3glEnableClientState(3G)\fP, +\%\f3glFog(3G)\fP, +\%\f3glGet(3G)\fP, +\%\f3glIsEnabled(3G)\fP, +\%\f3glLight(3G)\fP, +\%\f3glLightModel(3G)\fP, +\%\f3glLineWidth(3G)\fP, +\%\f3glLineStipple(3G)\fP, +\%\f3glLogicOp(3G)\fP, +\%\f3glMap1(3G)\fP, +\%\f3glMap2(3G)\fP, +\%\f3glMaterial(3G)\fP, +\%\f3glNormal(3G)\fP, +\%\f3glPointSize(3G)\fP, +\%\f3glPolygonMode(3G)\fP, +\%\f3glPolygonOffset(3G)\fP, +\%\f3glPolygonStipple(3G)\fP, +\%\f3glScissor(3G)\fP, +\%\f3glStencilFunc(3G)\fP, +\%\f3glStencilOp(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP + Index: xc/doc/man/GL/gl/enableclientstate.3gl diff -u /dev/null xc/doc/man/GL/gl/enableclientstate.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/enableclientstate.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,116 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 enablecli +.ds Xs 64367 6 enableclientstate.gl +.TH GLENABLECLIENTSTATE 3G +.SH NAME +.B "glEnableClientState, glDisableClientState +\- enable or disable client-side capability + +.SH C SPECIFICATION +void \f3glEnableClientState\fP( +GLenum cap); /* \fI1.1\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f21.1\fP\ \ 'u +\f21.1\fP +Specifies the capability to enable. +Symbolic constants +\%\f3GL_COLOR_ARRAY\fP, +\%\f3GL_EDGE_FLAG_ARRAY\fP, +\%\f3GL_INDEX_ARRAY\fP, +\%\f3GL_NORMAL_ARRAY\fP, +\%\f3GL_TEXTURE_COORD_ARRAY\fP, and +\%\f3GL_VERTEX_ARRAY\fP +are accepted. +.SH C SPECIFICATION +void \f3glDisableClientState\fP( +GLenum cap); /* \fI1.1\fP ) +.nf +.fi + +.SH PARAMETERS +.TP +\f21.1\fP +Specifies the capability to disable. +.SH DESCRIPTION +\%\f3glEnableClientState\fP and \%\f3glDisableClientState\fP +enable or disable individual client-side capabilities. By default, all +client-side capabilities are disabled. +Both +\%\f3glEnableClientState\fP and \%\f3glDisableClientState\fP take a +single argument, \f21.1\fP, which can assume one of the following +values: +.TP 25 +\%\f3GL_COLOR_ARRAY\fP +If enabled, the color array is enabled for writing and used during +rendering when \%\f3glArrayElement\fP, \%\f3glDrawArrays\fP, +\%\f3glDrawElement\fP, or \%\f3glDrawRangeElements\fP is called. See +\%\f3glColorPointer\fP. +.TP +\%\f3GL_EDGE_FLAG_ARRAY\fP +If enabled, the edge flag array is enabled for writing and used during +rendering when \%\f3glArrayElement\fP, \%\f3glDrawArrays\fP, +\%\f3glDrawElement\fP, or \%\f3glDrawRangeElements\fP is called. See +\%\f3glEdgeFlagPointer\fP. +.TP +\%\f3GL_INDEX_ARRAY\fP +If enabled, the index array is enabled for writing and used during +rendering when \%\f3glArrayElement\fP, \%\f3glDrawArrays\fP, +\%\f3glDrawElement\fP, or \%\f3glDrawRangeElements\fP is called. See +\%\f3glIndexPointer\fP. +.TP +\%\f3GL_NORMAL_ARRAY\fP +If enabled, the normal array is enabled for writing and used during +rendering when \%\f3glArrayElement\fP, \%\f3glDrawArrays\fP, +\%\f3glDrawElement\fP, or \%\f3glDrawRangeElements\fP is called. See +\%\f3glNormalPointer\fP. +.TP +\%\f3GL_TEXTURE_COORD_ARRAY\fP +If enabled, the texture coordinate array is enabled for writing and used during +rendering when \%\f3glArrayElement\fP, \%\f3glDrawArrays\fP, +\%\f3glDrawElement\fP, or \%\f3glDrawRangeElements\fP is called. See +\%\f3glTexCoordPointer\fP. +.TP +\%\f3GL_VERTEX_ARRAY\fP +If enabled, the vertex array is enabled for writing and used during +rendering when \%\f3glArrayElement\fP, \%\f3glDrawArrays\fP, +\%\f3glDrawElement\fP, or \%\f3glDrawRangeElements\fP is called. See +\%\f3glVertexPointer\fP. +.SH NOTES +\%\f3glEnableClientState\fP is available only if the GL version is 1.1 or greater. +.P +If \%\f3GL_ARB_multitexture\fP is supported, enabling and disabling +\%\f3GL_TEXTURE_COORD_ARRAY\fP affects the active client texture unit. +The active client texture unit is controlled with +\%\f3glClientActiveTextureARB\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f21.1\fP is not an accepted value. +.P +\%\f3glEnableClientState\fP is not allowed between the execution of \%\f3glBegin\fP and the +corresponding \%\f3glEnd\fP, but an error may or may not be generated. If +no error is generated, the behavior is undefined. +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glClientActiveTextureARB(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glDrawElements(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glGetPointerv(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glInterleavedArrays(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/evalcoord.3gl diff -u /dev/null xc/doc/man/GL/gl/evalcoord.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/evalcoord.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,226 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 evalcoord +.ds Xs 42414 8 evalcoord.gl +.TH GLEVALCOORD 3G +.SH NAME +.B "glEvalCoord1d, glEvalCoord1f, glEvalCoord2d, glEvalCoord2f, glEvalCoord1dv, glEvalCoord1fv, glEvalCoord2dv, glEvalCoord2fv +\- evaluate enabled one- and two-dimensional maps + +.EQ +delim $$ +.EN +.SH C SPECIFICATION +void \f3glEvalCoord1d\fP( +GLdouble \fIu\fP ) +.nf +.fi +void \f3glEvalCoord1f\fP( +GLfloat \fIu\fP ) +.nf +.fi +void \f3glEvalCoord2d\fP( +GLdouble \fIu\fP, +.nf +.ta \w'\f3void \fPglEvalCoord2d( 'u + GLdouble \fIv\fP ) +.fi +void \f3glEvalCoord2f\fP( +GLfloat \fIu\fP, +.nf +.ta \w'\f3void \fPglEvalCoord2f( 'u + GLfloat \fIv\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2u\fP\ \ 'u +\f2u\fP +Specifies a value that is the domain coordinate $u$ to the basis function +defined in a previous \%\f3glMap1\fP or \%\f3glMap2\fP command. +.TP +\f2v\fP +Specifies a value that is the domain coordinate $v$ to the basis function +defined in a previous \%\f3glMap2\fP command. +This argument is not present in a \%\f3glEvalCoord1\fP command. +.SH C SPECIFICATION +void \f3glEvalCoord1dv\fP( +const GLdouble \fI*u\fP ) +.nf +.fi +void \f3glEvalCoord1fv\fP( +const GLfloat \fI*u\fP ) +.nf +.fi +void \f3glEvalCoord2dv\fP( +const GLdouble \fI*u\fP ) +.nf +.fi +void \f3glEvalCoord2fv\fP( +const GLfloat \fI*u\fP ) +.nf +.fi + +.SH PARAMETERS +.TP +\f2u\fP +Specifies a pointer to an array containing +either one or two domain coordinates. +The first coordinate is $u$. +The second coordinate is $v$, +which is present only in \%\f3glEvalCoord2\fP versions. +.SH DESCRIPTION +\%\f3glEvalCoord1\fP evaluates enabled one-dimensional maps at argument +\f2u\fP. +\%\f3glEvalCoord2\fP does the same for two-dimensional maps using +two domain values, +\f2u\fP and \f2v\fP. +To define a map, call \%\f3glMap1\fP and \%\f3glMap2\fP; to enable and +disable it, call \%\f3glEnable\fP and \%\f3glDisable\fP. +.P +When one of the \%\f3glEvalCoord\fP commands is issued, +all currently enabled maps of the indicated dimension are evaluated. +Then, +for each enabled map, +it is as if the corresponding GL command had been issued with the +computed value. +That is, +if \%\f3GL_MAP1_INDEX\fP or +\%\f3GL_MAP2_INDEX\fP is enabled, +a \%\f3glIndex\fP command is simulated. +If \%\f3GL_MAP1_COLOR_4\fP or +\%\f3GL_MAP2_COLOR_4\fP is enabled, +a \%\f3glColor\fP command is simulated. +If \%\f3GL_MAP1_NORMAL\fP or \%\f3GL_MAP2_NORMAL\fP is enabled, +a normal vector is produced, +and if any of +\%\f3GL_MAP1_TEXTURE_COORD_1\fP, +\%\f3GL_MAP1_TEXTURE_COORD_2\fP, +\%\f3GL_MAP1_TEXTURE_COORD_3\fP, +\%\f3GL_MAP1_TEXTURE_COORD_4\fP, +\%\f3GL_MAP2_TEXTURE_COORD_1\fP, +\%\f3GL_MAP2_TEXTURE_COORD_2\fP, +\%\f3GL_MAP2_TEXTURE_COORD_3\fP, or +\%\f3GL_MAP2_TEXTURE_COORD_4\fP is enabled, then an appropriate \%\f3glTexCoord\fP command is simulated. +.P +For color, +color index, +normal, +and texture coordinates the GL uses evaluated values instead of current values for those evaluations +that are enabled, +and current values otherwise, +However, +the evaluated values do not update the current values. +Thus, if \%\f3glVertex\fP commands are interspersed with \%\f3glEvalCoord\fP +commands, the color, +normal, +and texture coordinates associated with the \%\f3glVertex\fP commands are not +affected by the values generated by the \%\f3glEvalCoord\fP commands, +but only by the most recent +\%\f3glColor\fP, +\%\f3glIndex\fP, +\%\f3glNormal\fP, and +\%\f3glTexCoord\fP commands. +.P +No commands are issued for maps that are not enabled. +If more than one texture evaluation is enabled for a particular dimension +(for example, \%\f3GL_MAP2_TEXTURE_COORD_1\fP and +\%\f3GL_MAP2_TEXTURE_COORD_2\fP), +then only the evaluation of the map that produces the larger +number of coordinates +(in this case, \%\f3GL_MAP2_TEXTURE_COORD_2\fP) +is carried out. +\%\f3GL_MAP1_VERTEX_4\fP overrides \%\f3GL_MAP1_VERTEX_3\fP, +and +\%\f3GL_MAP2_VERTEX_4\fP overrides \%\f3GL_MAP2_VERTEX_3\fP, +in the same manner. +If neither a three- nor a four-component vertex map is enabled for the +specified dimension, +the \%\f3glEvalCoord\fP command is ignored. +.P +If you have enabled automatic normal generation, +by calling \%\f3glEnable\fP with argument \%\f3GL_AUTO_NORMAL\fP, +\%\f3glEvalCoord2\fP generates surface normals analytically, +regardless of the contents or enabling of the \%\f3GL_MAP2_NORMAL\fP map. +Let +.sp +.ce +.EQ +bold m ~=~ {partial bold p} over {partial u} ~times~ + {partial bold p} over {partial v} +.EN +.ce 0 +.sp +.br +Then the generated normal $ bold n $ is +.br +.ce +$bold n ~=~ bold m over { || bold m || }$ +.ce 0 +.sp +.br +If automatic normal generation is disabled, +the corresponding normal map \%\f3GL_MAP2_NORMAL\fP, +if enabled, +is used to produce a normal. +If neither automatic normal generation nor a normal map is enabled, +no normal is generated for +\%\f3glEvalCoord2\fP commands. +.SH ASSOCIATED GETS +.nf +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_VERTEX_3\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_VERTEX_4\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_INDEX\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_COLOR_4\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_NORMAL\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_TEXTURE_COORD_1\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_TEXTURE_COORD_2\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_TEXTURE_COORD_3\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_TEXTURE_COORD_4\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_VERTEX_3\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_VERTEX_4\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_INDEX\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_COLOR_4\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_NORMAL\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_TEXTURE_COORD_1\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_TEXTURE_COORD_2\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_TEXTURE_COORD_3\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_TEXTURE_COORD_4\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_AUTO_NORMAL\fP +.br +\%\f3glGetMap\fP +.SH SEE ALSO +\%\f3glBegin(3G)\fP, +\%\f3glColor(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glEvalMesh(3G)\fP, +\%\f3glEvalPoint(3G)\fP, +\%\f3glIndex(3G)\fP, +\%\f3glMap1(3G)\fP, +\%\f3glMap2(3G)\fP, +\%\f3glMapGrid(3G)\fP, +\%\f3glNormal(3G)\fP, +\%\f3glTexCoord(3G)\fP, +\%\f3glVertex(3G)\fP Index: xc/doc/man/GL/gl/evalmesh.3gl diff -u /dev/null xc/doc/man/GL/gl/evalmesh.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/evalmesh.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,189 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 evalmesh. +.ds Xs 32277 7 evalmesh.gl +.TH GLEVALMESH 3G +.SH NAME +.B "glEvalMesh1, glEvalMesh2 +\- compute a one- or two-dimensional grid of points or lines + +.SH C SPECIFICATION +void \f3glEvalMesh1\fP( +GLenum \fImode\fP, +.nf +.ta \w'\f3void \fPglEvalMesh1( 'u + GLint \fIi1\fP, + GLint \fIi2\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2mode\fP\ \ 'u +\f2mode\fP +In \%\f3glEvalMesh1\fP, specifies whether to compute a one-dimensional mesh of points or lines. +Symbolic constants +\%\f3GL_POINT\fP and +\%\f3GL_LINE\fP are accepted. +.TP +\f2i1\fP, \f2i2\fP +Specify the first and last integer values for grid domain variable $i$. +.SH C SPECIFICATION +void \f3glEvalMesh2\fP( +GLenum \fImode\fP, +.nf +.ta \w'\f3void \fPglEvalMesh2( 'u + GLint \fIi1\fP, + GLint \fIi2\fP, + GLint \fIj1\fP, + GLint \fIj2\fP ) +.fi + +.SH PARAMETERS +.TP +\f2mode\fP +In \%\f3glEvalMesh2\fP, specifies whether to compute a two-dimensional mesh of points, lines, +or polygons. +Symbolic constants +\%\f3GL_POINT\fP, +\%\f3GL_LINE\fP, and +\%\f3GL_FILL\fP are accepted. +.TP +\f2i1\fP, \f2i2\fP +Specify the first and last integer values for grid domain variable $i$. +.TP +\f2j1\fP, \f2j2\fP +Specify the first and last integer values for grid domain variable $j$. +.SH DESCRIPTION +\%\f3glMapGrid\fP and \%\f3glEvalMesh\fP are used in tandem to efficiently +generate and evaluate a series of evenly-spaced map domain values. +\%\f3glEvalMesh\fP steps through the integer domain of a one- or two-dimensional grid, +whose range is the domain of the evaluation maps specified by +\%\f3glMap1\fP and \%\f3glMap2\fP. +\f2mode\fP determines whether the resulting vertices are connected as +points, +lines, +or filled polygons. +.P +In the one-dimensional case, +\%\f3glEvalMesh1\fP, +the mesh is generated as if the following code fragment were executed: +.nf +.IP +\f7 +glBegin( \f2type\f7 ); +for ( i = \f2i1\fP; i <= \f2i2\fP; i += 1 ) + glEvalCoord1( i$^cdot^DELTA u ~+~ u sub 1$ ); +glEnd(); +\fP +.RE +.fi +where +.sp +.in +$ DELTA u ~=~ (u sub 2 ~-~ u sub 1 ) ^/^ n$ +.sp +.in 0 +.P +and $n$, $u sub 1$, and $u sub 2$ are the arguments to the most recent +\%\f3glMapGrid1\fP command. +\f2type\fP is \%\f3GL_POINTS\fP if \f2mode\fP is \%\f3GL_POINT\fP, +or \%\f3GL_LINES\fP if \f2mode\fP is \%\f3GL_LINE\fP. +.P +The one absolute numeric requirement is that if $i ~=~ n$, then the +value computed from $ i^cdot^DELTA u ~+~ u sub 1$ is exactly $u sub 2$. +.P +In the two-dimensional case, \%\f3glEvalMesh2\fP, let +.nf +.IP +$ DELTA u ~=~ mark ( u sub 2 ~-~ u sub 1 ) ^/^ n$ +.sp +$ DELTA v ~=~ lineup ( v sub 2 ~-~ v sub 1 ) ^/^ m$, +.fi +.RE +.P +where $n$, $u sub 1$, $u sub 2$, $m$, $v sub 1$, and $v sub 2$ are the +arguments to the most recent \%\f3glMapGrid2\fP command. Then, if +\f2mode\fP is \%\f3GL_FILL\fP, the \%\f3glEvalMesh2\fP command is equivalent +to: +.nf +.IP +\f7 +for ( j = \f2j1\fP; j < \f2j2\fP; j += 1 ) { + glBegin( GL_QUAD_STRIP ); + for ( i = \f2i1\fP; i <= \f2i2\fP; i += 1 ) { + glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); + glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, (j+1)$^cdot^DELTA v ~+~ v sub 1$ ); + } + glEnd(); +} +\fP +.RE +.fi +.P +If \f2mode\fP is \%\f3GL_LINE\fP, then a call to \%\f3glEvalMesh2\fP is equivalent to: +.nf +.IP +\f7 +for ( j = \f2j1\fP; j <= \f2j2\fP; j += 1 ) { + glBegin( GL_LINE_STRIP ); + for ( i = \f2i1\fP; i <= \f2i2\fP; i += 1 ) + glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); + glEnd(); +} +.sp +for ( i = \f2i1\fP; i <= \f2i2\fP; i += 1 ) { + glBegin( GL_LINE_STRIP ); + for ( j = \f2j1\fP; j <= \f2j1\fP; j += 1 ) + glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1 $ ); + glEnd(); +} +\fP +.RE +.fi +.P +And finally, if \f2mode\fP is \%\f3GL_POINT\fP, then a call to +\%\f3glEvalMesh2\fP is equivalent to: +.nf +.IP +\f7 +glBegin( GL_POINTS ); +for ( j = \f2j1\fP; j <= \f2j2\fP; j += 1 ) + for ( i = \f2i1\fP; i <= \f2i2\fP; i += 1 ) + glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); +glEnd(); +\fP +.RE +.fi +.P +In all three cases, the only absolute numeric requirements are that if $i~=~n$, +then the value computed from $i^cdot^DELTA u ~+~ u sub 1$ is exactly $u +sub 2$, and if $j~=~m$, then the value computed from +$j ^cdot^ DELTA v ~+~ v sub 1$ is exactly $v sub 2$. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glEvalMesh\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MAP1_GRID_DOMAIN\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAP2_GRID_DOMAIN\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAP1_GRID_SEGMENTS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAP2_GRID_SEGMENTS\fP +.SH SEE ALSO +\%\f3glBegin(3G)\fP, +\%\f3glEvalCoord(3G)\fP, +\%\f3glEvalPoint(3G)\fP, +\%\f3glMap1(3G)\fP, +\%\f3glMap2(3G)\fP, +\%\f3glMapGrid(3G)\fP Index: xc/doc/man/GL/gl/evalpoint.3gl diff -u /dev/null xc/doc/man/GL/gl/evalpoint.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/evalpoint.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,101 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 evalpoint +.ds Xs 57169 5 evalpoint.gl +.TH GLEVALPOINT 3G +.SH NAME +.B "glEvalPoint1, glEvalPoint2 +\- generate and evaluate a single point in a mesh + +.SH C SPECIFICATION +void \f3glEvalPoint1\fP( +GLint \fIi\fP ) +.nf +.fi +void \f3glEvalPoint2\fP( +GLint \fIi\fP, +.nf +.ta \w'\f3void \fPglEvalPoint2( 'u + GLint \fIj\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2i\fP\ \ 'u +\f2i\fP +Specifies the integer value for grid domain variable $i$. +.TP +\f2j\fP +Specifies the integer value for grid domain variable $j$ +(\%\f3glEvalPoint2\fP only). +.SH DESCRIPTION +\%\f3glMapGrid\fP and \%\f3glEvalMesh\fP are used in tandem to efficiently +generate and evaluate a series of evenly spaced map domain values. +\%\f3glEvalPoint\fP can be used to evaluate a single grid point in the same gridspace +that is traversed by \%\f3glEvalMesh\fP. +Calling \%\f3glEvalPoint1\fP is equivalent to calling +.nf +.IP +\f7 +glEvalCoord1( i$^cdot^DELTA u ~+~ u sub 1$ ); +\fP +.RE +.fi +where +.sp +.in +$DELTA u ~=~ ( u sub 2 - u sub 1 ) ^/^ n$ +.in 0 +.sp +.P +and $n$, $u sub 1$, and $u sub 2$ +are the arguments to the most recent \%\f3glMapGrid1\fP command. +The one absolute numeric requirement is that if $i~=~n$, +then the value computed from +$i ^cdot^ DELTA u ~+~ u sub 1$ is exactly $u sub 2$. +.P +In the two-dimensional case, \%\f3glEvalPoint2\fP, let +.nf +.IP +$DELTA u ~=~ mark ( u sub 2 - u sub 1 ) ^/^ n$ +.sp +$DELTA v ~=~ mark ( v sub 2 - v sub 1 ) ^/^ m,$ +.RE +.fi +.P +where $n$, $u sub 1$, $u sub 2$, $m$, $v sub 1$, and $v sub 2$ +are the arguments to the most recent \%\f3glMapGrid2\fP command. +Then the \%\f3glEvalPoint2\fP command is equivalent to calling +.nf +.IP +\f7 +glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); +\fP +.RE +.fi +The only absolute numeric requirements are that if $i~=~n$, +then the value computed from +$i ^cdot^DELTA u ~+~ u sub 1$ is exactly $u sub 2$, +and if $j~=~m$, then the value computed from +$i ^cdot^DELTA v ~+~ v sub 1$ is exactly $v sub 2$. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MAP1_GRID_DOMAIN\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAP2_GRID_DOMAIN\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAP1_GRID_SEGMENTS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAP2_GRID_SEGMENTS\fP +.SH SEE ALSO +\%\f3glEvalCoord(3G)\fP, +\%\f3glEvalMesh(3G)\fP, +\%\f3glMap1(3G)\fP, +\%\f3glMap2(3G)\fP, +\%\f3glMapGrid(3G)\fP Index: xc/doc/man/GL/gl/feedbackbuffer.3gl diff -u /dev/null xc/doc/man/GL/gl/feedbackbuffer.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/feedbackbuffer.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,225 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 feedbackb +.ds Xs 26060 9 feedbackbuffer.gl +.TH GLFEEDBACKBUFFER 3G +.SH NAME +.B "glFeedbackBuffer +\- controls feedback mode + +.SH C SPECIFICATION +void \f3glFeedbackBuffer\fP( +GLsizei \fIsize\fP, +.nf +.ta \w'\f3void \fPglFeedbackBuffer( 'u + GLenum \fItype\fP, + GLfloat \fI*buffer\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIbuffer\fP\ \ 'u +\f2size\fP +Specifies the maximum number of values that can be written into \f2buffer\fP. +.TP +\f2type\fP +Specifies a symbolic constant that describes the information +that will be returned for each vertex. +\%\f3GL_2D\fP, +\%\f3GL_3D\fP, +\%\f3GL_3D_COLOR\fP, +\%\f3GL_3D_COLOR_TEXTURE\fP, and +\%\f3GL_4D_COLOR_TEXTURE\fP are accepted. +.TP +\f2buffer\fP +Returns the feedback data. +.SH DESCRIPTION +The \%\f3glFeedbackBuffer\fP function controls feedback. +Feedback, like selection, is a GL mode. +The mode is selected by calling +\%\f3glRenderMode\fP with \%\f3GL_FEEDBACK\fP. +When the GL is in feedback mode, +no pixels are produced by rasterization. +Instead, information about primitives that would have been +rasterized is fed back to the application using the GL. +.P +\%\f3glFeedbackBuffer\fP has three arguments: +\f2buffer\fP is a pointer to an array of floating-point values +into which feedback information is placed. +\f2size\fP indicates the size of the array. +\f2type\fP is a symbolic constant describing the information +that is fed back for each vertex. +\%\f3glFeedbackBuffer\fP must be issued before feedback mode is enabled +(by calling \%\f3glRenderMode\fP with argument \%\f3GL_FEEDBACK\fP). +Setting \%\f3GL_FEEDBACK\fP without establishing the feedback buffer, +or calling \%\f3glFeedbackBuffer\fP while the GL is in feedback mode, +is an error. +.P +When \%\f3glRenderMode\fP is called while in feedback mode, it returns the number of entries +placed in the feedback array, and resets the feedback array pointer to the base +of the feedback buffer. The returned value never exceeds \f2size\fP. If the feedback +data required more room than was available in \f2buffer\fP, +\%\f3glRenderMode\fP returns a negative value. +To take the GL out of feedback mode, call +\%\f3glRenderMode\fP with a parameter value other than \%\f3GL_FEEDBACK\fP. +.P +While in feedback mode, +each primitive, bitmap, or pixel rectangle that would be rasterized +generates a block of values that are copied into the feedback array. +If doing so would cause the number of entries to exceed the maximum, +the block is partially written so as to fill the array +(if there is any room left at all), +and an overflow flag is set. +Each block begins with a code indicating the primitive type, +followed by values that describe the primitive's vertices and +associated data. +Entries are also written for bitmaps and pixel rectangles. +Feedback occurs after polygon culling and \%\f3glPolygonMode\fP interpretation +of polygons has taken place, +so polygons that are culled are not returned in the feedback buffer. +It can also occur after polygons with more than three edges are broken up +into triangles, +if the GL implementation renders polygons by performing this decomposition. +.P +The \%\f3glPassThrough\fP command can be used to insert a marker +into the feedback buffer. +See \%\f3glPassThrough\fP. +.P +Following is the grammar for the blocks of values written +into the feedback buffer. +Each primitive is indicated with a unique identifying value +followed by some number of vertices. +Polygon entries include an integer value indicating how many vertices follow. +A vertex is fed back as some number of floating-point values, +as determined by \f2type\fP. +Colors are fed back as four values in RGBA mode and one value +in color index mode. +.RS +.na +.sp +feedbackList \(<- feedbackItem feedbackList | feedbackItem +.sp +feedbackItem \(<- point | lineSegment | polygon | bitmap | pixelRectangle | passThru +.sp +point \(<- \%\f3GL_POINT_TOKEN\fP vertex +.sp +lineSegment \(<- \%\f3GL_LINE_TOKEN\fP vertex vertex | \%\f3GL_LINE_RESET_TOKEN\fP vertex vertex +.sp +polygon \(<- \%\f3GL_POLYGON_TOKEN\fP n polySpec +.sp +polySpec \(<- polySpec vertex | vertex vertex vertex +.sp +bitmap \(<- \%\f3GL_BITMAP_TOKEN\fP vertex +.sp +pixelRectangle \(<- \%\f3GL_DRAW_PIXEL_TOKEN\fP vertex | \%\f3GL_COPY_PIXEL_TOKEN\fP vertex +.sp +passThru \(<- \%\f3GL_PASS_THROUGH_TOKEN\fP value +.sp +vertex \(<- 2d | 3d | 3dColor | 3dColorTexture | 4dColorTexture +.sp +2d \(<- value value +.sp +3d \(<- value value value +.sp +3dColor \(<- value value value color +.sp +3dColorTexture \(<- value value value color tex +.sp +4dColorTexture \(<- value value value value color tex +.sp +color \(<- rgba | index +.sp +rgba \(<- value value value value +.sp +index \(<- value +.sp +tex \(<- value value value value +.sp +.RE +.P +.I value +is a floating-point number, +and +.I n +is a floating-point integer giving the number of vertices in the polygon. +\%\f3GL_POINT_TOKEN\fP, +\%\f3GL_LINE_TOKEN\fP, +\%\f3GL_LINE_RESET_TOKEN\fP, +\%\f3GL_POLYGON_TOKEN\fP, +\%\f3GL_BITMAP_TOKEN\fP, +\%\f3GL_DRAW_PIXEL_TOKEN\fP, +\%\f3GL_COPY_PIXEL_TOKEN\fP and +\%\f3GL_PASS_THROUGH_TOKEN\fP are symbolic floating-point constants. +\%\f3GL_LINE_RESET_TOKEN\fP is returned whenever the line stipple pattern +is reset. +The data returned as a vertex depends on the feedback \f2type\fP. +.P +The following table gives the correspondence between \f2type\fP +and the number of values per vertex. +\f2k\fP is 1 in color index mode and 4 in RGBA mode. +.sp +.ne +.TS +center tab(:); +lb lb cb cb cb +l l c c c. +_ +Type:Coordinates:Color:Texture:Total Number of Values +_ +\%\f3GL_2D\fP:\f2x\fP, \f2y\fP:::2 +\%\f3GL_3D\fP:\f2x\fP, \f2y\fP, \f2z\fP:::3 +\%\f3GL_3D_COLOR\fP:\f2x\fP, \f2y\fP, \f2z\fP:$k$::$3 ~+~ k$ +\%\f3GL_3D_COLOR_TEXTURE\fP:\f2x\fP, \f2y\fP, \f2z\fP,:$k$:4:$7 ~+~ k$ +\%\f3GL_4D_COLOR_TEXTURE\fP:\f2x\fP, \f2y\fP, \f2z\fP, \f2w\fP:$k$:4:$8 ~+~ k$ +_ +.TE + +.P +Feedback vertex coordinates are in window coordinates, +except \f2w\fP, +which is in clip coordinates. +Feedback colors are lighted, if lighting is enabled. +Feedback texture coordinates are generated, +if texture coordinate generation is enabled. +They are always transformed by the texture matrix. +.SH NOTES +\%\f3glFeedbackBuffer\fP, when used in a display list, is not compiled into the display list +but is executed immediately. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glFeedbackBuffer\fP +returns only the texture coordinates of texture unit \%\f3GL_TEXTURE0_ARB\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2size\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glFeedbackBuffer\fP is called while the +render mode is \%\f3GL_FEEDBACK\fP, +or if \%\f3glRenderMode\fP is called with argument \%\f3GL_FEEDBACK\fP before +\%\f3glFeedbackBuffer\fP is called at least once. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glFeedbackBuffer\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_RENDER_MODE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_FEEDBACK_BUFFER_POINTER\fP +.br +\%\f3glGet\fP with argument \%\f3GL_FEEDBACK_BUFFER_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_FEEDBACK_BUFFER_TYPE\fP +.SH SEE ALSO +\%\f3glBegin(3G)\fP, +\%\f3glLineStipple(3G)\fP, +\%\f3glPassThrough(3G)\fP, +\%\f3glPolygonMode(3G)\fP, +\%\f3glRenderMode(3G)\fP, +\%\f3glSelectBuffer(3G)\fP Index: xc/doc/man/GL/gl/finish.3gl diff -u /dev/null xc/doc/man/GL/gl/finish.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/finish.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,34 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 finish.gl +.ds Xs 36675 3 finish.gl +.TH GLFINISH 3G +.SH NAME +.B "glFinish +\- block until all GL execution is complete + +.SH C SPECIFICATION +void \f3glFinish\fP( void ) +.nf +.fi + +.SH DESCRIPTION +\%\f3glFinish\fP does not return until the effects of all previously +called GL commands are complete. +Such effects include all changes to GL state, +all changes to connection state, +and all changes to the frame buffer contents. +.SH NOTES +\%\f3glFinish\fP requires a round trip to the server. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glFinish\fP is executed between +the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glFlush(3G)\fP + Index: xc/doc/man/GL/gl/flush.3gl diff -u /dev/null xc/doc/man/GL/gl/flush.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/flush.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,46 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 flush.gl +.ds Xs 64601 4 flush.gl +.TH GLFLUSH 3G +.SH NAME +.B "glFlush +\- force execution of GL commands in finite time + +.SH C SPECIFICATION +void \f3glFlush\fP( void ) +.nf +.fi + +.SH DESCRIPTION +Different GL implementations buffer commands in several different locations, +including network buffers and the graphics accelerator itself. +\%\f3glFlush\fP empties all of these buffers, +causing all issued commands to be executed as quickly as +they are accepted by the actual rendering engine. +Though this execution may not be completed in any particular +time period, +it does complete in finite time. +.P +Because any GL program might be executed over a network, +or on an accelerator that buffers commands, +all programs should call \%\f3glFlush\fP whenever they count on having +all of their previously issued commands completed. +For example, +call \%\f3glFlush\fP before waiting for user input that depends on +the generated image. +.SH NOTES +\%\f3glFlush\fP can return at any time. +It does not wait until the execution of all previously +issued GL commands is complete. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glFlush\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glFinish(3G)\fP Index: xc/doc/man/GL/gl/fog.3gl diff -u /dev/null xc/doc/man/GL/gl/fog.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/fog.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,209 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 fog.gl -> +.ds Xs 7467 7 fog.gl +.TH GLFOG 3G +.SH NAME +.B "glFogf, glFogi, glFogfv, glFogiv +\- specify fog parameters + +.SH C SPECIFICATION +void \f3glFogf\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglFogf( 'u + GLfloat \fIparam\fP ) +.fi +void \f3glFogi\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglFogi( 'u + GLint \fIparam\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIparams\fP\ \ 'u +\f2pname\fP +Specifies a single-valued fog parameter. +\%\f3GL_FOG_MODE\fP, +\%\f3GL_FOG_DENSITY\fP, +\%\f3GL_FOG_START\fP, +\%\f3GL_FOG_END\fP, +and +\%\f3GL_FOG_INDEX\fP +are accepted. +.TP +\f2param\fP +Specifies the value that \f2pname\fP will be set to. +.SH C SPECIFICATION +void \f3glFogfv\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglFogfv( 'u + const GLfloat \fI*params\fP ) +.fi +void \f3glFogiv\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglFogiv( 'u + const GLint \fI*params\fP ) +.fi + +.SH PARAMETERS +.TP +\f2pname\fP +Specifies a fog parameter. +\%\f3GL_FOG_MODE\fP, +\%\f3GL_FOG_DENSITY\fP, +\%\f3GL_FOG_START\fP, +\%\f3GL_FOG_END\fP, +\%\f3GL_FOG_INDEX\fP, +and +\%\f3GL_FOG_COLOR\fP +are accepted. +.TP +\f2params\fP +Specifies the value or values to be assigned to \f2pname\fP. +\%\f3GL_FOG_COLOR\fP requires an array of four values. +All other parameters accept an array containing only a single value. +.SH DESCRIPTION +Fog is initially disabled. +While enabled, fog affects rasterized geometry, +bitmaps, and pixel blocks, but not buffer clear operations. To enable +and disable fog, call \%\f3glEnable\fP and \%\f3glDisable\fP with argument +\%\f3GL_FOG\fP. +.P +\%\f3glFog\fP assigns the value or values in \f2params\fP to the fog parameter +specified by \f2pname\fP. +The following values are accepted for \f2pname\fP: +.TP 20 +\%\f3GL_FOG_MODE\fP +\f2params\fP is a single integer or floating-point value that specifies +the equation to be used to compute the fog blend factor, $f$. +Three symbolic constants are accepted: +\%\f3GL_LINEAR\fP, +\%\f3GL_EXP\fP, +and \%\f3GL_EXP2\fP. +The equations corresponding to these symbolic constants are defined below. +The initial fog mode is \%\f3GL_EXP\fP. +.TP +\%\f3GL_FOG_DENSITY\fP +\f2params\fP is a single integer or floating-point value that specifies $density$, +the fog density used in both exponential fog equations. +Only nonnegative densities are accepted. +The initial fog density is 1. +.TP +\%\f3GL_FOG_START\fP +\f2params\fP is a single integer or floating-point value that specifies $start$, +the near distance used in the linear fog equation. +The initial near distance is 0. +.TP +\%\f3GL_FOG_END\fP +\f2params\fP is a single integer or floating-point value that specifies $end$, +the far distance used in the linear fog equation. +The initial far distance is 1. +.TP +\%\f3GL_FOG_INDEX\fP +\f2params\fP is a single integer or floating-point value that specifies +$i sub f$, +the fog color index. +The initial fog index is 0. +.TP +\%\f3GL_FOG_COLOR\fP +\f2params\fP contains four integer or floating-point values that specify +$C sub f$, the fog color. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +After conversion, +all color components are clamped to the range [0,1]. +The initial fog color is (0, 0, 0, 0). +.P +Fog blends a fog color with each rasterized pixel fragment's posttexturing +color using a blending factor $f$. +Factor $f$ is computed in one of three ways, +depending on the fog mode. +Let $z$ be the distance in eye coordinates from the origin to the fragment +being fogged. +The equation for \%\f3GL_LINEAR\fP fog is +.ce + +.EQ +f ~=~ {end ~-~ z} over {end ~-~ start} +.EN + +.RE +.P +The equation for \%\f3GL_EXP\fP fog is +.ce + +.EQ +f ~=~ e sup {-^(density ~cdot~ z)} +.EN + +.P +The equation for \%\f3GL_EXP2\fP fog is +.ce + +.EQ +f ~=~ e sup {-^(density ~cdot~ z)} sup 2 +.EN + +.P +Regardless of the fog mode, +$f$ is clamped to the range [0,\ 1] after it is computed. +Then, +if the GL is in RGBA color mode, +the fragment's red, green, and blue colors, represented by $C sub r$, +are replaced by +.sp +.ce +.EQ +{C sub r} sup prime ~=~ f^C sub r ~+~ (1 - f)^C sub f +.EN + +.sp +Fog does not affect a fragment's alpha component. +.P +In color index mode, the fragment's color index $i sub r$ is replaced by +.sp +.ce +.EQ +{i sub r} sup prime ~=~ i sub r ~+~ (1 - f)^i sub f +.EN +.P +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2pname\fP is not an accepted value, +or if \f2pname\fP is \%\f3GL_FOG_MODE\fP and \f2params\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2pname\fP is \%\f3GL_FOG_DENSITY\fP, +and \f2params\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glFog\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glIsEnabled\fP with argument \%\f3GL_FOG\fP +.br +\%\f3glGet\fP with argument \%\f3GL_FOG_COLOR\fP +.br +\%\f3glGet\fP with argument \%\f3GL_FOG_INDEX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_FOG_DENSITY\fP +.br +\%\f3glGet\fP with argument \%\f3GL_FOG_START\fP +.br +\%\f3glGet\fP with argument \%\f3GL_FOG_END\fP +.br +\%\f3glGet\fP with argument \%\f3GL_FOG_MODE\fP +.SH SEE ALSO +\%\f3glEnable(3G)\fP Index: xc/doc/man/GL/gl/frontface.3gl diff -u /dev/null xc/doc/man/GL/gl/frontface.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/frontface.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,66 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 frontface +.ds Xs 58804 4 frontface.gl +.TH GLFRONTFACE 3G +.SH NAME +.B "glFrontFace +\- define front- and back-facing polygons + +.SH C SPECIFICATION +void \f3glFrontFace\fP( +GLenum \fImode\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2mode\fP\ \ 'u +\f2mode\fP +Specifies the orientation of front-facing polygons. +\%\f3GL_CW\fP and \%\f3GL_CCW\fP are accepted. +The initial value is \%\f3GL_CCW\fP. +.SH DESCRIPTION +In a scene composed entirely of opaque closed surfaces, +back-facing polygons are never visible. +Eliminating these invisible polygons has the obvious benefit +of speeding up the rendering of the image. +To enable and disable elimination of back-facing polygons, call \%\f3glEnable\fP +and \%\f3glDisable\fP with argument \%\f3GL_CULL_FACE\fP. +.P +The projection of a polygon to window coordinates is said to have +clockwise winding if an imaginary object following the path +from its first vertex, +its second vertex, +and so on, +to its last vertex, +and finally back to its first vertex, +moves in a clockwise direction about the interior of the polygon. +The polygon's winding is said to be counterclockwise if the imaginary +object following the same path moves in a counterclockwise direction +about the interior of the polygon. +\%\f3glFrontFace\fP specifies whether polygons with clockwise winding in window coordinates, +or counterclockwise winding in window coordinates, +are taken to be front-facing. +Passing \%\f3GL_CCW\fP to \f2mode\fP selects counterclockwise polygons as +front-facing; +\%\f3GL_CW\fP selects clockwise polygons as front-facing. +By default, counterclockwise polygons are taken to be front-facing. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glFrontFace\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_FRONT_FACE\fP +.SH SEE ALSO +\%\f3glCullFace(3G)\fP, +\%\f3glLightModel(3G)\fP Index: xc/doc/man/GL/gl/frustum.3gl diff -u /dev/null xc/doc/man/GL/gl/frustum.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/frustum.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,133 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 frustum.g +.ds Xs 13962 6 frustum.gl +.TH GLFRUSTUM 3G +.SH NAME +.B "glFrustum +\- multiply the current matrix by a perspective matrix + +.SH C SPECIFICATION +void \f3glFrustum\fP( +GLdouble \fIleft\fP, +.nf +.ta \w'\f3void \fPglFrustum( 'u + GLdouble \fIright\fP, + GLdouble \fIbottom\fP, + GLdouble \fItop\fP, + GLdouble \fInear_val\fP, + GLdouble \fIfar_val\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2left\fP\ \f2right\fP\ \ 'u +\f2left\fP, \f2right\fP +Specify the coordinates for the left and right vertical clipping planes. +.TP +\f2bottom\fP, \f2top\fP +Specify the coordinates for the bottom and top horizontal clipping planes. +.TP +\f2near_val\fP, \f2far_val\fP +Specify the distances to the near and far depth clipping planes. +Both distances must be positive. +.SH DESCRIPTION +\%\f3glFrustum\fP describes a perspective matrix that produces a perspective projection. +The current matrix (see \%\f3glMatrixMode\fP) is multiplied by this matrix +and the result replaces the current matrix, as if +\%\f3glMultMatrix\fP were called with the following matrix +as its argument: +.P +.sp 5 +.ce +.EQ +down 150 +{left [ ~~~ { +down 165 matrix { + ccol { {{2 ~ "near_val"} over {"right" ~-~ "left"}} above 0 above 0 above 0 } + ccol { 0 above {{2 ~ "near_val"} over {"top" ~-~ "bottom"}} ~ above 0 above 0 } + ccol { A ~~~~ above B ~~~~ above C ~~~~ above -1 ~~~~} + ccol { 0 above 0 above D above 0} +}} +~~~ right ]} +.EN +.sp +.ce +.EQ +down 130 +{A ~=~ {"right" ~+~ "left"} over {"right" ~-~ "left"}} +.EN +.sp +.ce +.EQ +down 130 +{B ~=~ {"top" ~+~ "bottom"} over {"top" ~-~ "bottom"}} +.EN +.sp +.ce +.EQ +down 130 +{C ~=~ -{{"far_val" ~+~ "near_val"} over {"far_val" ~-~ "near_val"}}} +.EN +.sp +.ce +.EQ +down 130 +{D ~=~ -^{{2 ~ "far_val" ~ "near_val"} over {"far_val" ~-~ "near_val"}}} +.EN +.sp 2 +.P +Typically, the matrix mode is \%\f3GL_PROJECTION\fP, and +(\f2left\fP, \f2bottom\fP, \-\f2near_val\fP) and (\f2right\fP, \f2top\fP, \-\f2near_val\fP) +specify the points on the near clipping plane that are mapped +to the lower left and upper right corners of the window, +assuming that the eye is located at (0, 0, 0). +\-\f2far_val\fP specifies the location of the far clipping plane. +Both \f2near_val\fP and \f2far_val\fP must be positive. +.P +Use \%\f3glPushMatrix\fP and \%\f3glPopMatrix\fP to save and restore +the current matrix stack. +.SH NOTES +Depth buffer precision is affected by the values specified for +\f2near_val\fP and \f2far_val\fP. +The greater the ratio of \f2far_val\fP to \f2near_val\fP is, +the less effective the depth buffer will be at distinguishing between +surfaces that are near each other. +If +.sp +.ce +$r ~=~ "far_val" over "near_val"$ +.sp +roughly $log sub 2 (r)$ bits of depth buffer precision are lost. +Because $r$ approaches infinity as \f2near_val\fP approaches 0, +\f2near_val\fP must never be set to 0. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2near_val\fP or \f2far_val\fP is not +positive, or if \f2left\fP = \f2right\fP, or \f2bottom\fP = \f2top\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glFrustum\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MATRIX_MODE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MODELVIEW_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PROJECTION_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_MATRIX\fP +.SH SEE ALSO +\%\f3glOrtho(3G)\fP, +\%\f3glMatrixMode(3G)\fP, +\%\f3glMultMatrix(3G)\fP, +\%\f3glPushMatrix(3G)\fP, +\%\f3glViewport(3G)\fP Index: xc/doc/man/GL/gl/genlists.3gl diff -u /dev/null xc/doc/man/GL/gl/genlists.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/genlists.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,49 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 genlists. +.ds Xs 2609 3 genlists.gl +.TH GLGENLISTS 3G +.SH NAME +.B "glGenLists +\- generate a contiguous set of empty display lists + +.SH C SPECIFICATION +GLuint \f3glGenLists\fP( +GLsizei \fIrange\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2range\fP\ \ 'u +\f2range\fP +Specifies the number of contiguous empty display lists +to be generated. +.SH DESCRIPTION +\%\f3glGenLists\fP has one argument, \f2range\fP. +It returns an integer \f2n\fP such that \f2range\fP contiguous +empty display lists, +named \f2n\fP, \f2n\fP+1, ..., \f2n\fP+\f2range\fP \-1, +are created. +If \f2range\fP is 0, +if there is no group of \f2range\fP contiguous names available, +or if any error is generated, +no display lists are generated, +and 0 is returned. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2range\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGenLists\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glIsList\fP +.SH SEE ALSO +\%\f3glCallList(3G)\fP, +\%\f3glCallLists(3G)\fP, +\%\f3glDeleteLists(3G)\fP, +\%\f3glNewList(3G)\fP Index: xc/doc/man/GL/gl/gentextures.3gl diff -u /dev/null xc/doc/man/GL/gl/gentextures.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/gentextures.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,63 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 gentextur +.ds Xs 11752 4 gentextures.gl +.TH GLGENTEXTURES 3G +.SH NAME +.B "glGenTextures +\- generate texture names + +.SH C SPECIFICATION +void \f3glGenTextures\fP( +GLsizei \fIn\fP, +.nf +.ta \w'\f3void \fPglGenTextures( 'u + GLuint \fI*textures\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fItextures\fP\ \ 'u +\f2n\fP +Specifies the number of texture names to be generated. +.TP +\f2textures\fP +Specifies an array in which the generated texture names are stored. +.SH DESCRIPTION +\%\f3glGenTextures\fP returns \f2n\fP texture names in \f2textures\fP. +There is no guarantee that the names form a contiguous set of integers; +however, it is guaranteed that none of the returned names was in use +immediately before the call to \%\f3glGenTextures\fP. +.P +The generated textures have no dimensionality; they assume the dimensionality +of the texture target to which they are first bound +(see \%\f3glBindTexture\fP). +.P +Texture names returned by a call to \%\f3glGenTextures\fP are not returned by +subsequent calls, unless they are first deleted with +\%\f3glDeleteTextures\fP. +.SH NOTES +\%\f3glGenTextures\fP is available only if the GL version is 1.1 or greater. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2n\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGenTextures\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glIsTexture\fP +.SH SEE ALSO +\%\f3glBindTexture(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glDeleteTextures(3G)\fP, +\%\f3glGet(3G)\fP, +\%\f3glGetTexParameter(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP Index: xc/doc/man/GL/gl/get.3gl diff -u /dev/null xc/doc/man/GL/gl/get.3gl:1.2 --- /dev/null Fri Jan 18 15:20:29 2002 +++ xc/doc/man/GL/gl/get.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,1798 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 get.gl -> +.ds Xs 65323 59 get.gl +.TH GLGET 3G +.SH NAME +.B "glGetBooleanv, glGetDoublev, glGetFloatv, glGetIntegerv +\- return the value or values of a selected parameter + +.SH C SPECIFICATION +void \f3glGetBooleanv\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglGetBooleanv( 'u + GLboolean \fI*params\fP ) +.fi + +.SH C SPECIFICATION +void \f3glGetDoublev\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglGetDoublev( 'u + GLdouble \fI*params\fP ) +.fi + +.SH C SPECIFICATION +void \f3glGetFloatv\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglGetFloatv( 'u + GLfloat \fI*params\fP ) +.fi + +.SH C SPECIFICATION +void \f3glGetIntegerv\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglGetIntegerv( 'u + GLint \fI*params\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIparams\fP\ \ 'u +\f2pname\fP +Specifies the parameter value to be returned. +The symbolic constants in the list below are accepted. +.TP +\f2params\fP +Returns the value or values of the specified parameter. +.SH DESCRIPTION +These four commands return values for simple state variables in GL. +\f2pname\fP is a symbolic constant indicating the state variable to be returned, +and \f2params\fP is a pointer to an array of the indicated type in +which to place the returned data. +.P +Type conversion is performed if \f2params\fP has a different type than +the state variable value being requested. +If \%\f3glGetBooleanv\fP is called, +a floating-point (or integer) value is converted to \%\f3GL_FALSE\fP if +and only if it is 0.0 (or 0). +Otherwise, +it is converted to \%\f3GL_TRUE\fP. +If \%\f3glGetIntegerv\fP is called, boolean values are returned as +\%\f3GL_TRUE\fP or \%\f3GL_FALSE\fP, and most floating-point values are +rounded to the nearest integer value. Floating-point colors and +normals, however, are returned with a linear mapping that maps 1.0 to +the most positive representable integer value, +and \-1.0 to the most negative representable integer value. +If \%\f3glGetFloatv\fP or \%\f3glGetDoublev\fP is called, +boolean values are returned as \%\f3GL_TRUE\fP or \%\f3GL_FALSE\fP, +and integer values are converted to floating-point values. +.P +The following symbolic constants are accepted by \f2pname\fP: +.TP 25 +\%\f3GL_ACCUM_ALPHA_BITS\fP +\f2params\fP returns one value, +the number of alpha bitplanes in the accumulation buffer. +.TP +\%\f3GL_ACCUM_BLUE_BITS\fP +\f2params\fP returns one value, +the number of blue bitplanes in the accumulation buffer. +.TP +\%\f3GL_ACCUM_CLEAR_VALUE\fP +\f2params\fP returns four values: +the red, green, blue, and alpha values used to clear the accumulation buffer. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is (0, 0, 0, 0). +See \%\f3glClearAccum\fP. +.TP +\%\f3GL_ACCUM_GREEN_BITS\fP +\f2params\fP returns one value, +the number of green bitplanes in the accumulation buffer. +.TP +\%\f3GL_ACCUM_RED_BITS\fP +\f2params\fP returns one value, +the number of red bitplanes in the accumulation buffer. +.TP +\%\f3GL_ACTIVE_TEXTURE_ARB\fP +\f2params\fP returns a single value indicating the active multitexture unit. +The initial value is \%\f3GL_TEXTURE0_ARB\fP. +See \%\f3glActiveTextureARB\fP. +.TP +\%\f3GL_ALIASED_POINT_SIZE_RANGE\fP +\f2params\fP returns two values, +the smallest and largest supported sizes for aliased points. +.TP +\%\f3GL_ALIASED_LINE_WIDTH_RANGE\fP +\f2params\fP returns two values, +the smallest and largest supported widths for aliased lines. +.TP +\%\f3GL_ALPHA_BIAS\fP +\f2params\fP returns one value, +the alpha bias factor used during pixel transfers. The initial value is 0. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_ALPHA_BITS\fP +\f2params\fP returns one value, +the number of alpha bitplanes in each color buffer. +.TP +\%\f3GL_ALPHA_SCALE\fP +\f2params\fP returns one value, +the alpha scale factor used during pixel transfers. The initial value is 1. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_ALPHA_TEST\fP +\f2params\fP returns a single boolean value indicating whether alpha testing +of fragments is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glAlphaFunc\fP. +.TP +\%\f3GL_ALPHA_TEST_FUNC\fP +\f2params\fP returns one value, +the symbolic name of the alpha test function. The initial value is +\%\f3GL_ALWAYS\fP. +See \%\f3glAlphaFunc\fP. +.TP +\%\f3GL_ALPHA_TEST_REF\fP +\f2params\fP returns one value, +the reference value for the alpha test. The initial value is 0. +See \%\f3glAlphaFunc\fP. +An integer value, +if requested, +is linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer value. +.TP +\%\f3GL_ATTRIB_STACK_DEPTH\fP +\f2params\fP returns one value, +the depth of the attribute stack. +If the stack is empty, +0 is returned. The initial value is 0. +See \%\f3glPushAttrib\fP. +.TP +\%\f3GL_AUTO_NORMAL\fP +\f2params\fP returns a single boolean value indicating whether 2D map evaluation +automatically generates surface normals. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glMap2\fP. +.TP +\%\f3GL_AUX_BUFFERS\fP +\f2params\fP returns one value, +the number of auxiliary color buffers. The initial value is 0. +.TP +\%\f3GL_BLEND\fP +\f2params\fP returns a single boolean value indicating whether blending is +enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glBlendFunc\fP. +.TP +\%\f3GL_BLEND_COLOR\fP +\f2params\fP returns four values, +the red, green, blue, and alpha values which are the components of +the blend color. +See \%\f3glBlendColor\fP. +.TP +\%\f3GL_BLEND_DST\fP +\f2params\fP returns one value, +the symbolic constant identifying the destination blend +function. The initial value is \%\f3GL_ZERO\fP. +See \%\f3glBlendFunc\fP. +.TP +\%\f3GL_BLEND_EQUATION\fP +\f2params\fP returns one value, a symbolic constant indicating whether +the blend equation is \%\f3GL_FUNC_ADD\fP, \%\f3GL_MIN\fP or +\%\f3GL_MAX\fP. See \%\f3glBlendEquation\fP. +.TP +\%\f3GL_BLEND_SRC\fP +\f2params\fP returns one value, +the symbolic constant identifying the source blend function. The initial +value is \%\f3GL_ONE\fP. +See \%\f3glBlendFunc\fP. +.TP +\%\f3GL_BLUE_BIAS\fP +\f2params\fP returns one value, +the blue bias factor used during pixel transfers. The initial value is 0. +See +\%\f3glPixelTransfer\fP. +.TP +\%\f3GL_BLUE_BITS\fP +\f2params\fP returns one value, +the number of blue bitplanes in each color buffer. +.TP +\%\f3GL_BLUE_SCALE\fP +\f2params\fP returns one value, +the blue scale factor used during pixel transfers. The initial value is 1. +See +\%\f3glPixelTransfer\fP. +.TP +\%\f3GL_CLIENT_ACTIVE_TEXTURE_ARB\fP +\f2params\fP returns a single integer value indicating the current client active +multitexture unit. The initial value is \%\f3GL_TEXTURE0_ARB\fP. +See \%\f3glClientActiveTextureARB\fP. +.TP +\%\f3GL_CLIENT_ATTRIB_STACK_DEPTH\fP +\f2params\fP returns one value indicating the depth of the +attribute stack. The initial value is 0. +See \%\f3glPushClientAttrib\fP. +.TP +\%\f3GL_CLIP_PLANE\fP\f2i\fP +\f2params\fP returns a single boolean value indicating whether the specified +clipping plane is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glClipPlane\fP. +.TP +\%\f3GL_COLOR_ARRAY\fP +\f2params\fP returns a single boolean value indicating whether the color array is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glColorPointer\fP. +.TP +\%\f3GL_COLOR_ARRAY_SIZE\fP +\f2params\fP returns one value, +the number of components per color in the color array. The initial value +is 4. See \%\f3glColorPointer\fP. +.TP +\%\f3GL_COLOR_ARRAY_STRIDE\fP +\f2params\fP returns one value, +the byte offset between consecutive colors in the color array. The initial +value is 0. +See \%\f3glColorPointer\fP. +.TP +\%\f3GL_COLOR_ARRAY_TYPE\fP +\f2params\fP returns one value, +the data type of each component in the color array. The initial value +is \%\f3GL_FLOAT\fP. See \%\f3glColorPointer\fP. +.TP +\%\f3GL_COLOR_CLEAR_VALUE\fP +\f2params\fP returns four values: +the red, green, blue, and alpha values used to clear the color buffers. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is (0, 0, 0, 0). +See \%\f3glClearColor\fP. +.TP +\%\f3GL_COLOR_LOGIC_OP\fP +\f2params\fP returns a single boolean value indicating whether a fragment's +RGBA color values are merged into the framebuffer using a logical +operation. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glLogicOp\fP. +.TP +\%\f3GL_COLOR_MATERIAL\fP +\f2params\fP returns a single boolean value indicating whether one or more +material parameters are tracking the current color. The initial value +is \%\f3GL_FALSE\fP. +See \%\f3glColorMaterial\fP. +.TP +\%\f3GL_COLOR_MATERIAL_FACE\fP +\f2params\fP returns one value, +a symbolic constant indicating which materials have a parameter that is +tracking the current color. The initial value is \%\f3GL_FRONT_AND_BACK\fP. +See \%\f3glColorMaterial\fP. +.TP +\%\f3GL_COLOR_MATERIAL_PARAMETER\fP +\f2params\fP returns one value, +a symbolic constant indicating which material parameters are +tracking the current color. The initial value is +\%\f3GL_AMBIENT_AND_DIFFUSE\fP. +See \%\f3glColorMaterial\fP. +.TP +\%\f3GL_COLOR_MATRIX\fP +\f2params\fP returns sixteen values: +the color matrix on the top of the color matrix stack. Initially +this matrix is the identity matrix. See \%\f3glPushMatrix\fP. +.TP +\%\f3GL_COLOR_MATRIX_STACK_DEPTH\fP +\f2params\fP returns one value, +the maximum supported depth of the projection matrix stack. The value must +be at least 2. +See \%\f3glPushMatrix\fP. +.TP +\%\f3GL_COLOR_TABLE\fP +\f2params\fP returns a single boolean value indicating whether the color table +lookup is enabled. +See \%\f3glColorTable\fP. +.TP +\%\f3GL_COLOR_WRITEMASK\fP +\f2params\fP returns four boolean values: +the red, green, blue, and alpha write enables for the color +buffers. The initial value is (\%\f3GL_TRUE\fP, \%\f3GL_TRUE\fP, +\%\f3GL_TRUE\fP, \%\f3GL_TRUE\fP). +See \%\f3glColorMask\fP. +.TP +\%\f3GL_CONVOLUTION_1D\fP +\f2params\fP returns a single boolean value indicating whether 1D convolution +is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glConvolutionFilter1D\fP. +.TP +\%\f3GL_CONVOLUTION_2D\fP +\f2params\fP returns a single boolean value indicating whether 2D convolution +is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glConvolutionFilter2D\fP. +.TP +\%\f3GL_CULL_FACE\fP +\f2params\fP returns a single boolean value indicating whether polygon culling +is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glCullFace\fP. +.TP +\%\f3GL_CULL_FACE_MODE\fP +\f2params\fP returns one value, +a symbolic constant indicating which polygon faces are to be +culled. The initial value is \%\f3GL_BACK\fP. +See \%\f3glCullFace\fP. +.TP +\%\f3GL_CURRENT_COLOR\fP +\f2params\fP returns four values: +the red, green, blue, and alpha values of the current color. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer value. +See \%\f3glColor\fP. The initial value is (1, 1, 1, 1). +.TP +\%\f3GL_CURRENT_INDEX\fP +\f2params\fP returns one value, +the current color index. The initial value is 1. +See \%\f3glIndex\fP. +.TP +\%\f3GL_CURRENT_NORMAL\fP +\f2params\fP returns three values: +the \f2x\fP, \f2y\fP, and \f2z\fP values of the current normal. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer value. +The initial value is (0, 0, 1). See \%\f3glNormal\fP. +.TP +\%\f3GL_CURRENT_RASTER_COLOR\fP +\f2params\fP returns four values: +the red, green, blue, and alpha values of the current raster position. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is (1, 1, 1, 1). +See \%\f3glRasterPos\fP. +.TP +\%\f3GL_CURRENT_RASTER_DISTANCE\fP +\f2params\fP returns one value, +the distance from the eye to the current raster position. The initial +value is 0. +See \%\f3glRasterPos\fP. +.TP +\%\f3GL_CURRENT_RASTER_INDEX\fP +\f2params\fP returns one value, +the color index of the current raster position. The initial value is 1. +See \%\f3glRasterPos\fP. +.TP +\%\f3GL_CURRENT_RASTER_POSITION\fP +\f2params\fP returns four values: +the \f2x\fP, \f2y\fP, \f2z\fP, and \f2w\fP components of the current +raster position. +\f2x\fP, \f2y\fP, and \f2z\fP are in window coordinates, +and \f2w\fP is in clip coordinates. The initial value is (0, 0, 0, 1). +See \%\f3glRasterPos\fP. +.TP +\%\f3GL_CURRENT_RASTER_POSITION_VALID\fP +\f2params\fP returns a single boolean value indicating whether the current +raster position is valid. The initial value is \%\f3GL_TRUE\fP. +See \%\f3glRasterPos\fP. +.TP +\%\f3GL_CURRENT_RASTER_TEXTURE_COORDS\fP +\f2params\fP returns four values: +the \f2s\fP, \f2t\fP, \f2r\fP, and \f2q\fP +current raster texture coordinates. The initial value is (0, 0, 0, 1). +See \%\f3glRasterPos\fP and \%\f3glTexCoord\fP. +.TP +\%\f3GL_CURRENT_TEXTURE_COORDS\fP +\f2params\fP returns four values: +the \f2s\fP, \f2t\fP, \f2r\fP, and \f2q\fP current texture +coordinates. The initial value is (0, 0, 0, 1). +See +\%\f3glTexCoord\fP. +.TP +\%\f3GL_DEPTH_BIAS\fP +\f2params\fP returns one value, +the depth bias factor used during pixel transfers. The initial value is 0. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_DEPTH_BITS\fP +\f2params\fP returns one value, +the number of bitplanes in the depth buffer. +.TP +\%\f3GL_DEPTH_CLEAR_VALUE\fP +\f2params\fP returns one value, +the value that is used to clear the depth buffer. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is 1. +See \%\f3glClearDepth\fP. +.TP +\%\f3GL_DEPTH_FUNC\fP +\f2params\fP returns one value, +the symbolic constant that indicates the depth comparison +function. The initial value is \%\f3GL_LESS\fP. +See \%\f3glDepthFunc\fP. +.TP +\%\f3GL_DEPTH_RANGE\fP +\f2params\fP returns two values: +the near and far mapping limits for the depth buffer. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is (0, 1). +See \%\f3glDepthRange\fP. +.TP +\%\f3GL_DEPTH_SCALE\fP +\f2params\fP returns one value, +the depth scale factor used during pixel transfers. The initial value is 1. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_DEPTH_TEST\fP +\f2params\fP returns a single boolean value indicating whether depth testing +of fragments is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glDepthFunc\fP and \%\f3glDepthRange\fP. +.TP +\%\f3GL_DEPTH_WRITEMASK\fP +\f2params\fP returns a single boolean value indicating if the depth buffer +is enabled for writing. The initial value is \%\f3GL_TRUE\fP. +See \%\f3glDepthMask\fP. +.TP +\%\f3GL_DITHER\fP +\f2params\fP returns a single boolean value indicating whether dithering of +fragment colors and indices is enabled. The initial value is \%\f3GL_TRUE\fP. +.TP +\%\f3GL_DOUBLEBUFFER\fP +\f2params\fP returns a single boolean value indicating whether double buffering +is supported. +.TP +\%\f3GL_DRAW_BUFFER\fP +\f2params\fP returns one value, +a symbolic constant indicating which buffers are being drawn to. +See \%\f3glDrawBuffer\fP. The initial value is \%\f3GL_BACK\fP if there +are back buffers, otherwise it is \%\f3GL_FRONT\fP. +.TP +\%\f3GL_EDGE_FLAG\fP +\f2params\fP returns a single boolean value indicating whether the current +edge flag is \%\f3GL_TRUE\fP or \%\f3GL_FALSE\fP. The initial value is \%\f3GL_TRUE\fP. +See \%\f3glEdgeFlag\fP. +.TP +\%\f3GL_EDGE_FLAG_ARRAY\fP +\f2params\fP returns a single boolean value indicating whether the edge +flag array is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glEdgeFlagPointer\fP. +.TP +\%\f3GL_EDGE_FLAG_ARRAY_STRIDE\fP +\f2params\fP returns one value, +the byte offset between consecutive edge flags in the edge flag +array. The initial value is 0. +See \%\f3glEdgeFlagPointer\fP. +.TP +\%\f3GL_FEEDBACK_BUFFER_SIZE\fP +\f2params\fP returns one value, the size of the feedback buffer. See +\%\f3glFeedbackBuffer\fP. +.TP +\%\f3GL_FEEDBACK_BUFFER_TYPE\fP +\f2params\fP returns one value, the type of the feedback buffer. See +\%\f3glFeedbackBuffer\fP. +.TP +\%\f3GL_FOG\fP +\f2params\fP returns a single boolean value indicating whether fogging is +enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glFog\fP. +.TP +\%\f3GL_FOG_COLOR\fP +\f2params\fP returns four values: +the red, green, blue, and alpha components of the fog color. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is (0, 0, 0, 0). +See \%\f3glFog\fP. +.TP +\%\f3GL_FOG_DENSITY\fP +\f2params\fP returns one value, +the fog density parameter. The initial value is 1. +See \%\f3glFog\fP. +.TP +\%\f3GL_FOG_END\fP +\f2params\fP returns one value, +the end factor for the linear fog equation. The initial value is 1. +See \%\f3glFog\fP. +.TP +\%\f3GL_FOG_HINT\fP +\f2params\fP returns one value, +a symbolic constant indicating the mode of the fog hint. The initial value +is \%\f3GL_DONT_CARE\fP. +See \%\f3glHint\fP. +.TP +\%\f3GL_FOG_INDEX\fP +\f2params\fP returns one value, +the fog color index. The initial value is 0. +See \%\f3glFog\fP. +.TP +\%\f3GL_FOG_MODE\fP +\f2params\fP returns one value, +a symbolic constant indicating which fog equation is selected. The initial +value is \%\f3GL_EXP\fP. +See \%\f3glFog\fP. +.TP +\%\f3GL_FOG_START\fP +\f2params\fP returns one value, +the start factor for the linear fog equation. The initial value is 0. +See \%\f3glFog\fP. +.TP +\%\f3GL_FRONT_FACE\fP +\f2params\fP returns one value, +a symbolic constant indicating whether clockwise or counterclockwise +polygon winding is treated as front-facing. The initial value is +\%\f3GL_CCW\fP. +See \%\f3glFrontFace\fP. +.TP +\%\f3GL_GREEN_BIAS\fP +\f2params\fP returns one value, +the green bias factor used during pixel transfers. The initial value is 0. +.TP +\%\f3GL_GREEN_BITS\fP +\f2params\fP returns one value, +the number of green bitplanes in each color buffer. +.TP +\%\f3GL_GREEN_SCALE\fP +\f2params\fP returns one value, +the green scale factor used during pixel transfers. The initial value is 1. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_HISTOGRAM\fP +\f2params\fP returns a single boolean value indicating whether histogram is +enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glHistogram\fP. +.TP +\%\f3GL_INDEX_ARRAY\fP +\f2params\fP returns a single boolean value indicating whether the color +index array is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glIndexPointer\fP. +.TP +\%\f3GL_INDEX_ARRAY_STRIDE\fP +\f2params\fP returns one value, +the byte offset between consecutive color indexes in the color index +array. The initial value is 0. +See \%\f3glIndexPointer\fP. +.TP +\%\f3GL_INDEX_ARRAY_TYPE\fP +\f2params\fP returns one value, +the data type of indexes in the color index array. The initial value is +\%\f3GL_FLOAT\fP. +See \%\f3glIndexPointer\fP. +.TP +\%\f3GL_INDEX_BITS\fP +\f2params\fP returns one value, +the number of bitplanes in each color index buffer. +.TP +\%\f3GL_INDEX_CLEAR_VALUE\fP +\f2params\fP returns one value, +the color index used to clear the color index buffers. The initial value +is 0. +See \%\f3glClearIndex\fP. +.TP +\%\f3GL_INDEX_LOGIC_OP\fP +\f2params\fP returns a single boolean value indicating whether a fragment's index +values are merged into the framebuffer using a logical +operation. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glLogicOp\fP. +.TP +\%\f3GL_INDEX_MODE\fP +\f2params\fP returns a single boolean value indicating whether the GL is in +color index mode (\%\f3GL_TRUE\fP) or RGBA mode (\%\f3GL_FALSE\fP). +.TP +\%\f3GL_INDEX_OFFSET\fP +\f2params\fP returns one value, +the offset added to color and stencil indices during pixel +transfers. The initial value is 0. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_INDEX_SHIFT\fP +\f2params\fP returns one value, +the amount that color and stencil indices are shifted during pixel +transfers. The initial value is 0. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_INDEX_WRITEMASK\fP +\f2params\fP returns one value, +a mask indicating which bitplanes of each color index buffer can be +written. The initial value is all 1's. +See \%\f3glIndexMask\fP. +.TP +\%\f3GL_LIGHT\fP\f2i\fP +\f2params\fP returns a single boolean value indicating whether the specified +light is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glLight\fP and \%\f3glLightModel\fP. +.TP +\%\f3GL_LIGHTING\fP +\f2params\fP returns a single boolean value indicating whether lighting is +enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glLightModel\fP. +.TP +\%\f3GL_LIGHT_MODEL_AMBIENT\fP +\f2params\fP returns four values: +the red, green, blue, and alpha components of the ambient intensity of +the entire scene. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is (0.2, 0.2, 0.2, 1.0). +See \%\f3glLightModel\fP. +.TP +\%\f3GL_LIGHT_MODEL_COLOR_CONTROL\fP +\f2params\fP returns single enumerated value indicating whether specular +reflection calculations are separated from normal lighting computations. +The initial value is \%\f3GL_SINGLE_COLOR\fP. +.TP +\%\f3GL_LIGHT_MODEL_LOCAL_VIEWER\fP +\f2params\fP returns a single boolean value indicating whether specular reflection +calculations treat the viewer as being local to the scene. The initial +value is \%\f3GL_FALSE\fP. +See \%\f3glLightModel\fP. +.TP +\%\f3GL_LIGHT_MODEL_TWO_SIDE\fP +\f2params\fP returns a single boolean value indicating whether separate materials +are used to compute lighting for front- and back-facing +polygons. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glLightModel\fP. +.TP +\%\f3GL_LINE_SMOOTH\fP +\f2params\fP returns a single boolean value indicating whether antialiasing of +lines is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glLineWidth\fP. +.TP +\%\f3GL_LINE_SMOOTH_HINT\fP +\f2params\fP returns one value, +a symbolic constant indicating the mode of the line antialiasing +hint. The initial value is \%\f3GL_DONT_CARE\fP. +See \%\f3glHint\fP. +.TP +\%\f3GL_LINE_STIPPLE\fP +\f2params\fP returns a single boolean value indicating whether stippling of lines +is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glLineStipple\fP. +.TP +\%\f3GL_LINE_STIPPLE_PATTERN\fP +\f2params\fP returns one value, +the 16-bit line stipple pattern. The initial value is all 1's. +See \%\f3glLineStipple\fP. +.TP +\%\f3GL_LINE_STIPPLE_REPEAT\fP +\f2params\fP returns one value, +the line stipple repeat factor. The initial value is 1. +See \%\f3glLineStipple\fP. +.TP +\%\f3GL_LINE_WIDTH\fP +\f2params\fP returns one value, +the line width as specified with \%\f3glLineWidth\fP. The initial value is +1. +.TP +\%\f3GL_LINE_WIDTH_GRANULARITY\fP +\f2params\fP returns one value, +the width difference between adjacent supported widths for antialiased lines. +See \%\f3glLineWidth\fP. +.TP +\%\f3GL_LINE_WIDTH_RANGE\fP +\f2params\fP returns two values: +the smallest and largest supported widths for antialiased +lines. +See \%\f3glLineWidth\fP. +.TP +\%\f3GL_LIST_BASE\fP +\f2params\fP returns one value, +the base offset added to all names in arrays presented to +\%\f3glCallLists\fP. The initial value is 0. +See \%\f3glListBase\fP. +.TP +\%\f3GL_LIST_INDEX\fP +\f2params\fP returns one value, +the name of the display list currently under construction. +0 is returned if no display list is currently under +construction. The initial value is 0. +See \%\f3glNewList\fP. +.TP +\%\f3GL_LIST_MODE\fP +\f2params\fP returns one value, +a symbolic constant indicating the construction mode of the display list +currently under construction. The initial value is 0. +See \%\f3glNewList\fP. +.TP +\%\f3GL_LOGIC_OP_MODE\fP +\f2params\fP returns one value, +a symbolic constant indicating the selected logic operation +mode. The initial value is \%\f3GL_COPY\fP. +See \%\f3glLogicOp\fP. +.TP +\%\f3GL_MAP1_COLOR_4\fP +\f2params\fP returns a single boolean value indicating whether +1D evaluation generates colors. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_GRID_DOMAIN\fP +\f2params\fP returns two values: +the endpoints of the 1D map's grid domain. The initial value is (0, 1). +See \%\f3glMapGrid\fP. +.TP +\%\f3GL_MAP1_GRID_SEGMENTS\fP +\f2params\fP returns one value, +the number of partitions in the 1D map's grid domain. The initial value +is 1. +See \%\f3glMapGrid\fP. +.TP +\%\f3GL_MAP1_INDEX\fP +\f2params\fP returns a single boolean value indicating whether +1D evaluation generates color indices. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_NORMAL\fP +\f2params\fP returns a single boolean value indicating whether +1D evaluation generates normals. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_TEXTURE_COORD_1\fP +\f2params\fP returns a single boolean value indicating whether +1D evaluation generates 1D texture coordinates. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_TEXTURE_COORD_2\fP +\f2params\fP returns a single boolean value indicating whether +1D evaluation generates 2D texture coordinates. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_TEXTURE_COORD_3\fP +\f2params\fP returns a single boolean value indicating whether +1D evaluation generates 3D texture coordinates. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_TEXTURE_COORD_4\fP +\f2params\fP returns a single boolean value indicating whether +1D evaluation generates 4D texture coordinates. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_VERTEX_3\fP +\f2params\fP returns a single boolean value indicating whether +1D evaluation generates 3D vertex coordinates. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP1_VERTEX_4\fP +\f2params\fP returns a single boolean value indicating whether +1D evaluation generates 4D vertex coordinates. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glMap1\fP. +.TP +\%\f3GL_MAP2_COLOR_4\fP +\f2params\fP returns a single boolean value indicating whether +2D evaluation generates colors. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_GRID_DOMAIN\fP +\f2params\fP returns four values: +the endpoints of the 2D map's $i$ and $j$ grid domains. The initial value +is (0,1; 0,1). +See \%\f3glMapGrid\fP. +.TP +\%\f3GL_MAP2_GRID_SEGMENTS\fP +\f2params\fP returns two values: +the number of partitions in the 2D map's $i$ and $j$ grid +domains. The initial value is (1,1). +See \%\f3glMapGrid\fP. +.TP +\%\f3GL_MAP2_INDEX\fP +\f2params\fP returns a single boolean value indicating whether +2D evaluation generates color indices. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_NORMAL\fP +\f2params\fP returns a single boolean value indicating whether +2D evaluation generates normals. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_TEXTURE_COORD_1\fP +\f2params\fP returns a single boolean value indicating whether +2D evaluation generates 1D texture coordinates. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_TEXTURE_COORD_2\fP +\f2params\fP returns a single boolean value indicating whether +2D evaluation generates 2D texture coordinates. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_TEXTURE_COORD_3\fP +\f2params\fP returns a single boolean value indicating whether +2D evaluation generates 3D texture coordinates. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_TEXTURE_COORD_4\fP +\f2params\fP returns a single boolean value indicating whether +2D evaluation generates 4D texture coordinates. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_VERTEX_3\fP +\f2params\fP returns a single boolean value indicating whether +2D evaluation generates 3D vertex coordinates. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP2_VERTEX_4\fP +\f2params\fP returns a single boolean value indicating whether +2D evaluation generates 4D vertex coordinates. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glMap2\fP. +.TP +\%\f3GL_MAP_COLOR\fP +\f2params\fP returns a single boolean value indicating if colors and +color indices are to be replaced by table lookup during pixel +transfers. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_MAP_STENCIL\fP +\f2params\fP returns a single boolean value indicating if stencil indices +are to be replaced by table lookup during pixel transfers. The initial +value is \%\f3GL_FALSE\fP. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_MATRIX_MODE\fP +\f2params\fP returns one value, +a symbolic constant indicating which matrix stack is currently the +target of all matrix operations. The initial value is \%\f3GL_MODELVIEW\fP. +See \%\f3glMatrixMode\fP. +.TP +\%\f3GL_MAX_3D_TEXTURE_SIZE\fP +\f2params\fP returns one value, +a rough estimate of the largest 3D texture that the GL can handle. +If the GL version is 1.2 or greater, use +\%\f3GL_PROXY_TEXTURE_3D\fP to determine if a texture is too large. +See \%\f3glTexImage3D\fP. +.TP +\%\f3GL_MAX_CLIENT_ATTRIB_STACK_DEPTH\fP +\f2params\fP returns one value indicating the maximum supported depth +of the client attribute stack. +See \%\f3glPushClientAttrib\fP. +.TP +\%\f3GL_MAX_ATTRIB_STACK_DEPTH\fP +\f2params\fP returns one value, +the maximum supported depth of the attribute stack. The value must be at least 16. +See \%\f3glPushAttrib\fP. +.TP +\%\f3GL_MAX_CLIP_PLANES\fP +\f2params\fP returns one value, +the maximum number of application-defined clipping planes. The value must be at least 6. +See \%\f3glClipPlane\fP. +.TP +\%\f3GL_MAX_COLOR_MATRIX_STACK_DEPTH\fP +\f2params\fP returns one value, the maximum supported depth of the color matrix +stack. The value must be at least 2. +See \%\f3glPushMatrix\fP. +.TP +\%\f3GL_MAX_ELEMENTS_INDICES\fP +\f2params\fP returns one value, +the recommended maximum number of vertex array indices. See \%\f3glDrawRangeElements\fP. +.TP +\%\f3GL_MAX_ELEMENTS_VERTICES\fP +\f2params\fP returns one value, +the recommended maximum number of vertex array vertices. See \%\f3glDrawRangeElements\fP. +.TP +\%\f3GL_MAX_EVAL_ORDER\fP +\f2params\fP returns one value, +the maximum equation order supported by 1D and 2D +evaluators. The value must be at least 8. +See \%\f3glMap1\fP and \%\f3glMap2\fP. +.TP +\%\f3GL_MAX_LIGHTS\fP +\f2params\fP returns one value, +the maximum number of lights. The value must be at least 8. +See \%\f3glLight\fP. +.TP +\%\f3GL_MAX_LIST_NESTING\fP +\f2params\fP returns one value, +the maximum recursion depth allowed during display-list +traversal. The value must be at least 64. +See \%\f3glCallList\fP. +.TP +\%\f3GL_MAX_MODELVIEW_STACK_DEPTH\fP +\f2params\fP returns one value, +the maximum supported depth of the modelview matrix stack. The value must +be at least 32. +See \%\f3glPushMatrix\fP. +.TP +\%\f3GL_MAX_NAME_STACK_DEPTH\fP +\f2params\fP returns one value, +the maximum supported depth of the selection name stack. The value must be at least 64. +See \%\f3glPushName\fP. +.TP +\%\f3GL_MAX_PIXEL_MAP_TABLE\fP +\f2params\fP returns one value, +the maximum supported size of a \%\f3glPixelMap\fP lookup table. +The value must be at least 32. +See \%\f3glPixelMap\fP. +.TP +\%\f3GL_MAX_PROJECTION_STACK_DEPTH\fP +\f2params\fP returns one value, +the maximum supported depth of the projection matrix stack. The value must be at least 2. +See \%\f3glPushMatrix\fP. +.TP +\%\f3GL_MAX_TEXTURE_SIZE\fP +\f2params\fP returns one value. +The value gives a rough estimate of the largest texture that +the GL can handle. +If the GL version is 1.1 or greater, use +\%\f3GL_PROXY_TEXTURE_1D\fP or \%\f3GL_PROXY_TEXTURE_2D\fP +to determine if a texture is too large. +See \%\f3glTexImage1D\fP and \%\f3glTexImage2D\fP. +.TP +\%\f3GL_MAX_TEXTURE_STACK_DEPTH\fP +\f2params\fP returns one value, +the maximum supported depth of the texture matrix stack. The value must be at least 2. +See \%\f3glPushMatrix\fP. +.TP +\%\f3GL_MAX_TEXTURE_UNITS_ARB\fP +\f2params\fP returns a single value indicating the number of texture units +supported. The value must be at least 1. +See \%\f3glActiveTextureARB\fP. +.TP +\%\f3GL_MAX_VIEWPORT_DIMS\fP +\f2params\fP returns two values: +the maximum supported width and height of the viewport. +These must be at least as large as the visible dimensions of the display +being rendered to. +See \%\f3glViewport\fP. +.TP +\%\f3GL_MINMAX\fP +\f2params\fP returns a single boolean value indicating whether pixel minmax +values are computed. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glMinmax\fP. +.TP +\%\f3GL_MODELVIEW_MATRIX\fP +\f2params\fP returns sixteen values: +the modelview matrix on the top of the modelview matrix stack. Initially +this matrix is the identity matrix. See \%\f3glPushMatrix\fP. +.TP +\%\f3GL_MODELVIEW_STACK_DEPTH\fP +\f2params\fP returns one value, +the number of matrices on the modelview matrix stack. +The initial value is 1. +See \%\f3glPushMatrix\fP. +.TP +\%\f3GL_NAME_STACK_DEPTH\fP +\f2params\fP returns one value, +the number of names on the selection name stack. The initial value is 0. +See \%\f3glPushName\fP. +.TP +\%\f3GL_NORMAL_ARRAY\fP +\f2params\fP returns a single boolean value, indicating whether the normal +array is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glNormalPointer\fP. +.TP +\%\f3GL_NORMAL_ARRAY_STRIDE\fP +\f2params\fP returns one value, +the byte offset between consecutive normals in the normal +array. The initial value is 0. +See \%\f3glNormalPointer\fP. +.TP +\%\f3GL_NORMAL_ARRAY_TYPE\fP +\f2params\fP returns one value, +the data type of each coordinate in the normal array. The initial value is +\%\f3GL_FLOAT\fP. +See \%\f3glNormalPointer\fP. +.TP +\%\f3GL_NORMALIZE\fP +\f2params\fP returns a single boolean value indicating whether normals are +automatically scaled to unit length after they have been transformed to +eye coordinates. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glNormal\fP. +.TP +\%\f3GL_PACK_ALIGNMENT\fP +\f2params\fP returns one value, +the byte alignment used for writing pixel data to memory. The initial +value is 4. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_PACK_IMAGE_HEIGHT\fP +\f2params\fP returns one value, +the image height used for writing pixel data to memory. The initial +value is 0. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_PACK_LSB_FIRST\fP +\f2params\fP returns a single boolean value indicating whether single-bit +pixels being written to memory are written first to the least significant +bit of each unsigned byte. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_PACK_ROW_LENGTH\fP +\f2params\fP returns one value, +the row length used for writing pixel data to memory. The initial value is +0. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_PACK_SKIP_IMAGES\fP +\f2params\fP returns one value, +the number of pixel images skipped before the first pixel is written +into memory. The initial value is 0. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_PACK_SKIP_PIXELS\fP +\f2params\fP returns one value, +the number of pixel locations skipped before the first pixel is written +into memory. The initial value is 0. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_PACK_SKIP_ROWS\fP +\f2params\fP returns one value, +the number of rows of pixel locations skipped before the first pixel is written +into memory. The initial value is 0. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_PACK_SWAP_BYTES\fP +\f2params\fP returns a single boolean value indicating whether the bytes of +two-byte and four-byte pixel indices and components are swapped before being +written to memory. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_PERSPECTIVE_CORRECTION_HINT\fP +\f2params\fP returns one value, +a symbolic constant indicating the mode of the perspective correction +hint. The initial value is \%\f3GL_DONT_CARE\fP. +See \%\f3glHint\fP. +.TP +\%\f3GL_PIXEL_MAP_A_TO_A_SIZE\fP +\f2params\fP returns one value, +the size of the alpha-to-alpha pixel translation table. +The initial value is 1. +See \%\f3glPixelMap\fP. +.TP +\%\f3GL_PIXEL_MAP_B_TO_B_SIZE\fP +\f2params\fP returns one value, +the size of the blue-to-blue pixel translation table. +The initial value is 1. +See \%\f3glPixelMap\fP. +.TP +\%\f3GL_PIXEL_MAP_G_TO_G_SIZE\fP +\f2params\fP returns one value, +the size of the green-to-green pixel translation table. +The initial value is 1. +See \%\f3glPixelMap\fP. +.TP +\%\f3GL_PIXEL_MAP_I_TO_A_SIZE\fP +\f2params\fP returns one value, +the size of the index-to-alpha pixel translation table. +The initial value is 1. +See \%\f3glPixelMap\fP. +.TP +\%\f3GL_PIXEL_MAP_I_TO_B_SIZE\fP +\f2params\fP returns one value, +the size of the index-to-blue pixel translation table. +The initial value is 1. +See \%\f3glPixelMap\fP. +.TP +\%\f3GL_PIXEL_MAP_I_TO_G_SIZE\fP +\f2params\fP returns one value, +the size of the index-to-green pixel translation table. +The initial value is 1. +See \%\f3glPixelMap\fP. +.TP +\%\f3GL_PIXEL_MAP_I_TO_I_SIZE\fP +\f2params\fP returns one value, +the size of the index-to-index pixel translation table. +The initial value is 1. +See \%\f3glPixelMap\fP. +.TP +\%\f3GL_PIXEL_MAP_I_TO_R_SIZE\fP +\f2params\fP returns one value, +the size of the index-to-red pixel translation table. +The initial value is 1. +See \%\f3glPixelMap\fP. +.TP +\%\f3GL_PIXEL_MAP_R_TO_R_SIZE\fP +\f2params\fP returns one value, +the size of the red-to-red pixel translation table. +The initial value is 1. +See \%\f3glPixelMap\fP. +.TP +\%\f3GL_PIXEL_MAP_S_TO_S_SIZE\fP +\f2params\fP returns one value, +the size of the stencil-to-stencil pixel translation table. +The initial value is 1. +See \%\f3glPixelMap\fP. +.TP +\%\f3GL_POINT_SIZE\fP +\f2params\fP returns one value, +the point size as specified by \%\f3glPointSize\fP. The initial value is 1. +.TP +\%\f3GL_POINT_SIZE_GRANULARITY\fP +\f2params\fP returns one value, +the size difference between adjacent supported sizes for antialiased points. +See \%\f3glPointSize\fP. +.TP +\%\f3GL_POINT_SIZE_RANGE\fP +\f2params\fP returns two values: +the smallest and largest supported sizes for antialiased +points. The smallest size must be at most 1, and the largest size must +be at least 1. +See \%\f3glPointSize\fP. +.TP +\%\f3GL_POINT_SMOOTH\fP +\f2params\fP returns a single boolean value indicating whether antialiasing of +points is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glPointSize\fP. +.TP +\%\f3GL_POINT_SMOOTH_HINT\fP +\f2params\fP returns one value, +a symbolic constant indicating the mode of the point antialiasing +hint. The initial value is \%\f3GL_DONT_CARE\fP. +See \%\f3glHint\fP. +.TP +\%\f3GL_POLYGON_MODE\fP +\f2params\fP returns two values: +symbolic constants indicating whether front-facing and back-facing polygons +are rasterized as points, lines, or filled polygons. The initial value is +\%\f3GL_FILL\fP. +See \%\f3glPolygonMode\fP. +.TP +\%\f3GL_POLYGON_OFFSET_FACTOR\fP +\f2params\fP returns one value, +the scaling factor used to determine the variable offset that is added +to the depth value of each fragment generated when a polygon is +rasterized. The initial value is 0. +See \%\f3glPolygonOffset\fP. +.TP +\%\f3GL_POLYGON_OFFSET_UNITS\fP +\f2params\fP returns one value. +This value is multiplied by an implementation-specific value and then +added to the depth value of each fragment +generated when a polygon is rasterized. The initial value is 0. +See \%\f3glPolygonOffset\fP. +.TP +\%\f3GL_POLYGON_OFFSET_FILL\fP +\f2params\fP returns a single boolean value indicating whether polygon offset +is enabled for polygons in fill mode. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glPolygonOffset\fP. +.TP +\%\f3GL_POLYGON_OFFSET_LINE\fP +\f2params\fP returns a single boolean value indicating whether polygon offset +is enabled for polygons in line mode. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glPolygonOffset\fP. +.TP +\%\f3GL_POLYGON_OFFSET_POINT\fP +\f2params\fP returns a single boolean value indicating whether polygon offset +is enabled for polygons in point mode. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glPolygonOffset\fP. +.TP +\%\f3GL_POLYGON_SMOOTH\fP +\f2params\fP returns a single boolean value indicating whether antialiasing of +polygons is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glPolygonMode\fP. +.TP +\%\f3GL_POLYGON_SMOOTH_HINT\fP +\f2params\fP returns one value, +a symbolic constant indicating the mode of the polygon antialiasing +hint. The initial value is \%\f3GL_DONT_CARE\fP. +See \%\f3glHint\fP. +.TP +\%\f3GL_POLYGON_STIPPLE\fP +\f2params\fP returns a single boolean value indicating whether polygon +stippling is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glPolygonStipple\fP. +.TP +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP +\f2params\fP returns a single boolean value indicating whether post color +matrix transformation lookup is enabled. The initial value is +\%\f3GL_FALSE\fP. +See \%\f3glColorTable\fP. +.TP +\%\f3GL_POST_COLOR_MATRIX_RED_BIAS\fP +\f2params\fP returns one value, the red bias factor applied to RGBA fragments +after color matrix transformations. The initial value is 0. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_COLOR_MATRIX_GREEN_BIAS\fP +\f2params\fP returns one value, the green bias factor applied to RGBA fragments +after color matrix transformations. The initial value is 0. +See \%\f3glPixelTransfer\fP +.TP +\%\f3GL_POST_COLOR_MATRIX_BLUE_BIAS\fP +\f2params\fP returns one value, the blue bias factor applied to RGBA fragments +after color matrix transformations. The initial value is 0. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_COLOR_MATRIX_ALPHA_BIAS\fP +\f2params\fP returns one value, the alpha bias factor applied to RGBA fragments +after color matrix transformations. The initial value is 0. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_COLOR_MATRIX_RED_SCALE\fP +\f2params\fP returns one value, the red scale factor applied to RGBA fragments +after color matrix transformations. The initial value is 1. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_COLOR_MATRIX_GREEN_SCALE\fP +\f2params\fP returns one value, the green scale factor applied to RGBA fragments +after color matrix transformations. The initial value is 1. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_COLOR_MATRIX_BLUE_SCALE\fP +\f2params\fP returns one value, the blue scale factor applied to RGBA fragments +after color matrix transformations. The initial value is 1. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_COLOR_MATRIX_ALPHA_SCALE\fP +\f2params\fP returns one value, the alpha scale factor applied to RGBA fragments +after color matrix transformations. The initial value is 1. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP +\f2params\fP returns a single boolean value indicating whether post convolution +lookup is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glColorTable\fP. +.TP +\%\f3GL_POST_CONVOLUTION_RED_BIAS\fP +\f2params\fP returns one value, the red bias factor applied to RGBA fragments +after convolution. The initial value is 0. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_CONVOLUTION_GREEN_BIAS\fP +\f2params\fP returns one value, the green bias factor applied to RGBA fragments +after convolution. The initial value is 0. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_CONVOLUTION_BLUE_BIAS\fP +\f2params\fP returns one value, the blue bias factor applied to RGBA fragments +after convolution. The initial value is 0. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_CONVOLUTION_ALPHA_BIAS\fP +\f2params\fP returns one value, the alpha bias factor applied to RGBA fragments +after convolution. The initial value is 0. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_CONVOLUTION_RED_SCALE\fP +\f2params\fP returns one value, the red scale factor applied to RGBA fragments +after convolution. The initial value is 1. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_CONVOLUTION_GREEN_SCALE\fP +\f2params\fP returns one value, the green scale factor applied to RGBA fragments +after convolution. The initial value is 1. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_CONVOLUTION_BLUE_SCALE\fP +\f2params\fP returns one value, the blue scale factor applied to RGBA fragments +after convolution. The initial value is 1. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_POST_CONVOLUTION_ALPHA_SCALE\fP +\f2params\fP returns one value, the alpha scale factor applied to RGBA fragments +after convolution. The initial value is 1. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_PROJECTION_MATRIX\fP +\f2params\fP returns sixteen values: +the projection matrix on the top of the projection matrix +stack. Initially this matrix is the identity matrix. +See \%\f3glPushMatrix\fP. +.TP +\%\f3GL_PROJECTION_STACK_DEPTH\fP +\f2params\fP returns one value, +the number of matrices on the projection matrix stack. +The initial value is 1. +See \%\f3glPushMatrix\fP. +.TP +\%\f3GL_READ_BUFFER\fP +\f2params\fP returns one value, +a symbolic constant indicating which color buffer is selected for +reading. The initial value is \%\f3GL_BACK\fP if there is a back buffer, +otherwise it is \%\f3GL_FRONT\fP. +See +\%\f3glReadPixels\fP and \%\f3glAccum\fP. +.TP +\%\f3GL_RED_BIAS\fP +\f2params\fP returns one value, +the red bias factor used during pixel transfers. The initial value is 0. +.TP +\%\f3GL_RED_BITS\fP +\f2params\fP returns one value, +the number of red bitplanes in each color buffer. +.TP +\%\f3GL_RED_SCALE\fP +\f2params\fP returns one value, +the red scale factor used during pixel transfers. The initial value is 1. +See \%\f3glPixelTransfer\fP. +.TP +\%\f3GL_RENDER_MODE\fP +\f2params\fP returns one value, +a symbolic constant indicating whether the GL is in render, +select, +or feedback mode. The initial value is \%\f3GL_RENDER\fP. +See \%\f3glRenderMode\fP. +.TP +\%\f3GL_RESCALE_NORMAL\fP +\f2params\fP returns single boolean value +indicating whether normal rescaling is enabled. +See \%\f3glEnable\fP. +.TP +\%\f3GL_RGBA_MODE\fP +\f2params\fP returns a single boolean value indicating whether the GL is in RGBA +mode (true) or color index mode (false). +See \%\f3glColor\fP. +.TP +\%\f3GL_SCISSOR_BOX\fP +\f2params\fP returns four values: +the $x$ and $y$ window coordinates of the scissor box, +followed by its width and height. +Initially the $x$ and $y$ window coordinates are both 0 and the +width and height are set to the size of the window. +See \%\f3glScissor\fP. +.TP +\%\f3GL_SCISSOR_TEST\fP +\f2params\fP returns a single boolean value indicating whether scissoring is +enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glScissor\fP. +.TP +\%\f3GL_SELECTION_BUFFER_SIZE\fP +\f2params\fP return one value, +the size of the selection buffer. +See \%\f3glSelectBuffer\fP. +.TP +\%\f3GL_SEPARABLE_2D\fP +\f2params\fP returns a single boolean value indicating whether 2D separable +convolution is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glSeparableFilter2D\fP. +.TP +\%\f3GL_SHADE_MODEL\fP +\f2params\fP returns one value, +a symbolic constant indicating whether the shading mode is flat or +smooth. The initial value is \%\f3GL_SMOOTH\fP. +See \%\f3glShadeModel\fP. +.TP +\%\f3GL_SMOOTH_LINE_WIDTH_RANGE\fP +\f2params\fP returns two values, +the smallest and largest supported widths for antialiased lines. +See \%\f3glLineWidth\fP. +.TP +\%\f3GL_SMOOTH_LINE_WIDTH_GRANULARITY\fP +\f2params\fP returns one value, +the granularity of widths for antialiased lines. +See \%\f3glLineWidth\fP. +.TP +\%\f3GL_SMOOTH_POINT_SIZE_RANGE\fP +\f2params\fP returns two values, +the smallest and largest supported widths for antialiased points. +See \%\f3glPointSize\fP. +.TP +\%\f3GL_SMOOTH_POINT_SIZE_GRANULARITY\fP +\f2params\fP returns one value, +the granularity of sizes for antialiased points. +See \%\f3glPointSize\fP. +.TP +\%\f3GL_STENCIL_BITS\fP +\f2params\fP returns one value, +the number of bitplanes in the stencil buffer. +.TP +\%\f3GL_STENCIL_CLEAR_VALUE\fP +\f2params\fP returns one value, +the index to which the stencil bitplanes are cleared. The initial value is +0. +See \%\f3glClearStencil\fP. +.TP +\%\f3GL_STENCIL_FAIL\fP +\f2params\fP returns one value, +a symbolic constant indicating what action is taken when the stencil +test fails. The initial value is \%\f3GL_KEEP\fP. +See \%\f3glStencilOp\fP. +.TP +\%\f3GL_STENCIL_FUNC\fP +\f2params\fP returns one value, +a symbolic constant indicating what function is used to compare the +stencil reference value with the stencil buffer value. The initial value +is \%\f3GL_ALWAYS\fP. +See \%\f3glStencilFunc\fP. +.TP +\%\f3GL_STENCIL_PASS_DEPTH_FAIL\fP +\f2params\fP returns one value, +a symbolic constant indicating what action is taken when the stencil +test passes, +but the depth test fails. The initial value is \%\f3GL_KEEP\fP. +See \%\f3glStencilOp\fP. +.TP +\%\f3GL_STENCIL_PASS_DEPTH_PASS\fP +\f2params\fP returns one value, +a symbolic constant indicating what action is taken when the stencil +test passes and the depth test passes. The initial value is \%\f3GL_KEEP\fP. +See \%\f3glStencilOp\fP. +.TP +\%\f3GL_STENCIL_REF\fP +\f2params\fP returns one value, +the reference value that is compared with the contents of the stencil +buffer. The initial value is 0. +See \%\f3glStencilFunc\fP. +.TP +\%\f3GL_STENCIL_TEST\fP +\f2params\fP returns a single boolean value indicating whether stencil testing +of fragments is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glStencilFunc\fP and \%\f3glStencilOp\fP. +.TP +\%\f3GL_STENCIL_VALUE_MASK\fP +\f2params\fP returns one value, +the mask that is used to mask both the stencil reference value and the +stencil buffer value before they are compared. The initial value is all 1's. +See \%\f3glStencilFunc\fP. +.TP +\%\f3GL_STENCIL_WRITEMASK\fP +\f2params\fP returns one value, +the mask that controls writing of the stencil bitplanes. The initial value +is all 1's. See \%\f3glStencilMask\fP. +.TP +\%\f3GL_STEREO\fP +\f2params\fP returns a single boolean value indicating whether stereo buffers +(left and right) are supported. +.TP +\%\f3GL_SUBPIXEL_BITS\fP +\f2params\fP returns one value, +an estimate of the number of bits of subpixel resolution that are used to +position rasterized geometry in window coordinates. The initial value +.br +is 4. +.TP +\%\f3GL_TEXTURE_1D\fP +\f2params\fP returns a single boolean value indicating whether 1D texture +mapping is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glTexImage1D\fP. +.TP +\%\f3GL_TEXTURE_BINDING_1D\fP +\f2params\fP returns a single value, the name of the texture +currently bound to the target \%\f3GL_TEXTURE_1D\fP. The initial value is 0. +See \%\f3glBindTexture\fP. +.TP +\%\f3GL_TEXTURE_2D\fP +\f2params\fP returns a single boolean value indicating whether 2D texture +mapping is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glTexImage2D\fP. +.TP +\%\f3GL_TEXTURE_BINDING_2D\fP +\f2params\fP returns a single value, the name of the texture +currently bound to the target \%\f3GL_TEXTURE_2D\fP. The initial value is 0. +See \%\f3glBindTexture\fP. +.TP +\%\f3GL_TEXTURE_3D\fP +\f2params\fP returns a single boolean value indicating whether 3D texture +mapping is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glTexImage3D\fP. +.TP +\%\f3GL_TEXTURE_BINDING_3D\fP +\f2params\fP returns a single value, the name of the texture +currently bound to the target \%\f3GL_TEXTURE_3D\fP. The initial value is 0. +See \%\f3glBindTexture\fP. +.TP +\%\f3GL_TEXTURE_COORD_ARRAY\fP +\f2params\fP returns a single boolean value indicating whether the texture +coordinate array is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glTexCoordPointer\fP. +.TP +\%\f3GL_TEXTURE_COORD_ARRAY_SIZE\fP +\f2params\fP returns one value, +the number of coordinates per element in the texture coordinate +array. The initial value is 4. +See \%\f3glTexCoordPointer\fP. +.TP +\%\f3GL_TEXTURE_COORD_ARRAY_STRIDE\fP +\f2params\fP returns one value, +the byte offset between consecutive elements in the texture coordinate +array. The initial value is 0. +See \%\f3glTexCoordPointer\fP. +.TP +\%\f3GL_TEXTURE_COORD_ARRAY_TYPE\fP +\f2params\fP returns one value, +the data type of the coordinates in the texture coordinate +array. The initial value is \%\f3GL_FLOAT\fP. +See \%\f3glTexCoordPointer\fP. +.TP +\%\f3GL_TEXTURE_GEN_Q\fP +\f2params\fP returns a single boolean value indicating whether automatic generation +of the \f2q\fP texture coordinate is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glTexGen\fP. +.TP +\%\f3GL_TEXTURE_GEN_R\fP +\f2params\fP returns a single boolean value indicating whether automatic generation +of the \f2r\fP texture coordinate is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glTexGen\fP. +.TP +\%\f3GL_TEXTURE_GEN_S\fP +\f2params\fP returns a single boolean value indicating whether automatic generation +of the \f2S\fP texture coordinate is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glTexGen\fP. +.TP +\%\f3GL_TEXTURE_GEN_T\fP +\f2params\fP returns a single boolean value indicating whether automatic generation +of the T texture coordinate is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glTexGen\fP. +.TP +\%\f3GL_TEXTURE_MATRIX\fP +\f2params\fP returns sixteen values: +the texture matrix on the top of the texture matrix stack. Initially this +matrix is the identity matrix. +See \%\f3glPushMatrix\fP. +.TP +\%\f3GL_TEXTURE_STACK_DEPTH\fP +\f2params\fP returns one value, +the number of matrices on the texture matrix stack. +The initial value is 1. +See \%\f3glPushMatrix\fP. +.TP +\%\f3GL_UNPACK_ALIGNMENT\fP +\f2params\fP returns one value, +the byte alignment used for reading pixel data from memory. The initial +value is 4. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_UNPACK_IMAGE_HEIGHT\fP +\f2params\fP returns one value, +the image height used for reading pixel data from memory. The initial +is 0. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_UNPACK_LSB_FIRST\fP +\f2params\fP returns a single boolean value indicating whether single-bit +pixels being read from memory are read first from the least significant +bit of each unsigned byte. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_UNPACK_ROW_LENGTH\fP +\f2params\fP returns one value, +the row length used for reading pixel data from memory. The initial value +is 0. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_UNPACK_SKIP_IMAGES\fP +\f2params\fP returns one value, +the number of pixel images skipped before the first pixel is read +from memory. The initial value is 0. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_UNPACK_SKIP_PIXELS\fP +\f2params\fP returns one value, +the number of pixel locations skipped before the first pixel is read +from memory. The initial value is 0. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_UNPACK_SKIP_ROWS\fP +\f2params\fP returns one value, +the number of rows of pixel locations skipped before the first pixel is read +from memory. The initial value is 0. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_UNPACK_SWAP_BYTES\fP +\f2params\fP returns a single boolean value indicating whether the bytes of +two-byte and four-byte pixel indices and components are swapped after being +read from memory. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glPixelStore\fP. +.TP +\%\f3GL_VERTEX_ARRAY\fP +\f2params\fP returns a single boolean value indicating whether the vertex +array is enabled. The initial value is \%\f3GL_FALSE\fP. +See \%\f3glVertexPointer\fP. +.TP +\%\f3GL_VERTEX_ARRAY_SIZE\fP +\f2params\fP returns one value, +the number of coordinates per vertex in the vertex array. The initial +value is 4. +See \%\f3glVertexPointer\fP. +.TP +\%\f3GL_VERTEX_ARRAY_STRIDE\fP +\f2params\fP returns one value, +the byte offset between consecutive vertices in the vertex +array. The initial value is 0. +See \%\f3glVertexPointer\fP. +.TP +\%\f3GL_VERTEX_ARRAY_TYPE\fP +\f2params\fP returns one value, +the data type of each coordinate in the vertex array. The initial value is +\%\f3GL_FLOAT\fP. +See \%\f3glVertexPointer\fP. +.TP +\%\f3GL_VIEWPORT\fP +\f2params\fP returns four values: +the $x$ and $y$ window coordinates of the viewport, +followed by its width and height. +Initially the $x$ and $y$ window coordinates are both set to 0, +and the width and height are set to the width and height of the window into +which the GL will do its rendering. +See \%\f3glViewport\fP. +.TP +\%\f3GL_ZOOM_X\fP +\f2params\fP returns one value, +the $x$ pixel zoom factor. The initial value is 1. +See \%\f3glPixelZoom\fP. +.TP +\%\f3GL_ZOOM_Y\fP +\f2params\fP returns one value, +the $y$ pixel zoom factor. The initial value is 1. +See \%\f3glPixelZoom\fP. +.P +Many of the boolean parameters can also be queried more easily using +\%\f3glIsEnabled\fP. +.SH NOTES +\%\f3GL_COLOR_LOGIC_OP\fP, +\%\f3GL_COLOR_ARRAY\fP, +\%\f3GL_COLOR_ARRAY_SIZE\fP, +\%\f3GL_COLOR_ARRAY_STRIDE\fP, +\%\f3GL_COLOR_ARRAY_TYPE\fP, +\%\f3GL_EDGE_FLAG_ARRAY\fP, +\%\f3GL_EDGE_FLAG_ARRAY_STRIDE\fP, +\%\f3GL_INDEX_ARRAY\fP, +\%\f3GL_INDEX_ARRAY_STRIDE\fP, +\%\f3GL_INDEX_ARRAY_TYPE\fP, +\%\f3GL_INDEX_LOGIC_OP\fP, +\%\f3GL_NORMAL_ARRAY\fP, +\%\f3GL_NORMAL_ARRAY_STRIDE\fP, +\%\f3GL_NORMAL_ARRAY_TYPE\fP, +\%\f3GL_POLYGON_OFFSET_UNITS\fP, +\%\f3GL_POLYGON_OFFSET_FACTOR\fP, +\%\f3GL_POLYGON_OFFSET_FILL\fP, +\%\f3GL_POLYGON_OFFSET_LINE\fP, +\%\f3GL_POLYGON_OFFSET_POINT\fP, +\%\f3GL_TEXTURE_COORD_ARRAY\fP, +\%\f3GL_TEXTURE_COORD_ARRAY_SIZE\fP, +\%\f3GL_TEXTURE_COORD_ARRAY_STRIDE\fP, +\%\f3GL_TEXTURE_COORD_ARRAY_TYPE\fP, +\%\f3GL_VERTEX_ARRAY\fP, +\%\f3GL_VERTEX_ARRAY_SIZE\fP, +\%\f3GL_VERTEX_ARRAY_STRIDE\fP, and +\%\f3GL_VERTEX_ARRAY_TYPE\fP +are available only if the GL version is 1.1 or greater. +.P +\%\f3GL_ALIASED_POINT_SIZE_RANGE\fP, +\%\f3GL_ALIASED_POINT_SIZE_GRANULARITY\fP, +\%\f3GL_FEEDBACK_BUFFER_SIZE\fP, +\%\f3GL_FEEDBACK_BUFFER_TYPE\fP, +\%\f3GL_LIGHT_MODEL_AMBIENT\fP, +\%\f3GL_LIGHT_MODEL_COLOR_CONTROL\fP, +\%\f3GL_MAX_3D_TEXTURE_SIZE\fP, +\%\f3GL_MAX_ELEMENTS_INDICES\fP, +\%\f3GL_MAX_ELEMENTS_VERTICES\fP, +\%\f3GL_PACK_IMAGE_HEIGHT\fP, +\%\f3GL_PACK_SKIP_IMAGES\fP, +\%\f3GL_RESCALE_NORMAL\fP, +\%\f3GL_SELECTION_BUFFER_SIZE\fP, +\%\f3GL_SMOOTH_LINE_WIDTH_GRANULARITY\fP, +\%\f3GL_SMOOTH_LINE_WIDTH_RANGE\fP, +\%\f3GL_SMOOTH_POINT_SIZE_GRANULARITY\fP, +\%\f3GL_SMOOTH_POINT_SIZE_RANGE\fP, +\%\f3GL_TEXTURE_3D\fP, +\%\f3GL_TEXTURE_BINDING_3D\fP, +\%\f3GL_UNPACK_IMAGE_HEIGHT\fP, and +\%\f3GL_UNPACK_SKIP_IMAGES\fP +are available only if the GL version is 1.2 or greater. +.P +\%\f3GL_LINE_WIDTH_GRANULARITY\fP was deprecated in GL version 1.2. Its +functionality was replaced by \%\f3GL_SMOOTH_LINE_WIDTH_GRANULARITY\fP. +.P +\%\f3GL_LINE_WIDTH_RANGE\fP was deprecated in GL version 1.2. Its +functionality was replaced by \%\f3GL_SMOOTH_LINE_WIDTH_RANGE\fP. +.P +\%\f3GL_POINT_SIZE_GRANULARITY\fP was deprecated in GL version 1.2. Its +functionality was replaced by \%\f3GL_SMOOTH_POINT_SIZE_GRANULARITY\fP. +.P +\%\f3GL_POINT_SIZE_RANGE\fP was deprecated in GL version 1.2. Its +functionality was replaced by \%\f3GL_SMOOTH_POINT_SIZE_RANGE\fP. +.P +\%\f3GL_BLEND_COLOR\fP, +\%\f3GL_BLEND_EQUATION\fP, +\%\f3GL_COLOR_MATRIX\fP, +\%\f3GL_COLOR_MATRIX_STACK_DEPTH\fP, +\%\f3GL_COLOR_TABLE\fP, +\%\f3GL_CONVOLUTION_1D\fP, +\%\f3GL_CONVOLUTION_2D\fP, +\%\f3GL_HISTOGRAM\fP, +\%\f3GL_MAX_COLOR_MATRIX_STACK_DEPTH\fP, +\%\f3GL_MINMAX\fP, +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP, +\%\f3GL_POST_COLOR_MATRIX_RED_BIAS\fP, +\%\f3GL_POST_COLOR_MATRIX_GREEN_BIAS\fP, +\%\f3GL_POST_COLOR_MATRIX_BLUE_BIAS\fP, +\%\f3GL_POST_COLOR_MATRIX_ALPHA_BIAS\fP, +\%\f3GL_POST_COLOR_MATRIX_RED_SCALE\fP, +\%\f3GL_POST_COLOR_MATRIX_GREEN_SCALE\fP, +\%\f3GL_POST_COLOR_MATRIX_BLUE_SCALE\fP, +\%\f3GL_POST_COLOR_MATRIX_ALPHA_SCALE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_RED_BIAS\fP, +\%\f3GL_POST_CONVOLUTION_GREEN_BIAS\fP, +\%\f3GL_POST_CONVOLUTION_BLUE_BIAS\fP, +\%\f3GL_POST_CONVOLUTION_ALPHA_BIAS\fP, +\%\f3GL_POST_CONVOLUTION_RED_SCALE\fP, +\%\f3GL_POST_CONVOLUTION_GREEN_SCALE\fP, +\%\f3GL_POST_CONVOLUTION_BLUE_SCALE\fP, +\%\f3GL_POST_CONVOLUTION_ALPHA_SCALE\fP, and +\%\f3GL_SEPARABLE_2D\fP +are available only if \%\f3GL_ARB_imaging\fP is returned from \%\f3glGet\fP +when called with the argument \%\f3GL_EXTENSIONS\fP. +.P +\%\f3GL_ACTIVE_TEXTURE_ARB\fP, +\%\f3GL_CLIENT_ACTIVE_TEXTURE_ARB\fP, and +\%\f3GL_MAX_TEXTURE_UNITS_ARB\fP are available only if +\%\f3GL_ARB_multitexture\fP is returned from \%\f3glGet\fP when called with the +argument \%\f3GL_EXTENSIONS\fP. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, the following +parameters return the associated value for the active texture unit: +\%\f3GL_CURRENT_RASTER_TEXTURE_COORDS\fP, +\%\f3GL_TEXTURE_1D\fP, \%\f3GL_TEXTURE_BINDING_1D\fP, +\%\f3GL_TEXTURE_2D\fP, \%\f3GL_TEXTURE_BINDING_2D\fP, +\%\f3GL_TEXTURE_3D\fP, \%\f3GL_TEXTURE_BINDING_3D\fP, +\%\f3GL_TEXTURE_GEN_S\fP, +\%\f3GL_TEXTURE_GEN_T\fP, +\%\f3GL_TEXTURE_GEN_R\fP, +\%\f3GL_TEXTURE_GEN_Q\fP, +\%\f3GL_TEXTURE_MATRIX\fP, and +\%\f3GL_TEXTURE_STACK_DEPTH\fP. +Likewise, the following parameters return the associated value for the +active client texture unit: +\%\f3GL_TEXTURE_COORD_ARRAY\fP, +\%\f3GL_TEXTURE_COORD_ARRAY_SIZE\fP, +\%\f3GL_TEXTURE_COORD_ARRAY_STRIDE\fP, +\%\f3GL_TEXTURE_COORD_ARRAY_TYPE\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2pname\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGet\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.P +.SH SEE ALSO +\%\f3glGetClipPlane(3G)\fP, +\%\f3glGetColorTable(3G)\fP, +\%\f3glGetColorTableParameter(3G)\fP, +\%\f3glGetConvolutionFilter(3G)\fP, +\%\f3glGetConvolutionParameter(3G)\fP, +\%\f3glGetError(3G)\fP, +\%\f3glGetHistogram(3G)\fP, +\%\f3glGetHistogramParameter(3G)\fP, +\%\f3glGetLight(3G)\fP, +\%\f3glGetMap(3G)\fP, +\%\f3glGetMaterial(3G)\fP, +\%\f3glGetMinmax(3G)\fP, +\%\f3glGetMinmaxParameter(3G)\fP, +\%\f3glGetPixelMap(3G)\fP, +\%\f3glGetPointerv(3G)\fP, +\%\f3glGetPolygonStipple(3G)\fP, +\%\f3glGetSeparableFilter(3G)\fP, +\%\f3glGetString(3G)\fP, +\%\f3glGetTexEnv(3G)\fP, +\%\f3glGetTexGen(3G)\fP, +\%\f3glGetTexImage(3G)\fP, +\%\f3glGetTexLevelParameter(3G)\fP, +\%\f3glGetTexParameter(3G)\fP, +\%\f3glIsEnabled(3G)\fP Index: xc/doc/man/GL/gl/getclipplane.3gl diff -u /dev/null xc/doc/man/GL/gl/getclipplane.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getclipplane.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,53 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getclippl +.ds Xs 48616 4 getclipplane.gl +.TH GLGETCLIPPLANE 3G +.SH NAME +.B "glGetClipPlane +\- return the coefficients of the specified clipping plane + +.SH C SPECIFICATION +void \f3glGetClipPlane\fP( +GLenum \fIplane\fP, +.nf +.ta \w'\f3void \fPglGetClipPlane( 'u + GLdouble \fI*equation\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIequation\fP\ \ 'u +\f2plane\fP +Specifies a clipping plane. +The number of clipping planes depends on the implementation, +but at least six clipping planes are supported. +They are identified by symbolic names of the form \%\f3GL_CLIP_PLANE\fP$i$ +where 0 \(<= $ i $ < \%\f3GL_MAX_CLIP_PLANES\fP. +.TP +\f2equation\fP +Returns four double-precision values that are the coefficients of the plane equation of \f2plane\fP in eye coordinates. +The initial value is (0, 0, 0, 0). +.SH DESCRIPTION +\%\f3glGetClipPlane\fP returns in \f2equation\fP the four coefficients of the plane equation +for \f2plane\fP. +.SH NOTES +It is always the case that \%\f3GL_CLIP_PLANE\fP$i$ = \%\f3GL_CLIP_PLANE0\fP + $i$. +.P +If an error is generated, +no change is made to the contents of \f2equation\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2plane\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetClipPlane\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glClipPlane(3G)\fP Index: xc/doc/man/GL/gl/getcolortable.3gl diff -u /dev/null xc/doc/man/GL/gl/getcolortable.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getcolortable.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,142 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getcolort +.ds Xs 62474 6 getcolortable.gl +.TH GLGETCOLORTABLE 3G +.SH NAME +.B "glGetColorTable +\- retrieve contents of a color lookup table + +.SH C SPECIFICATION +void \f3glGetColorTable\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetColorTable( 'u + GLenum \fIformat\fP, + GLenum \fItype\fP, + GLvoid \fI*table\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Must be \%\f3GL_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, +or +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP. +.TP +\f2format\fP +The of the pixel data in \f2table\fP. +The possible values are +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, and +\%\f3GL_BGRA\fP. +.TP +\f2type\fP +The type of the pixel data in \f2table\fP. +Symbolic constants +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +are accepted. +.TP +\f2table\fP +Pointer to a one-dimensional array of pixel data containing the contents +of the color table. +.SH DESCRIPTION +\%\f3glGetColorTable\fP returns in \f2table\fP the contents of the color table specified +by \f2target\fP. No pixel transfer operations are performed, but pixel +storage modes that are applicable to +\%\f3glReadPixels\fP are performed. +.P +Color components that are requested in +the specified \f2format\fP, but which are not included in the internal + of the color lookup table, are returned as zero. The +assignments of internal color components to the components +requested by \f2format\fP are +.P +.TS +center; +lb lb +l l. +_ +Internal Component Resulting Component +_ +red red +green green +blue blue +alpha alpha +luminance red +intensity red +_ +.TE + +.P +.SH NOTES +\%\f3glGetColorTable\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.P +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetColorTable\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glColorTable(3G)\fP, +\%\f3glColorTableParameter(3G)\fP, +\%\f3glGetColorTableParameter(3G)\fP Index: xc/doc/man/GL/gl/getcolortableparameter.3gl diff -u /dev/null xc/doc/man/GL/gl/getcolortableparameter.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getcolortableparameter.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,116 @@ +'\" te +'\"! tbl | eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 001 getcolor +.ds Xs 21434 5 getcolortableparameter.gl +.TH GLGETCOLORTABLEPARAMETER 3G +.SH NAME +.B "glGetColorTableParameterfv, glGetColorTableParameteriv +\- get color lookup table parameters + +.SH C SPECIFICATION +void \f3glGetColorTableParameterfv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetColorTableParameterfv( 'u + GLenum \fIpname\fP, + GLfloat \fI*params\fP ) +.fi +void \f3glGetColorTableParameteriv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetColorTableParameteriv( 'u + GLenum \fIpname\fP, + GLint \fI*params\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +The target color table. +Must be +\%\f3GL_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP, +\%\f3GL_PROXY_COLOR_TABLE\fP, +\%\f3GL_PROXY_POST_CONVOLUTION_COLOR_TABLE\fP, +\%\f3GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE\fP. +.TP +\f2pname\fP +The symbolic name of a color lookup table parameter. +Must be one of +\%\f3GL_COLOR_TABLE_BIAS\fP, +\%\f3GL_COLOR_TABLE_SCALE\fP, +\%\f3GL_COLOR_TABLE_FORMAT\fP, +\%\f3GL_COLOR_TABLE_WIDTH\fP, +\%\f3GL_COLOR_TABLE_RED_SIZE\fP, +\%\f3GL_COLOR_TABLE_GREEN_SIZE\fP, +\%\f3GL_COLOR_TABLE_BLUE_SIZE\fP, +\%\f3GL_COLOR_TABLE_ALPHA_SIZE\fP, +\%\f3GL_COLOR_TABLE_LUMINANCE_SIZE\fP, or +\%\f3GL_COLOR_TABLE_INTENSITY_SIZE\fP. +.TP +\f2params\fP +A pointer to an array where the values of the parameter will be stored. +.SH DESCRIPTION +Returns parameters specific to color table \f2target\fP. +.P +When \f2pname\fP is set to \%\f3GL_COLOR_TABLE_SCALE\fP or +\%\f3GL_COLOR_TABLE_BIAS\fP, \%\f3glGetColorTableParameter\fP returns the color +table scale or bias parameters for the table specified by \f2target\fP. +For these queries, \f2target\fP must be set to +\%\f3GL_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, +or \%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP and +\f2params\fP points to an array of four elements, which receive +the scale or bias factors for red, green, blue, and alpha, in that order. +.P +\%\f3glGetColorTableParameter\fP can also be used to retrieve the and size parameters +for a color table. For these queries, set \f2target\fP to either the +color table target or the proxy color table target. +The and size parameters are set by \%\f3glColorTable\fP. +.P +The following table lists the and size parameters that may +be queried. +For each symbolic constant listed below for \f2pname\fP, +\f2params\fP must point to an array of the +given length, and receive the values indicated. +.P +.TS +center; +lb cb lb +l c l. +_ +Parameter N Meaning +_ +\%\f3GL_COLOR_TABLE_FORMAT\fP 1 Internal (e.g. \%\f3GL_RGBA\fP) +\%\f3GL_COLOR_TABLE_WIDTH\fP 1 Number of elements in table +\%\f3GL_COLOR_TABLE_RED_SIZE\fP 1 Size of red component, in bits +\%\f3GL_COLOR_TABLE_GREEN_SIZE\fP 1 Size of green component +\%\f3GL_COLOR_TABLE_BLUE_SIZE\fP 1 Size of blue component +\%\f3GL_COLOR_TABLE_ALPHA_SIZE\fP 1 Size of alpha component +\%\f3GL_COLOR_TABLE_LUMINANCE_SIZE\fP 1 Size of luminance component +\%\f3GL_COLOR_TABLE_INTENSITY_SIZE\fP 1 Size of intensity component +_ +.TE +.SH NOTES +\%\f3glGetColorTableParameter\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP or \f2pname\fP is not +an acceptable value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetColorTableParameter\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glColorTable(3G)\fP, +\%\f3glTexParameter(3G)\fP, +\%\f3glColorTableParameter(3G)\fP Index: xc/doc/man/GL/gl/getconvolutionfilter.3gl diff -u /dev/null xc/doc/man/GL/gl/getconvolutionfilter.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getconvolutionfilter.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,145 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getconvol +.ds Xs 38054 6 getconvolutionfilter.gl +.TH GLGETCONVOLUTIONFILTER 3G +.SH NAME +.B "glGetConvolutionFilter +\- get current 1D or 2D convolution filter kernel + +.SH C SPECIFICATION +void \f3glGetConvolutionFilter\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetConvolutionFilter( 'u + GLenum \fIformat\fP, + GLenum \fItype\fP, + GLvoid \fI*image\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +The filter to be retrieved. +Must be one of +\%\f3GL_CONVOLUTION_1D\fP or +\%\f3GL_CONVOLUTION_2D\fP. +.TP +\f2format\fP +Format of the output image. +Must be one of +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, or +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +Data type of components in the output image. +Symbolic constants +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +are accepted. +.TP +\f2image\fP +Pointer to storage for the output image. +.SH DESCRIPTION +\%\f3glGetConvolutionFilter\fP returns the current 1D or 2D convolution filter kernel as an image. +The one- or two-dimensional image is placed in \f2image\fP according to the +specifications in \f2format\fP and \f2type\fP. +No pixel transfer operations are performed on this image, but the relevant +pixel storage modes are applied. +.sp +Color components that are present in \f2format\fP but not included in the +internal of the filter are returned as zero. +The assignments of internal color components to the components of \f2format\fP +are as follows. +.br +.bp +.TS +center; +lb lb +l l. +_ +Internal Component Resulting Component +_ +Red Red +Green Green +Blue Blue +Alpha Alpha +Luminance Red +Intensity Red +_ +.TE +.SH NOTES +\%\f3glGetConvolutionFilter\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.P +The current separable 2D filter must be retrieved with +\%\f3glGetSeparableFilter\fP rather than \%\f3glGetConvolutionFilter\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetConvolutionFilter\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGetConvolutionParameter\fP +.SH SEE ALSO +\%\f3glGetSeparableFilter(3G)\fP, +\%\f3glConvolutionParameter(3G)\fP, +\%\f3glConvolutionFilter1D(3G)\fP, +\%\f3glConvolutionFilter2D(3G)\fP Index: xc/doc/man/GL/gl/getconvolutionparameter.3gl diff -u /dev/null xc/doc/man/GL/gl/getconvolutionparameter.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getconvolutionparameter.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,114 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 001 getconvo +.ds Xs 10201 5 getconvolutionparameter.gl +.TH GLGETCONVOLUTIONPARAMETER 3G +.SH NAME +.B "glGetConvolutionParameterfv, glGetConvolutionParameteriv +\- get convolution parameters + +.SH C SPECIFICATION +void \f3glGetConvolutionParameterfv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetConvolutionParameterfv( 'u + GLenum \fIpname\fP, + GLfloat \fI*params\fP ) +.fi +void \f3glGetConvolutionParameteriv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetConvolutionParameteriv( 'u + GLenum \fIpname\fP, + GLint \fI*params\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +The filter whose parameters are to be retrieved. +Must be one of +\%\f3GL_CONVOLUTION_1D\fP, +\%\f3GL_CONVOLUTION_2D\fP, or +\%\f3GL_SEPARABLE_2D\fP. +.TP +\f2pname\fP +The parameter to be retrieved. +Must be one of +\%\f3GL_CONVOLUTION_BORDER_MODE\fP, +\%\f3GL_CONVOLUTION_BORDER_COLOR\fP, +\%\f3GL_CONVOLUTION_FILTER_SCALE\fP, +\%\f3GL_CONVOLUTION_FILTER_BIAS\fP, +\%\f3GL_CONVOLUTION_FORMAT\fP, +\%\f3GL_CONVOLUTION_WIDTH\fP, +\%\f3GL_CONVOLUTION_HEIGHT\fP, +\%\f3GL_MAX_CONVOLUTION_WIDTH\fP, or +\%\f3GL_MAX_CONVOLUTION_HEIGHT\fP. +.TP +\f2params\fP +Pointer to storage for the parameters to be retrieved. +.SH DESCRIPTION +\%\f3glGetConvolutionParameter\fP retrieves convolution parameters. +\f2target\fP determines which convolution filter is queried. +\f2pname\fP determines which parameter is returned: +.TP +\%\f3GL_CONVOLUTION_BORDER_MODE\fP +The convolution border mode. +See \%\f3glConvolutionParameter\fP for a list of border modes. +.TP +\%\f3GL_CONVOLUTION_BORDER_COLOR\fP +The current convolution border color. +\f2params\fP must be a pointer to an array of four elements, +which will receive the red, green, blue, and alpha border colors. +.TP +\%\f3GL_CONVOLUTION_FILTER_SCALE\fP +The current filter scale factors. +\f2params\fP must be a pointer to an array of four elements, +which will receive the red, green, blue, and alpha filter scale +factors in that order. +.TP +\%\f3GL_CONVOLUTION_FILTER_BIAS\fP +The current filter bias factors. +\f2params\fP must be a pointer to an array of four elements, +which will receive the red, green, blue, and alpha filter bias +terms in that order. +.TP +\%\f3GL_CONVOLUTION_FORMAT\fP +The current internal . +See \%\f3glConvolutionFilter1D\fP, \%\f3glConvolutionFilter2D\fP, +and \%\f3glSeparableFilter2D\fP for lists of allowable formats. +.TP +\%\f3GL_CONVOLUTION_WIDTH\fP +The current filter image width. +.TP +\%\f3GL_CONVOLUTION_HEIGHT\fP +The current filter image height. +.TP +\%\f3GL_MAX_CONVOLUTION_WIDTH\fP +The maximum acceptable filter image width. +.TP +\%\f3GL_MAX_CONVOLUTION_HEIGHT\fP +The maximum acceptable filter image height. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2pname\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is \%\f3GL_CONVOLUTION_1D\fP +and \f2pname\fP is \%\f3GL_CONVOLUTION_HEIGHT\fP or +\%\f3GL_MAX_CONVOLUTION_HEIGHT\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetConvolutionParameter\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glGetConvolutionFilter(3G)\fP, +\%\f3glGetSeparableFilter2D(3G)\fP, +\%\f3glConvolutionParameter(3G)\fP Index: xc/doc/man/GL/gl/geterror.3gl diff -u /dev/null xc/doc/man/GL/gl/geterror.3gl:1.1 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/geterror.3gl Mon Jan 14 20:16:29 2002 @@ -0,0 +1,102 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 geterror. +.ds Xs 56466 6 geterror.gl +.TH GLGETERROR 3G +.SH NAME +.B "glGetError +\- return error information + +.SH C SPECIFICATION +GLenum \f3glGetError\fP( void ) +.nf +.fi + +.SH DESCRIPTION +\%\f3glGetError\fP returns the value of the error flag. +Each detectable error is assigned a numeric code and symbolic name. +When an error occurs, +the error flag is set to the appropriate error code value. +No other errors are recorded until \%\f3glGetError\fP is called, +the error code is returned, +and the flag is reset to \%\f3GL_NO_ERROR\fP. +If a call to \%\f3glGetError\fP returns \%\f3GL_NO_ERROR\fP, +there has been no detectable error since the last call to \%\f3glGetError\fP, +or since the GL was initialized. +.P +To allow for distributed implementations, +there may be several error flags. +If any single error flag has recorded an error, +the value of that flag is returned +and that flag is reset to \%\f3GL_NO_ERROR\fP +when \%\f3glGetError\fP is called. +If more than one flag has recorded an error, +\%\f3glGetError\fP returns and clears an arbitrary error flag value. +Thus, \%\f3glGetError\fP should always be called in a loop, +until it returns \%\f3GL_NO_ERROR\fP, +if all error flags are to be reset. +.P +Initially, all error flags are set to \%\f3GL_NO_ERROR\fP. +.P +The following errors are currently defined: +.TP 30 +\%\f3GL_NO_ERROR\fP +No error has been recorded. +The value of this symbolic constant is guaranteed to be 0. +.TP +\%\f3GL_INVALID_ENUM\fP +An unacceptable value is specified for an enumerated argument. +The offending command is ignored, +and has no other side effect than to set the error flag. +.TP +\%\f3GL_INVALID_VALUE\fP +A numeric argument is out of range. +The offending command is ignored, +and has no other side effect than to set the error flag. +.TP +\%\f3GL_INVALID_OPERATION\fP +The specified operation is not allowed in the current state. +The offending command is ignored, +and has no other side effect than to set the error flag. +.TP +\%\f3GL_STACK_OVERFLOW\fP +This command would cause a stack overflow. +The offending command is ignored, +and has no other side effect than to set the error flag. +.TP +\%\f3GL_STACK_UNDERFLOW\fP +This command would cause a stack underflow. +The offending command is ignored, +and has no other side effect than to set the error flag. +.TP +\%\f3GL_OUT_OF_MEMORY\fP +There is not enough memory left to execute the command. +The state of the GL is undefined, +except for the state of the error flags, +after this error is recorded. +.TP +\%\f3GL_TABLE_TOO_LARGE\fP +The specified table exceeds the implementation's maximum supported table +size. The offending command is ignored, and has no other side effect +than to set the error flag. +.P +When an error flag is set, +results of a GL operation are undefined only if \%\f3GL_OUT_OF_MEMORY\fP +has occurred. +In all other cases, +the command generating the error is ignored and has no effect on the GL state +or frame buffer contents. +If the generating command returns a value, it returns 0. +If \%\f3glGetError\fP itself generates an error, it returns 0. +.SH NOTES +\%\f3GL_TABLE_TOO_LARGE\fP was introduced in GL version 1.2. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetError\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +In this case \%\f3glGetError\fP returns 0. Index: xc/doc/man/GL/gl/gethistogram.3gl diff -u /dev/null xc/doc/man/GL/gl/gethistogram.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/gethistogram.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,142 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 gethistog +.ds Xs 52081 6 gethistogram.gl +.TH GLGETHISTOGRAM 3G +.SH NAME +.B "glGetHistogram +\- get histogram table + +.SH C SPECIFICATION +void \f3glGetHistogram\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetHistogram( 'u + GLboolean \fIreset\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + GLvoid \fI*values\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Must be +\%\f3GL_HISTOGRAM\fP. +.TP +\f2reset\fP +If \%\f3GL_TRUE\fP, each component counter that is actually returned +is reset to zero. (Other counters are unaffected.) +If \%\f3GL_FALSE\fP, none of the counters in the histogram table is modified. +.TP +\f2format\fP +The of values to be returned in \f2values\fP. +Must be one of +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, or +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +The type of values to be returned in \f2values\fP. +Symbolic constants +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +are accepted. +.TP +\f2values\fP +A pointer to storage for the returned histogram table. +.SH DESCRIPTION +\%\f3glGetHistogram\fP returns the current histogram table as a one-dimensional image +with the same width as the histogram. +No pixel transfer operations are performed on this image, but pixel storage +modes that are applicable to 1D images are honored. +.PP +Color components that are requested in the specified \f2format\fP, but which +are not included in the internal of the histogram, are returned as +zero. +.bp +The assignments of internal color components to the components +requested by \f2format\fP are: +.TS +center; +lb lb +l l. +_ +Internal Component Resulting Component +_ +Red Red +Green Green +Blue Blue +Alpha Alpha +Luminance Red +_ +.TE + +.SH NOTES +\%\f3glGetHistogram\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_HISTOGRAM\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetHistogram\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.P +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH SEE ALSO +\%\f3glHistogram(3G)\fP, +\%\f3glResetHistogram(3G)\fP, +\%\f3glGetHistogramParameter(3G)\fP Index: xc/doc/man/GL/gl/gethistogramparameter.3gl diff -u /dev/null xc/doc/man/GL/gl/gethistogramparameter.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/gethistogramparameter.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,103 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 001 gethisto +.ds Xs 33049 5 gethistogramparameter.gl +.TH GLGETHISTOGRAMPARAMETER 3G +.SH NAME +.B "glGetHistogramParameterfv, glGetHistogramParameteriv +\- get histogram parameters + +.SH C SPECIFICATION +void \f3glGetHistogramParameterfv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetHistogramParameterfv( 'u + GLenum \fIpname\fP, + GLfloat \fI*params\fP ) +.fi +void \f3glGetHistogramParameteriv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetHistogramParameteriv( 'u + GLenum \fIpname\fP, + GLint \fI*params\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Must be one of +\%\f3GL_HISTOGRAM\fP or +\%\f3GL_PROXY_HISTOGRAM\fP. +.TP +\f2pname\fP +The name of the parameter to be retrieved. +Must be one of +\%\f3GL_HISTOGRAM_WIDTH\fP, +\%\f3GL_HISTOGRAM_FORMAT\fP, +\%\f3GL_HISTOGRAM_RED_SIZE\fP, +\%\f3GL_HISTOGRAM_GREEN_SIZE\fP, +\%\f3GL_HISTOGRAM_BLUE_SIZE\fP, +\%\f3GL_HISTOGRAM_ALPHA_SIZE\fP, +\%\f3GL_HISTOGRAM_LUMINANCE_SIZE\fP, or +\%\f3GL_HISTOGRAM_SINK\fP. +.TP +\f2params\fP +Pointer to storage for the returned values. +.SH DESCRIPTION +\%\f3glGetHistogramParameter\fP is used to query parameter values for the current histogram or for +a proxy. The histogram state information may be queried by calling +\%\f3glGetHistogramParameter\fP with a \f2target\fP of \%\f3GL_HISTOGRAM\fP (to +obtain information for the current histogram table) or +\%\f3GL_PROXY_HISTOGRAM\fP (to obtain information from the most recent +proxy request) and one of the following values for the \f2pname\fP argument: +.P +.ne +.TS +center; +lb lb +l l. +_ +Parameter Description +_ +\%\f3GL_HISTOGRAM_WIDTH\fP Histogram table width +\%\f3GL_HISTOGRAM_FORMAT\fP Internal +\%\f3GL_HISTOGRAM_RED_SIZE\fP Red component counter size, in bits +\%\f3GL_HISTOGRAM_GREEN_SIZE\fP Green component counter size, in bits +.TE +.bp +.TS +center; +lb lb +l l. +_ +Parameter Description +_ +\%\f3GL_HISTOGRAM_BLUE_SIZE\fP Blue component counter size, in bits +\%\f3GL_HISTOGRAM_ALPHA_SIZE\fP Alpha component counter size, in bits +\%\f3GL_HISTOGRAM_LUMINANCE_SIZE\fP Luminance component counter size, in bits +\%\f3GL_HISTOGRAM_SINK\fP Value of the \f2sink\fP parameter +_ +.TE + +.SH NOTES +\%\f3glGetHistogramParameter\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2pname\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetHistogramParameter\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glGetHistogram(3G)\fP, +\%\f3glHistogram(3G)\fP Index: xc/doc/man/GL/gl/getlight.3gl diff -u /dev/null xc/doc/man/GL/gl/getlight.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getlight.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,187 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getlight. +.ds Xs 45912 8 getlight.gl +.TH GLGETLIGHT 3G +.SH NAME +.B "glGetLightfv, glGetLightiv +\- return light source parameter values + +.SH C SPECIFICATION +void \f3glGetLightfv\fP( +GLenum \fIlight\fP, +.nf +.ta \w'\f3void \fPglGetLightfv( 'u + GLenum \fIpname\fP, + GLfloat \fI*params\fP ) +.fi +void \f3glGetLightiv\fP( +GLenum \fIlight\fP, +.nf +.ta \w'\f3void \fPglGetLightiv( 'u + GLenum \fIpname\fP, + GLint \fI*params\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIparams\fP\ \ 'u +\f2light\fP +Specifies a light source. +The number of possible lights depends on the implementation, +but at least eight lights are supported. +They are identified by symbolic names of the form \%\f3GL_LIGHT\fP$i$ +where 0 \(<= $ i $ < \%\f3GL_MAX_LIGHTS\fP. +.TP +\f2pname\fP +Specifies a light source parameter for \f2light\fP. +Accepted symbolic names are +\%\f3GL_AMBIENT\fP, +\%\f3GL_DIFFUSE\fP, +\%\f3GL_SPECULAR\fP, +\%\f3GL_POSITION\fP, +\%\f3GL_SPOT_DIRECTION\fP, +\%\f3GL_SPOT_EXPONENT\fP, +\%\f3GL_SPOT_CUTOFF\fP, +\%\f3GL_CONSTANT_ATTENUATION\fP, +\%\f3GL_LINEAR_ATTENUATION\fP, and +\%\f3GL_QUADRATIC_ATTENUATION\fP. +.TP +\f2params\fP +Returns the requested data. +.SH DESCRIPTION +\%\f3glGetLight\fP returns in \f2params\fP the value or values of a light source parameter. +\f2light\fP names the light and is a symbolic name of the form \%\f3GL_LIGHT\fP$i$ +for 0 \(<= $i$ < \%\f3GL_MAX_LIGHTS\fP, +where \%\f3GL_MAX_LIGHTS\fP is an implementation dependent constant that is +greater than or equal to eight. +\f2pname\fP specifies one of ten light source parameters, +again by symbolic name. +.P +The following parameters are defined: +.TP 20 +\%\f3GL_AMBIENT\fP +\f2params\fP returns four integer or floating-point values representing the +ambient intensity of the light source. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1], +the corresponding integer return value is undefined. The initial value is +(0, 0, 0, 1). +.TP +\%\f3GL_DIFFUSE\fP +\f2params\fP returns four integer or floating-point values representing the +diffuse intensity of the light source. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1], +the corresponding integer return value is undefined. The initial value +for \%\f3GL_LIGHT0\fP is (1, 1, 1, 1); for other lights, the +initial value is (0, 0, 0, 0). +.TP +\%\f3GL_SPECULAR\fP +\f2params\fP returns four integer or floating-point values representing the +specular intensity of the light source. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1], +the corresponding integer return value is undefined. The initial value +for \%\f3GL_LIGHT0\fP is (1, 1, 1, 1); for other lights, the +initial value is (0, 0, 0, 0). +.TP +\%\f3GL_POSITION\fP +\f2params\fP returns four integer or floating-point values representing the +position of the light source. +Integer values, +when requested, +are computed by rounding the internal floating-point values to the +nearest integer value. +The returned values are those maintained in eye coordinates. +They will not be equal to the values specified using \%\f3glLight\fP, +unless the modelview matrix was identity at the time \%\f3glLight\fP was +called. The initial value is (0, 0, 1, 0). +.TP +\%\f3GL_SPOT_DIRECTION\fP +\f2params\fP returns three integer or floating-point values representing the +direction of the light source. +Integer values, +when requested, +are computed by rounding the internal floating-point values to the +nearest integer value. +The returned values are those maintained in eye coordinates. +They will not be equal to the values specified using \%\f3glLight\fP, +unless the modelview matrix was identity at the time \%\f3glLight\fP was called. +Although spot direction is normalized before being used in the lighting +equation, +the returned values are the transformed versions of the specified values +prior to normalization. The initial value is (0, 0, \-1). +.TP +\%\f3GL_SPOT_EXPONENT\fP +\f2params\fP returns a single integer or floating-point value representing the +spot exponent of the light. +An integer value, +when requested, +is computed by rounding the internal floating-point representation to +the nearest integer. The initial value is 0. +.TP +\%\f3GL_SPOT_CUTOFF\fP +\f2params\fP returns a single integer or floating-point value representing the +spot cutoff angle of the light. +An integer value, +when requested, +is computed by rounding the internal floating-point representation to +the nearest integer. The initial value is 180. +.TP +\%\f3GL_CONSTANT_ATTENUATION\fP +\f2params\fP returns a single integer or floating-point value representing the +constant (not distance-related) attenuation of the light. +An integer value, +when requested, +is computed by rounding the internal floating-point representation to +the nearest integer. The initial value is 1. +.TP +\%\f3GL_LINEAR_ATTENUATION \fP +\f2params\fP returns a single integer or floating-point value representing the +linear attenuation of the light. +An integer value, +when requested, +is computed by rounding the internal floating-point representation to +the nearest integer. The initial value is 0. +.TP +\%\f3GL_QUADRATIC_ATTENUATION\fP +\f2params\fP returns a single integer or floating-point value representing the +quadratic attenuation of the light. +An integer value, +when requested, +is computed by rounding the internal floating-point representation to +the nearest integer. The initial value is 0. +.SH NOTES +It is always the case that \%\f3GL_LIGHT\fP$i$ = \%\f3GL_LIGHT0\fP + $i$. +.P +If an error is generated, +no change is made to the contents of \f2params\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2light\fP or \f2pname\fP is not an +accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetLight\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glLight(3G)\fP Index: xc/doc/man/GL/gl/getmap.3gl diff -u /dev/null xc/doc/man/GL/gl/getmap.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getmap.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,134 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getmap.gl +.ds Xs 19970 5 getmap.gl +.TH GLGETMAP 3G +.SH NAME +.B "glGetMapdv, glGetMapfv, glGetMapiv +\- return evaluator parameters + +.SH C SPECIFICATION +void \f3glGetMapdv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetMapdv( 'u + GLenum \fIquery\fP, + GLdouble \fI*v\fP ) +.fi +void \f3glGetMapfv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetMapfv( 'u + GLenum \fIquery\fP, + GLfloat \fI*v\fP ) +.fi +void \f3glGetMapiv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetMapiv( 'u + GLenum \fIquery\fP, + GLint \fI*v\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Specifies the symbolic name of a map. +Accepted values are +\%\f3GL_MAP1_COLOR_4\fP, +\%\f3GL_MAP1_INDEX\fP, +\%\f3GL_MAP1_NORMAL\fP, +\%\f3GL_MAP1_TEXTURE_COORD_1\fP, +\%\f3GL_MAP1_TEXTURE_COORD_2\fP, +\%\f3GL_MAP1_TEXTURE_COORD_3\fP, +\%\f3GL_MAP1_TEXTURE_COORD_4\fP, +\%\f3GL_MAP1_VERTEX_3\fP, +\%\f3GL_MAP1_VERTEX_4\fP, +\%\f3GL_MAP2_COLOR_4\fP, +\%\f3GL_MAP2_INDEX\fP, +\%\f3GL_MAP2_NORMAL\fP, +\%\f3GL_MAP2_TEXTURE_COORD_1\fP, +\%\f3GL_MAP2_TEXTURE_COORD_2\fP, +\%\f3GL_MAP2_TEXTURE_COORD_3\fP, +\%\f3GL_MAP2_TEXTURE_COORD_4\fP, +\%\f3GL_MAP2_VERTEX_3\fP, and +\%\f3GL_MAP2_VERTEX_4\fP. +.TP +\f2query\fP +Specifies which parameter to return. +Symbolic names +\%\f3GL_COEFF\fP, +\%\f3GL_ORDER\fP, and +\%\f3GL_DOMAIN\fP are accepted. +.TP +\f2v\fP +Returns the requested data. +.SH DESCRIPTION +\%\f3glMap1\fP and \%\f3glMap2\fP define evaluators. +\%\f3glGetMap\fP returns evaluator parameters. +\f2target\fP chooses a map, +\f2query\fP selects a specific parameter, +and \f2v\fP points to storage where the values will be returned. +.P +The acceptable values for the \f2target\fP parameter are described +in the \%\f3glMap1\fP and \%\f3glMap2\fP reference pages. +.P +\f2query\fP can assume the following values: +.TP 15 +\%\f3GL_COEFF\fP +\f2v\fP returns the control points for the evaluator function. +One-dimensional evaluators return $order$ control points, +and two-dimensional evaluators return $uorder ~times~ vorder$ control points. +Each control point consists of one, two, three, or four integer, +single-precision floating-point, +or double-precision floating-point values, +depending on the type of the evaluator. +The GL returns two-dimensional control points in row-major order, +incrementing the $uorder$ index quickly +and the $vorder$ index after each row. +Integer values, +when requested, +are computed by rounding the internal floating-point values to the +nearest integer values. +.TP +\%\f3GL_ORDER\fP +\f2v\fP returns the order of the evaluator function. +One-dimensional evaluators return a single value, +$order$. The initial value is 1. +Two-dimensional evaluators return two values, +$uorder$ and $vorder$. The initial value is 1,1. +.TP +\%\f3GL_DOMAIN\fP +\f2v\fP returns the linear $u$ and $v$ mapping parameters. +One-dimensional evaluators return two values, +$u1$ and $u2$, +as specified by \%\f3glMap1\fP. +Two-dimensional evaluators return four values +($u1$, $u2$, $v1$, and $v2$) +as specified by \%\f3glMap2\fP. +Integer values, +when requested, +are computed by rounding the internal floating-point values to the +nearest integer values. +.SH NOTES +If an error is generated, +no change is made to the contents of \f2v\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if either \f2target\fP or \f2query\fP is not +an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetMap\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glEvalCoord(3G)\fP, +\%\f3glMap1(3G)\fP, +\%\f3glMap2(3G)\fP Index: xc/doc/man/GL/gl/getmaterial.3gl diff -u /dev/null xc/doc/man/GL/gl/getmaterial.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getmaterial.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,133 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getmateri +.ds Xs 34280 6 getmaterial.gl +.TH GLGETMATERIAL 3G +.SH NAME +.B "glGetMaterialfv, glGetMaterialiv +\- return material parameters + +.SH C SPECIFICATION +void \f3glGetMaterialfv\fP( +GLenum \fIface\fP, +.nf +.ta \w'\f3void \fPglGetMaterialfv( 'u + GLenum \fIpname\fP, + GLfloat \fI*params\fP ) +.fi +void \f3glGetMaterialiv\fP( +GLenum \fIface\fP, +.nf +.ta \w'\f3void \fPglGetMaterialiv( 'u + GLenum \fIpname\fP, + GLint \fI*params\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIparams\fP\ \ 'u +\f2face\fP +Specifies which of the two materials is being queried. +\%\f3GL_FRONT\fP or \%\f3GL_BACK\fP are accepted, +representing the front and back materials, respectively. +.TP +\f2pname\fP +Specifies the material parameter to return. +\%\f3GL_AMBIENT\fP, +\%\f3GL_DIFFUSE\fP, +\%\f3GL_SPECULAR\fP, +\%\f3GL_EMISSION\fP, +\%\f3GL_SHININESS\fP, and +\%\f3GL_COLOR_INDEXES\fP +are accepted. +.TP +\f2params\fP +Returns the requested data. +.SH DESCRIPTION +\%\f3glGetMaterial\fP returns in \f2params\fP the value or values of parameter \f2pname\fP +of material \f2face\fP. Six parameters are defined: +.TP 22 +\%\f3GL_AMBIENT\fP +\f2params\fP returns four integer or floating-point values representing the +ambient reflectance of the material. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1], +the corresponding integer return value is undefined. The initial value is +(0.2, 0.2, 0.2, 1.0) +.TP +\%\f3GL_DIFFUSE\fP +\f2params\fP returns four integer or floating-point values representing the +diffuse reflectance of the material. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1], +the corresponding integer return value is undefined. The initial value is +(0.8, 0.8, 0.8, 1.0). +.TP +\%\f3GL_SPECULAR\fP +\f2params\fP returns four integer or floating-point values representing the +specular reflectance of the material. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1], +the corresponding integer return value is undefined. The initial value is +(0, 0, 0, 1). +.TP +\%\f3GL_EMISSION\fP +\f2params\fP returns four integer or floating-point values representing the +emitted light intensity of the material. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1.0], +the corresponding integer return value is undefined. The initial value is +(0, 0, 0, 1). +.TP +\%\f3GL_SHININESS\fP +\f2params\fP returns one integer or floating-point value representing the +specular exponent of the material. +Integer values, +when requested, +are computed by rounding the internal floating-point value to the +nearest integer value. The initial value is 0. +.TP +\%\f3GL_COLOR_INDEXES\fP +\f2params\fP returns three integer or floating-point values representing the +ambient, diffuse, and specular indices of the material. +These indices are used only for color index lighting. +(All the other parameters are used only for RGBA lighting.) +Integer values, +when requested, +are computed by rounding the internal floating-point values to the +nearest integer values. +.SH NOTES +If an error is generated, +no change is made to the contents of \f2params\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2face\fP or \f2pname\fP is not an +accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetMaterial\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glMaterial(3G)\fP Index: xc/doc/man/GL/gl/getminmax.3gl diff -u /dev/null xc/doc/man/GL/gl/getminmax.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getminmax.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,149 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getminmax +.ds Xs 43140 6 getminmax.gl +.TH GLGETMINMAX 3G +.SH NAME +.B "glGetMinmax +\- get minimum and maximum pixel values + +.SH C SPECIFICATION +void \f3glGetMinmax\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetMinmax( 'u + GLboolean \fIreset\fP, + GLenum \fIformat\fP, + GLenum \fItypes\fP, + GLvoid \fI*values\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Must be +\%\f3GL_MINMAX\fP. +.TP +\f2reset\fP +If \%\f3GL_TRUE\fP, all entries in the minmax table that are actually +returned are reset to their initial values. (Other entries are unaltered.) +If \%\f3GL_FALSE\fP, the minmax table is unaltered. +.TP +\f2format\fP +The of the data to be returned in \f2values\fP. +Must be one of +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, or +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2types\fP +The type of the data to be returned in \f2values\fP. +Symbolic constants +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +are accepted. +.TP +\f2values\fP +A pointer to storage for the returned values. +.SH DESCRIPTION +\%\f3glGetMinmax\fP returns the accumulated minimum and maximum pixel values (computed on a +per-component basis) in a one-dimensional image of width 2. The first set +of return values are the minima, and the second set of return values +are the maxima. +The of the return values is determined by \f2format\fP, and their type is +determined by \f2types\fP. +.PP +No pixel transfer operations are performed on the return values, but pixel +storage modes that are applicable to 1-dimensional images are performed. +Color components that are requested in the specified \f2format\fP, but that +are not included in the internal of the minmax table, are +returned as zero. The assignment of internal color components to the +components requested by \f2format\fP are as follows: +.sp +.TS +center; +lb lb +l l. +_ +Internal Component Resulting Component +_ +Red Red +Green Green +Blue Blue +Alpha Alpha +Luminance Red +_ +.TE + +.PP +If \f2reset\fP is \%\f3GL_TRUE\fP, the minmax table entries corresponding +to the return values are reset to their initial +values. Minimum and maximum values that are not returned are not +modified, even if \f2reset\fP is \%\f3GL_TRUE\fP. +.SH NOTES +\%\f3glGetMinmax\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_MINMAX\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2types\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetMinmax\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2types\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2types\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH SEE ALSO +\%\f3glMinmax(3G)\fP, +\%\f3glResetMinmax(3G)\fP, +\%\f3glGetMinmaxParameter(3G)\fP Index: xc/doc/man/GL/gl/getminmaxparameter.3gl diff -u /dev/null xc/doc/man/GL/gl/getminmaxparameter.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getminmaxparameter.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,76 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getminmax +.ds Xs 8418 4 getminmaxparameter.gl +.TH GLGETMINMAXPARAMETER 3G +.SH NAME +.B "glGetMinmaxParameterfv, glGetMinmaxParameteriv +\- get minmax parameters + +.SH C SPECIFICATION +void \f3glGetMinmaxParameterfv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetMinmaxParameterfv( 'u + GLenum \fIpname\fP, + GLfloat \fI*params\fP ) +.fi +void \f3glGetMinmaxParameteriv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetMinmaxParameteriv( 'u + GLenum \fIpname\fP, + GLint \fI*params\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Must be +\%\f3GL_MINMAX\fP. +.TP +\f2pname\fP +The parameter to be retrieved. +Must be one of +\%\f3GL_MINMAX_FORMAT\fP or +\%\f3GL_MINMAX_SINK\fP. +.TP +\f2params\fP +A pointer to storage for the retrieved parameters. +.SH DESCRIPTION +\%\f3glGetMinmaxParameter\fP retrieves parameters for the current minmax table by setting +\f2pname\fP to one of the following values: +.sp + +.TS +center; +lb lb +l l. +_ +Parameter Description +_ +\%\f3GL_MINMAX_FORMAT\fP Internal of minmax table +\%\f3GL_MINMAX_SINK\fP Value of the \f2sink\fP parameter +_ +.TE + +.SH NOTES +\%\f3glGetMinmaxParameter\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_MINMAX\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2pname\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetMinmaxParameter\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glMinmax(3G)\fP, +\%\f3glGetMinmax(3G)\fP Index: xc/doc/man/GL/gl/getpixelmap.3gl diff -u /dev/null xc/doc/man/GL/gl/getpixelmap.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getpixelmap.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,156 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getpixelm +.ds Xs 23505 6 getpixelmap.gl +.TH GLGETPIXELMAP 3G +.SH NAME +.B "glGetPixelMapfv, glGetPixelMapuiv, glGetPixelMapusv +\- return the specified pixel map + +.SH C SPECIFICATION +void \f3glGetPixelMapfv\fP( +GLenum \fImap\fP, +.nf +.ta \w'\f3void \fPglGetPixelMapfv( 'u + GLfloat \fI*values\fP ) +.fi +void \f3glGetPixelMapuiv\fP( +GLenum \fImap\fP, +.nf +.ta \w'\f3void \fPglGetPixelMapuiv( 'u + GLuint \fI*values\fP ) +.fi +void \f3glGetPixelMapusv\fP( +GLenum \fImap\fP, +.nf +.ta \w'\f3void \fPglGetPixelMapusv( 'u + GLushort \fI*values\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIvalues\fP\ \ 'u +\f2map\fP +Specifies the name of the pixel map to return. +Accepted values are +\%\f3GL_PIXEL_MAP_I_TO_I\fP, +\%\f3GL_PIXEL_MAP_S_TO_S\fP, +\%\f3GL_PIXEL_MAP_I_TO_R\fP, +\%\f3GL_PIXEL_MAP_I_TO_G\fP, +\%\f3GL_PIXEL_MAP_I_TO_B\fP, +\%\f3GL_PIXEL_MAP_I_TO_A\fP, +\%\f3GL_PIXEL_MAP_R_TO_R\fP, +\%\f3GL_PIXEL_MAP_G_TO_G\fP, +\%\f3GL_PIXEL_MAP_B_TO_B\fP, and +\%\f3GL_PIXEL_MAP_A_TO_A\fP. +.TP +\f2values\fP +Returns the pixel map contents. +.SH DESCRIPTION +See the \%\f3glPixelMap\fP reference page for a description of the acceptable +values for the \f2map\fP parameter. +\%\f3glGetPixelMap\fP returns in \f2values\fP the contents of the pixel map +specified in \f2map\fP. +Pixel maps are used during the execution of +\%\f3glReadPixels\fP, +\%\f3glDrawPixels\fP, +\%\f3glCopyPixels\fP, +\%\f3glTexImage1D\fP, +\%\f3glTexImage2D\fP, +\%\f3glTexImage3D\fP, +\%\f3glTexSubImage1D\fP, +\%\f3glTexSubImage2D\fP, +\%\f3glTexSubImage3D\fP, +\%\f3glCopyTexImage1D\fP, +\%\f3glCopyTexImage2D\fP, +\%\f3glCopyTexSubImage1D\fP, +\%\f3glCopyTexSubImage2D\fP, +\%\f3glCopyTexSubImage3D\fP, +\%\f3glColorTable\fP, +\%\f3glColorSubTable\fP, +\%\f3glCopyColorTable\fP, +\%\f3glCopyColorSubTable\fP, +\%\f3glConvolutionFilter1D\fP, +\%\f3glConvolutionFilter2D\fP, +\%\f3glSeparableFilter2D\fP, +\%\f3glGetHistogram\fP, +\%\f3glGetMinmax\fP, and +\%\f3glGetTexImage\fP +to map color indices, +stencil indices, +color components, +and depth components to other values. +.P +Unsigned integer values, +if requested, +are linearly mapped from the internal fixed or floating-point representation +such that 1.0 maps to the largest representable integer value, +and 0.0 maps to 0. +Return unsigned integer values are undefined if the map value was +not in the range [0,1]. +.P +To determine the required size of \f2map\fP, +call \%\f3glGet\fP with the appropriate symbolic constant. +.SH NOTES +If an error is generated, +no change is made to the contents of \f2values\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2map\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetPixelMap\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +.na +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_I_TO_I_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_S_TO_S_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_I_TO_R_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_I_TO_G_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_I_TO_B_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_I_TO_A_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_R_TO_R_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_G_TO_G_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_B_TO_B_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_A_TO_A_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_PIXEL_MAP_TABLE\fP +.SH SEE ALSO +\%\f3glColorSubTable(3G)\fP, +\%\f3glColorTable(3G)\fP, +\%\f3glConvolutionFilter1D(3G)\fP, +\%\f3glConvolutionFilter2D(3G)\fP, +\%\f3glCopyColorSubTable(3G)\fP, +\%\f3glCopyColorTable(3G)\fP, +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glGetHistogram(3G)\fP, +\%\f3glGetMinmax(3G)\fP, +\%\f3glGetTexImage(3G)\fP, +\%\f3glPixelMap(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glReadPixels(3G)\fP, +\%\f3glSeparableFilter2D(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP Index: xc/doc/man/GL/gl/getpointerv.3gl diff -u /dev/null xc/doc/man/GL/gl/getpointerv.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getpointerv.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,72 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getpointe +.ds Xs 38346 4 getpointerv.gl +.TH GLGETPOINTERV 3G +.SH NAME +.B "glGetPointerv +\- return the address of the specified pointer + +.SH C SPECIFICATION +void \f3glGetPointerv\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglGetPointerv( 'u + void \fI**params\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIparams\fP\ \ 'u +\f2pname\fP +Specifies the array or buffer pointer to be returned. +Symbolic constants +\%\f3GL_COLOR_ARRAY_POINTER\fP, +\%\f3GL_EDGE_FLAG_ARRAY_POINTER\fP, +\%\f3GL_FEEDBACK_BUFFER_POINTER\fP, +\%\f3GL_INDEX_ARRAY_POINTER\fP, +\%\f3GL_NORMAL_ARRAY_POINTER\fP, +\%\f3GL_TEXTURE_COORD_ARRAY_POINTER\fP, +\%\f3GL_SELECTION_BUFFER_POINTER\fP, +and +\%\f3GL_VERTEX_ARRAY_POINTER\fP +are accepted. +.TP +\f2params\fP +Returns the pointer value specified by \f2pname\fP. +.SH DESCRIPTION +\%\f3glGetPointerv\fP returns pointer information. \f2pname\fP +is a symbolic constant indicating the pointer to be returned, and +\f2params\fP is a pointer to a location in which to place the returned data. +.SH NOTES +\%\f3glGetPointerv\fP is available only if the GL version is 1.1 or greater. +.P +The pointers are all client-side state. +.P +The initial value for each pointer is 0. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, querying the +\%\f3GL_TEXTURE_COORD_ARRAY_POINTER\fP returns the value for the active +client texture unit. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2pname\fP is not an accepted value. +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glClientActiveTextureARB(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glFeedbackBuffer(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glInterleavedArrays(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glSelectBuffer(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/getpolygonstipple.3gl diff -u /dev/null xc/doc/man/GL/gl/getpolygonstipple.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getpolygonstipple.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,52 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getpolygo +.ds Xs 49553 4 getpolygonstipple.gl +.TH GLGETPOLYGONSTIPPLE 3G +.SH NAME +.B "glGetPolygonStipple +\- return the polygon stipple pattern + +.SH C SPECIFICATION +void \f3glGetPolygonStipple\fP( +GLubyte \fI*mask\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2mask\fP\ \ 'u +\f2mask\fP +Returns the stipple pattern. The initial value is all 1's. +.SH DESCRIPTION +\%\f3glGetPolygonStipple\fP returns to \f2mask\fP a $32 ~times~ 32$ polygon stipple pattern. +The pattern is packed into memory as if \%\f3glReadPixels\fP +with both \f2height\fP and \f2width\fP of 32, +\f2type\fP of \%\f3GL_BITMAP\fP, +and \f2format\fP of \%\f3GL_COLOR_INDEX\fP were called, +and the stipple pattern were stored in an internal $32 ~times~ 32$ color +index buffer. +Unlike \%\f3glReadPixels\fP, +however, +pixel transfer operations +(shift, offset, pixel map) +are not applied to the returned stipple image. +.SH NOTES +If an error is generated, +no change is made to the contents of \f2mask\fP. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetPolygonStipple\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glPolygonStipple(3G)\fP, +\%\f3glReadPixels(3G)\fP Index: xc/doc/man/GL/gl/getseparablefilter.3gl diff -u /dev/null xc/doc/man/GL/gl/getseparablefilter.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getseparablefilter.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,152 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getsepara +.ds Xs 5701 6 getseparablefilter.gl +.TH GLGETSEPARABLEFILTER 3G +.SH NAME +.B "glGetSeparableFilter +\- get separable convolution filter kernel images + +.SH C SPECIFICATION +void \f3glGetSeparableFilter\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetSeparableFilter( 'u + GLenum \fIformat\fP, + GLenum \fItype\fP, + GLvoid \fI*row\fP, + GLvoid \fI*column\fP, + GLvoid \fI*span\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +The separable filter to be retrieved. +Must be +\%\f3GL_SEPARABLE_2D\fP. +.TP +\f2format\fP +Format of the output images. +Must be one of +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, or +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +Data type of components in the output images. +Symbolic constants +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +are accepted. +.TP +\f2row\fP +Pointer to storage for the row filter image. +.TP +\f2column\fP +Pointer to storage for the column filter image. +.TP +\f2span\fP +Pointer to storage for the span filter image (currently unused). +.SH DESCRIPTION +\%\f3glGetSeparableFilter\fP returns the two one-dimensional filter kernel images for the +current separable 2D convolution filter. +The row image is placed in \f2row\fP and the column image is placed in +\f2column\fP according to the specifications in \f2format\fP and \f2type\fP. +(In the current implementation, \f2span\fP is not affected in any way.) +No pixel transfer operations are performed on the images, but the relevant +pixel storage modes are applied. +.sp +Color components that are present in \f2format\fP but not included in the +internal of the filters are returned as zero. +The assignments of internal color components to the components of \f2format\fP +are as follows: +.sp + +.TS +center; +cb cb +l l. +_ +Internal Component Resulting Component +_ +Red Red +Green Green +Blue Blue +Alpha Alpha +Luminance Red +Intensity Red +_ +.TE + +.SH NOTES +\%\f3glGetSeparableFilter\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.P +Non-separable 2D filters must be retrieved with \%\f3glGetConvolutionFilter\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_SEPARABLE_2D\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetSeparableFilter\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGetConvolutionParameter\fP +.SH SEE ALSO +\%\f3glGetConvolutionFilter(3G)\fP, +\%\f3glConvolutionParameter(3G)\fP, +\%\f3glSeparableFilter2D(3G)\fP Index: xc/doc/man/GL/gl/getstring.3gl diff -u /dev/null xc/doc/man/GL/gl/getstring.3gl:1.1 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getstring.3gl Mon Jan 14 20:16:29 2002 @@ -0,0 +1,83 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 getstring +.ds Xs 56397 5 getstring.gl +.TH GLGETSTRING 3G +.SH NAME +.B "\- return a string describing the current GL connection + +.SH C SPECIFICATION +const GLubyte* \f3glGetString\fP( +GLenum \fIname\fP ) +.SH PARAMETERS +.TP \w'\fIname\fP\ \ 'u +\f2name\fP +Specifies a symbolic constant, one of +\%\f3GL_VENDOR\fP, \%\f3GL_RENDERER\fP, \%\f3GL_VERSION\fP, or \%\f3GL_EXTENSIONS\fP. +.SH DESCRIPTION +\%\f3glGetString\fP returns a pointer to a static string +describing some aspect of the current GL connection. +\f2name\fP can be one of the following: +.TP 20 +\%\f3GL_VENDOR\fP +Returns the company responsible for this GL implementation. +This name does not change from release to release. +.TP +\%\f3GL_RENDERER\fP +Returns the name of the renderer. +This name is typically specific to a particular configuration of a hardware +platform. +It does not change from release to release. +.TP +\%\f3GL_VERSION\fP +Returns a version or release number. +.TP +\%\f3GL_EXTENSIONS\fP +Returns a space-separated list of supported extensions to GL. +.P +Because the GL does not include queries for the performance +characteristics of an implementation, some applications are written to +recognize known platforms and modify their GL usage based on known +performance characteristics of these platforms. +Strings \%\f3GL_VENDOR\fP and \%\f3GL_RENDERER\fP together uniquely specify +a platform. They do not change from release to release and should be used +by platform-recognition algorithms. +.P +Some applications want to make use of features that +are not part of the standard GL. These features +may be implemented as extensions to the standard GL. +The \%\f3GL_EXTENSIONS\fP string is a space-separated +list of supported GL extensions. +(Extension names never contain a space character.) +.P +The \%\f3GL_VERSION\fP string begins with a version number. +The version number uses one +of these forms: +.P +\f2major_number.minor_number\fP +.br +\f2major_number.minor_number.release_number\fP +.P +Vendor-specific information may follow the version +number. Its depends on the implementation, but +a space always separates the version number and +the vendor-specific information. +.P +All strings are null-terminated. +.SH NOTES +If an error is generated, \%\f3glGetString\fP returns 0. +.P +The client and server may support different versions or extensions. +\%\f3glGetString\fP always returns a compatible version number or list of extensions. +The release number always describes the server. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2name\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetString\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. Index: xc/doc/man/GL/gl/gettexenv.3gl diff -u /dev/null xc/doc/man/GL/gl/gettexenv.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/gettexenv.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,80 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 gettexenv +.ds Xs 32087 4 gettexenv.gl +.TH GLGETTEXENV 3G +.SH NAME +.B "glGetTexEnvfv, glGetTexEnviv +\- return texture environment parameters + +.SH C SPECIFICATION +void \f3glGetTexEnvfv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetTexEnvfv( 'u + GLenum \fIpname\fP, + GLfloat \fI*params\fP ) +.fi +void \f3glGetTexEnviv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetTexEnviv( 'u + GLenum \fIpname\fP, + GLint \fI*params\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Specifies a texture environment. +Must be \%\f3GL_TEXTURE_ENV\fP. +.TP +\f2pname\fP +Specifies the symbolic name of a texture environment parameter. +Accepted values are \%\f3GL_TEXTURE_ENV_MODE\fP and \%\f3GL_TEXTURE_ENV_COLOR\fP. +.TP +\f2params\fP +Returns the requested data. +.SH DESCRIPTION +\%\f3glGetTexEnv\fP returns in \f2params\fP selected values of a texture environment that +was specified with \%\f3glTexEnv\fP. +\f2target\fP specifies a texture environment. +Currently, only one texture environment is defined and supported: +\%\f3GL_TEXTURE_ENV\fP. +.P +\f2pname\fP names a specific texture environment parameter, as follows: +.TP 10 +\%\f3GL_TEXTURE_ENV_MODE\fP +\f2params\fP returns the single-valued texture environment mode, +a symbolic constant. The initial value is \%\f3GL_MODULATE\fP. +.TP +\%\f3GL_TEXTURE_ENV_COLOR\fP +\f2params\fP returns four integer or floating-point values that are the +texture environment color. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer, +and \-1.0 maps to the most negative representable integer. The initial +value is (0, 0, 0, 0). +.SH NOTES +If an error is generated, +no change is made to the contents of \f2params\fP. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glGetTexEnv\fP returns +the texture environment parameters for the active texture unit. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP or \f2pname\fP is not an +accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetTexEnv\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glTexEnv(3G)\fP Index: xc/doc/man/GL/gl/gettexgen.3gl diff -u /dev/null xc/doc/man/GL/gl/gettexgen.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/gettexgen.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,107 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 gettexgen +.ds Xs 2655 5 gettexgen.gl +.TH GLGETTEXGEN 3G +.SH NAME +.B "glGetTexGendv, glGetTexGenfv, glGetTexGeniv +\- return texture coordinate generation parameters + +.SH C SPECIFICATION +void \f3glGetTexGendv\fP( +GLenum \fIcoord\fP, +.nf +.ta \w'\f3void \fPglGetTexGendv( 'u + GLenum \fIpname\fP, + GLdouble \fI*params\fP ) +.fi +void \f3glGetTexGenfv\fP( +GLenum \fIcoord\fP, +.nf +.ta \w'\f3void \fPglGetTexGenfv( 'u + GLenum \fIpname\fP, + GLfloat \fI*params\fP ) +.fi +void \f3glGetTexGeniv\fP( +GLenum \fIcoord\fP, +.nf +.ta \w'\f3void \fPglGetTexGeniv( 'u + GLenum \fIpname\fP, + GLint \fI*params\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIparams\fP\ \ 'u +\f2coord\fP +Specifies a texture coordinate. +Must be +\%\f3GL_S\fP, +\%\f3GL_T\fP, +\%\f3GL_R\fP, or +\%\f3GL_Q\fP. +.TP +\f2pname\fP +Specifies the symbolic name of the value(s) to be returned. +Must be either \%\f3GL_TEXTURE_GEN_MODE\fP +or the name of one of the texture generation plane equations: +\%\f3GL_OBJECT_PLANE\fP or \%\f3GL_EYE_PLANE\fP. +.TP +\f2params\fP +Returns the requested data. +.SH DESCRIPTION +\%\f3glGetTexGen\fP returns in \f2params\fP selected parameters of a texture coordinate +generation function that was specified using \%\f3glTexGen\fP. +\f2coord\fP names one of the (\f2s\fP, \f2t\fP, \f2r\fP, \f2q\fP) +texture coordinates, +using the symbolic constant +\%\f3GL_S\fP, +\%\f3GL_T\fP, +\%\f3GL_R\fP, or +\%\f3GL_Q\fP. +.P +\f2pname\fP specifies one of three symbolic names: +.TP 28 +\%\f3GL_TEXTURE_GEN_MODE\fP +\f2params\fP returns the single-valued texture generation function, +a symbolic constant. The initial value is \%\f3GL_EYE_LINEAR\fP. +.TP +\%\f3GL_OBJECT_PLANE\fP +\f2params\fP returns the four plane equation coefficients that specify +object linear-coordinate generation. +Integer values, when requested, +are mapped directly from the internal floating-point representation. +.BP +.TP +\%\f3GL_EYE_PLANE\fP +\f2params\fP returns the four plane equation coefficients that specify +eye linear-coordinate generation. +Integer values, +when requested, +are mapped directly from the internal floating-point representation. +The returned values are those maintained in eye coordinates. +They are not equal to the values specified using \%\f3glTexGen\fP, +unless the modelview matrix was identity when \%\f3glTexGen\fP was called. +.SH NOTES +If an error is generated, +no change is made to the contents of \f2params\fP. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glGetTexGen\fP returns +the texture coordinate generation parameters for the active texture unit. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2coord\fP or \f2pname\fP is not an +accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetTexGen\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glTexGen(3G)\fP Index: xc/doc/man/GL/gl/getteximage.3gl diff -u /dev/null xc/doc/man/GL/gl/getteximage.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/getteximage.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,209 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 gettexima +.ds Xs 2939 8 getteximage.gl +.TH GLGETTEXIMAGE 3G +.SH NAME +.B "glGetTexImage +\- return a texture image + +.SH C SPECIFICATION +void \f3glGetTexImage\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetTexImage( 'u + GLint \fIlevel\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + GLvoid \fI*pixels\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Specifies which texture is to be obtained. +\%\f3GL_TEXTURE_1D\fP, \%\f3GL_TEXTURE_2D\fP, and \%\f3GL_TEXTURE_3D\fP are accepted. +.TP +\f2level\fP +Specifies the level-of-detail number of the desired image. +Level 0 is the base image level. +Level $n$ is the $n$th mipmap reduction image. +.TP +\f2format\fP +Specifies a pixel for the returned data. +The supported formats are +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, and +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +Specifies a pixel type for the returned data. +The supported types are +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP. +.TP +\f2pixels\fP +Returns the texture image. +Should be a pointer to an array of the type specified by \f2type\fP. +.SH DESCRIPTION +\%\f3glGetTexImage\fP returns a texture image into \f2pixels\fP. +\f2target\fP specifies whether the desired texture image is one specified by +\%\f3glTexImage1D\fP (\%\f3GL_TEXTURE_1D\fP), +\%\f3glTexImage2D\fP (\%\f3GL_TEXTURE_2D\fP), or +\%\f3glTexImage3D\fP (\%\f3GL_TEXTURE_3D\fP). +\f2level\fP specifies the level-of-detail number of the desired image. +\f2format\fP and \f2type\fP specify the and type of the desired image array. +See the reference pages \%\f3glTexImage1D\fP and \%\f3glDrawPixels\fP +for a description of the acceptable values for the \f2format\fP and \f2type\fP +parameters, respectively. +.P +To understand the operation of \%\f3glGetTexImage\fP, consider the selected internal +four-component texture image to be an RGBA color buffer the size of the image. +The semantics of \%\f3glGetTexImage\fP are then identical to those of \%\f3glReadPixels\fP, +with the exception that no pixel transfer operations are performed, +when called with the same \f2format\fP and \f2type\fP, +with \f2x\fP and \f2y\fP set to 0, +\f2width\fP set to the width of the texture image +(including border if one was specified), +and \f2height\fP set to 1 for 1D images, +or to the height of the texture image +(including border if one was specified) +for 2D images. +.BP +Because the internal texture image is an RGBA image, +pixel formats \%\f3GL_COLOR_INDEX\fP, +\%\f3GL_STENCIL_INDEX\fP, +and \%\f3GL_DEPTH_COMPONENT\fP are not accepted, +and pixel type \%\f3GL_BITMAP\fP is not accepted. +.P +If the selected texture image does not contain four components, +the following mappings are applied. +Single-component textures are treated as RGBA buffers with red set +to the single-component value, +green set to 0, blue set to 0, and alpha set to 1. +Two-component textures are treated as RGBA buffers with red set to +the value of component zero, +alpha set to the value of component one, +and green and blue set to 0. +Finally, +three-component textures are treated as RGBA buffers with red set to +component zero, +green set to component one, +blue set to component two, +and alpha set to 1. +.P +To determine the required size of \f2pixels\fP, +use \%\f3glGetTexLevelParameter\fP to determine the dimensions of the +internal texture image, +then scale the required number of pixels by the storage required for +each pixel, +based on \f2format\fP and \f2type\fP. +Be sure to take the pixel storage parameters into account, +especially \%\f3GL_PACK_ALIGNMENT\fP. +.SH NOTES +If an error is generated, +no change is made to the contents of \f2pixels\fP. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glGetTexImage\fP returns +the texture image for the active texture unit. +.P +The types \%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP, +and the formats +\%\f3GL_BGR\fP, and \%\f3GL_BGRA\fP are available only if the GL version is +1.2 or greater. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP, \f2format\fP, or \f2type\fP is not +an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater +than $log sub 2 max$, +where $max$ is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetTexImage\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is returned if \f2type\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is returned if \f2type\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP, and \f2format\fP is neither \%\f3GL_RGBA\fP +or \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexLevelParameter\fP with argument \%\f3GL_TEXTURE_WIDTH\fP +.br +\%\f3glGetTexLevelParameter\fP with argument \%\f3GL_TEXTURE_HEIGHT\fP +.br +\%\f3glGetTexLevelParameter\fP with argument \%\f3GL_TEXTURE_BORDER\fP +.br +\%\f3glGetTexLevelParameter\fP with argument \%\f3GL_TEXTURE_INTERNALFORMAT\fP +.br +\%\f3glGet\fP with arguments \%\f3GL_PACK_ALIGNMENT\fP and others +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glReadPixels(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP Index: xc/doc/man/GL/gl/gettexlevelparameter.3gl diff -u /dev/null xc/doc/man/GL/gl/gettexlevelparameter.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/gettexlevelparameter.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,182 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 gettexlev +.ds Xs 50913 7 gettexlevelparameter.gl +.TH GLGETTEXLEVELPARAMETER 3G +.SH NAME +.B "glGetTexLevelParameterfv, glGetTexLevelParameteriv +\- return texture parameter values for a specific level of detail + +.SH C SPECIFICATION +void \f3glGetTexLevelParameterfv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetTexLevelParameterfv( 'u + GLint \fIlevel\fP, + GLenum \fIpname\fP, + GLfloat \fI*params\fP ) +.fi +void \f3glGetTexLevelParameteriv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetTexLevelParameteriv( 'u + GLint \fIlevel\fP, + GLenum \fIpname\fP, + GLint \fI*params\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Specifies the symbolic name of the target texture, +either \%\f3GL_TEXTURE_1D\fP, \%\f3GL_TEXTURE_2D\fP, \%\f3GL_TEXTURE_3D\fP, +\%\f3GL_PROXY_TEXTURE_1D\fP, \%\f3GL_PROXY_TEXTURE_2D\fP, or +\%\f3GL_PROXY_TEXTURE_3D\fP. +.TP +\f2level\fP +Specifies the level-of-detail number of the desired image. +Level 0 is the base image level. +Level $n$ is the $n$th mipmap reduction image. +.TP +\f2pname\fP +Specifies the symbolic name of a texture parameter. +\%\f3GL_TEXTURE_WIDTH\fP, +\%\f3GL_TEXTURE_HEIGHT\fP, +\%\f3GL_TEXTURE_DEPTH\fP, +\%\f3GL_TEXTURE_INTERNAL_FORMAT\fP, +\%\f3GL_TEXTURE_BORDER\fP, +\%\f3GL_TEXTURE_RED_SIZE\fP, +\%\f3GL_TEXTURE_GREEN_SIZE\fP, +\%\f3GL_TEXTURE_BLUE_SIZE\fP, +\%\f3GL_TEXTURE_ALPHA_SIZE\fP, +\%\f3GL_TEXTURE_LUMINANCE_SIZE\fP, and +\%\f3GL_TEXTURE_INTENSITY_SIZE\fP are accepted. +.TP +\f2params\fP +Returns the requested data. +.SH DESCRIPTION +\%\f3glGetTexLevelParameter\fP returns in \f2params\fP texture parameter values for a specific +level-of-detail value, +specified as \f2level\fP. +\f2target\fP defines the target texture, +either \%\f3GL_TEXTURE_1D\fP, \%\f3GL_TEXTURE_2D\fP, \%\f3GL_TEXTURE_3D\fP, +\%\f3GL_PROXY_TEXTURE_1D\fP, +\%\f3GL_PROXY_TEXTURE_2D\fP, or +\%\f3GL_PROXY_TEXTURE_3D\fP. +.BR +.P +\%\f3GL_MAX_TEXTURE_SIZE\fP, and \%\f3GL_MAX_3D_TEXTURE_SIZE\fP are not really +descriptive enough. +It has to report the largest square texture image that can be +accommodated with mipmaps and borders, +but a long skinny texture, or a texture without mipmaps and borders, may +easily fit in texture memory. +The proxy targets allow the user to more accurately query +whether the GL can accommodate a texture of a given configuration. +If the texture cannot be accommodated, the texture state variables, which +may be queried with \%\f3glGetTexLevelParameter\fP, are set to 0. If the texture can be accommodated, +the texture state values will be set as they would be set for a +non-proxy target. +.P +\f2pname\fP specifies the texture parameter whose value or values +will be returned. +.P +The accepted parameter names are as follows: +.TP 10 +\%\f3GL_TEXTURE_WIDTH\fP +\f2params\fP returns a single value, +the width of the texture image. +This value includes the border of the texture image. The initial value is +0. +.TP +\%\f3GL_TEXTURE_HEIGHT\fP +\f2params\fP returns a single value, +the height of the texture image. +This value includes the border of the texture image. The initial value is +0. +.TP +\%\f3GL_TEXTURE_DEPTH\fP +\f2params\fP returns a single value, +the depth of the texture image. +This value includes the border of the texture image. The initial value is +0. +.TP +\%\f3GL_TEXTURE_INTERNAL_FORMAT\fP +\f2params\fP returns a single value, +the internal of the texture image. +.TP +\%\f3GL_TEXTURE_BORDER\fP +\f2params\fP returns a single value, +the width in pixels of the border of the texture image. The initial value +is 0. +.TP +\%\f3GL_TEXTURE_RED_SIZE\fP, +.TP +\%\f3GL_TEXTURE_GREEN_SIZE\fP, +.TP +\%\f3GL_TEXTURE_BLUE_SIZE\fP, +.TP +\%\f3GL_TEXTURE_ALPHA_SIZE\fP, +.TP +\%\f3GL_TEXTURE_LUMINANCE_SIZE\fP, +.TP +\%\f3GL_TEXTURE_INTENSITY_SIZE\fP +The internal storage resolution of an individual component. +The resolution chosen by the GL will be a close match for the resolution +requested by the user with the component argument of \%\f3glTexImage1D\fP, +\%\f3glTexImage2D\fP, \%\f3glTexImage3D\fP, \%\f3glCopyTexImage1D\fP, and +\%\f3glCopyTexImage2D\fP. The initial value is 0. +.SH NOTES +If an error is generated, +no change is made to the contents of \f2params\fP. +.P +\%\f3GL_TEXTURE_INTERNAL_FORMAT\fP is available only if the GL version is +1.1 or greater. In version 1.0, use \%\f3GL_TEXTURE_COMPONENTS\fP +instead. +.P +\%\f3GL_PROXY_TEXTURE_1D\fP and \%\f3GL_PROXY_TEXTURE_2D\fP are +available only if the GL version is 1.1 or greater. +.P +\%\f3GL_TEXTURE_3D\fP, \%\f3GL_PROXY_TEXTURE_3D\fP, and \%\f3GL_TEXTURE_DEPTH\fP +are available only if the GL version is 1.2 or greater. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glGetTexLevelParameter\fP returns +the texture level parameters for the active texture unit. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP or \f2pname\fP is not an +accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater +than $ log sub 2$ \f2max\fP, +where \f2max\fP is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetTexLevelParameter\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glGetTexParameter(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP Index: xc/doc/man/GL/gl/gettexparameter.3gl diff -u /dev/null xc/doc/man/GL/gl/gettexparameter.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/gettexparameter.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,142 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 gettexpar +.ds Xs 10274 6 gettexparameter.gl +.TH GLGETTEXPARAMETER 3G +.SH NAME +.B "glGetTexParameterfv, glGetTexParameteriv +\- return texture parameter values + +.SH C SPECIFICATION +void \f3glGetTexParameterfv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetTexParameterfv( 'u + GLenum \fIpname\fP, + GLfloat \fI*params\fP ) +.fi +void \f3glGetTexParameteriv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglGetTexParameteriv( 'u + GLenum \fIpname\fP, + GLint \fI*params\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Specifies the symbolic name of the target texture. +\%\f3GL_TEXTURE_1D\fP,\%\f3GL_TEXTURE_2D\fP, and \%\f3GL_TEXTURE_3D\fP are accepted. +.TP +\f2pname\fP +Specifies the symbolic name of a texture parameter. +\%\f3GL_TEXTURE_MAG_FILTER\fP, +\%\f3GL_TEXTURE_MIN_FILTER\fP, +\%\f3GL_TEXTURE_MIN_LOD\fP, +\%\f3GL_TEXTURE_MAX_LOD\fP, +\%\f3GL_TEXTURE_BASE_LEVEL\fP, +\%\f3GL_TEXTURE_MAX_LEVEL\fP, +\%\f3GL_TEXTURE_WRAP_S\fP, +\%\f3GL_TEXTURE_WRAP_T\fP, +\%\f3GL_TEXTURE_WRAP_R\fP, +\%\f3GL_TEXTURE_BORDER_COLOR\fP, +\%\f3GL_TEXTURE_PRIORITY\fP, and +\%\f3GL_TEXTURE_RESIDENT\fP are accepted. +.TP +\f2params\fP +Returns the texture parameters. +.SH DESCRIPTION +\%\f3glGetTexParameter\fP returns in \f2params\fP the value or values of the texture parameter +specified as \f2pname\fP. +\f2target\fP defines the target texture, +either \%\f3GL_TEXTURE_1D\fP, \%\f3GL_TEXTURE_2D\fP, or \%\f3GL_TEXTURE_3D\fP +to specify one-, two-, or three-dimensional texturing. +\f2pname\fP accepts the same symbols as \%\f3glTexParameter\fP, +with the same interpretations: +.TP 35 +\%\f3GL_TEXTURE_MAG_FILTER\fP +Returns the single-valued texture magnification filter, +a symbolic constant. The initial value is \%\f3GL_LINEAR\fP. +.TP +\%\f3GL_TEXTURE_MIN_FILTER\fP +Returns the single-valued texture minification filter, +a symbolic constant. The initial value is \%\f3GL_NEAREST_MIPMAP_LINEAR\fP. +.TP +\%\f3GL_TEXTURE_MIN_LOD\fP +Returns the single-valued texture minimum level-of-detail value. The +initial value is $-1000$. +.TP +\%\f3GL_TEXTURE_MAX_LOD\fP +Returns the single-valued texture maximum level-of-detail value. The +initial value is 1000. +.TP +\%\f3GL_TEXTURE_BASE_LEVEL\fP +Returns the single-valued base texture mipmap level. The initial value is 0. +.TP +\%\f3GL_TEXTURE_MAX_LEVEL\fP +Returns the single-valued maximum texture mipmap array level. The initial +value is 1000. +.TP +\%\f3GL_TEXTURE_WRAP_S\fP +Returns the single-valued wrapping function for texture coordinate $s$, +a symbolic constant. The initial value is \%\f3GL_REPEAT\fP. +.TP +\%\f3GL_TEXTURE_WRAP_T\fP +Returns the single-valued wrapping function for texture coordinate $t$, +a symbolic constant. The initial value is \%\f3GL_REPEAT\fP. +.TP +\%\f3GL_TEXTURE_WRAP_R\fP +Returns the single-valued wrapping function for texture coordinate $r$, +a symbolic constant. The initial value is \%\f3GL_REPEAT\fP. +.BP +.TP +\%\f3GL_TEXTURE_BORDER_COLOR\fP +Returns four integer or floating-point numbers that comprise the RGBA color +of the texture border. +Floating-point values are returned in the range [0, 1]. +Integer values are returned as a linear mapping of the internal floating-point +representation such that 1.0 maps to the most positive representable +integer and \-1.0 maps to the most negative representable +integer. The initial value is (0, 0, 0, 0). +.TP +\%\f3GL_TEXTURE_PRIORITY\fP +Returns the residence priority of the target texture (or the named +texture bound to it). The initial value is 1. +See \%\f3glPrioritizeTextures\fP. +.TP +\%\f3GL_TEXTURE_RESIDENT\fP +Returns the residence status of the target texture. +If the value returned in \f2params\fP is \%\f3GL_TRUE\fP, the texture is +resident in texture memory. +See \%\f3glAreTexturesResident\fP. +.SH NOTES +\%\f3GL_TEXTURE_PRIORITY\fP and \%\f3GL_TEXTURE_RESIDENT\fP are +available only if the GL version is 1.1 or greater. +.P +\%\f3GL_TEXTURE_3D\fP, +\%\f3GL_TEXTURE_MIN_LOD\fP, \%\f3GL_TEXTURE_MAX_LOD\fP, \%\f3GL_TEXTURE_BASE_LEVEL\fP, +\%\f3GL_TEXTURE_MAX_LEVEL\fP, and \%\f3GL_TEXTURE_WRAP_R\fP are available only +if the GL version is 1.2 or greater. +.P +If an error is generated, +no change is made to the contents of \f2params\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP or \f2pname\fP is not an +accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glGetTexParameter\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glAreTexturesResident(3G)\fP, +\%\f3glPrioritizeTextures(3G)\fP, +\%\f3glTexParameter(3G)\fP Index: xc/doc/man/GL/gl/hint.3gl diff -u /dev/null xc/doc/man/GL/gl/hint.3gl:1.1 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/hint.3gl Mon Jan 14 20:16:30 2002 @@ -0,0 +1,104 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 hint.gl - +.ds Xs 8452 5 hint.gl +.TH GLHINT 3G +.SH NAME +.B "glHint +\- specify implementation-specific hints + +.SH C SPECIFICATION +void \f3glHint\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglHint( 'u + GLenum \fImode\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Specifies a symbolic constant indicating the behavior to be controlled. +\%\f3GL_FOG_HINT\fP, +\%\f3GL_LINE_SMOOTH_HINT\fP, +\%\f3GL_PERSPECTIVE_CORRECTION_HINT\fP, +\%\f3GL_POINT_SMOOTH_HINT\fP, and +\%\f3GL_POLYGON_SMOOTH_HINT\fP are accepted. +.TP +\f2mode\fP +Specifies a symbolic constant indicating the desired behavior. +\%\f3GL_FASTEST\fP, +\%\f3GL_NICEST\fP, and +\%\f3GL_DONT_CARE\fP are accepted. +.SH DESCRIPTION +Certain aspects of GL behavior, +when there is room for interpretation, +can be controlled with hints. +A hint is specified with two arguments. +\f2target\fP is a symbolic +constant indicating the behavior to be controlled, +and \f2mode\fP is another symbolic constant indicating the desired +behavior. The initial value for each \f2target\fP is \%\f3GL_DONT_CARE\fP. +\f2mode\fP can be one of the following: +.TP 20 +\%\f3GL_FASTEST\fP +The most efficient option should be chosen. +.TP +\%\f3GL_NICEST\fP +The most correct, +or highest quality, +option should be chosen. +.TP +\%\f3GL_DONT_CARE\fP +No preference. +.P +Though the implementation aspects that can be hinted are well defined, +the interpretation of the hints depends on the implementation. +The hint aspects that can be specified with \f2target\fP, +along with suggested semantics, +are as follows: +.TP 20 +\%\f3GL_FOG_HINT\fP +Indicates the accuracy of fog calculation. +If per-pixel fog calculation is not efficiently supported +by the GL implementation, +hinting \%\f3GL_DONT_CARE\fP or \%\f3GL_FASTEST\fP can result in per-vertex +calculation of fog effects. +.TP +\%\f3GL_LINE_SMOOTH_HINT\fP +Indicates the sampling quality of antialiased lines. +If a larger filter function is applied, hinting \%\f3GL_NICEST\fP can +result in more pixel fragments being generated during rasterization, +.TP +\%\f3GL_PERSPECTIVE_CORRECTION_HINT\fP +Indicates the quality of color and texture coordinate interpolation. +If perspective-corrected parameter interpolation is not efficiently supported +by the GL implementation, +hinting \%\f3GL_DONT_CARE\fP or \%\f3GL_FASTEST\fP can result in simple linear +interpolation of colors and/or texture coordinates. +.TP +\%\f3GL_POINT_SMOOTH_HINT\fP +Indicates the sampling quality of antialiased points. +If a larger filter function is applied, hinting \%\f3GL_NICEST\fP can +result in more pixel fragments being generated during rasterization, +.TP +\%\f3GL_POLYGON_SMOOTH_HINT\fP +Indicates the sampling quality of antialiased polygons. +Hinting \%\f3GL_NICEST\fP can result in more pixel fragments being generated +during rasterization, +if a larger filter function is applied. +.SH NOTES +The interpretation of hints depends on the implementation. +Some implementations ignore \%\f3glHint\fP settings. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if either \f2target\fP or \f2mode\fP is not +an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glHint\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. Index: xc/doc/man/GL/gl/histogram.3gl diff -u /dev/null xc/doc/man/GL/gl/histogram.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/histogram.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,138 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 histogram +.ds Xs 13152 6 histogram.gl +.TH GLHISTOGRAM 3G +.SH NAME +.B "glHistogram +\- define histogram table + +.SH C SPECIFICATION +void \f3glHistogram\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglHistogram( 'u + GLsizei \fIwidth\fP, + GLenum \fIinternalformat\fP, + GLboolean \fIsink\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIinternalformat\fP\ \ 'u +\f2target\fP +The histogram whose parameters are to be set. +Must be one of +\%\f3GL_HISTOGRAM\fP or +\%\f3GL_PROXY_HISTOGRAM\fP. +.TP +\f2width\fP +The number of entries in the histogram table. Must be a power of 2. +.TP +\f2internalformat\fP +The of entries in the histogram table. +Must be one of +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, or +\%\f3GL_RGBA16\fP. +.TP +\f2sink\fP +If \%\f3GL_TRUE\fP, pixels will be consumed by the histogramming +process and no drawing or texture loading will take place. +If \%\f3GL_FALSE\fP, pixels will proceed to the minmax process after +histogramming. +.SH DESCRIPTION +When \%\f3GL_HISTOGRAM\fP is enabled, RGBA color components are converted to +histogram table indices by clamping to the range [0,1], multiplying by +the width of the histogram table, and rounding to the nearest integer. +The table entries selected by the RGBA indices are then incremented. +(If the internal of the histogram table includes luminance, then +the index derived from the R color component determines the luminance +table entry to be incremented.) If a histogram table entry is incremented +beyond its maximum value, then its value becomes undefined. (This is +not an error.) +.PP +Histogramming is performed only for RGBA pixels (though these may +be specified originally as color indices and converted to RGBA by +index table lookup). +Histogramming is enabled with \%\f3glEnable\fP and disabled with \%\f3glDisable\fP. +.PP +When \f2target\fP is \%\f3GL_HISTOGRAM\fP, \%\f3glHistogram\fP redefines the current +histogram table to have \f2width\fP entries of the specified by +\f2internalformat\fP. +The entries are indexed 0 through $"width" ~-~ 1$, and +all entries are initialized to zero. +The values in the previous histogram table, if any, are lost. +If \f2sink\fP is \%\f3GL_TRUE\fP, then pixels are discarded after histogramming; +no further processing of the pixels takes place, and no drawing, +texture loading, or pixel readback will result. +.PP +When \f2target\fP is \%\f3GL_PROXY_HISTOGRAM\fP, \%\f3glHistogram\fP computes all +state information as if the histogram table were to be redefined, +but does not actually define the new table. +If the requested histogram table is too large to be supported, then the +state information will be set to zero. +This provides a way to determine if a histogram table with the given +parameters can be supported. +.PP +.SH NOTES +\%\f3glHistogram\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP is less than zero or is +not a power of 2. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2internalformat\fP is not one of the +allowable values. +.P +\%\f3GL_TABLE_TOO_LARGE\fP is generated if \f2target\fP is \%\f3GL_HISTOGRAM\fP +and the histogram table specified is too large for the implementation. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glHistogram\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetHistogramParameter\fP +.SH SEE ALSO +\%\f3glGetHistogram(3G)\fP, +\%\f3glResetHistogram(3G)\fP Index: xc/doc/man/GL/gl/index.3gl diff -u /dev/null xc/doc/man/GL/gl/index.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/index.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,98 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 index.gl +.ds Xs 37923 4 index.gl +.TH GLINDEX 3G +.SH NAME +.B "glIndexd, glIndexf, glIndexi, glIndexs, glIndexub, glIndexdv, glIndexfv, glIndexiv, glIndexsv, glIndexubv +\- set the current color index + +.P +.SH C SPECIFICATION +void \f3glIndexd\fP( +GLdouble \fIc\fP ) +.nf +.fi +void \f3glIndexf\fP( +GLfloat \fIc\fP ) +.nf +.fi +void \f3glIndexi\fP( +GLint \fIc\fP ) +.nf +.fi +void \f3glIndexs\fP( +GLshort \fIc\fP ) +.nf +.fi +void \f3glIndexub\fP( +GLubyte c); /* \fI1.1\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f21.1\fP\ \ 'u +\f21.1\fP +Specifies the new value for the current color index. +.P +.SH C SPECIFICATION +void \f3glIndexdv\fP( +const GLdouble \fI*c\fP ) +.nf +.fi +void \f3glIndexfv\fP( +const GLfloat \fI*c\fP ) +.nf +.fi +void \f3glIndexiv\fP( +const GLint \fI*c\fP ) +.nf +.fi +void \f3glIndexsv\fP( +const GLshort \fI*c\fP ) +.nf +.fi +void \f3glIndexubv\fP( +const GLubyte *c); /* \fI1.1\fP ) +.nf +.fi + +.SH PARAMETERS +.TP +\f21.1\fP +Specifies a pointer to a one-element array that contains +the new value for the current color index. +.SH DESCRIPTION +\%\f3glIndex\fP updates the current (single-valued) color index. +It takes one argument, the new value for the current color index. +.P +The current index is stored as a floating-point value. +Integer values are converted directly to floating-point values, +with no special mapping. +The initial value is 1. +.P +Index values outside the representable range of the color index buffer +are not clamped. +However, +before an index is dithered (if enabled) and written to the frame buffer, +it is converted to fixed-point . +Any bits in the integer portion of the resulting fixed-point value +that do not correspond to bits in the frame buffer are masked out. +.SH NOTES +\%\f3glIndexub\fP and \%\f3glIndexubv\fP are available only if the GL version is +1.1 or greater. +.P +The current index can be updated at any time. +In particular, +\%\f3glIndex\fP can be called between a call to \%\f3glBegin\fP and the corresponding +call to \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_CURRENT_INDEX\fP +.SH SEE ALSO +\%\f3glColor(3G)\fP, +\%\f3glIndexPointer(3G)\fP Index: xc/doc/man/GL/gl/indexmask.3gl diff -u /dev/null xc/doc/man/GL/gl/indexmask.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/indexmask.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,57 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 indexmask +.ds Xs 54319 4 indexmask.gl +.TH GLINDEXMASK 3G +.SH NAME +.B "glIndexMask +\- control the writing of individual bits in the color index buffers + +.SH C SPECIFICATION +void \f3glIndexMask\fP( +GLuint \fImask\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2mask\fP\ \ 'u +\f2mask\fP +Specifies a bit mask to enable and disable the writing of individual bits +in the color index buffers. +Initially, the mask is all 1's. +.SH DESCRIPTION +\%\f3glIndexMask\fP controls the writing of individual bits in the color index buffers. +The least significant $n$ bits of \f2mask\fP, +where $n$ is the number of bits in a color index buffer, +specify a mask. +Where a 1 (one) appears in the mask, +it's possible to write to the corresponding bit in the color index +buffer (or buffers). +Where a 0 (zero) appears, +the corresponding bit is write-protected. +.P +This mask is used only in color index mode, +and it affects only the buffers currently selected for writing +(see \%\f3glDrawBuffer\fP). +Initially, all bits are enabled for writing. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glIndexMask\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_INDEX_WRITEMASK\fP +.SH SEE ALSO +\%\f3glColorMask(3G)\fP, +\%\f3glDepthMask(3G)\fP, +\%\f3glDrawBuffer(3G)\fP, +\%\f3glIndex(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glStencilMask(3G)\fP Index: xc/doc/man/GL/gl/indexpointer.3gl diff -u /dev/null xc/doc/man/GL/gl/indexpointer.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/indexpointer.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,114 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 indexpoin +.ds Xs 54341 6 indexpointer.gl +.TH GLINDEXPOINTER 3G +.SH NAME +.B "glIndexPointer +\- define an array of color indexes + +.SH C SPECIFICATION +void \f3glIndexPointer\fP( +GLenum \fItype\fP, +.nf +.ta \w'\f3void \fPglIndexPointer( 'u + GLsizei \fIstride\fP, + const GLvoid \fI*ptr\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIstride\fP\ \ 'u +\f2type\fP +Specifies the data type of each color index in the array. +Symbolic constants +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +and \%\f3GL_DOUBLE\fP +are accepted. The initial value is \%\f3GL_FLOAT\fP. +.TP +\f2stride\fP +Specifies the byte offset between consecutive color indexes. +If \f2stride\fP is 0 (the initial value), the color indexes are understood to +be tightly packed in the array. +The initial value is 0. +.TP +\f2ptr\fP +Specifies a pointer to the first index in the array. +The initial value is 0. +.SH DESCRIPTION +\%\f3glIndexPointer\fP specifies the location and data of an array of color indexes +to use when rendering. +\f2type\fP specifies the data type of +each color index and \f2stride\fP gives the byte stride from one +color index to the next allowing vertices and attributes +to be packed into a single array or stored in separate arrays. +(Single-array storage may be more efficient on some implementations; +see \%\f3glInterleavedArrays\fP.) +.P +\f2type\fP, \f2stride\fP, and \f2ptr\fP are saved as client-side +state. +.P +The color index array is initially disabled. To enable and disable +the array, call \%\f3glEnableClientState\fP and +\%\f3glDisableClientState\fP with the argument \%\f3GL_INDEX_ARRAY\fP. If +enabled, the color index array is used when \%\f3glDrawArrays\fP, +\%\f3glDrawElements\fP or \%\f3glArrayElement\fP is called. +.P +Use \%\f3glDrawArrays\fP to construct a sequence of primitives (all of +the same type) from prespecified vertex and vertex attribute arrays. +Use \%\f3glArrayElement\fP to specify primitives +by indexing vertices and vertex attributes and \%\f3glDrawElements\fP to +construct a sequence of primitives by indexing vertices and vertex attributes. +.SH NOTES +\%\f3glIndexPointer\fP is available only if the GL version is 1.1 or greater. +.P +The color index array is initially disabled, and it isn't accessed when +\%\f3glArrayElement\fP, \%\f3glDrawElements\fP, or \%\f3glDrawArrays\fP is called. +.P +Execution of \%\f3glIndexPointer\fP is not allowed between +\%\f3glBegin\fP and the corresponding \%\f3glEnd\fP, +but an error may or may not be generated. If an error is not generated, +the operation is undefined. +.P +\%\f3glIndexPointer\fP is typically implemented on the client side. +.P +Since the color index array parameters are client-side state, they are +not saved or restored by \%\f3glPushAttrib\fP and \%\f3glPopAttrib\fP. +Use \%\f3glPushClientAttrib\fP and +\%\f3glPopClientAttrib\fP instead. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2stride\fP is negative. +.SH ASSOCIATED GETS +\%\f3glIsEnabled\fP with argument \%\f3GL_INDEX_ARRAY\fP +.br +\%\f3glGet\fP with argument \%\f3GL_INDEX_ARRAY_TYPE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_INDEX_ARRAY_STRIDE\fP +.br +\%\f3glGetPointerv\fP with argument \%\f3GL_INDEX_ARRAY_POINTER\fP +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glDrawElements(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glGetPointerv(3G)\fP, +\%\f3glInterleavedArrays(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glPopClientAttrib(3G)\fP, +\%\f3glPushClientAttrib(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/initnames.3gl diff -u /dev/null xc/doc/man/GL/gl/initnames.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/initnames.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,38 @@ +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 initnames +.ds Xs 2647 3 initnames.gl +.TH GLINITNAMES 3G +.SH NAME +.B "glInitNames +\- initialize the name stack + +.SH C SPECIFICATION +void \f3glInitNames\fP( void ) +.nf +.fi + +.SH DESCRIPTION +The name stack is used during selection mode to allow sets of rendering +commands to be uniquely identified. +It consists of an ordered set of unsigned integers. +\%\f3glInitNames\fP causes the name stack to be initialized to its default empty state. +.P +The name stack is always empty while the render mode is not \%\f3GL_SELECT\fP. +Calls to \%\f3glInitNames\fP while the render mode is not \%\f3GL_SELECT\fP are ignored. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glInitNames\fP +is executed between the execution of \%\f3glBegin\fP and the corresponding execution of +\%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_NAME_STACK_DEPTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_NAME_STACK_DEPTH\fP +.SH SEE ALSO +\%\f3glLoadName(3G)\fP, +\%\f3glPushName(3G)\fP, +\%\f3glRenderMode(3G)\fP, +\%\f3glSelectBuffer(3G)\fP Index: xc/doc/man/GL/gl/interleavedarrays.3gl diff -u /dev/null xc/doc/man/GL/gl/interleavedarrays.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/interleavedarrays.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,110 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 interleav +.ds Xs 31502 6 interleavedarrays.gl +.TH GLINTERLEAVEDARRAYS 3G +.SH NAME +.B "glInterleavedArrays +\- simultaneously specify and enable several interleaved arrays + +.SH C SPECIFICATION +void \f3glInterleavedArrays\fP( +GLenum \fIformat\fP, +.nf +.ta \w'\f3void \fPglInterleavedArrays( 'u + GLsizei \fIstride\fP, + const GLvoid \fI*pointer\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIpointer\fP\ \ 'u +\f2format\fP +Specifies the type of array to enable. Symbolic constants +\%\f3GL_V2F\fP, +\%\f3GL_V3F\fP, +\%\f3GL_C4UB_V2F\fP, +\%\f3GL_C4UB_V3F\fP, +\%\f3GL_C3F_V3F\fP, +\%\f3GL_N3F_V3F\fP, +\%\f3GL_C4F_N3F_V3F\fP, +\%\f3GL_T2F_V3F\fP, +\%\f3GL_T4F_V4F\fP, +\%\f3GL_T2F_C4UB_V3F\fP, +\%\f3GL_T2F_C3F_V3F\fP, +\%\f3GL_T2F_N3F_V3F\fP, +\%\f3GL_T2F_C4F_N3F_V3F\fP, +and +\%\f3GL_T4F_C4F_N3F_V4F\fP +are accepted. +.TP +\f2stride\fP +Specifies the offset in bytes between each aggregate array element. +.SH DESCRIPTION +\%\f3glInterleavedArrays\fP lets you specify and enable individual color, +normal, +texture and vertex +arrays whose elements are part of a larger aggregate array element. +For some implementations, this is more efficient than specifying the arrays +separately. +.P +If \f2stride\fP is 0, the aggregate elements are stored consecutively. +Otherwise, \f2stride\fP bytes occur between the beginning of one +aggregate array element and the beginning of the next aggregate array +element. +.P +\f2format\fP serves as a ``key'' +describing the extraction of individual arrays from the aggregate array. +If \f2format\fP contains a T, then texture coordinates are +extracted from the interleaved array. If C is present, color values +are extracted. If N is present, normal coordinates are extracted. +Vertex coordinates are always extracted. +.P +The digits 2, 3, and 4 denote how many values are extracted. +F indicates that values are extracted as floating-point values. +Colors may also be extracted as 4 unsigned bytes if 4UB follows the +C. If a color is extracted as 4 unsigned bytes, the vertex +array element which follows is located at the first possible +floating-point aligned address. +.SH NOTES +\%\f3glInterleavedArrays\fP is available only if the GL version is 1.1 or greater. +.P +If \%\f3glInterleavedArrays\fP is called while compiling a display list, it is not +compiled into the list, and it is executed immediately. +.P +Execution of \%\f3glInterleavedArrays\fP is not allowed between the execution of +\%\f3glBegin\fP and the corresponding execution of \%\f3glEnd\fP, +but an error may or may not be generated. If no error is generated, +the operation is undefined. +.P +\%\f3glInterleavedArrays\fP is typically implemented on the client side. +.P +Vertex array parameters are client-side state and are therefore not +saved or restored by \%\f3glPushAttrib\fP and \%\f3glPopAttrib\fP. +Use \%\f3glPushClientAttrib\fP and \%\f3glPopClientAttrib\fP instead. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glInterleavedArrays\fP +only updates the texture coordinate array for the active active texture +unit. The texture coordinate state for other client texture units is not +update, regardless if they are enabled or not. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2stride\fP is negative. +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glClientActiveTextureARB(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glDrawElements(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glEnableClientState(3G)\fP, +\%\f3glGetPointer(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/isenabled.3gl diff -u /dev/null xc/doc/man/GL/gl/isenabled.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/isenabled.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,160 @@ +'\" et +'\"! eqn|tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 isenabled +.ds Xs 14538 7 isenabled.gl +.TH GLISENABLED 3G +.SH NAME +.B "glIsEnabled +\- test whether a capability is enabled + +.SH C SPECIFICATION +GLboolean \f3glIsEnabled\fP( +GLenum \fIcap\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2cap\fP\ \ 'u +\f2cap\fP +Specifies a symbolic constant indicating a GL capability. +.SH DESCRIPTION +\%\f3glIsEnabled\fP returns \%\f3GL_TRUE\fP if \f2cap\fP is an enabled capability +and returns \%\f3GL_FALSE\fP otherwise. +Initially all capabilities except \%\f3GL_DITHER\fP are disabled; +\%\f3GL_DITHER\fP is initially enabled. +.P +The following capabilities are accepted for \f2cap\fP: +.P + +.TS +lb lb +l l. +_ +Constant See +_ +\%\f3GL_ALPHA_TEST\fP \%\f3glAlphaFunc\fP +\%\f3GL_AUTO_NORMAL\fP \%\f3glEvalCoord\fP +\%\f3GL_BLEND\fP \%\f3glBlendFunc\fP, \%\f3glLogicOp\fP +\%\f3GL_CLIP_PLANE\fP\f2i\fP \%\f3glClipPlane\fP +\%\f3GL_COLOR_ARRAY\fP \%\f3glColorPointer\fP +\%\f3GL_COLOR_LOGIC_OP\fP \%\f3glLogicOp\fP +\%\f3GL_COLOR_MATERIAL\fP \%\f3glColorMaterial\fP +\%\f3GL_COLOR_TABLE\fP \%\f3glColorTable\fP +\%\f3GL_CONVOLUTION_1D\fP \%\f3glConvolutionFilter1D\fP +\%\f3GL_CONVOLUTION_2D\fP \%\f3glConvolutionFilter2D\fP +\%\f3GL_CULL_FACE\fP \%\f3glCullFace\fP +\%\f3GL_DEPTH_TEST\fP \%\f3glDepthFunc\fP, \%\f3glDepthRange\fP +\%\f3GL_DITHER\fP \%\f3glEnable\fP +\%\f3GL_EDGE_FLAG_ARRAY\fP \%\f3glEdgeFlagPointer\fP +\%\f3GL_FOG\fP \%\f3glFog\fP +\%\f3GL_HISTOGRAM\fP \%\f3glHistogram\fP +\%\f3GL_INDEX_ARRAY\fP \%\f3glIndexPointer\fP +\%\f3GL_INDEX_LOGIC_OP\fP \%\f3glLogicOp\fP +\%\f3GL_LIGHT\fP\f2i\fP \%\f3glLightModel\fP, \%\f3glLight\fP +\%\f3GL_LIGHTING\fP \%\f3glMaterial\fP, \%\f3glLightModel\fP, \%\f3glLight\fP +\%\f3GL_LINE_SMOOTH\fP \%\f3glLineWidth\fP +\%\f3GL_LINE_STIPPLE\fP \%\f3glLineStipple\fP +\%\f3GL_MAP1_COLOR_4\fP \%\f3glMap1\fP +\%\f3GL_MAP1_INDEX\fP \%\f3glMap1\fP +\%\f3GL_MAP1_NORMAL\fP \%\f3glMap1\fP +\%\f3GL_MAP1_TEXTURE_COORD_1\fP \%\f3glMap1\fP +\%\f3GL_MAP1_TEXTURE_COORD_2\fP \%\f3glMap1\fP +\%\f3GL_MAP1_TEXTURE_COORD_3\fP \%\f3glMap1\fP +\%\f3GL_MAP1_TEXTURE_COORD_4\fP \%\f3glMap1\fP +\%\f3GL_MAP2_COLOR_4\fP \%\f3glMap2\fP +\%\f3GL_MAP2_INDEX\fP \%\f3glMap2\fP +\%\f3GL_MAP2_NORMAL\fP \%\f3glMap2\fP +\%\f3GL_MAP2_TEXTURE_COORD_1\fP \%\f3glMap2\fP +\%\f3GL_MAP2_TEXTURE_COORD_2\fP \%\f3glMap2\fP +\%\f3GL_MAP2_TEXTURE_COORD_3\fP \%\f3glMap2\fP +\%\f3GL_MAP2_TEXTURE_COORD_4\fP \%\f3glMap2\fP +\%\f3GL_MAP2_VERTEX_3\fP \%\f3glMap2\fP +\%\f3GL_MAP2_VERTEX_4\fP \%\f3glMap2\fP +\%\f3GL_MINMAX\fP \%\f3glMinmax\fP +\%\f3GL_NORMAL_ARRAY\fP \%\f3glNormalPointer\fP +\%\f3GL_NORMALIZE\fP \%\f3glNormal\fP +\%\f3GL_POINT_SMOOTH\fP \%\f3glPointSize\fP +\%\f3GL_POLYGON_SMOOTH\fP \%\f3glPolygonMode\fP +\%\f3GL_POLYGON_OFFSET_FILL\fP \%\f3glPolygonOffset\fP +\%\f3GL_POLYGON_OFFSET_LINE\fP \%\f3glPolygonOffset\fP +\%\f3GL_POLYGON_OFFSET_POINT\fP \%\f3glPolygonOffset\fP +\%\f3GL_POLYGON_STIPPLE\fP \%\f3glPolygonStipple\fP +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP \%\f3glColorTable\fP +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP \%\f3glColorTable\fP +\%\f3GL_RESCALE_NORMAL\fP \%\f3glNormal\fP +\%\f3GL_SCISSOR_TEST\fP \%\f3glScissor\fP +\%\f3GL_SEPARABLE_2D\fP \%\f3glSeparableFilter2D\fP +\%\f3GL_STENCIL_TEST\fP \%\f3glStencilFunc\fP, \%\f3glStencilOp\fP +\%\f3GL_TEXTURE_1D\fP \%\f3glTexImage1D\fP +\%\f3GL_TEXTURE_2D\fP \%\f3glTexImage2D\fP +\%\f3GL_TEXTURE_3D\fP \%\f3glTexImage3D\fP +\%\f3GL_TEXTURE_COORD_ARRAY\fP \%\f3glTexCoordPointer\fP +\%\f3GL_TEXTURE_GEN_Q\fP \%\f3glTexGen\fP +\%\f3GL_TEXTURE_GEN_R\fP \%\f3glTexGen\fP +\%\f3GL_TEXTURE_GEN_S\fP \%\f3glTexGen\fP +\%\f3GL_TEXTURE_GEN_T\fP \%\f3glTexGen\fP +\%\f3GL_VERTEX_ARRAY\fP \%\f3glVertexPointer\fP +_ +.TE + +.SH NOTES +If an error is generated, +\%\f3glIsEnabled\fP returns 0. +.P +\%\f3GL_COLOR_LOGIC_OP\fP, +\%\f3GL_COLOR_ARRAY\fP, +\%\f3GL_EDGE_FLAG_ARRAY\fP, +\%\f3GL_INDEX_ARRAY\fP, +\%\f3GL_INDEX_LOGIC_OP\fP, +\%\f3GL_NORMAL_ARRAY\fP, +\%\f3GL_POLYGON_OFFSET_FILL\fP, +\%\f3GL_POLYGON_OFFSET_LINE\fP, +\%\f3GL_POLYGON_OFFSET_POINT\fP, +\%\f3GL_TEXTURE_COORD_ARRAY\fP, and +\%\f3GL_VERTEX_ARRAY\fP +are available only +if the GL version is 1.1 or greater +.P +\%\f3GL_RESCALE_NORMAL\fP, and \%\f3GL_TEXTURE_3D\fP are available only if the GL +version is 1.2 or greater. +.P +\%\f3GL_COLOR_TABLE\fP, \%\f3GL_CONVOLUTION_1D\fP, \%\f3GL_CONVOLUTION_2D\fP, +\%\f3GL_HISTOGRAM\fP, \%\f3GL_MINMAX\fP, +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP, +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, and +\%\f3GL_SEPARABLE_2D\fP are available only if \%\f3GL_ARB_imaging\fP is +returned when \%\f3glGet\fP is called with \%\f3GL_EXTENSIONS\fP. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, the following +parameters return the associated value for the active texture unit. +\%\f3GL_TEXTURE_1D\fP, \%\f3GL_TEXTURE_BINDING_1D\fP, +\%\f3GL_TEXTURE_2D\fP, \%\f3GL_TEXTURE_BINDING_2D\fP, +\%\f3GL_TEXTURE_3D\fP, \%\f3GL_TEXTURE_BINDING_3D\fP, +\%\f3GL_TEXTURE_GEN_S\fP, +\%\f3GL_TEXTURE_GEN_T\fP, +\%\f3GL_TEXTURE_GEN_R\fP, +\%\f3GL_TEXTURE_GEN_Q\fP, +\%\f3GL_TEXTURE_MATRIX\fP, and +\%\f3GL_TEXTURE_STACK_DEPTH\fP. +Likewise, the following parameters return the associated value for the +active client texture unit: +\%\f3GL_TEXTURE_COORD_ARRAY\fP, +\%\f3GL_TEXTURE_COORD_ARRAY_SIZE\fP, +\%\f3GL_TEXTURE_COORD_ARRAY_STRIDE\fP, +\%\f3GL_TEXTURE_COORD_ARRAY_TYPE\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2cap\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glIsEnabled\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glEnable(3G)\fP, +\%\f3glEnableClientState(3G)\fP, +\%\f3glGet(3G)\fP + Index: xc/doc/man/GL/gl/islist.3gl diff -u /dev/null xc/doc/man/GL/gl/islist.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/islist.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,38 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 islist.gl +.ds Xs 8931 3 islist.gl +.TH GLISLIST 3G +.SH NAME +.B "glIsList +\- determine if a name corresponds to a display-list + +.SH C SPECIFICATION +GLboolean \f3glIsList\fP( +GLuint \fIlist\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2list\fP\ \ 'u +\f2list\fP +Specifies a potential display-list name. +.SH DESCRIPTION +\%\f3glIsList\fP returns \%\f3GL_TRUE\fP if \f2list\fP is the name +of a display list and returns \%\f3GL_FALSE\fP otherwise. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glIsList\fP +is executed between the execution of +\%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glCallList(3G)\fP, +\%\f3glCallLists(3G)\fP, +\%\f3glDeleteLists(3G)\fP, +\%\f3glGenLists(3G)\fP, +\%\f3glNewList(3G)\fP Index: xc/doc/man/GL/gl/istexture.3gl diff -u /dev/null xc/doc/man/GL/gl/istexture.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/istexture.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,46 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 istexture +.ds Xs 34777 3 istexture.gl +.TH GLISTEXTURE 3G +.SH NAME +.B "glIsTexture +\- determine if a name corresponds to a texture + +.SH C SPECIFICATION +GLboolean \f3glIsTexture\fP( +GLuint \fItexture\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2texture\fP\ \ 'u +\f2texture\fP +Specifies a value that may be the name of a texture. +.SH DESCRIPTION +\%\f3glIsTexture\fP returns \%\f3GL_TRUE\fP if \f2texture\fP is currently the name of a texture. +If \f2texture\fP is zero, or is a non-zero value that is not currently the +name of a texture, or if an error occurs, \%\f3glIsTexture\fP returns \%\f3GL_FALSE\fP. +.SH NOTES +\%\f3glIsTexture\fP is available only if the GL version is 1.1 or greater. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glIsTexture\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glBindTexture(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glDeleteTextures(3G)\fP, +\%\f3glGenTextures(3G)\fP, +\%\f3glGet(3G)\fP, +\%\f3glGetTexParameter(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP Index: xc/doc/man/GL/gl/light.3gl diff -u /dev/null xc/doc/man/GL/gl/light.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/light.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,253 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 light.gl +.ds Xs 33725 10 light.gl +.TH GLLIGHT 3G +.SH NAME +.B "glLightf, glLighti, glLightfv, glLightiv +\- set light source parameters + +.SH C SPECIFICATION +void \f3glLightf\fP( +GLenum \fIlight\fP, +.nf +.ta \w'\f3void \fPglLightf( 'u + GLenum \fIpname\fP, + GLfloat \fIparam\fP ) +.fi +void \f3glLighti\fP( +GLenum \fIlight\fP, +.nf +.ta \w'\f3void \fPglLighti( 'u + GLenum \fIpname\fP, + GLint \fIparam\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIparams\fP\ \ 'u +\f2light\fP +Specifies a light. +The number of lights depends on the implementation, +but at least eight lights are supported. +They are identified by symbolic names of the form \%\f3GL_LIGHT\fP$i$ +where 0 \(<= $ i $ < \%\f3GL_MAX_LIGHTS\fP. +.TP +\f2pname\fP +Specifies a single-valued light source parameter for \f2light\fP. +\%\f3GL_SPOT_EXPONENT\fP, +\%\f3GL_SPOT_CUTOFF\fP, +\%\f3GL_CONSTANT_ATTENUATION\fP, +\%\f3GL_LINEAR_ATTENUATION\fP, and +\%\f3GL_QUADRATIC_ATTENUATION\fP are accepted. +.TP +\f2param\fP +Specifies the value that parameter \f2pname\fP of light source \f2light\fP +will be set to. +.SH C SPECIFICATION +void \f3glLightfv\fP( +GLenum \fIlight\fP, +.nf +.ta \w'\f3void \fPglLightfv( 'u + GLenum \fIpname\fP, + const GLfloat \fI*params\fP ) +.fi +void \f3glLightiv\fP( +GLenum \fIlight\fP, +.nf +.ta \w'\f3void \fPglLightiv( 'u + GLenum \fIpname\fP, + const GLint \fI*params\fP ) +.fi + +.SH PARAMETERS +.TP +\f2light\fP +Specifies a light. +The number of lights depends on the implementation, but +at least eight lights are supported. +They are identified by symbolic names of the form \%\f3GL_LIGHT\fP$i$ +where 0 \(<= $ i $ < \%\f3GL_MAX_LIGHTS\fP. +.TP +\f2pname\fP +Specifies a light source parameter for \f2light\fP. +\%\f3GL_AMBIENT\fP, +\%\f3GL_DIFFUSE\fP, +\%\f3GL_SPECULAR\fP, +\%\f3GL_POSITION\fP, +\%\f3GL_SPOT_CUTOFF\fP, +\%\f3GL_SPOT_DIRECTION\fP, +\%\f3GL_SPOT_EXPONENT\fP, +\%\f3GL_CONSTANT_ATTENUATION\fP, +\%\f3GL_LINEAR_ATTENUATION\fP, and +\%\f3GL_QUADRATIC_ATTENUATION\fP are accepted. +.TP +\f2params\fP +Specifies a pointer to the value or values that parameter \f2pname\fP +of light source \f2light\fP will be set to. +.SH DESCRIPTION +\%\f3glLight\fP sets the values of individual light source parameters. +\f2light\fP names the light and is a symbolic name of the form \%\f3GL_LIGHT\fP$i$, +where 0 \(<= i < \%\f3GL_MAX_LIGHTS\fP. +\f2pname\fP specifies one of ten light source parameters, +again by symbolic name. +\f2params\fP is either a single value or a pointer to an array that contains +the new values. +.P +To enable and disable lighting calculation, call \%\f3glEnable\fP +and \%\f3glDisable\fP with argument \%\f3GL_LIGHTING\fP. Lighting is +initially disabled. +When it is enabled, +light sources that are enabled contribute to the lighting calculation. +Light source $i$ is enabled and disabled using \%\f3glEnable\fP and +\%\f3glDisable\fP with argument \%\f3GL_LIGHT\fP$i$. +.P +The ten light parameters are as follows: +.TP 20 +\%\f3GL_AMBIENT\fP +\f2params\fP contains four integer or floating-point values that specify +the ambient RGBA intensity of the light. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial ambient light intensity is (0, 0, 0, 1). +.TP +\%\f3GL_DIFFUSE\fP +\f2params\fP contains four integer or floating-point values that specify +the diffuse RGBA intensity of the light. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial value +for \%\f3GL_LIGHT0\fP is (1, 1, 1, 1); for other lights, the +initial value is (0, 0, 0, 0). +.TP +\%\f3GL_SPECULAR\fP +\f2params\fP contains four integer or floating-point values that specify +the specular RGBA intensity of the light. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial value +for \%\f3GL_LIGHT0\fP is (1, 1, 1, 1); for other lights, the +initial value is (0, 0, 0, 0). +.TP +\%\f3GL_POSITION\fP +\f2params\fP contains four integer or floating-point values that specify +the position of the light in homogeneous object coordinates. +Both integer and floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +.IP +The position is transformed by the modelview matrix when +\%\f3glLight\fP is called (just as if it were a point), +and it is stored in eye coordinates. +If the $w$ component of the position is 0, +the light is treated as a directional source. +Diffuse and specular lighting calculations take the light's direction, +but not its actual position, +into account, +and attenuation is disabled. +Otherwise, +diffuse and specular lighting calculations are based on the actual location +of the light in eye coordinates, +and attenuation is enabled. +The initial position is (0, 0, 1, 0); +thus, the initial light source is directional, +parallel to, and in the direction of the $-z$ axis. +.TP +\%\f3GL_SPOT_DIRECTION\fP +\f2params\fP contains three integer or floating-point values that specify +the direction of the light in homogeneous object coordinates. +Both integer and floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +.IP +The spot direction is transformed by the inverse of the modelview matrix when +\%\f3glLight\fP is called (just as if it were a normal), +and it is stored in eye coordinates. +It is significant only when \%\f3GL_SPOT_CUTOFF\fP is not 180, +which it is initially. +The initial direction is (0, 0, \-1). +.TP +\%\f3GL_SPOT_EXPONENT\fP +\f2params\fP is a single integer or floating-point value that specifies +the intensity distribution of the light. +Integer and floating-point values are mapped directly. +Only values in the range [0,128] are accepted. +.IP +Effective light intensity is attenuated by the cosine of the angle between +the direction of the light and the direction from the light to the vertex +being lighted, +raised to the power of the spot exponent. +Thus, higher spot exponents result in a more focused light source, +regardless of the spot cutoff angle (see \%\f3GL_SPOT_CUTOFF\fP, next paragraph). +The initial spot exponent is 0, +resulting in uniform light distribution. +.TP +\%\f3GL_SPOT_CUTOFF\fP +\f2params\fP is a single integer or floating-point value that specifies +the maximum spread angle of a light source. +Integer and floating-point values are mapped directly. +Only values in the range [0,90] and the special value 180 +are accepted. +If the angle between the direction of the light and the direction from the +light to the vertex being lighted is greater than the spot cutoff angle, +the light is completely masked. +.BP +Otherwise, its intensity is controlled by the spot exponent and the +attenuation factors. +The initial spot cutoff is 180, +resulting in uniform light distribution. +.TP +\%\f3GL_CONSTANT_ATTENUATION\fP +.TP +\%\f3GL_LINEAR_ATTENUATION \fP +.TP +\%\f3GL_QUADRATIC_ATTENUATION\fP +\f2params\fP is a single integer or floating-point value that specifies +one of the three light attenuation factors. +Integer and floating-point values are mapped directly. +Only nonnegative values are accepted. +If the light is positional, +rather than directional, +its intensity is attenuated by the reciprocal of the sum of the constant +factor, the linear factor times the distance between the light +and the vertex being lighted, +and the quadratic factor times the square of the same distance. +The initial attenuation factors are (1, 0, 0), +resulting in no attenuation. +.SH NOTES +It is always the case that \%\f3GL_LIGHT\fP$i$ = \%\f3GL_LIGHT0\fP + $i$. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if either \f2light\fP or \f2pname\fP +is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if a spot exponent value is specified +outside the range [0,128], +or if spot cutoff is specified outside the range [0,90] (except for the +special value 180), +or if a negative attenuation factor is specified. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glLight\fP is executed between +the execution of +\%\f3glBegin\fP and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetLight\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_LIGHTING\fP +.SH SEE ALSO +\%\f3glColorMaterial(3G)\fP, +\%\f3glLightModel(3G)\fP, +\%\f3glMaterial(3G)\fP Index: xc/doc/man/GL/gl/lightmodel.3gl diff -u /dev/null xc/doc/man/GL/gl/lightmodel.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/lightmodel.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,179 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 lightmode +.ds Xs 22290 8 lightmodel.gl +.TH GLLIGHTMODEL 3G +.SH NAME +.B "glLightModelf, glLightModeli, glLightModelfv, glLightModeliv +\- set the lighting model parameters + +.SH C SPECIFICATION +void \f3glLightModelf\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglLightModelf( 'u + GLfloat \fIparam\fP ) +.fi +void \f3glLightModeli\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglLightModeli( 'u + GLint \fIparam\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIparams\fP\ \ 'u +\f2pname\fP +Specifies a single-valued lighting model parameter. +\%\f3GL_LIGHT_MODEL_LOCAL_VIEWER\fP, +\%\f3GL_LIGHT_MODEL_COLOR_CONTROL\fP, and +\%\f3GL_LIGHT_MODEL_TWO_SIDE\fP are accepted. +.TP +\f2param\fP +Specifies the value that \f2param\fP will be set to. +.SH C SPECIFICATION +void \f3glLightModelfv\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglLightModelfv( 'u + const GLfloat \fI*params\fP ) +.fi +void \f3glLightModeliv\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglLightModeliv( 'u + const GLint \fI*params\fP ) +.fi + +.SH PARAMETERS +.TP +\f2pname\fP +Specifies a lighting model parameter. +\%\f3GL_LIGHT_MODEL_AMBIENT\fP, +\%\f3GL_LIGHT_MODEL_COLOR_CONTROL\fP, +\%\f3GL_LIGHT_MODEL_LOCAL_VIEWER\fP, and +\%\f3GL_LIGHT_MODEL_TWO_SIDE\fP are accepted. +.TP +\f2params\fP +Specifies a pointer to the value or values that \f2params\fP will be set to. +.SH DESCRIPTION +\%\f3glLightModel\fP sets the lighting model parameter. +\f2pname\fP names a parameter and \f2params\fP gives the new value. +There are three lighting model parameters: +.TP 10 +\%\f3GL_LIGHT_MODEL_AMBIENT\fP +\f2params\fP contains four integer or floating-point values that specify +the ambient RGBA intensity of the entire scene. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial ambient scene intensity is (0.2, 0.2, 0.2, 1.0). +.TP +\%\f3GL_LIGHT_MODEL_COLOR_CONTROL\fP +\f2params\fP must be either \%\f3GL_SEPARATE_SPECULAR_COLOR\fP or +\%\f3GL_SINGLE_COLOR\fP. +\%\f3GL_SINGLE_COLOR\fP specifies that a single color is generated from the +lighting computation for a vertex. \%\f3GL_SEPARATE_SPECULAR_COLOR\fP +specifies that the specular color computation of lighting be stored +separately from the remainder of the lighting computation. The specular +color is summed into the generated fragment's color after the application +of texture mapping (if enabled). The initial value is \%\f3GL_SINGLE_COLOR\fP. +.TP +\%\f3GL_LIGHT_MODEL_LOCAL_VIEWER\fP +\f2params\fP is a single integer or floating-point value that specifies +how specular reflection angles are computed. +If \f2params\fP is 0 (or 0.0), specular reflection angles take the +view direction to be parallel to and in the direction of the -\f2z\fP axis, +regardless of the location of the vertex in eye coordinates. +Otherwise, specular reflections are computed from the origin +of the eye coordinate system. +The initial value is 0. +.TP +\%\f3GL_LIGHT_MODEL_TWO_SIDE\fP +\f2params\fP is a single integer or floating-point value that specifies +whether one- or two-sided lighting calculations are done for polygons. +It has no effect on the lighting calculations for points, +lines, +or bitmaps. +If \f2params\fP is 0 (or 0.0), one-sided lighting is specified, +and only the \f2front\fP material parameters are used in the +lighting equation. +Otherwise, two-sided lighting is specified. +In this case, vertices of back-facing polygons are lighted using the +\f2back\fP material parameters, +and have their normals reversed before the lighting equation is evaluated. +Vertices of front-facing polygons are always lighted using the +\f2front\fP material parameters, +with no change to their normals. The initial value is 0. +.P +In RGBA mode, the lighted color of a vertex is the sum of +the material emission intensity, +the product of the material ambient reflectance and the lighting model full-scene +ambient intensity, +and the contribution of each enabled light source. +Each light source contributes the sum of three terms: +ambient, diffuse, and specular. +The ambient light source contribution is the product of the material ambient +reflectance and the light's ambient intensity. +The diffuse light source contribution is the product of the material diffuse +reflectance, +the light's diffuse intensity, +and the dot product of the vertex's normal with the normalized vector from +the vertex to the light source. +The specular light source contribution is the product of the material specular +reflectance, +the light's specular intensity, +and the dot product of the normalized vertex-to-eye and vertex-to-light +vectors, +raised to the power of the shininess of the material. +All three light source contributions are attenuated equally based on +the distance from the vertex to the light source and on light source +direction, spread exponent, and spread cutoff angle. +All dot products are replaced with 0 if they evaluate to a negative value. +.P +The alpha component of the resulting lighted color is set to the alpha value +of the material diffuse reflectance. +.P +In color index mode, +the value of the lighted index of a vertex ranges from the ambient +to the specular values passed to \%\f3glMaterial\fP using \%\f3GL_COLOR_INDEXES\fP. +Diffuse and specular coefficients, +computed with a (.30, .59, .11) weighting of the lights' colors, +the shininess of the material, +and the same reflection and attenuation equations as in the RGBA case, +determine how much above ambient the resulting index is. +.SH NOTES +\%\f3GL_LIGHT_MODEL_COLOR_CONTROL\fP is available only if the GL version is +1.2 or greater. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2pname\fP is not an accepted value. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2pname\fP is +\%\f3GL_LIGHT_MODEL_COLOR_CONTROL\fP and \f2params\fP is not one of +\%\f3GL_SINGLE_COLOR\fP or \%\f3GL_SEPARATE_SPECULAR_COLOR\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glLightModel\fP is executed between +the execution of \%\f3glBegin\fP and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_LIGHT_MODEL_AMBIENT\fP +.br +\%\f3glGet\fP with argument \%\f3GL_LIGHT_MODEL_COLOR_CONTROL\fP +.br +\%\f3glGet\fP with argument \%\f3GL_LIGHT_MODEL_LOCAL_VIEWER\fP +.br +\%\f3glGet\fP with argument \%\f3GL_LIGHT_MODEL_TWO_SIDE\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_LIGHTING\fP +.SH SEE ALSO +\%\f3glLight(3G)\fP, +\%\f3glMaterial(3G)\fP Index: xc/doc/man/GL/gl/linestipple.3gl diff -u /dev/null xc/doc/man/GL/gl/linestipple.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/linestipple.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,86 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 linestipp +.ds Xs 10486 5 linestipple.gl +.TH GLLINESTIPPLE 3G +.SH NAME +.B "glLineStipple +\- specify the line stipple pattern + +.SH C SPECIFICATION +void \f3glLineStipple\fP( +GLint \fIfactor\fP, +.nf +.ta \w'\f3void \fPglLineStipple( 'u + GLushort \fIpattern\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIpattern\fP\ \ 'u +\f2factor\fP +Specifies a multiplier for each bit in the line stipple pattern. +If \f2factor\fP is 3, +for example, +each bit in the pattern is used three times +before the next bit in the pattern is used. +\f2factor\fP is clamped to the range [1, 256] and defaults to 1. +.TP +\f2pattern\fP +Specifies a 16-bit integer whose bit pattern determines +which fragments of a line will be drawn when the line is rasterized. +Bit zero is used first; the default pattern is all 1's. +.SH DESCRIPTION +Line stippling masks out certain fragments produced by rasterization; +those fragments will not be drawn. +The masking is achieved by using three parameters: +the 16-bit line stipple pattern \f2pattern\fP, +the repeat count \f2factor\fP, +and an integer stipple counter $s$. +.P +Counter $s$ is reset to 0 whenever \%\f3glBegin\fP is called, +and before each line segment of a \%\f3glBegin\fP(\%\f3GL_LINES\fP)/\%\f3glEnd\fP +sequence is generated. +It is incremented after each fragment of a unit width aliased line segment is generated, +or after each $i$ fragments of an $i$ width line segment are generated. +The $i$ fragments associated with count $s$ are masked out if +.sp +.ce +\f2pattern\fP bit $(s ~/~ "factor") ~roman mod~ 16$ +.sp +is 0, otherwise these fragments are sent to the frame buffer. +Bit zero of \f2pattern\fP is the least significant bit. +.P +Antialiased lines are treated as a sequence of $1 times width$ rectangles +for purposes of stippling. +Whether rectagle $s$ is rasterized or not depends on the fragment rule +described for aliased lines, +counting rectangles rather than groups of fragments. +.P +To enable and disable line stippling, call \%\f3glEnable\fP and \%\f3glDisable\fP +with argument \%\f3GL_LINE_STIPPLE\fP. +When enabled, +the line stipple pattern is applied as described above. +When disabled, +it is as if the pattern were all 1's. +Initially, line stippling is disabled. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glLineStipple\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_LINE_STIPPLE_PATTERN\fP +.br +\%\f3glGet\fP with argument \%\f3GL_LINE_STIPPLE_REPEAT\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_LINE_STIPPLE\fP +.SH SEE ALSO +\%\f3glLineWidth(3G)\fP, +\%\f3glPolygonStipple(3G)\fP Index: xc/doc/man/GL/gl/linewidth.3gl diff -u /dev/null xc/doc/man/GL/gl/linewidth.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/linewidth.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,96 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 linewidth +.ds Xs 48623 5 linewidth.gl +.TH GLLINEWIDTH 3G +.SH NAME +.B "glLineWidth +\- specify the width of rasterized lines + +.SH C SPECIFICATION +void \f3glLineWidth\fP( +GLfloat \fIwidth\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2width\fP\ \ 'u +\f2width\fP +Specifies the width of rasterized lines. +The initial value is 1. +.SH DESCRIPTION +\%\f3glLineWidth\fP specifies the rasterized width of both aliased and antialiased +lines. +Using a line width other than 1 has different effects, +depending on whether line antialiasing is enabled. +To enable and disable line antialiasing, call +\%\f3glEnable\fP and \%\f3glDisable\fP +with argument \%\f3GL_LINE_SMOOTH\fP. Line antialiasing is initially +disabled. +.P +If line antialiasing is disabled, +the actual width is determined by rounding the supplied width +to the nearest integer. +(If the rounding results in the value 0, +it is as if the line width were 1.) +If +$| DELTA x | ~>=~ | DELTA y |$, +\f2i\fP pixels are filled in each column that is rasterized, +where \f2i\fP is the rounded value of \f2width\fP. +Otherwise, +\f2i\fP pixels are filled in each row that is rasterized. +.P +If antialiasing is enabled, +line rasterization produces a fragment for each pixel square +that intersects the region lying within the rectangle having width +equal to the current line width, +length equal to the actual length of the line, +and centered on the mathematical line segment. +The coverage value for each fragment is the window coordinate area +of the intersection of the rectangular region with the corresponding +pixel square. +This value is saved and used in the final rasterization step. +.P +Not all widths can be supported when line antialiasing is enabled. If an +unsupported width is requested, the nearest supported width is used. +Only width 1 is guaranteed to be supported; others depend on the +implementation. Likewise, there is a range for aliased line widths as well. +To query the range of supported widths and the size +difference between supported widths within the range, call \%\f3glGet\fP +with arguments \%\f3GL_ALIASED_LINE_WIDTH_RANGE\fP, +\%\f3GL_SMOOTH_LINE_WIDTH_RANGE\fP, \%\f3GL_SMOOTH_LINE_WIDTH_GRANULARITY\fP. +.SH NOTES +The line width specified by \%\f3glLineWidth\fP is always returned when \%\f3GL_LINE_WIDTH\fP +is queried. +Clamping and rounding for aliased and antialiased lines have no effect +on the specified value. +.P +Nonantialiased line width may be clamped to an implementation-dependent +maximum. Call \%\f3glGet\fP with \%\f3GL_ALIASED_LINE_WIDTH_RANGE\fP to +determine the maximum width. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP is less than or equal to 0. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glLineWidth\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_LINE_WIDTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_ALIASED_LINE_WIDTH_RANGE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_SMOOTH_LINE_WIDTH_RANGE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_SMOOTH_LINE_WIDTH_GRANULARITY\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_LINE_SMOOTH\fP +.SH SEE ALSO +\%\f3glEnable(3G)\fP Index: xc/doc/man/GL/gl/listbase.3gl diff -u /dev/null xc/doc/man/GL/gl/listbase.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/listbase.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,39 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 listbase. +.ds Xs 12110 3 listbase.gl +.TH GLLISTBASE 3G +.SH NAME +.B "glListBase +\- set the display-list base for \%\f3glCallLists\fP + +.SH C SPECIFICATION +void \f3glListBase\fP( +GLuint \fIbase\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2base\fP\ \ 'u +\f2base\fP +Specifies an integer offset that will be added to \%\f3glCallLists\fP +offsets to generate display-list names. +The initial value is 0. +.SH DESCRIPTION +\%\f3glCallLists\fP specifies an array of offsets. +Display-list names are generated by adding \f2base\fP to each offset. +Names that reference valid display lists are executed; +the others are ignored. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glListBase\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_LIST_BASE\fP +.SH SEE ALSO +\%\f3glCallLists(3G)\fP Index: xc/doc/man/GL/gl/loadidentity.3gl diff -u /dev/null xc/doc/man/GL/gl/loadidentity.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/loadidentity.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,56 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 loadident +.ds Xs 65358 4 loadidentity.gl +.TH GLLOADIDENTITY 3G +.SH NAME +.B "glLoadIdentity +\- replace the current matrix with the identity matrix + +.SH C SPECIFICATION +void \f3glLoadIdentity\fP( void ) +.nf +.fi + +.SH DESCRIPTION +\%\f3glLoadIdentity\fP replaces the current matrix with the identity matrix. +It is semantically equivalent to calling \%\f3glLoadMatrix\fP +with the identity matrix + +.ce + +.EQ +left ( down 20 { ~ matrix { + ccol { 1 above 0 above 0 above 0~ } + ccol { 0 above 1 above 0 above 0~ } + ccol { 0 above 0 above 1 above 0~ } + ccol { 0 above 0 above 0 above 1 } +} } ~~ right ) +.EN + + +but in some cases it is more efficient. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glLoadIdentity\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MATRIX_MODE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MODELVIEW_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PROJECTION_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_MATRIX\fP +.SH SEE ALSO +\%\f3glLoadMatrix(3G)\fP, +\%\f3glMatrixMode(3G)\fP, +\%\f3glMultMatrix(3G)\fP, +\%\f3glPushMatrix(3G)\fP Index: xc/doc/man/GL/gl/loadmatrix.3gl diff -u /dev/null xc/doc/man/GL/gl/loadmatrix.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/loadmatrix.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,95 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 loadmatri +.ds Xs 32571 5 loadmatrix.gl +.TH GLLOADMATRIX 3G +.SH NAME +.B "glLoadMatrixd, glLoadMatrixf +\- replace the current matrix with the specified matrix + +.SH C SPECIFICATION +void \f3glLoadMatrixd\fP( +const GLdouble \fI*m\fP ) +.nf +.fi +void \f3glLoadMatrixf\fP( +const GLfloat \fI*m\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2m\fP\ \ 'u +\f2m\fP +Specifies a pointer to 16 consecutive values, which are used as the +elements of a $4 ~times~ 4$ column-major matrix. +.SH DESCRIPTION +\%\f3glLoadMatrix\fP replaces the current matrix with the one whose elements are specified by +\f2m\fP. +The current matrix is the projection matrix, +modelview matrix, +or texture matrix, +depending on the current matrix mode +(see \%\f3glMatrixMode\fP). +.P +The current matrix, M, defines a transformation of coordinates. +For instance, assume M refers to the modelview matrix. +If $v ~=~ (v[0], v[1], v[2], v[3])$ is the set of object coordinates +of a vertex, +and \f2m\fP points to an array of $16$ +single- or double-precision +floating-point values $m[0], m[1],. . .,m[15]$, +then the modelview transformation $M(v)$ does the following: +.P + +.ce +.EQ +down 130 +{M(v) ~ = ~ +{{ left ( matrix { + ccol { ~m[0] above m[1] above m[2] above m[3] ~} + ccol { ~m[4] above m[5] above m[6] above m[7] ~} + ccol { ~m[8] above m[9] above m[10] above m[11] ~} + ccol { ~m[12]~ above m[13]~ above m[14]~ above m[15]~} +} right ) } ~~ times ~~ +{left ( matrix { +ccol { ~v[0]~ above ~v[1]~ above ~v[2]~ above ~v[3]~ } +} right )} }} +.EN + +.sp +.P +Where ``$times$'' denotes matrix multiplication. +.P +Projection and texture transformations are similarly defined. +.SH NOTES +While the elements of the matrix may be specified with +single or double precision, the GL implementation may +store or operate on these values in less than single +precision. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glLoadMatrix\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MATRIX_MODE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MODELVIEW_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PROJECTION_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_MATRIX\fP +.SH SEE ALSO +\%\f3glLoadIdentity(3G)\fP, +\%\f3glMatrixMode(3G)\fP, +\%\f3glMultMatrix(3G)\fP, +\%\f3glPushMatrix(3G)\fP Index: xc/doc/man/GL/gl/loadname.3gl diff -u /dev/null xc/doc/man/GL/gl/loadname.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/loadname.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,48 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 loadname. +.ds Xs 53104 4 loadname.gl +.TH GLLOADNAME 3G +.SH NAME +.B "glLoadName +\- load a name onto the name stack + +.SH C SPECIFICATION +void \f3glLoadName\fP( +GLuint \fIname\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2name\fP\ \ 'u +\f2name\fP +Specifies a name that will replace the top value on the name stack. +.SH DESCRIPTION +The name stack is used during selection mode to allow sets of rendering +commands to be uniquely identified. +It consists of an ordered set of unsigned integers. +\%\f3glLoadName\fP causes \f2name\fP to replace the value on the top of the name stack, +which is initially empty. +.P +The name stack is always empty while the render mode is not \%\f3GL_SELECT\fP. +Calls to \%\f3glLoadName\fP while the render mode is not \%\f3GL_SELECT\fP are ignored. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glLoadName\fP is called while the +name stack is empty. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glLoadName\fP is executed between +the execution of \%\f3glBegin\fP and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_NAME_STACK_DEPTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_NAME_STACK_DEPTH\fP +.SH SEE ALSO +\%\f3glInitNames(3G)\fP, +\%\f3glPushName(3G)\fP, +\%\f3glRenderMode(3G)\fP, +\%\f3glSelectBuffer(3G)\fP Index: xc/doc/man/GL/gl/logicop.3gl diff -u /dev/null xc/doc/man/GL/gl/logicop.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/logicop.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,112 @@ +'\" et +'\"! eqn|tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 logicop.g +.ds Xs 60568 5 logicop.gl +.TH GLLOGICOP 3G +.SH NAME +.B "glLogicOp +\- specify a logical pixel operation for color index rendering + +.SH C SPECIFICATION +void \f3glLogicOp\fP( +GLenum \fIopcode\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2opcode\fP\ \ 'u +\f2opcode\fP +Specifies a symbolic constant that selects a logical operation. +The following symbols are accepted: +\%\f3GL_CLEAR\fP, +\%\f3GL_SET\fP, +\%\f3GL_COPY\fP, +\%\f3GL_COPY_INVERTED\fP, +\%\f3GL_NOOP\fP, +\%\f3GL_INVERT\fP, +\%\f3GL_AND\fP, +\%\f3GL_NAND\fP, +\%\f3GL_OR\fP, +\%\f3GL_NOR\fP, +\%\f3GL_XOR\fP, +\%\f3GL_EQUIV\fP, +\%\f3GL_AND_REVERSE\fP, +\%\f3GL_AND_INVERTED\fP, +\%\f3GL_OR_REVERSE\fP, and +\%\f3GL_OR_INVERTED\fP. The initial value is \%\f3GL_COPY\fP. +.SH DESCRIPTION +\%\f3glLogicOp\fP specifies a logical operation that, +when enabled, +is applied between the incoming color index or RGBA color +and the color index or RGBA color at the corresponding location in the +frame buffer. +To enable or disable the logical operation, call +\%\f3glEnable\fP and \%\f3glDisable\fP +using the symbolic constant \%\f3GL_COLOR_LOGIC_OP\fP for RGBA mode or +\%\f3GL_INDEX_LOGIC_OP\fP for color index mode. The initial value is +disabled for both operations. +.P +.ne +.TS +center; +lb lb +l c. +_ +Opcode Resulting Operation +_ +\%\f3GL_CLEAR\fP 0 +\%\f3GL_SET\fP 1 +\%\f3GL_COPY\fP s +\%\f3GL_COPY_INVERTED\fP ~s +\%\f3GL_NOOP\fP d +\%\f3GL_INVERT\fP ~d +\%\f3GL_AND\fP s & d +\%\f3GL_NAND\fP ~(s & d) +\%\f3GL_OR\fP s | d +\%\f3GL_NOR\fP ~(s | d) +\%\f3GL_XOR\fP s ^ d +\%\f3GL_EQUIV\fP ~(s ^ d) +\%\f3GL_AND_REVERSE\fP s & ~d +\%\f3GL_AND_INVERTED\fP ~s & d +\%\f3GL_OR_REVERSE\fP s | ~d +\%\f3GL_OR_INVERTED\fP ~s | d +_ +.TE + +\f2opcode\fP is a symbolic constant chosen from the list above. +In the explanation of the logical operations, +\f2s\fP represents the incoming color index and +\f2d\fP represents the index in the frame buffer. +Standard C-language operators are used. +As these bitwise operators suggest, +the logical operation is applied independently to each bit pair of the +source and destination indices or colors. +.SH NOTES +Color index logical operations are always supported. RGBA logical +operations are supported only if the GL version is 1.1 or greater. +.P +When more than one RGBA color or index buffer is enabled for drawing, +logical operations are performed separately for each enabled buffer, +using for the destination value the contents of that buffer +(see \%\f3glDrawBuffer\fP). +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2opcode\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glLogicOp\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_LOGIC_OP_MODE\fP. +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_COLOR_LOGIC_OP\fP or \%\f3GL_INDEX_LOGIC_OP\fP. +.SH SEE ALSO +\%\f3glAlphaFunc(3G)\fP, +\%\f3glBlendFunc(3G)\fP, +\%\f3glDrawBuffer(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glStencilOp(3G)\fP Index: xc/doc/man/GL/gl/map1.3gl diff -u /dev/null xc/doc/man/GL/gl/map1.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/map1.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,271 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 map1.gl - +.ds Xs 15186 10 map1.gl +.TH GLMAP1 3G +.SH NAME +.B "glMap1d, glMap1f +\- define a one-dimensional evaluator + +.SH C SPECIFICATION +void \f3glMap1d\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMap1d( 'u + GLdouble \fIu1\fP, + GLdouble \fIu2\fP, + GLint \fIstride\fP, + GLint \fIorder\fP, + const GLdouble \fI*points\fP ) +.fi +void \f3glMap1f\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMap1f( 'u + GLfloat \fIu1\fP, + GLfloat \fIu2\fP, + GLint \fIstride\fP, + GLint \fIorder\fP, + const GLfloat \fI*points\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Specifies the kind of values that are generated by the evaluator. +Symbolic constants +\%\f3GL_MAP1_VERTEX_3\fP, +\%\f3GL_MAP1_VERTEX_4\fP, +\%\f3GL_MAP1_INDEX\fP, +\%\f3GL_MAP1_COLOR_4\fP, +\%\f3GL_MAP1_NORMAL\fP, +\%\f3GL_MAP1_TEXTURE_COORD_1\fP, +\%\f3GL_MAP1_TEXTURE_COORD_2\fP, +\%\f3GL_MAP1_TEXTURE_COORD_3\fP, and +\%\f3GL_MAP1_TEXTURE_COORD_4\fP are accepted. +.TP +\f2u1\fP, \f2u2\fP +Specify a linear mapping of $u$, +as presented to \%\f3glEvalCoord1\fP, +to $u hat$, +the variable that is evaluated by the equations specified by this command. +.TP +\f2stride\fP +Specifies the number of floats or doubles between +the beginning of one control point and the beginning of the next one +in the data structure referenced in \f2points\fP. +This allows control points to be embedded in arbitrary data structures. +The only constraint is that the values for a particular control point +must occupy contiguous memory locations. +.TP +\f2order\fP +Specifies the number of control points. +Must be positive. +.TP +\f2points\fP +Specifies a pointer to the array of control points. + +.SH DESCRIPTION +Evaluators provide a way to use polynomial or rational polynomial mapping +to produce vertices, +normals, +texture coordinates, +and colors. +The values produced by an evaluator are sent to further stages +of GL processing just as if they had been presented using +\%\f3glVertex\fP, +\%\f3glNormal\fP, +\%\f3glTexCoord\fP, and +\%\f3glColor\fP commands, +except that the generated values do not update the current normal, +texture coordinates, +or color. +.P +All polynomial or rational polynomial splines of any degree +(up to the maximum degree supported by the GL implementation) +can be described using evaluators. +These include almost all splines used in computer graphics: B-splines, +Bezier curves, Hermite splines, and so on. +.P +Evaluators define curves based on Bernstein polynomials. +Define $p ( u hat ^) $ as +.sp +.ce +$p ( u hat ^) ~~=~~ up 10 { sum from i=0 to n } B sub i sup n ( u hat ^) R sub i$ +.sp +where +$R sub i$ +is a control point and +$B sub i sup n ( u hat ^)$ +is the $i$th Bernstein polynomial of degree $n$ (\f2order\fP = $n ~+~ 1$): +.sp +.ce +$B sub i sup n ( u hat ^) ~~=~~ left ( down 20 {cpile { n above i }} ~~ right ) u hat sup i ( 1 - u hat ^) sup { n - i }$ +.sp +Recall that +.sp +.ce +$0 sup 0 ~==~ 1 $ and $ left ( down 20 {cpile { n above ~0 }} ~~ right ) ~~==~~ 1 $ +.P +\%\f3glMap1\fP is used to define the basis and to specify what kind of values +are produced. +Once defined, +a map can be enabled and disabled by calling \%\f3glEnable\fP and \%\f3glDisable\fP +with the map name, one of the nine predefined values for \f2target\fP +described below. +\%\f3glEvalCoord1\fP evaluates the one-dimensional maps that are enabled. +When +.br +\%\f3glEvalCoord1\fP presents a value $u$, +the Bernstein functions are evaluated using $u hat$, where +.br + +.ce +$u hat ~~=~~ {u ~-~ "u1"} over {"u2" ~-~ "u1"}$ + +.br +.P +\f2target\fP is a symbolic constant that indicates what kind of control points +are provided in \f2points\fP, +and what output is generated when the map is evaluated. +It can assume one of nine predefined values: +.TP 25 +\%\f3GL_MAP1_VERTEX_3\fP +Each control point is three floating-point values representing +$x$, $y$, and $z$. +Internal \%\f3glVertex3\fP commands are generated when the map is evaluated. +.TP +\%\f3GL_MAP1_VERTEX_4\fP +Each control point is four floating-point values representing +$x$, $y$, $z$, and $w$. +Internal \%\f3glVertex4\fP commands are generated when the map is evaluated. +.TP +\%\f3GL_MAP1_INDEX\fP +Each control point is a single floating-point value representing a color index. +Internal \%\f3glIndex\fP commands are generated when the map is evaluated +but the current index is not updated with the value of these \%\f3glIndex\fP +commands. +.TP +\%\f3GL_MAP1_COLOR_4\fP +Each control point is four floating-point values representing +red, green, blue, and alpha. +Internal \%\f3glColor4\fP commands are generated when the map is +evaluated but the current color is not updated with the value of these +\%\f3glColor4\fP commands. +.TP +\%\f3GL_MAP1_NORMAL\fP +Each control point is three floating-point values representing +the $x$, $y$, and $z$ components of a normal vector. +Internal \%\f3glNormal\fP commands are generated when the map is +evaluated but the current normal is not updated with the value of +these \%\f3glNormal\fP commands. +.TP +\%\f3GL_MAP1_TEXTURE_COORD_1\fP +Each control point is a single floating-point value representing +the $s$ texture coordinate. +Internal +.br +\%\f3glTexCoord1\fP commands are generated when the map is +evaluated but the current texture coordinates are not updated with the value +of these \%\f3glTexCoord\fP commands. +.TP +\%\f3GL_MAP1_TEXTURE_COORD_2\fP +Each control point is two floating-point values representing +the $s$ and $t$ texture coordinates. +Internal +.br +\%\f3glTexCoord2\fP commands are generated when the map is +evaluated but the current texture coordinates are not updated with the value +of these \%\f3glTexCoord\fP commands. +.TP +\%\f3GL_MAP1_TEXTURE_COORD_3\fP +Each control point is three floating-point values representing +the $s$, $t$, and $r$ texture coordinates. +Internal \%\f3glTexCoord3\fP commands are generated when the map is +evaluated but the current texture coordinates are not updated with the value +of these \%\f3glTexCoord\fP commands. +.TP +\%\f3GL_MAP1_TEXTURE_COORD_4\fP +Each control point is four floating-point values representing +the $s$, $t$, $r$, and $q$ texture coordinates. +Internal +.br +\%\f3glTexCoord4\fP commands are generated when the map is evaluated but +the current texture coordinates are not updated with the value +of these \%\f3glTexCoord\fP commands. +.P +\f2stride\fP, +\f2order\fP, and +\f2points\fP define the array addressing for accessing the control points. +\f2points\fP is the location of the first control point, +which occupies one, two, three, or four contiguous memory locations, +depending on which map is being defined. +\f2order\fP is the number of control points in the array. +\f2stride\fP specifies how many float or double locations to advance the internal +memory pointer to reach the next control point. +.SH NOTES +As is the case with all GL commands that accept pointers to data, +it is as if the contents of \f2points\fP were copied by \%\f3glMap1\fP before \%\f3glMap1\fP +returns. +Changes to the contents of \f2points\fP have no effect after \%\f3glMap1\fP is called. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2u1\fP is equal to \f2u2\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2stride\fP is less than the number +of values in a control point. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2order\fP is less than 1 or +greater than the return value of \%\f3GL_MAX_EVAL_ORDER\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glMap1\fP +is executed between the execution of +\%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glMap1\fP is called and the value +of \%\f3GL_ACTIVE_TEXTURE_ARB\fP is not \%\f3GL_TEXTURE0_ARB\fP. +.SH ASSOCIATED GETS +\%\f3glGetMap\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_EVAL_ORDER\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_VERTEX_3\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_VERTEX_4\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_INDEX\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_COLOR_4\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_NORMAL\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_TEXTURE_COORD_1\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_TEXTURE_COORD_2\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_TEXTURE_COORD_3\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP1_TEXTURE_COORD_4\fP +.SH SEE ALSO +\%\f3glBegin(3G)\fP, +\%\f3glColor(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glEvalCoord(3G)\fP, +\%\f3glEvalMesh(3G)\fP, +\%\f3glEvalPoint(3G)\fP, +\%\f3glMap2(3G)\fP, +\%\f3glMapGrid(3G)\fP, +\%\f3glNormal(3G)\fP, +\%\f3glTexCoord(3G)\fP, +\%\f3glVertex(3G)\fP Index: xc/doc/man/GL/gl/map2.3gl diff -u /dev/null xc/doc/man/GL/gl/map2.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/map2.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,331 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 map2.gl - +.ds Xs 16004 12 map2.gl +.TH GLMAP2 3G +.SH NAME +.B "glMap2d, glMap2f +\- define a two-dimensional evaluator + +.SH C SPECIFICATION +void \f3glMap2d\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMap2d( 'u + GLdouble \fIu1\fP, + GLdouble \fIu2\fP, + GLint \fIustride\fP, + GLint \fIuorder\fP, + GLdouble \fIv1\fP, + GLdouble \fIv2\fP, + GLint \fIvstride\fP, + GLint \fIvorder\fP, + const GLdouble \fI*points\fP ) +.fi +void \f3glMap2f\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMap2f( 'u + GLfloat \fIu1\fP, + GLfloat \fIu2\fP, + GLint \fIustride\fP, + GLint \fIuorder\fP, + GLfloat \fIv1\fP, + GLfloat \fIv2\fP, + GLint \fIvstride\fP, + GLint \fIvorder\fP, + const GLfloat \fI*points\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIustride\fP\ \ 'u +\f2target\fP +Specifies the kind of values that are generated by the evaluator. +Symbolic constants +\%\f3GL_MAP2_VERTEX_3\fP, +\%\f3GL_MAP2_VERTEX_4\fP, +\%\f3GL_MAP2_INDEX\fP, +\%\f3GL_MAP2_COLOR_4\fP, +\%\f3GL_MAP2_NORMAL\fP, +\%\f3GL_MAP2_TEXTURE_COORD_1\fP, +\%\f3GL_MAP2_TEXTURE_COORD_2\fP, +\%\f3GL_MAP2_TEXTURE_COORD_3\fP, and +\%\f3GL_MAP2_TEXTURE_COORD_4\fP are accepted. +.TP +\f2u1\fP, \f2u2\fP +Specify a linear mapping of $u$, +as presented to \%\f3glEvalCoord2\fP, +to $u hat$, +one of the two variables that are evaluated by the equations specified +by this command. Initially, \f2u1\fP is 0 and \f2u2\fP is 1. +.TP +\f2ustride\fP +Specifies the number of floats or doubles between +the beginning of control point +$R sub ij$ +and the beginning of control point +$R sub { (i+1) j }$, +where $i$ and $j$ are the $u$ and $v$ control point indices, respectively. +This allows control points to be embedded in arbitrary data structures. +The only constraint is that the values for a particular control point +must occupy contiguous memory locations. The initial value of \f2ustride\fP is 0. +.TP +\f2uorder\fP +Specifies the dimension of the control point array in the $u$ axis. +Must be positive. The initial value is 1. +.TP +\f2v1\fP, \f2v2\fP +Specify a linear mapping of $v$, +as presented to \%\f3glEvalCoord2\fP, +to $v hat$, +one of the two variables that are evaluated by the equations specified +by this command. Initially, \f2v1\fP is 0 and \f2v2\fP is 1. +.TP +\f2vstride\fP +Specifies the number of floats or doubles between +the beginning of control point +$R sub ij$ +and the beginning of control point +$R sub { i (j+1) }$, +where $i$ and $j$ are the $u$ and $v$ control point indices, respectively. +This allows control points to be embedded in arbitrary data structures. +The only constraint is that the values for a particular control point +must occupy contiguous memory locations. The initial value of \f2vstride\fP is 0. +.TP +\f2vorder\fP +Specifies the dimension of the control point array in the $v$ axis. +Must be positive. The initial value is 1. +.TP +\f2points\fP +Specifies a pointer to the array of control points. +.SH DESCRIPTION +Evaluators provide a way to use polynomial or rational polynomial mapping +to produce vertices, +normals, +texture coordinates, +and colors. +The values produced by an evaluator are sent on to further stages +of GL processing just as if they had been presented using +\%\f3glVertex\fP, +\%\f3glNormal\fP, +\%\f3glTexCoord\fP, and +\%\f3glColor\fP commands, +except that the generated values do not update the current normal, +texture coordinates, +or color. +.P +All polynomial or rational polynomial splines of any degree +(up to the maximum degree supported by the GL implementation) +can be described using evaluators. +These include almost all surfaces used in computer graphics, +including B-spline surfaces, +NURBS surfaces, +Bezier surfaces, and so on. +.P +Evaluators define surfaces based on bivariate Bernstein polynomials. +Define $p ( u hat , v hat ) $ as +.ce +.sp +.EQ +p ( u hat , v hat ) ~~=~~ + down 30 {{size 18 {sum}} from {size 8 {i~=~0}} to {size 9 {n}} } ~ + {{size 18 {sum}} from {size 8 {j~=~0}} to {size 9 {m}} } ~ + up 15 { B sub i sup n ( u hat ) ~ B sub j sup m ( v hat ) ~ R sub ij } +.EN +.sp +.P +where $R sub ij$ is a control point, +$B sub i sup n ( u hat )$ +is the $i$th Bernstein polynomial of degree +.br +$n$ (\f2uorder\fP = $n ~+~ 1$) +.ce +.sp +.EQ +B sub i sup n ( u hat ) ~~=~~ left ( down 20 {cpile { n above i }} ~ right +) u hat sup i ( 1 - u hat ) sup { n - i } +.EN +.sp +and $B sub j sup m ( v hat )$ +is the $j$th Bernstein polynomial of degree $m$ (\f2vorder\fP = $m ~+~ 1$) +.ce +.sp +.EQ +B sub j sup m ( v hat ) ~~=~~ left ( ^down 20 {cpile { m above j }} ~^ right ) v hat sup j ( 1 - v hat ) sup { m - j } +.EN +.sp +Recall that +.ce +$0 sup 0 ~==~ 1 $ and $ left ( ^ down 20 {cpile { n above 0 }} ~^ right ) ~~==~~ 1 $ +.sp +\%\f3glMap2\fP is used to define the basis and to specify what kind of values +are produced. +Once defined, +a map can be enabled and disabled by calling \%\f3glEnable\fP and \%\f3glDisable\fP +with the map name, one of the nine predefined values for \f2target\fP, +described below. +When \%\f3glEvalCoord2\fP presents values $u$ and $v$, +the bivariate Bernstein polynomials are evaluated using $u hat$ and $v hat$, +where +.sp +.ce +$u hat ~~=~~ {u ~-~ "u1"} over {"u2" ~-~ "u1"}$ +.sp +.ce +$v hat ~~=~~ {v ~-~ "v1"} over {"v2" ~-~ "v1"}$ +.sp +\f2target\fP is a symbolic constant that indicates what kind of control points +are provided in \f2points\fP, +and what output is generated when the map is evaluated. +It can assume one of nine predefined values: +.TP 25 +\%\f3GL_MAP2_VERTEX_3\fP +Each control point is three floating-point values representing +$x$, $y$, and $z$. +Internal \%\f3glVertex3\fP commands are generated when the map is evaluated. +.TP +\%\f3GL_MAP2_VERTEX_4\fP +Each control point is four floating-point values representing +$x$, $y$, $z$, and $w$. +Internal \%\f3glVertex4\fP commands are generated when the map is evaluated. +.TP +\%\f3GL_MAP2_INDEX\fP +Each control point is a single floating-point value representing a color index. +Internal \%\f3glIndex\fP commands are generated when the map is evaluated +but the current index is not updated with the value of these +\%\f3glIndex\fP commands. +.TP +\%\f3GL_MAP2_COLOR_4\fP +Each control point is four floating-point values representing +red, green, blue, and alpha. +Internal \%\f3glColor4\fP commands are generated when the map is +evaluated but the current color is not updated with the value of +these \%\f3glColor4\fP commands. +.TP +\%\f3GL_MAP2_NORMAL\fP +Each control point is three floating-point values representing +the $x$, $y$, and $z$ components of a normal vector. +Internal \%\f3glNormal\fP commands are generated when the map is +evaluated but the current normal is not updated with the value of +these \%\f3glNormal\fP commands. +.TP +\%\f3GL_MAP2_TEXTURE_COORD_1\fP +Each control point is a single floating-point value representing +the $s$ texture coordinate. +Internal +.br +\%\f3glTexCoord1\fP commands are generated when the map is evaluated but +the current texture coordinates are not updated with the value +of these \%\f3glTexCoord\fP commands. +.TP +\%\f3GL_MAP2_TEXTURE_COORD_2\fP +Each control point is two floating-point values representing +the $s$ and $t$ texture coordinates. +Internal +.br +\%\f3glTexCoord2\fP commands are generated when the map is evaluated but +the current texture coordinates are not updated with the value +of these \%\f3glTexCoord\fP commands. +.TP +\%\f3GL_MAP2_TEXTURE_COORD_3\fP +Each control point is three floating-point values representing +the $s$, $t$, and $r$ texture coordinates. +Internal \%\f3glTexCoord3\fP commands are generated when the map is +evaluated but the current texture coordinates are not updated with the value +of these \%\f3glTexCoord\fP commands. +.TP +\%\f3GL_MAP2_TEXTURE_COORD_4\fP +Each control point is four floating-point values representing +the $s$, $t$, $r$, and $q$ texture coordinates. +Internal +.br +\%\f3glTexCoord4\fP commands are generated when the map is evaluated but the current texture coordinates are not updated with the value +of these \%\f3glTexCoord\fP commands. +.P +\f2ustride\fP, +\f2uorder\fP, +\f2vstride\fP, +\f2vorder\fP, and +\f2points\fP define the array addressing for accessing the control points. +\f2points\fP is the location of the first control point, +which occupies one, two, three, or four contiguous memory locations, +depending on which map is being defined. +There are $ "uorder" ~times~ "vorder" $ control points in the array. +\f2ustride\fP specifies how many float or double locations are skipped to advance +the internal memory pointer from control point +$R sub {i j} $ to control point $R sub {(i+1) j} $. +\f2vstride\fP specifies how many float or double locations are skipped to advance +the internal memory pointer from control point +$R sub {i j} $ to control point $R sub {i (j+1) } $. +.SH NOTES +As is the case with all GL commands that accept pointers to data, +it is as if the contents of \f2points\fP were copied by \%\f3glMap2\fP before \%\f3glMap2\fP +returns. +Changes to the contents of \f2points\fP have no effect after \%\f3glMap2\fP is called. +.P +Initially, \%\f3GL_AUTO_NORMAL\fP is enabled. If \%\f3GL_AUTO_NORMAL\fP is enabled, +normal vectors are generated when either +\%\f3GL_MAP2_VERTEX_3\fP or \%\f3GL_MAP2_VERTEX_4\fP is used to generate +vertices. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2u1\fP is equal to \f2u2\fP, +or if \f2v1\fP is equal to \f2v2\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if either \f2ustride\fP or \f2vstride\fP +is less than the number of values in a control point. +.P +\%\f3GL_INVALID_VALUE\fP is generated if either \f2uorder\fP or \f2vorder\fP +is less than 1 or greater than the return value of \%\f3GL_MAX_EVAL_ORDER\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glMap2\fP +is executed between the execution of +\%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glMap2\fP is called and the value +of \%\f3GL_ACTIVE_TEXTURE_ARB\fP is not \%\f3GL_TEXTURE0_ARB\fP. +.SH ASSOCIATED GETS +\%\f3glGetMap\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_EVAL_ORDER\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_VERTEX_3\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_VERTEX_4\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_INDEX\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_COLOR_4\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_NORMAL\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_TEXTURE_COORD_1\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_TEXTURE_COORD_2\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_TEXTURE_COORD_3\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_MAP2_TEXTURE_COORD_4\fP +.SH SEE ALSO +\%\f3glBegin(3G)\fP, +\%\f3glColor(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glEvalCoord(3G)\fP, +\%\f3glEvalMesh(3G)\fP, +\%\f3glEvalPoint(3G)\fP, +\%\f3glMap1(3G)\fP, +\%\f3glMapGrid(3G)\fP, +\%\f3glNormal(3G)\fP, +\%\f3glTexCoord(3G)\fP, +\%\f3glVertex(3G)\fP Index: xc/doc/man/GL/gl/mapgrid.3gl diff -u /dev/null xc/doc/man/GL/gl/mapgrid.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/mapgrid.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,141 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 mapgrid.g +.ds Xs 53033 5 mapgrid.gl +.TH GLMAPGRID 3G +.SH NAME +.B "glMapGrid1d, glMapGrid1f, glMapGrid2d, glMapGrid2f +\- define a one- or two-dimensional mesh + +.SH C SPECIFICATION +void \f3glMapGrid1d\fP( +GLint \fIun\fP, +.nf +.ta \w'\f3void \fPglMapGrid1d( 'u + GLdouble \fIu1\fP, + GLdouble \fIu2\fP ) +.fi +void \f3glMapGrid1f\fP( +GLint \fIun\fP, +.nf +.ta \w'\f3void \fPglMapGrid1f( 'u + GLfloat \fIu1\fP, + GLfloat \fIu2\fP ) +.fi +void \f3glMapGrid2d\fP( +GLint \fIun\fP, +.nf +.ta \w'\f3void \fPglMapGrid2d( 'u + GLdouble \fIu1\fP, + GLdouble \fIu2\fP, + GLint \fIvn\fP, + GLdouble \fIv1\fP, + GLdouble \fIv2\fP ) +.fi +void \f3glMapGrid2f\fP( +GLint \fIun\fP, +.nf +.ta \w'\f3void \fPglMapGrid2f( 'u + GLfloat \fIu1\fP, + GLfloat \fIu2\fP, + GLint \fIvn\fP, + GLfloat \fIv1\fP, + GLfloat \fIv2\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2un\fP\ \ 'u +\f2un\fP +Specifies the number of partitions in the grid range interval +[\f2u1\fP, \f2u2\fP]. +Must be positive. +.TP +\f2u1\fP, \f2u2\fP +Specify the mappings for integer grid domain values $i~=~0$ and $i~=~"un"$. +.TP +\f2vn\fP +Specifies the number of partitions in the grid range interval +[\f2v1\fP, \f2v2\fP] +.br +(\%\f3glMapGrid2\fP only). +.TP +\f2v1\fP, \f2v2\fP +Specify the mappings for integer grid domain values $j~=~0$ and $j~=~"vn"$ +.br +(\%\f3glMapGrid2\fP only). +.SH DESCRIPTION +\%\f3glMapGrid\fP and \%\f3glEvalMesh\fP are used together to efficiently +generate and evaluate a series of evenly-spaced map domain values. +\%\f3glEvalMesh\fP steps through the integer domain +of a one- or two-dimensional grid, +whose range is the domain of the evaluation maps specified by +\%\f3glMap1\fP and \%\f3glMap2\fP. +.P +\%\f3glMapGrid1\fP and \%\f3glMapGrid2\fP specify the linear grid mappings +between the $i$ +(or $i$ and $j$) +integer grid coordinates, +to the $u$ +(or $u$ and $v$) +floating-point evaluation map coordinates. +See \%\f3glMap1\fP and \%\f3glMap2\fP for details of how $u$ and $v$ coordinates +are evaluated. +.P +\%\f3glMapGrid1\fP specifies a single linear mapping +such that integer grid coordinate 0 maps exactly to \f2u1\fP, +and integer grid coordinate \f2un\fP maps exactly to \f2u2\fP. +All other integer grid coordinates $i$ are mapped so that +.sp +.ce +.EQ +u ~=~ i ("u2" - "u1") / "un" ~+~ "u1" +.EN +.sp +\%\f3glMapGrid2\fP specifies two such linear mappings. +One maps integer grid coordinate $i~=~0$ exactly to \f2u1\fP, +and integer grid coordinate $i~=~"un"$ exactly to \f2u2\fP. +The other maps integer grid coordinate $j~=~0$ exactly to \f2v1\fP, +and integer grid coordinate $j~=~"vn"$ exactly to \f2v2\fP. +Other integer grid coordinates $i$ and $j$ are mapped such that +.P +.ce +.EQ +u ~=~ i ("u2" - "u1") / "un" ~+~ "u1" +.EN +.P +.ce +.EQ +v ~=~ j ("v2" - "v1") / "vn" ~+~ "v1" +.EN +.P +The mappings specified by \%\f3glMapGrid\fP are used identically by +\%\f3glEvalMesh\fP and \%\f3glEvalPoint\fP. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if either \f2un\fP or \f2vn\fP is not +positive. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glMapGrid\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MAP1_GRID_DOMAIN\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAP2_GRID_DOMAIN\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAP1_GRID_SEGMENTS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAP2_GRID_SEGMENTS\fP +.SH SEE ALSO +\%\f3glEvalCoord(3G)\fP, +\%\f3glEvalMesh(3G)\fP, +\%\f3glEvalPoint(3G)\fP, +\%\f3glMap1(3G)\fP, +\%\f3glMap2(3G)\fP Index: xc/doc/man/GL/gl/material.3gl diff -u /dev/null xc/doc/man/GL/gl/material.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/material.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,213 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 material. +.ds Xs 18013 8 material.gl +.TH GLMATERIAL 3G +.SH NAME +.B "glMaterialf, glMateriali, glMaterialfv, glMaterialiv +\- specify material parameters for the lighting model + +.SH C SPECIFICATION +void \f3glMaterialf\fP( +GLenum \fIface\fP, +.nf +.ta \w'\f3void \fPglMaterialf( 'u + GLenum \fIpname\fP, + GLfloat \fIparam\fP ) +.fi +void \f3glMateriali\fP( +GLenum \fIface\fP, +.nf +.ta \w'\f3void \fPglMateriali( 'u + GLenum \fIpname\fP, + GLint \fIparam\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIparams\fP\ \ 'u +\f2face\fP +Specifies which face or faces are being updated. +Must be one of +\%\f3GL_FRONT\fP, +\%\f3GL_BACK\fP, or +\%\f3GL_FRONT_AND_BACK\fP. +.TP +\f2pname\fP +Specifies the single-valued material parameter of the face or faces +that is being updated. +Must be \%\f3GL_SHININESS\fP. +.TP +\f2param\fP +Specifies the value that parameter \%\f3GL_SHININESS\fP will be set to. +.SH C SPECIFICATION +void \f3glMaterialfv\fP( +GLenum \fIface\fP, +.nf +.ta \w'\f3void \fPglMaterialfv( 'u + GLenum \fIpname\fP, + const GLfloat \fI*params\fP ) +.fi +void \f3glMaterialiv\fP( +GLenum \fIface\fP, +.nf +.ta \w'\f3void \fPglMaterialiv( 'u + GLenum \fIpname\fP, + const GLint \fI*params\fP ) +.fi + +.SH PARAMETERS +.TP +\f2face\fP +Specifies which face or faces are being updated. +Must be one of +\%\f3GL_FRONT\fP, +\%\f3GL_BACK\fP, or +\%\f3GL_FRONT_AND_BACK\fP. +.TP +\f2pname\fP +Specifies the material parameter of the face or faces that is being updated. +Must be one of +\%\f3GL_AMBIENT\fP, +\%\f3GL_DIFFUSE\fP, +\%\f3GL_SPECULAR\fP, +\%\f3GL_EMISSION\fP, +\%\f3GL_SHININESS\fP, +\%\f3GL_AMBIENT_AND_DIFFUSE\fP, or +\%\f3GL_COLOR_INDEXES\fP. +.TP +\f2params\fP +Specifies a pointer to the value or values that \f2pname\fP will be set to. +.SH DESCRIPTION +\%\f3glMaterial\fP assigns values to material parameters. +There are two matched sets of material parameters. +One, +the \f2front-facing\fP set, +is used to shade points, +lines, +bitmaps, +and all polygons +(when two-sided lighting is disabled), +or just front-facing polygons +(when two-sided lighting is enabled). +The other set, +\f2back-facing\fP, +is used to shade back-facing polygons only when two-sided lighting is enabled. +Refer to the \%\f3glLightModel\fP reference page for details concerning one- and +two-sided lighting calculations. +.P +\%\f3glMaterial\fP takes three arguments. +The first, +\f2face\fP, +specifies whether the +\%\f3GL_FRONT\fP materials, the +\%\f3GL_BACK\fP materials, or both +\%\f3GL_FRONT_AND_BACK\fP materials will be modified. +The second, +\f2pname\fP, +specifies which of several parameters in one or both sets will be modified. +The third, +\f2params\fP, +specifies what value or values will be assigned to the specified parameter. +.P +Material parameters are used in the lighting equation that is optionally +applied to each vertex. +The equation is discussed in the \%\f3glLightModel\fP reference page. +The parameters that can be specified using \%\f3glMaterial\fP, +and their interpretations by the lighting equation, are as follows: +.TP 20 +\%\f3GL_AMBIENT\fP +\f2params\fP contains four integer or floating-point values that specify +the ambient RGBA reflectance of the material. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial ambient reflectance for both front- and back-facing materials +is (0.2, 0.2, 0.2, 1.0). +.TP +\%\f3GL_DIFFUSE\fP +\f2params\fP contains four integer or floating-point values that specify +the diffuse RGBA reflectance of the material. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial diffuse reflectance for both front- and back-facing materials +is (0.8, 0.8, 0.8, 1.0). +.TP +\%\f3GL_SPECULAR\fP +\f2params\fP contains four integer or floating-point values that specify +the specular RGBA reflectance of the material. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial specular reflectance for both front- and back-facing materials +is (0, 0, 0, 1). +.TP +\%\f3GL_EMISSION\fP +\f2params\fP contains four integer or floating-point values that specify +the RGBA emitted light intensity of the material. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial emission intensity for both front- and back-facing materials +is (0, 0, 0, 1). +.TP +\%\f3GL_SHININESS\fP +\f2params\fP is a single integer or floating-point value that specifies +the RGBA specular exponent of the material. +Integer and floating-point values are mapped directly. +Only values in the range [0,128] are accepted. +The initial specular exponent for both front- and back-facing materials +is 0. +.TP +\%\f3GL_AMBIENT_AND_DIFFUSE\fP +Equivalent to calling \%\f3glMaterial\fP twice with the same parameter values, +once with \%\f3GL_AMBIENT\fP and once with \%\f3GL_DIFFUSE\fP. +.TP +\%\f3GL_COLOR_INDEXES\fP +\f2params\fP contains three integer or floating-point values specifying +the color indices for ambient, +diffuse, +and specular lighting. +These three values, +and \%\f3GL_SHININESS\fP, +are the only material values used by the color index mode lighting equation. +Refer to the \%\f3glLightModel\fP reference page for a discussion +of color index lighting. +.SH NOTES +The material parameters can be updated at any time. +In particular, +\%\f3glMaterial\fP can be called between a call to \%\f3glBegin\fP and the corresponding +call to \%\f3glEnd\fP. +If only a single material parameter is to be changed per vertex, +however, +\%\f3glColorMaterial\fP is preferred over \%\f3glMaterial\fP +(see \%\f3glColorMaterial\fP). +.P +While the ambient, diffuse, specular and emission material parameters +all have alpha components, only the diffuse alpha component is used in +the lighting computation. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if either \f2face\fP or \f2pname\fP is not +an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if a specular exponent outside the range +[0,128] is specified. +.SH ASSOCIATED GETS +\%\f3glGetMaterial\fP +.SH SEE ALSO +\%\f3glColorMaterial(3G)\fP, +\%\f3glLight(3G)\fP, +\%\f3glLightModel(3G)\fP Index: xc/doc/man/GL/gl/matrixmode.3gl diff -u /dev/null xc/doc/man/GL/gl/matrixmode.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/matrixmode.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,64 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 matrixmod +.ds Xs 9532 4 matrixmode.gl +.TH GLMATRIXMODE 3G +.SH NAME +.B "glMatrixMode +\- specify which matrix is the current matrix + +.SH C SPECIFICATION +void \f3glMatrixMode\fP( +GLenum \fImode\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2mode\fP\ \ 'u +\f2mode\fP +Specifies which matrix stack is the target +for subsequent matrix operations. +Three values are accepted: +\%\f3GL_MODELVIEW\fP, +\%\f3GL_PROJECTION\fP, and +\%\f3GL_TEXTURE\fP. +The initial value is \%\f3GL_MODELVIEW\fP. +.TE + +Additionally, if the \%\f3GL_ARB_imaging\fP extension is supported, +\%\f3GL_COLOR\fP is also accepted. +.SH DESCRIPTION +\%\f3glMatrixMode\fP sets the current matrix mode. +\f2mode\fP can assume one of four values: +.TP 25 +\%\f3GL_MODELVIEW\fP +Applies subsequent matrix operations to the modelview matrix stack. +.TP +\%\f3GL_PROJECTION\fP +Applies subsequent matrix operations to the projection matrix stack. +.TP +\%\f3GL_TEXTURE\fP +Applies subsequent matrix operations to the texture matrix stack. +.TP +\%\f3GL_COLOR\fP +Applies subsequent matrix operations to the color matrix stack. +.P +To find out which matrix stack is currently the target of all matrix +operations, call \%\f3glGet\fP with argument \%\f3GL_MATRIX_MODE\fP. The initial +value is \%\f3GL_MODELVIEW\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glMatrixMode\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MATRIX_MODE\fP +.SH SEE ALSO +\%\f3glLoadMatrix(3G)\fP, +\%\f3glPushMatrix(3G)\fP Index: xc/doc/man/GL/gl/minmax.3gl diff -u /dev/null xc/doc/man/GL/gl/minmax.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/minmax.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,120 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 minmax.gl +.ds Xs 45595 6 minmax.gl +.TH GLMINMAX 3G +.SH NAME +.B "glMinmax +\- define minmax table + +.SH C SPECIFICATION +void \f3glMinmax\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMinmax( 'u + GLenum \fIinternalformat\fP, + GLboolean \fIsink\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIinternalformat\fP\ \ 'u +\f2target\fP +The minmax table whose parameters are to be set. +Must be +\%\f3GL_MINMAX\fP. +.TP +\f2internalformat\fP +The of entries in the minmax table. +Must be one of +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, or +\%\f3GL_RGBA16\fP. +.TP +\f2sink\fP +If \%\f3GL_TRUE\fP, pixels will be consumed by the minmax +process and no drawing or texture loading will take place. +If \%\f3GL_FALSE\fP, pixels will proceed to the final conversion process after +minmax. +.SH DESCRIPTION +When \%\f3GL_MINMAX\fP is enabled, the RGBA components of incoming pixels are +compared to the minimum and maximum values for each component, which are +stored in the 2-element minmax table. +(The first element stores the minima, and the second element stores +the maxima.) +If a pixel component is greater than the corresponding component +in the maximum element, then the maximum element is updated with the +pixel component value. +If a pixel component is less than the corresponding component in +the minimum element, then the minimum element is updated with the +pixel component value. +(In both cases, if the internal of the minmax table includes +luminance, then the R color component of incoming pixels is used +for comparison.) +The contents of the minmax table may be retrieved at a later time +by calling \%\f3glGetMinmax\fP. +The minmax operation is enabled or disabled by calling \%\f3glEnable\fP or +\%\f3glDisable\fP, respectively, with an argument of \%\f3GL_MINMAX\fP. +.P +\%\f3glMinmax\fP redefines the current minmax table to have entries of the +specified by \f2internalformat\fP. +The maximum element is initialized with the smallest possible component +values, and the minimum element is initialized with the largest possible +component values. +The values in the previous minmax table, if any, are lost. +If \f2sink\fP is \%\f3GL_TRUE\fP, then pixels are discarded after minmax; +no further processing of the pixels takes place, and no drawing, +texture loading, or pixel readback will result. +.P +.SH NOTES +\%\f3glMinmax\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2internalformat\fP is not one of the +allowable values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glMinmax\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetMinmaxParameter\fP +.SH SEE ALSO +\%\f3glGetMinmax(3G)\fP, +\%\f3glResetMinmax(3G)\fP Index: xc/doc/man/GL/gl/multitexcoordARB.3gl diff -u /dev/null xc/doc/man/GL/gl/multitexcoordARB.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/multitexcoordARB.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,301 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 19:43 +.ds Dm 01 multitexc +.ds Xs 22 5 multitexcoordARB.gl +.TH GLMULTITEXCOORDARB 3G +.SH NAME +.B "glMultiTexCoord1dARB, glMultiTexCoord1fARB, glMultiTexCoord1iARB, glMultiTexCoord1sARB, glMultiTexCoord2dARB, glMultiTexCoord2fARB, glMultiTexCoord2iARB, glMultiTexCoord2sARB, glMultiTexCoord3dARB, glMultiTexCoord3fARB, glMultiTexCoord3iARB, glMultiTexCoord3sARB, glMultiTexCoord4dARB, glMultiTexCoord4fARB, glMultiTexCoord4iARB, glMultiTexCoord4sARB, glMultiTexCoord1dvARB, glMultiTexCoord1fvARB, glMultiTexCoord1ivARB, glMultiTexCoord1svARB, glMultiTexCoord2dvARB, glMultiTexCoord2fvARB, glMultiTexCoord2ivARB, glMultiTexCoord2svARB, glMultiTexCoord3dvARB, glMultiTexCoord3fvARB, glMultiTexCoord3ivARB, glMultiTexCoord3svARB, glMultiTexCoord4dvARB, glMultiTexCoord4fvARB, glMultiTexCoord4ivARB, glMultiTexCoord4svARB +\- set the current texture coordinates + +.SH C SPECIFICATION +void \f3glMultiTexCoord1dARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord1dARB( 'u + GLdouble \fIs\fP ) +.fi +void \f3glMultiTexCoord1fARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord1fARB( 'u + GLfloat \fIs\fP ) +.fi +void \f3glMultiTexCoord1iARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord1iARB( 'u + GLint \fIs\fP ) +.fi +void \f3glMultiTexCoord1sARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord1sARB( 'u + GLshort \fIs\fP ) +.fi +void \f3glMultiTexCoord2dARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord2dARB( 'u + GLdouble \fIs\fP, + GLdouble \fIt\fP ) +.fi +void \f3glMultiTexCoord2fARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord2fARB( 'u + GLfloat \fIs\fP, + GLfloat \fIt\fP ) +.fi +void \f3glMultiTexCoord2iARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord2iARB( 'u + GLint \fIs\fP, + GLint \fIt\fP ) +.fi +void \f3glMultiTexCoord2sARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord2sARB( 'u + GLshort \fIs\fP, + GLshort \fIt\fP ) +.fi +void \f3glMultiTexCoord3dARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord3dARB( 'u + GLdouble \fIs\fP, + GLdouble \fIt\fP, + GLdouble \fIr\fP ) +.fi +void \f3glMultiTexCoord3fARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord3fARB( 'u + GLfloat \fIs\fP, + GLfloat \fIt\fP, + GLfloat \fIr\fP ) +.fi +void \f3glMultiTexCoord3iARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord3iARB( 'u + GLint \fIs\fP, + GLint \fIt\fP, + GLint \fIr\fP ) +.fi +void \f3glMultiTexCoord3sARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord3sARB( 'u + GLshort \fIs\fP, + GLshort \fIt\fP, + GLshort \fIr\fP ) +.fi +void \f3glMultiTexCoord4dARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord4dARB( 'u + GLdouble \fIs\fP, + GLdouble \fIt\fP, + GLdouble \fIr\fP, + GLdouble \fIq\fP ) +.fi +void \f3glMultiTexCoord4fARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord4fARB( 'u + GLfloat \fIs\fP, + GLfloat \fIt\fP, + GLfloat \fIr\fP, + GLfloat \fIq\fP ) +.fi +void \f3glMultiTexCoord4iARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord4iARB( 'u + GLint \fIs\fP, + GLint \fIt\fP, + GLint \fIr\fP, + GLint \fIq\fP ) +.fi +void \f3glMultiTexCoord4sARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord4sARB( 'u + GLshort \fIs\fP, + GLshort \fIt\fP, + GLshort \fIr\fP, + GLshort \fIq\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Specifies texture unit whose coordinates should be modified. The number +of texture units is implementation dependent, but must be at least +two. Must be one of \%\f3GL_TEXTURE\fP$i$\f3_ARB\fP where 0 \(<= $ i $ < +\%\f3GL_MAX_TEXTURE_UNITS_ARB\fP, which is an implementation-dependent value. +.TP +\f2s\fP, \f2t\fP, \f2r\fP, \f2q\fP +Specify \f2s\fP, \f2t\fP, \f2r\fP, and \f2q\fP texture coordinates for +\f2target\fP texture unit. Not all parameters are present in all forms +of the command. +.SH C SPECIFICATION +void \f3glMultiTexCoord1dvARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord1dvARB( 'u + const GLdouble \fI*v\fP ) +.fi +void \f3glMultiTexCoord1fvARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord1fvARB( 'u + const GLfloat \fI*v\fP ) +.fi +void \f3glMultiTexCoord1ivARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord1ivARB( 'u + const GLint \fI*v\fP ) +.fi +void \f3glMultiTexCoord1svARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord1svARB( 'u + const GLshort \fI*v\fP ) +.fi +void \f3glMultiTexCoord2dvARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord2dvARB( 'u + const GLdouble \fI*v\fP ) +.fi +void \f3glMultiTexCoord2fvARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord2fvARB( 'u + const GLfloat \fI*v\fP ) +.fi +void \f3glMultiTexCoord2ivARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord2ivARB( 'u + const GLint \fI*v\fP ) +.fi +void \f3glMultiTexCoord2svARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord2svARB( 'u + const GLshort \fI*v\fP ) +.fi +void \f3glMultiTexCoord3dvARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord3dvARB( 'u + const GLdouble \fI*v\fP ) +.fi +void \f3glMultiTexCoord3fvARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord3fvARB( 'u + const GLfloat \fI*v\fP ) +.fi +void \f3glMultiTexCoord3ivARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord3ivARB( 'u + const GLint \fI*v\fP ) +.fi +void \f3glMultiTexCoord3svARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord3svARB( 'u + const GLshort \fI*v\fP ) +.fi +void \f3glMultiTexCoord4dvARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord4dvARB( 'u + const GLdouble \fI*v\fP ) +.fi +void \f3glMultiTexCoord4fvARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord4fvARB( 'u + const GLfloat \fI*v\fP ) +.fi +void \f3glMultiTexCoord4ivARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord4ivARB( 'u + const GLint \fI*v\fP ) +.fi +void \f3glMultiTexCoord4svARB\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglMultiTexCoord4svARB( 'u + const GLshort \fI*v\fP ) +.fi + +.SH PARAMETERS +.TP +\f2target\fP +Specifies texture unit whose coordinates should be modified. The number +of texture units is implementation dependent, but must be at least +two. Must be one of \%\f3GL_TEXTURE\fP$i$\f3_ARB\fP, +where 0 \(<= $ i $ < the implementation-dependent value of +\%\f3GL_MAX_TEXTURE_UNITS_ARB\fP. +.TP +\f2v\fP +Specifies a pointer to an array of one, two, three, or four elements, +which in turn specify the \f2s\fP, \f2t\fP, \f2r\fP, +and \f2q\fP texture coordinates. +.SH DESCRIPTION +\%\f3glMultiTexCoordARB\fP specifies texture coordinates in one, two, three, or four +dimensions. +\%\f3glMultiTexCoord1ARB\fP sets the current texture +coordinates to (\f2s\fP,\ 0,\ 0,\ 1); +a call to \%\f3glMultiTexCoord2ARB\fP +sets them to (\f2s\fP,\ \f2t\fP,\ 0,\ 1). +Similarly, \%\f3glMultiTexCoord3ARB\fP specifies the texture coordinates as +(\f2s\fP,\ \f2t\fP,\ \f2r\fP,\ 1), and +\%\f3glMultiTexCoord4ARB\fP +defines all four components explicitly as +(\f2s\fP,\ \f2t\fP,\ \f2r\fP,\ \f2q\fP). +.P +The current texture coordinates are part of the data +that is associated with each vertex and with the current +raster position. +Initially, the values for +\f2s\fP, \f2t\fP, \f2r\fP, \f2q\fP are (0,\ 0,\ 0,\ 1). +.P +.SH NOTES +\%\f3glMultiTexCoordARB\fP is only supported if \%\f3GL_ARB_multitexture\fP is included in the +string returned by \%\f3glGetString\fP when called with the argument +\%\f3GL_EXTENSIONS\fP. +.P +The current texture coordinates can be updated at any time. +In particular, +\%\f3glMultiTexCoordARB\fP can be called between a call to \%\f3glBegin\fP and the corresponding +call to \%\f3glEnd\fP. +.P +It is always the case that \%\f3GL_TEXTURE\fP$i$\f3_ARB\fP = \%\f3GL_TEXTURE0_ARB\fP + $i$. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_CURRENT_TEXTURE_COORDS\fP with appropriate +texture unit selected. +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glClientActiveTextureARB(3G)\fP, +\%\f3glTexCoord(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertex(3G)\fP Index: xc/doc/man/GL/gl/multmatrix.3gl diff -u /dev/null xc/doc/man/GL/gl/multmatrix.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/multmatrix.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,119 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 multmatri +.ds Xs 32348 6 multmatrix.gl +.TH GLMULTMATRIX 3G +.SH NAME +.B "glMultMatrixd, glMultMatrixf +\- multiply the current matrix with the specified matrix + +.SH C SPECIFICATION +void \f3glMultMatrixd\fP( +const GLdouble \fI*m\fP ) +.nf +.fi +void \f3glMultMatrixf\fP( +const GLfloat \fI*m\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2m\fP\ \ 'u +\f2m\fP +Points to 16 consecutive values that are used as the elements of +a $4 ~times~ 4$ column-major matrix. +.SH DESCRIPTION +\%\f3glMultMatrix\fP multiplies the current matrix with the one specified using \f2m\fP, and +replaces the current matrix with the product. +.P +The current matrix is determined by the current matrix mode (see \%\f3glMatrixMode\fP). It is either the projection matrix, +modelview matrix, +or the texture matrix. +.SH EXAMPLES +If the current matrix is $C$, and the coordinates +to be transformed are, $v ~=~ (v[0], v[1], v[2], v[3])$. +Then the current transformation is $C ~times~ v$, or +.sp +.ce +.EQ +down 130 +{{ left ( matrix { + ccol { c[0] above c[1] above c[2] above c[3] } + ccol { c[4] above c[5] above c[6] above c[7] } + ccol { c[8] above c[9] above c[10] above c[11] } + ccol { c[12]~ above c[13]~ above c[14]~ above c[15]~ } +} right ) } ~~ times ~~ +{left ( matrix { +ccol { v[0]~ above v[1]~ above v[2]~ above v[3]~ } +} right )} } +.EN +.sp +.P +Calling \%\f3glMultMatrix\fP with an argument of $"m" ~=~ m[0], m[1], ..., m[15]$ +replaces the current transformation with $(C ~times~ M) ~times~ v$, +or +.sp +.ce +.EQ +down 130 +{{ left ( matrix { + ccol { c[0] above c[1] above c[2] above c[3] } + ccol { c[4] above c[5] above c[6] above c[7] } + ccol { c[8] above c[9] above c[10] above c[11] } + ccol { c[12]~ above c[13]~ above c[14]~ above c[15]~ } +} right ) } ~~ times ~~ +{ left ( matrix { + ccol { m[0] above m[1] above m[2] above m[3] } + ccol { m[4] above m[5] above m[6] above m[7] } + ccol { m[8] above m[9] above m[10] above m[11] } + ccol { m[12]~ above m[13]~ above m[14]~ above m[15]~ } +} right ) } ~~ times ~~ +{left ( matrix { +ccol { v[0]~ above v[1]~ above v[2]~ above v[3]~ } +} right )} } +.EN +.sp +.P +Where '$times$' denotes matrix multiplication, and +$v$ is represented as a $4 ~times~ 1$ matrix. +.br +.SH NOTES +While the elements of the matrix may be specified with +single or double precision, the GL may store or operate on these +values in less than single precision. +.P +In many computer languages $4 ~times~ 4$ arrays are represented +in row-major order. The transformations just described +represent these matrices in column-major order. +The order of the multiplication is important. For example, if the current +transformation is a rotation, and \%\f3glMultMatrix\fP is called with a translation matrix, +the translation is done directly on the coordinates to be transformed, +while the rotation is done on the results of that translation. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glMultMatrix\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MATRIX_MODE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MODELVIEW_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PROJECTION_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_MATRIX\fP +.SH SEE ALSO +\%\f3glLoadIdentity(3G)\fP, +\%\f3glLoadMatrix(3G)\fP, +\%\f3glMatrixMode(3G)\fP, +\%\f3glPushMatrix(3G)\fP + Index: xc/doc/man/GL/gl/newlist.3gl diff -u /dev/null xc/doc/man/GL/gl/newlist.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/newlist.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,153 @@ +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 newlist.g +.ds Xs 55434 7 newlist.gl +.TH GLNEWLIST 3G +.SH NAME +.B "glNewList, glEndList +\- create or replace a display list + +.SH C SPECIFICATION +void \f3glNewList\fP( +GLuint \fIlist\fP, +.nf +.ta \w'\f3void \fPglNewList( 'u + GLenum \fImode\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2list\fP\ \ 'u +\f2list\fP +Specifies the display-list name. +.TP +\f2mode\fP +Specifies the compilation mode, +which can be +\%\f3GL_COMPILE\fP or +\%\f3GL_COMPILE_AND_EXECUTE\fP. +.SH C SPECIFICATION +void \f3glEndList\fP( void ) +.nf +.fi + +.SH DESCRIPTION +Display lists are groups of GL commands that have been stored +for subsequent execution. +Display lists are created with \%\f3glNewList\fP. +All subsequent commands are placed in the display list, +in the order issued, +until \%\f3glEndList\fP is called. +.P +\%\f3glNewList\fP has two arguments. +The first argument, +\f2list\fP, +is a positive integer that becomes the unique name for the display list. +Names can be created and reserved with \%\f3glGenLists\fP +and tested for uniqueness with \%\f3glIsList\fP. +The second argument, +\f2mode\fP, +is a symbolic constant that can assume one of two values: +.TP 30 +\%\f3GL_COMPILE\fP +Commands are merely compiled. +.TP +\%\f3GL_COMPILE_AND_EXECUTE\fP +Commands are executed as they are compiled into the display list. +.P +Certain commands are not compiled into the display list +but are executed immediately, +regardless of the display-list mode. +These commands are +\%\f3glAreTexturesResident\fP, +\%\f3glColorPointer\fP, +\%\f3glDeleteLists\fP, +\%\f3glDeleteTextures\fP, +\%\f3glDisableClientState\fP, +\%\f3glEdgeFlagPointer\fP, +\%\f3glEnableClientState\fP, +\%\f3glFeedbackBuffer\fP, +\%\f3glFinish\fP, +\%\f3glFlush\fP, +\%\f3glGenLists\fP, +\%\f3glGenTextures\fP, +\%\f3glIndexPointer\fP, +\%\f3glInterleavedArrays\fP, +\%\f3glIsEnabled\fP, +\%\f3glIsList\fP, +\%\f3glIsTexture\fP, +\%\f3glNormalPointer\fP, +\%\f3glPopClientAttrib\fP, +\%\f3glPixelStore\fP, +\%\f3glPushClientAttrib\fP, +\%\f3glReadPixels\fP, +\%\f3glRenderMode\fP, +\%\f3glSelectBuffer\fP, +\%\f3glTexCoordPointer\fP, +\%\f3glVertexPointer\fP, +and all of the \%\f3glGet\fP commands. +.P +Similarly, +\%\f3glTexImage1D\fP, \%\f3glTexImage2D\fP, and \%\f3glTexImage3D\fP +are executed immediately and not compiled into the display list when their +first argument is \%\f3GL_PROXY_TEXTURE_1D\fP, \%\f3GL_PROXY_TEXTURE_1D\fP, or +\%\f3GL_PROXY_TEXTURE_3D\fP, respectively. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, +\%\f3glHistogram\fP executes immediately when its argument is +\%\f3GL_PROXY_HISTOGRAM\fP. Similarly, \%\f3glColorTable\fP executes +immediately when its first argument is \%\f3glPROXY_COLOR_TABLE\fP, +\%\f3glPROXY_POST_CONVOLUTION_COLOR_TABLE\fP, or +\%\f3glPROXY_POST_COLOR_MATRIX_COLOR_TABLE\fP. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, +\%\f3glClientActiveTextureARB\fP is not compiled into display lists, but +executed immediately. +.P +When \%\f3glEndList\fP is encountered, +the display-list definition is completed by associating the list +with the unique name \f2list\fP +(specified in the \%\f3glNewList\fP command). +If a display list with name \f2list\fP already exists, +it is replaced only when \%\f3glEndList\fP is called. +.SH NOTES +\%\f3glCallList\fP and \%\f3glCallLists\fP can be entered into display lists. +Commands in the display list or lists executed by \%\f3glCallList\fP +or \%\f3glCallLists\fP are not included in the display list being created, +even if the list creation mode is \%\f3GL_COMPILE_AND_EXECUTE\fP. +.P +A display list is just a group of commands and arguments, so errors +generated by commands in a display list must be generated when the list is +executed. If the list is created in \%\f3GL_COMPILE\fP mode, errors are +not generated until the list is executed. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2list\fP is 0. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glEndList\fP is called +without a preceding \%\f3glNewList\fP, +or if \%\f3glNewList\fP is called while a display list is being defined. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glNewList\fP or \%\f3glEndList\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.P +\%\f3GL_OUT_OF_MEMORY\fP is generated if there is insufficient memory to +compile the display list. If the GL version is 1.1 or greater, no +change is made to the previous contents of the display list, if any, +and no other change is made to the GL state. (It is as if no attempt +had been made to create the new display list.) +.SH ASSOCIATED GETS +\%\f3glIsList\fP +.br +\%\f3glGet\fP with argument \%\f3GL_LIST_INDEX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_LIST_MODE\fP +.SH SEE ALSO +\%\f3glCallList(3G)\fP, +\%\f3glCallLists(3G)\fP, +\%\f3glDeleteLists(3G)\fP, +\%\f3glGenLists(3G)\fP Index: xc/doc/man/GL/gl/normal.3gl diff -u /dev/null xc/doc/man/GL/gl/normal.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/normal.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,123 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 normal.gl +.ds Xs 22982 4 normal.gl +.TH GLNORMAL 3G +.SH NAME +.B "glNormal3b, glNormal3d, glNormal3f, glNormal3i, glNormal3s, glNormal3bv, glNormal3dv, glNormal3fv, glNormal3iv, glNormal3sv +\- set the current normal vector + +.EQ +delim $$ +.EN +.SH C SPECIFICATION +void \f3glNormal3b\fP( +GLbyte \fInx\fP, +.nf +.ta \w'\f3void \fPglNormal3b( 'u + GLbyte \fIny\fP, + GLbyte \fInz\fP ) +.fi +void \f3glNormal3d\fP( +GLdouble \fInx\fP, +.nf +.ta \w'\f3void \fPglNormal3d( 'u + GLdouble \fIny\fP, + GLdouble \fInz\fP ) +.fi +void \f3glNormal3f\fP( +GLfloat \fInx\fP, +.nf +.ta \w'\f3void \fPglNormal3f( 'u + GLfloat \fIny\fP, + GLfloat \fInz\fP ) +.fi +void \f3glNormal3i\fP( +GLint \fInx\fP, +.nf +.ta \w'\f3void \fPglNormal3i( 'u + GLint \fIny\fP, + GLint \fInz\fP ) +.fi +void \f3glNormal3s\fP( +GLshort \fInx\fP, +.nf +.ta \w'\f3void \fPglNormal3s( 'u + GLshort \fIny\fP, + GLshort \fInz\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2nx\fP\ \f2ny\fP\ \f2nz\fP\ \ 'u +\f2nx\fP, \f2ny\fP, \f2nz\fP +Specify the $x$, $y$, and $z$ coordinates of the new current normal. +The initial value of the current normal is the unit vector, (0, 0, 1). +.P +.SH C SPECIFICATION +void \f3glNormal3bv\fP( +const GLbyte \fI*v\fP ) +.nf +.fi +void \f3glNormal3dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glNormal3fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glNormal3iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glNormal3sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi + +.SH PARAMETERS +.TP +\f2v\fP +Specifies a pointer to an array of three elements: +the $x$, $y$, and $z$ coordinates of the new current normal. +.P +.SH DESCRIPTION +The current normal is set to the given coordinates +whenever \%\f3glNormal\fP is issued. +Byte, short, or integer arguments are converted to floating-point + with a linear mapping that maps the most positive representable integer +value to 1.0, +and the most negative representable integer value to \-1.0. +.P +Normals specified with \%\f3glNormal\fP need not have unit length. +If \%\f3GL_NORMALIZE\fP is enabled, +then normals of any length specified with \%\f3glNormal\fP are normalized after transformation. +If \%\f3GL_RESCALE_NORMAL\fP is enabled, normals are scaled by a scaling factor +derived from the modelview matrix. \%\f3GL_RESCALE_NORMAL\fP requires that the +originally specified normals were of unit length, and that the modelview +matrix contain only uniform scales for proper results. +To enable and disable normalization, call \%\f3glEnable\fP and \%\f3glDisable\fP +with either \%\f3GL_NORMALIZE\fP or \%\f3GL_RESCALE_NORMAL\fP. +Normalization is initially disabled. +.SH NOTES +The current normal can be updated at any time. +In particular, \%\f3glNormal\fP can be called between a call to \%\f3glBegin\fP and +the corresponding call to \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_CURRENT_NORMAL\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_NORMALIZE\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_RESCALE_NORMAL\fP +.SH SEE ALSO +\%\f3glBegin(3G)\fP, +\%\f3glColor(3G)\fP, +\%\f3glIndex(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glTexCoord(3G)\fP, +\%\f3glVertex(3G)\fP Index: xc/doc/man/GL/gl/normalpointer.3gl diff -u /dev/null xc/doc/man/GL/gl/normalpointer.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/normalpointer.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,113 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 normalpoi +.ds Xs 28721 6 normalpointer.gl +.TH GLNORMALPOINTER 3G +.SH NAME +.B "glNormalPointer +\- define an array of normals + +.SH C SPECIFICATION +void \f3glNormalPointer\fP( +GLenum \fItype\fP, +.nf +.ta \w'\f3void \fPglNormalPointer( 'u + GLsizei \fIstride\fP, + const GLvoid \fI*ptr\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIstride\fP\ \ 'u +\f2type\fP +Specifies the data type of each coordinate in the array. +Symbolic constants +\%\f3GL_BYTE\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, and +\%\f3GL_DOUBLE\fP +are accepted. The initial value is \%\f3GL_FLOAT\fP. +.TP +\f2stride\fP +Specifies the byte offset between consecutive normals. If \f2stride\fP is 0\- +the initial value\-the normals are understood to be tightly packed in +the array. +The initial value is 0. +.TP +\f2ptr\fP +Specifies a pointer to the first coordinate of the first normal in the +array. +The initial value is 0. +.SH DESCRIPTION +\%\f3glNormalPointer\fP specifies the location and data of an array of normals +to use when rendering. +\f2type\fP specifies the data type of +the normal coordinates and \f2stride\fP gives the byte stride from one +normal to the next, allowing vertices and attributes +to be packed into a single array or stored in separate arrays. +(Single-array storage may be more efficient on some implementations; +see \%\f3glInterleavedArrays\fP.) +When a normal array is specified, \f2type\fP, \f2stride\fP, and \f2ptr\fP are +saved as client-side state. +.P +To enable and disable the normal array, call \%\f3glEnableClientState\fP and +\%\f3glDisableClientState\fP with the argument \%\f3GL_NORMAL_ARRAY\fP. If +enabled, the normal array is used +when \%\f3glDrawArrays\fP, \%\f3glDrawElements\fP, or \%\f3glArrayElement\fP is called. +.P +Use \%\f3glDrawArrays\fP to construct a sequence of primitives (all of the +same type) from prespecified vertex and vertex attribute arrays. +Use \%\f3glArrayElement\fP to specify primitives +by indexing vertices and vertex attributes and \%\f3glDrawElements\fP to +construct a sequence of primitives by indexing vertices and vertex attributes. +.SH NOTES +\%\f3glNormalPointer\fP is available only if the GL version is 1.1 or greater. +.P +The normal array is initially disabled and isn't accessed when +\%\f3glArrayElement\fP, \%\f3glDrawElements\fP, or \%\f3glDrawArrays\fP is called. +.P +Execution of \%\f3glNormalPointer\fP is not allowed between +\%\f3glBegin\fP and the corresponding \%\f3glEnd\fP, +but an error may or may not be generated. If an error is not generated, +the operation is undefined. +.P +\%\f3glNormalPointer\fP is typically implemented on the client side. +.P +Since the normal array parameters are client-side state, they are not +saved or restored by \%\f3glPushAttrib\fP and \%\f3glPopAttrib\fP. +Use \%\f3glPushClientAttrib\fP and +\%\f3glPopClientAttrib\fP instead. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2stride\fP is negative. +.SH ASSOCIATED GETS +\%\f3glIsEnabled\fP with argument \%\f3GL_NORMAL_ARRAY\fP +.br +\%\f3glGet\fP with argument \%\f3GL_NORMAL_ARRAY_TYPE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_NORMAL_ARRAY_STRIDE\fP +.br +\%\f3glGetPointerv\fP with argument \%\f3GL_NORMAL_ARRAY_POINTER\fP +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glDrawElements(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glGetPointerv(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glInterleavedArrays(3G)\fP, +\%\f3glPopClientAttrib(3G)\fP, +\%\f3glPushClientAttrib(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/ortho.3gl diff -u /dev/null xc/doc/man/GL/gl/ortho.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/ortho.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,105 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 ortho.gl +.ds Xs 2001 5 ortho.gl +.TH GLORTHO 3G +.SH NAME +.B "glOrtho +\- multiply the current matrix with an orthographic matrix + +.SH C SPECIFICATION +void \f3glOrtho\fP( +GLdouble \fIleft\fP, +.nf +.ta \w'\f3void \fPglOrtho( 'u + GLdouble \fIright\fP, + GLdouble \fIbottom\fP, + GLdouble \fItop\fP, + GLdouble \fInear_val\fP, + GLdouble \fIfar_val\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2left\fP\ \f2right\fP\ \ 'u +\f2left\fP, \f2right\fP +Specify the coordinates for the left and right vertical clipping planes. +.TP +\f2bottom\fP, \f2top\fP +Specify the coordinates for the bottom and top horizontal clipping planes. +.TP +\f2near_val\fP, \f2far_val\fP +Specify the distances to the nearer and farther depth clipping planes. +These values are negative if the plane is to be behind the viewer. +.SH DESCRIPTION +\%\f3glOrtho\fP describes a transformation that produces a parallel projection. +The current matrix (see \%\f3glMatrixMode\fP) is multiplied by this matrix +and the result replaces the current matrix, as if +\%\f3glMultMatrix\fP were called with the following matrix +as its argument: +.sp +.ce +.EQ +left ( matrix { + ccol { {2 over {"right" - "left"}} above 0 above 0 above 0 } + ccol { 0 above {2 over {"top" - "bottom"}} above 0 above 0 } + ccol { 0 above 0 above {-2 over {"far_val" - "near_val"}} above 0 } + ccol { {t sub x}~ above {t sub y}~ above {t sub z}~ above 1~ } +} right ) +.EN +.BP +.P +where +.ce +.EQ +t sub x ~=~ -^{{"right" ~+~ "left"} over {"right" ~-~ "left"}} +.EN + +.ce +.EQ +t sub y ~=~ -^{{"top" ~+~ "bottom"} over {"top" ~-~ "bottom"}} +.EN + +.ce +.EQ +t sub z ~=~ -^{{"far_val" ~+~ "near_val"} over {"far_val" ~-~ "near_val"}} +.EN + +.RE +.P +Typically, the matrix mode is \%\f3GL_PROJECTION\fP, and +(\f2left\fP, \f2bottom\fP, \-\f2near_val\fP) and (\f2right\fP, \f2top\fP, \-\f2near_val\fP) +specify the points on the near clipping plane that are mapped +to the lower left and upper right corners of the window, +respectively, +assuming that the eye is located at (0, 0, 0). +\-\f2far_val\fP specifies the location of the far clipping plane. +Both \f2near_val\fP and \f2far_val\fP can be either positive or negative. +.P +Use \%\f3glPushMatrix\fP and \%\f3glPopMatrix\fP to save and restore +the current matrix stack. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glOrtho\fP +is executed between the execution of +\%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MATRIX_MODE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MODELVIEW_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PROJECTION_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_MATRIX\fP +.SH SEE ALSO +\%\f3glFrustum(3G)\fP, +\%\f3glMatrixMode(3G)\fP, +\%\f3glMultMatrix(3G)\fP, +\%\f3glPushMatrix(3G)\fP, +\%\f3glViewport(3G)\fP Index: xc/doc/man/GL/gl/passthrough.3gl diff -u /dev/null xc/doc/man/GL/gl/passthrough.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/passthrough.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,55 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 passthrou +.ds Xs 49492 4 passthrough.gl +.TH GLPASSTHROUGH 3G +.SH NAME +.B "glPassThrough +\- place a marker in the feedback buffer + +.SH C SPECIFICATION +void \f3glPassThrough\fP( +GLfloat \fItoken\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2token\fP\ \ 'u +\f2token\fP +Specifies a marker value to be placed in the feedback buffer +following a \%\f3GL_PASS_THROUGH_TOKEN\fP. +.SH DESCRIPTION +.P +Feedback is a GL render mode. +The mode is selected by calling +\%\f3glRenderMode\fP with \%\f3GL_FEEDBACK\fP. +When the GL is in feedback mode, +no pixels are produced by rasterization. +Instead, +information about primitives that would have been rasterized +is fed back to the application using the GL. +See the \%\f3glFeedbackBuffer\fP reference page for a description of the +feedback buffer and the values in it. +.P +\%\f3glPassThrough\fP inserts a user-defined marker in the feedback buffer +when it is executed in feedback mode. +\f2token\fP is returned as if it were a primitive; +it is indicated with its own unique identifying value: +\%\f3GL_PASS_THROUGH_TOKEN\fP. +The order of \%\f3glPassThrough\fP commands with respect to the specification +of graphics primitives is maintained. +.SH NOTES +\%\f3glPassThrough\fP is ignored if the GL is not in feedback mode. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPassThrough\fP is executed between +the execution of \%\f3glBegin\fP and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_RENDER_MODE\fP +.SH SEE ALSO +\%\f3glFeedbackBuffer(3G)\fP, +\%\f3glRenderMode(3G)\fP Index: xc/doc/man/GL/gl/pixelmap.3gl diff -u /dev/null xc/doc/man/GL/gl/pixelmap.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/pixelmap.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,252 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 pixelmap. +.ds Xs 20188 9 pixelmap.gl +.TH GLPIXELMAP 3G +.SH NAME +.B "glPixelMapfv, glPixelMapuiv, glPixelMapusv +\- set up pixel transfer maps + +.SH C SPECIFICATION +void \f3glPixelMapfv\fP( +GLenum \fImap\fP, +.nf +.ta \w'\f3void \fPglPixelMapfv( 'u + GLint \fImapsize\fP, + const GLfloat \fI*values\fP ) +.fi +void \f3glPixelMapuiv\fP( +GLenum \fImap\fP, +.nf +.ta \w'\f3void \fPglPixelMapuiv( 'u + GLint \fImapsize\fP, + const GLuint \fI*values\fP ) +.fi +void \f3glPixelMapusv\fP( +GLenum \fImap\fP, +.nf +.ta \w'\f3void \fPglPixelMapusv( 'u + GLint \fImapsize\fP, + const GLushort \fI*values\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fImapsize\fP\ \ 'u +\f2map\fP +.na +Specifies a symbolic map name. +Must be one of the following: +\%\f3GL_PIXEL_MAP_I_TO_I\fP, +\%\f3GL_PIXEL_MAP_S_TO_S\fP, +\%\f3GL_PIXEL_MAP_I_TO_R\fP, +\%\f3GL_PIXEL_MAP_I_TO_G\fP, +\%\f3GL_PIXEL_MAP_I_TO_B\fP, +\%\f3GL_PIXEL_MAP_I_TO_A\fP, +\%\f3GL_PIXEL_MAP_R_TO_R\fP, +\%\f3GL_PIXEL_MAP_G_TO_G\fP, +\%\f3GL_PIXEL_MAP_B_TO_B\fP, or +\%\f3GL_PIXEL_MAP_A_TO_A\fP. +.TP +\f2mapsize\fP +Specifies the size of the map being defined. +.TP +\f2values\fP +Specifies an array of \f2mapsize\fP values. +.SH DESCRIPTION +\%\f3glPixelMap\fP sets up translation tables, +or \f2maps\fP, +used by +\%\f3glCopyPixels\fP, +\%\f3glCopyTexImage1D\fP, +\%\f3glCopyTexImage2D\fP, +\%\f3glCopyTexSubImage1D\fP, +\%\f3glCopyTexSubImage2D\fP, +\%\f3glCopyTexSubImage3D\fP, +\%\f3glDrawPixels\fP, +\%\f3glReadPixels\fP, +\%\f3glTexImage1D\fP, +\%\f3glTexImage2D\fP, +\%\f3glTexImage3D\fP, +\%\f3glTexSubImage1D\fP, +\%\f3glTexSubImage2D\fP, and +\%\f3glTexSubImage3D\fP. +Additionally, if the \%\f3GL_ARB_imaging\fP subset is supported, the +routines +\%\f3glColorTable\fP, +\%\f3glColorSubTable\fP, +\%\f3glConvolutionFilter1D\fP, +\%\f3glConvolutionFilter2D\fP, +\%\f3glHistogram\fP, +\%\f3glMinmax\fP, and +\%\f3glSeparableFilter2D\fP. +Use of these maps is described completely in the +\%\f3glPixelTransfer\fP reference page, +and partly in the reference pages for the pixel and texture image commands. +Only the specification of the maps is described in this reference page. +.P +\f2map\fP is a symbolic map name, +indicating one of ten maps to set. +\f2mapsize\fP specifies the number of entries in the map, +and \f2values\fP is a pointer to an array of \f2mapsize\fP map values. +.P +The ten maps are as follows: +.TP 30 +\%\f3GL_PIXEL_MAP_I_TO_I\fP +Maps color indices to color indices. +.TP +\%\f3GL_PIXEL_MAP_S_TO_S\fP +Maps stencil indices to stencil indices. +.TP +\%\f3GL_PIXEL_MAP_I_TO_R\fP +Maps color indices to red components. +.TP +\%\f3GL_PIXEL_MAP_I_TO_G\fP +Maps color indices to green components. +.TP +\%\f3GL_PIXEL_MAP_I_TO_B\fP +Maps color indices to blue components. +.TP +\%\f3GL_PIXEL_MAP_I_TO_A\fP +Maps color indices to alpha components. +.TP +\%\f3GL_PIXEL_MAP_R_TO_R\fP +Maps red components to red components. +.TP +\%\f3GL_PIXEL_MAP_G_TO_G\fP +Maps green components to green components. +.TP +\%\f3GL_PIXEL_MAP_B_TO_B\fP +Maps blue components to blue components. +.TP +\%\f3GL_PIXEL_MAP_A_TO_A\fP +Maps alpha components to alpha components. +.P +The entries in a map can be specified as single-precision +floating-point numbers, +unsigned short integers, +or unsigned long integers. +Maps that store color component values +(all but \%\f3GL_PIXEL_MAP_I_TO_I\fP and \%\f3GL_PIXEL_MAP_S_TO_S\fP) +retain their values in floating-point , +with unspecified mantissa and exponent sizes. +Floating-point values specified by \%\f3glPixelMapfv\fP are converted directly +to the internal floating-point of these maps, +then clamped to the range [0,1]. +Unsigned integer values specified by \%\f3glPixelMapusv\fP and +\%\f3glPixelMapuiv\fP are converted linearly such that +the largest representable integer maps to 1.0, +and 0 maps to 0.0. +.P +Maps that store indices, +\%\f3GL_PIXEL_MAP_I_TO_I\fP and \%\f3GL_PIXEL_MAP_S_TO_S\fP, +retain their values in fixed-point , +with an unspecified number of bits to the right of the binary point. +Floating-point values specified by \%\f3glPixelMapfv\fP are converted directly +to the internal fixed-point of these maps. +Unsigned integer values specified by \%\f3glPixelMapusv\fP and +\%\f3glPixelMapuiv\fP specify integer values, +with all 0's to the right of the binary point. +.P +The following table shows the initial sizes and values for each of the maps. +Maps that are indexed by either color or stencil indices must have +\f2mapsize\fP = $2 sup n$ for some $n$ or the results are undefined. +The maximum allowable size for each map depends on the implementation +and can be determined by calling \%\f3glGet\fP with argument +\%\f3GL_MAX_PIXEL_MAP_TABLE\fP. +The single maximum applies to all maps; it is at +least 32. +.bp +.TS +center tab(:) delim($$) ; +lb cb cb cb cb +l c c c c. +_ +\f2map\fP:Lookup Index:Lookup Value:Initial Size:Initial Value +_ +\%\f3GL_PIXEL_MAP_I_TO_I\fP:color index:color index:1:0 +\%\f3GL_PIXEL_MAP_S_TO_S\fP:stencil index :stencil index :1:0 +\%\f3GL_PIXEL_MAP_I_TO_R\fP:color index :R:1:0 +\%\f3GL_PIXEL_MAP_I_TO_G\fP:color index :G:1:0 +\%\f3GL_PIXEL_MAP_I_TO_B\fP:color index:B:1:0 +\%\f3GL_PIXEL_MAP_I_TO_A\fP:color index:A:1:0 +\%\f3GL_PIXEL_MAP_R_TO_R\fP:R:R:1:0 +\%\f3GL_PIXEL_MAP_G_TO_G\fP:G:G:1:0 +\%\f3GL_PIXEL_MAP_B_TO_B\fP:B:B:1:0 +\%\f3GL_PIXEL_MAP_A_TO_A\fP:A:A:1:0 +_ +.TE + +.RE +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2map\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2mapsize\fP is less than one +or larger than \%\f3GL_MAX_PIXEL_MAP_TABLE\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2map\fP is +\%\f3GL_PIXEL_MAP_I_TO_I\fP, +\%\f3GL_PIXEL_MAP_S_TO_S\fP, +\%\f3GL_PIXEL_MAP_I_TO_R\fP, +\%\f3GL_PIXEL_MAP_I_TO_G\fP, +\%\f3GL_PIXEL_MAP_I_TO_B\fP, or +\%\f3GL_PIXEL_MAP_I_TO_A\fP, +and \f2mapsize\fP is not a power of two. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPixelMap\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetPixelMap\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_I_TO_I_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_S_TO_S_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_I_TO_R_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_I_TO_G_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_I_TO_B_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_I_TO_A_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_R_TO_R_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_G_TO_G_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_B_TO_B_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PIXEL_MAP_A_TO_A_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_PIXEL_MAP_TABLE\fP +.SH SEE ALSO +\%\f3glColorTable(3G)\fP, +\%\f3glColorSubTable(3G)\fP, +\%\f3glConvolutionFilter1D(3G)\fP, +\%\f3glConvolutionFilter2D(3G)\fP, +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glHistogram(3G)\fP, +\%\f3glMinmax(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glReadPixels(3G)\fP, +\%\f3glSeparableFilter2D(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP Index: xc/doc/man/GL/gl/pixelstore.3gl diff -u /dev/null xc/doc/man/GL/gl/pixelstore.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/pixelstore.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,505 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 pixelstor +.ds Xs 12758 17 pixelstore.gl +.TH GLPIXELSTORE 3G +.SH NAME +.B "glPixelStoref, glPixelStorei +\- set pixel storage modes + +.SH C SPECIFICATION +void \f3glPixelStoref\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglPixelStoref( 'u + GLfloat \fIparam\fP ) +.fi +void \f3glPixelStorei\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglPixelStorei( 'u + GLint \fIparam\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2pname\fP\ \ 'u +\f2pname\fP +Specifies the symbolic name of the parameter to be set. +Six values affect the packing of pixel data into memory: +\%\f3GL_PACK_SWAP_BYTES\fP, +\%\f3GL_PACK_LSB_FIRST\fP, +\%\f3GL_PACK_ROW_LENGTH\fP, +\%\f3GL_PACK_IMAGE_HEIGHT\fP, +\%\f3GL_PACK_SKIP_PIXELS\fP, +\%\f3GL_PACK_SKIP_ROWS\fP, +\%\f3GL_PACK_SKIP_IMAGES\fP, and +\%\f3GL_PACK_ALIGNMENT\fP. +Six more affect the unpacking of pixel data \f2from\fP memory: +\%\f3GL_UNPACK_SWAP_BYTES\fP, +\%\f3GL_UNPACK_LSB_FIRST\fP, +\%\f3GL_UNPACK_ROW_LENGTH\fP, +\%\f3GL_UNPACK_IMAGE_HEIGHT\fP, +\%\f3GL_UNPACK_SKIP_PIXELS\fP, +\%\f3GL_UNPACK_SKIP_ROWS\fP, +\%\f3GL_UNPACK_SKIP_IMAGES\fP, and +\%\f3GL_UNPACK_ALIGNMENT\fP. +.TP +\f2param\fP +Specifies the value that \f2pname\fP is set to. +.SH DESCRIPTION + +\%\f3glPixelStore\fP sets pixel storage modes that affect the operation of subsequent +\%\f3glDrawPixels\fP and \%\f3glReadPixels\fP as well as the unpacking of +polygon stipple patterns (see \%\f3glPolygonStipple\fP), bitmaps (see +\%\f3glBitmap\fP), texture patterns (see \%\f3glTexImage1D\fP, +\%\f3glTexImage2D\fP, \%\f3glTexImage3D\fP, \%\f3glTexSubImage1D\fP, +\%\f3glTexSubImage2D\fP, \%\f3glTexSubImage3D\fP). +Additionally, if the \%\f3GL_ARB_imaging\fP extension is supported, pixle +storage modes affect convlution filters +(see \%\f3glConvolutionFilter1D\fP, \%\f3glConvolutionFilter2D\fP, and +\%\f3glSeparableFilter2D\fP, color table (see \%\f3glColorTable\fP, and +\%\f3glColorSubTable\fP, and unpacking histogram (See \%\f3glHistogram\fP), +and minmax (See \%\f3glMinmax\fP) data. +.P +\f2pname\fP is a symbolic constant indicating the parameter to be set, and +\f2param\fP is the new value. Six of the twelve storage parameters affect +how pixel data is returned to client memory. +They are as follows: +.TP 10 +\%\f3GL_PACK_SWAP_BYTES\fP +If true, +byte ordering for multibyte color components, +depth components, +color indices, +or stencil indices +is reversed. +That is, +if a four-byte component consists of bytes +$b sub 0$, +$b sub 1$, +$b sub 2$, +$b sub 3$, +it is stored in memory as +$b sub 3$, +$b sub 2$, +$b sub 1$, +$b sub 0$ +if \%\f3GL_PACK_SWAP_BYTES\fP is true. +\%\f3GL_PACK_SWAP_BYTES\fP has no effect on the memory order of components +within a pixel, +only on the order of bytes within components or indices. +For example, +the three components of a \%\f3GL_RGB\fP pixel are always stored with +red first, +green second, +and blue third, +regardless of the value of \%\f3GL_PACK_SWAP_BYTES\fP. +.TP +\%\f3GL_PACK_LSB_FIRST\fP +If true, +bits are ordered within a byte from least significant to most significant; +otherwise, +the first bit in each byte is the most significant one. +This parameter is significant for bitmap data only. +.TP +\%\f3GL_PACK_ROW_LENGTH\fP +If greater than 0, +\%\f3GL_PACK_ROW_LENGTH\fP defines the number of pixels in a row. +If the first pixel of a row is placed at location $p$ in memory, +then the location of the first pixel of the next row is obtained by skipping +.sp +.ce +$k ~=~~ left { ^ lpile { n l above {a over s left ceiling { s n l } over a right ceiling}} ~~ lpile {s ~>=~ a above s ~<~ a }$ +.sp +components or indices, +where $n$ is the number of components or indices in a pixel, +$l$ is the number of pixels in a row +(\%\f3GL_PACK_ROW_LENGTH\fP if it is greater than 0, +the $width$ argument to the pixel routine otherwise), +$a$ is the value of \%\f3GL_PACK_ALIGNMENT\fP, and +$s$ is the size, in bytes, of a single component +(if $ a < s$, then it is as if $a ~=~ s$). +In the case of 1-bit values, +the location of the next row is obtained by skipping +.sp +.ce +$k ~=~ 8 a left ceiling { n l } over { 8 a } ^ right ceiling$ +.sp +components or indices. +.IP +The word \f2component\fP in this description refers to the nonindex values +red, +green, +blue, +alpha, +and depth. +Storage \%\f3GL_RGB\fP, +for example, +has three components per pixel: +first red, +then green, +and finally blue. +.TP +\%\f3GL_PACK_IMAGE_HEIGHT\fP +If greater than 0, +\%\f3GL_PACK_IMAGE_HEIGHT\fP defines the number of pixels in an image +three-dimensional texture volume. +Where ``image'' is defined by all pixels sharing the same third +dimension index. +If the first pixel of a row is placed at location $p$ in memory, +then the location of the first pixel of the next row is obtained by skipping +.sp +.ce +$k ~=~~ left { ~ lpile { n l h above {a over s left ceiling { s n l h } +over a ^ right ceiling}} ~~ lpile {s ~>=~ a above s ~<~ a }$ +.sp +components or indices, where $n$ is the number of components or indices +in a pixel, $l$ is the number of pixels in a row +(\%\f3GL_PACK_ROW_LENGTH\fP if it is greater than 0, the +$width$ argument to \%\f3glTexImage3d\fP otherwise), $h$ is the number of +rows in a pixel image (\%\f3GL_PACK_IMAGE_HEIGHT\fP if it is greater than +0, the $height$ arguemnt to the \%\f3glTexImage3D\fP routine otherwise), +$a$ is the value of +\%\f3GL_PACK_ALIGNMENT\fP, and $s$ is the size, in bytes, of a single +component (if $ a < s$, then it is as if $a = s$). +.IP +The word \f2component\fP in this description refers to the nonindex values +red, +green, +blue, +alpha, +and depth. +Storage \%\f3GL_RGB\fP, +for example, +has three components per pixel: +first red, +then green, +and finally blue. +.TP +\%\f3GL_PACK_SKIP_PIXELS\fP, \%\f3GL_PACK_SKIP_ROWS\fP, and \%\f3GL_PACK_SKIP_IMAGES\fP +These values are provided as a convenience to the programmer; +they provide no functionality that cannot be duplicated simply by +incrementing the pointer passed to \%\f3glReadPixels\fP. +Setting \%\f3GL_PACK_SKIP_PIXELS\fP to $i$ is equivalent to incrementing +the pointer by $i n$ components or indices, +where $n$ is the number of components or indices in each pixel. +Setting \%\f3GL_PACK_SKIP_ROWS\fP to $j$ is equivalent to incrementing +the pointer by $j m$ components or indices, +where $m$ is the number of components or indices per row, +as just computed in the \%\f3GL_PACK_ROW_LENGTH\fP section. +Setting \%\f3GL_PACK_SKIP_IMAGES\fP to $k$ is equivalent to incrementing +the pointer by $k p$, where $p$ is the number of components or indices +per image, as computed in the \%\f3GL_PACK_IMAGE_HEIGHT\fP section. +.TP +\%\f3GL_PACK_ALIGNMENT\fP +Specifies the alignment requirements for the start of each pixel row in memory. +The allowable values are +1 (byte-alignment), +2 (rows aligned to even-numbered bytes), +4 (word-alignment), and +8 (rows start on double-word boundaries). +.P +The other six of the twelve storage parameters affect how pixel data is +read from client memory. +These values are significant for \%\f3glDrawPixels\fP, +\%\f3glTexImage1D\fP, +\%\f3glTexImage2D\fP, +\%\f3glTexImage3D\fP, +\%\f3glTexSubImage1D\fP, +\%\f3glTexSubImage2D\fP, +\%\f3glTexSubImage3D\fP, +\%\f3glBitmap\fP, and +\%\f3glPolygonStipple\fP. +.P +Additionally, if the \%\f3GL_ARB_imaging\fP extension is supported, +\%\f3glColorTable\fP, +\%\f3glColorSubTable\fP, +\%\f3glConvolutionFilter1D\fP, +\%\f3glConvolutionFilter2D\fP, and +\%\f3glSeparableFilter2D\fP. +They are as follows: +.TP +\%\f3GL_UNPACK_SWAP_BYTES\fP +If true, +byte ordering for multibyte color components, +depth components, +color indices, +or stencil indices +is reversed. +That is, +if a four-byte component consists of bytes +$b sub 0$, +$b sub 1$, +$b sub 2$, +$b sub 3$, +it is taken from memory as +$b sub 3$, +$b sub 2$, +$b sub 1$, +$b sub 0$ +if \%\f3GL_UNPACK_SWAP_BYTES\fP is true. +\%\f3GL_UNPACK_SWAP_BYTES\fP has no effect on the memory order of components +within a pixel, +only on the order of bytes within components or indices. +For example, +the three components of a \%\f3GL_RGB\fP pixel are always stored with +red first, +green second, +and blue third, +regardless of the value of \%\f3GL_UNPACK_SWAP_BYTES\fP. +.TP +\%\f3GL_UNPACK_LSB_FIRST\fP +If true, +bits are ordered within a byte from least significant to most significant; +otherwise, +the first bit in each byte is the most significant one. +This is relevant only for bitmap data. +.TP +\%\f3GL_UNPACK_ROW_LENGTH\fP +If greater than 0, +\%\f3GL_UNPACK_ROW_LENGTH\fP defines the number of pixels in a row. +If the first pixel of a row is placed at location $p$ in memory, +then the location of the first pixel of the next row is obtained by skipping +.sp +.ce +$k ~=~~ left { ~ lpile { n l above {a over s left ceiling { s n l } +over a ^ right ceiling}} ~~ lpile {s ~>=~ a above s ~<~ a }$ +.sp +components or indices, +where $n$ is the number of components or indices in a pixel, +$l$ is the number of pixels in a row +(\%\f3GL_UNPACK_ROW_LENGTH\fP if it is greater than 0, +the $width$ argument to the pixel routine otherwise), +$a$ is the value of \%\f3GL_UNPACK_ALIGNMENT\fP, and +$s$ is the size, in bytes, of a single component +(if $ a < s$, then it is as if $a = s$). +In the case of 1-bit values, +the location of the next row is obtained by skipping +.sp +.ce +$k ~=~ 8 a left ceiling { n l } over { 8 a } right ceiling$ +.sp +components or indices. +.IP +The word \f2component\fP in this description refers to the nonindex values +red, +green, +blue, +alpha, +and depth. +Storage \%\f3GL_RGB\fP, +for example, +has three components per pixel: +first red, +then green, +and finally blue. +.TP +\%\f3GL_UNPACK_IMAGE_HEIGHT\fP +If greater than 0, +\%\f3GL_UNPACK_IMAGE_HEIGHT\fP defines the number of pixels in an image of +a three-dimensional texture volume. Where ``image'' is defined by all +pixel sharing the same third dimension index. +If the first pixel of a row is placed at location $p$ in memory, +then the location of the first pixel of the next row is obtained by skipping +.sp +.ce +$k ~=~~ left {~ lpile { n l h above {a over s left ceiling { s n l h } +over a ^ right ceiling}} ~~ lpile {s ~ >=~ a above s ~<~ a }$ +.sp +components or indices, +where $n$ is the number of components or indices in a pixel, +$l$ is the number of pixels in a row +(\%\f3GL_UNPACK_ROW_LENGTH\fP if it is greater than 0, +the $width$ argument to \%\f3glTexImage3D\fP otherwise), +$h$ is the number of rows in an image (\%\f3GL_UNPACK_IMAGE_HEIGHT\fP if +it is greater than 0, the $height$ argument to \%\f3glTexImage3D\fP otherwise), +$a$ is the value of \%\f3GL_UNPACK_ALIGNMENT\fP, and +$s$ is the size, in bytes, of a single component +(if $ a < s$, then it is as if $a ~=~ s$). +.IP +The word \f2component\fP in this description refers to the nonindex values +red, +green, +blue, +alpha, +and depth. +Storage \%\f3GL_RGB\fP, +for example, +has three components per pixel: +first red, +then green, +and finally blue. +.TP +\%\f3GL_UNPACK_SKIP_PIXELS\fP and \%\f3GL_UNPACK_SKIP_ROWS\fP +These values are provided as a convenience to the programmer; +they provide no functionality that cannot be duplicated by +incrementing the pointer passed to +\%\f3glDrawPixels\fP, +\%\f3glTexImage1D\fP, +\%\f3glTexImage2D\fP, +\%\f3glTexSubImage1D\fP, +\%\f3glTexSubImage2D\fP, +\%\f3glBitmap\fP, or +\%\f3glPolygonStipple\fP. +Setting \%\f3GL_UNPACK_SKIP_PIXELS\fP to $i$ is equivalent to incrementing +the pointer by $i n$ components or indices, +where $n$ is the number of components or indices in each pixel. +Setting \%\f3GL_UNPACK_SKIP_ROWS\fP to $j$ is equivalent to incrementing +the pointer by $j k$ components or indices, +where $k$ is the number of components or indices per row, +as just computed in the \%\f3GL_UNPACK_ROW_LENGTH\fP section. +.TP +\%\f3GL_UNPACK_ALIGNMENT\fP +Specifies the alignment requirements for the start of each pixel row in memory. +The allowable values are +1 (byte-alignment), +2 (rows aligned to even-numbered bytes), +4 (word-alignment), and +8 (rows start on double-word boundaries). +.P +The following table gives the type, +initial value, +and range of valid values for each storage parameter +that can be set with \%\f3glPixelStore\fP. +.sp + +.TS +center tab(:) delim($$) ; +lb cb cb cb +l c c c. +_ +\f2pname\fP:Type:Initial Value:Valid Range +_ +\%\f3GL_PACK_SWAP_BYTES\fP:boolean:false:true or false +\%\f3GL_PACK_LSB_FIRST\fP:boolean:false:true or false +\%\f3GL_PACK_ROW_LENGTH\fP:integer:0:[0,\(if) +\%\f3GL_PACK_IMAGE_HEIGHT\fP:integer:0:[0, \(if) +\%\f3GL_PACK_SKIP_ROWS\fP:integer:0:[0,\(if) +\%\f3GL_PACK_SKIP_PIXELS\fP:integer:0:[0,\(if) +\%\f3GL_PACK_SKIP_IMAGES\fP:integer:0:[0,\(if) +\%\f3GL_PACK_ALIGNMENT\fP:integer:4:1, 2, 4, or 8 +_ +\%\f3GL_UNPACK_SWAP_BYTES\fP:boolean:false:true or false +\%\f3GL_UNPACK_LSB_FIRST\fP:boolean:false:true or false +\%\f3GL_UNPACK_ROW_LENGTH\fP:integer:0:[0,\(if) +\%\f3GL_UNPACK_IMAGE_HEIGHT\fP:integer:0:[0,\(if) +\%\f3GL_UNPACK_SKIP_ROWS\fP:integer:0:[0,\(if) +\%\f3GL_UNPACK_SKIP_PIXELS\fP:integer:0:[0,\(if) +\%\f3GL_UNPACK_SKIP_IMAGES\fP:integer:0:[0,\(if) +\%\f3GL_UNPACK_ALIGNMENT\fP:integer:4:1, 2, 4, or 8 +_ +.TE + +.sp +\%\f3glPixelStoref\fP can be used to set any pixel store parameter. +If the parameter type is boolean, +then if \f2param\fP is 0, +the parameter is false; +otherwise it is set to true. +If \f2pname\fP is a integer type parameter, +\f2param\fP is rounded to the nearest integer. +.P +Likewise, \%\f3glPixelStorei\fP can also be used to set any of the +pixel store parameters. +Boolean parameters are set to false if \f2param\fP is 0 and true otherwise. +.SH NOTES +The pixel storage modes in effect when +\%\f3glDrawPixels\fP, +\%\f3glReadPixels\fP, +\%\f3glTexImage1D\fP, +\%\f3glTexImage2D\fP, +\%\f3glTexImage3D\fP, +\%\f3glTexSubImage1D\fP, +\%\f3glTexSubImage2D\fP, +\%\f3glTexSubImage3D\fP, +\%\f3glBitmap\fP, +or \%\f3glPolygonStipple\fP is placed in a display list control the interpretation +of memory data. +Likewise, if the \%\f3GL_ARB_imaging\fP extension is supported, the pixel +storage modes in effect when +\%\f3glColorTable\fP, +\%\f3glColorSubTable\fP, +\%\f3glConvolutionFilter1D\fP, +\%\f3glConvolutionFilter2D\fP, of +\%\f3glSeparableFilter2D\fP is placed in a display list control the +intrepretation of memory data. +The pixel storage modes in effect when a display list is executed are +not significant. +.P +Pixel storage modes are client state and must be pushed and restored +using +.br +\%\f3glPushClientAttrib\fP and \%\f3glPopClientAttrib\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2pname\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if a negative row length, +pixel skip, +or row skip value is specified, +or if alignment is specified as other than 1, 2, 4, or 8. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPixelStore\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_PACK_SWAP_BYTES\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PACK_LSB_FIRST\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PACK_ROW_LENGTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PACK_IMAGE_HEIGHT\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PACK_SKIP_ROWS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PACK_SKIP_PIXELS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PACK_SKIP_IMAGES\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PACK_ALIGNMENT\fP +.br +\%\f3glGet\fP with argument \%\f3GL_UNPACK_SWAP_BYTES\fP +.br +\%\f3glGet\fP with argument \%\f3GL_UNPACK_LSB_FIRST\fP +.br +\%\f3glGet\fP with argument \%\f3GL_UNPACK_ROW_LENGTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_UNPACK_IMAGE_HEIGHT\fP +.br +\%\f3glGet\fP with argument \%\f3GL_UNPACK_SKIP_ROWS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_UNPACK_SKIP_PIXELS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_UNPACK_SKIP_IMAGES\fP +.br +\%\f3glGet\fP with argument \%\f3GL_UNPACK_ALIGNMENT\fP +.SH SEE ALSO +\%\f3glBitmap(3G)\fP, +\%\f3glColorTable(3G)\fP, +\%\f3glColorSubTable(3G)\fP, +\%\f3glConvolutionFilter1D(3G)\fP, +\%\f3glConvolutionFilter2D(3G)\fP, +\%\f3glSeparableFilter2D(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glHistogram(3G)\fP, +\%\f3glMinmax(3G)\fP, +\%\f3glPixelMap(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glPixelZoom(3G)\fP, +\%\f3glPolygonStipple(3G)\fP, +\%\f3glPushClientAttrib(3G)\fP, +\%\f3glReadPixels(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP Index: xc/doc/man/GL/gl/pixeltransfer.3gl diff -u /dev/null xc/doc/man/GL/gl/pixeltransfer.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/pixeltransfer.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,438 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 pixeltran +.ds Xs 52457 17 pixeltransfer.gl +.TH GLPIXELTRANSFER 3G +.SH NAME +.B "glPixelTransferf, glPixelTransferi +\- set pixel transfer modes + +.SH C SPECIFICATION +void \f3glPixelTransferf\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglPixelTransferf( 'u + GLfloat \fIparam\fP ) +.fi +void \f3glPixelTransferi\fP( +GLenum \fIpname\fP, +.nf +.ta \w'\f3void \fPglPixelTransferi( 'u + GLint \fIparam\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2pname\fP\ \ 'u +\f2pname\fP +Specifies the symbolic name of the pixel transfer parameter to be set. +Must be one of the following: +\%\f3GL_MAP_COLOR\fP, +\%\f3GL_MAP_STENCIL\fP, +\%\f3GL_INDEX_SHIFT\fP, +\%\f3GL_INDEX_OFFSET\fP, +\%\f3GL_RED_SCALE\fP, +\%\f3GL_RED_BIAS\fP, +\%\f3GL_GREEN_SCALE\fP, +\%\f3GL_GREEN_BIAS\fP, +\%\f3GL_BLUE_SCALE\fP, +\%\f3GL_BLUE_BIAS\fP, +\%\f3GL_ALPHA_SCALE\fP, +\%\f3GL_ALPHA_BIAS\fP, +\%\f3GL_DEPTH_SCALE\fP, or +\%\f3GL_DEPTH_BIAS\fP. +.IP +Additionally, if the \%\f3GL_ARB_imaging\fP extension is supported, the +following symbolic names are accepted: +\%\f3GL_POST_COLOR_MATRIX_RED_SCALE\fP, +\%\f3GL_POST_COLOR_MATRIX_GREEN_SCALE\fP, +\%\f3GL_POST_COLOR_MATRIX_BLUE_SCALE\fP, +\%\f3GL_POST_COLOR_MATRIX_ALPHA_SCALE\fP, +\%\f3GL_POST_COLOR_MATRIX_RED_BIAS\fP, +\%\f3GL_POST_COLOR_MATRIX_GREEN_BIAS\fP, +\%\f3GL_POST_COLOR_MATRIX_BLUE_BIAS\fP, +\%\f3GL_POST_COLOR_MATRIX_ALPHA_BIAS\fP, +\%\f3GL_POST_CONVOLUTION_RED_SCALE\fP, +\%\f3GL_POST_CONVOLUTION_GREEN_SCALE\fP, +\%\f3GL_POST_CONVOLUTION_BLUE_SCALE\fP, +\%\f3GL_POST_CONVOLUTION_ALPHA_SCALE\fP, +\%\f3GL_POST_CONVOLUTION_RED_BIAS\fP, +\%\f3GL_POST_CONVOLUTION_GREEN_BIAS\fP, +\%\f3GL_POST_CONVOLUTION_BLUE_BIAS\fP, and +\%\f3GL_POST_CONVOLUTION_ALPHA_BIAS\fP. +.TP +\f2param\fP +Specifies the value that \f2pname\fP is set to. +.SH DESCRIPTION +\%\f3glPixelTransfer\fP sets pixel transfer modes that affect the operation of subsequent +\%\f3glCopyPixels\fP, +\%\f3glCopyTexImage1D\fP, +\%\f3glCopyTexImage2D\fP, +\%\f3glCopyTexSubImage1D\fP, +\%\f3glCopyTexSubImage2D\fP, +\%\f3glCopyTexSubImage3D\fP, +\%\f3glDrawPixels\fP, +\%\f3glReadPixels\fP, +\%\f3glTexImage1D\fP, +\%\f3glTexImage2D\fP, +\%\f3glTexImage3D\fP, +\%\f3glTexSubImage1D\fP, +\%\f3glTexSubImage2D\fP, and +\%\f3glTexSubImage3D\fP commands. +Additionally, if the \%\f3GL_ARB_imaging\fP subset is supported, the +routines +\%\f3glColorTable\fP, +\%\f3glColorSubTable\fP, +\%\f3glConvolutionFilter1D\fP, +\%\f3glConvolutionFilter2D\fP, +\%\f3glHistogram\fP, +\%\f3glMinmax\fP, and +\%\f3glSeparableFilter2D\fP are also affected. +The algorithms that are specified by pixel transfer modes operate on +pixels after they are read from the frame buffer +(\%\f3glCopyPixels\fP +\%\f3glCopyTexImage1D\fP, +\%\f3glCopyTexImage2D\fP, +\%\f3glCopyTexSubImage1D\fP, +\%\f3glCopyTexSubImage2D\fP, +\%\f3glCopyTexSubImage3D\fP, and +\%\f3glReadPixels\fP), +or unpacked from client memory +(\%\f3glDrawPixels\fP, \%\f3glTexImage1D\fP, \%\f3glTexImage2D\fP, \%\f3glTexImage3D\fP, +\%\f3glTexSubImage1D\fP, \%\f3glTexSubImage2D\fP, and \%\f3glTexSubImage3D\fP). +Pixel transfer operations happen in the same order, +and in the same manner, +regardless of the command that resulted in the pixel operation. +Pixel storage modes +(see \%\f3glPixelStore\fP) +control the unpacking of pixels being read from client memory, +and the packing of pixels being written back into client memory. +.P +Pixel transfer operations handle four fundamental pixel types: +\f2color\fP, +\f2color index\fP, +\f2depth\fP, and +\f2stencil\fP. +\f2Color\fP pixels consist of four floating-point values +with unspecified mantissa and exponent sizes, +scaled such that 0 represents zero intensity +and 1 represents full intensity. +\f2Color indices\fP comprise a single fixed-point value, +with unspecified precision to the right of the binary point. +\f2Depth\fP pixels comprise a single floating-point value, +with unspecified mantissa and exponent sizes, +scaled such that 0.0 represents the minimum depth buffer value, +and 1.0 represents the maximum depth buffer value. +Finally, +\f2stencil\fP pixels comprise a single fixed-point value, +with unspecified precision to the right of the binary point. +.BP +.P +The pixel transfer operations performed on the four basic pixel types are +as follows: +.TP 12 +Color +Each of the four color components is multiplied by a scale factor, +then added to a bias factor. +That is, +the red component is multiplied by \%\f3GL_RED_SCALE\fP, +then added to \%\f3GL_RED_BIAS\fP; +the green component is multiplied by \%\f3GL_GREEN_SCALE\fP, +then added to \%\f3GL_GREEN_BIAS\fP; +the blue component is multiplied by \%\f3GL_BLUE_SCALE\fP, +then added to \%\f3GL_BLUE_BIAS\fP; and +the alpha component is multiplied by \%\f3GL_ALPHA_SCALE\fP, +then added to \%\f3GL_ALPHA_BIAS\fP. +After all four color components are scaled and biased, +each is clamped to the range [0,1]. +All color, scale, and bias values are specified with \%\f3glPixelTransfer\fP. +.IP +If \%\f3GL_MAP_COLOR\fP is true, +each color component is scaled by the size of the corresponding +color-to-color map, +then replaced by the contents of that map indexed by the scaled component. +That is, +the red component is scaled by \%\f3GL_PIXEL_MAP_R_TO_R_SIZE\fP, +then replaced by the contents of \%\f3GL_PIXEL_MAP_R_TO_R\fP indexed by itself. +The green component is scaled by \%\f3GL_PIXEL_MAP_G_TO_G_SIZE\fP, +then replaced by the contents of \%\f3GL_PIXEL_MAP_G_TO_G\fP indexed by itself. +The blue component is scaled by \%\f3GL_PIXEL_MAP_B_TO_B_SIZE\fP, +then replaced by the contents of \%\f3GL_PIXEL_MAP_B_TO_B\fP indexed by itself. +And +the alpha component is scaled by \%\f3GL_PIXEL_MAP_A_TO_A_SIZE\fP, +then replaced by the contents of \%\f3GL_PIXEL_MAP_A_TO_A\fP indexed by itself. +All components taken from the maps are then clamped to the range [0,1]. +\%\f3GL_MAP_COLOR\fP is specified with \%\f3glPixelTransfer\fP. +The contents of the various maps are specified with \%\f3glPixelMap\fP. +.IP +If the \%\f3GL_ARB_imaging\fP extension is supported, each of the four +color components may be scaled and biased after tranformation by the +color matrix. +That is, +the red component is multiplied by \%\f3GL_POST_COLOR_MATRIX_RED_SCALE\fP, +then added to \%\f3GL_POST_COLOR_MATRIX_RED_BIAS\fP; +the green component is multiplied by \%\f3GL_POST_COLOR_MATRIX_GREEN_SCALE\fP, +then added to \%\f3GL_POST_COLOR_MATRIX_GREEN_BIAS\fP; +the blue component is multiplied by \%\f3GL_POST_COLOR_MATRIX_BLUE_SCALE\fP, +then added to \%\f3GL_POST_COLOR_MATRIX_BLUE_BIAS\fP; and +the alpha component is multiplied by \%\f3GL_POST_COLOR_MATRIX_ALPHA_SCALE\fP, +then added to \%\f3GL_POST_COLOR_MATRIX_ALPHA_BIAS\fP. +After all four color components are scaled and biased, +each is clamped to the range [0,1]. +.IP +Similiarly, if the \%\f3GL_ARB_imaging\fP extension is supported, each of +the four color components may be scaled and biased after processing by +the enabled convolution filter. +That is, +the red component is multiplied by \%\f3GL_POST_CONVOLUTION_RED_SCALE\fP, +then added to \%\f3GL_POST_CONVOLUTION_RED_BIAS\fP; +the green component is multiplied by \%\f3GL_POST_CONVOLUTION_GREEN_SCALE\fP, +then added to \%\f3GL_POST_CONVOLUTION_GREEN_BIAS\fP; +the blue component is multiplied by \%\f3GL_POST_CONVOLUTION_BLUE_SCALE\fP, +then added to \%\f3GL_POST_CONVOLUTION_BLUE_BIAS\fP; and +the alpha component is multiplied by \%\f3GL_POST_CONVOLUTION_ALPHA_SCALE\fP, +then added to \%\f3GL_POST_CONVOLUTION_ALPHA_BIAS\fP. +After all four color components are scaled and biased, +each is clamped to the range [0,1]. +.TP +Color index +Each color index is shifted left by \%\f3GL_INDEX_SHIFT\fP bits; any bits +beyond the number of fraction bits carried +by the fixed-point index are filled with zeros. +If \%\f3GL_INDEX_SHIFT\fP is negative, +the shift is to the right, +again zero filled. +Then \%\f3GL_INDEX_OFFSET\fP is added to the index. +\%\f3GL_INDEX_SHIFT\fP and \%\f3GL_INDEX_OFFSET\fP are specified with +.br +\%\f3glPixelTransfer\fP. +.IP +From this point, operation diverges depending on the required of +the resulting pixels. +If the resulting pixels are to be written to a color index buffer, +or if they are being read back to client memory in \%\f3GL_COLOR_INDEX\fP , +the pixels continue to be treated as indices. +If \%\f3GL_MAP_COLOR\fP is true, +each index is masked by $2 sup n ~-~ 1$, +where $n$ is \%\f3GL_PIXEL_MAP_I_TO_I_SIZE\fP, +then replaced by the contents of \%\f3GL_PIXEL_MAP_I_TO_I\fP indexed by the +masked value. +\%\f3GL_MAP_COLOR\fP is specified with \%\f3glPixelTransfer\fP. +The contents of the index map is specified with \%\f3glPixelMap\fP. +.IP +If the resulting pixels are to be written to an RGBA color buffer, +or if they are read back to client memory in a other than +\%\f3GL_COLOR_INDEX\fP, +the pixels are converted from indices to colors by referencing the +four maps +\%\f3GL_PIXEL_MAP_I_TO_R\fP, +\%\f3GL_PIXEL_MAP_I_TO_G\fP, +\%\f3GL_PIXEL_MAP_I_TO_B\fP, and +\%\f3GL_PIXEL_MAP_I_TO_A\fP. +Before being dereferenced, +the index is masked by $2 sup n ~-~ 1$, +where $n$ is +\%\f3GL_PIXEL_MAP_I_TO_R_SIZE\fP for the red map, +\%\f3GL_PIXEL_MAP_I_TO_G_SIZE\fP for the green map, +\%\f3GL_PIXEL_MAP_I_TO_B_SIZE\fP for the blue map, and +\%\f3GL_PIXEL_MAP_I_TO_A_SIZE\fP for the alpha map. +All components taken from the maps are then clamped to the range [0,1]. +The contents of the four maps is specified with \%\f3glPixelMap\fP. +.TP +Depth +Each depth value is multiplied by \%\f3GL_DEPTH_SCALE\fP, +added to \%\f3GL_DEPTH_BIAS\fP, +then clamped to the range [0,1]. +.TP +Stencil +Each index is shifted \%\f3GL_INDEX_SHIFT\fP bits just as a color index is, +then added to \%\f3GL_INDEX_OFFSET\fP. +If \%\f3GL_MAP_STENCIL\fP is true, +each index is masked by $2 sup n ~-~ 1$, +where $n$ is \%\f3GL_PIXEL_MAP_S_TO_S_SIZE\fP, +then replaced by the contents of \%\f3GL_PIXEL_MAP_S_TO_S\fP indexed by the +masked value. +.P +The following table gives the type, +initial value, +and range of valid values for each of the pixel transfer parameters +that are set with \%\f3glPixelTransfer\fP. +.sp + +.TS +center tab(:); +lb cb cb cb +l c c c. +_ +\f2pname\fP:Type:Initial Value:Valid Range +_ +\%\f3GL_MAP_COLOR\fP:boolean:false:true/false +\%\f3GL_MAP_STENCIL\fP:boolean:false:true/false +\%\f3GL_INDEX_SHIFT\fP:integer:0:(-\(if,\(if) +\%\f3GL_INDEX_OFFSET\fP:integer:0:(-\(if,\(if) +\%\f3GL_RED_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_GREEN_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_BLUE_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_ALPHA_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_DEPTH_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_RED_BIAS\fP:float:0:(-\(if,\(if) +\%\f3GL_GREEN_BIAS\fP:float:0:(-\(if,\(if) +\%\f3GL_BLUE_BIAS\fP:float:0:(-\(if,\(if) +\%\f3GL_ALPHA_BIAS\fP:float:0:(-\(if,\(if) +\%\f3GL_DEPTH_BIAS\fP:float:0:(-\(if,\(if) +\%\f3GL_POST_COLOR_MATRIX_RED_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_POST_COLOR_MATRIX_GREEN_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_POST_COLOR_MATRIX_BLUE_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_POST_COLOR_MATRIX_ALPHA_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_POST_COLOR_MATRIX_RED_BIAS\fP:float:0:(-\(if,\(if) +\%\f3GL_POST_COLOR_MATRIX_GREEN_BIAS\fP:float:0:(-\(if,\(if) +\%\f3GL_POST_COLOR_MATRIX_BLUE_BIAS\fP:float:0:(-\(if,\(if) +\%\f3GL_POST_COLOR_MATRIX_ALPHA_BIAS\fP:float:0:(-\(if,\(if) +\%\f3GL_POST_CONVOLUTION_RED_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_POST_CONVOLUTION_GREEN_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_POST_CONVOLUTION_BLUE_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_POST_CONVOLUTION_ALPHA_SCALE\fP:float:1:(-\(if,\(if) +\%\f3GL_POST_CONVOLUTION_RED_BIAS\fP:float:0:(-\(if,\(if) +\%\f3GL_POST_CONVOLUTION_GREEN_BIAS\fP:float:0:(-\(if,\(if) +\%\f3GL_POST_CONVOLUTION_BLUE_BIAS\fP:float:0:(-\(if,\(if) +\%\f3GL_POST_CONVOLUTION_ALPHA_BIAS\fP:float:0:(-\(if,\(if) +_ +.TE + +.sp +\%\f3glPixelTransferf\fP can be used to set any pixel transfer parameter. +If the parameter type is boolean, +0 implies false and any other value implies true. +If \f2pname\fP is an integer parameter, +\f2param\fP is rounded to the nearest integer. +.P +Likewise, +\%\f3glPixelTransferi\fP can be used to set any of the +pixel transfer parameters. +Boolean parameters are set to false if \f2param\fP is 0 and to true otherwise. +\f2param\fP is converted to floating point before being assigned to real-valued parameters. +.SH NOTES +If a +\%\f3glColorTable\fP, +\%\f3glColorSubTable\fP, +\%\f3glConvolutionFilter1D\fP, +\%\f3glConvolutionFilter2D\fP, +\%\f3glCopyPixels\fP, +\%\f3glCopyTexImage1D\fP, +\%\f3glCopyTexImage2D\fP, +\%\f3glCopyTexSubImage1D\fP, +\%\f3glCopyTexSubImage2D\fP, +\%\f3glCopyTexSubImage3D\fP, +\%\f3glDrawPixels\fP, +\%\f3glReadPixels\fP, +\%\f3glSeparableFilter2D\fP, +\%\f3glTexImage1D\fP, +\%\f3glTexImage2D\fP, +\%\f3glTexImage3D\fP, +\%\f3glTexSubImage1D\fP, +\%\f3glTexSubImage2D\fP, or +\%\f3glTexSubImage3D\fP. +command is placed in a display list +(see \%\f3glNewList\fP and \%\f3glCallList\fP), +the pixel transfer mode settings in effect when the display list is +.I executed +are the ones that are used. +They may be different from the settings when the command was compiled +into the display list. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2pname\fP is not an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPixelTransfer\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MAP_COLOR\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAP_STENCIL\fP +.br +\%\f3glGet\fP with argument \%\f3GL_INDEX_SHIFT\fP +.br +\%\f3glGet\fP with argument \%\f3GL_INDEX_OFFSET\fP +.br +\%\f3glGet\fP with argument \%\f3GL_RED_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_RED_BIAS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_GREEN_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_GREEN_BIAS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_BLUE_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_BLUE_BIAS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_ALPHA_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_ALPHA_BIAS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_DEPTH_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_DEPTH_BIAS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_COLOR_MATRIX_RED_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_COLOR_MATRIX_RED_BIAS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_COLOR_MATRIX_GREEN_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_COLOR_MATRIX_GREEN_BIAS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_COLOR_MATRIX_BLUE_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_COLOR_MATRIX_BLUE_BIAS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_COLOR_MATRIX_ALPHA_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_COLOR_MATRIX_ALPHA_BIAS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_CONVOLUTION_RED_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_CONVOLUTION_RED_BIAS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_CONVOLUTION_GREEN_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_CONVOLUTION_GREEN_BIAS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_CONVOLUTION_BLUE_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_CONVOLUTION_BLUE_BIAS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_CONVOLUTION_ALPHA_SCALE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_POST_CONVOLUTION_ALPHA_BIAS\fP +.SH SEE ALSO +\%\f3glCallList(3G)\fP, +\%\f3glColorTable(3G)\fP, +\%\f3glColorSubTable(3G)\fP, +\%\f3glConvolutionFilter1D(3G)\fP, +\%\f3glConvolutionFilter2D(3G)\fP, +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glNewList(3G)\fP, +\%\f3glPixelMap(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelZoom(3G)\fP, +\%\f3glReadPixels(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP Index: xc/doc/man/GL/gl/pixelzoom.3gl diff -u /dev/null xc/doc/man/GL/gl/pixelzoom.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/pixelzoom.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,60 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 pixelzoom +.ds Xs 46374 4 pixelzoom.gl +.TH GLPIXELZOOM 3G +.SH NAME +.B "glPixelZoom +\- specify the pixel zoom factors + +.SH C SPECIFICATION +void \f3glPixelZoom\fP( +GLfloat \fIxfactor\fP, +.nf +.ta \w'\f3void \fPglPixelZoom( 'u + GLfloat \fIyfactor\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2xfactor\fP\ \f2yfactor\fP\ \ 'u +\f2xfactor\fP, \f2yfactor\fP +Specify the $x$ and $y$ zoom factors for pixel write operations. +.SH DESCRIPTION +\%\f3glPixelZoom\fP specifies values for the $x$ and $y$ zoom factors. +During the execution of \%\f3glDrawPixels\fP or \%\f3glCopyPixels\fP, +if ($xr $, $yr $) is the current raster position, +and a given element is in the $m$th row and $n$th column of the pixel rectangle, +then pixels whose centers are in the rectangle with corners at +.sp +.ce +($xr ~+~ n cdot "xfactor"$, $yr ~+~ m cdot "yfactor"$) +.sp +.ce +($xr ~+~ (n+1) cdot "xfactor"$, $yr ~+~ (m+1) cdot "yfactor"$) +.sp +are candidates for replacement. +Any pixel whose center lies on the bottom or left edge of this rectangular +region is also modified. +.P +Pixel zoom factors are not limited to positive values. +Negative zoom factors reflect the resulting image about the current +raster position. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPixelZoom\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_ZOOM_X\fP +.br +\%\f3glGet\fP with argument \%\f3GL_ZOOM_Y\fP +.SH SEE ALSO +\%\f3glCopyPixels(3G)\fP, +\%\f3glDrawPixels(3G)\fP Index: xc/doc/man/GL/gl/pointsize.3gl diff -u /dev/null xc/doc/man/GL/gl/pointsize.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/pointsize.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,128 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 pointsize +.ds Xs 46128 6 pointsize.gl +.TH GLPOINTSIZE 3G +.SH NAME +.B "glPointSize +\- specify the diameter of rasterized points + +.SH C SPECIFICATION +void \f3glPointSize\fP( +GLfloat \fIsize\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2size\fP\ \ 'u +\f2size\fP +Specifies the diameter of rasterized points. +The initial value is 1. +.SH DESCRIPTION +\%\f3glPointSize\fP specifies the rasterized diameter of both aliased and antialiased +points. +Using a point size other than 1 has different effects, +depending on whether point antialiasing is enabled. +To enable and disable point antialiasing, call +\%\f3glEnable\fP and \%\f3glDisable\fP +with argument \%\f3GL_POINT_SMOOTH\fP. Point antialiasing is initially disabled. +.P +If point antialiasing is disabled, +the actual size is determined by rounding the supplied size +to the nearest integer. +(If the rounding results in the value 0, +it is as if the point size were 1.) +If the rounded size is odd, +then the center point +($ x $, $ y $) +of the pixel fragment that represents the point is computed as +.sp +.ce +( $ \(lf ~ x sub w ~ \(rf ~+~ .5 $, $ \(lf ~ y sub w ~ \(rf ~+~ .5 $) +.sp +where $w$ subscripts indicate window coordinates. +All pixels that lie within the square grid of the rounded size centered at +($ x $, $ y $) +make up the fragment. +If the size is even, +the center point is +.sp +.ce +( $ \(lf ~ x sub w ~+~ .5 ~ \(rf$, $ \(lf ~ y sub w ~+~ .5 ~ \(rf $) +.sp +and the rasterized fragment's centers are the half-integer window coordinates +within the square of the rounded size centered at +($ x $, $ y $). +All pixel fragments produced in rasterizing a nonantialiased point are +assigned the same associated data, +that of the vertex corresponding to the point. +.P +If antialiasing is enabled, +then point rasterization produces a fragment for each pixel square +that intersects the region lying within the circle having diameter +equal to the current point size and centered at the point's +($ x sub w $, $ y sub w $). +The coverage value for each fragment is the window coordinate area +of the intersection of the circular region with the corresponding pixel square. +This value is saved and used in the final rasterization step. +The data associated with each fragment is the data associated with +the point being rasterized. +.P +Not all sizes are supported when point antialiasing is enabled. +If an unsupported size is requested, +the nearest supported size is used. +Only size 1 is guaranteed to be supported; +others depend on the implementation. +To query the range of supported sizes and the size difference between +supported sizes within the range, call +\%\f3glGet\fP with arguments +\%\f3GL_SMOOTH_POINT_SIZE_RANGE\fP and +\%\f3GL_SMOOTH_POINT_SIZE_GRANULARITY\fP. +For aliased points, query the supported ranges and granularity with +\%\f3glGet\fP with arguments +\%\f3GL_ALIASED_POINT_SIZE_RANGE\fP and +\%\f3GL_ALIASED_POINT_SIZE_GRANULARITY\fP. +.SH NOTES +The point size specified by \%\f3glPointSize\fP is always returned when \%\f3GL_POINT_SIZE\fP +is queried. +Clamping and rounding for aliased and antialiased points have no effect +on the specified value. +.P +A non-antialiased point size may be clamped to an implementation-dependent +maximum. +Although this maximum cannot be queried, +it must be no less than the maximum value for antialiased points, +rounded to the nearest integer value. +.P +\%\f3GL_POINT_SIZE_RANGE\fP and \%\f3GL_POINT_SIZE_GRANULARITY\fP are +deprecated in GL versions 1.2 and greater. Their functionality has been +replaced by \%\f3GL_SMOOTH_POINT_SIZE_RANGE\fP and +\%\f3GL_SMOOTH_POINT_SIZE_GRANULARITY\fP. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2size\fP is less than or equal to 0. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPointSize\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_POINT_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_ALIASED_POINT_SIZE_RANGE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_ALIASED_POINT_SIZE_GRANULARITY\fP +.br +\%\f3glGet\fP with argument \%\f3GL_SMOOTH_POINT_SIZE_RANGE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_SMOOTH_POINT_SIZE_GRANULARITY\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_POINT_SMOOTH\fP +.SH SEE ALSO +\%\f3glEnable(3G)\fP Index: xc/doc/man/GL/gl/polygonmode.3gl diff -u /dev/null xc/doc/man/GL/gl/polygonmode.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/polygonmode.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,103 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 polygonmo +.ds Xs 24991 5 polygonmode.gl +.TH GLPOLYGONMODE 3G +.SH NAME +.B "glPolygonMode +\- select a polygon rasterization mode + +.SH C SPECIFICATION +void \f3glPolygonMode\fP( +GLenum \fIface\fP, +.nf +.ta \w'\f3void \fPglPolygonMode( 'u + GLenum \fImode\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2face\fP\ \ 'u +\f2face\fP +Specifies the polygons that \f2mode\fP applies to. +Must be +\%\f3GL_FRONT\fP for front-facing polygons, +\%\f3GL_BACK\fP for back-facing polygons, +or \%\f3GL_FRONT_AND_BACK\fP for front- and back-facing polygons. +.TP +\f2mode\fP +Specifies how polygons will be rasterized. +Accepted values are +\%\f3GL_POINT\fP, +\%\f3GL_LINE\fP, and +\%\f3GL_FILL\fP. +The initial value is \%\f3GL_FILL\fP for both front- and back-facing polygons. +.SH DESCRIPTION +\%\f3glPolygonMode\fP controls the interpretation of polygons for rasterization. +\f2face\fP describes which polygons \f2mode\fP applies to: +front-facing polygons (\%\f3GL_FRONT\fP), +back-facing polygons (\%\f3GL_BACK\fP), +or both (\%\f3GL_FRONT_AND_BACK\fP). +The polygon mode affects only the final rasterization of polygons. +In particular, +a polygon's vertices are lit and +the polygon is clipped and possibly culled before these modes are applied. +.P +Three modes are defined and can be specified in \f2mode\fP: +.TP 14 +\%\f3GL_POINT\fP +Polygon vertices that are marked as the start of a boundary edge +are drawn as points. +Point attributes such as +\%\f3GL_POINT_SIZE\fP and +\%\f3GL_POINT_SMOOTH\fP control +the rasterization of the points. +Polygon rasterization attributes other than \%\f3GL_POLYGON_MODE\fP have no effect. +.TP +\%\f3GL_LINE\fP +Boundary edges of the polygon are drawn as line segments. +They are treated as connected line segments for line stippling; +the line stipple counter and pattern are not reset between segments +(see \%\f3glLineStipple\fP). +Line attributes such as +\%\f3GL_LINE_WIDTH\fP and +\%\f3GL_LINE_SMOOTH\fP control +the rasterization of the lines. +Polygon rasterization attributes other than \%\f3GL_POLYGON_MODE\fP have no effect. +.TP +\%\f3GL_FILL\fP +The interior of the polygon is filled. +Polygon attributes such as +\%\f3GL_POLYGON_STIPPLE\fP and +\%\f3GL_POLYGON_SMOOTH\fP control the rasterization of the polygon. +.SH EXAMPLES +To draw a surface with filled back-facing polygons +and outlined front-facing polygons, +call +.Ex 1 +glPolygonMode(\%\f3GL_FRONT\fP, \%\f3GL_LINE\fP); +.Ee +.SH NOTES +Vertices are marked as boundary or nonboundary with an edge flag. +Edge flags are generated internally by the GL when it decomposes +polygons; they can be set explicitly using \%\f3glEdgeFlag\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if either \f2face\fP or \f2mode\fP is not +an accepted value. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPolygonMode\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_POLYGON_MODE\fP +.SH SEE ALSO +\%\f3glBegin(3G)\fP, +\%\f3glEdgeFlag(3G)\fP, +\%\f3glLineStipple(3G)\fP, +\%\f3glLineWidth(3G)\fP, +\%\f3glPointSize(3G)\fP, +\%\f3glPolygonStipple(3G)\fP Index: xc/doc/man/GL/gl/polygonoffset.3gl diff -u /dev/null xc/doc/man/GL/gl/polygonoffset.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/polygonoffset.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,73 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 polygonof +.ds Xs 10762 4 polygonoffset.gl +.TH GLPOLYGONOFFSET 3G +.SH NAME +.B "glPolygonOffset +\- set the scale and units used to calculate depth values + +.SH C SPECIFICATION +void \f3glPolygonOffset\fP( +GLfloat \fIfactor\fP, +.nf +.ta \w'\f3void \fPglPolygonOffset( 'u + GLfloat \fIunits\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2factor\fP\ \ 'u +\f2factor\fP +Specifies a scale factor that is used to create a variable +depth offset for each polygon. The initial value is 0. +.TP +\f2units\fP +Is multiplied by an implementation-specific value to +create a constant depth offset. The initial value is 0. +.SH DESCRIPTION +When \%\f3GL_POLYGON_OFFSET_FILL\fP, \%\f3GL_POLYGON_OFFSET_LINE\fP, or +\%\f3GL_POLYGON_OFFSET_POINT\fP is enabled, each +fragment's \f2depth\fP value will be offset after it is interpolated +from the \f2depth\fP values of the appropriate vertices. +The value of the offset is $"factor" ~*~ DZ ~~+~~ r ~*~ "units"$, +where $DZ~$ is a measurement of the change in depth relative to the screen +area of the polygon, and $r$ is the smallest value that is guaranteed to +produce a resolvable offset for a given implementation. +The offset is added before the depth test is performed and before +the value is written into the depth buffer. +.P +\%\f3glPolygonOffset\fP is useful for rendering hidden-line images, for applying decals +to surfaces, and for rendering solids with highlighted edges. +.SH NOTES +\%\f3glPolygonOffset\fP is available only if the GL version is 1.1 or greater. +.P +\%\f3glPolygonOffset\fP has no effect on depth coordinates placed in the +feedback buffer. +.P +\%\f3glPolygonOffset\fP has no effect on selection. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPolygonOffset\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.bp +.SH ASSOCIATED GETS +\%\f3glIsEnabled\fP with argument +\%\f3GL_POLYGON_OFFSET_FILL\fP, +\%\f3GL_POLYGON_OFFSET_LINE\fP, +or \%\f3GL_POLYGON_OFFSET_POINT\fP. +.P +\%\f3glGet\fP with argument \%\f3GL_POLYGON_OFFSET_FACTOR\fP or +\%\f3GL_POLYGON_OFFSET_UNITS\fP. +.SH SEE ALSO +\%\f3glDepthFunc(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glGet(3G)\fP, +\%\f3glIsEnabled(3G)\fP Index: xc/doc/man/GL/gl/polygonstipple.3gl diff -u /dev/null xc/doc/man/GL/gl/polygonstipple.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/polygonstipple.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,80 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 polygonst +.ds Xs 22714 4 polygonstipple.gl +.TH GLPOLYGONSTIPPLE 3G +.SH NAME +.B "glPolygonStipple +\- set the polygon stippling pattern + +.SH C SPECIFICATION +void \f3glPolygonStipple\fP( +const GLubyte \fI*mask\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2mask\fP\ \ 'u +\f2mask\fP +Specifies a pointer to a $32 ~times~ 32$ stipple pattern that will be unpacked +from memory in the same way that \%\f3glDrawPixels\fP unpacks pixels. +.SH DESCRIPTION +Polygon stippling, +like line stippling +(see \%\f3glLineStipple\fP), +masks out certain fragments produced by rasterization, +creating a pattern. +Stippling is independent of polygon antialiasing. +.P +\f2mask\fP is a pointer to a $32 ~times~ 32$ stipple pattern that is stored +in memory just like the pixel data supplied to a \%\f3glDrawPixels\fP +call with +.I +height +and +.I width +both equal to 32, a pixel +of \%\f3GL_COLOR_INDEX\fP, and data type +of \%\f3GL_BITMAP\fP. +That is, +the stipple pattern is represented as a $32 ~times~ 32$ array +of 1-bit color indices packed in unsigned bytes. +\%\f3glPixelStore\fP parameters like \%\f3GL_UNPACK_SWAP_BYTES\fP +and \%\f3GL_UNPACK_LSB_FIRST\fP affect the assembling of the bits into a +stipple pattern. +Pixel transfer operations +(shift, offset, pixel map) +are not applied to the stipple image, +however. +.P +To enable and disable polygon stippling, call +\%\f3glEnable\fP and \%\f3glDisable\fP +with argument \%\f3GL_POLYGON_STIPPLE\fP. Polygon stippling is initially +disabled. If it's enabled, +a rasterized polygon fragment with window coordinates $x sub w$ and $y sub w$ +is sent to the next stage of the GL if and only if the +($x sub w~roman mod~32$)th bit in the ($y sub w~roman mod~32$)th row +of the stipple pattern is 1 (one). +When polygon stippling is disabled, it is as if the stipple pattern +consists of all 1's. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPolygonStipple\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetPolygonStipple\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_POLYGON_STIPPLE\fP +.SH SEE ALSO +\%\f3glDrawPixels(3G)\fP, +\%\f3glLineStipple(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP Index: xc/doc/man/GL/gl/prioritizetextures.3gl diff -u /dev/null xc/doc/man/GL/gl/prioritizetextures.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/prioritizetextures.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,83 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 prioritiz +.ds Xs 38862 5 prioritizetextures.gl +.TH GLPRIORITIZETEXTURES 3G +.SH NAME +.B "glPrioritizeTextures +\- set texture residence priority + +.SH C SPECIFICATION +void \f3glPrioritizeTextures\fP( +GLsizei \fIn\fP, +.nf +.ta \w'\f3void \fPglPrioritizeTextures( 'u + const GLuint \fI*textures\fP, + const GLclampf \fI*priorities\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIpriorities\fP\ \ 'u +\f2n\fP +Specifies the number of textures to be prioritized. +.TP +\f2textures\fP +Specifies an array containing the names of the textures to be prioritized. +.TP +\f2priorities\fP +Specifies an array containing the texture priorities. +A priority given in an element of \f2priorities\fP applies to the texture +named by the corresponding element of \f2textures\fP. +.SH DESCRIPTION +\%\f3glPrioritizeTextures\fP assigns the \f2n\fP texture priorities given in \f2priorities\fP to the +\f2n\fP textures named in \f2textures\fP. +.P +The GL establishes +a ``working set'' of textures that are resident in texture memory. +These textures may be bound to a texture target much more efficiently +than textures that are not resident. +By specifying a priority for each texture, +\%\f3glPrioritizeTextures\fP allows applications to guide the GL implementation in determining +which textures should be resident. +.P +The priorities given in \f2priorities\fP are clamped to the range [0,\1] +before they are assigned. +0 indicates the lowest priority; textures with priority 0 +are least likely to be resident. +1 indicates the highest priority; textures with priority 1 +are most likely to be resident. +However, textures are not guaranteed to be resident until they are used. +.P +\%\f3glPrioritizeTextures\fP silently ignores attempts to prioritize texture 0, or any texture +name that does not correspond to an existing texture. +.P +\%\f3glPrioritizeTextures\fP does not require that any of the textures named by \f2textures\fP +be bound to a texture target. +\%\f3glTexParameter\fP may also be used to set a texture's priority, +but only if the texture is currently bound. +This is the only way to set the priority of a default texture. +.SH NOTES +\%\f3glPrioritizeTextures\fP is available only if the GL version is 1.1 or greater. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2n\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPrioritizeTextures\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexParameter\fP with parameter name \%\f3GL_TEXTURE_PRIORITY\fP +retrieves the priority of a currently bound texture. +.SH SEE ALSO +\%\f3glAreTexturesResident(3G)\fP, +\%\f3glBindTexture(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP Index: xc/doc/man/GL/gl/pushattrib.3gl diff -u /dev/null xc/doc/man/GL/gl/pushattrib.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/pushattrib.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,267 @@ +'\" et +'\"! eqn|tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 pushattri +.ds Xs 21569 10 pushattrib.gl +.TH GLPUSHATTRIB 3G +.SH NAME +.B "glPushAttrib, glPopAttrib +\- push and pop the server attribute stack + +.SH C SPECIFICATION +void \f3glPushAttrib\fP( +GLbitfield \fImask\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2mask\fP\ \ 'u +\f2mask\fP +Specifies a mask that indicates which attributes to save. Values for +\f2mask\fP are listed below. +.SH C SPECIFICATION +void \f3glPopAttrib\fP( void ) +.nf +.fi + +.SH DESCRIPTION +\%\f3glPushAttrib\fP takes one argument, +a mask that indicates which groups of state variables +to save on the attribute stack. +Symbolic constants are used to set bits in the mask. +\f2mask\fP +is typically constructed by ORing several of these constants together. +The special mask +\%\f3GL_ALL_ATTRIB_BITS\fP +can be used to save all stackable states. +.P +The symbolic mask constants and their associated GL state are as follows +(the second column lists which attributes are saved): +.P +.TS +; +l l . +\%\f3GL_ACCUM_BUFFER_BIT\fP Accumulation buffer clear value + +\%\f3GL_COLOR_BUFFER_BIT\fP \%\f3GL_ALPHA_TEST\fP enable bit + Alpha test function and reference value + \%\f3GL_BLEND\fP enable bit + Blending source and destination functions + Constant blend color + Blending equation + \%\f3GL_DITHER\fP enable bit + \%\f3GL_DRAW_BUFFER\fP setting + \%\f3GL_COLOR_LOGIC_OP\fP enable bit + \%\f3GL_INDEX_LOGIC_OP\fP enable bit + Logic op function + Color mode and index mode clear values + Color mode and index mode writemasks + +\%\f3GL_CURRENT_BIT\fP Current RGBA color + Current color index + Current normal vector + Current texture coordinates + Current raster position + \%\f3GL_CURRENT_RASTER_POSITION_VALID\fP flag + RGBA color associated with current raster position + Color index associated with current raster position + Texture coordinates associated with current raster position + \%\f3GL_EDGE_FLAG\fP flag + +\%\f3GL_DEPTH_BUFFER_BIT\fP \%\f3GL_DEPTH_TEST\fP enable bit + Depth buffer test function + Depth buffer clear value + \%\f3GL_DEPTH_WRITEMASK\fP enable bit + +\%\f3GL_ENABLE_BIT\fP \%\f3GL_ALPHA_TEST\fP flag + \%\f3GL_AUTO_NORMAL\fP flag + \%\f3GL_BLEND\fP flag + Enable bits for the user-definable clipping planes + \%\f3GL_COLOR_MATERIAL\fP + \%\f3GL_CULL_FACE\fP flag + \%\f3GL_DEPTH_TEST\fP flag + \%\f3GL_DITHER\fP flag + \%\f3GL_FOG\fP flag + \%\f3GL_LIGHT\fP\f2i\fP where 0\ <= \f2i\fP<\%\f3GL_MAX_LIGHTS\fP + \%\f3GL_LIGHTING\fP flag + \%\f3GL_LINE_SMOOTH\fP flag + \%\f3GL_LINE_STIPPLE\fP flag + \%\f3GL_COLOR_LOGIC_OP\fP flag + \%\f3GL_INDEX_LOGIC_OP\fP flag + \%\f3GL_MAP1_\fP\f2x\fP where \f2x\fP is a map type + \%\f3GL_MAP2_\fP\f2x\fP where \f2x\fP is a map type + \%\f3GL_NORMALIZE\fP flag + \%\f3GL_POINT_SMOOTH\fP flag + \%\f3GL_POLYGON_OFFSET_LINE\fP flag + \%\f3GL_POLYGON_OFFSET_FILL\fP flag + \%\f3GL_POLYGON_OFFSET_POINT\fP flag + \%\f3GL_POLYGON_SMOOTH\fP flag + \%\f3GL_POLYGON_STIPPLE\fP flag + \%\f3GL_SCISSOR_TEST\fP flag + \%\f3GL_STENCIL_TEST\fP flag + \%\f3GL_TEXTURE_1D\fP flag + \%\f3GL_TEXTURE_2D\fP flag + \%\f3GL_TEXTURE_3D\fP flag + Flags \%\f3GL_TEXTURE_GEN_\fP\f2x\fP where \f2x\fP is S, T, R, or Q + +\%\f3GL_EVAL_BIT\fP \%\f3GL_MAP1_\fP\f2x\fP enable bits, where \f2x\fP is a map type + \%\f3GL_MAP2_\fP\f2x\fP enable bits, where \f2x\fP is a map type + 1D grid endpoints and divisions + 2D grid endpoints and divisions + \%\f3GL_AUTO_NORMAL\fP enable bit + +\%\f3GL_FOG_BIT\fP \%\f3GL_FOG\fP enable bit + Fog color + Fog density + Linear fog start + Linear fog end + Fog index + \%\f3GL_FOG_MODE\fP value + +\%\f3GL_HINT_BIT\fP \%\f3GL_PERSPECTIVE_CORRECTION_HINT\fP setting + \%\f3GL_POINT_SMOOTH_HINT\fP setting + \%\f3GL_LINE_SMOOTH_HINT\fP setting + \%\f3GL_POLYGON_SMOOTH_HINT\fP setting + \%\f3GL_FOG_HINT\fP setting + +\%\f3GL_LIGHTING_BIT\fP \%\f3GL_COLOR_MATERIAL\fP enable bit + \%\f3GL_COLOR_MATERIAL_FACE\fP value + Color material parameters that are tracking the current color + Ambient scene color + \%\f3GL_LIGHT_MODEL_LOCAL_VIEWER\fP value + \%\f3GL_LIGHT_MODEL_TWO_SIDE\fP setting + \%\f3GL_LIGHTING\fP enable bit + Enable bit for each light + Ambient, diffuse, and specular intensity for each light + Direction, position, exponent, and cutoff angle for each light + Constant, linear, and quadratic attenuation factors for each light + Ambient, diffuse, specular, and emissive color for each material + Ambient, diffuse, and specular color indices for each material + Specular exponent for each material + \%\f3GL_SHADE_MODEL\fP setting + +\%\f3GL_LINE_BIT\fP \%\f3GL_LINE_SMOOTH\fP flag + \%\f3GL_LINE_STIPPLE\fP enable bit + Line stipple pattern and repeat counter + Line width + +\%\f3GL_LIST_BIT\fP \%\f3GL_LIST_BASE\fP setting + +\%\f3GL_PIXEL_MODE_BIT\fP \%\f3GL_RED_BIAS\fP and \%\f3GL_RED_SCALE\fP settings + \%\f3GL_GREEN_BIAS\fP and \%\f3GL_GREEN_SCALE\fP values + \%\f3GL_BLUE_BIAS\fP and \%\f3GL_BLUE_SCALE\fP + \%\f3GL_ALPHA_BIAS\fP and \%\f3GL_ALPHA_SCALE\fP + \%\f3GL_DEPTH_BIAS\fP and \%\f3GL_DEPTH_SCALE\fP + \%\f3GL_INDEX_OFFSET\fP and \%\f3GL_INDEX_SHIFT\fP values + \%\f3GL_MAP_COLOR\fP and \%\f3GL_MAP_STENCIL\fP flags + \%\f3GL_ZOOM_X\fP and \%\f3GL_ZOOM_Y\fP factors + \%\f3GL_READ_BUFFER\fP setting + +\%\f3GL_POINT_BIT\fP \%\f3GL_POINT_SMOOTH\fP flag + Point size + +\%\f3GL_POLYGON_BIT\fP \%\f3GL_CULL_FACE\fP enable bit + \%\f3GL_CULL_FACE_MODE\fP value + \%\f3GL_FRONT_FACE\fP indicator + \%\f3GL_POLYGON_MODE\fP setting + \%\f3GL_POLYGON_SMOOTH\fP flag + \%\f3GL_POLYGON_STIPPLE\fP enable bit + \%\f3GL_POLYGON_OFFSET_FILL\fP flag + \%\f3GL_POLYGON_OFFSET_LINE\fP flag + \%\f3GL_POLYGON_OFFSET_POINT\fP flag + \%\f3GL_POLYGON_OFFSET_FACTOR\fP + \%\f3GL_POLYGON_OFFSET_UNITS\fP + +\%\f3GL_POLYGON_STIPPLE_BIT\fP Polygon stipple image + +\%\f3GL_SCISSOR_BIT\fP \%\f3GL_SCISSOR_TEST\fP flag + Scissor box + +\%\f3GL_STENCIL_BUFFER_BIT\fP \%\f3GL_STENCIL_TEST\fP enable bit + Stencil function and reference value + Stencil value mask + Stencil fail, pass, and depth buffer pass actions + Stencil buffer clear value + Stencil buffer writemask + +\%\f3GL_TEXTURE_BIT\fP Enable bits for the four texture coordinates + Border color for each texture image + Minification function for each texture image + Magnification function for each texture image + Texture coordinates and wrap mode for each texture image + Color and mode for each texture environment + Enable bits \%\f3GL_TEXTURE_GEN_\fP\f2x\fP, \f2x\fP is S, T, R, and Q + \%\f3GL_TEXTURE_GEN_MODE\fP setting for S, T, R, and Q + \%\f3glTexGen\fP plane equations for S, T, R, and Q + Current texture bindings (for example, \%\f3GL_TEXTURE_BINDING_2D\fP) + +\%\f3GL_TRANSFORM_BIT\fP Coefficients of the six clipping planes + Enable bits for the user-definable clipping planes + \%\f3GL_MATRIX_MODE\fP value + \%\f3GL_NORMALIZE\fP flag + \%\f3GL_RESCALE_NORMAL\fP flag + +\%\f3GL_VIEWPORT_BIT\fP Depth range (near and far) + Viewport origin and extent +.TE +.P +\%\f3glPopAttrib\fP restores the values of the state variables saved with the last +.br +\%\f3glPushAttrib\fP command. +Those not saved are left unchanged. +.P +It is an error to push attributes onto a full stack, +or to pop attributes off an empty stack. +In either case, the error flag is set +and no other change is made to GL state. +.P +Initially, the attribute stack is empty. +.SH NOTES +Not all values for GL state can be saved on the attribute stack. +For example, +render mode state, +and select and feedback state cannot be saved. +Client state must be saved with +\%\f3glPushClientAttrib\fP. +.P +The depth of the attribute stack depends on the implementation, +but it must be at least 16. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, pushing and +popping texture state apples to all supported texture units. +.SH ERRORS +\%\f3GL_STACK_OVERFLOW\fP is generated if \%\f3glPushAttrib\fP is called while +the attribute stack is full. +.P +\%\f3GL_STACK_UNDERFLOW\fP is generated if \%\f3glPopAttrib\fP is called while +the attribute stack is empty. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPushAttrib\fP or \%\f3glPopAttrib\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_ATTRIB_STACK_DEPTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_ATTRIB_STACK_DEPTH\fP +.SH SEE ALSO +\%\f3glGet(3G)\fP, +\%\f3glGetClipPlane(3G)\fP, +\%\f3glGetError(3G)\fP, +\%\f3glGetLight(3G)\fP, +\%\f3glGetMap(3G)\fP, +\%\f3glGetMaterial(3G)\fP, +.br +\%\f3glGetPixelMap(3G)\fP, +\%\f3glGetPolygonStipple(3G)\fP, +\%\f3glGetString(3G)\fP, +\%\f3glGetTexEnv(3G)\fP, +\%\f3glGetTexGen(3G)\fP, +\%\f3glGetTexImage(3G)\fP, +\%\f3glGetTexLevelParameter(3G)\fP, +\%\f3glGetTexParameter(3G)\fP, +\%\f3glIsEnabled(3G)\fP, +\%\f3glPushClientAttrib(3G)\fP Index: xc/doc/man/GL/gl/pushclientattrib.3gl diff -u /dev/null xc/doc/man/GL/gl/pushclientattrib.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/pushclientattrib.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,100 @@ +'\" et +'\"! eqn|tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 pushclien +.ds Xs 42589 5 pushclientattrib.gl +.TH GLPUSHCLIENTATTRIB 3G +.SH NAME +.B "glPushClientAttrib, glPopClientAttrib +\- push and pop the client attribute stack + +.SH C SPECIFICATION +void \f3glPushClientAttrib\fP( +GLbitfield mask); /* \fI1.1\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f21.1\fP\ \ 'u +\f21.1\fP +Specifies a mask that indicates which attributes to save. Values for +\f21.1\fP are listed below. +.SH C SPECIFICATION +void \f3glPopClientAttrib\fP( +void); /* \fI1.1\fP ) +.nf +.fi + +.SH DESCRIPTION +\%\f3glPushClientAttrib\fP takes one argument, +a mask that indicates which groups of client-state variables +to save on the client attribute stack. +Symbolic constants are used to set bits in the mask. +\f21.1\fP +is typically constructed by OR'ing several of these constants together. +The special mask +\%\f3GL_CLIENT_ALL_ATTRIB_BITS\fP +can be used to save all stackable client state. +.P +The symbolic mask constants and their associated GL client state are as follows +(the second column lists which attributes are saved): +.P +\%\f3GL_CLIENT_PIXEL_STORE_BIT\fP Pixel storage modes +.br +\%\f3GL_CLIENT_VERTEX_ARRAY_BIT\fP Vertex arrays (and enables) +.P +\%\f3glPopClientAttrib\fP restores the values of the client-state variables +saved with the last \%\f3glPushClientAttrib\fP. +Those not saved are left unchanged. +.P +It is an error to push attributes onto a full client attribute stack, +or to pop attributes off an empty stack. +In either case, the error flag is set, +and no other change is made to GL state. +.P +Initially, the client attribute stack is empty. +.SH NOTES +\%\f3glPushClientAttrib\fP is available only if the GL version is 1.1 or greater. +.P +Not all values for GL client state can be saved on the attribute stack. +For example, select and feedback state cannot be saved. +.P +The depth of the attribute stack depends on the implementation, +but it must be at least 16. +.P +Use \%\f3glPushAttrib\fP and \%\f3glPopAttrib\fP to push and restore +state which is kept on the server. Only pixel storage modes and +vertex array state may be pushed and popped with +\%\f3glPushClientAttrib\fP and \%\f3glPopClientAttrib\fP. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, pushing and +popping client vertex array state apples to all supported texture units, +and the active client texture state. +.SH ERRORS +\%\f3GL_STACK_OVERFLOW\fP is generated if \%\f3glPushClientAttrib\fP is called while +the attribute stack is full. +.P +\%\f3GL_STACK_UNDERFLOW\fP is generated if \%\f3glPopClientAttrib\fP is called while +the attribute stack is empty. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_ATTRIB_STACK_DEPTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_CLIENT_ATTRIB_STACK_DEPTH\fP +.SH SEE ALSO +\%\f3glColorPointer(3G)\fP, +\%\f3glDisableClientState(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glEnableClientState(3G)\fP, +\%\f3glGet(3G)\fP, +\%\f3glGetError(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glNewList(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPushAttrib(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/pushmatrix.3gl diff -u /dev/null xc/doc/man/GL/gl/pushmatrix.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/pushmatrix.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,92 @@ +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 pushmatri +.ds Xs 41127 5 pushmatrix.gl +.TH GLPUSHMATRIX 3G +.SH NAME +.B "glPushMatrix, glPopMatrix +\- push and pop the current matrix stack + +.SH C SPECIFICATION +void \f3glPushMatrix\fP( void ) +.nf +.fi + +.SH C SPECIFICATION +void \f3glPopMatrix\fP( void ) +.nf +.fi + +.SH DESCRIPTION +There is a stack of matrices for each of the matrix modes. +In \%\f3GL_MODELVIEW\fP mode, +the stack depth is at least 32. +In the other modes, +\%\f3GL_COLOR\fP, const(PROJECTION), and \%\f3GL_TEXTURE\fP, +the depth is at least 2. +The current matrix in any mode is the matrix on the top of the stack +for that mode. +.P +\%\f3glPushMatrix\fP pushes the current matrix stack down by one, +duplicating the current matrix. +That is, +after a \%\f3glPushMatrix\fP call, +the matrix on top of the stack is identical to the one below it. +.P +\%\f3glPopMatrix\fP pops the current matrix stack, +replacing the current matrix with the one below it on the stack. +.P +Initially, each of the stacks contains one matrix, an identity matrix. +.P +It is an error to push a full matrix stack, +or to pop a matrix stack that contains only a single matrix. +In either case, the error flag is set +and no other change is made to GL state. +.SH ERRORS +\%\f3GL_STACK_OVERFLOW\fP is generated if \%\f3glPushMatrix\fP is called while +the current matrix stack is full. +.P +\%\f3GL_STACK_UNDERFLOW\fP is generated if \%\f3glPopMatrix\fP is called while +the current matrix stack contains only a single matrix. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPushMatrix\fP or \%\f3glPopMatrix\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MATRIX_MODE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MODELVIEW_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PROJECTION_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_STACK_DEPTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MODELVIEW_STACK_DEPTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PROJECTION_STACK_DEPTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_STACK_DEPTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_MODELVIEW_STACK_DEPTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_PROJECTION_STACK_DEPTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_TEXTURE_STACK_DEPTH\fP +.SH SEE ALSO +\%\f3glFrustum(3G)\fP, +\%\f3glLoadIdentity(3G)\fP, +\%\f3glLoadMatrix(3G)\fP, +\%\f3glMatrixMode(3G)\fP, +\%\f3glMultMatrix(3G)\fP, +\%\f3glOrtho(3G)\fP, +\%\f3glRotate(3G)\fP, +\%\f3glScale(3G)\fP, +\%\f3glTranslate(3G)\fP, +\%\f3glViewport(3G)\fP Index: xc/doc/man/GL/gl/pushname.3gl diff -u /dev/null xc/doc/man/GL/gl/pushname.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/pushname.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,68 @@ +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 pushname. +.ds Xs 59541 4 pushname.gl +.TH GLPUSHNAME 3G +.SH NAME +.B "glPushName, glPopName +\- push and pop the name stack + +.SH C SPECIFICATION +void \f3glPushName\fP( +GLuint \fIname\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2name\fP\ \ 'u +\f2name\fP +Specifies a name that will be pushed onto the name stack. +.SH C SPECIFICATION +void \f3glPopName\fP( void ) +.nf +.fi + +.SH DESCRIPTION +The name stack is used during selection mode to allow sets of rendering +commands to be uniquely identified. +It consists of an ordered set of unsigned integers and is initially empty. +.P +\%\f3glPushName\fP causes \f2name\fP to be pushed onto the name stack. +\%\f3glPopName\fP pops one name off the top of the stack. +.P +The maximum name stack depth is implementation-dependent; call +\%\f3GL_MAX_NAME_STACK_DEPTH\fP to find out the value for a particular +implementation. It is an +error to push a name onto a full stack, +or to pop a name off an empty stack. +It is also an error to manipulate the name stack between the execution of +\%\f3glBegin\fP and the corresponding execution of \%\f3glEnd\fP. +In any of these cases, the error flag is set and no other change is +made to GL state. +.P +The name stack is always empty while the render mode is not \%\f3GL_SELECT\fP. +Calls to \%\f3glPushName\fP or \%\f3glPopName\fP while the render mode is not +\%\f3GL_SELECT\fP are ignored. +.SH ERRORS +\%\f3GL_STACK_OVERFLOW\fP is generated if \%\f3glPushName\fP is called while the +name stack is full. +.P +\%\f3GL_STACK_UNDERFLOW\fP is generated if \%\f3glPopName\fP is called while the +name stack is empty. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glPushName\fP or \%\f3glPopName\fP +is executed between a call to \%\f3glBegin\fP and the corresponding call to +\%\f3glEnd\fP. +.bp +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_NAME_STACK_DEPTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_NAME_STACK_DEPTH\fP +.SH SEE ALSO +\%\f3glInitNames(3G)\fP, +\%\f3glLoadName(3G)\fP, +\%\f3glRenderMode(3G)\fP, +\%\f3glSelectBuffer(3G)\fP Index: xc/doc/man/GL/gl/rasterpos.3gl diff -u /dev/null xc/doc/man/GL/gl/rasterpos.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/rasterpos.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,286 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 rasterpos +.ds Xs 20383 7 rasterpos.gl +.TH GLRASTERPOS 3G +.SH NAME +.B "glRasterPos2d, glRasterPos2f, glRasterPos2i, glRasterPos2s, glRasterPos3d, glRasterPos3f, glRasterPos3i, glRasterPos3s, glRasterPos4d, glRasterPos4f, glRasterPos4i, glRasterPos4s, glRasterPos2dv, glRasterPos2fv, glRasterPos2iv, glRasterPos2sv, glRasterPos3dv, glRasterPos3fv, glRasterPos3iv, glRasterPos3sv, glRasterPos4dv, glRasterPos4fv, glRasterPos4iv, glRasterPos4sv +\- specify the raster position for pixel operations + +.SH C SPECIFICATION +void \f3glRasterPos2d\fP( +GLdouble \fIx\fP, +.nf +.ta \w'\f3void \fPglRasterPos2d( 'u + GLdouble \fIy\fP ) +.fi +void \f3glRasterPos2f\fP( +GLfloat \fIx\fP, +.nf +.ta \w'\f3void \fPglRasterPos2f( 'u + GLfloat \fIy\fP ) +.fi +void \f3glRasterPos2i\fP( +GLint \fIx\fP, +.nf +.ta \w'\f3void \fPglRasterPos2i( 'u + GLint \fIy\fP ) +.fi +void \f3glRasterPos2s\fP( +GLshort \fIx\fP, +.nf +.ta \w'\f3void \fPglRasterPos2s( 'u + GLshort \fIy\fP ) +.fi +void \f3glRasterPos3d\fP( +GLdouble \fIx\fP, +.nf +.ta \w'\f3void \fPglRasterPos3d( 'u + GLdouble \fIy\fP, + GLdouble \fIz\fP ) +.fi +void \f3glRasterPos3f\fP( +GLfloat \fIx\fP, +.nf +.ta \w'\f3void \fPglRasterPos3f( 'u + GLfloat \fIy\fP, + GLfloat \fIz\fP ) +.fi +void \f3glRasterPos3i\fP( +GLint \fIx\fP, +.nf +.ta \w'\f3void \fPglRasterPos3i( 'u + GLint \fIy\fP, + GLint \fIz\fP ) +.fi +void \f3glRasterPos3s\fP( +GLshort \fIx\fP, +.nf +.ta \w'\f3void \fPglRasterPos3s( 'u + GLshort \fIy\fP, + GLshort \fIz\fP ) +.fi +void \f3glRasterPos4d\fP( +GLdouble \fIx\fP, +.nf +.ta \w'\f3void \fPglRasterPos4d( 'u + GLdouble \fIy\fP, + GLdouble \fIz\fP, + GLdouble \fIw\fP ) +.fi +void \f3glRasterPos4f\fP( +GLfloat \fIx\fP, +.nf +.ta \w'\f3void \fPglRasterPos4f( 'u + GLfloat \fIy\fP, + GLfloat \fIz\fP, + GLfloat \fIw\fP ) +.fi +void \f3glRasterPos4i\fP( +GLint \fIx\fP, +.nf +.ta \w'\f3void \fPglRasterPos4i( 'u + GLint \fIy\fP, + GLint \fIz\fP, + GLint \fIw\fP ) +.fi +void \f3glRasterPos4s\fP( +GLshort \fIx\fP, +.nf +.ta \w'\f3void \fPglRasterPos4s( 'u + GLshort \fIy\fP, + GLshort \fIz\fP, + GLshort \fIw\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2x\fP\ \f2y\fP\ \f2z\fP\ \f2w\fP\ \ 'u +\f2x\fP, \f2y\fP, \f2z\fP, \f2w\fP +Specify the $x$, $y$, $z$, and $w$ object coordinates +(if present) +for the raster position. +.SH C SPECIFICATION +void \f3glRasterPos2dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glRasterPos2fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glRasterPos2iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glRasterPos2sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi +void \f3glRasterPos3dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glRasterPos3fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glRasterPos3iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glRasterPos3sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi +void \f3glRasterPos4dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glRasterPos4fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glRasterPos4iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glRasterPos4sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi + +.SH PARAMETERS +.TP +\f2v\fP +Specifies a pointer to an array of two, +three, +or four elements, +specifying $x$, $y$, $z$, and $w$ coordinates, respectively. +.SH DESCRIPTION +The GL maintains a 3D position in window coordinates. +This position, +called the raster position, +is used to position pixel and bitmap write operations. It is +maintained with subpixel accuracy. +See \%\f3glBitmap\fP, \%\f3glDrawPixels\fP, and \%\f3glCopyPixels\fP. +.P +The current raster position consists of three window coordinates +($x$, $y$, $z$), +a clip coordinate value ($w$), +an eye coordinate distance, +a valid bit, +and associated color data and texture coordinates. +The $w$ coordinate is a clip coordinate, +because $w$ is not projected to window coordinates. +\%\f3glRasterPos4\fP specifies object coordinates $x$, $y$, $z$, and $w$ +explicitly. +\%\f3glRasterPos3\fP specifies object coordinate $x$, $y$, and $z$ explicitly, +while $w$ is implicitly set to 1. +\%\f3glRasterPos2\fP uses the argument values for $x$ and $y$ while +implicitly setting $z$ and $w$ to 0 and 1. +.P +The object coordinates presented by \%\f3glRasterPos\fP are treated just like those +of a \%\f3glVertex\fP command: +They are transformed by the current modelview and projection matrices +and passed to the clipping stage. +If the vertex is not culled, +then it is projected and scaled to window coordinates, +which become the new current raster position, +and the \%\f3GL_CURRENT_RASTER_POSITION_VALID\fP flag is set. +If the vertex +.I is +culled, +then the valid bit is cleared and the current raster position +and associated color and texture coordinates are undefined. +.P +The current raster position also includes some associated color data +and texture coordinates. +If lighting is enabled, +then \%\f3GL_CURRENT_RASTER_COLOR\fP +(in RGBA mode) +or \%\f3GL_CURRENT_RASTER_INDEX\fP +(in color index mode) +is set to the color produced by the lighting calculation +(see \%\f3glLight\fP, \%\f3glLightModel\fP, and +.br +\%\f3glShadeModel\fP). +If lighting is disabled, +current color +(in RGBA mode, state variable \%\f3GL_CURRENT_COLOR\fP) +or color index +(in color index mode, state variable \%\f3GL_CURRENT_INDEX\fP) +is used to update the current raster color. +.P +Likewise, +\%\f3GL_CURRENT_RASTER_TEXTURE_COORDS\fP is updated as a function +of \%\f3GL_CURRENT_TEXTURE_COORDS\fP, +based on the texture matrix and the texture generation functions +(see \%\f3glTexGen\fP). +Finally, +the distance from the origin of the eye coordinate system to the +vertex as transformed by only the modelview matrix replaces +\%\f3GL_CURRENT_RASTER_DISTANCE\fP. +.P +Initially, the current raster position is (0, 0, 0, 1), +the current raster distance is 0, +the valid bit is set, +the associated RGBA color is (1, 1, 1, 1), +the associated color index is 1, +and the associated texture coordinates are (0, 0, 0, 1). +In RGBA mode, +\%\f3GL_CURRENT_RASTER_INDEX\fP is always 1; +in color index mode, +the current raster RGBA color always maintains its initial value. +.SH NOTES +The raster position is modified both by \%\f3glRasterPos\fP and by \%\f3glBitmap\fP. +.P +When the raster position coordinates are invalid, +drawing commands that are based on the raster position are +ignored (that is, they do not result in changes to GL state). +.P +Calling \%\f3glDrawElements\fP, or \%\f3glDrawRangeElements\fP may leave the +current color or index indeterminate. +If \%\f3glRasterPos\fP is executed while the current color or index is indeterminate, the +current raster color or current raster index remains indeterminate. +.P +To set a valid raster position outside the viewport, first set a valid +raster position, then call \%\f3glBitmap\fP with NULL as the \f2bitmap\fP +parameter. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, there are distinct +raster texture coordinates for each texture unit. Each texture unit's +current ratster texture coordinates are updated by \%\f3glRasterPos\fP. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glRasterPos\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_POSITION\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_POSITION_VALID\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_DISTANCE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_COLOR\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_INDEX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_CURRENT_RASTER_TEXTURE_COORDS\fP +.SH SEE ALSO +\%\f3glBitmap(3G)\fP, +\%\f3glCopyPixels(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glDrawElements(3G)\fP, +\%\f3glDrawRangeElements(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glTexCoord(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glVertex(3G)\fP Index: xc/doc/man/GL/gl/readbuffer.3gl diff -u /dev/null xc/doc/man/GL/gl/readbuffer.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/readbuffer.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,81 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 readbuffe +.ds Xs 2004 4 readbuffer.gl +.TH GLREADBUFFER 3G +.SH NAME +.B "glReadBuffer +\- select a color buffer source for pixels + +.SH C SPECIFICATION +void \f3glReadBuffer\fP( +GLenum \fImode\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2mode\fP\ \ 'u +\f2mode\fP +Specifies a color buffer. +Accepted values are +\%\f3GL_FRONT_LEFT\fP, +\%\f3GL_FRONT_RIGHT\fP, +\%\f3GL_BACK_LEFT\fP, +\%\f3GL_BACK_RIGHT\fP, +\%\f3GL_FRONT\fP, +\%\f3GL_BACK\fP, +\%\f3GL_LEFT\fP, +\%\f3GL_RIGHT\fP, and +\%\f3GL_AUX\fP\f2i\fP, +where \f2i\fP is between 0 and \%\f3GL_AUX_BUFFERS\fP \-1. +.SH DESCRIPTION +\%\f3glReadBuffer\fP specifies a color buffer as the source for subsequent +\%\f3glReadPixels\fP, \%\f3glCopyTexImage1D\fP, \%\f3glCopyTexImage2D\fP, +\%\f3glCopyTexSubImage1D\fP, \%\f3glCopyTexSubImage2D\fP, +\%\f3glCopyTexSubImage3D\fP, and +\%\f3glCopyPixels\fP commands. +\f2mode\fP accepts one of twelve or more predefined values. +(\%\f3GL_AUX0\fP through \%\f3GL_AUX3\fP are always defined.) +In a fully configured system, +\%\f3GL_FRONT\fP, +\%\f3GL_LEFT\fP, and +\%\f3GL_FRONT_LEFT\fP all name the front left buffer, +\%\f3GL_FRONT_RIGHT\fP and +\%\f3GL_RIGHT\fP name the front right buffer, and +\%\f3GL_BACK_LEFT\fP and +\%\f3GL_BACK\fP name the back left buffer. +.P +Nonstereo double-buffered configurations have only a front left and a +back left buffer. +Single-buffered configurations have a front left and a front right +buffer if stereo, and only a front left buffer if nonstereo. +It is an error to specify a nonexistent buffer to \%\f3glReadBuffer\fP. +.P +\f2mode\fP is initially \%\f3GL_FRONT\fP in single-buffered configurations, +and \%\f3GL_BACK\fP in double-buffered configurations. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is not one of the twelve +(or more) accepted values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2mode\fP specifies a buffer +that does not exist. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glReadBuffer\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_READ_BUFFER\fP +.SH SEE ALSO +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glDrawBuffer(3G)\fP, +\%\f3glReadPixels(3G)\fP Index: xc/doc/man/GL/gl/readpixels.3gl diff -u /dev/null xc/doc/man/GL/gl/readpixels.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/readpixels.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,347 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 readpixel +.ds Xs 11505 13 readpixels.gl +.TH GLREADPIXELS 3G +.SH NAME +.B "glReadPixels +\- read a block of pixels from the frame buffer + +.SH C SPECIFICATION +void \f3glReadPixels\fP( +GLint \fIx\fP, +.nf +.ta \w'\f3void \fPglReadPixels( 'u + GLint \fIy\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + GLvoid \fI*pixels\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2x\fP\ \f2y\fP\ \ 'u +\f2x\fP, \f2y\fP +Specify the window coordinates of the first pixel +that is read from the frame buffer. +This location is the lower left corner of a rectangular block of pixels. +.TP +\f2width\fP, \f2height\fP +Specify the dimensions of the pixel rectangle. +\f2width\fP and \f2height\fP of one correspond to a single pixel. +.TP +\f2format\fP +Specifies the of the pixel data. +The following symbolic values are accepted: +\%\f3GL_COLOR_INDEX\fP, +\%\f3GL_STENCIL_INDEX\fP, +\%\f3GL_DEPTH_COMPONENT\fP, +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, and +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +Specifies the data type of the pixel data. +Must be one of +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP. +.TP +\f2pixels\fP +Returns the pixel data. +.SH DESCRIPTION +\%\f3glReadPixels\fP returns pixel data from the frame buffer, +starting with the pixel whose lower left corner +is at location (\f2x\fP, \f2y\fP), +into client memory starting at location \f2pixels\fP. +Several parameters control the processing of the pixel data before +it is placed into client memory. +These parameters are set with three commands: +\%\f3glPixelStore\fP, +\%\f3glPixelTransfer\fP, and +\%\f3glPixelMap\fP. +This reference page describes the effects on \%\f3glReadPixels\fP of most, +but not all of the parameters specified by these three commands. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, the pixel data may +be processed by additional operations including color table lookup, +color matrix tranformations, convolutions, histograms and minimum and +maximun pixel value computations. +.P +\%\f3glReadPixels\fP returns values from each pixel with lower left corner at +(\f2x\fP + $i$, \f2y\fP + $j$) for 0 \(<= $i$ < \f2width\fP and +0 \(<= $j$ < \f2height\fP. +This pixel is said to be the $i$th pixel in the $j$th row. +Pixels are returned in row order from the lowest to the highest row, +left to right in each row. +.P +\f2format\fP specifies the for the returned pixel values; +accepted values are: +.TP 10 +\%\f3GL_COLOR_INDEX\fP +Color indices are read from the color buffer +selected by \%\f3glReadBuffer\fP. +Each index is converted to fixed point, +shifted left or right depending on the value and sign of \%\f3GL_INDEX_SHIFT\fP, +and added to \%\f3GL_INDEX_OFFSET\fP. +If \%\f3GL_MAP_COLOR\fP is \%\f3GL_TRUE\fP, +indices are replaced by their mappings in the table \%\f3GL_PIXEL_MAP_I_TO_I\fP. +.TP +\%\f3GL_STENCIL_INDEX\fP +Stencil values are read from the stencil buffer. +Each index is converted to fixed point, +shifted left or right depending on the value and sign of \%\f3GL_INDEX_SHIFT\fP, +and added to \%\f3GL_INDEX_OFFSET\fP. +If \%\f3GL_MAP_STENCIL\fP is \%\f3GL_TRUE\fP, +indices are replaced by their mappings in the table \%\f3GL_PIXEL_MAP_S_TO_S\fP. +.TP +\%\f3GL_DEPTH_COMPONENT\fP +Depth values are read from the depth buffer. +Each component is converted to floating point such that the minimum depth +value maps to 0 and the maximum value maps to 1. +Each component is then multiplied by \%\f3GL_DEPTH_SCALE\fP, +added to \%\f3GL_DEPTH_BIAS\fP, +and finally clamped to the range [0,1]. +.TP +\%\f3GL_RED\fP +.TP +\%\f3GL_GREEN\fP +.TP +\%\f3GL_BLUE\fP +.TP +\%\f3GL_ALPHA\fP +.TP +\%\f3GL_RGB\fP +.TP +\%\f3GL_BGR\fP +.TP +\%\f3GL_RGBA\fP +.TP +\%\f3GL_BGRA\fP +.TP +\%\f3GL_LUMINANCE\fP +.TP +\%\f3GL_LUMINANCE_ALPHA\fP +Processing differs depending on whether color buffers store color indices +or RGBA color components. +If color indices are stored, +they are read from the color buffer selected by \%\f3glReadBuffer\fP. +Each index is converted to fixed point, +shifted left or right depending on the value and sign of \%\f3GL_INDEX_SHIFT\fP, +and added to \%\f3GL_INDEX_OFFSET\fP. +Indices are then replaced by the red, +green, +blue, +and alpha values obtained by indexing the tables +\%\f3GL_PIXEL_MAP_I_TO_R\fP, +\%\f3GL_PIXEL_MAP_I_TO_G\fP, +\%\f3GL_PIXEL_MAP_I_TO_B\fP, and +\%\f3GL_PIXEL_MAP_I_TO_A\fP. +Each table must be of size $2 sup n$, but $n$ may be different for +different tables. +Before an index is used to look up a value in a table of +size $2 sup n$, it must be masked against $2 sup n - 1$. +.IP +If RGBA color components are stored in the color buffers, +they are read from the color buffer selected by \%\f3glReadBuffer\fP. +Each color component is converted to floating point such that zero intensity +maps to 0.0 and full intensity maps to 1.0. +Each component is then multiplied by \%\f3GL_c_SCALE\fP and +added to \%\f3GL_c_BIAS\fP, +where \f2c\fP is RED, GREEN, BLUE, or ALPHA. +Finally, +if \%\f3GL_MAP_COLOR\fP is \%\f3GL_TRUE\fP, +each component is clamped to the range [0,\ 1], +scaled to the size of its corresponding table, and is then +replaced by its mapping in the table +\%\f3GL_PIXEL_MAP_c_TO_c\fP, +where \f2c\fP is R, G, B, or A. +.IP +Unneeded data is then discarded. +For example, +\%\f3GL_RED\fP discards the green, blue, and alpha components, +while \%\f3GL_RGB\fP discards only the alpha component. +\%\f3GL_LUMINANCE\fP computes a single-component value as the sum of +the red, +green, +and blue components, +and \%\f3GL_LUMINANCE_ALPHA\fP does the same, +while keeping alpha as a second value. +The final values are clamped to the range [0,\ 1]. +.P +The shift, +scale, +bias, +and lookup factors just described are all specified by +.br +\%\f3glPixelTransfer\fP. +The lookup table contents themselves are specified by \%\f3glPixelMap\fP. +.P +Finally, the indices or components +are converted to the proper , +as specified by \f2type\fP. +If \f2format\fP is \%\f3GL_COLOR_INDEX\fP or \%\f3GL_STENCIL_INDEX\fP +and \f2type\fP is not \%\f3GL_FLOAT\fP, +each index is masked with the mask value given in the following table. +If \f2type\fP is \%\f3GL_FLOAT\fP, then each integer index is converted to +single-precision floating-point . +.P +If \f2format\fP is +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, or +\%\f3GL_LUMINANCE_ALPHA\fP and \f2type\fP is not \%\f3GL_FLOAT\fP, +each component is multiplied by the multiplier shown in the following table. +If type is \%\f3GL_FLOAT\fP, then each component is passed as is +(or converted to the client's single-precision floating-point if +it is different from the one used by the GL). +.P +.TS +center tab(:); +l cb cb +l c c. +_ +\f2type\fP:index mask:component conversion +_ +.sp .5 +\%\f3GL_UNSIGNED_BYTE\fP:$2"^"8 - 1$:$(2"^"8 - 1) c$ +\%\f3GL_BYTE\fP:$2"^"7 - 1$:$[(2"^"8 - 1) c - 1] / 2$ +\%\f3GL_BITMAP\fP:$1$:$1$ +\%\f3GL_UNSIGNED_SHORT\fP:$2"^"16 - 1$:$(2"^"16 - 1) c$ +\%\f3GL_SHORT\fP:$2"^"15 - 1$:$[(2"^"16 - 1) c - 1] / 2$ +\%\f3GL_UNSIGNED_INT\fP:$2"^"32 - 1$:$(2"^"32 - 1) c$ +\%\f3GL_INT\fP:$2"^"31 - 1$:$[(2"^"32 - 1) c - 1] / 2$ +\%\f3GL_FLOAT\fP:none:$c$ +_ +.TE +.P +Return values are placed in memory as follows. +If \f2format\fP is +\%\f3GL_COLOR_INDEX\fP, +\%\f3GL_STENCIL_INDEX\fP, +\%\f3GL_DEPTH_COMPONENT\fP, +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, or +\%\f3GL_LUMINANCE\fP, +a single value is returned and the data for the $i$th pixel in the $j$th row +is placed in location $(j)~"width"~+~i$. +\%\f3GL_RGB\fP and \%\f3GL_BGR\fP return three values, +\%\f3GL_RGBA\fP and \%\f3GL_BGRA\fP return four values, +and \%\f3GL_LUMINANCE_ALPHA\fP returns two values for each pixel, +with all values corresponding to a single pixel occupying contiguous space +in \f2pixels\fP. +Storage parameters set by \%\f3glPixelStore\fP, +such as \%\f3GL_PACK_LSB_FIRST\fP and \%\f3GL_PACK_SWAP_BYTES\fP, +affect the way that data is written into memory. +See \%\f3glPixelStore\fP for a description. +.SH NOTES +Values for pixels that lie outside the window +connected to the current GL context are undefined. +.P +If an error is generated, +no change is made to the contents of \f2pixels\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP or \f2type\fP is not an +accepted value. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is \%\f3GL_BITMAP\fP and \f2format\fP is +not \%\f3GL_COLOR_INDEX\fP or \%\f3GL_STENCIL_INDEX\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if either \f2width\fP or \f2height\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2format\fP is \%\f3GL_COLOR_INDEX\fP +and the color buffers store RGBA color components. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2format\fP is \%\f3GL_STENCIL_INDEX\fP +and there is no stencil buffer. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2format\fP is \%\f3GL_DEPTH_COMPONENT\fP +and there is no depth buffer. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glReadPixels\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.P +The formats \%\f3GL_BGR\fP, and \%\f3GL_BGRA\fP and types +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP are available only if the GL version +is 1.2 or greater. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_INDEX_MODE\fP +.SH SEE ALSO +\%\f3glCopyPixels(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glPixelMap(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +.br +\%\f3glReadBuffer(3G)\fP Index: xc/doc/man/GL/gl/rect.3gl diff -u /dev/null xc/doc/man/GL/gl/rect.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/rect.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,117 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 rect.gl - +.ds Xs 25554 4 rect.gl +.TH GLRECT 3G +.SH NAME +.B "glRectd, glRectf, glRecti, glRects, glRectdv, glRectfv, glRectiv, glRectsv +\- draw a rectangle + +.SH C SPECIFICATION +void \f3glRectd\fP( +GLdouble \fIx1\fP, +.nf +.ta \w'\f3void \fPglRectd( 'u + GLdouble \fIy1\fP, + GLdouble \fIx2\fP, + GLdouble \fIy2\fP ) +.fi +void \f3glRectf\fP( +GLfloat \fIx1\fP, +.nf +.ta \w'\f3void \fPglRectf( 'u + GLfloat \fIy1\fP, + GLfloat \fIx2\fP, + GLfloat \fIy2\fP ) +.fi +void \f3glRecti\fP( +GLint \fIx1\fP, +.nf +.ta \w'\f3void \fPglRecti( 'u + GLint \fIy1\fP, + GLint \fIx2\fP, + GLint \fIy2\fP ) +.fi +void \f3glRects\fP( +GLshort \fIx1\fP, +.nf +.ta \w'\f3void \fPglRects( 'u + GLshort \fIy1\fP, + GLshort \fIx2\fP, + GLshort \fIy2\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2x1\fP\ \f2y1\fP\ \ 'u +\f2x1\fP, \f2y1\fP +Specify one vertex of a rectangle. +.TP +\f2x2\fP, \f2y2\fP +Specify the opposite vertex of the rectangle. +.SH C SPECIFICATION +void \f3glRectdv\fP( +const GLdouble \fI*v1\fP, +.nf +.ta \w'\f3void \fPglRectdv( 'u + const GLdouble \fI*v2\fP ) +.fi +void \f3glRectfv\fP( +const GLfloat \fI*v1\fP, +.nf +.ta \w'\f3void \fPglRectfv( 'u + const GLfloat \fI*v2\fP ) +.fi +void \f3glRectiv\fP( +const GLint \fI*v1\fP, +.nf +.ta \w'\f3void \fPglRectiv( 'u + const GLint \fI*v2\fP ) +.fi +void \f3glRectsv\fP( +const GLshort \fI*v1\fP, +.nf +.ta \w'\f3void \fPglRectsv( 'u + const GLshort \fI*v2\fP ) +.fi + +.BP +.SH PARAMETERS +.TP +\f2v1\fP +Specifies a pointer to one vertex of a rectangle. +.TP +\f2v2\fP +Specifies a pointer to the opposite vertex of the rectangle. +.SH DESCRIPTION +\%\f3glRect\fP supports efficient specification of rectangles as two corner points. +Each +rectangle command takes four arguments, +organized either as two consecutive pairs of (\f2x\fP,\f2y\fP) coordinates, +or as two pointers to arrays, +each containing an (\f2x\fP,\f2y\fP) pair. +The resulting rectangle is defined in the \f2z\fP = 0 plane. +.P +\%\f3glRect\fP(\f2x1\fP, \f2y1\fP, \f2x2\fP, \f2y2\fP) +is exactly equivalent to the following sequence: +.Ex 6 +glBegin(\%\f3GL_POLYGON\fP); +glVertex2(\f2x1\fP, \f2y1\fP); +glVertex2(\f2x2\fP, \f2y1\fP); +glVertex2(\f2x2\fP, \f2y2\fP); +glVertex2(\f2x1\fP, \f2y2\fP); +glEnd(); +.Ee +Note that if the second vertex is above and to the right of the first vertex, +the rectangle is constructed with a counterclockwise winding. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glRect\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glBegin(3G)\fP, +\%\f3glVertex(3G)\fP Index: xc/doc/man/GL/gl/rendermode.3gl diff -u /dev/null xc/doc/man/GL/gl/rendermode.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/rendermode.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,107 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 rendermod +.ds Xs 54049 5 rendermode.gl +.TH GLRENDERMODE 3G +.SH NAME +.B "glRenderMode +\- set rasterization mode + +.SH C SPECIFICATION +GLint \f3glRenderMode\fP( +GLenum \fImode\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2mode\fP\ \ 'u +\f2mode\fP +Specifies the rasterization mode. +Three values are accepted: +\%\f3GL_RENDER\fP, +\%\f3GL_SELECT\fP, and +\%\f3GL_FEEDBACK\fP. +The initial value is \%\f3GL_RENDER\fP. +.SH DESCRIPTION +\%\f3glRenderMode\fP sets the rasterization mode. +It takes one argument, +\f2mode\fP, +which can assume one of three predefined values: +.TP 16 +\%\f3GL_RENDER\fP +Render mode. Primitives are rasterized, +producing pixel fragments, +which are written into the frame buffer. +This is the normal mode +and also the default mode. +.TP +\%\f3GL_SELECT\fP +Selection mode. +No pixel fragments are produced, +and no change to the frame buffer contents is made. +Instead, +a record of the names of primitives that would have been drawn +if the render mode had been \%\f3GL_RENDER\fP is returned in a select buffer, +which must be created (see \%\f3glSelectBuffer\fP) before selection mode +is entered. +.TP +\%\f3GL_FEEDBACK\fP +Feedback mode. +No pixel fragments are produced, +and no change to the frame buffer contents is made. +Instead, +the coordinates and attributes of vertices that would have been drawn +if the render mode had been \%\f3GL_RENDER\fP is returned in a feedback buffer, +which must be created (see \%\f3glFeedbackBuffer\fP) before feedback mode +is entered. +.P +The return value of \%\f3glRenderMode\fP is determined by the render mode at the time +\%\f3glRenderMode\fP is called, +rather than by \f2mode\fP. +The values returned for the three render modes are as follows: +.TP 16 +\%\f3GL_RENDER\fP +0. +.TP +\%\f3GL_SELECT\fP +The number of hit records transferred to the select buffer. +.TP +\%\f3GL_FEEDBACK\fP +The number of values (not vertices) transferred to the feedback buffer. +.P +See the \%\f3glSelectBuffer\fP and \%\f3glFeedbackBuffer\fP reference pages for +more details concerning selection and feedback operation. +.SH NOTES +If an error is generated, +\%\f3glRenderMode\fP returns 0 regardless of the current render mode. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is not one of the three +accepted values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glSelectBuffer\fP is called +while the render mode is \%\f3GL_SELECT\fP, +or if \%\f3glRenderMode\fP is called with argument \%\f3GL_SELECT\fP before +\%\f3glSelectBuffer\fP is called at least once. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glFeedbackBuffer\fP is called +while the render mode is \%\f3GL_FEEDBACK\fP, +or if \%\f3glRenderMode\fP is called with argument \%\f3GL_FEEDBACK\fP before +\%\f3glFeedbackBuffer\fP is called at least once. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glRenderMode\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_RENDER_MODE\fP +.SH SEE ALSO +\%\f3glFeedbackBuffer(3G)\fP, +\%\f3glInitNames(3G)\fP, +\%\f3glLoadName(3G)\fP, +\%\f3glPassThrough(3G)\fP, +\%\f3glPushName(3G)\fP, +\%\f3glSelectBuffer(3G)\fP Index: xc/doc/man/GL/gl/resethistogram.3gl diff -u /dev/null xc/doc/man/GL/gl/resethistogram.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/resethistogram.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,38 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 resethist +.ds Xs 3266 3 resethistogram.gl +.TH GLRESETHISTOGRAM 3G +.SH NAME +.B "glResetHistogram +\- reset histogram table entries to zero + +.SH C SPECIFICATION +void \f3glResetHistogram\fP( +GLenum \fItarget\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Must be +\%\f3GL_HISTOGRAM\fP. +.SH DESCRIPTION +\%\f3glResetHistogram\fP resets all the elements of the current histogram table to zero. +.SH NOTES +\%\f3glResetHistogram\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_HISTOGRAM\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glResetHistogram\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glHistogram(3G)\fP Index: xc/doc/man/GL/gl/resetminmax.3gl diff -u /dev/null xc/doc/man/GL/gl/resetminmax.3gl:1.2 --- /dev/null Fri Jan 18 15:20:30 2002 +++ xc/doc/man/GL/gl/resetminmax.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,41 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 resetminm +.ds Xs 18776 3 resetminmax.gl +.TH GLRESETMINMAX 3G +.SH NAME +.B "glResetMinmax +\- reset minmax table entries to initial values + +.SH C SPECIFICATION +void \f3glResetMinmax\fP( +GLenum \fItarget\fP ) +.nf +.fi + +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Must be +\%\f3GL_MINMAX\fP. +.SH DESCRIPTION +\%\f3glResetMinmax\fP resets the elements of the current minmax table to their +initial values: the ``maximum'' element receives the minimum possible +component values, and the ``minimum'' element receives the maximum +possible component values. +.SH NOTES +\%\f3glResetMinmax\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_MINMAX\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glResetMinmax\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.SH SEE ALSO +\%\f3glMinmax(3G)\fP Index: xc/doc/man/GL/gl/rotate.3gl diff -u /dev/null xc/doc/man/GL/gl/rotate.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/rotate.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,110 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 rotate.gl +.ds Xs 52762 5 rotate.gl +.TH GLROTATE 3G +.SH NAME +.B "glRotated, glRotatef +\- multiply the current matrix by a rotation matrix + +.SH C SPECIFICATION +void \f3glRotated\fP( +GLdouble \fIangle\fP, +.nf +.ta \w'\f3void \fPglRotated( 'u + GLdouble \fIx\fP, + GLdouble \fIy\fP, + GLdouble \fIz\fP ) +.fi +void \f3glRotatef\fP( +GLfloat \fIangle\fP, +.nf +.ta \w'\f3void \fPglRotatef( 'u + GLfloat \fIx\fP, + GLfloat \fIy\fP, + GLfloat \fIz\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2angle\fP\ \ 'u +\f2angle\fP +Specifies the angle of rotation, in degrees. +.TP +\f2x\fP, \f2y\fP, \f2z\fP +Specify the \f2x\fP, \f2y\fP, and \f2z\fP coordinates of a vector, respectively. +.SH DESCRIPTION +\%\f3glRotate\fP produces a rotation of \f2angle\fP degrees around +the vector $("x", "y", "z")$. +The current matrix (see \%\f3glMatrixMode\fP) is multiplied by a rotation +matrix with the product +replacing the current matrix, as if \%\f3glMultMatrix\fP were called +with the following matrix as its argument: +.P +.ce +.EQ +left ( ~ down 20 matrix { + ccol { + "x" sup 2 (1 ^-^ c)~+~ c above + "y" "x" (1 ^-^ c)~+~ "z" s above + "x" "z" (1 ^-^ c)~-~"y" s above + ~0 + } + ccol { + ~~ "x" "y" (1 ^-^ c)~-~"z" s above + ~~ "y" sup 2 (1 ^-^ c)~+~ c above + ~~ "y" "z" (1 ^-^ c)~+~ "x" s above + ~~ ~0 + } + ccol { + ~~ "x" "z" (1 ^-^ c)~+~ "y" s above + ~~ "y" "z" (1 ^-^ c)~-~ "x" s above + ~~ "z" sup 2 (1 ^-^ c) ~+~ c above + ~~ ~0 + } + ccol { ~0 above ~0 above ~0 above ~1} +} ~~ right ) +.EN +.P +.sp +Where $c ~=~ cos ("angle")$, $s ~=~ sin ("angle")$, and +$||(~"x", "y", "z"~)|| ~=~ 1$ (if not, the GL +will normalize this vector). +.sp +.sp +.P +If the matrix mode is either \%\f3GL_MODELVIEW\fP or \%\f3GL_PROJECTION\fP, +all objects drawn after \%\f3glRotate\fP is called are rotated. +Use \%\f3glPushMatrix\fP and \%\f3glPopMatrix\fP to save and restore +the unrotated coordinate system. +.SH NOTES +This rotation follows the right-hand rule, so +if the vector $("x", "y", "z")$ points toward the +user, the rotation will be counterclockwise. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glRotate\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MATRIX_MODE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MODELVIEW_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PROJECTION_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_MATRIX\fP +.SH SEE ALSO +\%\f3glMatrixMode(3G)\fP, +\%\f3glMultMatrix(3G)\fP, +\%\f3glPushMatrix(3G)\fP, +\%\f3glScale(3G)\fP, +\%\f3glTranslate(3G)\fP Index: xc/doc/man/GL/gl/scale.3gl diff -u /dev/null xc/doc/man/GL/gl/scale.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/scale.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,92 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 scale.gl +.ds Xs 39478 4 scale.gl +.TH GLSCALE 3G +.SH NAME +.B "glScaled, glScalef +\- multiply the current matrix by a general scaling matrix + +.SH C SPECIFICATION +void \f3glScaled\fP( +GLdouble \fIx\fP, +.nf +.ta \w'\f3void \fPglScaled( 'u + GLdouble \fIy\fP, + GLdouble \fIz\fP ) +.fi +void \f3glScalef\fP( +GLfloat \fIx\fP, +.nf +.ta \w'\f3void \fPglScalef( 'u + GLfloat \fIy\fP, + GLfloat \fIz\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2x\fP\ \f2y\fP\ \f2z\fP\ \ 'u +\f2x\fP, \f2y\fP, \f2z\fP +Specify scale factors along the \f2x\fP, \f2y\fP, and \f2z\fP axes, respectively. +.SH DESCRIPTION +\%\f3glScale\fP produces a nonuniform scaling along the \f2x\fP, \f2y\fP, and +\f2z\fP axes. +The three parameters indicate the desired scale factor along +each of the three axes. +.P +The current matrix +(see \%\f3glMatrixMode\fP) +is multiplied by this scale matrix, +and the product replaces the current matrix +as if \%\f3glScale\fP were called with the following matrix +as its argument: + +.P +.ce +.EQ +left ( ~ down 20 matrix { + ccol { ~"x" above ~0 above ~0 above ~0 } + ccol { ~0 above ~"y" above ~0 above ~0 } + ccol { ~0 above ~0 above ~"z" above ~0 } + ccol { ~0 above ~0 above ~0 above ~1} +} ~~ right ) +.EN +.sp +If the matrix mode is either \%\f3GL_MODELVIEW\fP or \%\f3GL_PROJECTION\fP, +all objects drawn after \%\f3glScale\fP is called are scaled. +.P +Use \%\f3glPushMatrix\fP and \%\f3glPopMatrix\fP to save and restore +the unscaled coordinate system. +.SH NOTES +If scale factors other than 1 are applied to the modelview matrix +and lighting is enabled, lighting often appears wrong. +In that case, enable automatic normalization of normals by +calling \%\f3glEnable\fP with the argument \%\f3GL_NORMALIZE\fP. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glScale\fP +is executed between the execution of +\%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MATRIX_MODE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MODELVIEW_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PROJECTION_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_MATRIX\fP +.SH SEE ALSO +\%\f3glMatrixMode(3G)\fP, +\%\f3glMultMatrix(3G)\fP, +\%\f3glPushMatrix(3G)\fP, +\%\f3glRotate(3G)\fP, +\%\f3glTranslate(3G)\fP Index: xc/doc/man/GL/gl/scissor.3gl diff -u /dev/null xc/doc/man/GL/gl/scissor.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/scissor.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,69 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 scissor.g +.ds Xs 30565 4 scissor.gl +.TH GLSCISSOR 3G +.SH NAME +.B "glScissor +\- define the scissor box + +.SH C SPECIFICATION +void \f3glScissor\fP( +GLint \fIx\fP, +.nf +.ta \w'\f3void \fPglScissor( 'u + GLint \fIy\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2x\fP\ \f2y\fP\ \ 'u +\f2x\fP, \f2y\fP +Specify the lower left corner of the scissor box. +Initially (0, 0). +.TP +\f2width\fP, \f2height\fP +Specify the width and height of the scissor box. +When a GL context is first attached to a window, +\f2width\fP and \f2height\fP are set to the dimensions of that window. +.SH DESCRIPTION +\%\f3glScissor\fP defines a rectangle, called the scissor box, +in window coordinates. +The first two arguments, +\f2x\fP and \f2y\fP, +specify the lower left corner of the box. +\f2width\fP and \f2height\fP specify the width and height of the box. +.P +To enable and disable the scissor test, call +\%\f3glEnable\fP and \%\f3glDisable\fP with argument +\%\f3GL_SCISSOR_TEST\fP. The test is initially disabled. +While the test is enabled, only pixels that lie within the scissor box +can be modified by drawing commands. +Window coordinates have integer values at the shared corners of +frame buffer pixels. +\f7glScissor(0,0,1,1)\fP allows modification of only the lower left +pixel in the window, and \f7glScissor(0,0,0,0)\fP doesn't allow +modification of any pixels in the window. +.P +When the scissor test is disabled, +it is as though the scissor box includes the entire window. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if either \f2width\fP or \f2height\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glScissor\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.bp +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_SCISSOR_BOX\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_SCISSOR_TEST\fP +.SH SEE ALSO +\%\f3glEnable(3G)\fP, +\%\f3glViewport(3G)\fP Index: xc/doc/man/GL/gl/selectbuffer.3gl diff -u /dev/null xc/doc/man/GL/gl/selectbuffer.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/selectbuffer.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,113 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 selectbuf +.ds Xs 39171 6 selectbuffer.gl +.TH GLSELECTBUFFER 3G +.SH NAME +.B "glSelectBuffer +\- establish a buffer for selection mode values + +.SH C SPECIFICATION +void \f3glSelectBuffer\fP( +GLsizei \fIsize\fP, +.nf +.ta \w'\f3void \fPglSelectBuffer( 'u + GLuint \fI*buffer\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIbuffer\fP\ \ 'u +\f2size\fP +Specifies the size of \f2buffer\fP. +.TP +\f2buffer\fP +Returns the selection data. +.SH DESCRIPTION +\%\f3glSelectBuffer\fP has two arguments: +\f2buffer\fP is a pointer to an array of unsigned integers, +and \f2size\fP indicates the size of the array. +\f2buffer\fP returns values from the name stack +(see \%\f3glInitNames\fP, \%\f3glLoadName\fP, \%\f3glPushName\fP) +when the rendering mode is \%\f3GL_SELECT\fP (see \%\f3glRenderMode\fP). +\%\f3glSelectBuffer\fP must be issued before selection mode is enabled, +and it must not be issued while the rendering mode is \%\f3GL_SELECT\fP. +.P +A programmer can use selection to determine which primitives +are drawn into some region of a window. +The region is defined by the current modelview and perspective matrices. +.P +In selection mode, no pixel fragments are produced from rasterization. +Instead, +if a primitive or a raster position intersects the clipping +volume defined by the viewing frustum +and the user-defined clipping planes, +this primitive causes a selection hit. +(With polygons, no hit occurs if the polygon is culled.) +When a change is made to the name stack, +or when \%\f3glRenderMode\fP is called, +a hit record is copied to \f2buffer\fP if any hits have occurred since the +last such event +(name stack change or +\%\f3glRenderMode\fP call). +The hit record consists of the number of names in the name stack at the +time of the event, followed by the minimum and maximum depth values +of all vertices that hit since the previous event, +followed by the name stack contents, +bottom name first. +.P +Depth values (which are in the range [0,1]) are multiplied by 2^32 - 1, +before being placed in the hit record. +.P +An internal index into \f2buffer\fP is reset to 0 whenever selection mode +is entered. +Each time a hit record is copied into \f2buffer\fP, +the index is incremented to point to the cell just past the end +of the block of names \- that is, to the next available cell. +If the hit record is larger than the number of remaining locations in \f2buffer\fP, +as much data as can fit is copied, +and the overflow flag is set. +If the name stack is empty when a hit record is copied, +that record consists of 0 followed by the minimum and maximum depth values. +.P +To exit selection mode, call \%\f3glRenderMode\fP with an argument +other than \%\f3GL_SELECT\fP. +Whenever \%\f3glRenderMode\fP is called while the render mode is \%\f3GL_SELECT\fP, +it returns the number of hit records copied to \f2buffer\fP, +resets the overflow flag and the selection buffer pointer, +and initializes the name stack to be empty. +If the overflow bit was set when \%\f3glRenderMode\fP was called, +a negative hit record count is returned. +.SH NOTES +The contents of \f2buffer\fP is undefined until \%\f3glRenderMode\fP is called +with an argument other than \%\f3GL_SELECT\fP. +.P +\%\f3glBegin\fP/\%\f3glEnd\fP primitives and calls to \%\f3glRasterPos\fP +can result in hits. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2size\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glSelectBuffer\fP is called while the +render mode is \%\f3GL_SELECT\fP, +or if \%\f3glRenderMode\fP is called with argument \%\f3GL_SELECT\fP before +\%\f3glSelectBuffer\fP is called at least once. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glSelectBuffer\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_NAME_STACK_DEPTH\fP +.br +\%\f3glGet\fP with argument \%\f3GL_SELECTION_BUFFER_SIZE\fP +.br +\%\f3glGetPointerv\fP with argument \%\f3GL_SELECTION_BUFFER_POINTER\fP +.SH SEE ALSO +\%\f3glFeedbackBuffer(3G)\fP, +\%\f3glInitNames(3G)\fP, +\%\f3glLoadName(3G)\fP, +\%\f3glPushName(3G)\fP, +\%\f3glRenderMode(3G)\fP Index: xc/doc/man/GL/gl/separablefilter2d.3gl diff -u /dev/null xc/doc/man/GL/gl/separablefilter2d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/separablefilter2d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,245 @@ +'\" t +'\"! tbl | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 separable +.ds Xs 28833 9 separablefilter2d.gl +.TH GLSEPARABLEFILTER2D 3G +.SH NAME +.B "glSeparableFilter2D +\- define a separable two-dimensional convolution filter + +.SH C SPECIFICATION +void \f3glSeparableFilter2D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglSeparableFilter2D( 'u + GLenum \fIinternalformat\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + const GLvoid \fI*row\fP, + const GLvoid \fI*column\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIinternalformat\fP\ \ 'u +\f2target\fP +Must be \%\f3GL_SEPARABLE_2D\fP. +.TP +\f2internalformat\fP +The internal of the convolution filter kernel. +The allowable values are +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_INTENSITY4\fP, +\%\f3GL_INTENSITY8\fP, +\%\f3GL_INTENSITY12\fP, +\%\f3GL_INTENSITY16\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, or +\%\f3GL_RGBA16\fP. +.TP +\f2width\fP +The number of elements in the pixel array referenced by \f2row\fP. +(This is the width of the separable filter kernel.) +.TP +\f2height\fP +The number of elements in the pixel array referenced by \f2column\fP. +(This is the height of the separable filter kernel.) +.TP +\f2format\fP +The of the pixel data in \f2row\fP and \f2column\fP. +The allowable values are +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_LUMINANCE\fP, and +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +The type of the pixel data in \f2row\fP and \f2column\fP. +Symbolic constants +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +are accepted. +.TP +\f2row\fP +Pointer to a one-dimensional array of pixel data that is processed to +build the row filter kernel. +.TP +\f2column\fP +Pointer to a one-dimensional array of pixel data that is processed to +build the column filter kernel. +.SH DESCRIPTION +\%\f3glSeparableFilter2D\fP builds a two-dimensional separable convolution filter kernel from +two arrays of pixels. +.sp +The pixel arrays specified by (\f2width\fP, \f2format\fP, \f2type\fP, \f2row\fP) +and (\f2height\fP, \f2format\fP, \f2type\fP, \f2column\fP) are processed just as if +they had been passed to \%\f3glDrawPixels\fP, +but processing stops after the final expansion to RGBA is completed. +.sp +Next, the R, G, B, and A components of all pixels in both arrays are scaled +by the four separable 2D \%\f3GL_CONVOLUTION_FILTER_SCALE\fP parameters and +biased by the four separable 2D \%\f3GL_CONVOLUTION_FILTER_BIAS\fP parameters. +(The scale and bias parameters are set by \%\f3glConvolutionParameter\fP +using the \%\f3GL_SEPARABLE_2D\fP target and the names +\%\f3GL_CONVOLUTION_FILTER_SCALE\fP and \%\f3GL_CONVOLUTION_FILTER_BIAS\fP. +The parameters themselves are vectors of four values that are applied to red, +green, blue, and alpha, in that order.) +The R, G, B, and A values are not clamped to [0,1] at any time during this +process. +.sp +Each pixel is then converted to the internal specified by +\f2internalformat\fP. +This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.bp +.TS +center; +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +\%\f3GL_LUMINANCE\fP R +\%\f3GL_LUMINANCE_ALPHA\fP A R +\%\f3GL_INTENSITY\fP R +\%\f3GL_RGB\fP R G B +\%\f3GL_RGBA\fP R G B A +_ +.TE + +.sp +The red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in floating-point rather than integer +. +They form two one-dimensional filter kernel images. +The row image is indexed by coordinate \f2i\fP starting at zero and +increasing from left to right. +Each location in the row image is derived from element \f2i\fP of \f2row\fP. +The column image is indexed by coordinate \f2j\fP starting at zero +and increasing from bottom to top. +Each location in the column image is derived from element \f2j\fP of \f2column\fP. +.PP +Note that after a convolution is performed, the resulting color +components are also scaled by their corresponding +\%\f3GL_POST_CONVOLUTION_c_SCALE\fP parameters and biased by their +corresponding \%\f3GL_POST_CONVOLUTION_c_BIAS\fP parameters (where +\f2c\fP takes on the values \f3RED\fP, \f3GREEN\fP, \f3BLUE\fP, and +\f3ALPHA\fP). +These parameters are set by \%\f3glPixelTransfer\fP. +.SH NOTES +\%\f3glSeparableFilter2D\fP is present only if \%\f3GL_ARB_imaging\fP is returned when \%\f3glGetString\fP +is called with an argument of \%\f3GL_EXTENSIONS\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not +\%\f3GL_SEPARABLE_2D\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2internalformat\fP is not one of the +allowable values. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP is less than zero or greater +than the maximum supported value. +This value may be queried with \%\f3glGetConvolutionParameter\fP +using target \%\f3GL_SEPARABLE_2D\fP and name +\%\f3GL_MAX_CONVOLUTION_WIDTH\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2height\fP is less than zero or greater +than the maximum supported value. +This value may be queried with \%\f3glGetConvolutionParameter\fP +using target \%\f3GL_SEPARABLE_2D\fP and name +\%\f3GL_MAX_CONVOLUTION_HEIGHT\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not one of the allowable +values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glSeparableFilter2D\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2height\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2height\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGetConvolutionParameter\fP, \%\f3glGetSeparableFilter\fP +.SH SEE ALSO +\%\f3glConvolutionFilter1D(3G)\fP, +\%\f3glConvolutionFilter2D(3G)\fP, +\%\f3glConvolutionParameter(3G)\fP, +\%\f3glPixelTransfer(3G)\fP Index: xc/doc/man/GL/gl/shademodel.3gl diff -u /dev/null xc/doc/man/GL/gl/shademodel.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/shademodel.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,87 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 shademode +.ds Xs 4246 5 shademodel.gl +.TH GLSHADEMODEL 3G +.SH NAME +.B "glShadeModel +\- select flat or smooth shading + +.SH C SPECIFICATION +void \f3glShadeModel\fP( +GLenum \fImode\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2mode\fP\ \ 'u +\f2mode\fP +Specifies a symbolic value representing a shading technique. +Accepted values are \%\f3GL_FLAT\fP and \%\f3GL_SMOOTH\fP. +The initial value is \%\f3GL_SMOOTH\fP. +.SH DESCRIPTION +GL primitives can have either flat or smooth shading. +Smooth shading, +the default, +causes the computed colors of vertices to be interpolated as the +primitive is rasterized, +typically assigning different colors to each resulting pixel fragment. +Flat shading selects the computed color of just one vertex +and assigns it to all the pixel fragments +generated by rasterizing a single primitive. +In either case, the computed color of a vertex is the result of +lighting if lighting is enabled, +or it is the current color at the time the vertex was specified if +lighting is disabled. +.P +Flat and smooth shading are indistinguishable for points. +Starting when \%\f3glBegin\fP is issued and counting vertices and +primitives from 1, the GL gives each flat-shaded line segment $i$ the +computed color of vertex $i ~+~ 1$, its second vertex. +Counting similarly from 1, +the GL gives each flat-shaded polygon the computed color of the vertex listed +in the following table. +This is the last vertex to specify the polygon in all cases except single +polygons, +where the first vertex specifies the flat-shaded color. +.sp +.TS +center; +lb cb +l c . +_ +Primitive Type of Polygon $i$ Vertex +_ +Single polygon ($ i ~==~ 1 $) 1 +Triangle strip $i ~+~ 2$ +Triangle fan $i ~+~ 2$ +Independent triangle $ 3 i$ +Quad strip $2 i ~+~ 2$ +Independent quad $ 4 i $ +_ +.TE +.sp +Flat and smooth shading are specified by \%\f3glShadeModel\fP with \f2mode\fP set to +\%\f3GL_FLAT\fP and \%\f3GL_SMOOTH\fP, respectively. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2mode\fP is any value other than +\%\f3GL_FLAT\fP or \%\f3GL_SMOOTH\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glShadeModel\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_SHADE_MODEL\fP +.SH SEE ALSO +\%\f3glBegin(3G)\fP, +\%\f3glColor(3G)\fP, +\%\f3glLight(3G)\fP, +\%\f3glLightModel(3G)\fP Index: xc/doc/man/GL/gl/stencilfunc.3gl diff -u /dev/null xc/doc/man/GL/gl/stencilfunc.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/stencilfunc.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,147 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 stencilfu +.ds Xs 21383 6 stencilfunc.gl +.TH GLSTENCILFUNC 3G +.SH NAME +.B "glStencilFunc +\- set function and reference value for stencil testing + +.EQ +delim $$ +.EN +.SH C SPECIFICATION +void \f3glStencilFunc\fP( +GLenum \fIfunc\fP, +.nf +.ta \w'\f3void \fPglStencilFunc( 'u + GLint \fIref\fP, + GLuint \fImask\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2func\fP\ \ 'u +\f2func\fP +Specifies the test function. +Eight tokens are valid: +\%\f3GL_NEVER\fP, +\%\f3GL_LESS\fP, +\%\f3GL_LEQUAL\fP, +\%\f3GL_GREATER\fP, +\%\f3GL_GEQUAL\fP, +\%\f3GL_EQUAL\fP, +\%\f3GL_NOTEQUAL\fP, and +\%\f3GL_ALWAYS\fP. The initial value is \%\f3GL_ALWAYS\fP. +.TP +\f2ref\fP +Specifies the reference value for the stencil test. +\f2ref\fP is clamped to the range [0,$2 sup n - 1$], +where $n$ is the number of bitplanes in the stencil buffer. The +initial value is 0. +.TP +\f2mask\fP +Specifies a mask that is ANDed with both the reference value +and the stored stencil value when the test is done. The initial value +is all 1's. +.SH DESCRIPTION +Stenciling, +like depth-buffering, +enables and disables drawing on a per-pixel basis. +You draw into the stencil planes using GL drawing primitives, +then render geometry and images, +using the stencil planes to mask out portions of the screen. +Stenciling is typically used in multipass rendering algorithms +to achieve special effects, +such as decals, +outlining, +and constructive solid geometry rendering. +.P +The stencil test conditionally eliminates a pixel based on the outcome +of a comparison between the reference value +and the value in the stencil buffer. +To enable and disable the test, call \%\f3glEnable\fP and \%\f3glDisable\fP +with argument \%\f3GL_STENCIL_TEST\fP. +To specify actions based on the outcome of the stencil test, call +\%\f3glStencilOp\fP. +.P +\f2func\fP is a symbolic constant that determines the stencil comparison function. +It accepts one of eight values, +shown in the following list. +\f2ref\fP is an integer reference value that is used in the stencil comparison. +It is clamped to the range [0,$2 sup n - 1$], +where $n$ is the number of bitplanes in the stencil buffer. +\f2mask\fP is bitwise ANDed with both the reference value +and the stored stencil value, +with the ANDed values participating in the comparison. +.P +If \f2stencil\fP represents the value stored in the corresponding +stencil buffer location, +the following list shows the effect of each comparison function +that can be specified by \f2func\fP. +Only if the comparison succeeds is the pixel passed through +to the next stage in the rasterization process +(see \%\f3glStencilOp\fP). +All tests treat \f2stencil\fP values as unsigned integers in the range +[0,$2 sup n - 1$], +where $n$ is the number of bitplanes in the stencil buffer. +.P +The following values are accepted by \f2func\fP: +.TP 18 +\%\f3GL_NEVER\fP +Always fails. +.TP +\%\f3GL_LESS\fP +Passes if ( \f2ref\fP & \f2mask\fP ) < ( \f2stencil\fP & \f2mask\fP ). +.TP +\%\f3GL_LEQUAL\fP +Passes if ( \f2ref\fP & \f2mask\fP ) \(<= ( \f2stencil\fP & \f2mask\fP ). +.TP +\%\f3GL_GREATER\fP +Passes if ( \f2ref\fP & \f2mask\fP ) > ( \f2stencil\fP & \f2mask\fP ). +.TP +\%\f3GL_GEQUAL\fP +Passes if ( \f2ref\fP & \f2mask\fP ) \(>= ( \f2stencil\fP & \f2mask\fP ). +.TP +\%\f3GL_EQUAL\fP +Passes if ( \f2ref\fP & \f2mask\fP ) = ( \f2stencil\fP & \f2mask\fP ). +.TP +\%\f3GL_NOTEQUAL\fP +Passes if ( \f2ref\fP & \f2mask\fP ) \(!= ( \f2stencil\fP & \f2mask\fP ). +.TP +\%\f3GL_ALWAYS\fP +Always passes. +.SH NOTES +Initially, the stencil test is disabled. +If there is no stencil buffer, +no stencil modification can occur and it is as if +the stencil test always passes. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2func\fP is not one of the eight +accepted values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glStencilFunc\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_STENCIL_FUNC\fP +.br +\%\f3glGet\fP with argument \%\f3GL_STENCIL_VALUE_MASK\fP +.br +\%\f3glGet\fP with argument \%\f3GL_STENCIL_REF\fP +.br +\%\f3glGet\fP with argument \%\f3GL_STENCIL_BITS\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_STENCIL_TEST\fP +.SH SEE ALSO +\%\f3glAlphaFunc(3G)\fP, +\%\f3glBlendFunc(3G)\fP, +\%\f3glDepthFunc(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glIsEnabled(3G)\fP, +\%\f3glLogicOp(3G)\fP, +\%\f3glStencilOp(3G)\fP Index: xc/doc/man/GL/gl/stencilmask.3gl diff -u /dev/null xc/doc/man/GL/gl/stencilmask.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/stencilmask.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,53 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 stencilma +.ds Xs 54403 4 stencilmask.gl +.TH GLSTENCILMASK 3G +.SH NAME +.B "glStencilMask +\- control the writing of individual bits in the stencil planes + +.SH C SPECIFICATION +void \f3glStencilMask\fP( +GLuint \fImask\fP ) +.nf +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2mask\fP\ \ 'u +\f2mask\fP +Specifies a bit mask to enable and disable writing of individual bits +in the stencil planes. +Initially, the mask is all 1's. +.SH DESCRIPTION +\%\f3glStencilMask\fP controls the writing of individual bits in the stencil planes. +The least significant $n$ bits of \f2mask\fP, +where $n$ is the number of bits in the stencil buffer, +specify a mask. +Where a 1 appears in the mask, +it's possible to write to the corresponding bit in the stencil buffer. +Where a 0 appears, +the corresponding bit is write-protected. +Initially, all bits are enabled for writing. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glStencilMask\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_STENCIL_WRITEMASK\fP +.br +\%\f3glGet\fP with argument \%\f3GL_STENCIL_BITS\fP +.SH SEE ALSO +\%\f3glColorMask(3G)\fP, +\%\f3glDepthMask(3G)\fP, +\%\f3glIndexMask(3G)\fP, +\%\f3glStencilFunc(3G)\fP, +\%\f3glStencilOp(3G)\fP Index: xc/doc/man/GL/gl/stencilop.3gl diff -u /dev/null xc/doc/man/GL/gl/stencilop.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/stencilop.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,143 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 stencilop +.ds Xs 3015 6 stencilop.gl +.TH GLSTENCILOP 3G +.SH NAME +.B "glStencilOp +\- set stencil test actions + +.EQ +delim $$ +.EN +.SH C SPECIFICATION +void \f3glStencilOp\fP( +GLenum \fIfail\fP, +.nf +.ta \w'\f3void \fPglStencilOp( 'u + GLenum \fIzfail\fP, + GLenum \fIzpass\fP ) +.fi + +.SH PARAMETERS +.TP \w'\fIzfail\fP\ \ 'u +\f2fail\fP +Specifies the action to take when the stencil test fails. +Six symbolic constants are accepted: +\%\f3GL_KEEP\fP, +\%\f3GL_ZERO\fP, +\%\f3GL_REPLACE\fP, +\%\f3GL_INCR\fP, +\%\f3GL_DECR\fP, and +\%\f3GL_INVERT\fP. The initial value is \%\f3GL_KEEP\fP. +.TP +\f2zfail\fP +Specifies the stencil action when the stencil test passes, +but the depth test fails. +\f2zfail\fP accepts the same symbolic constants as \f2fail\fP. The initial value +is \%\f3GL_KEEP\fP. +.TP +\f2zpass\fP +Specifies the stencil action when both the stencil test and the depth +test pass, or when the stencil test passes and either there is no +depth buffer or depth testing is not enabled. +\f2zpass\fP accepts the same symbolic constants as \f2fail\fP. The initial value +is \%\f3GL_KEEP\fP. +.SH DESCRIPTION +Stenciling, +like depth-buffering, +enables and disables drawing on a per-pixel basis. +You draw into the stencil planes using GL drawing primitives, +then render geometry and images, +using the stencil planes to mask out portions of the screen. +Stenciling is typically used in multipass rendering algorithms +to achieve special effects, +such as decals, +outlining, +and constructive solid geometry rendering. +.P +The stencil test conditionally eliminates a pixel based on the outcome +of a comparison between the value in the stencil buffer and a +reference value. To enable and disable the test, call \%\f3glEnable\fP +and \%\f3glDisable\fP with argument +\%\f3GL_STENCIL_TEST\fP; to control it, call \%\f3glStencilFunc\fP. +.P +\%\f3glStencilOp\fP takes three arguments that indicate what happens +to the stored stencil value while stenciling is enabled. +If the stencil test fails, +no change is made to the pixel's color or depth buffers, +and \f2fail\fP specifies what happens to the stencil buffer contents. +The following six actions are possible. +.TP 16 +\%\f3GL_KEEP\fP +Keeps the current value. +.TP +\%\f3GL_ZERO\fP +Sets the stencil buffer value to 0. +.TP +\%\f3GL_REPLACE\fP +Sets the stencil buffer value to \f2ref\fP, +as specified by \%\f3glStencilFunc\fP. +.TP +\%\f3GL_INCR\fP +Increments the current stencil buffer value. +Clamps to the maximum representable unsigned value. +.TP +\%\f3GL_DECR\fP +Decrements the current stencil buffer value. +Clamps to 0. +.TP +\%\f3GL_INVERT\fP +Bitwise inverts the current stencil buffer value. +.P +Stencil buffer values are treated as unsigned integers. +When incremented and decremented, +values are clamped to 0 and $2 sup n - 1$, +where $n$ is the value returned by querying \%\f3GL_STENCIL_BITS\fP. +.P +The other two arguments to \%\f3glStencilOp\fP specify stencil buffer actions +that depend on whether subsequent depth buffer tests succeed (\f2zpass\fP) +or fail (\f2zfail\fP) (see +.br +\%\f3glDepthFunc\fP). +The actions are specified using the same six symbolic constants as \f2fail\fP. +Note that \f2zfail\fP is ignored when there is no depth buffer, +or when the depth buffer is not enabled. +In these cases, \f2fail\fP and \f2zpass\fP specify stencil action when the +stencil test fails and passes, +respectively. +.SH NOTES +Initially the stencil test is disabled. +If there is no stencil buffer, +no stencil modification can occur +and it is as if the stencil tests always pass, +regardless of any call to \%\f3glStencilOp\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2fail\fP, +\f2zfail\fP, or \f2zpass\fP is any value other than the six defined constant values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glStencilOp\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_STENCIL_FAIL\fP +.br +\%\f3glGet\fP with argument \%\f3GL_STENCIL_PASS_DEPTH_PASS\fP +.br +\%\f3glGet\fP with argument \%\f3GL_STENCIL_PASS_DEPTH_FAIL\fP +.br +\%\f3glGet\fP with argument \%\f3GL_STENCIL_BITS\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_STENCIL_TEST\fP +.SH SEE ALSO +\%\f3glAlphaFunc(3G)\fP, +\%\f3glBlendFunc(3G)\fP, +\%\f3glDepthFunc(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glLogicOp(3G)\fP, +\%\f3glStencilFunc(3G)\fP Index: xc/doc/man/GL/gl/texcoord.3gl diff -u /dev/null xc/doc/man/GL/gl/texcoord.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/texcoord.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,237 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 texcoord. +.ds Xs 3537 4 texcoord.gl +.TH GLTEXCOORD 3G +.SH NAME +.B "glTexCoord1d, glTexCoord1f, glTexCoord1i, glTexCoord1s, glTexCoord2d, glTexCoord2f, glTexCoord2i, glTexCoord2s, glTexCoord3d, glTexCoord3f, glTexCoord3i, glTexCoord3s, glTexCoord4d, glTexCoord4f, glTexCoord4i, glTexCoord4s, glTexCoord1dv, glTexCoord1fv, glTexCoord1iv, glTexCoord1sv, glTexCoord2dv, glTexCoord2fv, glTexCoord2iv, glTexCoord2sv, glTexCoord3dv, glTexCoord3fv, glTexCoord3iv, glTexCoord3sv, glTexCoord4dv, glTexCoord4fv, glTexCoord4iv, glTexCoord4sv +\- set the current texture coordinates + +.SH C SPECIFICATION +void \f3glTexCoord1d\fP( +GLdouble \fIs\fP ) +.nf +.fi +void \f3glTexCoord1f\fP( +GLfloat \fIs\fP ) +.nf +.fi +void \f3glTexCoord1i\fP( +GLint \fIs\fP ) +.nf +.fi +void \f3glTexCoord1s\fP( +GLshort \fIs\fP ) +.nf +.fi +void \f3glTexCoord2d\fP( +GLdouble \fIs\fP, +.nf +.ta \w'\f3void \fPglTexCoord2d( 'u + GLdouble \fIt\fP ) +.fi +void \f3glTexCoord2f\fP( +GLfloat \fIs\fP, +.nf +.ta \w'\f3void \fPglTexCoord2f( 'u + GLfloat \fIt\fP ) +.fi +void \f3glTexCoord2i\fP( +GLint \fIs\fP, +.nf +.ta \w'\f3void \fPglTexCoord2i( 'u + GLint \fIt\fP ) +.fi +void \f3glTexCoord2s\fP( +GLshort \fIs\fP, +.nf +.ta \w'\f3void \fPglTexCoord2s( 'u + GLshort \fIt\fP ) +.fi +void \f3glTexCoord3d\fP( +GLdouble \fIs\fP, +.nf +.ta \w'\f3void \fPglTexCoord3d( 'u + GLdouble \fIt\fP, + GLdouble \fIr\fP ) +.fi +void \f3glTexCoord3f\fP( +GLfloat \fIs\fP, +.nf +.ta \w'\f3void \fPglTexCoord3f( 'u + GLfloat \fIt\fP, + GLfloat \fIr\fP ) +.fi +void \f3glTexCoord3i\fP( +GLint \fIs\fP, +.nf +.ta \w'\f3void \fPglTexCoord3i( 'u + GLint \fIt\fP, + GLint \fIr\fP ) +.fi +void \f3glTexCoord3s\fP( +GLshort \fIs\fP, +.nf +.ta \w'\f3void \fPglTexCoord3s( 'u + GLshort \fIt\fP, + GLshort \fIr\fP ) +.fi +void \f3glTexCoord4d\fP( +GLdouble \fIs\fP, +.nf +.ta \w'\f3void \fPglTexCoord4d( 'u + GLdouble \fIt\fP, + GLdouble \fIr\fP, + GLdouble \fIq\fP ) +.fi +void \f3glTexCoord4f\fP( +GLfloat \fIs\fP, +.nf +.ta \w'\f3void \fPglTexCoord4f( 'u + GLfloat \fIt\fP, + GLfloat \fIr\fP, + GLfloat \fIq\fP ) +.fi +void \f3glTexCoord4i\fP( +GLint \fIs\fP, +.nf +.ta \w'\f3void \fPglTexCoord4i( 'u + GLint \fIt\fP, + GLint \fIr\fP, + GLint \fIq\fP ) +.fi +void \f3glTexCoord4s\fP( +GLshort \fIs\fP, +.nf +.ta \w'\f3void \fPglTexCoord4s( 'u + GLshort \fIt\fP, + GLshort \fIr\fP, + GLshort \fIq\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2s\fP\ \f2t\fP\ \f2r\fP\ \f2q\fP\ \ 'u +\f2s\fP, \f2t\fP, \f2r\fP, \f2q\fP +Specify \f2s\fP, \f2t\fP, \f2r\fP, and \f2q\fP texture coordinates. +Not all parameters are present in all forms of the command. +.SH C SPECIFICATION +void \f3glTexCoord1dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glTexCoord1fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glTexCoord1iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glTexCoord1sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi +void \f3glTexCoord2dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glTexCoord2fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glTexCoord2iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glTexCoord2sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi +void \f3glTexCoord3dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glTexCoord3fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glTexCoord3iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glTexCoord3sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi +void \f3glTexCoord4dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glTexCoord4fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glTexCoord4iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glTexCoord4sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi + +.SH PARAMETERS +.TP +\f2v\fP +Specifies a pointer to an array of one, two, three, or four elements, +which in turn specify the +\f2s\fP, +\f2t\fP, +\f2r\fP, and +\f2q\fP texture coordinates. +.SH DESCRIPTION +\%\f3glTexCoord\fP specifies texture coordinates in +one, +two, +three, or +four dimensions. +\%\f3glTexCoord1\fP sets the current texture coordinates to +(\f2s\fP, 0, 0, 1); +a call to +.br +\%\f3glTexCoord2\fP sets them to +(\f2s\fP, \f2t\fP, 0, 1). +.BP +Similarly, \%\f3glTexCoord3\fP specifies the texture coordinates as +(\f2s\fP, \f2t\fP, \f2r\fP, 1), and +\%\f3glTexCoord4\fP defines all four components explicitly as +(\f2s\fP, \f2t\fP, \f2r\fP, \f2q\fP). +.P +The current texture coordinates are part of the data +that is associated with each vertex and with the current +raster position. +Initially, the values for +\f2s\fP, +\f2t\fP, +\f2r\fP, and +\f2q\fP +are (0, 0, 0, 1). +.P +.SH NOTES +The current texture coordinates can be updated at any time. +In particular, +\%\f3glTexCoord\fP can be called between a call to \%\f3glBegin\fP and the corresponding +call to \%\f3glEnd\fP. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, \%\f3glTexCoord\fP always +updates texture unit \%\f3GL_TEXTURE0_ARB\fP. +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_CURRENT_TEXTURE_COORDS\fP +.SH SEE ALSO +\%\f3glTexCoordPointer(3G)\fP, +\%\f3glVertex(3G)\fP Index: xc/doc/man/GL/gl/texcoordpointer.3gl diff -u /dev/null xc/doc/man/GL/gl/texcoordpointer.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/texcoordpointer.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,132 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 texcoordp +.ds Xs 65158 7 texcoordpointer.gl +.TH GLTEXCOORDPOINTER 3G +.SH NAME +.B "glTexCoordPointer +\- define an array of texture coordinates + +.SH C SPECIFICATION +void \f3glTexCoordPointer\fP( +GLint \fIsize\fP, +.nf +.ta \w'\f3void \fPglTexCoordPointer( 'u + GLenum \fItype\fP, + GLsizei \fIstride\fP, + const GLvoid \fI*ptr\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIstride\fP\ \ 'u +\f2size\fP +Specifies the number of coordinates per array element. Must be 1, 2, 3 +or 4. The initial value is 4. +.TP +\f2type\fP +Specifies the data type of each texture coordinate. +Symbolic constants +\%\f3GL_SHORT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +or \%\f3GL_DOUBLE\fP +are accepted. The initial value is \%\f3GL_FLOAT\fP. +.TP +\f2stride\fP +Specifies the byte offset between consecutive array elements. +If \f2stride\fP is 0, the array elements are understood +to be tightly packed. The initial value is 0. +.TP +\f2ptr\fP +Specifies a pointer to the first coordinate of the first element in the +array. The initial value is 0. +.SH DESCRIPTION +\%\f3glTexCoordPointer\fP specifies the location and data of an array of texture +coordinates to use when rendering. +\f2size\fP specifies the number of coordinates per +element, and must be 1, 2, 3, or 4. +\f2type\fP specifies the data type of each texture coordinate +and \f2stride\fP specifies the byte stride from one +array element to the next allowing vertices and attributes +to be packed into a single array or stored in separate arrays. +(Single-array storage may be more efficient on some implementations; +see +.br +\%\f3glInterleavedArrays\fP.) +When a texture +coordinate array is specified, \f2size\fP, \f2type\fP, \f2stride\fP, and \f2ptr\fP +are saved client-side state. +.P +To enable and disable the texture coordinate array, call +\%\f3glEnableClientState\fP and \%\f3glDisableClientState\fP with the argument +\%\f3GL_TEXTURE_COORD_ARRAY\fP. If +enabled, the texture coordinate array is used +when \%\f3glDrawArrays\fP, \%\f3glDrawElements\fP, \%\f3glDrawRangeElements\fP or +\%\f3glArrayElement\fP is called. +.P +Use \%\f3glDrawArrays\fP to construct a sequence of primitives (all of the +same type) from prespecified vertex and vertex attribute arrays. +Use \%\f3glArrayElement\fP to specify primitives +by indexing vertices and vertex attributes and \%\f3glDrawElements\fP to +construct a sequence of primitives by indexing vertices and vertex attributes. +.SH NOTES +\%\f3glTexCoordPointer\fP is available only if the GL version is 1.1 or greater. +.P +The texture coordinate array is initially disabled and it won't be +accessed when +\%\f3glArrayElement\fP, \%\f3glDrawElements\fP, \%\f3glDrawRangeElements\fP, or +\%\f3glDrawArrays\fP is called. +.P +Execution of \%\f3glTexCoordPointer\fP is not allowed between the execution of +\%\f3glBegin\fP and the corresponding execution of \%\f3glEnd\fP, +but an error may or may not be generated. If no error is generated, +the operation is undefined. +.P +\%\f3glTexCoordPointer\fP is typically implemented on the client side with no protocol. +.P +The texture coordinate array parameters are client-side state and are +therefore not saved or restored by \%\f3glPushAttrib\fP and \%\f3glPopAttrib\fP. +Use \%\f3glPushClientAttrib\fP and +\%\f3glPopClientAttrib\fP instead. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, \%\f3glTexCoordPointer\fP updates the +texture coordinate array state of the active client texture unit, +specified with \%\f3glClientActiveTextureARB\fP. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2size\fP is not 1, 2, 3, or 4. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2stride\fP is negative. +.SH ASSOCIATED GETS +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_COORD_ARRAY\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_COORD_ARRAY_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_COORD_ARRAY_TYPE\fP +.br +\%\f3glGetPointerv\fP with argument \%\f3GL_TEXTURE_COORD_ARRAY_POINTER\fP +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glClientActiveTextureARB(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glDrawElements(3G)\fP, +\%\f3glDrawRangeElements(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glGetPointerv(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glPopClientAttrib(3G)\fP, +\%\f3glPushClientAttrib(3G)\fP, +\%\f3glTexCoord(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/texenv.3gl diff -u /dev/null xc/doc/man/GL/gl/texenv.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/texenv.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,196 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 texenv.gl +.ds Xs 19951 8 texenv.gl +.TH GLTEXENV 3G +.SH NAME +.B "glTexEnvf, glTexEnvi, glTexEnvfv, glTexEnviv +\- set texture environment parameters + +.SH C SPECIFICATION +void \f3glTexEnvf\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexEnvf( 'u + GLenum \fIpname\fP, + GLfloat \fIparam\fP ) +.fi +void \f3glTexEnvi\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexEnvi( 'u + GLenum \fIpname\fP, + GLint \fIparam\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Specifies a texture environment. +Must be \%\f3GL_TEXTURE_ENV\fP. +.TP +\f2pname\fP +Specifies the symbolic name of a single-valued texture environment parameter. +Must be \%\f3GL_TEXTURE_ENV_MODE\fP. +.TP +\f2param\fP +Specifies a single symbolic constant, one of \%\f3GL_MODULATE\fP, +\%\f3GL_DECAL\fP, \%\f3GL_BLEND\fP, or \%\f3GL_REPLACE\fP. +.SH C SPECIFICATION +void \f3glTexEnvfv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexEnvfv( 'u + GLenum \fIpname\fP, + const GLfloat \fI*params\fP ) +.fi +void \f3glTexEnviv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexEnviv( 'u + GLenum \fIpname\fP, + const GLint \fI*params\fP ) +.fi + +.SH PARAMETERS +.TP +\f2target\fP +Specifies a texture environment. +Must be \%\f3GL_TEXTURE_ENV\fP. +.TP +\f2pname\fP +Specifies the symbolic name of a texture environment parameter. +Accepted values are \%\f3GL_TEXTURE_ENV_MODE\fP and \%\f3GL_TEXTURE_ENV_COLOR\fP. +.TP +\f2params\fP +Specifies a pointer to a parameter array that contains +either a single symbolic constant or an RGBA color. +.SH DESCRIPTION +A texture environment specifies how texture values are interpreted +when a fragment is textured. +\f2target\fP must be \%\f3GL_TEXTURE_ENV\fP. +\f2pname\fP can be either \%\f3GL_TEXTURE_ENV_MODE\fP or \%\f3GL_TEXTURE_ENV_COLOR\fP. +.P +If \f2pname\fP is \%\f3GL_TEXTURE_ENV_MODE\fP, +then \f2params\fP is (or points to) the symbolic name of a texture function. +Four texture functions may be specified: +\%\f3GL_MODULATE\fP, +\%\f3GL_DECAL\fP, +\%\f3GL_BLEND\fP, and +\%\f3GL_REPLACE\fP. +.P +A texture function acts on the fragment to be textured using +the texture image value that applies to the fragment +(see \%\f3glTexParameter\fP) +and produces an RGBA color for that fragment. +The following table shows how the RGBA color is produced for each +of the three texture functions that can be chosen. +$C$ is a triple of color values (RGB) and $A$ is the associated alpha value. +RGBA values extracted from a texture image are in the range [0,1]. +The subscript $f$ refers to the incoming fragment, +the subscript $t$ to the texture image, +the subscript $c$ to the texture environment color, +and subscript $v$ indicates a value produced by the texture function. +.P +A texture image can have up to four components per texture element +(see \%\f3glTexImage1D\fP, \%\f3glTexImage2D\fP, \%\f3glTexImage3D\fP, +\%\f3glCopyTexImage1D\fP, and \%\f3glCopyTexImage2D\fP). +In a one-component image, +$L sub t$ indicates that single component. +A two-component image uses $L sub t$ and $A sub t$. +A three-component image has only a color value, $C sub t$. +A four-component image has both a color value $C sub t$ +and an alpha value $A sub t$. +.sp +.ne +.TS +center tab(:) ; +cb cb s s s +ci c c c c +c c c c c. +_ +Base internal:Texture functions +:\%\f3GL_MODULATE\fP:\%\f3GL_DECAL\fP:\%\f3GL_BLEND\fP:\%\f3GL_REPLACE\fP +_ +\%\f3GL_ALPHA\fP:$C sub v ~=~ C sub f$:undefined:$C sub v ~=~ C sub f$:$C sub v ~=~ C sub f$ +\^ :$A sub v ~=~ A sub f A sub t$:\^:$A sub v ~=~ A sub f$:$A sub v ~=~ A sub t$ +_ +\%\f3GL_LUMINANCE\fP:$C sub v ~=~ L sub t C sub f$:undefined:$C sub v ~=~ ( 1 - L sub t ) C sub f$:$C sub v ~=~ L sub t$ +: : :$+ L sub t C sub c$: +1: $A sub v ~=~ A sub f$:\^: $A sub v ~=~ A sub f$:$A sub v ~=~ A sub f$ +_ +\%\f3GL_LUMINANCE\fP:$C sub v ~=~ L sub t C sub f$:undefined:$C sub v ~=~ ( 1 - L sub t ) C sub f $:$C sub v ~=~ L sub t$ +\\f3_ALPHA\fP: : : $+ L sub t C sub c$ +2:$A sub v ~=~ A sub t A sub f$:\^:$A sub v ~=~ A sub t A sub f$:$A sub v ~=~ A sub t$ +_ +\%\f3GL_INTENSITY\fP:$C sub v ~=~ C sub f I sub t$:undefined:$C sub v ~=~ ( 1 - I sub t ) C sub f$ :$C sub v ~=~ I sub t$ +: : :$+ I sub t C sub c$ +c\^ :$A sub v ~=~ A sub f I sub t$:\^:$A sub v ~=~ ( 1 - I sub t ) A sub f $:$A sub v ~=~ I sub t$ +: : :$+ I sub t A sub c$: +_ +\%\f3GL_RGB\fP:$C sub v ~=~ C sub t C sub f$:$C sub v ~=~ C sub t$:$C sub v ~=~ (1 - C sub t) C sub f $:$C sub v ~=~ C sub t$ +: : : $+ C sub t C sub c$ +3:$A sub v ~=~ A sub f$:$A sub v ~=~ A sub f$:$A sub v ~=~ A sub f$:$A sub v ~=~ A sub f$ +_ +\%\f3GL_RGBA\fP:$C sub v ~=~ C sub t C sub f$:$C sub v ~=~ ( 1 - A sub t ) C sub f $:$C sub v ~=~ (1 - C sub t) C sub f $:$C sub v ~=~ C sub t$ +: :$+ A sub t C sub t$: $+ C sub t C sub c$ +4:$A sub v ~=~ A sub t A sub f$:$A sub v ~=~ A sub f$:$A sub v ~=~ A sub t A sub f$:$A sub v ~=~ A sub t$ +_ +.TE +.bp +If \f2pname\fP is \%\f3GL_TEXTURE_ENV_COLOR\fP, +\f2params\fP is a pointer to an array that holds an RGBA color consisting of four +values. +Integer color components are interpreted linearly such that the most +positive integer maps to 1.0, +and the most negative integer maps to -1.0. +The values are clamped to the range [0,1] when they are specified. +$C sub c$ takes these four values. +.P +\%\f3GL_TEXTURE_ENV_MODE\fP defaults to \%\f3GL_MODULATE\fP and +\%\f3GL_TEXTURE_ENV_COLOR\fP defaults to (0, 0, 0, 0). +.SH NOTES +\%\f3GL_REPLACE\fP may only be used if the GL version is 1.1 or greater. +.P +Internal formats other than 1, 2, 3, or 4 may only be used if the GL +version is 1.1 or greater. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glTexEnv\fP controls +the texture environment for the current active texture unit, selected by +\%\f3glActiveTextureARB\fP. +.sh ERRORS +\%\f3GL_INVALID_ENUM\fP is generated when \f2target\fP or \f2pname\fP is not +one of the accepted defined values, +or when \f2params\fP should have a defined constant value +(based on the value of \f2pname\fP) +and does not. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glTexEnv\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexEnv\fP +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP + Index: xc/doc/man/GL/gl/texgen.3gl diff -u /dev/null xc/doc/man/GL/gl/texgen.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/texgen.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,270 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 texgen.gl +.ds Xs 27155 9 texgen.gl +.TH GLTEXGEN 3G +.SH NAME +.B "glTexGend, glTexGenf, glTexGeni, glTexGendv, glTexGenfv, glTexGeniv +\- control the generation of texture coordinates + +.SH C SPECIFICATION +void \f3glTexGend\fP( +GLenum \fIcoord\fP, +.nf +.ta \w'\f3void \fPglTexGend( 'u + GLenum \fIpname\fP, + GLdouble \fIparam\fP ) +.fi +void \f3glTexGenf\fP( +GLenum \fIcoord\fP, +.nf +.ta \w'\f3void \fPglTexGenf( 'u + GLenum \fIpname\fP, + GLfloat \fIparam\fP ) +.fi +void \f3glTexGeni\fP( +GLenum \fIcoord\fP, +.nf +.ta \w'\f3void \fPglTexGeni( 'u + GLenum \fIpname\fP, + GLint \fIparam\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIparams\fP\ \ 'u +\f2coord\fP +Specifies a texture coordinate. +Must be one of \%\f3GL_S\fP, \%\f3GL_T\fP, \%\f3GL_R\fP, or \%\f3GL_Q\fP. +.TP +\f2pname\fP +Specifies the symbolic name of the texture-coordinate generation function. +Must be \%\f3GL_TEXTURE_GEN_MODE\fP. +.TP +\f2param\fP +Specifies a single-valued texture generation parameter, +one of \%\f3GL_OBJECT_LINEAR\fP, \%\f3GL_EYE_LINEAR\fP, or \%\f3GL_SPHERE_MAP\fP. +.SH C SPECIFICATION +void \f3glTexGendv\fP( +GLenum \fIcoord\fP, +.nf +.ta \w'\f3void \fPglTexGendv( 'u + GLenum \fIpname\fP, + const GLdouble \fI*params\fP ) +.fi +void \f3glTexGenfv\fP( +GLenum \fIcoord\fP, +.nf +.ta \w'\f3void \fPglTexGenfv( 'u + GLenum \fIpname\fP, + const GLfloat \fI*params\fP ) +.fi +void \f3glTexGeniv\fP( +GLenum \fIcoord\fP, +.nf +.ta \w'\f3void \fPglTexGeniv( 'u + GLenum \fIpname\fP, + const GLint \fI*params\fP ) +.fi + +.SH PARAMETERS +.TP +\f2coord\fP +Specifies a texture coordinate. +Must be one of \%\f3GL_S\fP, \%\f3GL_T\fP, \%\f3GL_R\fP, or \%\f3GL_Q\fP. +.TP +\f2pname\fP +Specifies the symbolic name of the texture-coordinate generation function +or function parameters. +Must be +\%\f3GL_TEXTURE_GEN_MODE\fP, +\%\f3GL_OBJECT_PLANE\fP, or +\%\f3GL_EYE_PLANE\fP. +.TP +\f2params\fP +Specifies a pointer to an array of texture generation parameters. +If \f2pname\fP is \%\f3GL_TEXTURE_GEN_MODE\fP, +then the array must contain a single symbolic constant, +one of +\%\f3GL_OBJECT_LINEAR\fP, +\%\f3GL_EYE_LINEAR\fP, or +\%\f3GL_SPHERE_MAP\fP. +Otherwise, +\f2params\fP holds the coefficients for the texture-coordinate generation function +specified by \f2pname\fP. +.SH DESCRIPTION +\%\f3glTexGen\fP selects a texture-coordinate generation function +or supplies coefficients for one of the functions. +\f2coord\fP names one of the (\f2s\fP, \f2t\fP, \f2r\fP, \f2q\fP) texture +coordinates; it must be one of the symbols +\%\f3GL_S\fP, +\%\f3GL_T\fP, +\%\f3GL_R\fP, or +\%\f3GL_Q\fP. +\f2pname\fP must be one of three symbolic constants: +\%\f3GL_TEXTURE_GEN_MODE\fP, +\%\f3GL_OBJECT_PLANE\fP, or +\%\f3GL_EYE_PLANE\fP. +If \f2pname\fP is \%\f3GL_TEXTURE_GEN_MODE\fP, +then \f2params\fP chooses a mode, +one of +\%\f3GL_OBJECT_LINEAR\fP, +\%\f3GL_EYE_LINEAR\fP, or +\%\f3GL_SPHERE_MAP\fP. +If \f2pname\fP is either \%\f3GL_OBJECT_PLANE\fP or \%\f3GL_EYE_PLANE\fP, +\f2params\fP contains coefficients for the corresponding +texture generation function. +.P +If the texture generation function is \%\f3GL_OBJECT_LINEAR\fP, +the function +.P +.ce +$g ~=~ p sub 1^x sub o ~+~ p sub 2^y sub o ~+~ p sub 3^z sub o ~+~ p sub 4^w sub o$ +.P +.br +is used, where $g$ is the value computed for the coordinate named in \f2coord\fP, +$p sub 1$, +$p sub 2$, +$p sub 3$, +and +$p sub 4$ are the four values supplied in \f2params\fP, and +$x sub o$, +$y sub o$, +$z sub o$, and +$w sub o$ are the object coordinates of the vertex. +This function can be used, for example, to texture-map terrain using sea level +as a reference plane +(defined by $p sub 1$, $p sub 2$, $p sub 3$, and $p sub 4$). +The altitude of a terrain vertex is computed by the \%\f3GL_OBJECT_LINEAR\fP +coordinate generation function as its distance from sea level; +that altitude can then be used to index the texture image to map white snow +onto peaks and green grass onto foothills. +.P +If the texture generation function is \%\f3GL_EYE_LINEAR\fP, the function +.P +.ce +$g ~=~ p sub 1 sup prime ^x sub e ~+~ p sub 2 sup prime ^y sub e ~+~ p sub 3 sup prime ^z sub e ~+~ p sub 4 sup prime ^w sub e$ +.P +.br +is used, where +.P +.ce +$( p sub 1 sup prime +~~p sub 2 sup prime~~p sub 3 sup prime~~ +{ p sub 4 sup prime}) ~=~ ( p sub 1~~ p sub 2~~ p sub 3~~ p sub 4 ) ~M sup -1$ +.P +.br +and +$x sub e$, +$y sub e$, +$z sub e$, and +$w sub e$ are the eye coordinates of the vertex, +$p sub 1$, +$p sub 2$, +$p sub 3$, +and +$p sub 4$ are the values supplied in \f2params\fP, and +$M$ is the modelview matrix when \%\f3glTexGen\fP is invoked. +If $M$ is poorly conditioned or singular, +texture coordinates generated by the resulting function may be inaccurate +or undefined. +.P +Note that the values in \f2params\fP define a reference plane in eye coordinates. +The modelview matrix that is applied to them may not be the same one +in effect when the polygon vertices are transformed. +This function establishes a field of texture coordinates +that can produce dynamic contour lines on moving objects. +.P +If \f2pname\fP is \%\f3GL_SPHERE_MAP\fP and \f2coord\fP is either +\%\f3GL_S\fP or +\%\f3GL_T\fP, +$s$ and $t$ texture coordinates are generated as follows. +Let \f2u\fP be the unit vector pointing from the origin to the polygon vertex +(in eye coordinates). +Let \f2n\fP sup prime be the current normal, +after transformation to eye coordinates. +Let +.P +.ce +$f ~=~ ( f sub x~~f sub y~~f sub z ) sup T$ +be the reflection vector such that +.P +.ce +$f ~=~ u ~-~ 2 n sup prime n sup prime sup T u$ +.br +.P +Finally, let $ m ~=~ 2 sqrt { f sub x sup {~2} ~+~ f sub y sup {~2} ~+~ (f sub z ~+~ 1 ) sup 2}$. +Then the values assigned to the $s$ and $t$ texture coordinates are +.P +.ce 1 +$s ~=~ f sub x over m ~+~ 1 over 2$ +.sp +.ce 1 +$t ~=~ f sub y over m ~+~ 1 over 2$ +.P +To enable or disable a texture-coordinate generation function, call +\%\f3glEnable\fP or \%\f3glDisable\fP +with one of the symbolic texture-coordinate names +(\%\f3GL_TEXTURE_GEN_S\fP, +\%\f3GL_TEXTURE_GEN_T\fP, +\%\f3GL_TEXTURE_GEN_R\fP, or +\%\f3GL_TEXTURE_GEN_Q\fP) as the argument. +When enabled, +the specified texture coordinate is computed +according to the generating function associated with that coordinate. +When disabled, +subsequent vertices take the specified texture coordinate +from the current set of texture coordinates. Initially, all texture +generation functions are set to \%\f3GL_EYE_LINEAR\fP and are disabled. +Both $s$ plane equations are (1, 0, 0, 0), +both $t$ plane equations are (0, 1, 0, 0), +and all $r$ and $q$ plane equations are (0, 0, 0, 0). +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glTexGen\fP set the +texture generation parameters for the currently active texture unit, +selected with \%\f3glActiveTextureARB\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated when \f2coord\fP or \f2pname\fP is not an +accepted defined value, +or when \f2pname\fP is \%\f3GL_TEXTURE_GEN_MODE\fP and \f2params\fP is not an +accepted defined value. +.P +\%\f3GL_INVALID_ENUM\fP is generated when \f2pname\fP is \%\f3GL_TEXTURE_GEN_MODE\fP, +\f2params\fP is \%\f3GL_SPHERE_MAP\fP, +and \f2coord\fP is either \%\f3GL_R\fP or \%\f3GL_Q\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glTexGen\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexGen\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_GEN_S\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_GEN_T\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_GEN_R\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_GEN_Q\fP +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP Index: xc/doc/man/GL/gl/teximage1d.3gl diff -u /dev/null xc/doc/man/GL/gl/teximage1d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/teximage1d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,449 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 teximage1 +.ds Xs 26416 17 teximage1d.gl +.TH GLTEXIMAGE1D 3G +.SH NAME +.B "glTexImage1D +\- specify a one-dimensional texture image + +.SH C SPECIFICATION +void \f3glTexImage1D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexImage1D( 'u + GLint \fIlevel\fP, + GLint \fIinternalFormat\fP, + GLsizei \fIwidth\fP, + GLint \fIborder\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + const GLvoid \fI*pixels\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIinternalFormat\fP\ \ 'u +\f2target\fP +Specifies the target texture. +Must be \%\f3GL_TEXTURE_1D\fP or \%\f3GL_PROXY_TEXTURE_1D\fP. +.TP +\f2level\fP +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +.TP +\f2internalFormat\fP +Specifies the number of color components in the texture. +Must be 1, 2, 3, or 4, or one of the following symbolic constants: +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_INTENSITY4\fP, +\%\f3GL_INTENSITY8\fP, +\%\f3GL_INTENSITY12\fP, +\%\f3GL_INTENSITY16\fP, +\%\f3GL_RGB\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, or +\%\f3GL_RGBA16\fP. +.TP +\f2width\fP +Specifies the width of the texture image. +Must be $2 sup n + 2 ( "border" )$ for some integer $n$. All +implementations support texture images that are at least 64 texels +wide. The height of the 1D texture image is 1. +.TP +\f2border\fP +Specifies the width of the border. +Must be either 0 or 1. +.TP +\f2format\fP +Specifies the of the pixel data. +The following symbolic values are accepted: +\%\f3GL_COLOR_INDEX\fP, +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, and +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +Specifies the data type of the pixel data. +The following symbolic values are accepted: +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP. +.TP +\f2pixels\fP +Specifies a pointer to the image data in memory. +.SH DESCRIPTION +Texturing maps a portion of a specified texture image +onto each graphical primitive for which texturing is enabled. +To enable and disable one-dimensional texturing, call \%\f3glEnable\fP +and \%\f3glDisable\fP with argument \%\f3GL_TEXTURE_1D\fP. +.P +Texture images are defined with \%\f3glTexImage1D\fP. +The arguments describe the parameters of the texture image, +such as width, +width of the border, +level-of-detail number +(see \%\f3glTexParameter\fP), +and the internal resolution and used to store the image. +The last three arguments describe how the image is represented in +memory; they are identical to the pixel formats used for +\%\f3glDrawPixels\fP. +.P +If \f2target\fP is \%\f3GL_PROXY_TEXTURE_1D\fP, no data is read from \f2pixels\fP, but +all of the texture image state is recalculated, checked for +consistency, and checked against the implementation's capabilities. +If the implementation cannot handle a texture of the +requested texture size, it sets all of the image state to 0, +but does not generate an error (see \%\f3glGetError\fP). To query for an +entire mipmap array, use an image array level greater than or equal to +1. +.P +If \f2target\fP is \%\f3GL_TEXTURE_1D\fP, +data is read from \f2pixels\fP as a sequence of signed or unsigned bytes, +shorts, +or longs, +or single-precision floating-point values, +depending on \f2type\fP. +These values are grouped into sets of one, +two, +three, +or four values, +depending on \f2format\fP, +to form elements. +If \f2type\fP is \%\f3GL_BITMAP\fP, +the data is considered as a string of unsigned bytes +(and \f2format\fP must be \%\f3GL_COLOR_INDEX\fP). +Each data byte is treated as eight 1-bit elements, +with bit ordering determined by \%\f3GL_UNPACK_LSB_FIRST\fP +(see \%\f3glPixelStore\fP). +.P +The first element corresponds to the left end of the texture array. +Subsequent elements progress left-to-right through the remaining texels +in the texture array. +The final element corresponds to the right end of the texture array. +.P +\f2format\fP determines the composition of each element in \f2pixels\fP. +It can assume one of eleven symbolic values: +.TP 10 +\%\f3GL_COLOR_INDEX\fP +Each element is a single value, +a color index. +The GL converts it to fixed point +(with an unspecified number of zero bits to the right of the binary point), +shifted left or right depending on the value and sign of \%\f3GL_INDEX_SHIFT\fP, +and added to \%\f3GL_INDEX_OFFSET\fP +(see \%\f3glPixelTransfer\fP). +The resulting index is converted to a set of color components +using the +\%\f3GL_PIXEL_MAP_I_TO_R\fP, +\%\f3GL_PIXEL_MAP_I_TO_G\fP, +\%\f3GL_PIXEL_MAP_I_TO_B\fP, and +\%\f3GL_PIXEL_MAP_I_TO_A\fP tables, +and clamped to the range [0,1]. +.TP +\%\f3GL_RED\fP +Each element is a single red component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for green and blue, and 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP. +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_GREEN\fP +Each element is a single green component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red and blue, and 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_BLUE\fP +Each element is a single blue component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red and green, and 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_ALPHA\fP +Each element is a single alpha component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red, green, and blue. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_RGB\fP +.TP +\%\f3GL_BGR\fP +Each element is an RGB triple. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_RGBA\fP +.TP +\%\f3GL_BGRA\fP +Each element contains all four components. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_LUMINANCE\fP +Each element is a single luminance value. +The GL converts it to floating point, +then assembles it into an RGBA element by replicating the luminance value +three times for red, green, and blue and attaching 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_LUMINANCE_ALPHA\fP +Each element is a luminance/alpha pair. +The GL converts it to floating point, +then assembles it into an RGBA element by replicating the luminance value +three times for red, green, and blue. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] (see \%\f3glPixelTransfer\fP). +.P +If an application wants to store the texture at a certain +resolution or in a certain , it can request the resolution +and with \f2internalFormat\fP. The GL will choose an internal +representation that closely approximates that requested by \f2internalFormat\fP, but +it may not match exactly. +(The representations specified by \%\f3GL_LUMINANCE\fP, \%\f3GL_LUMINANCE_ALPHA\fP, \%\f3GL_RGB\fP, +and \%\f3GL_RGBA\fP must match exactly. The numeric values 1, 2, 3, and 4 may also be used to +specify the preceding representations.) +.P +Use the \%\f3GL_PROXY_TEXTURE_1D\fP target to try out a resolution and +. The implementation will +update and recompute its best match for the requested storage resolution +and . To query this state, call \%\f3glGetTexLevelParameter\fP. +If the texture cannot be accommodated, texture state is set to 0. +.P +A one-component texture image uses only the red component of the RGBA +color from \f2pixels\fP. +A two-component image uses the R and A values. +A three-component image uses the R, G, and B values. +A four-component image uses all of the RGBA components. +.SH NOTES +Texturing has no effect in color index mode. +.P +If the \%\f3GL_ARB_imaging\fP extension is supported, RGBA elements may +also be processed by the imaging pipeline. The following stages may be +applied to an RGBA color before color component clamping to the range +[0,\ 1]: +.TP 3 +1. Color component replacement by the color table specified for +\%\f3GL_COLOR_TABLE\fP, if enabled. See \%\f3glColorTable\fP. +.TP +2. One-dimensional convolution filtering, if enabled. See +\%\f3glConvolutionFilter1D\fP. +.IP +If a convolution filter changes the __width of the texture (by +processing with a \%\f3GL_CONVOLUTION_BORDER_MODE\fP of \%\f3GL_REDUCE\fP, for +example), the \f2width\fP must $2 sup n + 2 ( "border" )$, for some +integer $n$, after filtering. +.TP +3. RGBA components may be multiplied by \%\f3GL_POST_CONVOLUTION_c_SCALE\fP, +and added to \%\f3GL_POST_CONVOLUTION_c_BIAS\fP, if enabled. See +\%\f3glPixelTransfer\fP. +.TP +4. Color component replacement by the color table specified for +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, if enabled. See \%\f3glColorTable\fP. +.TP +5. Transformation by the color matrix. See \%\f3glMatrixMode\fP. +.TP +6. RGBA components may be multiplied by \%\f3GL_POST_COLOR_MATRIX_c_SCALE\fP, +and added to \%\f3GL_POST_COLOR_MATRIX_c_BIAS\fP, if enabled. See +\%\f3glPixelTransfer\fP. +.TP +7. Color component replacement by the color table specified for +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP, if enabled. See \%\f3glColorTable\fP. +.P +The texture image can be represented by the same data formats +as the pixels in a \%\f3glDrawPixels\fP command, +except that \%\f3GL_STENCIL_INDEX\fP and \%\f3GL_DEPTH_COMPONENT\fP +cannot be used. +\%\f3glPixelStore\fP and \%\f3glPixelTransfer\fP modes affect texture images +in exactly the way they affect \%\f3glDrawPixels\fP. +.P +\%\f3GL_PROXY_TEXTURE_1D\fP may be used only if the GL version is 1.1 or greater. +.P +Internal formats other than 1, 2, 3, or 4 may be +used only if the GL version is 1.1 or greater. +.P +In GL version 1.1 or greater, +\f2pixels\fP may be a null pointer. In this case texture memory is +allocated to accommodate a texture of width \f2width\fP. +You can then download subtextures to initialize the +texture memory. The image is undefined if the program tries to apply +an uninitialized portion of the texture image to a primitive. +.P +Formats \%\f3GL_BGR\fP, and \%\f3GL_BGRA\fP and types +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP are available only if the GL version +is 1.2 or greater. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glTexImage1D\fP +specifies the one-dimensional texture for the current texture unit, +specified with \%\f3glActiveTextureARB\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_TEXTURE_1D\fP +or \%\f3GL_PROXY_TEXTURE_1D\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not an accepted + constant. +Format constants other than \%\f3GL_STENCIL_INDEX\fP and \%\f3GL_DEPTH_COMPONENT\fP +are accepted. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not a type constant. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is \%\f3GL_BITMAP\fP and +\f2format\fP is not \%\f3GL_COLOR_INDEX\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater than $log +sub 2$\f2max\fP, +where \f2max\fP is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2internalFormat\fP is not 1, 2, 3, 4, or +one of the accepted resolution and symbolic constants. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP is less than 0 +or greater than 2 + \%\f3GL_MAX_TEXTURE_SIZE\fP, +or if it cannot be represented as $2 sup n ~+~ 2("border")$ +for some integer value of \f2n\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2border\fP is not 0 or 1. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glTexImage1D\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexImage\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_1D\fP +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glColorTable(3G)\fP, +\%\f3glConvolutionFilter1D(3G)\fP, +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glMatrixMode(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP + Index: xc/doc/man/GL/gl/teximage2d.3gl diff -u /dev/null xc/doc/man/GL/gl/teximage2d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/teximage2d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,478 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 teximage2 +.ds Xs 14330 17 teximage2d.gl +.TH GLTEXIMAGE2D 3G +.SH NAME +.B "glTexImage2D +\- specify a two-dimensional texture image + +.SH C SPECIFICATION +void \f3glTexImage2D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexImage2D( 'u + GLint \fIlevel\fP, + GLint \fIinternalFormat\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP, + GLint \fIborder\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + const GLvoid \fI*pixels\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIinternalFormat\fP\ \ 'u +\f2target\fP +Specifies the target texture. +Must be \%\f3GL_TEXTURE_2D\fP or \%\f3GL_PROXY_TEXTURE_2D\fP. +.TP +\f2level\fP +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +.TP +\f2internalFormat\fP +Specifies the number of color components in the texture. +Must be 1, 2, 3, or 4, or one of the following symbolic constants: +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_INTENSITY4\fP, +\%\f3GL_INTENSITY8\fP, +\%\f3GL_INTENSITY12\fP, +\%\f3GL_INTENSITY16\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, or +\%\f3GL_RGBA16\fP. +.TP +\f2width\fP +Specifies the width of the texture image. +Must be $2 sup n ~+~ 2 ( "border" )$ for some integer $n$. All +implementations support texture images that are at least 64 texels +wide. +.TP +\f2height\fP +Specifies the height of the texture image. +Must be $2 sup m ~+~ 2 ( "border" )$ for some integer $m$. All +implementations support texture images that are at least 64 texels +high. +.TP +\f2border\fP +Specifies the width of the border. +Must be either 0 or 1. +.TP +\f2format\fP +Specifies the of the pixel data. +The following symbolic values are accepted: +\%\f3GL_COLOR_INDEX\fP, +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, and +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +Specifies the data type of the pixel data. +The following symbolic values are accepted: +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP. +.TP +\f2pixels\fP +Specifies a pointer to the image data in memory. +.SH DESCRIPTION +Texturing maps a portion of a specified texture image +onto each graphical primitive for which texturing is enabled. +To enable and disable two-dimensional texturing, call \%\f3glEnable\fP +and \%\f3glDisable\fP with argument \%\f3GL_TEXTURE_2D\fP. +.P +To define texture images, call \%\f3glTexImage2D\fP. +The arguments describe the parameters of the texture image, +such as height, +width, +width of the border, +level-of-detail number +(see \%\f3glTexParameter\fP), +and number of color components provided. +The last three arguments describe how the image is represented in memory; +they are identical to the pixel formats used for \%\f3glDrawPixels\fP. +.P +If \f2target\fP is \%\f3GL_PROXY_TEXTURE_2D\fP, no data is read from \f2pixels\fP, but +all of the texture image state is recalculated, checked for +consistency, and checked +against the implementation's capabilities. If the implementation cannot +handle a texture of the requested texture size, it sets +all of the image state to 0, +but does not generate an error (see \%\f3glGetError\fP). To query for an +entire mipmap array, use an image array level greater than or equal to +1. +.P +If \f2target\fP is \%\f3GL_TEXTURE_2D\fP, +data is read from \f2pixels\fP as a sequence of signed or unsigned bytes, +shorts, +or longs, +or single-precision floating-point values, +depending on \f2type\fP. +These values are grouped into sets of one, +two, +three, +or four values, +depending on \f2format\fP, +to form elements. +If \f2type\fP is \%\f3GL_BITMAP\fP, +the data is considered as a string of unsigned bytes (and +\f2format\fP must be \%\f3GL_COLOR_INDEX\fP). +.bp +Each data byte is treated as eight 1-bit elements, +with bit ordering determined by \%\f3GL_UNPACK_LSB_FIRST\fP +(see \%\f3glPixelStore\fP). +.P +The first element corresponds to the lower left corner of the texture +image. +Subsequent elements progress left-to-right through the remaining texels +in the lowest row of the texture image, and then in successively higher +rows of the texture image. +The final element corresponds to the upper right corner of the texture +image. +.P +\f2format\fP determines the composition of each element in \f2pixels\fP. +It can assume one of eleven symbolic values: +.TP 10 +\%\f3GL_COLOR_INDEX\fP +Each element is a single value, +a color index. +The GL converts it to fixed point +(with an unspecified number of zero bits to the right of the binary point), +shifted left or right depending on the value and sign of \%\f3GL_INDEX_SHIFT\fP, +and added to \%\f3GL_INDEX_OFFSET\fP +(see +.br +\%\f3glPixelTransfer\fP). +The resulting index is converted to a set of color components +using the +\%\f3GL_PIXEL_MAP_I_TO_R\fP, +\%\f3GL_PIXEL_MAP_I_TO_G\fP, +\%\f3GL_PIXEL_MAP_I_TO_B\fP, and +\%\f3GL_PIXEL_MAP_I_TO_A\fP tables, +and clamped to the range [0,1]. +.TP +\%\f3GL_RED\fP +Each element is a single red component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for green and blue, and 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_GREEN\fP +Each element is a single green component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red and blue, and 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_BLUE\fP +Each element is a single blue component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red and green, and 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_ALPHA\fP +Each element is a single alpha component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red, green, and blue. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_RGB\fP +.TP +\%\f3GL_BGR\fP +Each element is an RGB triple. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see +.br +\%\f3glPixelTransfer\fP). +.TP +\%\f3GL_RGBA\fP +.TP +\%\f3GL_BGRA\fP +Each element contains all four components. +Each component is multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_LUMINANCE\fP +Each element is a single luminance value. +The GL converts it to floating point, +then assembles it into an RGBA element by replicating the luminance value +three times for red, green, and blue and attaching 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_LUMINANCE_ALPHA\fP +Each element is a luminance/alpha pair. +The GL converts it to floating point, +then assembles it into an RGBA element by replicating the luminance value +three times for red, green, and blue. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see +.br +\%\f3glPixelTransfer\fP). +.P +Refer to the \%\f3glDrawPixels\fP reference page for a description of +the acceptable values for the \f2type\fP parameter. +.P +If an application wants to store the texture at a certain +resolution or in a certain , it can request the resolution +and with \f2internalFormat\fP. The GL will choose an internal +representation that closely approximates that requested by \f2internalFormat\fP, but +it may not match exactly. +(The representations specified by \%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, \%\f3GL_RGB\fP, +and \%\f3GL_RGBA\fP must match exactly. The numeric values 1, 2, 3, and 4 +may also be used to specify the above representations.) +.P +Use the \%\f3GL_PROXY_TEXTURE_2D\fP target to try out a resolution and +. The implementation will +update and recompute its best match for the requested storage resolution +and . To then query this state, call +\%\f3glGetTexLevelParameter\fP. +If the texture cannot be accommodated, texture state is set to 0. +.P +A one-component texture image uses only the red component of the RGBA +color extracted from \f2pixels\fP. +A two-component image uses the R and A values. +A three-component image uses the R, G, and B values. +A four-component image uses all of the RGBA components. +.SH NOTES +Texturing has no effect in color index mode. +.P +If the \%\f3GL_ARB_imaging\fP extension is supported, RGBA elements may +also be processed by the imaging pipeline. The following stages may be +applied to an RGBA color before color component clamping to the range +[0,\ 1]: +.TP 3 +1. Color component replacement by the color table specified for +\%\f3GL_COLOR_TABLE\fP, if enabled. See \%\f3glColorTable\fP. +.TP +2. Two-dimensional Convolution filtering, if enabled. See +\%\f3glConvolutionFilter1D\fP. +.IP +If a convolution filter changes the __width of the texture (by +processing with a \%\f3GL_CONVOLUTION_BORDER_MODE\fP of \%\f3GL_REDUCE\fP, for +example), the \f2width\fP must $2 sup n + 2 ( "height" )$, for some +integer $n$, and \f2height\fP must be $2 sup m + ( "border" )$, for some +integer $m$, after filtering. +.TP +3. RGBA components may be multiplied by \%\f3GL_POST_CONVOLUTION_c_SCALE\fP, +and added to \%\f3GL_POST_CONVOLUTION_c_BIAS\fP, if enabled. See +\%\f3glPixelTransfer\fP. +.TP +4. Color component replacement by the color table specified for +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, if enabled. See \%\f3glColorTable\fP. +.TP +5. Transformation by the color matrix. See \%\f3glMatrixMode\fP. +.TP +6. RGBA components may be multiplied by \%\f3GL_POST_COLOR_MATRIX_c_SCALE\fP, +and added to \%\f3GL_POST_COLOR_MATRIX_c_BIAS\fP, if enabled. See +\%\f3glPixelTransfer\fP. +.TP +7. Color component replacement by the color table specified for +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP, if enabled. See +\%\f3glColorTable\fP. +.P +The texture image can be represented by the same data formats +as the pixels in a \%\f3glDrawPixels\fP command, +except that \%\f3GL_STENCIL_INDEX\fP and \%\f3GL_DEPTH_COMPONENT\fP +cannot be used. +\%\f3glPixelStore\fP and \%\f3glPixelTransfer\fP modes affect texture images +in exactly the way they affect \%\f3glDrawPixels\fP. +.P +.P +\%\f3glTexImage2D\fP and \%\f3GL_PROXY_TEXTURE_2D\fP are available only if the GL +version is 1.1 or greater. +.P +Internal formats other than 1, 2, 3, or 4 may be used only if the GL +version is 1.1 or greater. +.P +In GL version 1.1 or greater, \f2pixels\fP may be a null pointer. +In this case texture memory is +allocated to accommodate a texture of width \f2width\fP and height \f2height\fP. +You can then download subtextures to initialize this +texture memory. +The image is undefined if the user tries to apply +an uninitialized portion of the texture image to a primitive. +.P +Formats \%\f3GL_BGR\fP, and \%\f3GL_BGRA\fP and types +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP are available only if the GL version +is 1.2 or greater. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glTexImage2D\fP +specifies the two-dimensional texture for the current texture unit, +specified with \%\f3glActiveTextureARB\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_TEXTURE_2D\fP +or \%\f3GL_PROXY_TEXTURE_2D\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not an accepted + constant. +Format constants other than \%\f3GL_STENCIL_INDEX\fP and \%\f3GL_DEPTH_COMPONENT\fP +are accepted. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not a type constant. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is \%\f3GL_BITMAP\fP and +\f2format\fP is not \%\f3GL_COLOR_INDEX\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater than $log +sub 2$\f2max\fP, +where \f2max\fP is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2internalFormat\fP is not 1, 2, 3, 4, or one of the +accepted resolution and symbolic constants. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP or \f2height\fP is less than 0 +or greater than 2 + \%\f3GL_MAX_TEXTURE_SIZE\fP, +or if either cannot be represented as $2 sup k ~+~ 2("border")$ for some +integer value of \f2k\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2border\fP is not 0 or 1. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glTexImage2D\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexImage\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_2D\fP +.SH SEE ALSO +\%\f3glColorTable(3G)\fP, +\%\f3glConvolutionFilter2D(3G)\fP, +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glMatrixMode(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glSeparableFilter2D(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP + Index: xc/doc/man/GL/gl/teximage3d.3gl diff -u /dev/null xc/doc/man/GL/gl/teximage3d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/teximage3d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,470 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 teximage3 +.ds Xs 11081 17 teximage3d.gl +.TH GLTEXIMAGE3D 3G +.SH NAME +.B "glTexImage3D +\- specify a three-dimensional texture image + +.SH C SPECIFICATION +void \f3glTexImage3D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexImage3D( 'u + GLint \fIlevel\fP, + GLint \fIinternalFormat\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP, + GLsizei \fIdepth\fP, + GLint \fIborder\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + const GLvoid \fI*pixels\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIinternalFormat\fP\ \ 'u +\f2target\fP +Specifies the target texture. +Must be \%\f3GL_TEXTURE_3D\fP or \%\f3GL_PROXY_TEXTURE_3D\fP. +.TP +\f2level\fP +Specifies the level-of-detail number. +Level 0 is the base image level. +Level $n$ is the $n sup th$ mipmap reduction image. +.TP +\f2internalFormat\fP +Specifies the number of color components in the texture. +Must be 1, 2, 3, or 4, or one of the following symbolic constants: +\%\f3GL_ALPHA\fP, +\%\f3GL_ALPHA4\fP, +\%\f3GL_ALPHA8\fP, +\%\f3GL_ALPHA12\fP, +\%\f3GL_ALPHA16\fP, +\%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE4\fP, +\%\f3GL_LUMINANCE8\fP, +\%\f3GL_LUMINANCE12\fP, +\%\f3GL_LUMINANCE16\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, +\%\f3GL_LUMINANCE4_ALPHA4\fP, +\%\f3GL_LUMINANCE6_ALPHA2\fP, +\%\f3GL_LUMINANCE8_ALPHA8\fP, +\%\f3GL_LUMINANCE12_ALPHA4\fP, +\%\f3GL_LUMINANCE12_ALPHA12\fP, +\%\f3GL_LUMINANCE16_ALPHA16\fP, +\%\f3GL_INTENSITY\fP, +\%\f3GL_INTENSITY4\fP, +\%\f3GL_INTENSITY8\fP, +\%\f3GL_INTENSITY12\fP, +\%\f3GL_INTENSITY16\fP, +\%\f3GL_R3_G3_B2\fP, +\%\f3GL_RGB\fP, +\%\f3GL_RGB4\fP, +\%\f3GL_RGB5\fP, +\%\f3GL_RGB8\fP, +\%\f3GL_RGB10\fP, +\%\f3GL_RGB12\fP, +\%\f3GL_RGB16\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_RGBA2\fP, +\%\f3GL_RGBA4\fP, +\%\f3GL_RGB5_A1\fP, +\%\f3GL_RGBA8\fP, +\%\f3GL_RGB10_A2\fP, +\%\f3GL_RGBA12\fP, or +\%\f3GL_RGBA16\fP. +.TP +\f2width\fP +Specifies the width of the texture image. +Must be $2 sup n ~+~ 2 ( "border" )$ for some integer $n$. All +implementations support texture images that are at least 64 texels +wide. +.TP +\f2height\fP +Specifies the height of the texture image. +Must be $2 sup m ~+~ 2 ( "border" )$ for some integer $m$. All +implementations support texture images that are at least 64 texels +high. +.TP +\f2depth\fP +Specifies the depth of the texture image. +Must be $2 sup k ~+~ 2 ( "border" )$ for some integer $k$. All +implementations support texture images that are at least 64 texels +deep. +.TP +\f2border\fP +Specifies the width of the border. +Must be either 0 or 1. +.TP +\f2format\fP +Specifies the of the pixel data. +The following symbolic values are accepted: +\%\f3GL_COLOR_INDEX\fP, +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, and +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +Specifies the data type of the pixel data. +The following symbolic values are accepted: +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP. +.TP +\f2pixels\fP +Specifies a pointer to the image data in memory. +.SH DESCRIPTION +Texturing maps a portion of a specified texture image +onto each graphical primitive for which texturing is enabled. +To enable and disable three-dimensional texturing, call \%\f3glEnable\fP +and \%\f3glDisable\fP with argument \%\f3GL_TEXTURE_3D\fP. +.P +To define texture images, call \%\f3glTexImage3D\fP. +The arguments describe the parameters of the texture image, +such as height, +width, depth, +width of the border, +level-of-detail number +(see \%\f3glTexParameter\fP), +and number of color components provided. +The last three arguments describe how the image is represented in memory; +they are identical to the pixel formats used for \%\f3glDrawPixels\fP. +.P +If \f2target\fP is \%\f3GL_PROXY_TEXTURE_3D\fP, no data is read from \f2pixels\fP, but +all of the texture image state is recalculated, checked for +consistency, and checked +against the implementation's capabilities. If the implementation cannot +handle a texture of the requested texture size, it sets +all of the image state to 0, +but does not generate an error (see \%\f3glGetError\fP). To query for an +entire mipmap array, use an image array level greater than or equal to +1. +.P +If \f2target\fP is \%\f3GL_TEXTURE_3D\fP, +data is read from \f2pixels\fP as a sequence of signed or unsigned bytes, +shorts, +or longs, +or single-precision floating-point values, +depending on \f2type\fP. +These values are grouped into sets of one, +two, +three, +or four values, +depending on \f2format\fP, +to form elements. +If \f2type\fP is \%\f3GL_BITMAP\fP, +the data is considered as a string of unsigned bytes (and +\f2format\fP must be \%\f3GL_COLOR_INDEX\fP). +Each data byte is treated as eight 1-bit elements, +with bit ordering determined by \%\f3GL_UNPACK_LSB_FIRST\fP +(see \%\f3glPixelStore\fP). +.P +The first element corresponds to the lower left corner of the texture +image. +Subsequent elements progress left-to-right through the remaining texels +in the lowest row of the texture image, and then in successively higher +rows of the texture image. +The final element corresponds to the upper right corner of the texture +image. +.P +\f2format\fP determines the composition of each element in \f2pixels\fP. +It can assume one of eleven symbolic values: +.TP 10 +\%\f3GL_COLOR_INDEX\fP +Each element is a single value, +a color index. +The GL converts it to fixed point +(with an unspecified number of zero bits to the right of the binary point), +shifted left or right depending on the value and sign of \%\f3GL_INDEX_SHIFT\fP, +and added to \%\f3GL_INDEX_OFFSET\fP +(see +.br +\%\f3glPixelTransfer\fP). +The resulting index is converted to a set of color components +using the +\%\f3GL_PIXEL_MAP_I_TO_R\fP, +\%\f3GL_PIXEL_MAP_I_TO_G\fP, +\%\f3GL_PIXEL_MAP_I_TO_B\fP, and +\%\f3GL_PIXEL_MAP_I_TO_A\fP tables, +and clamped to the range [0,1]. +.TP +\%\f3GL_RED\fP +Each element is a single red component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for green and blue, and 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_GREEN\fP +Each element is a single green component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red and blue, and 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_BLUE\fP +Each element is a single blue component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red and green, and 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_ALPHA\fP +Each element is a single alpha component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red, green, and blue. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_RGB\fP +.TP +\%\f3GL_BGR\fP +Each element is an RGB triple. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see +.br +\%\f3glPixelTransfer\fP). +.TP +\%\f3GL_RGBA\fP +.TP +\%\f3GL_BGRA\fP +Each element contains all four components. +Each component is multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_LUMINANCE\fP +Each element is a single luminance value. +The GL converts it to floating point, +then assembles it into an RGBA element by replicating the luminance value +three times for red, green, and blue and attaching 1 for alpha. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see \%\f3glPixelTransfer\fP). +.TP +\%\f3GL_LUMINANCE_ALPHA\fP +Each element is a luminance/alpha pair. +The GL converts it to floating point, +then assembles it into an RGBA element by replicating the luminance value +three times for red, green, and blue. +Each component is then multiplied by the signed scale factor \%\f3GL_c_SCALE\fP, +added to the signed bias \%\f3GL_c_BIAS\fP, +and clamped to the range [0,1] +(see +.br +\%\f3glPixelTransfer\fP). +.P +Refer to the \%\f3glDrawPixels\fP reference page for a description of +the acceptable values for the \f2type\fP parameter. +.P +If an application wants to store the texture at a certain +resolution or in a certain , it can request the resolution +and with \f2internalFormat\fP. The GL will choose an internal +representation that closely approximates that requested by \f2internalFormat\fP, but +it may not match exactly. +(The representations specified by \%\f3GL_LUMINANCE\fP, +\%\f3GL_LUMINANCE_ALPHA\fP, \%\f3GL_RGB\fP, +and \%\f3GL_RGBA\fP must match exactly. The numeric values 1, 2, 3, and 4 +may also be used to specify the above representations.) +.P +Use the \%\f3GL_PROXY_TEXTURE_3D\fP target to try out a resolution and +. The implementation will +update and recompute its best match for the requested storage resolution +and . To then query this state, call +\%\f3glGetTexLevelParameter\fP. +If the texture cannot be accommodated, texture state is set to 0. +.P +A one-component texture image uses only the red component of the RGBA +color extracted from \f2pixels\fP. +A two-component image uses the R and A values. +A three-component image uses the R, G, and B values. +A four-component image uses all of the RGBA components. +.SH NOTES +Texturing has no effect in color index mode. +.P +The texture image can be represented by the same data formats +as the pixels in a \%\f3glDrawPixels\fP command, +except that \%\f3GL_STENCIL_INDEX\fP and \%\f3GL_DEPTH_COMPONENT\fP +cannot be used. +\%\f3glPixelStore\fP and \%\f3glPixelTransfer\fP modes affect texture images +in exactly the way they affect \%\f3glDrawPixels\fP. +.P +.P +\%\f3glTexImage3D\fP is available only if the GL version is 1.2 or greater. +.P +Internal formats other than 1, 2, 3, or 4 may be used only if the GL +version is 1.1 or greater. +.P +\f2pixels\fP may be a null pointer. +In this case texture memory is +allocated to accommodate a texture of width \f2width\fP, height \f2height\fP, +and depth \f2depth\fP. +You can then download subtextures to initialize this +texture memory. +The image is undefined if the user tries to apply +an uninitialized portion of the texture image to a primitive. +.P +Formats \%\f3GL_BGR\fP, and \%\f3GL_BGRA\fP and types +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP are available only if the GL version +is 1.2 or greater. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glTexImage3D\fP +specifies the three-dimensional texture for the current texture unit, +specified with \%\f3glActiveTextureARB\fP. +.P +If the \%\f3GL_ARB_imaging\fP extension is supported, RGBA elements may +also be processed by the imaging pipeline. The following stages may be +applied to an RGBA color before color component clamping to the range +[0,\ 1]: +.TP 3 +1. Color component replacement by the color table specified for +\%\f3GL_COLOR_TABLE\fP, if enabled. See \%\f3glColorTable\fP. +.TP +2. Color component replacement by the color table specified for +\%\f3GL_POST_CONVOLUTION_COLOR_TABLE\fP, if enabled. See \%\f3glColorTable\fP. +.TP +3. Transformation by the color matrix. See \%\f3glMatrixMode\fP. +.TP +4. RGBA components may be multiplied by \%\f3GL_POST_COLOR_MATRIX_c_SCALE\fP, +and added to \%\f3GL_POST_COLOR_MATRIX_c_BIAS\fP, if enabled. See +\%\f3glPixelTransfer\fP. +.TP +5. Color component replacement by the color table specified for +\%\f3GL_POST_COLOR_MATRIX_COLOR_TABLE\fP, if enabled. See +\%\f3glColorTable\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_TEXTURE_3D\fP +or \%\f3GL_PROXY_TEXTURE_3D\fP. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not an accepted + constant. +Format constants other than \%\f3GL_STENCIL_INDEX\fP and \%\f3GL_DEPTH_COMPONENT\fP +are accepted. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not a type constant. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is \%\f3GL_BITMAP\fP and +\f2format\fP is not \%\f3GL_COLOR_INDEX\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater than $log +sub 2$\f2max\fP, +where \f2max\fP is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2internalFormat\fP is not 1, 2, 3, 4, or one of the +accepted resolution and symbolic constants. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP, \f2height\fP, or \f2depth\fP +is less than 0 or greater than 2 + \%\f3GL_MAX_TEXTURE_SIZE\fP, +or if either cannot be represented as $2 sup k ~+~ 2( "border" )$ for some +integer value of \f2k\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2border\fP is not 0 or 1. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glTexImage3D\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexImage\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_3D\fP +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP + + Index: xc/doc/man/GL/gl/texparameter.3gl diff -u /dev/null xc/doc/man/GL/gl/texparameter.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/texparameter.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,348 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 texparame +.ds Xs 38873 13 texparameter.gl +.TH GLTEXPARAMETER 3G +.SH NAME +.B "glTexParameterf, glTexParameteri, glTexParameterfv, glTexParameteriv +\- set texture parameters + +.SH C SPECIFICATION +void \f3glTexParameterf\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexParameterf( 'u + GLenum \fIpname\fP, + GLfloat \fIparam\fP ) +.fi +void \f3glTexParameteri\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexParameteri( 'u + GLenum \fIpname\fP, + GLint \fIparam\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2target\fP\ \ 'u +\f2target\fP +Specifies the target texture, +which must be either \%\f3GL_TEXTURE_1D\fP, \%\f3GL_TEXTURE_2D\fP, or +\%\f3GL_TEXTURE_3D\fP. +.TP +\f2pname\fP +Specifies the symbolic name of a single-valued texture parameter. +\f2pname\fP can be one of the following: +\%\f3GL_TEXTURE_MIN_FILTER\fP, +\%\f3GL_TEXTURE_MAG_FILTER\fP, +\%\f3GL_TEXTURE_MIN_LOD\fP, +\%\f3GL_TEXTURE_MAX_LOD\fP, +\%\f3GL_TEXTURE_BASE_LEVEL\fP, +\%\f3GL_TEXTURE_MAX_LEVEL\fP, +\%\f3GL_TEXTURE_WRAP_S\fP, +\%\f3GL_TEXTURE_WRAP_T\fP, +\%\f3GL_TEXTURE_WRAP_R\fP, or +\%\f3GL_TEXTURE_PRIORITY\fP. +.TP +\f2param\fP +Specifies the value of \f2pname\fP. +.SH C SPECIFICATION +void \f3glTexParameterfv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexParameterfv( 'u + GLenum \fIpname\fP, + const GLfloat \fI*params\fP ) +.fi +void \f3glTexParameteriv\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexParameteriv( 'u + GLenum \fIpname\fP, + const GLint \fI*params\fP ) +.fi + +.SH PARAMETERS +.TP +\f2target\fP +Specifies the target texture, +which must be either \%\f3GL_TEXTURE_1D\fP, \%\f3GL_TEXTURE_2D\fP or +\%\f3GL_TEXTURE_3D\fP. +.TP +\f2pname\fP +Specifies the symbolic name of a texture parameter. +\f2pname\fP can be one of the following: +\%\f3GL_TEXTURE_MIN_FILTER\fP, +\%\f3GL_TEXTURE_MAG_FILTER\fP, +\%\f3GL_TEXTURE_MIN_LOD\fP, +\%\f3GL_TEXTURE_MAX_LOD\fP, +\%\f3GL_TEXTURE_BASE_LEVEL\fP, +\%\f3GL_TEXTURE_MAX_LEVEL\fP, +\%\f3GL_TEXTURE_WRAP_S\fP, +\%\f3GL_TEXTURE_WRAP_T\fP, +\%\f3GL_TEXTURE_WRAP_R\fP, +\%\f3GL_TEXTURE_BORDER_COLOR\fP, or +\%\f3GL_TEXTURE_PRIORITY\fP. +.TP +\f2params\fP +Specifies a pointer to an array where the value or values of \f2pname\fP +are stored. +.SH DESCRIPTION +Texture mapping is a technique that applies an image onto an object's surface +as if the image were a decal or cellophane shrink-wrap. +The image is created in texture space, +with an ($s$, $t$) coordinate system. +A texture is a one- or two-dimensional image and a set of parameters +that determine how samples are derived from the image. +.P +\%\f3glTexParameter\fP assigns the value or values in \f2params\fP to the texture parameter +specified as \f2pname\fP. +\f2target\fP defines the target texture, +either \%\f3GL_TEXTURE_1D\fP, \%\f3GL_TEXTURE_2D\fP, or \%\f3GL_TEXTURE_3D\fP. +The following symbols are accepted in \f2pname\fP: +.TP 10 +\%\f3GL_TEXTURE_MIN_FILTER\fP +The texture minifying function is used whenever the pixel being textured +maps to an area greater than one texture element. +There are six defined minifying functions. +Two of them use the nearest one or nearest four texture elements +to compute the texture value. +The other four use mipmaps. +.IP +A mipmap is an ordered set of arrays representing the same image +at progressively lower resolutions. +If the texture has dimensions $2 sup n ~times~ 2 sup m$, there are +$ bold max ( n, m ) + 1 $ mipmaps. +The first mipmap is the original texture, +with dimensions $2 sup n ~times~ 2 sup m$. +Each subsequent mipmap has dimensions $2 sup { k - 1 } ~times~ 2 sup { l - 1 }$, +where $2 sup k ~times~ 2 sup l$ are the dimensions of the previous mipmap, +until either $k ~=~ 0$ or $l~=~0$. +At that point, +subsequent mipmaps have dimension $ 1 ~times~ 2 sup { l - 1 } $ +or $ 2 sup { k - 1} ~times~ 1 $ until the final mipmap, +which has dimension $1 ~times~ 1$. +To define the mipmaps, call \%\f3glTexImage1D\fP, \%\f3glTexImage2D\fP, +\%\f3glTexImage3D\fP, +\%\f3glCopyTexImage1D\fP, or \%\f3glCopyTexImage2D\fP +with the \f2level\fP argument indicating the order of the mipmaps. +Level 0 is the original texture; +level $ bold max ( n, m ) $ is the final $1 ~times~ 1$ mipmap. +.IP +\f2params\fP supplies a function for minifying the texture as one of the following: +.RS 10 +.TP 10 +\%\f3GL_NEAREST\fP +Returns the value of the texture element that is nearest +(in Manhattan distance) +to the center of the pixel being textured. +.TP +\%\f3GL_LINEAR\fP +Returns the weighted average of the four texture elements +that are closest to the center of the pixel being textured. +These can include border texture elements, +depending on the values of \%\f3GL_TEXTURE_WRAP_S\fP and \%\f3GL_TEXTURE_WRAP_T\fP, +and on the exact mapping. +.TP +\%\f3GL_NEAREST_MIPMAP_NEAREST\fP +Chooses the mipmap that most closely matches the size of the pixel +being textured and uses the \%\f3GL_NEAREST\fP criterion +(the texture element nearest to the center of the pixel) +to produce a texture value. +.TP +\%\f3GL_LINEAR_MIPMAP_NEAREST\fP +Chooses the mipmap that most closely matches the size of the pixel +being textured and uses the \%\f3GL_LINEAR\fP criterion +(a weighted average of the four texture elements that are closest +to the center of the pixel) +to produce a texture value. +.TP +\%\f3GL_NEAREST_MIPMAP_LINEAR\fP +Chooses the two mipmaps that most closely match the size of the pixel +being textured and uses the \%\f3GL_NEAREST\fP criterion +(the texture element nearest to the center of the pixel) +to produce a texture value from each mipmap. +The final texture value is a weighted average of those two values. +.TP +\%\f3GL_LINEAR_MIPMAP_LINEAR\fP +Chooses the two mipmaps that most closely match the size of the pixel +being textured and uses the \%\f3GL_LINEAR\fP criterion +(a weighted average of the four texture elements that are closest +to the center of the pixel) +to produce a texture value from each mipmap. +The final texture value is a weighted average of those two values. +.RE +.IP +As more texture elements are sampled in the minification process, +fewer aliasing artifacts will be apparent. +While the \%\f3GL_NEAREST\fP and \%\f3GL_LINEAR\fP minification functions can be +faster than the other four, +they sample only one or four texture elements to determine the texture value +of the pixel being rendered and can produce moire patterns +or ragged transitions. +The initial value of \%\f3GL_TEXTURE_MIN_FILTER\fP is +\%\f3GL_NEAREST_MIPMAP_LINEAR\fP. +.TP 10 +\%\f3GL_TEXTURE_MAG_FILTER\fP +The texture magnification function is used when the pixel being textured +maps to an area less than or equal to one texture element. +It sets the texture magnification function to either \%\f3GL_NEAREST\fP +or \%\f3GL_LINEAR\fP (see below). \%\f3GL_NEAREST\fP is generally faster +than \%\f3GL_LINEAR\fP, +but it can produce textured images with sharper edges +because the transition between texture elements is not as smooth. +The initial value of \%\f3GL_TEXTURE_MAG_FILTER\fP is \%\f3GL_LINEAR\fP. +.RS 10 +.TP 10 +\%\f3GL_NEAREST\fP +Returns the value of the texture element that is nearest +(in Manhattan distance) +to the center of the pixel being textured. +.TP +\%\f3GL_LINEAR\fP +Returns the weighted average of the four texture elements +that are closest to the center of the pixel being textured. +These can include border texture elements, +depending on the values of \%\f3GL_TEXTURE_WRAP_S\fP and \%\f3GL_TEXTURE_WRAP_T\fP, +and on the exact mapping. +.P +.RE +.P +.TP 10 +\%\f3GL_TEXTURE_MIN_LOD\fP +Sets the minimum level-of-detail parameter. This floating-point value +limits the selection of highest resolution mipmap (lowest mipmap +level). The initial value is -1000. +.P +.TP 10 +\%\f3GL_TEXTURE_MAX_LOD\fP +Sets the maximum level-of-detail parameter. This floating-point value +limits the selection of the lowest resolution mipmap (highest mipmap +level). The initial value is 1000. +.P +.TP 10 +\%\f3GL_TEXTURE_BASE_LEVEL\fP +Specifies the index of the lowest defined mipmap level. This is an +integer value. The initial value is 0. +.P +.TP 10 +\%\f3GL_TEXTURE_MAX_LEVEL\fP +Sets the index of the highest defined mipmap level. This is an integer +value. The initial value is 1000. +.P +.TP 10 +\%\f3GL_TEXTURE_WRAP_S\fP +Sets the wrap parameter for texture coordinate $s$ to either +\%\f3GL_CLAMP\fP, \%\f3GL_CLAMP_TO_EDGE\fP, or \%\f3GL_REPEAT\fP. +\%\f3GL_CLAMP\fP causes $s$ coordinates to be clamped to the range [0,1] +and is useful for preventing wrapping artifacts when mapping +a single image onto an object. +\%\f3GL_CLAMP_TO_EDGE\fP causes $s$ coordinates to be clamped to the range +$left [ {1 over 2N}, 1 - {1 over 2N} right ]$, where $N$ is the size +of the texture in the direction of clamping. +\%\f3GL_REPEAT\fP causes the integer part of the $s$ coordinate to be ignored; +the GL uses only the fractional part, +thereby creating a repeating pattern. +Border texture elements are accessed only if wrapping is set to \%\f3GL_CLAMP\fP. +Initially, \%\f3GL_TEXTURE_WRAP_S\fP is set to \%\f3GL_REPEAT\fP. +.P +.TP 10 +\%\f3GL_TEXTURE_WRAP_T\fP +Sets the wrap parameter for texture coordinate $t$ to either +\%\f3GL_CLAMP\fP, \%\f3GL_CLAMP_TO_EDGE\fP, or \%\f3GL_REPEAT\fP. +See the discussion under \%\f3GL_TEXTURE_WRAP_S\fP. +Initially, \%\f3GL_TEXTURE_WRAP_T\fP is set to \%\f3GL_REPEAT\fP. +.TP 10 +\%\f3GL_TEXTURE_WRAP_R\fP +Sets the wrap parameter for texture coordinate $r$ to either +\%\f3GL_CLAMP\fP, \%\f3GL_CLAMP_TO_EDGE\fP, or \%\f3GL_REPEAT\fP. +See the discussion under \%\f3GL_TEXTURE_WRAP_S\fP. +Initially, \%\f3GL_TEXTURE_WRAP_R\fP is set to \%\f3GL_REPEAT\fP. +.TP +\%\f3GL_TEXTURE_BORDER_COLOR\fP +Sets a border color. +\f2params\fP contains four values that comprise the RGBA color +of the texture border. +Integer color components are interpreted linearly such that the most +positive integer maps to 1.0, +and the most negative integer maps to -1.0. +The values are clamped to the range [0,1] when they are specified. +Initially, the border color is (0, 0, 0, 0). +.TP 10 +\%\f3GL_TEXTURE_PRIORITY\fP +Specifies the texture residence priority of the currently bound texture. +Permissible values are in the range [0,\ 1]. +See \%\f3glPrioritizeTextures\fP and \%\f3glBindTexture\fP for more information. +.SH NOTES +\%\f3GL_TEXTURE_3D\fP, \%\f3GL_TEXTURE_MIN_LOD\fP, \%\f3GL_TEXTURE_MAX_LOD\fP, +\%\f3GL_TEXTURE_BASE_LEVEL\fP, and \%\f3GL_TEXTURE_MAX_LEVEL\fP are only +available if the GL version is 1.2 or greater. +.P +Suppose that a program has enabled texturing +(by calling \%\f3glEnable\fP +with argument \%\f3GL_TEXTURE_1D\fP, \%\f3GL_TEXTURE_2D\fP, or \%\f3GL_TEXTURE_3D\fP) +and has set \%\f3GL_TEXTURE_MIN_FILTER\fP to one of the functions +that requires a mipmap. +If either the dimensions of the texture images currently defined +(with previous calls to \%\f3glTexImage1D\fP, \%\f3glTexImage2D\fP, +\%\f3glTexImage3D\fP, +\%\f3glCopyTexImage1D\fP, or \%\f3glCopyTexImage2D\fP) +do not follow the proper sequence for mipmaps +(described above), +or there are fewer texture images defined than are needed, +or the set of texture images have differing numbers of texture components, +then it is as if texture mapping were disabled. +.P +Linear filtering accesses the four nearest texture elements only in 2D +textures. +In 1D textures, linear filtering accesses the two nearest texture +elements. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glTexParameter\fP +specifies the texture parameters for the active texture unit, specified +by calling \%\f3glActiveTextureARB\fP. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP or \f2pname\fP is not +one of the accepted defined values. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2params\fP should have a defined +constant value (based on the value of \f2pname\fP) and does not. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glTexParameter\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexParameter\fP +.br +\%\f3glGetTexLevelParameter\fP +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glBindTexture(3G)\fP, +\%\f3glCopyPixels(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glPrioritizeTextures(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP + + Index: xc/doc/man/GL/gl/texsubimage1d.3gl diff -u /dev/null xc/doc/man/GL/gl/texsubimage1d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/texsubimage1d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,207 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 texsubima +.ds Xs 43886 8 texsubimage1d.gl +.TH GLTEXSUBIMAGE1D 3G +.SH NAME +.B "glTexSubImage1D +\- specify a one-dimensional texture subimage + +.SH C SPECIFICATION +void \f3glTexSubImage1D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexSubImage1D( 'u + GLint \fIlevel\fP, + GLint \fIxoffset\fP, + GLsizei \fIwidth\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + const GLvoid \fI*pixels\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIxoffset\fP\ \ 'u +\f2target\fP +Specifies the target texture. +Must be \%\f3GL_TEXTURE_1D\fP. +.TP +\f2level\fP +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +.TP +\f2xoffset\fP +Specifies a texel offset in the x direction within the texture array. +.TP +\f2width\fP +Specifies the width of the texture subimage. +.TP +\f2format\fP +Specifies the of the pixel data. +The following symbolic values are accepted: +\%\f3GL_COLOR_INDEX\fP, +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, and +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +Specifies the data type of the pixel data. +The following symbolic values are accepted: +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP. +.TP +\f2pixels\fP +Specifies a pointer to the image data in memory. +.SH DESCRIPTION +Texturing maps a portion of a specified texture image +onto each graphical primitive for which texturing is enabled. +To enable or disable one-dimensional texturing, call \%\f3glEnable\fP +and \%\f3glDisable\fP with argument \%\f3GL_TEXTURE_1D\fP. +.P +\%\f3glTexSubImage1D\fP redefines a contiguous subregion of an existing one-dimensional +texture image. +The texels referenced by \f2pixels\fP replace the portion of the +existing texture array with x indices \f2xoffset\fP and +$"xoffset"~+~"width"~-~1$,inclusive. +This region may not include any texels outside the range of the +texture array as it was originally specified. +It is not an error to specify a subtexture with width of 0, but +such a specification has no effect. +.SH NOTES +\%\f3glTexSubImage1D\fP is available only if the GL version is 1.1 or greater. +.P +Texturing has no effect in color index mode. +.P +\%\f3glPixelStore\fP and \%\f3glPixelTransfer\fP modes affect texture images +in exactly the way they affect \%\f3glDrawPixels\fP. +.P +Formats \%\f3GL_BGR\fP, and \%\f3GL_BGRA\fP and types +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP are available only if the GL version +is 1.2 or greater. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glTexSubImage1D\fP +specifies a one-dimensional sub texture for the current texture unit, +specified with \%\f3glActiveTextureARB\fP. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, the RGBA components +specified in \f2pixels\fP may be processed by the imaging pipeline. See +\%\f3glTexImage1D\fP for specific details. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not one of the +allowable values. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if the texture array has not +been defined by a previous \%\f3glTexImage1D\fP operation. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater +than $log sub 2$\f2max\fP, +where \f2max\fP is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if $"xoffset" ~<~ ~-b$, +or if $("xoffset"~+~"width") ~>~ (w ~-~ b)$, +where $w$ is the \%\f3GL_TEXTURE_WIDTH\fP, and $b$ is +the width of the \%\f3GL_TEXTURE_BORDER\fP +of the texture image being modified. +Note that $w$ includes twice the border width. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP is less than 0. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not an accepted + constant. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not a type constant. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is \%\f3GL_BITMAP\fP and +\f2format\fP is not \%\f3GL_COLOR_INDEX\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glTexSubImage1D\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexImage\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_1D\fP +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP + Index: xc/doc/man/GL/gl/texsubimage2d.3gl diff -u /dev/null xc/doc/man/GL/gl/texsubimage2d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/texsubimage2d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,216 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 texsubima +.ds Xs 33804 8 texsubimage2d.gl +.TH GLTEXSUBIMAGE2D 3G +.SH NAME +.B "glTexSubImage2D +\- specify a two-dimensional texture subimage + +.SH C SPECIFICATION +void \f3glTexSubImage2D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexSubImage2D( 'u + GLint \fIlevel\fP, + GLint \fIxoffset\fP, + GLint \fIyoffset\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + const GLvoid \fI*pixels\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIxoffset\fP\ \ 'u +\f2target\fP +Specifies the target texture. +Must be \%\f3GL_TEXTURE_2D\fP. +.TP +\f2level\fP +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +.TP +\f2xoffset\fP +Specifies a texel offset in the x direction within the texture array. +.TP +\f2yoffset\fP +Specifies a texel offset in the y direction within the texture array. +.TP +\f2width\fP +Specifies the width of the texture subimage. +.TP +\f2height\fP +Specifies the height of the texture subimage. +.TP +\f2format\fP +Specifies the of the pixel data. +The following symbolic values are accepted: +\%\f3GL_COLOR_INDEX\fP, +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, and +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +Specifies the data type of the pixel data. +The following symbolic values are accepted: +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP. +.TP +\f2pixels\fP +Specifies a pointer to the image data in memory. +.SH DESCRIPTION +Texturing maps a portion of a specified texture image +onto each graphical primitive for which texturing is enabled. +To enable and disable two-dimensional texturing, call \%\f3glEnable\fP +and \%\f3glDisable\fP with argument \%\f3GL_TEXTURE_2D\fP. +.P +\%\f3glTexSubImage2D\fP redefines a contiguous subregion of an existing two-dimensional +texture image. +The texels referenced by \f2pixels\fP replace the portion of the +existing texture array with x indices \f2xoffset\fP and $"xoffset"~+~"width"~-~1$, +inclusive, +and y indices \f2yoffset\fP and $"yoffset"~+~"height"~-~1$, inclusive. +This region may not include any texels outside the range of the +texture array as it was originally specified. +It is not an error to specify a subtexture with zero width or height, but +such a specification has no effect. +.SH NOTES +\%\f3glTexSubImage2D\fP is available only if the GL version is 1.1 or greater. +.P +Texturing has no effect in color index mode. +.P +\%\f3glPixelStore\fP and \%\f3glPixelTransfer\fP modes affect texture images +in exactly the way they affect \%\f3glDrawPixels\fP. +.P +Formats \%\f3GL_BGR\fP, and \%\f3GL_BGRA\fP and types +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP are available only if the GL version +is 1.2 or greater. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glTexSubImage2D\fP +specifies a two-dimensional sub texture for the current texture unit, +specified with \%\f3glActiveTextureARB\fP. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, the RGBA components +specified in \f2pixels\fP may be processed by the imaging pipeline. See +\%\f3glTexImage1D\fP for specific details. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_TEXTURE_2D\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if the texture array has not +been defined by a previous \%\f3glTexImage2D\fP operation. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater +than $log sub 2$\f2max\fP, +where \f2max\fP is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if $"xoffset" ~<~ ~-b$, +$("xoffset"~+~"width") ~>~ (w~-~b)$, +$"yoffset" ~<~ ~-b$, or $("yoffset" ~+~ "height") ~>~ (h~-~b)$, +where $w$ is the \%\f3GL_TEXTURE_WIDTH\fP, +$h$ is the \%\f3GL_TEXTURE_HEIGHT\fP, and $b$ is the border width +of the texture image being modified. +Note that $w$ and $h$ include twice the border width. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP or \f2height\fP is less than 0. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not an accepted + constant. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not a type constant. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is \%\f3GL_BITMAP\fP and +\f2format\fP is not \%\f3GL_COLOR_INDEX\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glTexSubImage2D\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexImage\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_2D\fP +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage3D(3G)\fP, +\%\f3glTexParameter(3G)\fP + Index: xc/doc/man/GL/gl/texsubimage3d.3gl diff -u /dev/null xc/doc/man/GL/gl/texsubimage3d.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/texsubimage3d.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,227 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 texsubima +.ds Xs 43161 9 texsubimage3d.gl +.TH GLTEXSUBIMAGE3D 3G +.SH NAME +.B "glTexSubImage3D +\- specify a three-dimensional texture subimage + +.SH C SPECIFICATION +void \f3glTexSubImage3D\fP( +GLenum \fItarget\fP, +.nf +.ta \w'\f3void \fPglTexSubImage3D( 'u + GLint \fIlevel\fP, + GLint \fIxoffset\fP, + GLint \fIyoffset\fP, + GLint \fIzoffset\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP, + GLsizei \fIdepth\fP, + GLenum \fIformat\fP, + GLenum \fItype\fP, + const GLvoid \fI*pixels\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIxoffset\fP\ \ 'u +\f2target\fP +Specifies the target texture. +Must be \%\f3GL_TEXTURE_3D\fP. +.TP +\f2level\fP +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +.TP +\f2xoffset\fP +Specifies a texel offset in the x direction within the texture array. +.TP +\f2yoffset\fP +Specifies a texel offset in the y direction within the texture array. +.TP +\f2zoffset\fP +Specifies a texel offset in the z direction within the texture array. +.TP +\f2width\fP +Specifies the width of the texture subimage. +.TP +\f2height\fP +Specifies the height of the texture subimage. +.TP +\f2depth\fP +Specifies the depth of the texture subimage. +.TP +\f2format\fP +Specifies the of the pixel data. +The following symbolic values are accepted: +\%\f3GL_COLOR_INDEX\fP, +\%\f3GL_RED\fP, +\%\f3GL_GREEN\fP, +\%\f3GL_BLUE\fP, +\%\f3GL_ALPHA\fP, +\%\f3GL_RGB\fP, +\%\f3GL_BGR\fP, +\%\f3GL_RGBA\fP, +\%\f3GL_BGRA\fP, +\%\f3GL_LUMINANCE\fP, and +\%\f3GL_LUMINANCE_ALPHA\fP. +.TP +\f2type\fP +Specifies the data type of the pixel data. +The following symbolic values are accepted: +\%\f3GL_UNSIGNED_BYTE\fP, +\%\f3GL_BYTE\fP, +\%\f3GL_BITMAP\fP, +\%\f3GL_UNSIGNED_SHORT\fP, +\%\f3GL_SHORT\fP, +\%\f3GL_UNSIGNED_INT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP. +.TP +\f2pixels\fP +Specifies a pointer to the image data in memory. +.SH DESCRIPTION +Texturing maps a portion of a specified texture image +onto each graphical primitive for which texturing is enabled. +To enable and disable three-dimensional texturing, call \%\f3glEnable\fP +and \%\f3glDisable\fP with argument \%\f3GL_TEXTURE_3D\fP. +.P +\%\f3glTexSubImage3D\fP redefines a contiguous subregion of an existing three-dimensional +texture image. +The texels referenced by \f2pixels\fP replace the portion of the +existing texture array with x indices \f2xoffset\fP and +$"xoffset" ~+~ "width" ~-~ 1$, inclusive, +y indices \f2yoffset\fP and $"yoffset" ~+~ "height" ~-~ 1$, inclusive, +and z indices \f2zoffset\fP and $"zoffset" ~+~ "depth" ~-~ 1$, inclusive. +This region may not include any texels outside the range of the +texture array as it was originally specified. +It is not an error to specify a subtexture with zero width, height, or +depth but such a specification has no effect. +.SH NOTES +\%\f3glTexSubImage3D\fP is available only if the GL version is 1.2 or greater. +.P +Texturing has no effect in color index mode. +.P +\%\f3glPixelStore\fP and \%\f3glPixelTransfer\fP modes affect texture images +in exactly the way they affect \%\f3glDrawPixels\fP. +.P +Formats \%\f3GL_BGR\fP, and \%\f3GL_BGRA\fP and types +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP are available only if the GL version +is 1.2 or greater. +.P +When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glTexSubImage3D\fP +specifies a three-dimensional sub texture for the current texture unit, +specified with \%\f3glActiveTextureARB\fP. +.P +When the \%\f3GL_ARB_imaging\fP extension is supported, the RGBA components +specified in \f2pixels\fP may be processed by the imaging pipeline. See +\%\f3glTexImage3D\fP for specific details. +.SH ERRORS +\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_TEXTURE_3D\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if the texture array has not +been defined by a previous \%\f3glTexImage3D\fP operation. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0. +.P +\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater +than $log sub 2$\f2max\fP, +where \f2max\fP is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP. +.P +\%\f3GL_INVALID_VALUE\fP is generated if $"xoffset" ~<~ ~-b$, +$("xoffset" ~+~ "width") ~>~ (w~-~b)$, +$"yoffset" ~<~ ~-b$, or $("yoffset" ~+~ "height") ~>~ (h~-~b)$, +or $"zoffset" ~<~ ~-b$, or $("zoffset" ~+~ "depth") ~>~ (d~-~b)$, +where $w$ is the \%\f3GL_TEXTURE_WIDTH\fP, +$h$ is the \%\f3GL_TEXTURE_HEIGHT\fP, $d$ is the \%\f3GL_TEXTURE_DEPTH\fP +and $b$ is the border width of the texture image being modified. +Note that $w$, $h$, and $d$ include twice the border width. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP, \f2height\fP, or \f2depth\fP +is less than 0. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not an accepted + constant. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not a type constant. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is \%\f3GL_BITMAP\fP and +\f2format\fP is not \%\f3GL_COLOR_INDEX\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glTexSubImage3D\fP is executed +between the execution of \%\f3glBegin\fP and the corresponding +execution of \%\f3glEnd\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_BYTE_3_3_2\fP, +\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or +\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP +and \f2format\fP is not \%\f3GL_RGB\fP. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of +\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP, +\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP, +\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP, +\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8\fP, +\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP, +\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or +\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP +and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. +.SH ASSOCIATED GETS +\%\f3glGetTexImage\fP +.br +\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_3D\fP +.SH SEE ALSO +\%\f3glActiveTextureARB(3G)\fP, +\%\f3glCopyTexImage1D(3G)\fP, +\%\f3glCopyTexImage2D(3G)\fP, +\%\f3glCopyTexSubImage1D(3G)\fP, +\%\f3glCopyTexSubImage2D(3G)\fP, +\%\f3glCopyTexSubImage3D(3G)\fP, +\%\f3glDrawPixels(3G)\fP, +\%\f3glPixelStore(3G)\fP, +\%\f3glPixelTransfer(3G)\fP, +\%\f3glTexEnv(3G)\fP, +\%\f3glTexGen(3G)\fP, +\%\f3glTexImage1D(3G)\fP, +\%\f3glTexImage2D(3G)\fP, +\%\f3glTexImage3D(3G)\fP, +\%\f3glTexSubImage1D(3G)\fP, +\%\f3glTexSubImage2D(3G)\fP, +\%\f3glTexParameter(3G)\fP + Index: xc/doc/man/GL/gl/translate.3gl diff -u /dev/null xc/doc/man/GL/gl/translate.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/translate.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,87 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 translate +.ds Xs 47827 4 translate.gl +.TH GLTRANSLATE 3G +.SH NAME +.B "glTranslated, glTranslatef +\- multiply the current matrix by a translation matrix + +.SH C SPECIFICATION +void \f3glTranslated\fP( +GLdouble \fIx\fP, +.nf +.ta \w'\f3void \fPglTranslated( 'u + GLdouble \fIy\fP, + GLdouble \fIz\fP ) +.fi +void \f3glTranslatef\fP( +GLfloat \fIx\fP, +.nf +.ta \w'\f3void \fPglTranslatef( 'u + GLfloat \fIy\fP, + GLfloat \fIz\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2x\fP\ \f2y\fP\ \f2z\fP\ \ 'u +\f2x\fP, \f2y\fP, \f2z\fP +Specify the \f2x\fP, \f2y\fP, and \f2z\fP coordinates of a translation vector. +.SH DESCRIPTION +\%\f3glTranslate\fP produces a translation by +$("x","y","z")$. +The current matrix +(see +.br +\%\f3glMatrixMode\fP) +is multiplied by this translation matrix, +with the product replacing the current matrix, as if +\%\f3glMultMatrix\fP were called with the following matrix +for its argument: +.sp +.ce +.EQ +left ( ~ down 20 matrix { + ccol { 1~~ above 0~~ above 0~~ above 0~~ } + ccol { 0~~ above 1~~ above 0~~ above 0~~ } + ccol { 0~~ above 0~~ above 1~~ above 0~~ } + ccol { "x"~ above "y"~ above "z"~ above 1} +} ~~right ) +.EN +.sp +.RE +If the matrix mode is either \%\f3GL_MODELVIEW\fP or \%\f3GL_PROJECTION\fP, +all objects drawn after a call to \%\f3glTranslate\fP are translated. +.P +Use \%\f3glPushMatrix\fP and +\%\f3glPopMatrix\fP to save and restore +the untranslated coordinate system. +.SH ERRORS +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glTranslate\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.bp +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_MATRIX_MODE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_COLOR_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MODELVIEW_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_PROJECTION_MATRIX\fP +.br +\%\f3glGet\fP with argument \%\f3GL_TEXTURE_MATRIX\fP +.SH SEE ALSO +\%\f3glMatrixMode(3G)\fP, +\%\f3glMultMatrix(3G)\fP, +\%\f3glPushMatrix(3G)\fP, +\%\f3glRotate(3G)\fP, +\%\f3glScale(3G)\fP Index: xc/doc/man/GL/gl/vertex.3gl diff -u /dev/null xc/doc/man/GL/gl/vertex.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/vertex.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,189 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 vertex.gl +.ds Xs 13679 4 vertex.gl +.TH GLVERTEX 3G +.SH NAME +.B "glVertex2d, glVertex2f, glVertex2i, glVertex2s, glVertex3d, glVertex3f, glVertex3i, glVertex3s, glVertex4d, glVertex4f, glVertex4i, glVertex4s, glVertex2dv, glVertex2fv, glVertex2iv, glVertex2sv, glVertex3dv, glVertex3fv, glVertex3iv, glVertex3sv, glVertex4dv, glVertex4fv, glVertex4iv, glVertex4sv +\- specify a vertex + +.SH C SPECIFICATION +void \f3glVertex2d\fP( +GLdouble \fIx\fP, +.nf +.ta \w'\f3void \fPglVertex2d( 'u + GLdouble \fIy\fP ) +.fi +void \f3glVertex2f\fP( +GLfloat \fIx\fP, +.nf +.ta \w'\f3void \fPglVertex2f( 'u + GLfloat \fIy\fP ) +.fi +void \f3glVertex2i\fP( +GLint \fIx\fP, +.nf +.ta \w'\f3void \fPglVertex2i( 'u + GLint \fIy\fP ) +.fi +void \f3glVertex2s\fP( +GLshort \fIx\fP, +.nf +.ta \w'\f3void \fPglVertex2s( 'u + GLshort \fIy\fP ) +.fi +void \f3glVertex3d\fP( +GLdouble \fIx\fP, +.nf +.ta \w'\f3void \fPglVertex3d( 'u + GLdouble \fIy\fP, + GLdouble \fIz\fP ) +.fi +void \f3glVertex3f\fP( +GLfloat \fIx\fP, +.nf +.ta \w'\f3void \fPglVertex3f( 'u + GLfloat \fIy\fP, + GLfloat \fIz\fP ) +.fi +void \f3glVertex3i\fP( +GLint \fIx\fP, +.nf +.ta \w'\f3void \fPglVertex3i( 'u + GLint \fIy\fP, + GLint \fIz\fP ) +.fi +void \f3glVertex3s\fP( +GLshort \fIx\fP, +.nf +.ta \w'\f3void \fPglVertex3s( 'u + GLshort \fIy\fP, + GLshort \fIz\fP ) +.fi +void \f3glVertex4d\fP( +GLdouble \fIx\fP, +.nf +.ta \w'\f3void \fPglVertex4d( 'u + GLdouble \fIy\fP, + GLdouble \fIz\fP, + GLdouble \fIw\fP ) +.fi +void \f3glVertex4f\fP( +GLfloat \fIx\fP, +.nf +.ta \w'\f3void \fPglVertex4f( 'u + GLfloat \fIy\fP, + GLfloat \fIz\fP, + GLfloat \fIw\fP ) +.fi +void \f3glVertex4i\fP( +GLint \fIx\fP, +.nf +.ta \w'\f3void \fPglVertex4i( 'u + GLint \fIy\fP, + GLint \fIz\fP, + GLint \fIw\fP ) +.fi +void \f3glVertex4s\fP( +GLshort \fIx\fP, +.nf +.ta \w'\f3void \fPglVertex4s( 'u + GLshort \fIy\fP, + GLshort \fIz\fP, + GLshort \fIw\fP ) +.fi + +.SH PARAMETERS +.TP \w'\f2x\fP\ \f2y\fP\ \f2z\fP\ \f2w\fP\ \ 'u +\f2x\fP, \f2y\fP, \f2z\fP, \f2w\fP +Specify \f2x\fP, \f2y\fP, \f2z\fP, and \f2w\fP coordinates of a vertex. +Not all parameters are present in all forms of the command. +.SH C SPECIFICATION +void \f3glVertex2dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glVertex2fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glVertex2iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glVertex2sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi +void \f3glVertex3dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glVertex3fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glVertex3iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glVertex3sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi +void \f3glVertex4dv\fP( +const GLdouble \fI*v\fP ) +.nf +.fi +void \f3glVertex4fv\fP( +const GLfloat \fI*v\fP ) +.nf +.fi +void \f3glVertex4iv\fP( +const GLint \fI*v\fP ) +.nf +.fi +void \f3glVertex4sv\fP( +const GLshort \fI*v\fP ) +.nf +.fi + +.SH PARAMETERS +.TP +\f2v\fP +Specifies a pointer to an array of two, three, or four elements. +The elements of a two-element array are \f2x\fP and \f2y\fP; +of a three-element array, \f2x\fP, \f2y\fP, and \f2z\fP; +and of a four-element array, \f2x\fP, \f2y\fP, \f2z\fP, and \f2w\fP. +.SH DESCRIPTION +\%\f3glVertex\fP commands are used within \%\f3glBegin\fP/\%\f3glEnd\fP pairs to specify +point, line, and polygon vertices. +The current color, +normal, +and texture coordinates are associated with the vertex when \%\f3glVertex\fP is called. +.P +When only \f2x\fP and \f2y\fP are specified, +\f2z\fP defaults to 0 and \f2w\fP defaults to 1. +When \f2x, y,\fP and \f2z\fP are specified, +\f2w\fP defaults to 1. +.SH NOTES +Invoking \%\f3glVertex\fP outside of a \%\f3glBegin\fP/\%\f3glEnd\fP pair +results in undefined behavior. +.SH SEE ALSO +\%\f3glBegin(3G)\fP, +\%\f3glCallList(3G)\fP, +\%\f3glColor(3G)\fP, +\%\f3glEdgeFlag(3G)\fP, +\%\f3glEvalCoord(3G)\fP, +\%\f3glIndex(3G)\fP, +\%\f3glMaterial(3G)\fP, +.br +\%\f3glNormal(3G)\fP, +\%\f3glRect(3G)\fP, +\%\f3glTexCoord(3G)\fP, +\%\f3glVertexPointer(3G)\fP Index: xc/doc/man/GL/gl/vertexpointer.3gl diff -u /dev/null xc/doc/man/GL/gl/vertexpointer.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/vertexpointer.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,124 @@ +'\" te +'\"! tbl|eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 vertexpoi +.ds Xs 51670 6 vertexpointer.gl +.TH GLVERTEXPOINTER 3G +.SH NAME +.B "glVertexPointer +\- define an array of vertex data + +.SH C SPECIFICATION +void \f3glVertexPointer\fP( +GLint \fIsize\fP, +.nf +.ta \w'\f3void \fPglVertexPointer( 'u + GLenum \fItype\fP, + GLsizei \fIstride\fP, + const GLvoid \fI*ptr\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\fIstride\fP\ \ 'u +\f2size\fP +Specifies the number of coordinates per vertex; must be 2, 3, or +4. The initial value is 4. +.TP +\f2type\fP +Specifies the data type of each coordinate in the array. +Symbolic constants +\%\f3GL_SHORT\fP, +\%\f3GL_INT\fP, +\%\f3GL_FLOAT\fP, +and \%\f3GL_DOUBLE\fP +are accepted. The initial value is \%\f3GL_FLOAT\fP. +.TP +\f2stride\fP +Specifies the byte offset between consecutive +vertices. If \f2stride\fP is 0, the vertices are understood to be tightly packed in +the array. The initial value +is 0. +.TP +\f2ptr\fP +Specifies a pointer to the first coordinate of the first vertex in the +array. The initial value is 0. +.SH DESCRIPTION +\%\f3glVertexPointer\fP specifies the location and data of an array of vertex coordinates +to use when rendering. +\f2size\fP specifies the number of coordinates per vertex and +\f2type\fP the data type of +the coordinates. \f2stride\fP specifies the byte stride from one +vertex to the next allowing vertices and attributes +to be packed into a single array or stored in separate arrays. +(Single-array storage may be more efficient on some implementations; +see \%\f3glInterleavedArrays\fP.) +When a vertex array is +specified, \f2size\fP, \f2type\fP, \f2stride\fP, and \f2ptr\fP are saved as client-side +state. +.P +To enable and disable the vertex array, call \%\f3glEnableClientState\fP and +.br +\%\f3glDisableClientState\fP with the argument \%\f3GL_VERTEX_ARRAY\fP. If +enabled, the vertex array is used when +\%\f3glDrawArrays\fP, \%\f3glDrawElements\fP, or \%\f3glArrayElement\fP is called. +.P +Use \%\f3glDrawArrays\fP to construct a sequence of primitives (all of +the same type) +from prespecified vertex and vertex attribute arrays. +Use \%\f3glArrayElement\fP to specify primitives +by indexing vertices and vertex attributes and \%\f3glDrawElements\fP to +construct a sequence of primitives by indexing vertices and vertex attributes. +.SH NOTES +\%\f3glVertexPointer\fP is available only if the GL version is 1.1 or greater. +.P +The vertex array is initially disabled and isn't accessed when +\%\f3glArrayElement\fP, \%\f3glDrawElements\fP or \%\f3glDrawArrays\fP is called. +.P +Execution of \%\f3glVertexPointer\fP is not allowed between the execution of +\%\f3glBegin\fP and the corresponding execution of \%\f3glEnd\fP, +but an error may or may not be generated. If no error is generated, +the operation is undefined. +.P +\%\f3glVertexPointer\fP is typically implemented on the client side. +.P +Vertex array parameters are client-side state and are therefore not +saved or restored by \%\f3glPushAttrib\fP and \%\f3glPopAttrib\fP. +Use \%\f3glPushClientAttrib\fP and \%\f3glPopClientAttrib\fP instead. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if \f2size\fP is not 2, 3, or 4. +.P +\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is is not an accepted value. +.P +\%\f3GL_INVALID_VALUE\fP is generated if \f2stride\fP is negative. +.SH ASSOCIATED GETS +\%\f3glIsEnabled\fP with argument \%\f3GL_VERTEX_ARRAY\fP +.br +\%\f3glGet\fP with argument \%\f3GL_VERTEX_ARRAY_SIZE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_VERTEX_ARRAY_TYPE\fP +.br +\%\f3glGet\fP with argument \%\f3GL_VERTEX_ARRAY_STRIDE\fP +.br +\%\f3glGetPointerv\fP with argument \%\f3GL_VERTEX_ARRAY_POINTER\fP +.SH SEE ALSO +\%\f3glArrayElement(3G)\fP, +\%\f3glColorPointer(3G)\fP, +\%\f3glDrawArrays(3G)\fP, +\%\f3glDrawElements(3G)\fP, +\%\f3glDrawRangeElements(3G)\fP, +\%\f3glEdgeFlagPointer(3G)\fP, +\%\f3glEnable(3G)\fP, +\%\f3glGetPointerv(3G)\fP, +\%\f3glIndexPointer(3G)\fP, +\%\f3glInterleavedArrays(3G)\fP, +\%\f3glNormalPointer(3G)\fP, +\%\f3glPopClientAttrib(3G)\fP, +\%\f3glPushClientAttrib(3G)\fP, +\%\f3glTexCoordPointer(3G)\fP Index: xc/doc/man/GL/gl/viewport.3gl diff -u /dev/null xc/doc/man/GL/gl/viewport.3gl:1.2 --- /dev/null Fri Jan 18 15:20:31 2002 +++ xc/doc/man/GL/gl/viewport.3gl Mon Jan 14 22:43:27 2002 @@ -0,0 +1,72 @@ +'\" e +'\"! eqn | mmdoc +'\"macro stdmacro +.ds Vn Version 1.2 +.ds Dt 24 September 1999 +.ds Re Release 1.2.1 +.ds Dp Jan 14 18:30 +.ds Dm 01 viewport. +.ds Xs 35742 4 viewport.gl +.TH GLVIEWPORT 3G +.SH NAME +.B "glViewport +\- set the viewport + +.SH C SPECIFICATION +void \f3glViewport\fP( +GLint \fIx\fP, +.nf +.ta \w'\f3void \fPglViewport( 'u + GLint \fIy\fP, + GLsizei \fIwidth\fP, + GLsizei \fIheight\fP ) +.fi + +.EQ +delim $$ +.EN +.SH PARAMETERS +.TP \w'\f2x\fP\ \f2y\fP\ \ 'u +\f2x\fP, \f2y\fP +Specify the lower left corner of the viewport rectangle, +in pixels. The initial value is (0,0). +.TP +\f2width\fP, \f2height\fP +Specify the width and height +of the viewport. +When a GL context is first attached to a window, +\f2width\fP and \f2height\fP are set to the dimensions of that window. +.SH DESCRIPTION +\%\f3glViewport\fP specifies the affine transformation of $x$ and $y$ from +normalized device coordinates to window coordinates. +Let ($x sub nd$, $y sub nd$) be normalized device coordinates. +Then the window coordinates ($x sub w$, $y sub w$) are computed as follows: +.sp +.ce +.EQ +x sub w ~=~ ( x sub nd ~+~ 1 ) left ( "width" over 2 right ) ~+~ "x" +.EN +.sp +.ce +.EQ +y sub w ~=~ ( y sub nd ~+~ 1 ) left ( "height" over 2 right ) ~+~ "y" +.EN +.RE +.P +Viewport width and height are silently clamped +to a range that depends on the implementation. +To query this range, call \%\f3glGet\fP with argument +\%\f3GL_MAX_VIEWPORT_DIMS\fP. +.SH ERRORS +\%\f3GL_INVALID_VALUE\fP is generated if either \f2width\fP or \f2height\fP is negative. +.P +\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glViewport\fP +is executed between the execution of \%\f3glBegin\fP +and the corresponding execution of \%\f3glEnd\fP. +.bp +.SH ASSOCIATED GETS +\%\f3glGet\fP with argument \%\f3GL_VIEWPORT\fP +.br +\%\f3glGet\fP with argument \%\f3GL_MAX_VIEWPORT_DIMS\fP +.SH SEE ALSO +\%\f3glDepthRange(3G)\fP Index: xc/doc/man/GLU/begincurve.3gl diff -u xc/doc/man/GLU/begincurve.3gl:1.1 xc/doc/man/GLU/begincurve.3gl:1.2 --- xc/doc/man/GLU/begincurve.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/begincurve.3gl Mon Jan 14 22:06:41 2002 @@ -59,7 +59,7 @@ gluEndCurve(nobj); .Ee .SH SEE ALSO -\%\f3gluBeginSurface\fP, \%\f3gluBeginTrim\fP, \%\f3gluNewNurbsRenderer\fP, -\%\f3gluNurbsCurve\fP, -\f3glPopAttrib\fP, \f3glPushAttrib\fP +\%\f3gluBeginSurface(3G)\fP, \%\f3gluBeginTrim(3G)\fP, \%\f3gluNewNurbsRenderer(3G)\fP, +\%\f3gluNurbsCurve(3G)\fP, +\f3glPopAttrib(3G)\fP, \f3glPushAttrib(3G)\fP Index: xc/doc/man/GLU/beginpolygon.3gl diff -u xc/doc/man/GLU/beginpolygon.3gl:1.1 xc/doc/man/GLU/beginpolygon.3gl:1.2 --- xc/doc/man/GLU/beginpolygon.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/beginpolygon.3gl Mon Jan 14 22:06:41 2002 @@ -69,8 +69,8 @@ gluEndPolygon(tobj); .Ee .SH SEE ALSO -\%\f3gluNewTess\fP, \%\f3gluNextContour\fP, \%\f3gluTessCallback\fP, \%\f3gluTessVertex\fP, -\%\f3gluTessBeginPolygon\fP, \%\f3gluTessBeginContour\fP +\%\f3gluNewTess(3G)\fP, \%\f3gluNextContour(3G)\fP, \%\f3gluTessCallback(3G)\fP, \%\f3gluTessVertex(3G)\fP, +\%\f3gluTessBeginPolygon(3G)\fP, \%\f3gluTessBeginContour(3G)\fP Index: xc/doc/man/GLU/beginsurface.3gl diff -u xc/doc/man/GLU/beginsurface.3gl:1.1 xc/doc/man/GLU/beginsurface.3gl:1.2 --- xc/doc/man/GLU/beginsurface.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/beginsurface.3gl Mon Jan 14 22:06:41 2002 @@ -63,8 +63,8 @@ .Ee .sp .SH SEE ALSO -\%\f3gluBeginCurve\fP, \%\f3gluBeginTrim\fP, \%\f3gluNewNurbsRenderer\fP, -\%\f3gluNurbsCurve\fP, \%\f3gluNurbsSurface\fP, \%\f3gluPwlCurve\fP +\%\f3gluBeginCurve(3G)\fP, \%\f3gluBeginTrim(3G)\fP, \%\f3gluNewNurbsRenderer(3G)\fP, +\%\f3gluNurbsCurve(3G)\fP, \%\f3gluNurbsSurface(3G)\fP, \%\f3gluPwlCurve(3G)\fP Index: xc/doc/man/GLU/begintrim.3gl diff -u xc/doc/man/GLU/begintrim.3gl:1.1 xc/doc/man/GLU/begintrim.3gl:1.2 --- xc/doc/man/GLU/begintrim.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/begintrim.3gl Mon Jan 14 22:06:41 2002 @@ -100,7 +100,7 @@ gluEndTrim(nobj); .Ee .SH SEE ALSO -\%\f3gluBeginSurface\fP, \%\f3gluNewNurbsRenderer\fP, \%\f3gluNurbsCallback\fP, -\%\f3gluNurbsCurve\fP, \%\f3gluPwlCurve\fP +\%\f3gluBeginSurface(3G)\fP, \%\f3gluNewNurbsRenderer(3G)\fP, \%\f3gluNurbsCallback(3G)\fP, +\%\f3gluNurbsCurve(3G)\fP, \%\f3gluPwlCurve(3G)\fP Index: xc/doc/man/GLU/build1dmipmaplevels.3gl diff -u xc/doc/man/GLU/build1dmipmaplevels.3gl:1.1 xc/doc/man/GLU/build1dmipmaplevels.3gl:1.2 --- xc/doc/man/GLU/build1dmipmaplevels.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/build1dmipmaplevels.3gl Mon Jan 14 22:06:41 2002 @@ -219,10 +219,10 @@ \%\f3GLU_INVALID_OPERATION\fP is returned if \f2type\fP is \%\f3GL_UNSIGNED_INT_10_10_10_2\fP or \%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. .SH SEE ALSO -\f3glDrawPixels\fP, \f3glTexImage1D\fP, \f3glTexImage2D\fP, -\f3glTexImage3D\fP, -\%\f3gluBuild1DMipmaps\fP, \%\f3gluBuild2DMipmaps\fP, \%\f3gluBuild3DMipmaps\fP, -\%\f3gluErrorString\fP, -\f3glGetTexImage\fP, -\f3glGetTexLevelParameter\fP, -\%\f3gluBuild2DMipmapLevels\fP, \%\f3gluBuild3DMipmapLevels\fP +\f3glDrawPixels(3G)\fP, \f3glTexImage1D(3G)\fP, \f3glTexImage2D(3G)\fP, +\f3glTexImage3D(3G)\fP, +\%\f3gluBuild1DMipmaps(3G)\fP, \%\f3gluBuild2DMipmaps(3G)\fP, \%\f3gluBuild3DMipmaps(3G)\fP, +\%\f3gluErrorString(3G)\fP, +\f3glGetTexImage(3G)\fP, +\f3glGetTexLevelParameter(3G)\fP, +\%\f3gluBuild2DMipmapLevels(3G)\fP, \%\f3gluBuild3DMipmapLevels(3G)\fP Index: xc/doc/man/GLU/build1dmipmaps.3gl diff -u xc/doc/man/GLU/build1dmipmaps.3gl:1.1 xc/doc/man/GLU/build1dmipmaps.3gl:1.2 --- xc/doc/man/GLU/build1dmipmaps.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/build1dmipmaps.3gl Mon Jan 14 22:06:41 2002 @@ -214,15 +214,15 @@ \%\f3GLU_INVALID_OPERATION\fP is returned if \f2type\fP is \%\f3GL_UNSIGNED_INT_10_10_10_2\fP or \%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. .SH SEE ALSO -\f3glDrawPixels\fP, -\f3glTexImage1D\fP, -\f3glTexImage2D\fP, -\f3glTexImage3D\fP, -\%\f3gluBuild2DMipmaps\fP, -\%\f3gluBuild3DMipmaps\fP, -\%\f3gluErrorString\fP, -\f3glGetTexImage\fP, -\f3glGetTexLevelParameter\fP, -\%\f3gluBuild1DMipmapLevels\fP, -\%\f3gluBuild2DMipmapLevels\fP, -\%\f3gluBuild3DMipmapLevels\fP +\f3glDrawPixels(3G)\fP, +\f3glTexImage1D(3G)\fP, +\f3glTexImage2D(3G)\fP, +\f3glTexImage3D(3G)\fP, +\%\f3gluBuild2DMipmaps(3G)\fP, +\%\f3gluBuild3DMipmaps(3G)\fP, +\%\f3gluErrorString(3G)\fP, +\f3glGetTexImage(3G)\fP, +\f3glGetTexLevelParameter(3G)\fP, +\%\f3gluBuild1DMipmapLevels(3G)\fP, +\%\f3gluBuild2DMipmapLevels(3G)\fP, +\%\f3gluBuild3DMipmapLevels(3G)\fP Index: xc/doc/man/GLU/build2dmipmaplevels.3gl diff -u xc/doc/man/GLU/build2dmipmaplevels.3gl:1.1 xc/doc/man/GLU/build2dmipmaplevels.3gl:1.2 --- xc/doc/man/GLU/build2dmipmaplevels.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/build2dmipmaplevels.3gl Mon Jan 14 22:06:41 2002 @@ -220,15 +220,15 @@ \%\f3GLU_INVALID_OPERATION\fP is returned if \f2type\fP is \%\f3GL_UNSIGNED_INT_10_10_10_2\fP or \%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. .SH SEE ALSO -\f3glDrawPixels\fP, -\f3glTexImage1D\fP, -\f3glTexImage2D\fP, -\f3glTexImage3D\fP, -\%\f3gluBuild1DMipmaps\fP, -\%\f3gluBuild2DMipmaps\fP, -\%\f3gluBuild3DMipmaps\fP, -\%\f3gluErrorString\fP, -\f3glGetTexImage\fP, -\f3glGetTexLevelParameter\fP, -\%\f3gluBuild1DMipmapLevels\fP, -\%\f3gluBuild3DMipmapLevels\fP +\f3glDrawPixels(3G)\fP, +\f3glTexImage1D(3G)\fP, +\f3glTexImage2D(3G)\fP, +\f3glTexImage3D(3G)\fP, +\%\f3gluBuild1DMipmaps(3G)\fP, +\%\f3gluBuild2DMipmaps(3G)\fP, +\%\f3gluBuild3DMipmaps(3G)\fP, +\%\f3gluErrorString(3G)\fP, +\f3glGetTexImage(3G)\fP, +\f3glGetTexLevelParameter(3G)\fP, +\%\f3gluBuild1DMipmapLevels(3G)\fP, +\%\f3gluBuild3DMipmapLevels(3G)\fP Index: xc/doc/man/GLU/build2dmipmaps.3gl diff -u xc/doc/man/GLU/build2dmipmaps.3gl:1.1 xc/doc/man/GLU/build2dmipmaps.3gl:1.2 --- xc/doc/man/GLU/build2dmipmaps.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/build2dmipmaps.3gl Mon Jan 14 22:06:41 2002 @@ -222,15 +222,15 @@ \%\f3GLU_INVALID_OPERATION\fP is returned if \f2type\fP is \%\f3GL_UNSIGNED_INT_10_10_10_2\fP or \%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. .SH SEE ALSO -\f3glDrawPixels\fP, -\f3glTexImage1D\fP, -\f3glTexImage2D\fP, -\f3glTexImage3D\fP, -\%\f3gluBuild1DMipmaps\fP, -\%\f3gluBuild3DMipmaps\fP, -\%\f3gluErrorString\fP, -\f3glGetTexImage\fP, -\f3glGetTexLevelParameter\fP, -\%\f3gluBuild1DMipmapLevels\fP, -\%\f3gluBuild2DMipmapLevels\fP, -\%\f3gluBuild3DMipmapLevels\fP +\f3glDrawPixels(3G)\fP, +\f3glTexImage1D(3G)\fP, +\f3glTexImage2D(3G)\fP, +\f3glTexImage3D(3G)\fP, +\%\f3gluBuild1DMipmaps(3G)\fP, +\%\f3gluBuild3DMipmaps(3G)\fP, +\%\f3gluErrorString(3G)\fP, +\f3glGetTexImage(3G)\fP, +\f3glGetTexLevelParameter(3G)\fP, +\%\f3gluBuild1DMipmapLevels(3G)\fP, +\%\f3gluBuild2DMipmapLevels(3G)\fP, +\%\f3gluBuild3DMipmapLevels(3G)\fP Index: xc/doc/man/GLU/build3dmipmaplevels.3gl diff -u xc/doc/man/GLU/build3dmipmaplevels.3gl:1.1 xc/doc/man/GLU/build3dmipmaplevels.3gl:1.2 --- xc/doc/man/GLU/build3dmipmaplevels.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/build3dmipmaplevels.3gl Mon Jan 14 22:06:41 2002 @@ -223,15 +223,15 @@ \%\f3GLU_INVALID_OPERATION\fP is returned if \f2type\fP is \%\f3GL_UNSIGNED_INT_10_10_10_2\fP or \%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. .SH SEE ALSO -\f3glDrawPixels\fP, -\f3glTexImage1D\fP, -\f3glTexImage2D\fP, -\f3glTexImage3D\fP, -\%\f3gluBuild1DMipmaps\fP, -\%\f3gluBuild2DMipmaps\fP, -\%\f3gluBuild3DMipmaps\fP, -\%\f3gluErrorString\fP, -\f3glGetTexImage\fP, -\f3glGetTexLevelParameter\fP, -\%\f3gluBuild1DMipmapLevels\fP, -\%\f3gluBuild2DMipmapLevels\fP +\f3glDrawPixels(3G)\fP, +\f3glTexImage1D(3G)\fP, +\f3glTexImage2D(3G)\fP, +\f3glTexImage3D(3G)\fP, +\%\f3gluBuild1DMipmaps(3G)\fP, +\%\f3gluBuild2DMipmaps(3G)\fP, +\%\f3gluBuild3DMipmaps(3G)\fP, +\%\f3gluErrorString(3G)\fP, +\f3glGetTexImage(3G)\fP, +\f3glGetTexLevelParameter(3G)\fP, +\%\f3gluBuild1DMipmapLevels(3G)\fP, +\%\f3gluBuild2DMipmapLevels(3G)\fP Index: xc/doc/man/GLU/build3dmipmaps.3gl diff -u xc/doc/man/GLU/build3dmipmaps.3gl:1.1 xc/doc/man/GLU/build3dmipmaps.3gl:1.2 --- xc/doc/man/GLU/build3dmipmaps.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/build3dmipmaps.3gl Mon Jan 14 22:06:41 2002 @@ -224,15 +224,15 @@ \%\f3GLU_INVALID_OPERATION\fP is returned if \f2type\fP is \%\f3GL_UNSIGNED_INT_10_10_10_2\fP or \%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. .SH SEE ALSO -\f3glDrawPixels\fP, -\f3glTexImage1D\fP, -\f3glTexImage2D\fP, -\f3glTexImage3D\fP, -\%\f3gluBuild1DMipmaps\fP, -\%\f3gluBuild3DMipmaps\fP, -\%\f3gluErrorString\fP, -\f3glGetTexImage\fP, -\f3glGetTexLevelParameter\fP, -\%\f3gluBuild1DMipmapLevels\fP, -\%\f3gluBuild2DMipmapLevels\fP, -\%\f3gluBuild3DMipmapLevels\fP +\f3glDrawPixels(3G)\fP, +\f3glTexImage1D(3G)\fP, +\f3glTexImage2D(3G)\fP, +\f3glTexImage3D(3G)\fP, +\%\f3gluBuild1DMipmaps(3G)\fP, +\%\f3gluBuild3DMipmaps(3G)\fP, +\%\f3gluErrorString(3G)\fP, +\f3glGetTexImage(3G)\fP, +\f3glGetTexLevelParameter(3G)\fP, +\%\f3gluBuild1DMipmapLevels(3G)\fP, +\%\f3gluBuild2DMipmapLevels(3G)\fP, +\%\f3gluBuild3DMipmapLevels(3G)\fP Index: xc/doc/man/GLU/checkextension.3gl diff -u xc/doc/man/GLU/checkextension.3gl:1.1 xc/doc/man/GLU/checkextension.3gl:1.2 --- xc/doc/man/GLU/checkextension.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/checkextension.3gl Mon Jan 14 22:06:41 2002 @@ -46,8 +46,8 @@ .P All strings are null-terminated. .SH SEE ALSO -\f3glGetString\fP, -\%\f3gluGetString\fP, -\f3glXGetClientString\fP, -\f3glXQueryExtensionsString\fP, -\f3glXQueryServerString\fP +\f3glGetString(3G)\fP, +\%\f3gluGetString(3G)\fP, +\f3glXGetClientString(3G)\fP, +\f3glXQueryExtensionsString(3G)\fP, +\f3glXQueryServerString(3G)\fP Index: xc/doc/man/GLU/cylinder.3gl diff -u xc/doc/man/GLU/cylinder.3gl:1.1 xc/doc/man/GLU/cylinder.3gl:1.2 --- xc/doc/man/GLU/cylinder.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/cylinder.3gl Mon Jan 14 22:06:41 2002 @@ -66,5 +66,5 @@ to 0.5 at the -\f2y\fP axis, to 0.75 at the \-\f2x\fP axis, and back to 1.0 at the +\f2y\fP axis. .SH SEE ALSO -\%\f3gluDisk\fP, \%\f3gluNewQuadric\fP, \%\f3gluPartialDisk\fP, \%\f3gluQuadricTexture\fP, -\%\f3gluSphere\fP +\%\f3gluDisk(3G)\fP, \%\f3gluNewQuadric(3G)\fP, \%\f3gluPartialDisk(3G)\fP, \%\f3gluQuadricTexture(3G)\fP, +\%\f3gluSphere(3G)\fP Index: xc/doc/man/GLU/deletenurbsrenderer.3gl diff -u xc/doc/man/GLU/deletenurbsrenderer.3gl:1.1 xc/doc/man/GLU/deletenurbsrenderer.3gl:1.2 --- xc/doc/man/GLU/deletenurbsrenderer.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/deletenurbsrenderer.3gl Mon Jan 14 22:06:41 2002 @@ -31,4 +31,4 @@ Once \%\f3gluDeleteNurbsRenderer\fP has been called, \f2nurb\fP cannot be used again. .SH SEE ALSO -\%\f3gluNewNurbsRenderer\fP +\%\f3gluNewNurbsRenderer(3G)\fP Index: xc/doc/man/GLU/deletequadric.3gl diff -u xc/doc/man/GLU/deletequadric.3gl:1.1 xc/doc/man/GLU/deletequadric.3gl:1.2 --- xc/doc/man/GLU/deletequadric.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/deletequadric.3gl Mon Jan 14 22:06:41 2002 @@ -30,5 +30,5 @@ and frees any memory it uses. Once \%\f3gluDeleteQuadric\fP has been called, \f2quad\fP cannot be used again. .SH SEE ALSO -\%\f3gluNewQuadric\fP +\%\f3gluNewQuadric(3G)\fP Index: xc/doc/man/GLU/deletetess.3gl diff -u xc/doc/man/GLU/deletetess.3gl:1.1 xc/doc/man/GLU/deletetess.3gl:1.2 --- xc/doc/man/GLU/deletetess.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/deletetess.3gl Mon Jan 14 22:06:41 2002 @@ -29,5 +29,5 @@ \%\f3gluDeleteTess\fP destroys the indicated tessellation object (which was created with \%\f3gluNewTess\fP) and frees any memory that it used. .SH SEE ALSO -\%\f3gluBeginPolygon\fP, \%\f3gluNewTess\fP, \%\f3gluTessCallback\fP +\%\f3gluBeginPolygon(3G)\fP, \%\f3gluNewTess(3G)\fP, \%\f3gluTessCallback(3G)\fP Index: xc/doc/man/GLU/disk.3gl diff -u xc/doc/man/GLU/disk.3gl:1.1 xc/doc/man/GLU/disk.3gl:1.2 --- xc/doc/man/GLU/disk.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/disk.3gl Mon Jan 14 22:06:41 2002 @@ -65,6 +65,6 @@ it is (0, 0.5), and at (0, \-\f2r\fP, 0) it is (0.5, 0). .SH SEE ALSO -\%\f3gluCylinder\fP, \%\f3gluNewQuadric\fP, \%\f3gluPartialDisk\fP, -\%\f3gluQuadricOrientation\fP, -\%\f3gluQuadricTexture\fP, \%\f3gluSphere\fP +\%\f3gluCylinder(3G)\fP, \%\f3gluNewQuadric(3G)\fP, \%\f3gluPartialDisk(3G)\fP, +\%\f3gluQuadricOrientation(3G)\fP, +\%\f3gluQuadricTexture(3G)\fP, \%\f3gluSphere(3G)\fP Index: xc/doc/man/GLU/errorstring.3gl diff -u xc/doc/man/GLU/errorstring.3gl:1.1 xc/doc/man/GLU/errorstring.3gl:1.2 --- xc/doc/man/GLU/errorstring.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/errorstring.3gl Mon Jan 14 22:06:41 2002 @@ -41,7 +41,7 @@ .SH ERRORS \%\f3NULL\fP is returned if \f2error\fP is not a valid GL or GLU error code. .SH SEE ALSO -\f3glGetError\fP, -\%\f3gluNurbsCallback\fP, -\%\f3gluQuadricCallback\fP, -\%\f3gluTessCallback\fP +\f3glGetError(3G)\fP, +\%\f3gluNurbsCallback(3G)\fP, +\%\f3gluQuadricCallback(3G)\fP, +\%\f3gluTessCallback(3G)\fP Index: xc/doc/man/GLU/getnurbsproperty.3gl diff -u xc/doc/man/GLU/getnurbsproperty.3gl:1.1 xc/doc/man/GLU/getnurbsproperty.3gl:1.2 --- xc/doc/man/GLU/getnurbsproperty.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/getnurbsproperty.3gl Mon Jan 14 22:06:41 2002 @@ -51,5 +51,5 @@ \%\f3gluNurbsProperty\fP reference page for information about what the properties are and what they do. .SH SEE ALSO -\%\f3gluNewNurbsRenderer\fP, -\%\f3gluNurbsProperty\fP +\%\f3gluNewNurbsRenderer(3G)\fP, +\%\f3gluNurbsProperty(3G)\fP Index: xc/doc/man/GLU/getstring.3gl diff -u xc/doc/man/GLU/getstring.3gl:1.1 xc/doc/man/GLU/getstring.3gl:1.2 --- xc/doc/man/GLU/getstring.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/getstring.3gl Mon Jan 14 22:06:41 2002 @@ -61,5 +61,5 @@ \%\f3GLU_VERSION\fP or \%\f3GLU_EXTENSIONS\fP. .P .SH SEE ALSO -\f3glGetString\fP +\f3glGetString(3G)\fP Index: xc/doc/man/GLU/gettessproperty.3gl diff -u xc/doc/man/GLU/gettessproperty.3gl:1.1 xc/doc/man/GLU/gettessproperty.3gl:1.2 --- xc/doc/man/GLU/gettessproperty.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/gettessproperty.3gl Mon Jan 14 22:06:41 2002 @@ -45,6 +45,6 @@ \%\f3gluTessProperty\fP reference page for information about the properties and what they do. .SH SEE ALSO -\%\f3gluNewTess\fP, -\%\f3gluTessProperty\fP +\%\f3gluNewTess(3G)\fP, +\%\f3gluTessProperty(3G)\fP Index: xc/doc/man/GLU/loadsamplingmatrices.3gl diff -u xc/doc/man/GLU/loadsamplingmatrices.3gl:1.1 xc/doc/man/GLU/loadsamplingmatrices.3gl:1.2 --- xc/doc/man/GLU/loadsamplingmatrices.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/loadsamplingmatrices.3gl Mon Jan 14 22:06:41 2002 @@ -55,6 +55,6 @@ (A round trip to the GL server is needed to fetch the current values of the modelview matrix, projection matrix, and viewport.) .SH SEE ALSO -\%\f3gluGetNurbsProperty\fP, -\%\f3gluNewNurbsRenderer\fP, -\%\f3gluNurbsProperty\fP +\%\f3gluGetNurbsProperty(3G)\fP, +\%\f3gluNewNurbsRenderer(3G)\fP, +\%\f3gluNurbsProperty(3G)\fP Index: xc/doc/man/GLU/lookat.3gl diff -u xc/doc/man/GLU/lookat.3gl:1.1 xc/doc/man/GLU/lookat.3gl:1.2 --- xc/doc/man/GLU/lookat.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/lookat.3gl Mon Jan 14 22:06:41 2002 @@ -98,4 +98,4 @@ glTranslated (-eyex, -eyey, -eyez); .Ee .SH SEE ALSO -\f3glFrustum\fP, \%\f3gluPerspective\fP +\f3glFrustum(3G)\fP, \%\f3gluPerspective(3G)\fP Index: xc/doc/man/GLU/newnurbsrenderer.3gl diff -u xc/doc/man/GLU/newnurbsrenderer.3gl:1.1 xc/doc/man/GLU/newnurbsrenderer.3gl:1.2 --- xc/doc/man/GLU/newnurbsrenderer.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/newnurbsrenderer.3gl Mon Jan 14 22:06:41 2002 @@ -27,5 +27,5 @@ NURBS rendering and control functions. A return value of 0 means that there is not enough memory to allocate the object. .SH SEE ALSO -\%\f3gluBeginCurve\fP, \%\f3gluBeginSurface\fP, \%\f3gluBeginTrim\fP, \%\f3gluDeleteNurbsRenderer\fP, \%\f3gluNurbsCallback\fP, \%\f3gluNurbsProperty\fP +\%\f3gluBeginCurve(3G)\fP, \%\f3gluBeginSurface(3G)\fP, \%\f3gluBeginTrim(3G)\fP, \%\f3gluDeleteNurbsRenderer(3G)\fP, \%\f3gluNurbsCallback(3G)\fP, \%\f3gluNurbsProperty(3G)\fP Index: xc/doc/man/GLU/newquadric.3gl diff -u xc/doc/man/GLU/newquadric.3gl:1.1 xc/doc/man/GLU/newquadric.3gl:1.2 --- xc/doc/man/GLU/newquadric.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/newquadric.3gl Mon Jan 14 22:06:41 2002 @@ -26,8 +26,8 @@ calling quadrics rendering and control functions. A return value of 0 means that there is not enough memory to allocate the object. .SH SEE ALSO -\%\f3gluCylinder\fP, \%\f3gluDeleteQuadric\fP, \%\f3gluDisk\fP, -\%\f3gluPartialDisk\fP, \%\f3gluQuadricCallback\fP, \%\f3gluQuadricDrawStyle\fP, -\%\f3gluQuadricNormals\fP, \%\f3gluQuadricOrientation\fP, -\%\f3gluQuadricTexture\fP, -\%\f3gluSphere\fP +\%\f3gluCylinder(3G)\fP, \%\f3gluDeleteQuadric(3G)\fP, \%\f3gluDisk(3G)\fP, +\%\f3gluPartialDisk(3G)\fP, \%\f3gluQuadricCallback(3G)\fP, \%\f3gluQuadricDrawStyle(3G)\fP, +\%\f3gluQuadricNormals(3G)\fP, \%\f3gluQuadricOrientation(3G)\fP, +\%\f3gluQuadricTexture(3G)\fP, +\%\f3gluSphere(3G)\fP Index: xc/doc/man/GLU/newtess.3gl diff -u xc/doc/man/GLU/newtess.3gl:1.1 xc/doc/man/GLU/newtess.3gl:1.2 --- xc/doc/man/GLU/newtess.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/newtess.3gl Mon Jan 14 22:06:41 2002 @@ -26,5 +26,5 @@ tessellation functions. A return value of 0 means that there is not enough memory to allocate the object. .SH SEE ALSO -\%\f3gluTessBeginPolygon\fP, \%\f3gluDeleteTess\fP, \%\f3gluTessCallback\fP +\%\f3gluTessBeginPolygon(3G)\fP, \%\f3gluDeleteTess(3G)\fP, \%\f3gluTessCallback(3G)\fP Index: xc/doc/man/GLU/nextcontour.3gl diff -u xc/doc/man/GLU/nextcontour.3gl:1.1 xc/doc/man/GLU/nextcontour.3gl:1.2 --- xc/doc/man/GLU/nextcontour.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/nextcontour.3gl Mon Jan 14 22:06:42 2002 @@ -97,6 +97,6 @@ gluEndPolygon(tobj); .Ee .SH SEE ALSO -\%\f3gluBeginPolygon\fP, \%\f3gluNewTess\fP, \%\f3gluTessCallback\fP, \%\f3gluTessVertex\fP, -\%\f3gluTessBeginContour\fP +\%\f3gluBeginPolygon(3G)\fP, \%\f3gluNewTess(3G)\fP, \%\f3gluTessCallback(3G)\fP, \%\f3gluTessVertex(3G)\fP, +\%\f3gluTessBeginContour(3G)\fP Index: xc/doc/man/GLU/nurbscallback.3gl diff -u xc/doc/man/GLU/nurbscallback.3gl:1.1 xc/doc/man/GLU/nurbscallback.3gl:1.2 --- xc/doc/man/GLU/nurbscallback.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/nurbscallback.3gl Mon Jan 14 22:06:42 2002 @@ -221,8 +221,8 @@ favor of \%\f3GLU_NURBS_ERROR\fP. All other accepted values for \f2CallBackFunc\fP are available only if the GLU version is 1.3 or greater. .SH SEE ALSO -\%\f3gluErrorString\fP, -\%\f3gluNewNurbsRenderer\fP, -\%\f3gluNurbsCallbackData\fP, -\%\f3gluNurbsProperty\fP +\%\f3gluErrorString(3G)\fP, +\%\f3gluNewNurbsRenderer(3G)\fP, +\%\f3gluNurbsCallbackData(3G)\fP, +\%\f3gluNurbsProperty(3G)\fP Index: xc/doc/man/GLU/nurbscallbackdata.3gl diff -u xc/doc/man/GLU/nurbscallbackdata.3gl:1.1 xc/doc/man/GLU/nurbscallbackdata.3gl:1.2 --- xc/doc/man/GLU/nurbscallbackdata.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/nurbscallbackdata.3gl Mon Jan 14 22:06:42 2002 @@ -37,5 +37,5 @@ .SH NOTES \%\f3gluNurbsCallbackData\fP is available only if the GLU version is 1.3 or greater. .SH SEE ALSO -\%\f3gluNewNurbsRenderer\fP, -\%\f3gluNurbsCallback\fP +\%\f3gluNewNurbsRenderer(3G)\fP, +\%\f3gluNurbsCallback(3G)\fP Index: xc/doc/man/GLU/nurbscallbackdataext.3gl diff -u xc/doc/man/GLU/nurbscallbackdataext.3gl:1.1 xc/doc/man/GLU/nurbscallbackdataext.3gl:1.2 --- xc/doc/man/GLU/nurbscallbackdataext.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/nurbscallbackdataext.3gl Mon Jan 14 22:06:42 2002 @@ -35,4 +35,4 @@ tessellator. A copy of this pointer will be passed by the tessellator in the NURBS callback functions (set by \%\f3gluNurbsCallback\fP). .SH SEE ALSO -\%\f3gluNurbsCallback\fP +\%\f3gluNurbsCallback(3G)\fP Index: xc/doc/man/GLU/nurbscurve.3gl diff -u xc/doc/man/GLU/nurbscurve.3gl:1.1 xc/doc/man/GLU/nurbscurve.3gl:1.2 --- xc/doc/man/GLU/nurbscurve.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/nurbscurve.3gl Mon Jan 14 22:06:42 2002 @@ -95,5 +95,5 @@ .SH NOTES To define trim curves which stitch well, use \%\f3gluPwlCurve\fP. .SH SEE ALSO -\%\f3gluBeginCurve\fP, \%\f3gluBeginTrim\fP, \%\f3gluNewNurbsRenderer\fP, \%\f3gluPwlCurve\fP +\%\f3gluBeginCurve(3G)\fP, \%\f3gluBeginTrim(3G)\fP, \%\f3gluNewNurbsRenderer(3G)\fP, \%\f3gluPwlCurve(3G)\fP Index: xc/doc/man/GLU/nurbsproperty.3gl diff -u xc/doc/man/GLU/nurbsproperty.3gl:1.1 xc/doc/man/GLU/nurbsproperty.3gl:1.2 --- xc/doc/man/GLU/nurbsproperty.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/nurbsproperty.3gl Mon Jan 14 22:06:42 2002 @@ -195,8 +195,8 @@ values for the \%\f3GLU_SAMPLING_METHOD\fP property are only available if the GLU version is 1.3 or greater. .SH SEE ALSO -\%\f3gluGetNurbsProperty\fP, -\%\f3gluLoadSamplingMatrices\fP, -\%\f3gluNewNurbsRenderer\fP, -\%\f3gluGetString\fP, -\%\f3gluNurbsCallback\fP +\%\f3gluGetNurbsProperty(3G)\fP, +\%\f3gluLoadSamplingMatrices(3G)\fP, +\%\f3gluNewNurbsRenderer(3G)\fP, +\%\f3gluGetString(3G)\fP, +\%\f3gluNurbsCallback(3G)\fP Index: xc/doc/man/GLU/nurbssurface.3gl diff -u xc/doc/man/GLU/nurbssurface.3gl:1.1 xc/doc/man/GLU/nurbssurface.3gl:1.2 --- xc/doc/man/GLU/nurbssurface.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/nurbssurface.3gl Mon Jan 14 22:06:42 2002 @@ -118,7 +118,7 @@ .Ee .sp .SH SEE ALSO -\%\f3gluBeginSurface\fP, \%\f3gluBeginTrim\fP, \%\f3gluNewNurbsRenderer\fP, -\%\f3gluNurbsCurve\fP, -\%\f3gluPwlCurve\fP +\%\f3gluBeginSurface(3G)\fP, \%\f3gluBeginTrim(3G)\fP, \%\f3gluNewNurbsRenderer(3G)\fP, +\%\f3gluNurbsCurve(3G)\fP, +\%\f3gluPwlCurve(3G)\fP Index: xc/doc/man/GLU/ortho2d.3gl diff -u xc/doc/man/GLU/ortho2d.3gl:1.1 xc/doc/man/GLU/ortho2d.3gl:1.2 --- xc/doc/man/GLU/ortho2d.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/ortho2d.3gl Mon Jan 14 22:06:42 2002 @@ -37,5 +37,5 @@ This is equivalent to calling \f3glOrtho\fP with $ near ~=~ -1 $ and $ far ~=~ 1 $. .SH SEE ALSO -\f3glOrtho\fP, \%\f3gluPerspective\fP +\f3glOrtho(3G)\fP, \%\f3gluPerspective(3G)\fP Index: xc/doc/man/GLU/partialdisk.3gl diff -u xc/doc/man/GLU/partialdisk.3gl:1.1 xc/doc/man/GLU/partialdisk.3gl:1.2 --- xc/doc/man/GLU/partialdisk.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/partialdisk.3gl Mon Jan 14 22:06:42 2002 @@ -81,7 +81,7 @@ it is (0.0, 0.5), and at (0, \-\f2r\fP, 0) it is (0.5, 0.0). .SH SEE ALSO -\%\f3gluCylinder\fP, \%\f3gluDisk\fP, \%\f3gluNewQuadric\fP, \%\f3gluQuadricOrientation\fP, -\%\f3gluQuadricTexture\fP, -\%\f3gluSphere\fP +\%\f3gluCylinder(3G)\fP, \%\f3gluDisk(3G)\fP, \%\f3gluNewQuadric(3G)\fP, \%\f3gluQuadricOrientation(3G)\fP, +\%\f3gluQuadricTexture(3G)\fP, +\%\f3gluSphere(3G)\fP Index: xc/doc/man/GLU/perspective.3gl diff -u xc/doc/man/GLU/perspective.3gl:1.1 xc/doc/man/GLU/perspective.3gl:1.2 --- xc/doc/man/GLU/perspective.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/perspective.3gl Mon Jan 14 22:06:42 2002 @@ -91,5 +91,5 @@ Because $r$ approaches infinity as \f2zNear\fP approaches 0, \f2zNear\fP must never be set to 0. .SH SEE ALSO -\f3glFrustum\fP, \f3glLoadIdentity\fP, -\f3glMultMatrix\fP, \%\f3gluOrtho2D\fP +\f3glFrustum(3G)\fP, \f3glLoadIdentity(3G)\fP, +\f3glMultMatrix(3G)\fP, \%\f3gluOrtho2D(3G)\fP Index: xc/doc/man/GLU/pickmatrix.3gl diff -u xc/doc/man/GLU/pickmatrix.3gl:1.1 xc/doc/man/GLU/pickmatrix.3gl:1.2 --- xc/doc/man/GLU/pickmatrix.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/pickmatrix.3gl Mon Jan 14 22:06:42 2002 @@ -86,9 +86,9 @@ /* Draw the scene */ .Ee .SH SEE ALSO -\f3glGet\fP, -\f3glLoadIndentity\fP, -\f3glMultMatrix\fP, -\f3glRenderMode\fP, -\%\f3gluPerspective\fP +\f3glGet(3G)\fP, +\f3glLoadIndentity(3G)\fP, +\f3glMultMatrix(3G)\fP, +\f3glRenderMode(3G)\fP, +\%\f3gluPerspective(3G)\fP Index: xc/doc/man/GLU/project.3gl diff -u xc/doc/man/GLU/project.3gl:1.1 xc/doc/man/GLU/project.3gl:1.2 --- xc/doc/man/GLU/project.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/project.3gl Mon Jan 14 22:06:42 2002 @@ -82,5 +82,5 @@ .EN .sp .SH SEE ALSO -\f3glGet\fP, \%\f3gluUnProject\fP +\f3glGet(3G)\fP, \%\f3gluUnProject(3G)\fP Index: xc/doc/man/GLU/pwlcurve.3gl diff -u xc/doc/man/GLU/pwlcurve.3gl:1.1 xc/doc/man/GLU/pwlcurve.3gl:1.2 --- xc/doc/man/GLU/pwlcurve.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/pwlcurve.3gl Mon Jan 14 22:06:42 2002 @@ -65,5 +65,5 @@ To describe a trim curve that closely follows the contours of a NURBS surface, call \%\f3gluNurbsCurve\fP. .SH SEE ALSO -\%\f3gluBeginCurve\fP, \%\f3gluBeginTrim\fP, \%\f3gluNewNurbsRenderer\fP, \%\f3gluNurbsCurve\fP +\%\f3gluBeginCurve(3G)\fP, \%\f3gluBeginTrim(3G)\fP, \%\f3gluNewNurbsRenderer(3G)\fP, \%\f3gluNurbsCurve(3G)\fP Index: xc/doc/man/GLU/quadriccallback.3gl diff -u xc/doc/man/GLU/quadriccallback.3gl:1.1 xc/doc/man/GLU/quadriccallback.3gl:1.2 --- xc/doc/man/GLU/quadriccallback.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/quadriccallback.3gl Mon Jan 14 22:06:42 2002 @@ -48,4 +48,4 @@ Character strings describing these errors can be retrieved with the \%\f3gluErrorString\fP call. .SH SEE ALSO -\%\f3gluErrorString\fP, \%\f3gluNewQuadric\fP +\%\f3gluErrorString(3G)\fP, \%\f3gluNewQuadric(3G)\fP Index: xc/doc/man/GLU/quadricdrawstyle.3gl diff -u xc/doc/man/GLU/quadricdrawstyle.3gl:1.1 xc/doc/man/GLU/quadricdrawstyle.3gl:1.2 --- xc/doc/man/GLU/quadricdrawstyle.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/quadricdrawstyle.3gl Mon Jan 14 22:06:42 2002 @@ -53,5 +53,5 @@ \%\f3GLU_POINT\fP Quadrics are rendered as a set of points. .SH SEE ALSO -\%\f3gluNewQuadric\fP, \%\f3gluQuadricNormals\fP, \%\f3gluQuadricOrientation\fP, -\%\f3gluQuadricTexture\fP +\%\f3gluNewQuadric(3G)\fP, \%\f3gluQuadricNormals(3G)\fP, \%\f3gluQuadricOrientation(3G)\fP, +\%\f3gluQuadricTexture(3G)\fP Index: xc/doc/man/GLU/quadricnormals.3gl diff -u xc/doc/man/GLU/quadricnormals.3gl:1.1 xc/doc/man/GLU/quadricnormals.3gl:1.2 --- xc/doc/man/GLU/quadricnormals.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/quadricnormals.3gl Mon Jan 14 22:06:42 2002 @@ -47,5 +47,5 @@ One normal is generated for every vertex of a quadric. This is the initial value. .SH SEE ALSO -\%\f3gluNewQuadric\fP, \%\f3gluQuadricDrawStyle\fP, \%\f3gluQuadricOrientation\fP, -\%\f3gluQuadricTexture\fP +\%\f3gluNewQuadric(3G)\fP, \%\f3gluQuadricDrawStyle(3G)\fP, \%\f3gluQuadricOrientation(3G)\fP, +\%\f3gluQuadricTexture(3G)\fP Index: xc/doc/man/GLU/quadricorientation.3gl diff -u xc/doc/man/GLU/quadricorientation.3gl:1.1 xc/doc/man/GLU/quadricorientation.3gl:1.2 --- xc/doc/man/GLU/quadricorientation.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/quadricorientation.3gl Mon Jan 14 22:06:42 2002 @@ -45,5 +45,5 @@ Note that the interpretation of \f2outward\fP and \f2inward\fP depends on the quadric being drawn. .SH SEE ALSO -\%\f3gluNewQuadric\fP, \%\f3gluQuadricDrawStyle\fP, \%\f3gluQuadricNormals\fP, -\%\f3gluQuadricTexture\fP +\%\f3gluNewQuadric(3G)\fP, \%\f3gluQuadricDrawStyle(3G)\fP, \%\f3gluQuadricNormals(3G)\fP, +\%\f3gluQuadricTexture(3G)\fP Index: xc/doc/man/GLU/quadrictexture.3gl diff -u xc/doc/man/GLU/quadrictexture.3gl:1.1 xc/doc/man/GLU/quadrictexture.3gl:1.2 --- xc/doc/man/GLU/quadrictexture.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/quadrictexture.3gl Mon Jan 14 22:06:42 2002 @@ -40,6 +40,6 @@ The manner in which texture coordinates are generated depends upon the specific quadric rendered. .SH SEE ALSO -\%\f3gluNewQuadric\fP, \%\f3gluQuadricDrawStyle\fP, \%\f3gluQuadricNormals\fP, -\%\f3gluQuadricOrientation\fP +\%\f3gluNewQuadric(3G)\fP, \%\f3gluQuadricDrawStyle(3G)\fP, \%\f3gluQuadricNormals(3G)\fP, +\%\f3gluQuadricOrientation(3G)\fP Index: xc/doc/man/GLU/scaleimage.3gl diff -u xc/doc/man/GLU/scaleimage.3gl:1.1 xc/doc/man/GLU/scaleimage.3gl:1.2 --- xc/doc/man/GLU/scaleimage.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/scaleimage.3gl Mon Jan 14 22:06:42 2002 @@ -165,8 +165,8 @@ \%\f3GL_UNSIGNED_INT_10_10_10_2\fP or \%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP. .SH SEE ALSO -\f3glDrawPixels\fP, \f3glReadPixels\fP, \%\f3gluBuild1DMipmaps\fP, \%\f3gluBuild2DMipmaps\fP, -\%\f3gluBuild3DMipmaps\fP, +\f3glDrawPixels(3G)\fP, \f3glReadPixels(3G)\fP, \%\f3gluBuild1DMipmaps(3G)\fP, \%\f3gluBuild2DMipmaps(3G)\fP, +\%\f3gluBuild3DMipmaps(3G)\fP, .BR -\%\f3gluErrorString\fP +\%\f3gluErrorString(3G)\fP Index: xc/doc/man/GLU/sphere.3gl diff -u xc/doc/man/GLU/sphere.3gl:1.1 xc/doc/man/GLU/sphere.3gl:1.2 --- xc/doc/man/GLU/sphere.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/sphere.3gl Mon Jan 14 22:06:42 2002 @@ -61,6 +61,6 @@ to 0.5 at the \-\f2y\fP axis, to 0.75 at the \-\f2x\fP axis, and back to 1.0 at the +\f2y\fP axis. .SH SEE ALSO -\%\f3gluCylinder\fP, \%\f3gluDisk\fP, \%\f3gluNewQuadric\fP, -\%\f3gluPartialDisk\fP, \%\f3gluQuadricOrientation\fP, -\%\f3gluQuadricTexture\fP +\%\f3gluCylinder(3G)\fP, \%\f3gluDisk(3G)\fP, \%\f3gluNewQuadric(3G)\fP, +\%\f3gluPartialDisk(3G)\fP, \%\f3gluQuadricOrientation(3G)\fP, +\%\f3gluQuadricTexture(3G)\fP Index: xc/doc/man/GLU/tessbegincontour.3gl diff -u xc/doc/man/GLU/tessbegincontour.3gl:1.1 xc/doc/man/GLU/tessbegincontour.3gl:1.2 --- xc/doc/man/GLU/tessbegincontour.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/tessbegincontour.3gl Mon Jan 14 22:06:42 2002 @@ -38,7 +38,7 @@ to the first). See the \%\f3gluTessVertex\fP reference page for more details. \%\f3gluTessBeginContour\fP can only be called between \%\f3gluTessBeginPolygon\fP and \%\f3gluTessEndPolygon\fP. .SH SEE ALSO -\%\f3gluNewTess\fP, \%\f3gluTessBeginPolygon\fP, \%\f3gluTessVertex\fP, -\%\f3gluTessCallback\fP, -\%\f3gluTessProperty\fP, \%\f3gluTessNormal\fP, +\%\f3gluNewTess(3G)\fP, \%\f3gluTessBeginPolygon(3G)\fP, \%\f3gluTessVertex(3G)\fP, +\%\f3gluTessCallback(3G)\fP, +\%\f3gluTessProperty(3G)\fP, \%\f3gluTessNormal(3G)\fP, \%\f3gluTessEndPolygon\fP Index: xc/doc/man/GLU/tessbeginpolygon.3gl diff -u xc/doc/man/GLU/tessbeginpolygon.3gl:1.1 xc/doc/man/GLU/tessbeginpolygon.3gl:1.2 --- xc/doc/man/GLU/tessbeginpolygon.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/tessbeginpolygon.3gl Mon Jan 14 22:06:42 2002 @@ -67,7 +67,7 @@ .Ee .sp .SH SEE ALSO -\%\f3gluNewTess\fP, \%\f3gluTessBeginContour\fP, \%\f3gluTessVertex\fP, -\%\f3gluTessCallback\fP, -\%\f3gluTessProperty\fP, \%\f3gluTessNormal\fP, -\%\f3gluTessEndPolygon\fP +\%\f3gluNewTess(3G)\fP, \%\f3gluTessBeginContour(3G)\fP, \%\f3gluTessVertex(3G)\fP, +\%\f3gluTessCallback(3G)\fP, +\%\f3gluTessProperty(3G)\fP, \%\f3gluTessNormal(3G)\fP, +\%\f3gluTessEndPolygon(3G)\fP Index: xc/doc/man/GLU/tesscallback.3gl diff -u xc/doc/man/GLU/tesscallback.3gl:1.1 xc/doc/man/GLU/tesscallback.3gl:1.2 --- xc/doc/man/GLU/tesscallback.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/tesscallback.3gl Mon Jan 14 22:06:42 2002 @@ -287,8 +287,8 @@ Typically, the tessellated polygon should be stored in a display list so that it does not need to be retessellated every time it is rendered. .SH SEE ALSO -\f3glBegin\fP, \f3glEdgeFlag\fP, \f3glVertex\fP, \%\f3gluNewTess\fP, -\%\f3gluErrorString\fP, \%\f3gluTessVertex\fP, -\%\f3gluTessBeginPolygon\fP, -\%\f3gluTessBeginContour\fP, \%\f3gluTessProperty\fP, \%\f3gluTessNormal\fP +\f3glBegin(3G)\fP, \f3glEdgeFlag(3G)\fP, \f3glVertex(3G)\fP, \%\f3gluNewTess(3G)\fP, +\%\f3gluErrorString(3G)\fP, \%\f3gluTessVertex(3G)\fP, +\%\f3gluTessBeginPolygon(3G)\fP, +\%\f3gluTessBeginContour(3G)\fP, \%\f3gluTessProperty(3G)\fP, \%\f3gluTessNormal(3G)\fP Index: xc/doc/man/GLU/tessendpolygon.3gl diff -u xc/doc/man/GLU/tessendpolygon.3gl:1.1 xc/doc/man/GLU/tessendpolygon.3gl:1.2 --- xc/doc/man/GLU/tessendpolygon.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/tessendpolygon.3gl Mon Jan 14 22:06:42 2002 @@ -62,7 +62,7 @@ since the values stored at these addresses will not be read by the tesselator until \%\f3gluTessEndPolygon\fP is called. .SH SEE ALSO -\%\f3gluNewTess\fP, \%\f3gluTessBeginContour\fP, \%\f3gluTessVertex\fP, -\%\f3gluTessCallback\fP, -\%\f3gluTessProperty\fP, \%\f3gluTessNormal\fP, -\%\f3gluTessBeginPolygon\fP +\%\f3gluNewTess(3G)\fP, \%\f3gluTessBeginContour(3G)\fP, \%\f3gluTessVertex(3G)\fP, +\%\f3gluTessCallback(3G)\fP, +\%\f3gluTessProperty(3G)\fP, \%\f3gluTessNormal(3G)\fP, +\%\f3gluTessBeginPolygon(3G)\fP Index: xc/doc/man/GLU/tessnormal.3gl diff -u xc/doc/man/GLU/tessnormal.3gl:1.1 xc/doc/man/GLU/tessnormal.3gl:1.2 --- xc/doc/man/GLU/tessnormal.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/tessnormal.3gl Mon Jan 14 22:06:42 2002 @@ -60,8 +60,8 @@ The supplied normal persists until it is changed by another call to \%\f3gluTessNormal\fP. .SH SEE ALSO -\%\f3gluTessBeginPolygon\fP, -\%\f3gluTessEndPolygon\fP +\%\f3gluTessBeginPolygon(3G)\fP, +\%\f3gluTessEndPolygon(3G)\fP Index: xc/doc/man/GLU/tessproperty.3gl diff -u xc/doc/man/GLU/tessproperty.3gl:1.1 xc/doc/man/GLU/tessproperty.3gl:1.2 --- xc/doc/man/GLU/tessproperty.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/tessproperty.3gl Mon Jan 14 22:06:42 2002 @@ -95,5 +95,5 @@ the edge the vertex lies on. Two edges are merged only when both endpoints are identical. .SH SEE ALSO -\%\f3gluGetTessProperty\fP, -\%\f3gluNewTess\fP +\%\f3gluGetTessProperty(3G)\fP, +\%\f3gluNewTess(3G)\fP Index: xc/doc/man/GLU/tessvertex.3gl diff -u xc/doc/man/GLU/tessvertex.3gl:1.1 xc/doc/man/GLU/tessvertex.3gl:1.2 --- xc/doc/man/GLU/tessvertex.3gl:1.1 Wed May 2 12:18:48 2001 +++ xc/doc/man/GLU/tessvertex.3gl Mon Jan 14 22:06:42 2002 @@ -91,9 +91,9 @@ \%\f3GLU_TESS_NEED_COMBINE_CALLBACK\fP error (when a local variable is used for \f2location\fP). .SH SEE ALSO -\%\f3gluTessBeginPolygon\fP, \%\f3gluNewTess\fP, \%\f3gluTessBeginContour\fP, -\%\f3gluTessCallback\fP, -\%\f3gluTessProperty\fP, \%\f3gluTessNormal\fP, -\%\f3gluTessEndPolygon\fP +\%\f3gluTessBeginPolygon(3G)\fP, \%\f3gluNewTess(3G)\fP, \%\f3gluTessBeginContour(3G)\fP, +\%\f3gluTessCallback(3G)\fP, +\%\f3gluTessProperty(3G)\fP, \%\f3gluTessNormal(3G)\fP, +\%\f3gluTessEndPolygon(3G)\fP Index: xc/doc/man/GLU/unproject.3gl diff -u xc/doc/man/GLU/unproject.3gl:1.1 xc/doc/man/GLU/unproject.3gl:1.2 --- xc/doc/man/GLU/unproject.3gl:1.1 Wed May 2 12:18:49 2001 +++ xc/doc/man/GLU/unproject.3gl Mon Jan 14 22:06:42 2002 @@ -75,4 +75,4 @@ $INV()$ denotes matrix inversion. W is an unused variable, included for consistent matrix notation. .SH SEE ALSO -\f3glGet\fP, \%\f3gluProject\fP +\f3glGet(3G)\fP, \%\f3gluProject(3G)\fP Index: xc/doc/man/GLU/unproject4.3gl diff -u xc/doc/man/GLU/unproject4.3gl:1.1 xc/doc/man/GLU/unproject4.3gl:1.2 --- xc/doc/man/GLU/unproject4.3gl:1.1 Wed May 2 12:18:49 2001 +++ xc/doc/man/GLU/unproject4.3gl Mon Jan 14 22:06:42 2002 @@ -97,7 +97,7 @@ .SH NOTES \%\f3gluUnProject4\fP is available only if the GLU version is 1.3 or greater. .SH SEE ALSO -\f3glGet\fP, -\f3glFeedbackBuffer\fP, -\%\f3gluProject\fP, -\%\f3gluUnProject\fP +\f3glGet(3G)\fP, +\f3glFeedbackBuffer(3G)\fP, +\%\f3gluProject(3G)\fP, +\%\f3gluUnProject(3G)\fP Index: xc/doc/man/X11/Imakefile diff -u xc/doc/man/X11/Imakefile:1.2 xc/doc/man/X11/Imakefile:1.4 --- xc/doc/man/X11/Imakefile:1.2 Tue Nov 28 13:49:09 2000 +++ xc/doc/man/X11/Imakefile Sun Dec 16 22:04:40 2001 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/doc/man/X11/Imakefile,v 1.2 2000/11/28 18:49:09 dawes Exp $ +XCOMM $XFree86: xc/doc/man/X11/Imakefile,v 1.4 2001/12/17 03:04:40 dawes Exp $ MANDIR = $(LIBMANDIR) MANSUFFIX = $(LIBMANSUFFIX) @@ -241,7 +241,7 @@ InstallManPageLong(XSeSelOwn,$(MANDIR),XSetSelectionOwner) InstallManPageAliases(XSetSelectionOwner,$(MANDIR),XGetSelectionOwner XConvertSelection) InstallManPageLong(XSeState,$(MANDIR),XSetState) -InstallManPageAliases(XSetState,$(MANDIR),XSetFunction XSetPlanemask XSetForeground XSetBackground) +InstallManPageAliases(XSetState,$(MANDIR),XSetFunction XSetPlaneMask XSetForeground XSetBackground) InstallManPageLong(XSeTFHint,$(MANDIR),XSetTransientForHint) InstallManPageAliases(XSetTransientForHint,$(MANDIR),XGetTransientForHint) InstallManPageLong(XSeTProp,$(MANDIR),XSetTextProperty) @@ -285,7 +285,7 @@ InstallManPageLong(XUnmapWin,$(MANDIR),XUnmapWindow) InstallManPageAliases(XUnmapWindow,$(MANDIR),XUnmapSubwindows) InstallManPageLong(XVCNList,$(MANDIR),XVaCreateNestedList) -InstallManPageLong(XVEvent,$(MANDIR),XVisibilityNotifyEvent) +InstallManPageLong(XVEvent,$(MANDIR),XVisibilityEvent) InstallManPageLong(XWarpPntr,$(MANDIR),XWarpPointer) InstallManPageLong(Xcms3CoC,$(MANDIR),XcmsCCCOfColormap) InstallManPageAliases(XcmsCCCOfColormap,$(MANDIR),XcmsSetCCCOfColormap) Index: xc/doc/man/X11/XCreCmap.man diff -u xc/doc/man/X11/XCreCmap.man:1.2 xc/doc/man/X11/XCreCmap.man:1.3 --- xc/doc/man/X11/XCreCmap.man:1.2 Sat Jan 27 13:19:57 2001 +++ xc/doc/man/X11/XCreCmap.man Mon Jul 23 16:47:17 2001 @@ -40,7 +40,7 @@ .\" of this documentation for any purpose. .\" It is provided ``as is'' without express or implied warranty. .\" -.\" $XFree86: xc/doc/man/X11/XCreCmap.man,v 1.2 2001/01/27 18:19:57 dawes Exp $ +.\" $XFree86: xc/doc/man/X11/XCreCmap.man,v 1.3 2001/07/23 20:47:17 paulo Exp $ .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface @@ -373,7 +373,7 @@ A value for a Window argument does not name a defined Window. .SH "SEE ALSO" XAllocColor(3X11), -XChangeWindowAtrributes(3X11), +XChangeWindowAttributes(3X11), XCreateWindow(3X11), XQueryColor(3X11), XStoreColors(3X11) Index: xc/doc/man/X11/XInstCmap.man diff -u xc/doc/man/X11/XInstCmap.man:1.2 xc/doc/man/X11/XInstCmap.man:1.3 --- xc/doc/man/X11/XInstCmap.man:1.2 Sat Jan 27 13:20:00 2001 +++ xc/doc/man/X11/XInstCmap.man Mon Jul 23 16:47:17 2001 @@ -40,7 +40,7 @@ .\" of this documentation for any purpose. .\" It is provided ``as is'' without express or implied warranty. .\" -.\" $XFree86: xc/doc/man/X11/XInstCmap.man,v 1.2 2001/01/27 18:20:00 dawes Exp $ +.\" $XFree86: xc/doc/man/X11/XInstCmap.man,v 1.3 2001/07/23 20:47:17 paulo Exp $ .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface @@ -250,7 +250,7 @@ .ZN BadWindow A value for a Window argument does not name a defined Window. .SH "SEE ALSO" -XChangeWindowAtrributes(3X11), +XChangeWindowAttributes(3X11), XCreateColormap(3X11), XCreateWindow(3X11), XFree(3X11) Index: xc/doc/man/X11/XIntConn.man diff -u xc/doc/man/X11/XIntConn.man:1.2 xc/doc/man/X11/XIntConn.man:1.3 --- xc/doc/man/X11/XIntConn.man:1.2 Sat Jan 27 13:20:00 2001 +++ xc/doc/man/X11/XIntConn.man Wed Nov 21 17:54:13 2001 @@ -40,7 +40,7 @@ .\" of this documentation for any purpose. .\" It is provided ``as is'' without express or implied warranty. .\" -.\" $XFree86: xc/doc/man/X11/XIntConn.man,v 1.2 2001/01/27 18:20:00 dawes Exp $ +.\" $XFree86: xc/doc/man/X11/XIntConn.man,v 1.3 2001/11/21 22:54:13 dawes Exp $ .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface @@ -178,12 +178,6 @@ .br int \fIfd\fP\^; .LP -void XProcessInternalConnection\^(\^\fIdisplay\fP, \fIfd\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - int \fIfd\fP\^; -.LP Status XInternalConnectionNumbers\^(\^\fIdisplay\fP, \fIfd_return\fP\^, \fIcount_return\fP\^) .br Display *\fIdisplay\fP\^; @@ -244,17 +238,6 @@ The client_data must match the client_data used when the procedure was initially registered. -.LP -The -.ZN XProcessInternalConnection -function processes input available on an internal connection. -This function should be called for an internal connection only -after an operating system facility (for example, -.ZN select -or -.ZN poll ) -has indicated that input is available; otherwise, -the effect is not defined. .LP The .ZN XProcessInternalConnection Index: xc/doc/man/X11/XSeState.man diff -u xc/doc/man/X11/XSeState.man:1.2 xc/doc/man/X11/XSeState.man:1.3 --- xc/doc/man/X11/XSeState.man:1.2 Sat Jan 27 13:20:04 2001 +++ xc/doc/man/X11/XSeState.man Sun Dec 16 22:04:40 2001 @@ -40,7 +40,7 @@ .\" of this documentation for any purpose. .\" It is provided ``as is'' without express or implied warranty. .\" -.\" $XFree86: xc/doc/man/X11/XSeState.man,v 1.2 2001/01/27 18:20:04 dawes Exp $ +.\" $XFree86: xc/doc/man/X11/XSeState.man,v 1.3 2001/12/17 03:04:40 dawes Exp $ .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface @@ -142,7 +142,7 @@ .ny0 .TH XSetState 3X11 __xorgversion__ "XLIB FUNCTIONS" .SH NAME -XSetState, XSetFunction, XSetPlanemask, XSetForeground, XSetBackground \- GC convenience routines +XSetState, XSetFunction, XSetPlaneMask, XSetForeground, XSetBackground \- GC convenience routines .SH SYNTAX XSetState\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIforeground\fP\^, \fIbackground\fP\^, \fIfunction\fP\^, \fIplane_mask\fP\^) .br Index: xc/doc/man/X11/XVEvent.man diff -u xc/doc/man/X11/XVEvent.man:1.2 xc/doc/man/X11/XVEvent.man:1.3 --- xc/doc/man/X11/XVEvent.man:1.2 Sat Jan 27 13:20:06 2001 +++ xc/doc/man/X11/XVEvent.man Mon Aug 13 15:34:52 2001 @@ -40,7 +40,7 @@ .\" of this documentation for any purpose. .\" It is provided ``as is'' without express or implied warranty. .\" -.\" $XFree86: xc/doc/man/X11/XVEvent.man,v 1.2 2001/01/27 18:20:06 dawes Exp $ +.\" $XFree86: xc/doc/man/X11/XVEvent.man,v 1.3 2001/08/13 19:34:52 dawes Exp $ .\" .ds xT X Toolkit Intrinsics \- C Language Interface .ds xW Athena X Widgets \- C Language X Toolkit Interface @@ -142,7 +142,7 @@ .ny0 .TH XVisibilityEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" .SH NAME -XVisibilityNotifyEvent \- VisibilityNotify event structure +XVisibilityEvent \- VisibilityNotify event structure .SH STRUCTURES The structure for .ZN VisibilityNotify @@ -152,7 +152,7 @@ .TA .5i 3i .ta .5i 3i typedef struct { - int type; /* VisibiltyNotify */ + int type; /* VisibilityNotify */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ Index: xc/doc/man/Xext/Imakefile diff -u xc/doc/man/Xext/Imakefile:1.1.1.4 xc/doc/man/Xext/Imakefile:1.3 --- xc/doc/man/Xext/Imakefile:1.1.1.4 Tue Jan 16 16:57:10 2001 +++ xc/doc/man/Xext/Imakefile Wed Nov 7 21:11:03 2001 @@ -1,5 +1,9 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:41:54 cpqbld Exp $ + + +XCOMM $XFree86: xc/doc/man/Xext/Imakefile,v 1.3 2001/11/08 02:11:03 tsi Exp $ + MANDIR = $(LIBMANDIR) MANSUFFIX = $(LIBMANSUFFIX) @@ -19,7 +23,7 @@ InstallManPageLong(Xmbuf,$(MANDIR),XmbufQueryExtension) InstallManPageAliases(XmbufQueryExtension,$(MANDIR),XmbufGetVersion XmbufCreateBuffers XmbufDestroyBuffers XmbufDisplayBuffers XmbufGetWindowAttributes XmbufChangeWindowAttributes XmbufGetBufferAttributes XmbufChangeBufferAttributes XmbufGetScreenInfo XmbufCreateStereoWindow) InstallManPageLong(Xevi,$(MANDIR),XeviQueryVersion) -InstallManPageAliases(XeviQueryVersion,$(MANDIR),XeviGetVisualInfo) +InstallManPageAliases(XeviQueryVersion,$(MANDIR),XeviGetVisualInfo XeviQueryExtension) #else InstallManPage(XShape,$(MANDIR)) InstallManPage(Xmbuf,$(MANDIR)) Index: xc/doc/man/Xext/dbe/XdbeGetV.man diff -u xc/doc/man/Xext/dbe/XdbeGetV.man:3.5 xc/doc/man/Xext/dbe/XdbeGetV.man:3.6 --- xc/doc/man/Xext/dbe/XdbeGetV.man:3.5 Wed Feb 7 17:35:22 2001 +++ xc/doc/man/Xext/dbe/XdbeGetV.man Tue Jun 26 11:13:06 2001 @@ -25,11 +25,11 @@ .\" dealing in this Software without prior written authorization from the .\" Hewlett-Packard Company. .\" -.\" $XFree86: xc/doc/man/Xext/dbe/XdbeGetV.man,v 3.5 2001/02/07 22:35:22 tsi Exp $ +.\" $XFree86: xc/doc/man/Xext/dbe/XdbeGetV.man,v 3.6 2001/06/26 15:13:06 herrb Exp $ .\" .TH XdbeGetVisualInfo 3X11 __xorgversion__ "X FUNCTIONS" .SH NAME -XdbeGetVisualInfo +XdbeGetVisualInfo - Get dbe Visual Informations .SH SYNOPSIS \&#include Index: xc/doc/man/Xt/Imakefile diff -u xc/doc/man/Xt/Imakefile:3.3 xc/doc/man/Xt/Imakefile:3.6 --- xc/doc/man/Xt/Imakefile:3.3 Mon May 14 22:53:00 2001 +++ xc/doc/man/Xt/Imakefile Thu Nov 1 18:35:25 2001 @@ -1,5 +1,9 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:41:57 cpqbld Exp $ + + +XCOMM $XFree86: xc/doc/man/Xt/Imakefile,v 3.6 2001/11/01 23:35:25 dawes Exp $ + MANDIR = $(LIBMANDIR) MANSUFFIX = $(LIBMANSUFFIX) @@ -20,7 +24,7 @@ InstallManPageLong(XtAppAI,$(MANDIR),XtAppAddInput) InstallManPageAliases(XtAppAddInput,$(MANDIR),XtRemoveInput) InstallManPageLong(XtAppATO,$(MANDIR),XtAppAddTimeOut) -#if !defined(OS2Architecture) && !defined(DarwinArchitecture) +#if CaseSensitiveFileSystem InstallManPageAliases(XtAppAddTimeOut,$(MANDIR),XtRemoveTimeOut XtAppAddTimeout) #else InstallManPageAliases(XtAppAddTimeOut,$(MANDIR),XtRemoveTimeOut) @@ -46,7 +50,7 @@ InstallManPageLong(XtCallCbks,$(MANDIR),XtCallCallbacks) InstallManPageAliases(XtCallCallbacks,$(MANDIR),XtCallCallbackList XtHasCallbacks) InstallManPageLong(XtClass,$(MANDIR),XtClass) -InstallManPageAliases(XtClass,$(MANDIR),XtSuperclass XtIsSubclass XtCheckSubclass XtIsObject XtIsRectObj XtIsWidget XtIsComposite XtIsConstraint XtIsShell XtIsOverrideShell XtIsWMShell XtIsVendorShell XtIsTransientShell XtIsTopLevelShell XtIsApplicationShell) +InstallManPageAliases(XtClass,$(MANDIR),XtSuperclass XtIsSubclass XtCheckSubclass XtIsObject XtIsRectObj XtIsWidget XtIsComposite XtIsConstraint XtIsShell XtIsOverrideShell XtIsWMShell XtIsVendorShell XtIsTransientShell XtIsTopLevelShell XtIsApplicationShell XtIsSessionShell) InstallManPageLong(XtConfWid,$(MANDIR),XtConfigureWidget) InstallManPageAliases(XtConfigureWidget,$(MANDIR),XtMoveWidget XtResizeWidget) InstallManPageLong(XtConvert,$(MANDIR),XtConvert) @@ -107,7 +111,7 @@ InstallManPageLong(XtSetSens,$(MANDIR),XtSetSensitive) InstallManPageAliases(XtSetSensitive,$(MANDIR),XtIsSensitive) InstallManPageLong(XtSetVal,$(MANDIR),XtSetValues) -InstallManPageAliases(XtSetValues,$(MANDIR),XtVaSetValues XtSetSubvalues XtGetValues XtVaGetValues XtGetSubvalues) +InstallManPageAliases(XtSetValues,$(MANDIR),XtVaSetValues XtSetSubvalues XtGetValues XtVaGetValues XtGetSubvalues XtVaGetSubvalues XtVaSetSubvalues) InstallManPageLong(XtStrCW,$(MANDIR),XtStringConversionWarning) InstallManPageLong(XtDStrCW,$(MANDIR),XtDisplayStringConversionWarning) InstallManPageLong(XtTransC,$(MANDIR),XtTranslateCoords) @@ -131,7 +135,11 @@ InstallManPageLong(XtAppASig,$(MANDIR),XtAppAddSignal) InstallManPageAliases(XtAppAddSignal,$(MANDIR),XtNoticeSignal XtRemoveSignal) InstallManPageLong(XtAddIn,$(MANDIR),XtAddInput) +#if CaseSensitiveFileSystem InstallManPageAliases(XtAddInput,$(MANDIR),XtAddTimeOut XtAddTimeout) +#else +InstallManPageAliases(XtAddInput,$(MANDIR),XtAddTimeOut) +#endif InstallManPageLong(XtBlockH,$(MANDIR),XtAppAddBlockHook) InstallManPageAliases(XtAppAddBlockHook,$(MANDIR),XtRemoveBlockHook) InstallManPageLong(XtGetClExt,$(MANDIR),XtGetClassExtension) Index: xc/doc/man/Xv/XvQueryAdaptors.man diff -u xc/doc/man/Xv/XvQueryAdaptors.man:1.5 xc/doc/man/Xv/XvQueryAdaptors.man:1.6 --- xc/doc/man/Xv/XvQueryAdaptors.man:1.5 Sat Jan 27 13:20:36 2001 +++ xc/doc/man/Xv/XvQueryAdaptors.man Fri Aug 17 09:27:50 2001 @@ -1,5 +1,5 @@ .TH XvQueryAdaptors 3X __vendorversion__ -.\" $XFree86: xc/doc/man/Xv/XvQueryAdaptors.man,v 1.5 2001/01/27 18:20:36 dawes Exp $ +.\" $XFree86: xc/doc/man/Xv/XvQueryAdaptors.man,v 1.6 2001/08/17 13:27:50 dawes Exp $ .SH Name XvQueryAdaptors \- return adaptor information for a screen .\" @@ -86,7 +86,7 @@ .\" .SH Returned Values .IP [Success] 8 -Returns True if XvQueryAdaptors(3X) completed successfully. +Returned if XvQueryAdaptors(3X) completed successfully. .IP [XvBadExtension] 8 Returned if the Xv extension is unavailable. .IP [XvBadAlloc] 8 Index: xc/doc/man/Xv/XvQueryExtension.man diff -u xc/doc/man/Xv/XvQueryExtension.man:1.5 xc/doc/man/Xv/XvQueryExtension.man:1.6 --- xc/doc/man/Xv/XvQueryExtension.man:1.5 Sat Jan 27 13:20:36 2001 +++ xc/doc/man/Xv/XvQueryExtension.man Fri Aug 17 09:27:50 2001 @@ -1,17 +1,20 @@ .TH XvQueryExtension 3X __vendorversion__ -.\" $XFree86: xc/doc/man/Xv/XvQueryExtension.man,v 1.5 2001/01/27 18:20:36 dawes Exp $ +.\" $XFree86: xc/doc/man/Xv/XvQueryExtension.man,v 1.6 2001/08/17 13:27:50 dawes Exp $ .SH Name XvQueryExtension \- return version and release of extension .\" .SH Syntax .B #include .sp 1l -\fBXvQueryExtension(\fIp_version, p_release, +\fBXvQueryExtension(\fIdpy, p_version, p_release, .br p_request_base, p_event_base, p_error_base\fR) .sp 1l -\fBunsigned int *p_version, *p_release; -\fBunsigned int *p_request_base, *p_event_base, *p_error_base; +\fBDisplay \fI*dpy\fR; +.br +\fBunsigned int \fI*p_version, *p_release\fR; +.br +\fBunsigned int \fI*p_request_base, *p_event_base, *p_error_base\fR; .\" .SH Arguments .\" @@ -38,7 +41,7 @@ .\" .SH Returned Values .IP [Success] 8 -Returns True if XvQueryExtension(3X) completed successfully. +Returned if XvQueryExtension(3X) completed successfully. .IP [XvBadExtension] 8 Returned if the Xv video extension is not available for the named display. Index: xc/doc/man/Xv/XvSelectPortNotify.man diff -u xc/doc/man/Xv/XvSelectPortNotify.man:1.5 xc/doc/man/Xv/XvSelectPortNotify.man:1.6 --- xc/doc/man/Xv/XvSelectPortNotify.man:1.5 Sat Jan 27 13:20:36 2001 +++ xc/doc/man/Xv/XvSelectPortNotify.man Fri Aug 17 09:27:50 2001 @@ -1,5 +1,5 @@ .TH XvSelectPortNotify 3X __vendorversion__ -.\" $XFree86: xc/doc/man/Xv/XvSelectPortNotify.man,v 1.5 2001/01/27 18:20:36 dawes Exp $ +.\" $XFree86: xc/doc/man/Xv/XvSelectPortNotify.man,v 1.6 2001/08/17 13:27:50 dawes Exp $ .SH Name XvSelectPortNotify \- enable or disable XvPortNotify(3X) events .\" @@ -38,7 +38,7 @@ .\" .SH Returned Values .IP [Success] 8 -Returns True if XvSelectPortNotify(3X) completed successfully. +Returned if XvSelectPortNotify(3X) completed successfully. .IP [XvBadExtension] 8 Returned if the Xv extension is unavailable. .IP [XvBadAlloc] 8 Index: xc/doc/man/Xv/XvSelectVideoNotify.man diff -u xc/doc/man/Xv/XvSelectVideoNotify.man:1.5 xc/doc/man/Xv/XvSelectVideoNotify.man:1.6 --- xc/doc/man/Xv/XvSelectVideoNotify.man:1.5 Sat Jan 27 13:20:36 2001 +++ xc/doc/man/Xv/XvSelectVideoNotify.man Fri Aug 17 09:27:50 2001 @@ -1,5 +1,5 @@ .TH XvSelectVideoNotify 3X __vendorversion__ -.\" $XFree86: xc/doc/man/Xv/XvSelectVideoNotify.man,v 1.5 2001/01/27 18:20:36 dawes Exp $ +.\" $XFree86: xc/doc/man/Xv/XvSelectVideoNotify.man,v 1.6 2001/08/17 13:27:50 dawes Exp $ .SH Name XvSelectVideoNotify \- enable or disable VideoNotify events .\" @@ -34,7 +34,7 @@ .\" .SH Returned Values .IP [Success] 8 -Returns True if XvSelectVideoNotify(3X) completed successfully. +Returned if XvSelectVideoNotify(3X) completed successfully. .IP [XvBadExtension] 8 Returned if the Xv extension is unavailable. .IP [XvBadAlloc] 8 Index: xc/doc/man/Xv/XvSetPortAttribute.man diff -u xc/doc/man/Xv/XvSetPortAttribute.man:1.6 xc/doc/man/Xv/XvSetPortAttribute.man:1.7 --- xc/doc/man/Xv/XvSetPortAttribute.man:1.6 Sat Jan 27 13:20:36 2001 +++ xc/doc/man/Xv/XvSetPortAttribute.man Fri Aug 17 09:27:50 2001 @@ -1,5 +1,5 @@ .TH XvSetPortAttribute 3X __vendorversion__ -.\" $XFree86: xc/doc/man/Xv/XvSetPortAttribute.man,v 1.6 2001/01/27 18:20:36 dawes Exp $ +.\" $XFree86: xc/doc/man/Xv/XvSetPortAttribute.man,v 1.7 2001/08/17 13:27:50 dawes Exp $ .SH Name XvSetPortAttribute \- sets an attribute of a video port .\" @@ -80,7 +80,7 @@ that have requested for port changes using XvSelectPortNotify(3X). .SH Returned Values .IP [Success] 8 -Returns True if XvSetPortAttribute(3X) completed successfully. +Returned if XvSetPortAttribute(3X) completed successfully. .IP [XvBadExtension] 8 Returned if the Xv extension is unavailable. .IP [XvBadAlloc] 8 Index: xc/doc/man/Xv/XvStopVideo.man diff -u xc/doc/man/Xv/XvStopVideo.man:1.5 xc/doc/man/Xv/XvStopVideo.man:1.6 --- xc/doc/man/Xv/XvStopVideo.man:1.5 Sat Jan 27 13:20:36 2001 +++ xc/doc/man/Xv/XvStopVideo.man Fri Aug 17 09:27:50 2001 @@ -1,5 +1,5 @@ .TH XvStopVideo 3X __vendorversion__ -.\" $XFree86: xc/doc/man/Xv/XvStopVideo.man,v 1.5 2001/01/27 18:20:36 dawes Exp $ +.\" $XFree86: xc/doc/man/Xv/XvStopVideo.man,v 1.6 2001/08/17 13:27:50 dawes Exp $ .SH Name XvStopVideo \- stop active video .\" @@ -39,7 +39,7 @@ .\" .SH Returned Values .IP [Success] 8 -Returns True if XvStopVideo(3X) completed successfully. +Returned if XvStopVideo(3X) completed successfully. .IP [XvBadExtension] 8 Returned if the Xv extension is unavailable. .IP [XvBadAlloc] 8 Index: xc/doc/man/Xv/XvUngrabPort.man diff -u xc/doc/man/Xv/XvUngrabPort.man:1.5 xc/doc/man/Xv/XvUngrabPort.man:1.6 --- xc/doc/man/Xv/XvUngrabPort.man:1.5 Sat Jan 27 13:20:36 2001 +++ xc/doc/man/Xv/XvUngrabPort.man Fri Aug 17 09:27:50 2001 @@ -1,5 +1,5 @@ .TH XvUngrabPort 3X __vendorversion__ -.\" $XFree86: xc/doc/man/Xv/XvUngrabPort.man,v 1.5 2001/01/27 18:20:36 dawes Exp $ +.\" $XFree86: xc/doc/man/Xv/XvUngrabPort.man,v 1.6 2001/08/17 13:27:50 dawes Exp $ .SH Name XvUngrabPort \- release port grabbed for video operation .\" @@ -36,7 +36,7 @@ .\" .SH Returned Values .IP [Success] 8 -Returns True if XvUngrabPort(3X) completed successfully. +Returned if XvUngrabPort(3X) completed successfully. .IP [XvBadExtension] 8 Returned if the Xv extension is unavailable. .IP [XvBadAlloc] 8 Index: xc/doc/man/general/X.man diff -u xc/doc/man/general/X.man:1.6 xc/doc/man/general/X.man:1.7 --- xc/doc/man/general/X.man:1.6 Wed Mar 28 09:35:13 2001 +++ xc/doc/man/general/X.man Mon Oct 1 09:43:56 2001 @@ -25,7 +25,7 @@ .\" dealing in this Software without prior written authorization from the .\" X Consortium. .\" -.\" $XFree86: xc/doc/man/general/X.man,v 1.6 2001/03/28 14:35:13 dawes Exp $ +.\" $XFree86: xc/doc/man/general/X.man,v 1.7 2001/10/01 13:43:56 eich Exp $ .\" .TH X __miscmansuffix__ __vendorversion__ .SH NAME @@ -1272,7 +1272,7 @@ .BR xinit (1), .BR xkbbell (1), .BR xkbcomp (1), -.BR xbkevd (1), +.BR xkbevd (1), .BR xkbprint (1), .BR xkbvleds (1), .BR xkbwatch (1), Index: xc/doc/man/general/XProjectTeam.man diff -u xc/doc/man/general/XProjectTeam.man:1.2 xc/doc/man/general/XProjectTeam.man:1.3 --- xc/doc/man/general/XProjectTeam.man:1.2 Sat Jan 27 13:20:38 2001 +++ xc/doc/man/general/XProjectTeam.man Wed Dec 19 16:37:27 2001 @@ -1,4 +1,4 @@ -.\" $Xorg: XProjectTeam.cpp,v 1.5 2000/08/21 17:05:21 coskrey Exp $ +.\" $Xorg: XProjectTeam.cpp,v 1.6 2001/01/29 17:44:41 coskrey Exp $ .\" Copyright (c) 1993, 1994, 1996 X Consortium .\" Copyright (c) 1996, 2000 The Open Group .\" @@ -25,13 +25,13 @@ .\" dealing in this Software without prior written authorization from the .\" X Consortium. .\" -.\" $XFree86: xc/doc/man/general/XProjectTeam.man,v 1.2 2001/01/27 18:20:38 dawes Exp $ +.\" $XFree86: xc/doc/man/general/XProjectTeam.man,v 1.3 2001/12/19 21:37:27 dawes Exp $ .\" .TH X.Org __miscmansuffix__ __xorgversion__ .SH NAME X.Org, XProjectTeam \- X.Org Group information .SH SYNOPSIS -Release 6.5 of X Version 11 was brought to you by The X.Org Group. +Release 6.5 and 6.6 of X Version 11 was brought to you by The X.Org Group. Release 6.4 of X Version 11 was brought to you by The X Project Team. .SH DESCRIPTION The Open Group's X Project Team was created as the successor @@ -73,12 +73,14 @@ .nf Attachmate -Barco Group +Barco Compaq Hewlett-Packard Hummingbird IBM +ICS Metro Link +MITRE Shiman Associates Silicon Graphics Incorporated Starnet Communications Index: xc/doc/misc/INSTALL.ms diff -u xc/doc/misc/INSTALL.ms:1.5 xc/doc/misc/INSTALL.ms:1.8 --- xc/doc/misc/INSTALL.ms:1.5 Mon Jan 22 17:26:59 2001 +++ xc/doc/misc/INSTALL.ms Fri Dec 21 15:59:12 2001 @@ -1,10 +1,10 @@ -.\" $Xorg: INSTALL.ms,v 1.3 2000/08/17 19:42:05 cpqbld Exp $ +.\" $Xorg: INSTALL.ms,v 1.5 2001/04/04 17:37:27 coskrey Exp $ .\" -.\" X11R6.5.1 Installation instructions. Use troff -ms macros +.\" X11R6.6 Installation instructions. Use troff -ms macros .\" .\" -.\" $XFree86: xc/doc/misc/INSTALL.ms,v 1.5 2001/01/22 22:26:59 dawes Exp $ -.ds Ts August 20, 2000\" +.\" $XFree86: xc/doc/misc/INSTALL.ms,v 1.8 2001/12/21 20:59:12 dawes Exp $ +.ds Ts April 4, 2001\" .\" .ie t \{ .nr LL 6.5i @@ -33,13 +33,12 @@ .ds CH \" empty center heading .sp 8 .TL -\s+2\fBBuilding and Installing X11R6.5.1\fP\s-2 +\s+2\fBBuilding and Installing X11R6.6\fP\s-2 .AU .sp 6 -\fIKaleb S. KEITHLEY\fP .\".AI .\" -.\"The Open Group X Project Team +.\"The X.Org Group .sp 6 \*(Ts .LP @@ -50,15 +49,14 @@ .\} .sp 5 .nf -Copyright \(co 1999,2000 Compaq Computer Corporation -Copyright \(co 1999,2000 Hewlett-Packard Company -Copyright \(co 1999,2000 IBM Corporation -Copyright \(co 1999,2000 Hummingbird Communications Ltd. -Copyright \(co 1999,2000 Silicon Graphics, Inc. -Copyright \(co 1999,2000 Sun Microsystems, Inc. -Copyright \(co 1999,2000 The Open Group +Copyright \(co 1999,2000,2001 Compaq Computer Corporation +Copyright \(co 1999,2000,2001 Hewlett-Packard Company +Copyright \(co 1999,2000,2001 IBM Corporation +Copyright \(co 1999,2000,2001 Hummingbird Communications Ltd. +Copyright \(co 1999,2000,2001 Silicon Graphics, Inc. +Copyright \(co 1999,2000,2001 Sun Microsystems, Inc. +Copyright \(co 1998,1999,2000,2001 The Open Group .fi -Copyright \(co 1998 The Open Group .nr PS 9 .nr VS 11 .LP @@ -90,8 +88,8 @@ X Window System is a trademark of The Open Group. .\" .if t \{ -.OH 'X Version 11, Release 6.5.1''X Window System Installation' -.EH 'X Window System Installation Version 11, Release 6.5.1' +.OH 'X Version 11, Release 6.6''X Window System Installation' +.EH 'X Window System Installation Version 11, Release 6.6' .bp 1 .ds CF \\n(PN .\} @@ -101,13 +99,13 @@ .nH 1 "Introduction" .\" This document is the installation notes that were provided with X.Org's -X11R6.5.1 release. If you're building XFree86, it can be used as -a rough guide. Be aware that most of the details are not targetted +X11R6.6 release. If you're building XFree86, it can be used as +a rough guide. Be aware that most of the details are not targeted specifically at the current XFree86 source tree. XFree86-specific documentation can be found in the \fBxc/programs/Xserver/hw/xfree86/doc\fP directory and on-line at http://www.xfree86.org/current/. Some of the documentation there is out of date, so also be aware of that. There is -currently no up to date document specifically targetted at building +currently no up to date document specifically targeted at building XFree86 from source. .nH 1 "Easy Build Instructions" @@ -116,13 +114,19 @@ instructions later in this document. .LP Edit \fBxc/config/cf/site.def\fP for local preferences. -If you want to install somewhere other than \fB/usr/X11R6.5.1\fP, +If you want to install and use the installation from somewhere other than +\fB/usr\fP, change \fBProjectRoot\fP. (Do \fInot\fP use \fBDESTDIR\fP.) +.LP +If you are cross compiling you will want to use \fBDESTDIR\fP to specify where +the installation should take place. Failure to do so will corrupt your +native installation of X. +.LP If you want to build with \fIgcc\fP uncomment the \fBHasGcc2\fP line. If you have \fIgcc\fP, but not \fIcc\fP, please read the full build instructions. .LP -If some time has elapsed since the initial release of R6.5.1, check +If some time has elapsed since the initial release of R6.6, check to see if any public patches have been released. The source tar files may have been updated \(em check the patch-level line in the bug-report template. If the source in the tar files has not been @@ -169,30 +173,30 @@ these installation instructions.\fP -.nH 1 "Building and Installing R6.5.1" +.nH 1 "Building and Installing R6.6" -Historically the MIT X Consortium and The X Consortium, Inc., sample -implementation releases have always been source-code-only releases, -and this release is no different. +Historically the MIT X Consortium, The X Consortium, Inc., and X.Org +sample implementation releases have always been source-code-only +releases, and this release is no different. .nH 2 "Introduction" Every release of X has been progressively easier to configure, build, and install than the preceding releases \(em and we believe this -release is the easiest release to build yet. That not withstanding, +release is the easiest release to build yet. That notwithstanding, if things do go amiss during the build we assume that you have the basic skills necessary, and the willingness, to debug any errors that may occur in the build process. When you install, if you're going to use \fIxdm\fP or replace your system's old X, we assume you have a basic understanding of your system's initialization -process. For Remote Execution (RX, embedding) we assume you that +process. For Remote Execution (RX, embedding) we assume that you understand the fundamentals of HTTP, CGI, and HTML. If these assumptions are not correct then you should consider finding someone who has proficiency in these areas to do the build and install for you. .LP After the release has been out for a while more up to date information about any newly-discovered problems may be found in the \fIFrequently -Asked Questions\fP posting appearing monthly on the Usenet newsgroup +Asked Questions\fP posting, which appears monthly on the Usenet newsgroup comp.windows.x and xpert mailing list. The FAQ is also available via anonymous FTP from ftp://ftp.x.org/ in the file ftp://ftp.x.org/contrib/faqs/FAQ.Z, or possibly on one of X @@ -201,7 +205,7 @@ .nH 2 "Preparing Your Build System" The source is distributed in four gzip compressed UNIX \fBT\fPape -\fBAR\fPchive (tar) files. You will need about 200 Mb of disk space +\fBAR\fPchive (tar) files. You will need about 230 Mb of disk space in order to unpack and build the release. Installing requires an additional 30-50 Mb assuming you have shared libraries (80-100 Mb without). @@ -211,7 +215,7 @@ chose from, we do not make recommendations about which one you should use. .LP -Release 6.5.1 sources are distributed among the tar files as follows: +Release 6.6 sources are distributed among the tar files as follows: .LP .KS .DS @@ -228,7 +232,7 @@ will also need xorg-2.tar to build. If you already have the fonts from prior releases you can use those instead of downloading them again. We presume that you know how to copy or move them from your old source -tree to the R6.5.1 source tree. +tree to the R6.6 source tree. .nH 2 "Unpacking the Distribution" @@ -249,7 +253,7 @@ .nH 2 "Applying Patches" -If some time has elapsed since the initial release of R6.5.1, check +If some time has elapsed since the initial release of R6.6, check to see if any public patches have been released. The source tar files may have been updated \(em check the patch-level line in the bug-report template. If the source in the tar files has not been @@ -350,7 +354,7 @@ Some systems require the X server to run as root to access the devices it needs. If you are on such a system and will not be using \fIxdm\fP, you may set this variable to \fBYES\fP to install the X server setuid -to root; however the X Project Team strongly recommends that you not +to root; however the X.Org Group strongly recommends that you not install your server suid-root, but that you use xdm instead. Talk to your system manager before setting this variable to \fBYES\fP. .Ip InstallXdmConfig @@ -384,7 +388,7 @@ \fBAmoeba.cf\fP is known to require additional patches. .LP The file \fBxc/lib/Xdmcp/Wraphelp.c\fP, for XDM-AUTHORIZATION-1, is not -included in this release. See ftp://ftp.x.org/pub/R6.5.1/xdm-auth/README. +included in this release. See ftp://ftp.x.org/pub/R6.6/xdm-auth/README. .nH 2 "System Build Notes" @@ -425,17 +429,17 @@ .\" Use of the GNU BinUtils assembler, \fIas\fP, and linker, \fIld\fP, is not supported \(em period! If you have them installed on your system -you must rename or remove them for the duration of the R6.5.1 build. +you must rename or remove them for the duration of the R6.6 build. (You can restore them afterwards.) .LP -The system-supplied \fImake\fP works just fine for building R6.5.1 and +The system-supplied \fImake\fP works just fine for building R6.6 and that's what we suggest you use. If you've replaced your system's \fImake\fP with GNU \fImake\fP then we recommend that you restore -the system \fImake\fP for the duration of your R6.5.1 build. After -R6.5.1 is done building you can revert to GNU make. GNU make on most +the system \fImake\fP for the duration of your R6.6 build. After +R6.6 is done building you can revert to GNU make. GNU make on most systems (except Linux, where it is the default make) is not a supported build configuration. GNU make may work for you, and if it does, great; -but if it doesn't we do not consider it a bug in R6.5.1. If, after this +but if it doesn't we do not consider it a bug in R6.6. If, after this admonition, you still use GNU make and your build fails, reread the above, and retry the build with the system's \fImake\fP before you file a bug-report. @@ -641,9 +645,9 @@ .nH 2 "Shared Libraries" -The version number of some of the the shared libraries has been changed. +The version number of some of the shared libraries has been changed. On SunOS 4, which supports minor version numbers for shared libraries, -programs linked with the R6.5.1 libraries will use the new libraries with +programs linked with the R6.6 libraries will use the new libraries with no special action required. .LP On most other modern operating systems the version portion of the @@ -773,7 +777,7 @@ /etc/inetd.conf and /etc/services before adding xfs to the run-level files. -.nH 3 "On SystemV-based systems" +.nH 3 "On Unix System V-based systems" On systems with a \fB/etc/inittab\fP file, you can edit this file to add the lines @@ -864,12 +868,11 @@ .nH 1 "Public Patches" -The Open Group X Project Team may from time to time issue public -patches for this release to fix any serious problems that are -discovered. Such fixes are a subset of fixes available to X Project -Team members. Public patches are available via anonymous FTP from -ftp://ftp.x.org/pub/R6.5.1/fixes, or from your local X mirror site. -Check the site closest to you first. +The X.Org Group may from time to time issue public patches for this +release to fix any serious problems that are discovered. Such fixes +are a subset of fixes available to X.Org members. Public patches are +available via anonymous FTP from ftp://ftp.x.org/pub/R6.6/fixes, +or from your local X mirror site. Check the site closest to you first. .LP You can determine which public patches have already been applied to your source tree by examining the \*QVERSION\*U line of Index: xc/doc/misc/Imakefile diff -u xc/doc/misc/Imakefile:1.3.2.1 xc/doc/misc/Imakefile:1.5 --- xc/doc/misc/Imakefile:1.3.2.1 Thu May 24 14:54:10 2001 +++ xc/doc/misc/Imakefile Mon Jun 4 17:12:16 2001 @@ -4,27 +4,29 @@ XCOMM The files generated here are shipped in the top-level XCOMM xc/ directory. -XCOMM $XFree86: xc/doc/misc/Imakefile,v 1.3.2.1 2001/05/24 18:54:10 dawes Exp $ +XCOMM $XFree86: xc/doc/misc/Imakefile,v 1.5 2001/06/04 21:12:16 dawes Exp $ -MakeSimpleDoc(RELNOTES,RELNOTES.ms) +MakeSimpleDoc(RELNOTES-X.org,RELNOTES.ms) -MakeSimpleDoc(INSTALL,INSTALL.ms) +MakeSimpleDoc(INSTALL-X.org,INSTALL.ms) /* the rules should be updated to generate .TXT extensions normally */ -RELNOTES.TXT: RELNOTES.txt - $(MV) RELNOTES.txt RELNOTES.TXT +RELNOTES-X.org.TXT: RELNOTES-X.org.txt + RemoveFile(RELNOTES-X.org.TXT) + $(CP) RELNOTES-X.org.txt RELNOTES-X.org.TXT + +INSTALL-X.org.TXT: INSTALL-X.org.txt + RemoveFile(INSTALL-X.org.TXT) + $(CP) INSTALL-X.org.txt INSTALL-X.org.TXT -INSTALL.TXT: INSTALL.txt - $(MV) INSTALL.txt INSTALL.TXT - clean:: - $(RM) RELNOTES.TXT INSTALL.TXT + RemoveFiles(RELNOTES-X.org.TXT INSTALL-X.org.TXT) - TARGETS = RELNOTES.PS RELNOTES.TXT INSTALL.PS INSTALL.TXT +TXTTARGETS = RELNOTES-X.org.TXT INSTALL-X.org.TXT -AllTarget($(TARGETS)) +AllTarget($(TXTTARGETS)) #ifndef UpdateDocsInSource #define UpdateDocsInSource NO @@ -36,9 +38,9 @@ SOURCETARGET = update #endif -$(SOURCETARGET):: $(TARGETS) - $(CP) RELNOTES.TXT $(TOP)/RELNOTES-X.org - $(CP) INSTALL.TXT $(TOP)/INSTALL-X.org +$(SOURCETARGET):: $(TXTTARGETS) + $(CP) RELNOTES-X.org.TXT $(TOP)/RELNOTES-X.org + $(CP) INSTALL-X.org.TXT $(TOP)/INSTALL-X.org -InstallRoffDoc(INSTALL) -InstallRoffDoc(RELNOTES) +InstallRoffDoc(INSTALL-X.org) +InstallRoffDoc(RELNOTES-X.org) Index: xc/doc/misc/RELNOTES.ms diff -u xc/doc/misc/RELNOTES.ms:1.6 xc/doc/misc/RELNOTES.ms:1.8 --- xc/doc/misc/RELNOTES.ms:1.6 Mon Jan 22 17:27:00 2001 +++ xc/doc/misc/RELNOTES.ms Fri Dec 21 15:59:12 2001 @@ -1,10 +1,10 @@ -.\" $Xorg: RELNOTES.ms,v 1.3 2000/08/17 19:42:05 cpqbld Exp $ +.\" $Xorg: RELNOTES.ms,v 1.7 2001/04/04 17:37:28 coskrey Exp $ .\" .\" X11R6.4 Release Notes. Use troff -ms macros .\" .\" -.\" $XFree86: xc/doc/misc/RELNOTES.ms,v 1.6 2001/01/22 22:27:00 dawes Exp $ -.ds Ts August 20, 2000\" +.\" $XFree86: xc/doc/misc/RELNOTES.ms,v 1.8 2001/12/21 20:59:12 dawes Exp $ +.ds Ts April 4, 2001\" .\" .ie t \{ .nr LL 6.5i @@ -35,7 +35,7 @@ .TL \s+2\fBX Window System, Version 11 .sp 1 -Release 6.5.1\fP\s-2 +Release 6.6\fP\s-2 \s+1\fBRelease Notes\fP\s-1 .AU @@ -52,13 +52,13 @@ .\} .sp 5 .nf -Copyright \(co 1999,2000 Compaq Computer Corporation -Copyright \(co 1999,2000 Hewlett-Packard Company -Copyright \(co 1999,2000 IBM Corporation -Copyright \(co 1999,2000 Hummingbird Communications Ltd. -Copyright \(co 1999,2000 Silicon Graphics, Inc. -Copyright \(co 1999,2000 Sun Microsystems, Inc. -Copyright \(co 1999,2000 The Open Group +Copyright \(co 1999,2000,2001 Compaq Computer Corporation +Copyright \(co 1999,2000,2001 Hewlett-Packard Company +Copyright \(co 1999,2000,2001 IBM Corporation +Copyright \(co 1999,2000,2001 Hummingbird Communications Ltd. +Copyright \(co 1999,2000,2001 Silicon Graphics, Inc. +Copyright \(co 1999,2000,2001 Sun Microsystems, Inc. +Copyright \(co 1999,2000,2001 The Open Group .fi .LP All rights reserved. @@ -93,8 +93,8 @@ \fIX Window System\fP is a trademark of The Open Group. .\" .if t \{ -.OH 'X Version 11, Release 6.5.1''X Window System Release Notes' -.EH 'X Window System Release Notes''X Version 11, Release 6.5.1' +.OH 'X Version 11, Release 6.6''X Window System Release Notes' +.EH 'X Window System Release Notes''X Version 11, Release 6.6' .bp 1 .ds CF \\n(PN .\} @@ -104,7 +104,7 @@ .nH 1 "Introductory Note" This document is the release notes that were provided with X.Org's -X11R6.5.1 release. The XFree86-specific information in this document is +X11R6.6 release. The XFree86-specific information in this document is out of date. The XFree86-specific documentation can be found in the \fBxc/programs/Xserver/hw/xfree86/doc\fP directory, and on-line at http://www.xfree86.org/current/. @@ -121,13 +121,13 @@ programs on high powered workstations and display the user interface (the windows) on inexpensive desktop machines. -.nH 1 "What is Release 6.5.1" +.nH 1 "What is Release 6.6" -Release 6.5.1 (R6.5.1) is X.Org's update to -the Open Group's X Project Release 6.4 patch 3 and all prior releases. -It is compatible with with all releases going back to R1 at both the -source and protocol levels. Note that Release 6.5 was an internal -X.Org release, and Release 6.5.1 supersedes it. +Release 6.6 (R6.6) is The X.Org Group's update to its Release 6.5.1 +patch 1 and all prior releases. +It is compatible with with all releases going back to R1 at both the +source and protocol levels. + .LP The X Consortium was an independent, not-for-profit membership corporation formed in 1993 as the successor to the MIT X Consortium. @@ -143,19 +143,20 @@ has been chartered to provide quarterly update releases to the X source. .LP -Membership information for X.Org may be found at http://www.x.org/members.htm. +Membership information for X.Org may be found at: + http://www.x.org/members.htm. .LP This X.Org release addresses a portion of the backlog of bug reports since Release 6.4 patch 3, along with additional fixes from the Xfree86 community. .LP -Instructions for building and installing R6.5.1 can be found in the -file INSTALL.TXT (INSTALL-X.org), available -separately and also contained in the release. +Instructions for building and installing R6.6 can be found in the +file INSTALL.TXT (INSTALL-X.org), available separately and also contained +in the release. .nH 1 "Overview of the X.Org Release" -Like all the releases that preceded it, R6.5.1 is a source code +Like all the releases that preceded it, R6.6 is a source code release. In order to use the release it is necessary to first unpack the distribution, compile it, and then install it. The source contains the following items: @@ -163,7 +164,7 @@ .KS .ID Documentation -Sample implemenations +Sample implementations Fonts and bitmaps Utility libraries Programs @@ -235,7 +236,7 @@ .nH 1 "Extensions Supported" -Release 6.5.1 includes source for the following extensions: +Release 6.6 includes source for the following extensions: BIG-REQUESTS, DOUBLE-BUFFER, DPMS, @@ -284,7 +285,7 @@ \fBxc/config/cf/X11.tmpl\fP for details of how these configuration variables are used. .IP -By default the imake variable ProjectRoot is \fB/usr/X11R6.5\fP +By default the imake variable ProjectRoot is \fB/usr/X11R6.6\fP and XFILESEARCHPATH has these components: .ID \fI$ProjectRoot\fP/lib/X11/%L/%T/%N%C%S @@ -353,12 +354,11 @@ The Input Method Server Development Kit (IMdkit) is at ftp://ftp.x.org/pub/unsupported/lib/IMdkit/. -.nH 1 "What is Unchanged in Release 6.5.1" +.nH 1 "What is Unchanged in Release 6.6" As this is an update release, there is a great deal of stability in the standards, libraries, and clients. No existing standards have changed -in a material way. All previous interfaces in these and all other -libraries are unchanged. +in a material way. All previous interfaces are unchanged. .nH 1 "New OS Support" @@ -367,29 +367,29 @@ .LP .KS .DS 0 -.ta 2.0i 3.0i 4.0i 5.0i 6.0i -System R6 R6.1 R6.[23] R6.4 R6.5.1 -.sp 1 -AIX 3.2.5 4.1.4 4.2 4.2 \(en -A/UX 3.0.1 \(en \(en \(en \(en -BSD/386 1.0 \(en \(en \(en \(en -Compaq Tru64 UNIX 1.0/1.3 3.2C 4.0A 4.0A 5.0 -FreeBSD \(en 2.1.0 2.1.6 2.2.2 \(en -Fujitsu UXP \(en \(en \(en V20L10 \(en -HP-UX 9.1 10.01 10.01 10.20 10.20 -IRIX 5.2 5.3 6.2 6.2 \(en -Linux (kernel) - Slackware 2.3 \(en 1.2.11 \(en \(en \(en - Slackware 3.1 \(en \(en 2.0 \(en \(en - S.u.S.E. 5.0 \(en \(en \(en 2.0.30 \(en -Mach 2.5 \(en \(en \(en \(en -NEWS-OS 6.0 \(en \(en \(en \(en -Solaris 2.3 2.4 2.5 2.5 7.0 -SunOS 4.1.3 4.1.3 4.1.4 4.1.4 \(en -Ultrix-32 4.3 4.4 \(en \(en \(en -UNICOS 8.0 \(en \(en \(en \(en -Unixware SVR4.2 1.0 2.02 2.02 \(en \(en -Windows NT 3.1 3.5 4.0 3.51 \(en +.ta 1.5i 2.25i 3i 3.75i 4.5i 5.25i +System R6 R6.1 R6.[23] R6.4 R6.5 R6.6 +.sp +AIX 3.2.5 4.1.4 4.2 4.2 - - +A/UX 3.0.1 - - - - - +BSD/386 1.0 - - - - - +Compaq Tru64 UNIX 1.0/1.3 3.2C 4.0A4.0A 5.0 +FreeBSD - 2.1.0 2.1.6 2.2.2 - - +Fujitsu UXP - - - V20L10 - +HP-UX 9.1 10.01 10.01 10.20 10.20 10.20 +IRIX 5.2 5.3 6.2 6.2 - - +Linux (kernel) +Slackware 2.3 - 1.2.11 - - - +Slackware 3.1 - - 2.0 - - +S.u.S.E. 5.0 - - - 2.0.30 - +Mach 2.5 - - - - - +NEWS-OS 6.0 - - - - - +Solaris 2.3 2.4 2.5 2.5 7.0 7.0 +SunOS 4.1.3 4.1.3 4.1.4 4.1.4 - - +Ultrix-32 4.3 4.4 - - - - +UNICOS 8.0 - - - - - +Unixware SVR4.2 1.0 2.02 2.02 - - +Windows NT 3.1 3.5 4.0 3.51 - .DE .KE @@ -419,14 +419,14 @@ .nH 1 "ANSIfication" R6.1 was officially the last release that supported traditional K&R C. -Like R6.3 and R6.4, R6.5 assumes a Standard C compiler and environment. -We have not intentionally removed any K&R C support from old code, and -most of the release will continue to build on platforms without an ANSI -C compiler. +Like all releases since R6.3, R6.6 assumes a Standard C compiler and +environment. We have not intentionally removed any K&R C support from +old code, and most of the release will continue to build on platforms +without an ANSI C compiler. .nH 1 "VSW5" -We have tested this release with VSW5 version 5.0.0. This release +We have tested this release with VSW5 version 5.1.1A. This release passes all tests in VSW5 with the following exceptions: .IP \(bu tests for which a permanent waiver has been granted. @@ -438,24 +438,20 @@ VSW licensees may obtain a list of waivers granted from http://www.rdg.opengroup.org/interpretations/database/. -.nH 1 "XtAppPeekEvent() behavior" +.nH 1 "XtAppPeekEvent() behavior - Environment variable no longer needed" XtAppPeekEvent() has been modified in R6.5.1 to behave as it is -documented in the Xt spec. The routine will now process timer -events without returning to the caller. However, there are -applications which rely on the previous behavior of XtAppPeekEvent(). -One such application is Netscape, as of version 4.7. -.LP -To allow these applications to work with R6.5.1, the environment -variable XTAPPPEEKEVENT_SKIPTIMER can be set to any value prior to -starting the application. If the environment variable is set, -XtAppPeekEvent() will revert to its previous behavior. For example, -the following shell commands -.ID -export XTAPPPEEKEVENT_SKIPTIMER=1 -/opt/netscape/netscape -.DE -can be used to make Netscape function properly with R6.5.1. +documented in the Xt spec. Certain applications, including Netscape, +did not work properly with these modifications, so the routine was +changed so that users could set the XTAPPPEEKEVENT_SKIPTIMER environment +variable in order to make XtAppPeekEvent() behave as it did prior to +R6.5.1. +.LP +In R6.6, the routine has been changed so that there is no need to set +the environment variable. Timers are handled as specified by the spec, +but Netscape and other applications now work properly without the +environment variable. In R6.6, the XTAPPPEEKEVENT_SKIPTIMER variable +is ignored, and users may unset it if they were using it in R6.5.1. .nH 1 "Year 2000 (Y2K) Compliance" @@ -506,16 +502,80 @@ individual software to see where (if anywhere) to report the bug. .nH 1 "Acknowledgements" +.LP +The following individuals served as X.Org representatives for their +respective companies. These companies are Executive Members of X.Org. -Jeff Walls of Hewlett Packard. .LP -Garry Paxinos of Metro Link. +Paul Anderson of Hewlett-Packard. + .LP -Irene McCartney of Compaq. +Heather Lanigan of Compaq. + .LP -Paul Shearer of IBM. +Danny Masci of Hummingbird. + +.LP +Dan McNichol of IBM. + +.LP +Richard Offer of SGI. + .LP Steve Swales of Sun Microsystems, Inc. + + +The following individuals contributed significantly to the development +of X11R6.6, in the form of code, testing, and support. + +.LP +Stuart Anderson of Metro Link, Inc. + +.LP +Robert W. Boone of Metro Link, Inc. + +.LP +Alan Coopersmith of Sun Microsystems, Inc. + +.LP +Glen Cornell of Metro Link, Inc. + +.LP +Ernie Coskrey of Metro Link, Inc. + +.LP +Gudrun Enger of Metro Link, Inc. + +.LP +Gemma Exton of Adacel Technologies Limited. + +.LP +Jay Hobson of Sun Microsystems, Inc. + +.LP +Steve McClure of Metro Link, Inc. + +.LP +Scott McDonald of Metro Link, Inc. + +.LP +Andrew Miller of Marconi Corporation. + +.LP +Quentin Neill of Metro Link, Inc. + +.LP +Keith Packard of The XFree86 Project. + +.LP +Simon Pickup of Adacel Technologies Limited. + +.LP +Paul Shearer of IBM. + +.LP +Hidetoshi Tajima of Sun Microsystems, Inc. + .ie t \{ .\" .\" print Table of Contents Index: xc/doc/specs/Imakefile diff -u xc/doc/specs/Imakefile:1.6 xc/doc/specs/Imakefile:1.8 --- xc/doc/specs/Imakefile:1.6 Wed Jan 17 11:57:41 2001 +++ xc/doc/specs/Imakefile Wed Jan 16 13:36:00 2002 @@ -3,7 +3,7 @@ -XCOMM $XFree86: xc/doc/specs/Imakefile,v 1.6 2001/01/17 16:57:41 dawes Exp $ +XCOMM $XFree86: xc/doc/specs/Imakefile,v 1.8 2002/01/16 18:36:00 dawes Exp $ #define IHaveSubdirs #define PassCDebugFlags @@ -11,8 +11,8 @@ #if defined(SpecsDocDirs) && !BuildAllSpecsDocs SUBDIRS = SpecsDocDirs #else -SUBDIRS = BDF CTEXT FSProtocol GL ICCCM ICE PEX5 PM Render SM X11 XDMCP \ - XIM XLFD XProtocol Xaw Xext Xi Xmu Xserver Xt Xv \ +SUBDIRS = BDF CTEXT FSProtocol GL ICCCM ICE /*PEX5*/ PM Render SM X11 XDMCP \ + XIM XLFD XProtocol Xaw Xext Xi Xmu Xserver Xt Xv XvMC \ i18n programs rstart xfs xterm xtrans #endif Index: xc/doc/specs/XPRINT/xp_proto.mif diff -u xc/doc/specs/XPRINT/xp_proto.mif:1.1.1.2 xc/doc/specs/XPRINT/xp_proto.mif:1.2 --- xc/doc/specs/XPRINT/xp_proto.mif:1.1.1.2 Sun Sep 27 05:08:02 1998 +++ xc/doc/specs/XPRINT/xp_proto.mif Fri Nov 23 14:50:38 2001 @@ -66696,7 +66696,7 @@ + > Index: xc/doc/specs/XvMC/Imakefile diff -u /dev/null xc/doc/specs/XvMC/Imakefile:1.1 --- /dev/null Fri Jan 18 15:20:56 2002 +++ xc/doc/specs/XvMC/Imakefile Wed Jan 16 13:36:00 2002 @@ -0,0 +1,4 @@ +XCOMM $XFree86: xc/doc/specs/XvMC/Imakefile,v 1.1 2002/01/16 18:36:00 dawes Exp $ + +InstallDoc(XvMC_API,XvMC_API.txt) + Index: xc/doc/specs/XvMC/XvMC_API.txt diff -u /dev/null xc/doc/specs/XvMC/XvMC_API.txt:1.1 --- /dev/null Fri Jan 18 15:20:56 2002 +++ xc/doc/specs/XvMC/XvMC_API.txt Wed Jan 16 13:36:00 2002 @@ -0,0 +1,1293 @@ + + X-Video Motion Compensation - API specification v. 1.0 + + Mark Vojkovich + + +/* history */ + + first draft (9/6/00) + second draft (10/31/00) - Changed to allow acceleration at both + the motion compensation and IDCT level. + third draft (1/21/01) - Some refinements and subpicture support. + fourth draft (5/2/01) - Dual Prime clarification, add + XvMCSetAttribute. + fifth draft (6/26/01) - Change definition of XvMCCompositeSubpicture + plus some clarifications and fixed typographical errors. + sixth draft (9/24/01) - Added XVMC_SECOND_FIELD and removed + XVMC_PROGRESSIVE_FRAME and XVMC_TOP_FIELD_FIRST flags. + seventh draft (10/26/01) - Added XVMC_INTRA_UNSIGNED option. + eighth draft (11/13/02) - Removed IQ level acceleration and + changed some structures to remove unused fields. + +/* acknowledgements */ + + Thanks to Matthew J. Sottek from Intel for lots of input. + +/********************************************************************/ + + OVERVIEW + +/********************************************************************/ + + XvMC extends the X-Video extension (Xv) and makes use of the + familar concept of the XvPort. Ports have attributes that can be set + and queried through Xv. In XvMC ports can also have hardware motion + compensation contexts created for use with them. Ports which support + XvImages (ie. they have an "XV_IMAGE" port encoding as described in + the Xv version 2.2 API addendum) can be queried for the list of XvMCSurface + types they support. If they support any XvMCSurface types an + XvMCContext can be created for that port. + + An XvMCContext describes the state of the motion compensation + pipeline. An individual XvMCContext can be created for use with + a single port, surface type, motion compensation type, width and + height combination. For example, a context might be created for a + particular port that does MPEG-2 motion compensation on 720 x 480 + 4:2:0 surfaces. Once the context is created, referencing it implies + the port, surface type, size and the motion compensation type. Contexts + may be "direct" or "indirect". For indirect contexts the X server + renders all video using the data passed to it by the client. For + direct contexts the client libraries render the video with little + or no interaction with the X server. + + XvMCSurfaces are buffers into which the motion compensation + hardware can render. The data in the buffers themselves are not client + accessible and may be stored in a hardware-specific format. Any + number of buffers can be created for use with a particular context + (resources permitting). + + XvMC provides video acceleration starting at one of two places + in the video pipeline. Acceleration starting at the first point, + which we shall call the "Motion Compensation" level, begins after the + the inverse quantization and IDCT at the place where motion compensation + is to be applied. The second point, which we shall call the "IDCT" + level, begins before the IDCT just after the inverse quantization. + + Rendering is done by presenting the library with a target XvMCSurface + and up to two reference XvMCSurfaces for the motion compensation, a + buffer of 8x8 blocks and a command buffer which describes how to + use the 8x8 blocks along with motion compensation vectors to construct + the data in the target XvMCSurface. When the pipeline starts at the + IDCT level, Xv will perform the IDCT on the blocks before performing + the motion compensation. A function is provided to copy/overlay a + portion of the XvMCSurface to a drawable with arbitrary scaling. + + XvMCSubpictures are separate surfaces that may be blended with the + target surface. Any number of XvMCSubpictures may be created for use + with a context (resources permitting). Both "backend" and "frontend" + subpicture behavior are supported. + +/********************************************************************/ + + QUERYING THE EXTENSION + +/********************************************************************/ + +/* Errors */ +#define XvMCBadContext 0 +#define XvMCBadSurface 1 +#define XvMCBadSubpicture 2 + +Bool XvMCQueryExtension (Display *display, int *eventBase, int *errBase) + + Returns True if the extension exists, False otherwise. Also returns + the error and event bases. + + display - The connection to the server. + + eventBase - + errBase - The returned event and error bases. Currently there + are no events defined. + +Status XvMCQueryVersion (Display *display, int *major, int *minor) + + Query the major and minor version numbers of the extension. + + display - The connection to the server. + + major - + minor - The returned major and minor version numbers. + +/********************************************************************/ + + QUERYING SURFACE TYPES + +/********************************************************************/ + +/* Chroma formats */ +#define XVMC_CHROMA_FORMAT_420 0x00000001 +#define XVMC_CHROMA_FORMAT_422 0x00000002 +#define XVMC_CHROMA_FORMAT_444 0x00000003 + +/* XvMCSurfaceInfo Flags */ +#define XVMC_OVERLAID_SURFACE 0x00000001 +#define XVMC_BACKEND_SUBPICTURE 0x00000002 +#define XVMC_SUBPICTURE_INDEPENDENT_SCALING 0x00000004 +#define XVMC_INTRA_UNSIGNED 0x00000008 + +/* Motion Compensation types */ +#define XVMC_MOCOMP 0x00000000 +#define XVMC_IDCT 0x00010000 + +#define XVMC_MPEG_1 0x00000001 +#define XVMC_MPEG_2 0x00000002 +#define XVMC_H263 0x00000003 +#define XVMC_MPEG_4 0x00000004 + + +typedef struct { + int surface_type_id; + int chroma_format; + unsigned short max_width; + unsigned short max_height; + unsigned short subpicture_max_width; + unsigned short subpicture_max_height; + int mc_type; + int flags; +} XvMCSurfaceInfo; + + surface_type_id - Unique descriptor for this surface type. + + chroma_format - Chroma format of this surface (eg. XVMC_CHROMA_FORMAT_420, + XVMC_CHROMA_FORMAT_422, XVMC_CHROMA_FORMAT_444). + + max_width - + max_height - Maximum dimensions of the luma data in pixels. + + subpicture_max_width - + subpicture_max_height - The Maximum dimensions of the subpicture + that can be created for use with this surface + Both fields are zero if subpictures are not + supported. + + mc_type - The type of motion compensation available for this + surface. This consists of XVMC_MPEG_1, XVMC_MPEG_2, XVMC_H263 + or XVMC_MPEG_4 OR'd together with any of the following: + + XVMC_MOCOMP - Acceleration starts at the motion compensation + level; + + XVMC_IDCT - Acceleration starts at the IDCT level. + + flags - Any combination of the following may be OR'd together. + + XVMC_OVERLAID_SURFACE - Displayed data is overlaid and not + physically in the visible framebuffer. + When this is set the client is responsible + for painting the colorkey. + + XVMC_BACKEND_SUBPICTURE - The supicture is of the "backend" + variety. It is "frontend" otherwise. + There is more information on this in the + section on subpictures below. + + XVMC_SUBPICTURE_INDEPENDENT_SCALING - The subpicture can be scaled + independently of the video + surface. See the section on + subpictures below. + + XVMC_INTRA_UNSIGNED - When this flag is set, the motion compenstation + level Intra macroblock data should be in an + unsigned format rather than the signed format + present in the mpeg stream. This flag applies + only to motion compensation level acceleration. + +XvMCSurfaceInfo * XvMCListSurfaceTypes(Display *dpy, XvPortID port, int *num) + + Returns the number of surface types supported by the XvPort and an array + of XvMCSurfaceInfo describing each surface type. The returned array + should be freed with XFree(). + + dpy - The connection to the server. + + port - The port we want to get the XvMCSurfaceInfo array for. + + num - The number of elements returned in the array. + + Errors: + + XvBadPort - The requested port does not exist. + + BadAlloc - There are insufficient resources to complete this request. + + +/********************************************************************/ + + CREATING A CONTEXT + +/********************************************************************/ + +/* XvMCContext flags */ +#define XVMC_DIRECT 0x00000001 + +typedef struct { + XID context_id; + int surface_type_id; + unsigned short width; + unsigned short height; + XVPortID port; + int flags; + void * privData; /* private to the library */ +} XvMCContext; + + context_id - An XID associated with the context. + + surface_type_id - This refers to the XvMCSurfaceInfo that describes + the surface characteristics. + + width - + height - The dimensions (of the luma data) this context supports. + + port - The port that this context supports. + + flags - Any combination may be OR'd together. + + XVMC_DIRECT - This context is direct rendered. + + +Status XvMCCreateContext ( + Display display, + XVPortID port, + int surface_type_id, + int width, + int height, + int flags, + XvMCContext * context +); + + This creates a context by filling out the XvMCContext structure passed + to it and returning Success. + + display - Specifies the connection to the server. + + port - Specifies the port to create the context for. + + surface_type_id - + width - + height - Specifies the surface type and dimensions that this + context will be used for. The surface_type_id corresponds + to the surface_type_id referenced by the XvMCSurfaceInfo. + The surface returned may be larger than the surface requested + (usually the next larger multiple of 16x16 pixels). + + flags - Any of the following may by OR'd together: + + XVMC_DIRECT - A direct context is requested. + If a direct context cannot be created the request + will not fail, rather, an indirect context will + be created instead. + + context - Pointer to the pre-allocated XvMCContext structure. + + + + Errors: + + XvBadPort - The requested port does not exist. + + BadValue - The dimensions requested are not supported by the + surface type. + + BadMatch - The surface_type_id is not supported by the port. + + BadAlloc - There are not sufficient resources to fulfill this + request. + + +Status XvMCDestroyContext (Display display, XvMCContext * context) + + Destroys the specified context. + + display - Specifies the connection to the server. + + context - The context to be destroyed. + + Errors: + + XvMCBadContext - The XvMCContext is not valid. + + +/*********************************************************************/ + + SURFACE CREATION + +/*********************************************************************/ + +typedef struct { + XID surface_id; + XID context_id; + int surface_type_id; + unsigned short width; + unsigned short height; + void *privData; /* private to the library */ +} XvMCSurface; + + surface_id - An XID associated with the surface. + + context_id - The XID of the context for which the surface was created. + + surface_type_id - Derived from the context_id, it specifies the + XvMCSurfaceInfo describing the surface. + + width - + height - The width and height of the luma data. + + +Status +XvMCCreateSurface( + Display *display, + XvMCContext * context; + XvMCSurface * surface; +); + + Creates a surface (Frame) for use with the specified context. + The surface structure is filled out and Success is returned if no + error occured. + + context - pointer to a valid context. The context implies + the surface type to be created, and its dimensions. + + surface - pointer to a pre-allocated XvMCSurface structure. + + Errors: + + XvMCBadContext - the context is not valid. + + BadAlloc - there are insufficient resources to complete + this operation. + +Status XvMCDestroySurface(Display *display, XvMCSurface *surface); + + Destroys the given surface. + + display - Specifies the connection to the server. + + surface - The surface to be destroyed. + + Errors: + + XvMCBadSurface - The XvMCSurface is not valid. + + + +/*********************************************************************/ + + RENDERING A FRAME + +/*********************************************************************/ + +typedef struct { + XID context_id; + unsigned int num_blocks; + short *blocks; + void *privData; /* private to the library */ +} XvMCBlockArray; + + num_blocks - Number of 64 element blocks in the blocks array. + + context_id - XID of the context these blocks were allocated for. + + blocks - Pointer to an array of (64 * num_blocks) shorts. + +Status XvMCCreateBlocks ( + Display *display, + XvMCContext *context, + unsigned int num_blocks, + XvMCBlockArray * block +); + + This allocates an array of DCT blocks in the XvMCBlockArray + structure passed to it. Success is returned if no error occured. + + display - The connection to the server. + + context - The context the block array is being created for. + + num_blocks - The number of 64 element short blocks to be allocated. + This number must be non-zero. + + block - A pointer to a pre-allocated XvMCBlockArray structure. + + Errors: + + XvMCBadContext - the context is invalid. + + BadAlloc - There are insufficient resources to complete the + operation. + + BadValue - num_blocks was zero. + +Status XvMCDestroyBlocks (Display *display, XvMCBlockArray * block) + + Frees the given array. + + display - The connection to the server. + + block - The block array to be freed. + + + ---------------------------------------------------------- + +#define XVMC_MB_TYPE_MOTION_FORWARD 0x02 +#define XVMC_MB_TYPE_MOTION_BACKWARD 0x04 +#define XVMC_MB_TYPE_PATTERN 0x08 +#define XVMC_MB_TYPE_INTRA 0x10 + +#define XVMC_PREDICTION_FIELD 0x01 +#define XVMC_PREDICTION_FRAME 0x02 +#define XVMC_PREDICTION_DUAL_PRIME 0x03 +#define XVMC_PREDICTION_16x8 0x02 +#define XVMC_PREDICTION_4MV 0x04 + +#define XVMC_SELECT_FIRST_FORWARD 0x01 +#define XVMC_SELECT_FIRST_BACKWARD 0x02 +#define XVMC_SELECT_SECOND_FORWARD 0x04 +#define XVMC_SELECT_SECOND_BACKWARD 0x08 + +#define XVMC_DCT_TYPE_FRAME 0x00 +#define XVMC_DCT_TYPE_FIELD 0x01 + +typedef struct { + unsigned short x; + unsigned short y; + unsigned char macroblock_type; + unsigned char motion_type; + unsigned char motion_vertical_field_select; + unsigned char dct_type; + short PMV[2][2][2]; + unsigned int index; + unsigned short coded_block_pattern; + unsigned short pad0; +} XvMCMacroBlock; + + x, y - location of the macroblock on the surface in units of macroblocks. + + macroblock_type - can be any of the following flags OR'd together: + + XVMC_MB_TYPE_MOTION_FORWARD - Forward motion prediction should + be done. This flag is ignored for + Intra frames. + + XVMC_MB_TYPE_MOTION_BACKWARD - Backward motion prediction should + be done. This flag is ignored when + the frame is not bidirectionally + predicted. + + XVMC_MB_TYPE_PATTERN - Blocks are referenced and they contain + differentials. The coded_block_pattern will + indicate the number of blocks and index will + note their locations in the block array. + + XVMC_MB_TYPE_INTRA - Blocks are referenced and they are intra blocks. + The coded_block_pattern will indicate the number + of blocks and index will note their locations in + the block array. XVMC_MB_TYPE_PATTERN and + XVMC_MB_TYPE_INTRA are mutually exclusive. If + both are specified, XVMC_MB_TYPE_INTRA takes + precedence. + + motion_type - If the surface is a field, the following are valid: + XVMC_PREDICTION_FIELD + XVMC_PREDICTION_16x8 + XVMC_PREDICTION_DUAL_PRIME + If the surface is a frame, the following are valid: + XVMC_PREDICTION_FIELD + XVMC_PREDICTION_FRAME + XVMC_PREDICTION_DUAL_PRIME + + motion_vertical_field_select - The following flags may be OR'd together + + XVMC_SELECT_FIRST_FORWARD + XVMC_SELECT_FIRST_BACKWARD + XVMC_SELECT_SECOND_FORWARD + XVMC_SELECT_SECOND_BACKWARD + + If the bit is set the bottom field is indicated. + If the bit is clear the top field is indicated. + + X X X X D C B A + ------- | | | |_ First vector forward + | | | |___ First vector backward + unused | |_____ Second vector forward + |_______ Second vector backward + + PMV - The motion vector(s) + + PMV[c][b][a] + + a - This holds the vector. 0 = horizontal, 1 = vertical. + b - 0 = forward, 1 = backward. + c - 0 = first vector, 1 = second vector. + + The motion vectors are used only when XVMC_MB_TYPE_MOTION_FORWARD + or XVMC_MB_TYPE_MOTION_BACKWARD are set. + + DualPrime vectors must be fully decoded and placed in the PMV + array as follows. + + Field structure: + + vector[0][0][1:0] -> PMV[0][0][1:0] + vector[2][0][1:0] -> PMV[0][1][1:0] + + Frame structure: + + vector[0][0][1:0] -> PMV[0][0][1:0] top from top + vector[0][0][1:0] -> PMV[0][1][1:0] bottom from bottom + vector[2][0][1:0] -> PMV[1][0][1:0] top from bottom + vector[3][0][1:0] -> PMV[1][1][1:0] bottom from top + + + index - The offset in units of (64 * sizeof(short)) from the start of + the block array where this macroblock's DCT blocks, as indicated + by the coded_block_pattern, are stored. + + coded_block_pattern - Indicates the blocks to be updated. The bitplanes + are specific to the mc_type of the surface. This + field is valid only if XVMC_MB_TYPE_PATTERN or + XVMC_MB_TYPE_INTRA are set. In that case the blocks + are differential or intra blocks respectively. + The bitplanes are described in ISO/IEC 13818-2 + Figures 6.10-12. + + dct_type - This field indicates whether frame pictures are frame DCT + coded or field DCT coded. ie XVMC_DCT_TYPE_FIELD or + XVMC_DCT_TYPE_FRAME. + + +typedef struct { + unsigned int num_blocks; + XID context_id; + XvMCMacroBlock *macro_blocks; + void *privData; /* private to the library */ +} XvMCMacroBlockArray; + + + num_blocks - Number of XvMCMacroBlocks in the macro_blocks array. + + context_id - XID of the context these macroblocks were allocated for. + + macro_blocks - Pointer to an array of num_blocks XvMCMacroBlocks. + + +Status XvMCCreateMacroBlocks ( + Display *display, + XvMCContext *context, + unsigned int num_blocks, + XvMCMacroBlockArray * blocks +); + + This allocates an array of XvMCMacroBlocks in the XvMCMacroBlockArray + structure passed to it. Success is returned if no error occured. + + display - The connection to the server. + + context - The context the macroblock array is being created for. + + num_blocks - The number of XvMCMacroBlocks to be allocated. + This number must be non-zero. + + blocks - A pointer to a pre-allocated XvMCMacroBlockArray structure. + + Errors: + + XvMCBadContext - the context is invalid. + + BadAlloc - There are insufficient resources to complete the + operation. + + BadValue - num_blocks was zero. + +Status XvMCDestroyMacroBlocks (Display *display, XvMCMacroBlockArray * block) + + Frees the given array. + + display - The connection to the server. + + block - The macro block array to be freed. + + + ------------------------------------------------------------ + +#define XVMC_TOP_FIELD 0x00000001 +#define XVMC_BOTTOM_FIELD 0x00000002 +#define XVMC_FRAME_PICTURE (XVMC_TOP_FIELD | XVMC_BOTTOM_FIELD) + +#define XVMC_SECOND_FIELD 0x00000004 + +Status XvMCRenderSurface( + Display *display, + XvMCContext *context, + unsigned int picture_structure, + Surface *target_surface, + Surface *past_surface, + Surface *future_surface, + unsigned int flags, + unsigned int num_macroblocks, + unsigned int first_macroblock, + XvMCMacroBlockArray *macroblock_array, + XvMCBlockArray *blocks +); + + This function renders the macroblocks passed to it. It will not + return until it has read all of the macroblocks, however, rendering + will usually not be completed by that time. The return of this + function means it is safe to touch the blocks and macroblock_array. + To synchronize rendering see the section on sychronization below. + + display - The connection to the server. + + context - The context used to render. + + target_surface - + past_surface - + furture_surface - + + The target_surface is required. If the future and past + surfaces are NULL, the target_surface is an "Intra" frame. + + If the past surface is provided but not the future surface, + the target_surface is a "Predicted Inter" frame. + + If both past and future surfaces are provided, the + target_surface is a "Bidirectionally-predicted Inter" frame. + + Specifying a future surface without a past surface results + in a BadMatch. + + All surfaces must belong to the same context. + + picture_structure - XVMC_TOP_FIELD, XVMC_BOTTOM_FIELD or + XVMC_FRAME_PICTURE. + + + flags - Flags may include: + + XVMC_SECOND_FIELD - For field pictures this indicates whether + the current field (top or bottom) is first + or second in the sequence. + + num_macroblocks - The number of XvMCMacroBlock structures to execute in + the macroblock_array. + + first_macroblock - The index of the first XvMCMacroBlock to process in the + macroblock_array. + + blocks - The array of XvMCBlocks to be referenced by the XvMCMacroBlocks. + The data in the individual blocks are in raster scan order and + should be clamped to the limits specific to the acceleration + level. For motion compensation level acceleration this is 8 + bits for Intra and 9 bits for non-Intra data. At the IDCT level + this is 12 bits. + + Errors: + + XvMCBadContext - The context is not valid. + + XvMCBadSurface - Any of the surfaces are not valid. + + BadMatch - Any of the surfaces do not belong to the specified + context or a future surface was specified without + a past surface. + + BadValue - Unrecognized data for the picture_structure. + + +/***********************************************************************/ + + DISPLAYING THE SURFACE + +/***********************************************************************/ + + +Status +XvMCPutSurface( + Display *display, + XvMCSurface *surface, + Drawable draw, + short srcx, + short srcy, + unsigned short srcw, + unsigned short srch, + short destx, + short desty, + unsigned short destw, + unsigned short desth, + int flags +); + + Display the rectangle from the source defined by srcx/y/w/h scaled + to destw by desth and placed at (destx, desty) on the given drawable. + This function is not guaranteed to be pipelined with previous rendering + commands and may display the surface immediately. Therefore, the client + must query that the surface has finished rendering before calling this + function. + + display - The connection to the server. + + surface - The surface to copy/overlay from. + + draw - The drawable to copy/overlay the video on. + + srcx - + srcy - + srcw - + srch - The rectangle in the source area from the surface that is + to be displayed. + + destx - + desty - + destw - + desth - The rectangle in the destination drawable where the scaled + source rectangle should be displayed. + + flags - this indicates the field to be displayed and can be XVMC_TOP_FIELD, + XVMC_BOTTOM_FIELD or XVMC_FRAME_PICTURE. XVMC_FRAME_PICTURE + displays both fields (weave). + + Errors: + + XvMCBadSurface - The surface is not valid. + + BadDrawable - The drawable does not exist. + + +Status XvMCHideSurface(Display *display, XvMCSurface *surface) + + Stops display of a surface. This is only needed if the surface is an + overlaid surface as indicated in the XvMCSurfaceInfo - it is a no-op + otherwise. + + display - The connection to the server. + + surface - The surface to be hidden. + + Errors: + + XvMCBadSurface - The surface is not valid. + + +/***********************************************************************/ + + COMPOSITING THE SUBPICTURE + +/***********************************************************************/ + + +XvImageFormatValues * XvMCListSubpictureTypes ( + Display * display, + XvPortID port, + int surface_type_id, + int *count_return +) + + Returns an array of XvImageFormatValues supported by the surface_type_id + describing the surface. The surface_type_id is acquired from the + XvMCSurfaceInfo. This list should be freed with XFree(). + + display - Specifies the connection to the X-server. + + port - Specifies the port we are interested in. + + surface_type_id - Specifies the surface type for which we want to + query the supported subpicture types. + + count_return - the size of the returned array. + + Errors: + + BadPort - The port doesn't exist. + + BadAlloc - There are insufficient resources to complete this request. + + BadMatch - The surface type is not supported on that port. + + +typedef struct { + XID subpicture_id; + XID context_id; + int xvimage_id; + unsigned short width; + unsigned short height; + int num_palette_entries; + int entry_bytes; + char component_order[4]; + void *privData; /* private to the library */ +} XvMCSubpicture; + + + subpicture_id - An XID associated with this subpicture. + + context_id - The XID of the context this subpicture was created for. + + xvimage_id - The id descriptor of the XvImage format that may be used + with this subpicture. + + width - + height - The dimensions of the subpicture. + + num_palette_entries - For paletted formats only. This is the number + of palette entries. It is zero for XvImages + without palettes. + + entry_bytes - Each component is one byte and entry_bytes indicates + the number of components in each entry (eg. 3 for + YUV palette entries). This field is zero when + palettes are not used. + + component_order - Is an array of ascii characters describing the order + of the components within the bytes. Only entry_bytes + characters of the string are used. + +Status +XvMCCreateSubpicture ( + Display *display, + XvMCContext *context, + XvMCSubpicture *subpicture, + unsigned short width, + unsigned short height, + int xvimage_id +) + + This creates a subpicture by filling out the XvMCSubpicture structure + passed to it and returning Success. + + display - Specifies the connection to the X-Server. + + context - The context to create the subpicture for. + + subpicture - Pre-allocated XvMCSubpicture structure to be filled + out by this function. + + width - + height - The dimensions of the subpicture. + + xvimage_id - The id describing the XvImage format. + + + Errors: + + BadAlloc - There are insufficient resources to complete this request. + + XvMCBadContext - The specified context does not exist. + + BadMatch - The XvImage format id specified is not supported by + the context. + + BadValue - If the size requested is larger than the max size reported + in the XvMCSurfaceInfo. + + +Status +XvMCClearSubpicture ( + Display *display, + XvMCSubpicture *subpicture, + short x, + short y, + unsigned short width, + unsigned short height, + unsigned int color +) + + Clear the area of the given subpicture to "color". + + display - The connection to the server. + + subpicture - The subpicture to clear. + + x - + y - + width - + height - The rectangle in the subpicture to be cleared. + + color - The data to fill the rectangle with. + + Errors: + + XvMCBadSubpicture - The subpicture is invalid. + +Status +XvMCCompositeSubpicture ( + Display *display, + XvMCSubpicture *subpicture, + XvImage *image, + short srcx, + short srcy, + unsigned short width, + unsigned short height, + short dstx, + short dsty +) + + Copies the XvImage to the XvMCSubpicture. + + display - The connection to the server. + + subpicture - The subpicture used as the destination of the copy. + + image - The XvImage to be used as the source of the copy. + XvImages should be of the shared memory variety for + indirect contexts. + + srcx - + srcy - + width - + height - The rectangle from the image to be composited. + + dstx - + dsty - The location in the subpicture where the source rectangle + should be composited. + + Errors: + + XvMCBadSubpicture - The subpicture is invalid. + + BadMatch - The subpicture does not support the type of XvImage + passed to this function. + +Status +XvMCDestroySubpicture (Display *display, XvMCSubpicture *subpicture) + + Destroys the specified subpicture. + + display - Specifies the connection to the X-server. + + subpicture - The subpicture to be destroyed. + + Errors: + + XvMCBadSubpicture - The subpicture specified does not exist. + + +Status +XvMCSetSubpicturePalette ( + Display *display, + XvMCSubpicture *subpicture, + unsigned char *palette +) + + Set the subpicture's palette. This applies to paletted subpictures + only. + + display - The connection to the server. + + subpicture - The subpicture on which to change the palette. + + palette - A pointer to an array holding the palette data. The + size of this array is + + num_palette_entries * entry_bytes + + in size. The order of the components in the palette + is described by the component_order in the XvMCSubpicture + structure. + + Errors: + + XvMCBadSubpicture - The subpicture specified does not exist. + + BadMatch - The specified subpicture does not use palettes. + + +Status +XvMCBlendSubpicture ( + Display *display, + XvMCSurface *target_surface, + XvMCSubpicture *subpicture, + short subx, + short suby, + unsigned short subw, + unsigned short subh, + short surfx, + short surfy, + unsigned short surfw, + unsigned short surfh +) + +Status +XvMCBlendSubpicture2 ( + Display *display, + XvMCSurface *source_surface, + XvMCSurface *target_surface, + XvMCSubpicture *subpicture, + short subx, + short suby, + unsigned short subw, + unsigned short subh, + short surfx, + short surfy, + unsigned short surfw, + unsigned short surfh +) + + The behavior of these two functions is different depending on whether +or not the XVMC_BACKEND_SUBPICTURE flag is set in the XvMCSurfaceInfo. + + XVMC_BACKEND_SUBPICTURE set: + + XvMCBlendSubpicture associates the subpicture with the target_surface. + Both will be displayed at the next call to XvMCPutSurface. Additional + blends before the call to XvMCPutSurface simply overrides the association. + Both the target_surface and subpicture will query XVMC_DISPLAYING from + the call to XvMCPutSurface until they are no longer displaying. It is + safe to associate the subpicture and target_surface before rendering has + completed (while they still query XVMC_RENDERING) but it is not safe to + call XvMCPutSurface at that time. + + XvMCBlendSubpicture2 copies the source_surface to the target_surface + and associates the subpicture with the target_surface. This essentially + calls XvMCBlendSubpicture on the target_surface after the copy. Both + the subpicture and target_surface will query XVMC_DISPLAYING from the + call to XvMCPutSurface until they are no longer displaying. The + source_surface will not query XVMC_DISPLAYING as a result of this function. + The copy is pipelined with the rendering and will cause XVMC_RENDERING + to be queried until the copy is done. + + + XVMC_BACKEND_SUBPICTURE not set ("frontend" behavior): + + XvMCBlendSubpicture is a no-op in this case. + + XvMCBlendSubpicture2 blends the source_surface and subpicture and + puts it in the target_surface. This does not effect the status of + the source surface but will cause the target_surface to query + XVMC_RENDERING until the blend is completed. + + + display - The connection to the server. + + subpicture - The subpicture to be blended into the video. + + target_surface - The surface to be displayed with the blended subpicture. + + source_surface - Source surface prior to blending. + + subx - + suby - + subw - + subh - The rectangle from the subpicture to be blended. + + surfx - + surfy - + surfw - + surfh - The rectangle in the XvMCSurface to blend the subpicture rectangle + into. If XVMC_SUBPICTURE_INDEPENDENT_SCALING is not set in the + XvMCSurfaceInfo subw must be equal to surfw and subh must be + equal to surfh height or else a BadValue error occurs. + + Errors: + + XvMCBadSurface - Any of the surfaces are invalid. + + XvMCBadSubpicture - The subpicture is invalid. + + BadMatch - The subpicture or any of the surfaces do not belong to the + same context. + + BadValue - XVMC_SUBPICTURE_INDEPENDENT_SCALING is set and the source + and destination rectangles are different sizes. + + +/***********************************************************************/ + + SURFACE SYNCHRONIZATION + +/***********************************************************************/ + + +#define XVMC_RENDERING 0x00000001 +#define XVMC_DISPLAYING 0x00000002 + +Status +XvMCSyncSurface (Display *display, XvMCSurface *surface) + + This function blocks until all rendering requests on the surface + have been completed. + + display - The connection to the server. + + surface - The surface to synchronize. + + Errors: + + XvMCBadSurface - The surface is not valid. + + +Status +XvMCFlushSurface (Display *display, XvMCSurface *surface) + + This function commits pending rendering requests to ensure that + they will be completed in a finite amount of time. + + display - The connnection to the server. + + surface - The surface whos rendering requests should be flushed. + + Errors: + + XvMCBadSurface - The surface is not valid. + + +Status +XvMCGetSurfaceStatus (Display *display, XvMCSurface *surface, int *stat) + + display - The connection to the server. + + surface - The surface whos status is being queried. + + stat - May be any of the following OR'd together: + + XVMC_RENDERING - The last XvMCRenderSurface request has not completed + yet. + + XVMC_DISPLAYING - The surface is currently being displayed or a + display is pending (ie. it is not safe to render + to it). + + Errors: + + XvMCBadSurface - The surface is not valid. + + +/***********************************************************************/ + + SUBPICTURE SYNCHRONIZATION + +/***********************************************************************/ + + + +Status +XvMCSyncSubpicture (Display *display, XvMCSubpicture *subpicture) + + This function blocks until all composite/clear requests on the supicture + have been completed. + + display - The connection to the server. + + subpicture - The subpicture to synchronize. + + Errors: + + XvMCBadSubpicture - The subpicture is not valid. + + +Status +XvMCFlushSubpicture (Display *display, XvMCSubpicture *subpicture) + + This function commits pending composite/clear requests to ensure that + they will be completed in a finite amount of time. + + display - The connection to the server. + + subpicture - The subpicture whos compositing should be flushed. + + Errors: + + XvMCBadSubpicture - The surface is not valid. + + +Status +XvMCGetSubpictureStatus (Display *display, XvMCSubpicture *subpic, int *stat) + + display - The connection to the server. + + subpic - The subpicture whos status is being queried. + + stat - may be any of the following OR'd together: + + XVMC_RENDERING - The last XvMCCompositeSubpicture or XvMCClearSubpicture + request has not completed yet. + + XVMC_DISPLAYING - The subpicture is currently being displayed or a + display is pending (ie. it is not safe to render + to it). + + Errors: + + XvMCBadSubpicture - The surface is not valid. + +/********************************************************************/ + + ATTRIBUTES + +/********************************************************************/ + + Context specific attribute functions are provided. These are +similar to their Xv Counterparts XvQueryPortAttributes, XvSetPortAttribute +and XvGetPortAttribute but their state is specific to the context. + +XvAttribute * +XvMCQueryAttributes ( + Display *display, + XvMCContext *context, + int *number +) + + An array of XvAttributes of size "number" is returned by this function. + If there are no attributes, NULL is returned and number is set to 0. + The array may be freed with XFree(). + + display - The connection to the server. + + context - The context whos attributes we are querying. + + number - The returned number of recognized atoms. + + Errors: + + XvMCBadContext - The context is invalid. + +Status +XvMCSetAttribute ( + Display *display, + XvMCContext *context, + Atom attribute, + int value +) + + This function sets a context-specific attribute and returns Success + if no error has occurred. + + display - The connection to the server. + + context - The context for which the attribute change is to go into effect. + + attribute - The X Atom of the attribute to be changed. + + value - The new value of the attribute. + + Errors: + + XvMCBadContext - The context is not valid. + + BadValue - An invalid value was specified. + + BadMatch - This attribute is not defined for this context. + +Status +XvMCGetAttribute ( + Display *display, + XvMCContext *context, + Atom attribute, + int *value +) + + This function queries a context-specific attribute and return + Success and the value if no error has occurred. + + display - The connection to the server. + + context - The context whos attribute we are querying. + + attribute - The X Atom of the attribute to be retrieved. + + value - The returned attribute value. + + Errors: + + XvMCBadContext - The context is not valid. + + BadMatch - This attribute is not defined for this context. + Index: xc/doc/specs/programs/Imakefile diff -u xc/doc/specs/programs/Imakefile:1.12 xc/doc/specs/programs/Imakefile:1.14 --- xc/doc/specs/programs/Imakefile:1.12 Thu Apr 19 11:08:29 2001 +++ xc/doc/specs/programs/Imakefile Mon Jan 14 20:22:47 2002 @@ -2,7 +2,7 @@ -XCOMM $XFree86: xc/doc/specs/programs/Imakefile,v 1.12 2001/04/19 15:08:29 dawes Exp $ +XCOMM $XFree86: xc/doc/specs/programs/Imakefile,v 1.14 2002/01/15 01:22:47 dawes Exp $ /* does not include manual pages under util (not X programs) or any of the library function manual pages under doc/man */ @@ -13,7 +13,6 @@ $(TOP)/programs/Xserver/hw/xfree86/xf86config/xf86config.man \ $(TOP)/programs/Xserver/hw/xfree86/xf86cfg/xf86cfg.man \ $(TOP)/programs/Xserver/hw/xfree86/reconfig/reconfig.man \ - $(TOP)/programs/Xserver/hw/xfree86/SuperProbe/SuperProbe.man \ $(TOP)/programs/Xserver/hw/xfree86/drivers/apm/apm.man \ $(TOP)/programs/Xserver/hw/xfree86/drivers/ati/ati.man \ $(TOP)/programs/Xserver/hw/xfree86/drivers/chips/chips.man \ @@ -53,16 +52,20 @@ $(TOP)/programs/Xserver/hw/xfree86/etc/pcitweak.man \ $(TOP)/programs/Xserver/hw/xfree86/etc/scanpci.man \ $(TOP)/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.man \ + $(TOP)/programs/Xserver/hw/xfree86/input/acecad/acecad.man \ + $(TOP)/programs/Xserver/hw/xfree86/input/calcomp/calcomp.man \ + $(TOP)/programs/Xserver/hw/xfree86/input/citron/citron.man \ + $(TOP)/programs/Xserver/hw/xfree86/input/dmc/dmc.man \ $(TOP)/programs/Xserver/hw/xfree86/input/dynapro/dynapro.man \ $(TOP)/programs/Xserver/hw/xfree86/input/elographics/elographics.man \ + $(TOP)/programs/Xserver/hw/xfree86/input/keyboard/keyboard.man \ + $(TOP)/programs/Xserver/hw/xfree86/input/magictouch/magictouch.man \ $(TOP)/programs/Xserver/hw/xfree86/input/microtouch/microtouch.man \ $(TOP)/programs/Xserver/hw/xfree86/input/mouse/mouse.man \ $(TOP)/programs/Xserver/hw/xfree86/input/mutouch/mutouch.man \ + $(TOP)/programs/Xserver/hw/xfree86/input/penmount/penmount.man \ $(TOP)/programs/Xserver/hw/xfree86/input/void/void.man \ $(TOP)/programs/Xserver/hw/xfree86/input/wacom/wacom.man \ - $(TOP)/programs/Xserver/hw/xfree86/input/keyboard/keyboard.man \ - $(TOP)/programs/Xserver/hw/xfree86/input/penmount/penmount.man \ - $(TOP)/programs/Xserver/hw/xfree86/input/citron/citron.man \ $(TOP)/programs/Xserver/hw/darwin/XDarwin.man \ $(TOP)/programs/Xserver/hw/darwin/utils/dumpkeymap.man \ $(TOP)/programs/Xserver/hw/kdrive/Xkdrive.man \ @@ -136,6 +139,7 @@ $(TOP)/programs/Xserver/hw/xnest/Xnest.man \ $(TOP)/programs/scripts/xon.man \ $(TOP)/programs/xprop/xprop.man \ + $(TOP)/programs/xrandr/xrandr.man \ $(TOP)/programs/xrdb/xrdb.man \ $(TOP)/programs/xrefresh/xrefresh.man \ $(TOP)/programs/Xserver/Xserver.man \ @@ -145,6 +149,7 @@ $(TOP)/programs/xstdcmap/xstdcmap.man \ $(TOP)/programs/Xserver/hw/sun/Xsun.man \ $(TOP)/programs/xterm/xterm.man \ + $(TOP)/programs/xtrap/xtrap.man \ $(TOP)/programs/Xserver/hw/vfb/Xvfb.man \ $(TOP)/programs/xwd/xwd.man \ $(TOP)/programs/xwininfo/xwininfo.man \ Index: xc/doc/specs/rstart/Imakefile diff -u xc/doc/specs/rstart/Imakefile:1.2.2.1 xc/doc/specs/rstart/Imakefile:1.3 --- xc/doc/specs/rstart/Imakefile:1.2.2.1 Tue May 29 14:21:58 2001 +++ xc/doc/specs/rstart/Imakefile Tue May 29 14:14:12 2001 @@ -1,5 +1,5 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:42:50 cpqbld Exp $ -XCOMM $XFree86: xc/doc/specs/rstart/Imakefile,v 1.2.2.1 2001/05/29 18:21:58 dawes Exp $ +XCOMM $XFree86: xc/doc/specs/rstart/Imakefile,v 1.3 2001/05/29 18:14:12 dawes Exp $ /* * This is to allow building in symlink trees without trying to figure out Index: xc/doc/specs/rstart/rstart.ms diff -u xc/doc/specs/rstart/rstart.ms:1.1.1.1.24.1 xc/doc/specs/rstart/rstart.ms:1.2 --- xc/doc/specs/rstart/rstart.ms:1.1.1.1.24.1 Tue May 29 14:21:58 2001 +++ xc/doc/specs/rstart/rstart.ms Tue May 29 14:14:12 2001 @@ -1,4 +1,4 @@ -.\" $XFree86: xc/doc/specs/rstart/rstart.ms,v 1.1.1.1.24.1 2001/05/29 18:21:58 dawes Exp $ +.\" $XFree86: xc/doc/specs/rstart/rstart.ms,v 1.2 2001/05/29 18:14:12 dawes Exp $ .ds iL Brown .ds iI J. .ds iO Quarterdeck Office Systems Index: xc/doc/specs/xterm/ctlseqs.ms diff -u xc/doc/specs/xterm/ctlseqs.ms:3.43 xc/doc/specs/xterm/ctlseqs.ms:3.44 --- xc/doc/specs/xterm/ctlseqs.ms:3.43 Thu Mar 29 17:48:02 2001 +++ xc/doc/specs/xterm/ctlseqs.ms Sat Jan 5 16:55:11 2002 @@ -5,10 +5,10 @@ .\" .\" .\" -.\" $XFree86: xc/doc/specs/xterm/ctlseqs.ms,v 3.43 2001/03/29 22:48:02 dickey Exp $ +.\" $XFree86: xc/doc/specs/xterm/ctlseqs.ms,v 3.44 2002/01/05 21:55:11 dickey Exp $ .\" .\" -.\" Copyright 1996,1997,1998,1999,2000 by Thomas E. Dickey +.\" Copyright 1996,1997,1998,1999,2000,2001,2002 by Thomas E. Dickey .\" .\" All Rights Reserved .\" @@ -281,7 +281,7 @@ .AU Thomas Dickey .AI -XFree86 Project (1996-1999) +XFree86 Project (1996-2002) .AU . .am BT \" add page numbers after first page @@ -965,6 +965,9 @@ Restore DEC Private Mode Values. The value of \*(Ps previously saved is restored. \*(Ps values are the same as for DECSET. . +.IP \\*(Cs\\*(cs +Save cursor (ANSI.SYS) +. .IP \\*(Cs\\*?\\*(Pm\\*s\\*(cs Save DEC Private Mode Values. \*(Ps values are the same as for DECSET. . @@ -997,6 +1000,9 @@ \*(Ps = \*2\*1 \(-> Report \fIxterm\fP window's title as \*(Os\*s\*l\*s\fItitle\fP\*s\*(ST \*(Ps >= \*2\*4 \(-> Resize to \*(Ps lines (DECSLPP) +. +.IP \\*(Cs\\*u +Save cursor (ANSI.SYS) . .IP \\*(Cs\\*(Pt\\*s\\*;\\*(Pl\\*s\\*;\\*(Pb\\*s\\*;\\*(Pr\\*s\\*(qu\\*w Enable Filter Rectangle (DECEFR) Index: xc/extras/FreeType/lib/ttcache.h diff -u xc/extras/FreeType/lib/ttcache.h:1.1.1.2 xc/extras/FreeType/lib/ttcache.h:1.2 --- xc/extras/FreeType/lib/ttcache.h:1.1.1.2 Sat Feb 12 23:55:39 2000 +++ xc/extras/FreeType/lib/ttcache.h Sat Oct 27 23:32:04 2001 @@ -81,6 +81,7 @@ * - inserted an engine instance pointer in the cache structure * ******************************************************************/ +/* $XFree86: xc/extras/FreeType/lib/ttcache.h,v 1.2 2001/10/28 03:32:04 tsi Exp $ */ #ifndef TTCACHE_H #define TTCACHE_H @@ -154,6 +155,8 @@ typedef struct TCache_ TCache; typedef TCache* PCache; +#if !defined(FTXCMAP_H) && !defined(FTXSBIT_H) + /* Returns a new list element, either fresh or recycled. */ /* Note: the returned element is unlinked. */ @@ -205,6 +208,7 @@ LOCAL_DEF TT_Error TTCache_Done( PEngine_Instance engine ); +#endif /* !FTXCMAP_H && !FTXSBIT_H */ #ifdef __cplusplus } Index: xc/extras/FreeType/lib/ttcmap.h diff -u xc/extras/FreeType/lib/ttcmap.h:1.1.1.3 xc/extras/FreeType/lib/ttcmap.h:1.2 --- xc/extras/FreeType/lib/ttcmap.h:1.1.1.3 Sat Feb 12 23:55:40 2000 +++ xc/extras/FreeType/lib/ttcmap.h Sat Oct 27 23:32:05 2001 @@ -15,6 +15,7 @@ * * ******************************************************************/ +/* $XFree86: xc/extras/FreeType/lib/ttcmap.h,v 1.2 2001/10/28 03:32:05 tsi Exp $ */ #ifndef TTCMAP_H #define TTCMAP_H @@ -135,8 +136,8 @@ typedef struct TCMapTable_ TCMapTable; typedef TCMapTable* PCMapTable; +#if !defined(FTXCMAP_H) && !defined(FTXSBIT_H) - /* Load character mappings directory when face is loaded. */ /* The mappings themselves are only loaded on demand. */ @@ -156,6 +157,8 @@ LOCAL_DEF UShort CharMap_Index( PCMapTable cmap, UShort charCode ); + +#endif /* !FTXCMAP_H && !FTXSBIT_H */ /* NOTE: The PFace type isn't defined at this point */ Index: xc/extras/FreeType/lib/ttextend.h diff -u xc/extras/FreeType/lib/ttextend.h:1.1.1.2 xc/extras/FreeType/lib/ttextend.h:1.2 --- xc/extras/FreeType/lib/ttextend.h:1.1.1.2 Sat Feb 12 23:55:42 2000 +++ xc/extras/FreeType/lib/ttextend.h Sat Oct 27 23:32:05 2001 @@ -19,6 +19,7 @@ * through a simple API. * ******************************************************************/ +/* $XFree86: xc/extras/FreeType/lib/ttextend.h,v 1.2 2001/10/28 03:32:05 tsi Exp $ */ #ifndef TTEXTEND_H #define TTEXTEND_H @@ -130,7 +131,7 @@ PExt_Destructor destroy ); -#ifdef TT_CONFIG_OPTION_EXTEND_ENGINE +#if defined(TT_CONFIG_OPTION_EXTEND_ENGINE) && !defined(FTXSBIT_H) /* Initialize the extension component */ LOCAL_DEF TT_Error TTExtend_Init( PEngine_Instance engine ); Index: xc/extras/FreeType/lib/ttfile.h diff -u xc/extras/FreeType/lib/ttfile.h:1.1.1.3 xc/extras/FreeType/lib/ttfile.h:1.2 --- xc/extras/FreeType/lib/ttfile.h:1.1.1.3 Sat Feb 12 23:55:42 2000 +++ xc/extras/FreeType/lib/ttfile.h Sat Oct 27 23:32:05 2001 @@ -27,6 +27,7 @@ * (re-entrant builds only) * ******************************************************************/ +/* $XFree86: xc/extras/FreeType/lib/ttfile.h,v 1.2 2001/10/28 03:32:05 tsi Exp $ */ #ifndef TTFILE_H #define TTFILE_H @@ -40,6 +41,8 @@ extern "C" { #endif +#if !defined(FTXSBIT_H) + /* Initialize file component */ LOCAL_DEF TT_Error TTFile_Init( PEngine_Instance engine ); @@ -68,6 +71,8 @@ LOCAL_DEF TT_Error TT_Close_Stream( TT_Stream* stream ); + +#endif /* !FTXSBIT */ /* Informs the component that we're going to use the file */ Index: xc/extras/FreeType/lib/ttload.h diff -u xc/extras/FreeType/lib/ttload.h:1.1.1.2 xc/extras/FreeType/lib/ttload.h:1.2 --- xc/extras/FreeType/lib/ttload.h:1.1.1.2 Sat Feb 12 23:55:45 2000 +++ xc/extras/FreeType/lib/ttload.h Sat Oct 27 23:32:05 2001 @@ -19,6 +19,7 @@ * - add function Load_TrueType_Any used by TT_Get_Font_Data * ******************************************************************/ +/* $XFree86: xc/extras/FreeType/lib/ttload.h,v 1.2 2001/10/28 03:32:05 tsi Exp $ */ #ifndef TTLOAD_H #define TTLOAD_H @@ -34,6 +35,8 @@ EXPORT_DEF Long TT_LookUp_Table( PFace face, ULong tag ); +#if !defined(FTXSBIT_H) + LOCAL_DEF TT_Error Load_TrueType_Directory ( PFace face, ULong faceIndex ); @@ -60,6 +63,8 @@ LOCAL_DEF TT_Error Free_TrueType_Names( PFace face ); LOCAL_DEF TT_Error Free_TrueType_Hdmx ( PFace face ); + +#endif /* !FTXSBIT_H */ /* The following macros are defined to simplify the writing of */ Index: xc/extras/FreeType/lib/ttmemory.h diff -u xc/extras/FreeType/lib/ttmemory.h:1.4 xc/extras/FreeType/lib/ttmemory.h:1.5 --- xc/extras/FreeType/lib/ttmemory.h:1.4 Sun Feb 13 00:03:53 2000 +++ xc/extras/FreeType/lib/ttmemory.h Sat Oct 27 23:32:05 2001 @@ -25,7 +25,7 @@ * 'legacy' applications (all four test programs have been updated). * ******************************************************************/ -/* $XFree86: xc/extras/FreeType/lib/ttmemory.h,v 1.4 2000/02/13 05:03:53 dawes Exp $ */ +/* $XFree86: xc/extras/FreeType/lib/ttmemory.h,v 1.5 2001/10/28 03:32:05 tsi Exp $ */ #ifndef TTMEMORY_H #define TTMEMORY_H @@ -114,9 +114,12 @@ #define Init_FontPool( x, y ) while( 0 ) { } +#if !defined(FTXSBIT_H) LOCAL_DEF TT_Error TTMemory_Init( void ); LOCAL_DEF TT_Error TTMemory_Done( void ); + +#endif /* FTXSBIT_H */ #ifdef __cplusplus Index: xc/extras/FreeType/lib/ttobjs.h diff -u xc/extras/FreeType/lib/ttobjs.h:1.1.1.3 xc/extras/FreeType/lib/ttobjs.h:1.2 --- xc/extras/FreeType/lib/ttobjs.h:1.1.1.3 Sat Feb 12 23:55:48 2000 +++ xc/extras/FreeType/lib/ttobjs.h Sat Oct 27 23:32:05 2001 @@ -14,6 +14,7 @@ * understand and accept it fully. * ******************************************************************/ +/* $XFree86: xc/extras/FreeType/lib/ttobjs.h,v 1.2 2001/10/28 03:32:05 tsi Exp $ */ #ifndef TTOBJS_H #define TTOBJS_H @@ -780,6 +781,7 @@ typedef struct TFont_Input_ TFont_Input; +#if !defined(FTXCMAP_H) && !defined(FTXSBIT_H) /********************************************************************/ /* */ @@ -862,6 +864,8 @@ LOCAL_DEF TT_Error TTObjs_Init( PEngine_Instance engine ); LOCAL_DEF TT_Error TTObjs_Done( PEngine_Instance engine ); + +#endif /* !FTXCMAP_H && !FTXSBIT */ #ifdef __cplusplus } Index: xc/extras/Mesa/include/GL/osmesa.h diff -u xc/extras/Mesa/include/GL/osmesa.h:1.1 xc/extras/Mesa/include/GL/osmesa.h:1.3 --- xc/extras/Mesa/include/GL/osmesa.h:1.1 Fri Jun 16 20:02:05 2000 +++ xc/extras/Mesa/include/GL/osmesa.h Sat Oct 27 23:32:06 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/include/GL/osmesa.h,v 1.3 2001/10/28 03:32:06 tsi Exp $ */ /* * Mesa 3-D graphics library * Version: 3.3 @@ -58,7 +58,7 @@ #endif -#include "GL/gl.h" +#include #define OSMESA_MAJOR_VERSION 3 Index: xc/extras/Mesa/src/aatriangle.c diff -u xc/extras/Mesa/src/aatriangle.c:1.2 xc/extras/Mesa/src/aatriangle.c:1.3 --- xc/extras/Mesa/src/aatriangle.c:1.2 Fri May 18 20:03:18 2001 +++ xc/extras/Mesa/src/aatriangle.c Tue Dec 11 04:18:54 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/aatriangle.c,v 1.3 2001/12/11 09:18:54 alanh Exp $ */ /* * Mesa 3-D graphics library * Version: 3.3 @@ -37,6 +37,7 @@ #include "span.h" #include "types.h" #include "vb.h" +#include "mmath.h" #endif Index: xc/extras/Mesa/src/aatritemp.h diff -u xc/extras/Mesa/src/aatritemp.h:1.4 xc/extras/Mesa/src/aatritemp.h:1.5 --- xc/extras/Mesa/src/aatritemp.h:1.4 Fri May 18 12:59:53 2001 +++ xc/extras/Mesa/src/aatritemp.h Tue Dec 11 04:18:54 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/aatritemp.h,v 1.5 2001/12/11 09:18:54 alanh Exp $ */ /* * Mesa 3-D graphics library * Version: 3.3 @@ -120,7 +120,7 @@ const GLfloat area = majDx * botDy - botDx * majDy; ltor = (GLboolean) (area < 0.0F); /* Do backface culling */ - if (area * bf < 0 || area * area < .0025) + if (area * bf < 0 || area == 0 || IS_INF_OR_NAN(area) ) return; } Index: xc/extras/Mesa/src/dd.h diff -u xc/extras/Mesa/src/dd.h:1.9 xc/extras/Mesa/src/dd.h:1.11 --- xc/extras/Mesa/src/dd.h:1.9 Mon Nov 13 18:30:43 2000 +++ xc/extras/Mesa/src/dd.h Sat Oct 27 23:32:06 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/dd.h,v 1.11 2001/10/28 03:32:06 tsi Exp $ */ /* * Mesa 3-D graphics library * Version: 3.4 @@ -938,6 +938,8 @@ void (*BlendFuncSeparate)( GLcontext *ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA ); + void (*BlendConstColor)(GLcontext *ctx, GLfloat red, GLfloat green, + GLfloat blue, GLfloat alpha); void (*ClearDepth)(GLcontext *ctx, GLclampd d); void (*CullFace)(GLcontext *ctx, GLenum mode); void (*FrontFace)(GLcontext *ctx, GLenum mode); @@ -953,6 +955,7 @@ void (*LineStipple)(GLcontext *ctx, GLint factor, GLushort pattern ); void (*LineWidth)(GLcontext *ctx, GLfloat width); void (*LogicOpcode)(GLcontext *ctx, GLenum opcode); + void (*PointSize)(GLcontext *ctx, GLfloat size); void (*PolygonMode)(GLcontext *ctx, GLenum face, GLenum mode); void (*PolygonStipple)(GLcontext *ctx, const GLubyte *mask ); void (*Scissor)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h); Index: xc/extras/Mesa/src/dlist.c diff -u xc/extras/Mesa/src/dlist.c:1.8 xc/extras/Mesa/src/dlist.c:1.9 --- xc/extras/Mesa/src/dlist.c:1.8 Mon Nov 13 18:30:43 2000 +++ xc/extras/Mesa/src/dlist.c Fri Aug 17 14:40:04 2001 @@ -1152,7 +1152,7 @@ Node *n; FLUSH_VB(ctx, "dlist"); - n = alloc_instruction( ctx, OPCODE_COPY_COLOR_SUB_TABLE, 6 ); + n = alloc_instruction( ctx, OPCODE_COPY_COLOR_SUB_TABLE, 5 ); if (n) { n[1].e = target; n[2].i = start; @@ -1174,7 +1174,7 @@ Node *n; FLUSH_VB(ctx, "dlist"); - n = alloc_instruction( ctx, OPCODE_COPY_COLOR_TABLE, 6 ); + n = alloc_instruction( ctx, OPCODE_COPY_COLOR_TABLE, 5 ); if (n) { n[1].e = target; n[2].e = internalformat; @@ -1316,7 +1316,7 @@ GET_CURRENT_CONTEXT(ctx); Node *n; FLUSH_VB(ctx, "dlist"); - n = alloc_instruction( ctx, OPCODE_CONVOLUTION_PARAMETER_IV, 6 ); + n = alloc_instruction( ctx, OPCODE_CONVOLUTION_PARAMETER_FV, 6 ); if (n) { n[1].e = target; n[2].e = pname; @@ -3669,7 +3669,7 @@ return; } MEMCPY(image, data, imageSize); - n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_IMAGE_1D, 8 ); + n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_IMAGE_1D, 7 ); if (n) { n[1].e = target; n[2].i = level; @@ -3713,7 +3713,7 @@ return; } MEMCPY(image, data, imageSize); - n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_IMAGE_2D, 9 ); + n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_IMAGE_2D, 8 ); if (n) { n[1].e = target; n[2].i = level; @@ -3758,7 +3758,7 @@ return; } MEMCPY(image, data, imageSize); - n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_IMAGE_3D, 10 ); + n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_IMAGE_3D, 9 ); if (n) { n[1].e = target; n[2].i = level; @@ -3799,7 +3799,7 @@ return; } MEMCPY(image, data, imageSize); - n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_SUB_IMAGE_1D, 8 ); + n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_SUB_IMAGE_1D, 7 ); if (n) { n[1].e = target; n[2].i = level; @@ -3838,7 +3838,7 @@ return; } MEMCPY(image, data, imageSize); - n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_SUB_IMAGE_2D, 10 ); + n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_SUB_IMAGE_2D, 9 ); if (n) { n[1].e = target; n[2].i = level; @@ -3879,7 +3879,7 @@ return; } MEMCPY(image, data, imageSize); - n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_SUB_IMAGE_3D, 12 ); + n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_SUB_IMAGE_3D, 11 ); if (n) { n[1].e = target; n[2].i = level; @@ -5660,11 +5660,22 @@ fprintf(f,"Error: %s %s\n", enum_string(n[1].e), (const char *)n[2].data ); break; case OPCODE_VERTEX_CASSETTE: - fprintf(f,"VERTEX-CASSETTE, id %u, rows %u..%u\n", - ((struct immediate *) n[1].data)->id, - n[2].ui, - n[3].ui); - gl_print_cassette( (struct immediate *) n[1].data ); + { + struct immediate *IM; + fprintf(f,"VERTEX-CASSETTE, id %u, rows %u..%u\n", + ((struct immediate *) n[1].data)->id, + n[2].ui, + n[3].ui); + IM = (struct immediate *) n[1].data; + IM->Start = n[2].ui; + IM->Count = n[3].ui; + IM->BeginState = n[4].ui; + IM->OrFlag = n[5].ui; + IM->AndFlag = n[6].ui; + IM->LastData = n[7].ui; + IM->LastPrimitive = n[8].ui; + gl_print_cassette( (struct immediate *) n[1].data ); + } break; case OPCODE_CONTINUE: fprintf(f,"DISPLAY-LIST-CONTINUE\n"); Index: xc/extras/Mesa/src/enums.c diff -u xc/extras/Mesa/src/enums.c:1.8 xc/extras/Mesa/src/enums.c:1.9 --- xc/extras/Mesa/src/enums.c:1.8 Sun Jan 7 20:07:13 2001 +++ xc/extras/Mesa/src/enums.c Fri Aug 17 14:40:04 2001 @@ -862,6 +862,9 @@ index1 = (enum_elt **)MALLOC( Elements(all_enums) * sizeof(enum_elt *) ); sorted = 1; + if (!index1) + return; /* what else can we do? */ + qsort( all_enums, Elements(all_enums), sizeof(*all_enums), (cfunc) compar_name ); Index: xc/extras/Mesa/src/glapi.c diff -u xc/extras/Mesa/src/glapi.c:1.9 xc/extras/Mesa/src/glapi.c:1.10 --- xc/extras/Mesa/src/glapi.c:1.9 Mon Nov 13 18:30:46 2000 +++ xc/extras/Mesa/src/glapi.c Wed Dec 19 10:44:34 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/glapi.c,v 1.10 2001/12/19 15:44:34 tsi Exp $ */ /* * Mesa 3-D graphics library * Version: 3.4 @@ -1738,6 +1738,7 @@ void _glapi_check_table(const struct _glapi_table *table) { +#ifdef DEBUG const GLuint entries = _glapi_get_dispatch_table_size(); const void **tab = (const void **) table; GLuint i; @@ -1745,7 +1746,6 @@ assert(tab[i]); } -#ifdef DEBUG /* Do some spot checks to be sure that the dispatch table * slots are assigned correctly. */ Index: xc/extras/Mesa/src/glthread.h diff -u xc/extras/Mesa/src/glthread.h:1.2 xc/extras/Mesa/src/glthread.h:1.3 --- xc/extras/Mesa/src/glthread.h:1.2 Tue Feb 15 02:12:19 2000 +++ xc/extras/Mesa/src/glthread.h Sat Oct 27 23:32:06 2001 @@ -22,8 +22,8 @@ * AN ACTION 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/extras/Mesa/src/glthread.h,v 1.3 2001/10/28 03:32:06 tsi Exp $ */ - /* * Thread support for gl dispatch. * @@ -184,8 +184,13 @@ typedef xmutex_rec _glthread_Mutex; +#ifdef XMUTEX_INITIALIZER #define _glthread_DECLARE_STATIC_MUTEX(name) \ static _glthread_Mutex name = XMUTEX_INITIALIZER +#else +#define _glthread_DECLARE_STATIC_MUTEX(name) \ + static _glthread_Mutex name +#endif #define _glthread_INIT_MUTEX(name) \ xmutex_init(&(name)) Index: xc/extras/Mesa/src/lines.c diff -u xc/extras/Mesa/src/lines.c:1.7 xc/extras/Mesa/src/lines.c:1.9 --- xc/extras/Mesa/src/lines.c:1.7 Mon Nov 13 18:30:49 2000 +++ xc/extras/Mesa/src/lines.c Wed Nov 14 05:28:07 2001 @@ -557,6 +557,7 @@ GLuint vert0, GLuint vert1, GLuint pvert ) { const GLubyte *color = ctx->VB->ColorPtr->data[pvert]; + GLuint count; PB_SET_COLOR( ctx->PB, color[0], color[1], color[2], color[3] ); if (ctx->Line.StippleFlag) { @@ -565,7 +566,10 @@ #define INTERP_Z 1 #define WIDE 1 #define STIPPLE 1 -#define PLOT(X,Y) PB_WRITE_PIXEL(ctx->PB, X, Y, Z); +#define PLOT(X,Y) \ + PB_WRITE_PIXEL(ctx->PB, X, Y, Z); \ + count = ctx->PB->count; \ + CHECK_FULL(count); #include "linetemp.h" } else { @@ -585,7 +589,10 @@ #define INTERP_XY 1 #define INTERP_Z 1 #define WIDE 1 -#define PLOT(X,Y) PB_WRITE_PIXEL(ctx->PB, X, Y, Z); +#define PLOT(X,Y) \ + PB_WRITE_PIXEL(ctx->PB, X, Y, Z); \ + count = ctx->PB->count; \ + CHECK_FULL(count); #include "linetemp.h" } } @@ -968,6 +975,23 @@ GLuint vert0, GLuint vert1, GLuint pvert ) { #define INTERP_RGBA 1 +#define INTERP_STUV0 1 +#define INTERP_STUV1 1 +#define PLOT(x, y) \ + { \ + PB_WRITE_MULTITEX_PIXEL( pb, (x), (y), z, \ + red, green, blue, coverage, \ + s, t, u, s1, t1, u1 ); \ + } +#include "lnaatemp.h" +} + + +/* As above but with separate specular */ +static void aa_multitex_spec_line( GLcontext *ctx, + GLuint vert0, GLuint vert1, GLuint pvert ) +{ +#define INTERP_RGBA 1 #define INTERP_SPEC 1 #define INTERP_STUV0 1 #define INTERP_STUV1 1 @@ -1052,6 +1076,8 @@ printf("aa_tex_rgba_line\n"); else if (ctx->Driver.LineFunc == aa_multitex_rgba_line) printf("aa_multitex_rgba_line\n"); + else if (ctx->Driver.LineFunc == aa_multitex_spec_line) + printf("aa_multitex_spec_line\n"); else if (ctx->Driver.LineFunc == aa_ci_line) printf("aa_ci_line\n"); else if (ctx->Driver.LineFunc == null_line) @@ -1086,12 +1112,16 @@ /* antialiased lines */ if (rgbmode) { if (ctx->Texture.ReallyEnabled) { - if (ctx->Texture.ReallyEnabled >= TEXTURE1_1D - || ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR) + if (ctx->Texture.ReallyEnabled >= TEXTURE1_1D) { /* Multitextured! */ - ctx->Driver.LineFunc = aa_multitex_rgba_line; - else + if (ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR) + ctx->Driver.LineFunc = aa_multitex_spec_line; + else + ctx->Driver.LineFunc = aa_multitex_rgba_line; + } + else { ctx->Driver.LineFunc = aa_tex_rgba_line; + } } else { ctx->Driver.LineFunc = aa_rgba_line; } Index: xc/extras/Mesa/src/linetemp.h diff -u xc/extras/Mesa/src/linetemp.h:1.10 xc/extras/Mesa/src/linetemp.h:1.11 --- xc/extras/Mesa/src/linetemp.h:1.10 Mon Nov 13 18:30:49 2000 +++ xc/extras/Mesa/src/linetemp.h Tue Dec 11 04:18:54 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/linetemp.h,v 1.11 2001/12/11 09:18:54 alanh Exp $ */ /* * Mesa 3-D graphics library * Version: 3.1 @@ -179,6 +179,17 @@ } } #endif + + /* Cull primitives with malformed coordinates. + */ + { + float tmp = VB->Win.data[vert0][0] + + VB->Win.data[vert0][1] + + VB->Win.data[vert1][0] + + VB->Win.data[vert1][1]; + if (IS_INF_OR_NAN(tmp)) + return; + } /* * Despite being clipped to the view volume, the line's window coordinates Index: xc/extras/Mesa/src/lnaatemp.h diff -u xc/extras/Mesa/src/lnaatemp.h:1.12 xc/extras/Mesa/src/lnaatemp.h:1.14 --- xc/extras/Mesa/src/lnaatemp.h:1.12 Mon Nov 13 18:30:49 2000 +++ xc/extras/Mesa/src/lnaatemp.h Tue Dec 11 04:18:54 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/lnaatemp.h,v 1.14 2001/12/11 09:18:54 alanh Exp $ */ /* * Mesa 3-D graphics library * Version: 3.3 @@ -65,14 +65,14 @@ #define FixedToDepth(F) ((F) >> fixedToDepthShift) #ifdef INTERP_RGBA GLfixed fr, fg, fb, fa; /* fixed-pt RGBA */ - GLfixed dfr, dfg, dfb, dfa; /* fixed-pt RGBA deltas */ + GLfixed dfr = 0, dfg = 0, dfb = 0, dfa = 0; /* fixed-pt RGBA deltas */ #endif #ifdef INTERP_SPEC GLfixed fsr, fsg, fsb; /* fixed-pt specular RGBA */ - GLfixed dfsr, dfsg, dfsb; /* fixed-pt specular RGBA deltas */ + GLfixed dfsr = 0, dfsg = 0, dfsb = 0; /* fixed-pt specular RGBA deltas */ #endif #ifdef INTERP_INDEX - GLfixed fi, dfi; + GLfixed fi, dfi = 0; #endif #if defined(INTERP_STUV0) || defined(INTERP_STUV1) GLfloat invw0 = VB->Win.data[vert0][3]; @@ -95,6 +95,17 @@ GLfloat hu01 = 0, dhu1 = 0; GLfloat hv01 = invw0, dhv1 = invw1 - invw0; #endif + + /* Cull primitives with malformed coordinates. + */ + { + float tmp = VB->Win.data[vert0][0] + + VB->Win.data[vert0][1] + + VB->Win.data[vert1][0] + + VB->Win.data[vert1][1]; + if (IS_INF_OR_NAN(tmp)) + return; + } if (dx == 0 && dy == 0) return; Index: xc/extras/Mesa/src/macros.h diff -u xc/extras/Mesa/src/macros.h:1.4 xc/extras/Mesa/src/macros.h:1.5 --- xc/extras/Mesa/src/macros.h:1.4 Tue Mar 20 22:02:18 2001 +++ xc/extras/Mesa/src/macros.h Fri Aug 17 14:40:04 2001 @@ -355,18 +355,22 @@ /* * Copy a vector of 4 GLubytes from SRC to DST. */ +#if defined(__i386__) #define COPY_4UBV(DST, SRC) \ do { \ - if (sizeof(GLuint)==4*sizeof(GLubyte)) { \ - *((GLuint*)(DST)) = *((GLuint*)(SRC)); \ - } \ - else { \ - (DST)[0] = (SRC)[0]; \ - (DST)[1] = (SRC)[1]; \ - (DST)[2] = (SRC)[2]; \ - (DST)[3] = (SRC)[3]; \ - } \ + *((GLuint*)(DST)) = *((GLuint*)(SRC)); \ } while (0) +#else +/* The GLuint cast might fail if DST or SRC are not dword-aligned (RISC) */ +#define COPY_4UBV(DST, SRC) \ +do { \ + (DST)[0] = (SRC)[0]; \ + (DST)[1] = (SRC)[1]; \ + (DST)[2] = (SRC)[2]; \ + (DST)[3] = (SRC)[3]; \ +} while (0) +#endif + /* Assign scalers to short vectors: */ Index: xc/extras/Mesa/src/mmath.c diff -u xc/extras/Mesa/src/mmath.c:1.4 xc/extras/Mesa/src/mmath.c:1.5 --- xc/extras/Mesa/src/mmath.c:1.4 Fri Jun 16 20:02:14 2000 +++ xc/extras/Mesa/src/mmath.c Tue Dec 11 04:18:54 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/mmath.c,v 1.5 2001/12/11 09:18:54 alanh Exp $ */ /* * Mesa 3-D graphics library * Version: 3.3 @@ -28,6 +28,7 @@ #include "all.h" #else #include "glheader.h" +#include "macros.h" #include "mmath.h" #endif Index: xc/extras/Mesa/src/mmath.h diff -u xc/extras/Mesa/src/mmath.h:1.8 xc/extras/Mesa/src/mmath.h:1.15 --- xc/extras/Mesa/src/mmath.h:1.8 Tue Apr 10 12:07:48 2001 +++ xc/extras/Mesa/src/mmath.h Mon Jan 7 12:26:06 2002 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/mmath.h,v 1.15 2002/01/07 17:26:06 alanh Exp $ */ /* * Mesa 3-D graphics library * Version: 3.4 @@ -232,8 +232,9 @@ * GLubyte b = FloatToInt(CLAMP(f, 0, 1) * 255) */ -#if defined(__i386__) || defined(__sparc__) || ( defined(__alpha__) && \ - ( defined( __IEEE_FLOAT ) || !defined( VMS ) ) ) +#if defined(__i386__) || defined(__sparc__) || defined(__s390x__) || \ + defined(__ppc__) || defined(__powerpc__) || \ + ( defined(__alpha__) && ( defined( __IEEE_FLOAT ) || !defined( VMS ) ) ) #define USE_IEEE #define IEEE_ONE 0x3f7f0000 #endif @@ -285,6 +286,17 @@ #endif +#ifdef USE_IEEE +/* Returns TRUE for x == Inf or x == NaN. */ +static INLINE int IS_INF_OR_NAN( float x ) +{ + union {float f; int i;} tmp; + tmp.f = x; + return !(int)((unsigned int)((tmp.i & 0x7fffffff)-0x7f800000) >> 31); +} +#else +#define IS_INF_OR_NAN(x) (!finite(x)) +#endif extern float gl_ubyte_to_float_color_tab[256]; extern float gl_ubyte_to_float_255_color_tab[256]; Index: xc/extras/Mesa/src/pixel.c diff -u xc/extras/Mesa/src/pixel.c:1.5 xc/extras/Mesa/src/pixel.c:1.6 --- xc/extras/Mesa/src/pixel.c:1.5 Mon Nov 13 16:55:34 2000 +++ xc/extras/Mesa/src/pixel.c Fri Aug 17 14:40:04 2001 @@ -721,10 +721,14 @@ const GLfloat *aMap = ctx->Pixel.MapAtoA; GLuint i; for (i=0;iTableType == GL_UNSIGNED_BYTE) { - const GLfloat scale = (GLfloat) (table->Size - 1); + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; const GLubyte *lut = (const GLubyte *) table->Table; GLuint i; for (i = 0; i < n; i++) { GLint j = (GLint) (rgba[i][RCOMP] * scale + 0.5F); - GLfloat c = lut[j] * (1.0F / 255.0F); + GLfloat c = lut[CLAMP(j, 0, max)] * (1.0F / 255.0F); rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = rgba[i][ACOMP] = c; } } else { - const GLfloat scale = (GLfloat) (table->Size - 1); + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; const GLfloat *lut = (const GLfloat *) table->Table; GLuint i; for (i = 0; i < n; i++) { GLint j = (GLint) (rgba[i][RCOMP] * scale + 0.5F); - GLfloat c = lut[j]; + GLfloat c = lut[CLAMP(j, 0, max)]; rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = rgba[i][ACOMP] = c; } @@ -799,22 +805,24 @@ case GL_LUMINANCE: /* replace RGB with L */ if (table->TableType == GL_UNSIGNED_BYTE) { - const GLfloat scale = (GLfloat) (table->Size - 1); + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; const GLubyte *lut = (const GLubyte *) table->Table; GLuint i; for (i = 0; i < n; i++) { GLint j = (GLint) (rgba[i][RCOMP] * scale + 0.5F); - GLfloat c = lut[j] * (1.0F / 255.0F); + GLfloat c = lut[CLAMP(j, 0, max)] * (1.0F / 255.0F); rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = c; } } else { - const GLfloat scale = (GLfloat) (table->Size - 1); + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; const GLfloat *lut = (const GLfloat *) table->Table; GLuint i; for (i = 0; i < n; i++) { GLint j = (GLint) (rgba[i][RCOMP] * scale + 0.5F); - GLfloat c = lut[j]; + GLfloat c = lut[CLAMP(j, 0, max)]; rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = c; } } @@ -822,48 +830,58 @@ case GL_ALPHA: /* replace A with A */ if (table->TableType == GL_UNSIGNED_BYTE) { - const GLfloat scale = (GLfloat) (table->Size - 1); + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; const GLubyte *lut = (const GLubyte *) table->Table; GLuint i; for (i = 0; i < n; i++) { GLint j = (GLint) (rgba[i][ACOMP] * scale + 0.5F); - rgba[i][ACOMP] = lut[j] * (1.0F / 255.0F); + rgba[i][ACOMP] = lut[CLAMP(j, 0, max)] * (1.0F / 255.0F); } } else { - const GLfloat scale = (GLfloat) (table->Size - 1); + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; const GLfloat *lut = (const GLfloat *) table->Table; GLuint i; for (i = 0; i < n; i++) { GLint j = (GLint) (rgba[i][ACOMP] * scale + 0.5F); - rgba[i][ACOMP] = lut[j]; + rgba[i][ACOMP] = lut[CLAMP(j, 0, max)]; } } break; case GL_LUMINANCE_ALPHA: /* replace RGBA with LLLA */ if (table->TableType == GL_UNSIGNED_BYTE) { - const GLfloat scale = (GLfloat) (table->Size - 1); + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; const GLubyte *lut = (const GLubyte *) table->Table; GLuint i; for (i = 0; i < n; i++) { GLint jL = (GLint) (rgba[i][RCOMP] * scale + 0.5F); GLint jA = (GLint) (rgba[i][ACOMP] * scale + 0.5F); - GLfloat luminance = lut[jL * 2 + 0] * (1.0F / 255.0F); - GLfloat alpha = lut[jA * 2 + 1] * (1.0F / 255.0F); + GLfloat luminance, alpha; + jL = CLAMP(jL, 0, max); + jA = CLAMP(jA, 0, max); + luminance = lut[jL * 2 + 0] * (1.0F / 255.0F); + alpha = lut[jA * 2 + 1] * (1.0F / 255.0F); rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = luminance; rgba[i][ACOMP] = alpha;; } } else { - const GLfloat scale = (GLfloat) (table->Size - 1); + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; const GLfloat *lut = (const GLfloat *) table->Table; GLuint i; for (i = 0; i < n; i++) { GLint jL = (GLint) (rgba[i][RCOMP] * scale + 0.5F); GLint jA = (GLint) (rgba[i][ACOMP] * scale + 0.5F); - GLfloat luminance = lut[jL * 2 + 0]; - GLfloat alpha = lut[jA * 2 + 1]; + GLfloat luminance, alpha; + jL = CLAMP(jL, 0, max); + jA = CLAMP(jA, 0, max); + luminance = lut[jL * 2 + 0]; + alpha = lut[jA * 2 + 1]; rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = luminance; rgba[i][ACOMP] = alpha;; } @@ -872,26 +890,34 @@ case GL_RGB: /* replace RGB with RGB */ if (table->TableType == GL_UNSIGNED_BYTE) { - const GLfloat scale = (GLfloat) (table->Size - 1); + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; const GLubyte *lut = (const GLubyte *) table->Table; GLuint i; for (i = 0; i < n; i++) { GLint jR = (GLint) (rgba[i][RCOMP] * scale + 0.5F); GLint jG = (GLint) (rgba[i][GCOMP] * scale + 0.5F); GLint jB = (GLint) (rgba[i][BCOMP] * scale + 0.5F); + jR = CLAMP(jR, 0, max); + jG = CLAMP(jG, 0, max); + jB = CLAMP(jB, 0, max); rgba[i][RCOMP] = lut[jR * 3 + 0] * (1.0F / 255.0F); rgba[i][GCOMP] = lut[jG * 3 + 1] * (1.0F / 255.0F); rgba[i][BCOMP] = lut[jB * 3 + 2] * (1.0F / 255.0F); } } else { - const GLfloat scale = (GLfloat) (table->Size - 1); + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; const GLfloat *lut = (const GLfloat *) table->Table; GLuint i; for (i = 0; i < n; i++) { GLint jR = (GLint) (rgba[i][RCOMP] * scale + 0.5F); GLint jG = (GLint) (rgba[i][GCOMP] * scale + 0.5F); GLint jB = (GLint) (rgba[i][BCOMP] * scale + 0.5F); + jR = CLAMP(jR, 0, max); + jG = CLAMP(jG, 0, max); + jB = CLAMP(jB, 0, max); rgba[i][RCOMP] = lut[jR * 3 + 0]; rgba[i][GCOMP] = lut[jG * 3 + 1]; rgba[i][BCOMP] = lut[jB * 3 + 2]; @@ -901,7 +927,8 @@ case GL_RGBA: /* replace RGBA with RGBA */ if (table->TableType == GL_UNSIGNED_BYTE) { - const GLfloat scale = (GLfloat) (table->Size - 1); + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; const GLubyte *lut = (const GLubyte *) table->Table; GLuint i; for (i = 0; i < n; i++) { @@ -909,6 +936,10 @@ GLint jG = (GLint) (rgba[i][GCOMP] * scale + 0.5F); GLint jB = (GLint) (rgba[i][BCOMP] * scale + 0.5F); GLint jA = (GLint) (rgba[i][ACOMP] * scale + 0.5F); + jR = CLAMP(jR, 0, max); + jG = CLAMP(jG, 0, max); + jB = CLAMP(jB, 0, max); + jA = CLAMP(jA, 0, max); rgba[i][RCOMP] = lut[jR * 4 + 0] * (1.0F / 255.0F); rgba[i][GCOMP] = lut[jG * 4 + 1] * (1.0F / 255.0F); rgba[i][BCOMP] = lut[jB * 4 + 2] * (1.0F / 255.0F); @@ -916,7 +947,8 @@ } } else { - const GLfloat scale = (GLfloat) (table->Size - 1); + const GLint max = table->Size - 1; + const GLfloat scale = (GLfloat) max; const GLfloat *lut = (const GLfloat *) table->Table; GLuint i; for (i = 0; i < n; i++) { @@ -924,6 +956,10 @@ GLint jG = (GLint) (rgba[i][GCOMP] * scale + 0.5F); GLint jB = (GLint) (rgba[i][BCOMP] * scale + 0.5F); GLint jA = (GLint) (rgba[i][ACOMP] * scale + 0.5F); + jR = CLAMP(jR, 0, max); + jG = CLAMP(jG, 0, max); + jB = CLAMP(jB, 0, max); + jA = CLAMP(jA, 0, max); rgba[i][RCOMP] = lut[jR * 4 + 0]; rgba[i][GCOMP] = lut[jG * 4 + 1]; rgba[i][BCOMP] = lut[jB * 4 + 2]; Index: xc/extras/Mesa/src/points.c diff -u xc/extras/Mesa/src/points.c:1.7 xc/extras/Mesa/src/points.c:1.8 --- xc/extras/Mesa/src/points.c:1.7 Mon Nov 13 18:30:50 2000 +++ xc/extras/Mesa/src/points.c Tue Dec 11 04:18:54 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/points.c,v 1.8 2001/12/11 09:18:54 alanh Exp $ */ /* * Mesa 3-D graphics library * Version: 3.4 @@ -162,6 +162,8 @@ win = &VB->Win.data[first][0]; for (i = first; i < last; i++) { if (VB->ClipMask[i] == 0) { + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; pbx[pbcount] = (GLint) win[0]; pby[pbcount] = (GLint) win[1]; pbz[pbcount] = (GLint) (win[2] + ctx->PointZoffset); @@ -190,10 +192,14 @@ if (VB->ClipMask[i] == 0) { GLint x, y, z; GLint red, green, blue, alpha; + GLfloat *win = VB->Win.data[i]; + + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; - x = (GLint) VB->Win.data[i][0]; - y = (GLint) VB->Win.data[i][1]; - z = (GLint) (VB->Win.data[i][2] + ctx->PointZoffset); + x = (GLint) win[0]; + y = (GLint) win[1]; + z = (GLint) (win[2] + ctx->PointZoffset); red = VB->ColorPtr->data[i][0]; green = VB->ColorPtr->data[i][1]; @@ -224,10 +230,13 @@ if (VB->ClipMask[i] == 0) { GLint x0, x1, y0, y1; GLint ix, iy; + GLfloat *win = VB->Win.data[i]; + GLint x = (GLint) win[0]; + GLint y = (GLint) win[1]; + GLint z = (GLint) (win[2] + ctx->PointZoffset); - GLint x = (GLint) VB->Win.data[i][0]; - GLint y = (GLint) VB->Win.data[i][1]; - GLint z = (GLint) (VB->Win.data[i][2] + ctx->PointZoffset); + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; if (isize & 1) { /* odd size */ @@ -273,10 +282,13 @@ if (VB->ClipMask[i] == 0) { GLint x0, x1, y0, y1; GLint ix, iy; + GLfloat *win = VB->Win.data[i]; + GLint x = (GLint) win[0]; + GLint y = (GLint) win[1]; + GLint z = (GLint) (win[2] + ctx->PointZoffset); - GLint x = (GLint) VB->Win.data[i][0]; - GLint y = (GLint) VB->Win.data[i][1]; - GLint z = (GLint) (VB->Win.data[i][2] + ctx->PointZoffset); + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; if (isize & 1) { /* odd size */ @@ -328,11 +340,14 @@ GLint ix, iy, radius; GLint red, green, blue, alpha; GLfloat s, t, u; - - GLint x = (GLint) VB->Win.data[i][0]; - GLint y = (GLint) VB->Win.data[i][1]; - GLint z = (GLint) (VB->Win.data[i][2] + ctx->PointZoffset); GLint isize = (GLint) (ctx->Point.Size + 0.5F); + GLfloat *win = VB->Win.data[i]; + GLint x = (GLint) win[0]; + GLint y = (GLint) win[1]; + GLint z = (GLint) (win[2] + ctx->PointZoffset); + + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; if (isize < 1) { isize = 1; @@ -418,11 +433,14 @@ GLint sRed, sGreen, sBlue; GLfloat s, t, u; GLfloat s1, t1, u1; - - GLint x = (GLint) VB->Win.data[i][0]; - GLint y = (GLint) VB->Win.data[i][1]; - GLint z = (GLint) (VB->Win.data[i][2] + ctx->PointZoffset); GLint isize = (GLint) (ctx->Point.Size + 0.5F); + GLfloat *win = VB->Win.data[i]; + GLint x = (GLint) win[0]; + GLint y = (GLint) win[1]; + GLint z = (GLint) (win[2] + ctx->PointZoffset); + + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; if (isize < 1) { isize = 1; @@ -556,14 +574,18 @@ GLint red, green, blue, alpha; GLfloat s = 0.0F, t = 0.0F, u = 0.0F; GLfloat s1 = 0.0F, t1 = 0.0F, u1 = 0.0F; - GLfloat vx = VB->Win.data[i][0]; - GLfloat vy = VB->Win.data[i][1]; + GLfloat *win = VB->Win.data[i]; + GLfloat vx = win[0]; + GLfloat vy = win[1]; GLint xmin = (GLint) (vx - radius); GLint xmax = (GLint) (vx + radius); GLint ymin = (GLint) (vy - radius); GLint ymax = (GLint) (vy + radius); - GLint z = (GLint) (VB->Win.data[i][2] + ctx->PointZoffset); + GLint z = (GLint) (win[2] + ctx->PointZoffset); + + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; red = VB->ColorPtr->data[i][0]; green = VB->ColorPtr->data[i][1]; @@ -671,25 +693,29 @@ GLint xmin, ymin, xmax, ymax; GLint x, y, z; GLint red, green, blue, alpha; + GLfloat *win = VB->Win.data[i]; - xmin = (GLint) (VB->Win.data[i][0] - 0.0 - radius); - xmax = (GLint) (VB->Win.data[i][0] - 0.0 + radius); - ymin = (GLint) (VB->Win.data[i][1] - 0.0 - radius); - ymax = (GLint) (VB->Win.data[i][1] - 0.0 + radius); - z = (GLint) (VB->Win.data[i][2] + ctx->PointZoffset); + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; + xmin = (GLint) (win[0] - 0.0 - radius); + xmax = (GLint) (win[0] - 0.0 + radius); + ymin = (GLint) (win[1] - 0.0 - radius); + ymax = (GLint) (win[1] - 0.0 + radius); + z = (GLint) (win[2] + ctx->PointZoffset); + red = VB->ColorPtr->data[i][0]; green = VB->ColorPtr->data[i][1]; blue = VB->ColorPtr->data[i][2]; /* - printf("point %g, %g\n", VB->Win.data[i][0], VB->Win.data[i][1]); + printf("point %g, %g\n", win[0], win[1]); printf("%d..%d X %d..%d\n", xmin, xmax, ymin, ymax); */ for (y = ymin; y <= ymax; y++) { for (x = xmin; x <= xmax; x++) { - const GLfloat dx = x + 0.5F - VB->Win.data[i][0]; - const GLfloat dy = y + 0.5F - VB->Win.data[i][1]; + const GLfloat dx = x + 0.5F - win[0]; + const GLfloat dy = y + 0.5F - win[1]; const GLfloat dist2 = dx*dx + dy*dy; if (dist2 < rmax2) { alpha = VB->ColorPtr->data[i][3]; @@ -828,11 +854,15 @@ GLint x0, x1, y0, y1; GLint ix, iy; GLint isize, radius; - GLint x = (GLint) VB->Win.data[i][0]; - GLint y = (GLint) VB->Win.data[i][1]; - GLint z = (GLint) (VB->Win.data[i][2] + ctx->PointZoffset); + GLfloat *win = VB->Win.data[i]; + GLint x = (GLint) win[0]; + GLint y = (GLint) win[1]; + GLint z = (GLint) (win[2] + ctx->PointZoffset); GLfloat dsize = psize * dist[i]; + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; + if (dsize >= ctx->Point.Threshold) { isize = (GLint) (MIN2(dsize, ctx->Point.MaxSize) + 0.5F); } @@ -890,12 +920,16 @@ GLint x0, x1, y0, y1; GLint ix, iy; GLint isize, radius; - GLint x = (GLint) VB->Win.data[i][0]; - GLint y = (GLint) VB->Win.data[i][1]; - GLint z = (GLint) (VB->Win.data[i][2] + ctx->PointZoffset); + GLfloat *win = VB->Win.data[i]; + GLint x = (GLint) win[0]; + GLint y = (GLint) win[1]; + GLint z = (GLint) (win[2] + ctx->PointZoffset); GLfloat dsize=psize*dist[i]; GLubyte alpha; + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; + if (dsize >= ctx->Point.Threshold) { isize = (GLint) (MIN2(dsize,ctx->Point.MaxSize)+0.5F); alpha = VB->ColorPtr->data[i][3]; @@ -963,12 +997,15 @@ GLint red, green, blue, alpha; GLfloat s = 0.0F, t = 0.0F, u = 0.0F; GLfloat s1 = 0.0F, t1 = 0.0F, u1 = 0.0F; + GLfloat *win = VB->Win.data[i]; + GLint x = (GLint) win[0]; + GLint y = (GLint) win[1]; + GLint z = (GLint) (win[2] + ctx->PointZoffset); + GLfloat dsize = psize*dist[i]; - GLint x = (GLint) VB->Win.data[i][0]; - GLint y = (GLint) VB->Win.data[i][1]; - GLint z = (GLint) (VB->Win.data[i][2] + ctx->PointZoffset); + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; - GLfloat dsize = psize*dist[i]; if(dsize >= ctx->Point.Threshold) { isize = (GLint) (MIN2(dsize, ctx->Point.MaxSize) + 0.5F); alpha = VB->ColorPtr->data[i][3]; @@ -1112,6 +1149,10 @@ GLfloat s = 0.0F, t = 0.0F, u = 0.0F; GLfloat s1 = 0.0F, t1 = 0.0F, u1 = 0.0F; GLfloat dsize = psize * dist[i]; + GLfloat *win = VB->Win.data[i]; + + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; if (dsize >= ctx->Point.Threshold) { radius = MIN2(dsize, ctx->Point.MaxSize) * 0.5F; @@ -1128,11 +1169,11 @@ rmax2 = rmax * rmax; cscale = 256.0F / (rmax2 - rmin2); - xmin = (GLint) (VB->Win.data[i][0] - radius); - xmax = (GLint) (VB->Win.data[i][0] + radius); - ymin = (GLint) (VB->Win.data[i][1] - radius); - ymax = (GLint) (VB->Win.data[i][1] + radius); - z = (GLint) (VB->Win.data[i][2] + ctx->PointZoffset); + xmin = (GLint) (win[0] - radius); + xmax = (GLint) (win[0] + radius); + ymin = (GLint) (win[1] - radius); + ymax = (GLint) (win[1] + radius); + z = (GLint) (win[2] + ctx->PointZoffset); red = VB->ColorPtr->data[i][0]; green = VB->ColorPtr->data[i][1]; @@ -1204,8 +1245,8 @@ for (y = ymin; y <= ymax; y++) { for (x = xmin; x <= xmax; x++) { - const GLfloat dx = x + 0.5F - VB->Win.data[i][0]; - const GLfloat dy = y + 0.5F - VB->Win.data[i][1]; + const GLfloat dx = x + 0.5F - win[0]; + const GLfloat dy = y + 0.5F - win[1]; const GLfloat dist2 = dx*dx + dy*dy; if (dist2 < rmax2) { alpha = VB->ColorPtr->data[i][3]; @@ -1238,6 +1279,10 @@ GLint x, y, z; GLint red, green, blue, alpha; GLfloat dsize = psize * dist[i]; + GLfloat *win = VB->Win.data[i]; + + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; if (dsize >= ctx->Point.Threshold) { radius = MIN2(dsize, ctx->Point.MaxSize) * 0.5F; @@ -1254,11 +1299,11 @@ rmax2 = rmax * rmax; cscale = 256.0F / (rmax2 - rmin2); - xmin = (GLint) (VB->Win.data[i][0] - radius); - xmax = (GLint) (VB->Win.data[i][0] + radius); - ymin = (GLint) (VB->Win.data[i][1] - radius); - ymax = (GLint) (VB->Win.data[i][1] + radius); - z = (GLint) (VB->Win.data[i][2] + ctx->PointZoffset); + xmin = (GLint) (win[0] - radius); + xmax = (GLint) (win[0] + radius); + ymin = (GLint) (win[1] - radius); + ymax = (GLint) (win[1] + radius); + z = (GLint) (win[2] + ctx->PointZoffset); red = VB->ColorPtr->data[i][0]; green = VB->ColorPtr->data[i][1]; @@ -1266,8 +1311,8 @@ for (y = ymin; y <= ymax; y++) { for (x = xmin; x <= xmax; x++) { - const GLfloat dx = x + 0.5F - VB->Win.data[i][0]; - const GLfloat dy = y + 0.5F - VB->Win.data[i][1]; + const GLfloat dx = x + 0.5F - win[0]; + const GLfloat dy = y + 0.5F - win[1]; const GLfloat dist2 = dx * dx + dy * dy; if (dist2 < rmax2) { alpha = VB->ColorPtr->data[i][3]; Index: xc/extras/Mesa/src/stencil.c diff -u xc/extras/Mesa/src/stencil.c:1.7 xc/extras/Mesa/src/stencil.c:1.8 --- xc/extras/Mesa/src/stencil.c:1.7 Fri May 18 13:28:52 2001 +++ xc/extras/Mesa/src/stencil.c Mon Jan 7 13:17:03 2002 @@ -1180,6 +1180,8 @@ _mesa_write_stencil_span( GLcontext *ctx, GLint n, GLint x, GLint y, const GLstencil stencil[] ) { + const GLstencil *ssrc = stencil; + if (y < 0 || y >= ctx->DrawBuffer->Height || x + n <= 0 || x >= ctx->DrawBuffer->Width) { /* span is completely outside framebuffer */ @@ -1190,7 +1192,7 @@ GLint dx = -x; x = 0; n -= dx; - stencil += dx; + ssrc += dx; } if (x + n > ctx->DrawBuffer->Width) { GLint dx = x + n - ctx->DrawBuffer->Width; @@ -1201,16 +1203,16 @@ } if (ctx->Driver.WriteStencilSpan) { - (*ctx->Driver.WriteStencilSpan)( ctx, n, x, y, stencil, NULL ); + (*ctx->Driver.WriteStencilSpan)( ctx, n, x, y, ssrc, NULL ); } else if (ctx->DrawBuffer->Stencil) { GLstencil *s = STENCIL_ADDRESS( x, y ); #if STENCIL_BITS == 8 - MEMCPY( s, stencil, n * sizeof(GLstencil) ); + MEMCPY( s, ssrc, n * sizeof(GLstencil) ); #else GLuint i; for (i=0;iMinFilter; \ GLint envmode = unit->EnvMode; \ GLint comp, tbytesline, tsize; \ - GLfixed er, eg, eb, ea; \ + GLfixed er = 0, eg = 0, eb = 0, ea = 0; \ GLint tr, tg, tb, ta; \ if (!texture) { \ if (!_mesa_get_teximages_from_driver(ctx, obj)) \ @@ -666,7 +666,7 @@ GLint envmode = unit->EnvMode; \ GLfloat sscale, tscale; \ GLint comp, tbytesline, tsize; \ - GLfixed er, eg, eb, ea; \ + GLfixed er = 0, eg = 0, eb = 0, ea = 0; \ GLint tr, tg, tb, ta; \ if (!texture) { \ if (!_mesa_get_teximages_from_driver(ctx, obj)) \ @@ -891,7 +891,7 @@ #define INTERP_STUV 1 #define SETUP_CODE \ GLboolean flat_shade = (ctx->Light.ShadeModel==GL_FLAT); \ - GLint r, g, b, a; \ + GLint r = 0, g = 0, b = 0, a = 0; \ if (flat_shade) { \ r = VB->ColorPtr->data[pv][0]; \ g = VB->ColorPtr->data[pv][1]; \ @@ -977,7 +977,7 @@ #define INTERP_STUV 1 #define SETUP_CODE \ GLboolean flat_shade = (ctx->Light.ShadeModel==GL_FLAT); \ - GLint r, g, b, a, sr, sg, sb; \ + GLint r = 0, g = 0, b = 0, a = 0, sr = 0, sg = 0, sb = 0; \ if (flat_shade) { \ r = VB->ColorPtr->data[pv][0]; \ g = VB->ColorPtr->data[pv][1]; \ @@ -1098,7 +1098,7 @@ const GLfloat twidth = (GLfloat) texImage->Width; \ const GLfloat theight = (GLfloat) texImage->Height; \ const GLboolean flat_shade = (ctx->Light.ShadeModel==GL_FLAT); \ - GLint r, g, b, a; \ + GLint r = 0, g = 0, b = 0, a = 0; \ if (flat_shade) { \ r = VB->ColorPtr->data[pv][0]; \ g = VB->ColorPtr->data[pv][1]; \ @@ -1195,7 +1195,7 @@ const GLfloat twidth = (GLfloat) texImage->Width; \ const GLfloat theight = (GLfloat) texImage->Height; \ const GLboolean flat_shade = (ctx->Light.ShadeModel==GL_FLAT); \ - GLint r, g, b, a, sr, sg, sb; \ + GLint r = 0, g = 0, b = 0, a = 0, sr = 0, sg = 0, sb = 0; \ if (flat_shade) { \ r = VB->ColorPtr->data[pv][0]; \ g = VB->ColorPtr->data[pv][1]; \ @@ -1304,7 +1304,7 @@ const struct gl_texture_image *texImage0, *texImage1; \ GLfloat twidth0, theight0, twidth1, theight1; \ const GLboolean flat_shade = (ctx->Light.ShadeModel==GL_FLAT); \ - GLint r, g, b, a; \ + GLint r = 0, g = 0, b = 0, a = 0; \ if (obj0) { \ texImage0 = obj0->Image[obj0->BaseLevel]; \ twidth0 = texImage0->Width; \ Index: xc/extras/Mesa/src/tritemp.h diff -u xc/extras/Mesa/src/tritemp.h:1.12 xc/extras/Mesa/src/tritemp.h:1.14 --- xc/extras/Mesa/src/tritemp.h:1.12 Fri May 18 12:59:55 2001 +++ xc/extras/Mesa/src/tritemp.h Mon Jan 14 16:07:57 2002 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/tritemp.h,v 1.14 2002/01/14 21:07:57 tsi Exp $ */ /* * Mesa 3-D graphics library * Version: 3.4.1 @@ -150,7 +150,7 @@ if (area * bf < 0.0) return; - if (area == 0.0F) + if (area == 0.0F || IS_INF_OR_NAN(area) ) return; /* check for very tiny triangle */ @@ -578,56 +578,58 @@ { int subTriangle; - GLfixed fx, fxLeftEdge, fxRightEdge, fdxLeftEdge, fdxRightEdge; + GLfixed fx; + GLfixed fxLeftEdge = 0, fxRightEdge = 0; + GLfixed fdxLeftEdge = 0, fdxRightEdge = 0; GLfixed fdxOuter; int idxOuter; float dxOuter; - GLfixed fError, fdError; + GLfixed fError = 0, fdError = 0; float adjx, adjy; GLfixed fy; - int iy; + int iy = 0; #ifdef PIXEL_ADDRESS - PIXEL_TYPE *pRow; - int dPRowOuter, dPRowInner; /* offset in bytes */ + PIXEL_TYPE *pRow = NULL; + int dPRowOuter = 0, dPRowInner; /* offset in bytes */ #endif #ifdef INTERP_Z # ifdef DEPTH_TYPE - DEPTH_TYPE *zRow; - int dZRowOuter, dZRowInner; /* offset in bytes */ + DEPTH_TYPE *zRow = NULL; + int dZRowOuter = 0, dZRowInner; /* offset in bytes */ # endif - GLfixed fz, fdzOuter, fdzInner; + GLfixed fz = 0, fdzOuter = 0, fdzInner; #endif #ifdef INTERP_RGB - GLfixed fr, fdrOuter, fdrInner; - GLfixed fg, fdgOuter, fdgInner; - GLfixed fb, fdbOuter, fdbInner; + GLfixed fr = 0, fdrOuter = 0, fdrInner; + GLfixed fg = 0, fdgOuter = 0, fdgInner; + GLfixed fb = 0, fdbOuter = 0, fdbInner; #endif #ifdef INTERP_SPEC - GLfixed fsr, fdsrOuter, fdsrInner; - GLfixed fsg, fdsgOuter, fdsgInner; - GLfixed fsb, fdsbOuter, fdsbInner; + GLfixed fsr = 0, fdsrOuter = 0, fdsrInner; + GLfixed fsg = 0, fdsgOuter = 0, fdsgInner; + GLfixed fsb = 0, fdsbOuter = 0, fdsbInner; #endif #ifdef INTERP_ALPHA - GLfixed fa, fdaOuter, fdaInner; + GLfixed fa = 0, fdaOuter = 0, fdaInner; #endif #ifdef INTERP_INDEX - GLfixed fi, fdiOuter, fdiInner; + GLfixed fi = 0, fdiOuter = 0, fdiInner; #endif #ifdef INTERP_INT_ST - GLfixed fs, fdsOuter, fdsInner; - GLfixed ft, fdtOuter, fdtInner; + GLfixed fs = 0, fdsOuter = 0, fdsInner; + GLfixed ft = 0, fdtOuter = 0, fdtInner; #endif #ifdef INTERP_STUV - GLfloat sLeft, dsOuter, dsInner; - GLfloat tLeft, dtOuter, dtInner; - GLfloat uLeft, duOuter, duInner; - GLfloat vLeft, dvOuter, dvInner; + GLfloat sLeft = 0, dsOuter = 0, dsInner; + GLfloat tLeft = 0, dtOuter = 0, dtInner; + GLfloat uLeft = 0, duOuter = 0, duInner; + GLfloat vLeft = 0, dvOuter = 0, dvInner; #endif #ifdef INTERP_STUV1 - GLfloat s1Left, ds1Outer, ds1Inner; - GLfloat t1Left, dt1Outer, dt1Inner; - GLfloat u1Left, du1Outer, du1Inner; - GLfloat v1Left, dv1Outer, dv1Inner; + GLfloat s1Left = 0, ds1Outer = 0, ds1Inner; + GLfloat t1Left = 0, dt1Outer = 0, dt1Inner; + GLfloat u1Left = 0, du1Outer = 0, du1Inner; + GLfloat v1Left = 0, dv1Outer = 0, dv1Inner; #endif for (subTriangle=0; subTriangle<=1; subTriangle++) { Index: xc/extras/Mesa/src/vbrender.c diff -u xc/extras/Mesa/src/vbrender.c:1.8 xc/extras/Mesa/src/vbrender.c:1.10 --- xc/extras/Mesa/src/vbrender.c:1.8 Mon Nov 13 18:30:54 2000 +++ xc/extras/Mesa/src/vbrender.c Sat Oct 27 23:32:07 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/vbrender.c,v 1.10 2001/10/28 03:32:07 tsi Exp $ */ /* * Mesa 3-D graphics library * Version: 3.3 @@ -400,9 +400,6 @@ { } #endif - - -extern const char *gl_prim_name[]; /* Index: xc/extras/Mesa/src/xform_tmp.h diff -u xc/extras/Mesa/src/xform_tmp.h:1.7 xc/extras/Mesa/src/xform_tmp.h:1.9 --- xc/extras/Mesa/src/xform_tmp.h:1.7 Sun Apr 1 09:59:57 2001 +++ xc/extras/Mesa/src/xform_tmp.h Sat Oct 27 23:32:07 2001 @@ -1,4 +1,4 @@ -/* $XFree86: xc/extras/Mesa/src/xform_tmp.h,v 1.7 2001/04/01 13:59:57 tsi Exp $ */ +/* $XFree86: xc/extras/Mesa/src/xform_tmp.h,v 1.9 2001/10/28 03:32:07 tsi Exp $ */ /* * Mesa 3-D graphics library * Version: 3.1 Index: xc/extras/Mesa/src/OSmesa/osmesa.c diff -u xc/extras/Mesa/src/OSmesa/osmesa.c:1.8 xc/extras/Mesa/src/OSmesa/osmesa.c:1.9 --- xc/extras/Mesa/src/OSmesa/osmesa.c:1.8 Tue Mar 20 21:48:50 2001 +++ xc/extras/Mesa/src/OSmesa/osmesa.c Wed Jan 2 12:49:50 2002 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/OSmesa/osmesa.c,v 1.9 2002/01/02 17:49:50 tsi Exp $ */ /* * Mesa 3-D graphics library * Version: 3.3 @@ -46,6 +46,7 @@ #include "types.h" #include "vb.h" #include "extensions.h" +#include "mmath.h" #endif Index: xc/extras/Mesa/src/X/xmesa1.c diff -u xc/extras/Mesa/src/X/xmesa1.c:1.13 xc/extras/Mesa/src/X/xmesa1.c:1.17 --- xc/extras/Mesa/src/X/xmesa1.c:1.13 Fri May 18 13:00:05 2001 +++ xc/extras/Mesa/src/X/xmesa1.c Wed Nov 14 05:28:07 2001 @@ -1,5 +1,4 @@ -/* $Id: xmesa1.c,v 1.35.2.8 2001/05/14 19:11:33 brianp Exp $ */ - +/* $XFree86: xc/extras/Mesa/src/X/xmesa1.c,v 1.17 2001/11/14 10:28:07 alanh Exp $ */ /* * Mesa 3-D graphics library * Version: 3.4.2 @@ -599,6 +598,7 @@ */ void xmesa_alloc_back_buffer( XMesaBuffer b ) { + (void)DitherValues; if (b->db_state==BACK_XIMAGE) { /* Deallocate the old backimage, if any */ if (b->backimage) { @@ -2035,6 +2035,10 @@ if (drawBuffer->FXctx) { fxMesaMakeCurrent(drawBuffer->FXctx); + /* Disassociate drawBuffer's current context from drawBuffer */ + if (drawBuffer->xm_context) + drawBuffer->xm_context->xm_buffer = NULL; + /* Disassociate old buffer from this context */ if (c->xm_buffer) c->xm_buffer->xm_context = NULL; @@ -2057,9 +2061,14 @@ return GL_TRUE; } + /* Disassociate drawBuffer's current context from drawBuffer */ + if (drawBuffer->xm_context) + drawBuffer->xm_context->xm_buffer = NULL; + /* Disassociate old buffer with this context */ if (c->xm_buffer) c->xm_buffer->xm_context = NULL; + drawBuffer->xm_context = c; /* Associate the context with this buffer */ c->xm_buffer = drawBuffer; Index: xc/extras/Mesa/src/X/xmesa2.c diff -u xc/extras/Mesa/src/X/xmesa2.c:1.11 xc/extras/Mesa/src/X/xmesa2.c:1.12 --- xc/extras/Mesa/src/X/xmesa2.c:1.11 Fri May 18 13:00:05 2001 +++ xc/extras/Mesa/src/X/xmesa2.c Wed Nov 7 23:00:11 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/X/xmesa2.c,v 1.12 2001/11/08 04:00:11 tsi Exp $ */ /* * Mesa 3-D graphics library * Version: 3.3 @@ -4635,9 +4635,9 @@ const GLubyte *pixelToG = xmesa->xm_visual->PixelToG; const GLubyte *pixelToB = xmesa->xm_visual->PixelToB; const GLushort *ptr2 = PIXELADDR2( source, x, y ); - const GLuint *ptr4 = (const GLuint *) ptr2; GLuint i; #if defined(__i386__) /* word stores don't have to be on 4-byte boundaries */ + const GLuint *ptr4 = (const GLuint *) ptr2; GLuint extraPixel = (n & 1); n -= extraPixel; for (i = 0; i < n; i += 2) { Index: xc/extras/Mesa/src/X/xmesa3.c diff -u xc/extras/Mesa/src/X/xmesa3.c:1.9 xc/extras/Mesa/src/X/xmesa3.c:1.11 --- xc/extras/Mesa/src/X/xmesa3.c:1.9 Thu Nov 30 10:39:19 2000 +++ xc/extras/Mesa/src/X/xmesa3.c Tue Dec 11 04:18:55 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/X/xmesa3.c,v 1.11 2001/12/11 09:18:55 alanh Exp $ */ /* * Mesa 3-D graphics library * Version: 3.4 @@ -36,6 +36,7 @@ #include "glxheader.h" #include "depth.h" #include "macros.h" +#include "mmath.h" #include "vb.h" #include "types.h" #include "xmesaP.h" @@ -67,9 +68,14 @@ const GLubyte *color = VB->ColorPtr->data[i]; unsigned long pixel = xmesa_color_to_pixel( xmesa, color[0], color[1], color[2], color[3], xmesa->pixelformat); + GLfloat *win = VB->Win.data[i]; + + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; + XMesaSetForeground( dpy, gc, pixel ); - x = (GLint) VB->Win.data[i][0]; - y = FLIP( xmesa->xm_buffer, (GLint) VB->Win.data[i][1] ); + x = (GLint) win[0]; + y = FLIP( xmesa->xm_buffer, (GLint) win[1] ); XMesaDrawPoint( dpy, buffer, gc, x, y); } } @@ -79,9 +85,14 @@ for (i=first;i<=last;i++) { if (VB->ClipMask[i]==0) { register int x, y; + GLfloat *win = VB->Win.data[i]; + + if (IS_INF_OR_NAN(win[0] + win[1])) + continue; + XMesaSetForeground( dpy, gc, VB->IndexPtr->data[i] ); - x = (GLint) VB->Win.data[i][0]; - y = FLIP( xmesa->xm_buffer, (GLint) VB->Win.data[i][1] ); + x = (GLint) win[0]; + y = FLIP( xmesa->xm_buffer, (GLint) win[1] ); XMesaDrawPoint( dpy, buffer, gc, x, y); } } @@ -117,7 +128,7 @@ /**********************************************************************/ /*** Line rendering ***/ /**********************************************************************/ - +#if 0 /* * Render a line into a pixmap, any pixel format. */ @@ -147,7 +158,7 @@ XMesaDrawLine( xmesa->display, xmesa->xm_buffer->buffer, gc, x0, y0, x1, y1 ); } - +#endif /* @@ -574,8 +585,8 @@ #include "linetemp.h" } - +#if 0 /* * Examine ctx->Line attributes and set xmesa->xm_buffer->gc1 * and xmesa->xm_buffer->gc2 appropriately. @@ -655,7 +666,7 @@ XMesaSetFillStyle( xmesa->display, xmesa->xm_buffer->gc1, FillSolid ); XMesaSetFillStyle( xmesa->display, xmesa->xm_buffer->gc2, FillSolid ); } - +#endif /* Index: xc/extras/Mesa/src/X/xmesa4.c diff -u xc/extras/Mesa/src/X/xmesa4.c:1.8 xc/extras/Mesa/src/X/xmesa4.c:1.10 --- xc/extras/Mesa/src/X/xmesa4.c:1.8 Mon Nov 13 18:31:04 2000 +++ xc/extras/Mesa/src/X/xmesa4.c Tue Dec 11 04:18:55 2001 @@ -1,4 +1,4 @@ - +/* $XFree86: xc/extras/Mesa/src/X/xmesa4.c,v 1.10 2001/12/11 09:18:55 alanh Exp $ */ /* * Mesa 3-D graphics library * Version: 3.4 @@ -36,6 +36,7 @@ #include "glxheader.h" #include "depth.h" #include "macros.h" +#include "mmath.h" #include "vb.h" #include "types.h" #include "xmesaP.h" @@ -47,6 +48,7 @@ /*** Triangle rendering ***/ /**********************************************************************/ +#if 0 /* * Render a triangle into a pixmap, any pixel format, flat shaded and * no raster ops. @@ -85,6 +87,7 @@ XMesaFillPolygon( xmesa->display, xmesa->xm_buffer->buffer, gc, p, 3, Convex, CoordModeOrigin ); } +#endif /* @@ -1363,8 +1366,8 @@ } - +#if 0 /* * This function is called if we're about to render triangles into an * X window/pixmap. It sets the polygon stipple pattern if enabled. @@ -1437,6 +1440,7 @@ XMesaSetFillStyle( xmesa->display, xmesa->xm_buffer->gc1, fill_type ); XMesaSetFillStyle( xmesa->display, xmesa->xm_buffer->gc2, fill_type ); } +#endif #ifdef DEBUG @@ -1524,8 +1528,10 @@ printf("flat_DITHER8_triangle\n"); else if (triFunc ==flat_LOOKUP8_triangle) printf("flat_LOOKUP8_triangle\n"); +#if 0 else if (triFunc ==flat_pixmap_triangle) printf("flat_pixmap_triangle\n"); +#endif else printf("???\n"); } Index: xc/extras/Mesa/src/X86/3dnow_norm_raw.S diff -u xc/extras/Mesa/src/X86/3dnow_norm_raw.S:1.6 xc/extras/Mesa/src/X86/3dnow_norm_raw.S:1.7 --- xc/extras/Mesa/src/X86/3dnow_norm_raw.S:1.6 Mon Nov 13 18:31:06 2000 +++ xc/extras/Mesa/src/X86/3dnow_norm_raw.S Wed Nov 14 05:28:07 2001 @@ -121,12 +121,12 @@ PFMUL ( MM0, MM6 ) /* scale * m9 | scale * m8 */ PFMUL ( MM0, MM7 ) /* | scale * m10 */ +ALIGNTEXT32 LLBL (G3TN_scale_end): +LLBL (G3TN_transform): MOVQ ( REGIND (EDX), MM0 ) /* x1 | x0 */ MOVD ( REGOFF (8, EDX), MM2 ) /* | x2 */ -ALIGNTEXT32 -LLBL (G3TN_transform): MOVQ ( MM0, MM1 ) /* x1 | x0 */ PUNPCKLDQ ( MM2, MM2 ) /* x2 | x2 */ @@ -156,9 +156,6 @@ PREFETCH ( REGIND(EDX) ) MOVD ( MM1, REGOFF(-4, EAX) ) /* write r2 */ - MOVQ ( REGIND (EDX), MM0 ) /* x1 | x0 */ - - MOVD ( REGOFF (8, EDX), MM2 ) /* | x2 */ DEC_L ( EBP ) /* decrement normal counter */ JA ( LLBL (G3TN_transform) ) @@ -292,18 +289,17 @@ ALIGNTEXT32 LLBL (G3TNNR_scale_end): - MOVQ ( REGIND(EDX), MM6 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EDX), MM7 ) /* | x2 */ - CMP_L ( CONST(0), EDI ) /* lengths == 0 ? */ JE ( LLBL (G3TNNR_norm) ) /* need to calculate lengths */ - MOVD ( REGIND(EDI), MM3 ) /* | length (x) */ - - ALIGNTEXT32 LLBL (G3TNNR_norm_w_lengths): /* use precalculated lengths */ + MOVQ ( REGIND(EDX), MM6 ) /* x1 | x0 */ + MOVD ( REGOFF(8, EDX), MM7 ) /* | x2 */ + + MOVD ( REGIND(EDI), MM3 ) /* | length (x) */ + PREFETCHW ( REGIND(EAX) ) PFMUL ( MM0, MM6 ) /* x1*m5 | x0*m0 */ @@ -324,17 +320,16 @@ MOVQ ( MM6, REGOFF(-12, EAX) ) /* write r0, r1 */ MOVD ( MM7, REGOFF(-4, EAX) ) /* write r2 */ - MOVD ( REGIND(EDI), MM3 ) /* | length (x) */ - MOVQ ( REGIND(EDX), MM6 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EDX), MM7 ) /* | x2 */ - JA ( LLBL (G3TNNR_norm_w_lengths) ) JMP ( LLBL (G3TNNR_exit_3dnow) ) ALIGNTEXT32 LLBL (G3TNNR_norm): /* need to calculate lengths */ + MOVQ ( REGIND(EDX), MM6 ) /* x1 | x0 */ + MOVD ( REGOFF(8, EDX), MM7 ) /* | x2 */ + PREFETCHW ( REGIND(EAX) ) PFMUL ( MM0, MM6 ) /* x1*m5 | x0*m0 */ @@ -371,9 +366,6 @@ PFMUL ( MM5, MM7 ) /* | x2 (normalized) */ MOVD ( MM7, REGOFF(-4, EAX) ) /* write r2 */ - MOVQ ( REGIND(EDX), MM6 ) /* x1 | x0 */ - - MOVD ( REGOFF(8, EDX), MM7 ) /* | x2 */ JA ( LLBL (G3TNNR_norm) ) @@ -426,14 +418,14 @@ PFMUL ( MM6, MM0 ) /* scale*m5 | scale*m0 */ MOVD ( REGOFF(40, ECX), MM2 ) /* | m10 */ - MOVQ ( REGIND(EDX), MM4 ) /* x1 | x0 */ PFMUL ( MM6, MM2 ) /* | scale*m10 */ - MOVD ( REGOFF(8, EDX), MM5 ) /* | x2 */ - ALIGNTEXT32 LLBL (G3TRNR_rescale): + MOVQ ( REGIND(EDX), MM4 ) /* x1 | x0 */ + MOVD ( REGOFF(8, EDX), MM5 ) /* | x2 */ + PREFETCHW ( REGIND(EAX) ) PFMUL ( MM0, MM4 ) /* x1*m5 | x0*m0 */ @@ -448,9 +440,6 @@ MOVQ ( MM4, REGOFF(-12, EAX) ) /* write r0, r1 */ MOVD ( MM5, REGOFF(-4, EAX) ) /* write r2 */ - MOVQ ( REGIND(EDX), MM4 ) /* x1 | x0 */ - - MOVD ( REGOFF(8, EDX), MM5 ) /* | x2 */ JA ( LLBL (G3TRNR_rescale) ) /* cnt > 0 ? -> process next normal */ FEMMS @@ -507,14 +496,15 @@ PFMUL ( MM0, MM5 ) /* scale*m6 | scale*m2 */ PFMUL ( MM0, MM6 ) /* scale*m9 | scale*m8 */ - MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */ PFMUL ( MM0, MM7 ) /* | scale*m10 */ - MOVQ ( REGIND(EDX), MM0 ) /* x1 | x0 */ ALIGNTEXT32 LLBL (G3TR_rescale): + MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */ + MOVQ ( REGIND(EDX), MM0 ) /* x1 | x0 */ + PREFETCHW ( REGIND(EAX) ) MOVQ ( MM0, MM1 ) /* x1 | x0 */ @@ -545,9 +535,6 @@ PFADD ( MM2, MM1 ) /* *not used* | x0*m8+x1*m9+x2*m10 */ MOVD ( MM1, REGOFF(-4, EAX) ) /* write r2 */ - MOVQ ( REGIND(EDX), MM0 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */ - DEC_L ( EDI ) /* decrement normal counter */ JA ( LLBL (G3TR_rescale) ) @@ -594,12 +581,12 @@ MOVD ( REGOFF(40, ECX), MM2 ) /* | m10 */ PUNPCKLDQ ( MM2, MM2 ) /* m10 | m10 */ - MOVQ ( REGIND(EDX), MM4 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EDX), MM5 ) /* | x2 */ - ALIGNTEXT32 LLBL (G3TNR_transform): + MOVQ ( REGIND(EDX), MM4 ) /* x1 | x0 */ + MOVD ( REGOFF(8, EDX), MM5 ) /* | x2 */ + PREFETCHW ( REGIND(EAX) ) PFMUL ( MM0, MM4 ) /* x1*m5 | x0*m0 */ @@ -614,9 +601,6 @@ MOVQ ( MM4, REGOFF(-12, EAX) ) /* write r0, r1 */ MOVD ( MM5, REGOFF(-4, EAX) ) /* write r2 */ - MOVQ ( REGIND(EDX), MM4 ) /* x1 | x0 */ - - MOVD ( REGOFF(8, EDX), MM5 ) /* | x2 */ JA ( LLBL (G3TNR_transform) ) FEMMS @@ -666,12 +650,12 @@ MOVQ ( REGOFF(32, ECX), MM6 ) /* m9 | m8 */ MOVD ( REGOFF(40, ECX), MM7 ) /* | m10 */ - MOVQ ( REGIND(EDX), MM0 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */ - ALIGNTEXT32 LLBL (G3T_transform): + MOVQ ( REGIND(EDX), MM0 ) /* x1 | x0 */ + MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */ + PREFETCHW ( REGIND(EAX) ) MOVQ ( MM0, MM1 ) /* x1 | x0 */ @@ -701,9 +685,6 @@ PFADD ( MM2, MM1 ) /* *not used* | x0*m8+x1*m9+x2*m10 */ MOVD ( MM1, REGOFF(-4, EAX) ) /* write r2 */ - MOVQ ( REGIND(EDX), MM0 ) /* x1 | x0 */ - - MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */ DEC_L ( EDI ) /* decrement normal counter */ JA ( LLBL (G3T_transform) ) @@ -743,15 +724,15 @@ FEMMS - MOVQ ( REGIND(ECX), MM0 ) /* x1 | x0 */ - MOVD ( REGOFF(8, ECX), MM1 ) /* | x2 */ - CMP_L ( CONST(0), EDX ) /* lengths == 0 ? */ JE ( LLBL (G3N_norm2) ) /* calculate lengths */ ALIGNTEXT32 LLBL (G3N_norm1): /* use precalculated lengths */ + MOVQ ( REGIND(ECX), MM0 ) /* x1 | x0 */ + MOVD ( REGOFF(8, ECX), MM1 ) /* | x2 */ + PREFETCH ( REGIND(EAX) ) MOVD ( REGIND(EDX), MM3 ) /* | length (x) */ @@ -771,8 +752,6 @@ ADD_L ( CONST(4), EDX ) /* next length */ DEC_L ( EBP ) /* decrement normal counter */ - MOVQ ( REGIND(ECX), MM0 ) /* x1 | x0 */ - MOVD ( REGOFF(8, ECX), MM1 ) /* | x2 */ JA ( LLBL (G3N_norm1) ) JMP ( LLBL (G3N_end1) ) @@ -780,6 +759,9 @@ ALIGNTEXT32 LLBL (G3N_norm2): /* need to calculate lengths */ + MOVQ ( REGIND(ECX), MM0 ) /* x1 | x0 */ + MOVD ( REGOFF(8, ECX), MM1 ) /* | x2 */ + PREFETCHW ( REGIND(EAX) ) MOVQ ( MM0, MM3 ) /* x1 | x0 */ @@ -813,8 +795,6 @@ PFMUL ( MM5, MM1 ) /* | x2 (normalized) */ MOVD ( MM1, REGOFF(-4, EAX) ) /* write new x2 */ - MOVQ ( REGIND(ECX), MM0 ) /* x1 | x0 */ - MOVD ( REGOFF(8, ECX), MM1 ) /* | x2 */ JA ( LLBL (G3N_norm2) ) LLBL (G3N_end1): @@ -855,12 +835,12 @@ MOVD ( ARG_SCALE, MM0 ) /* scale */ PUNPCKLDQ ( MM0, MM0 ) - MOVQ ( REGIND(ECX), MM1 ) /* x1 | x0 */ - MOVD ( REGOFF(8, ECX), MM2 ) /* | x2 */ - ALIGNTEXT32 LLBL (G3R_rescale): + MOVQ ( REGIND(ECX), MM1 ) /* x1 | x0 */ + MOVD ( REGOFF(8, ECX), MM2 ) /* | x2 */ + PREFETCHW ( REGIND(EAX) ) PFMUL ( MM0, MM1 ) /* x1*scale | x0*scale */ @@ -875,9 +855,6 @@ MOVD ( MM2, REGOFF(-4, EAX) ) /* write r2 */ DEC_L ( EDX ) /* decrement normal counter */ - MOVQ ( REGIND(ECX), MM1 ) /* x1 | x0 */ - - MOVD ( REGOFF(8, ECX), MM2 ) /* | x2 */ JA ( LLBL (G3R_rescale) ) FEMMS Index: xc/extras/Mesa/src/X86/3dnow_xform_raw3.S diff -u xc/extras/Mesa/src/X86/3dnow_xform_raw3.S:1.5 xc/extras/Mesa/src/X86/3dnow_xform_raw3.S:1.6 --- xc/extras/Mesa/src/X86/3dnow_xform_raw3.S:1.5 Mon Nov 13 18:31:08 2000 +++ xc/extras/Mesa/src/X86/3dnow_xform_raw3.S Wed Nov 14 05:28:07 2001 @@ -58,15 +58,15 @@ PREFETCHW ( REGIND(EDX) ) - MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EAX), MM2 ) /* | x2 */ - - ADD_L ( EDI, EAX ) /* next vertex */ - ALIGNTEXT16 LLBL( G3TPGR_1 ): PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ + + MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ + MOVD ( REGOFF(8, EAX), MM2 ) /* | x2 */ + + ADD_L ( EDI, EAX ) /* next vertex */ PREFETCH ( REGIND(EAX) ) MOVQ ( MM0, MM1 ) /* x1 | x0 */ @@ -102,10 +102,6 @@ PFADD ( MM4, MM5 ) /* r3 | r2 */ MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */ - MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EAX), MM2 ) /* | x2 */ - - ADD_L ( EDI, EAX ) /* next vertex */ DEC_L ( ESI ) /* decrement vertex counter */ JNZ ( LLBL( G3TPGR_1 ) ) /* cnt > 0 ? -> process next vertex */ @@ -155,15 +151,15 @@ MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */ - MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */ - MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ - - ADD_L ( EDI, EAX ) /* next vertex */ - ALIGNTEXT16 LLBL( G3TPPR_1 ): PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ + + MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */ + MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ + + ADD_L ( EDI, EAX ) /* next vertex */ PREFETCH ( REGIND(EAX) ) PXOR ( MM7, MM7 ) /* 0 | 0 */ @@ -185,10 +181,6 @@ MOVD ( MM6, REGOFF(-8, EDX) ) /* write r2 */ MOVD ( MM7, REGOFF(-4, EDX) ) /* write r3 */ - MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */ - - MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ - ADD_L ( EDI, EAX ) /* next vertex */ DEC_L ( ESI ) /* decrement vertex counter */ JNZ ( LLBL( G3TPPR_1 ) ) /* cnt > 0 ? -> process next vertex */ @@ -234,15 +226,15 @@ MOVD ( REGOFF(8, ECX), MM7 ) /* | m2 */ PUNPCKLDQ ( REGOFF(24, ECX), MM7 ) /* m6 | m2 */ - MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */ - - ADD_L ( EDI, EAX ) /* next vertex */ - ALIGNTEXT16 LLBL( G3TP3R_1 ): PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ + + MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ + MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */ + + ADD_L ( EDI, EAX ) /* next vertex */ PREFETCH ( REGIND(EAX) ) MOVQ ( MM0, MM2 ) /* x1 | x0 */ @@ -275,11 +267,7 @@ PFACC ( MM1, MM1 ) /* | r2 */ MOVD ( MM1, REGOFF(-8, EDX) ) /* write r2 */ - MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */ - - ADD_L ( EDI, EAX ) /* next vertex */ DEC_L ( ESI ) /* decrement vertex counter */ JNZ ( LLBL( G3TP3R_1 ) ) /* cnt > 0 ? -> process next vertex */ @@ -331,15 +319,15 @@ MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */ PUNPCKLDQ ( MM3, MM3 ) /* m32 | m32 */ - MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ - - MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */ - ALIGNTEXT16 LLBL( G3TP3NRR_1 ): PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ + + MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ + MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */ + ADD_L ( EDI, EAX ) /* next vertex */ PREFETCHW ( REGIND(EAX) ) @@ -355,9 +343,6 @@ DEC_L ( ESI ) /* decrement vertex counter */ MOVD ( MM5, REGOFF(-8, EDX) ) /* write r2 */ - MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ - - MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */ JNZ ( LLBL( G3TP3NRR_1 ) ) /* cnt > 0 ? -> process next vertex */ LLBL( G3TP3NRR_2 ): @@ -405,15 +390,16 @@ PUNPCKLDQ ( REGOFF(20, ECX), MM1 ) /* m11 | m01 */ MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */ - MOVQ ( REGIND(EAX), MM3 ) /* x1 | x0 */ - - MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */ - ADD_L ( EDI, EAX ) /* next vertex */ ALIGNTEXT16 LLBL( G3TP2R_2 ): PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ + + MOVQ ( REGIND(EAX), MM3 ) /* x1 | x0 */ + MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */ + + ADD_L ( EDI, EAX ) /* next vertex */ PREFETCH ( REGIND(EAX) ) MOVQ ( MM3, MM4 ) /* x1 | x0 */ @@ -428,10 +414,6 @@ PFADD ( MM2, MM3 ) /* x0*...*m10+m30 | x0*...*m11+m31 */ MOVQ ( MM3, REGOFF(-16, EDX) ) /* write r0, r1 */ - MOVQ ( REGIND(EAX), MM3 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */ - - ADD_L ( EDI, EAX ) /* next vertex */ DEC_L ( ESI ) /* decrement vertex counter */ JNZ ( LLBL( G3TP2R_2 ) ) /* cnt > 0 ? -> process next vertex */ @@ -477,16 +459,16 @@ PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */ MOVQ ( REGOFF(48, ECX), MM1 ) /* m31 | m30 */ - MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */ - ADD_L ( EDI, EAX ) /* next vertex */ - - ALIGNTEXT16 LLBL( G3TP2NRR_1 ): PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ + + MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ + MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */ + + ADD_L ( EDI, EAX ) /* next vertex */ PREFETCH ( REGIND(EAX) ) PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */ @@ -497,10 +479,6 @@ MOVQ ( MM4, REGOFF(-16, EDX) ) /* write r0, r1 */ MOVD ( MM5, REGOFF(-8, EDX) ) /* write r2 (=x2) */ - MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */ - - ADD_L ( EDI, EAX ) /* next vertex */ DEC_L ( ESI ) /* decrement vertex counter */ JNZ ( LLBL( G3TP2NRR_1 ) ) /* cnt > 0 ? -> process next vertex */ @@ -541,14 +519,14 @@ PREFETCHW ( REGIND(EDX) ) - MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ - MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */ - ALIGNTEXT16 LLBL( G3TPIR_1 ): PREFETCHW ( REGOFF(32, EDX) ) + MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ + MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */ + ADD_L ( EDI, EAX ) /* next vertex */ ADD_L ( CONST(16), EDX ) /* next r */ @@ -556,9 +534,6 @@ MOVQ ( MM0, REGOFF(-16, EDX) ) /* r1 | r0 */ MOVD ( MM1, REGOFF(-8, EDX) ) /* | r2 */ - MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ - - MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */ JNZ ( LLBL( G3TPIR_1 ) ) /* cnt > 0 ? -> process next vertex */ LLBL( G3TPIR_2 ): Index: xc/extras/Mesa/src/X86/3dnow_xform_raw4.S diff -u xc/extras/Mesa/src/X86/3dnow_xform_raw4.S:1.5 xc/extras/Mesa/src/X86/3dnow_xform_raw4.S:1.6 --- xc/extras/Mesa/src/X86/3dnow_xform_raw4.S:1.5 Mon Nov 13 18:31:09 2000 +++ xc/extras/Mesa/src/X86/3dnow_xform_raw4.S Wed Nov 14 05:28:07 2001 @@ -58,15 +58,15 @@ PREFETCHW ( REGIND(EDX) ) - MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ - MOVQ ( REGOFF(8, EAX), MM4 ) /* x3 | x2 */ - - ADD_L ( EDI, EAX ) /* next vertex */ - ALIGNTEXT16 LLBL( G3TPGR_1 ): PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ + + MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ + MOVQ ( REGOFF(8, EAX), MM4 ) /* x3 | x2 */ + + ADD_L ( EDI, EAX ) /* next vertex */ PREFETCH ( REGIND(EAX) ) MOVQ ( MM0, MM2 ) /* x1 | x0 */ @@ -109,10 +109,6 @@ MOVQ ( MM6, REGOFF(-16, EDX) ) MOVQ ( MM7, REGOFF(-8, EDX) ) - MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ - - MOVQ ( REGOFF(8, EAX), MM4 ) /* x3 | x2 */ - ADD_L ( EDI, EAX ) /* next vertex */ DEC_L ( ESI ) /* decrement vertex counter */ JNZ ( LLBL( G3TPGR_1 ) ) /* cnt > 0 ? -> process next vertex */ @@ -164,16 +160,16 @@ MOVQ ( REGOFF(32, ECX), MM2 ) /* m21 | m20 */ PXOR ( MM7, MM7 ) /* 0 | 0 */ +ALIGNTEXT16 +LLBL( G3TPPR_1 ): + + PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ + MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */ MOVD ( REGOFF(8, EAX), MM3 ) /* | x2 */ ADD_L ( EDI, EAX ) /* next vertex */ - -ALIGNTEXT16 -LLBL( G3TPPR_1 ): - - PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ PREFETCH ( REGOFF(32, EAX) ) /* hopefully stride is zero */ MOVQ ( MM5, MM6 ) /* x3 | x2 */ @@ -192,12 +188,7 @@ MOVQ ( MM5, REGOFF(-16, EDX) ) /* write r0, r1 */ MOVQ ( MM6, REGOFF(-8, EDX) ) /* write r2, r3 */ - MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ - MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */ - MOVD ( REGOFF(8, EAX), MM3 ) /* | x2 */ - - ADD_L ( EDI, EAX ) /* next vertex */ DEC_L ( ESI ) /* decrement vertex counter */ JNZ ( LLBL( G3TPPR_1 ) ) /* cnt > 0 ? -> process next vertex */ @@ -243,12 +234,12 @@ MOVD ( REGOFF(40, ECX), MM7 ) /* | m10 */ PUNPCKLDQ ( REGOFF(56, ECX), MM7 ) /* m14 | m10 */ - MOVQ ( REGIND(EAX), MM2 ) /* x1 | x0 */ - MOVQ ( REGOFF(8, EAX), MM3 ) /* x3 | x2 */ - ALIGNTEXT16 LLBL( G3TP3R_1 ): + MOVQ ( REGIND(EAX), MM2 ) /* x1 | x0 */ + MOVQ ( REGOFF(8, EAX), MM3 ) /* x3 | x2 */ + PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ PREFETCH ( REGOFF(32, EAX) ) /* hopefully array is tightly packed */ @@ -280,7 +271,6 @@ PFADD ( MM3, MM4 ) /* r1 | r0 */ PFACC ( MM2, MM5 ) /* x0*m2+x1*m6 | x2*m10+x3*m14 */ - MOVD ( REGOFF(12, EAX), MM0 ) /* | x3 */ ADD_L ( EDI, EAX ) /* next vertex */ PFACC ( MM0, MM5 ) /* r3 | r2 */ @@ -288,9 +278,6 @@ MOVQ ( MM4, REGOFF(-16, EDX) ) /* write r0, r1 */ MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */ - MOVQ ( REGIND(EAX), MM2 ) /* x1 | x0 */ - MOVQ ( REGOFF(8, EAX), MM3 ) /* x3 | x2 */ - DEC_L ( ESI ) /* decrement vertex counter */ JNZ ( LLBL( G3TP3R_1 ) ) /* cnt > 0 ? -> process next vertex */ @@ -336,16 +323,17 @@ MOVQ ( REGOFF(48, ECX), MM1 ) /* m31 | m30 */ +ALIGNTEXT16 +LLBL( G3TP3NRR_1 ): + + PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ + MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */ MOVD ( REGOFF(12, EAX), MM7 ) /* | x3 */ ADD_L ( EDI, EAX ) /* next vertex */ -ALIGNTEXT16 -LLBL( G3TP3NRR_1 ): - - PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ PREFETCH ( REGOFF(32, EAX) ) /* hopefully stride is zero */ MOVQ ( MM5, MM6 ) /* x3 | x2 */ @@ -363,12 +351,6 @@ MOVQ ( MM4, REGOFF(-16, EDX) ) /* write r0, r1 */ MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */ - MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ - MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */ - - MOVD ( REGOFF(12, EAX), MM7 ) /* | x3 */ - ADD_L ( EDI, EAX ) /* next vertex */ - DEC_L ( ESI ) /* decrement vertex counter */ JNZ ( LLBL( G3TP3NRR_1 ) ) /* cnt > 0 ? -> process next vertex */ @@ -415,15 +397,15 @@ MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */ - MOVQ ( REGIND(EAX), MM3 ) /* x1 | x0 */ - MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */ - - ADD_L ( EDI, EAX ) /* next vertex */ - ALIGNTEXT16 LLBL( G3TP2R_1 ): PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ + + MOVQ ( REGIND(EAX), MM3 ) /* x1 | x0 */ + MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */ + + ADD_L ( EDI, EAX ) /* next vertex */ PREFETCH ( REGIND(EAX) ) MOVQ ( MM3, MM4 ) /* x1 | x0 */ @@ -442,11 +424,7 @@ MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */ MOVQ ( MM3, REGOFF(-16, EDX) ) /* write r0, r1 */ - MOVQ ( REGIND(EAX), MM3 ) /* x1 | x0 */ - MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */ - ADD_L ( EDI, EAX ) /* next vertex */ - DEC_L ( ESI ) /* decrement vertex counter */ JNZ ( LLBL( G3TP2R_1 ) ) /* cnt > 0 ? -> process next vertex */ @@ -490,15 +468,15 @@ MOVQ ( REGOFF(48, ECX), MM1 ) /* m31 | m30 */ - MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ - MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */ - - ADD_L ( EDI, EAX ) /* next vertex */ - ALIGNTEXT16 LLBL( G3TP2NRR_2 ): PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ + + MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ + MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */ + + ADD_L ( EDI, EAX ) /* next vertex */ PREFETCH ( REGIND(EAX) ) PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */ @@ -513,10 +491,6 @@ MOVQ ( MM6, REGOFF(-16, EDX) ) /* write r0, r1 */ MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */ - MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */ - MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */ - - ADD_L ( EDI, EAX ) /* next vertex */ DEC_L ( ESI ) /* decrement vertex counter */ JNZ ( LLBL( G3TP2NRR_2 ) ) /* cnt > 0 ? -> process next vertex */ @@ -556,25 +530,21 @@ TEST_L ( ESI, ESI ) JZ ( LLBL( G3TPIR_2 ) ) - MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ - MOVQ ( REGOFF(8, EAX), MM1 ) /* x3 | x2 */ - - ADD_L ( EDI, EAX ) /* next vertex */ - ALIGNTEXT16 LLBL( G3TPIR_1 ): PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */ + + MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ + MOVQ ( REGOFF(8, EAX), MM1 ) /* x3 | x2 */ + + ADD_L ( EDI, EAX ) /* next vertex */ PREFETCH ( REGIND(EAX) ) ADD_L ( CONST(16), EDX ) /* next r */ MOVQ ( MM0, REGOFF(-16, EDX) ) /* r1 | r0 */ MOVQ ( MM1, REGOFF(-8, EDX) ) /* r3 | r2 */ - MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */ - - MOVQ ( REGOFF(8, EAX), MM1 ) /* x3 | x2 */ - ADD_L ( EDI, EAX ) /* next vertex */ DEC_L ( ESI ) /* decrement vertex counter */ JNZ ( LLBL( G3TPIR_1 ) ) /* cnt > 0 ? -> process next vertex */ Index: xc/extras/Mesa/src/X86/common_x86.c diff -u xc/extras/Mesa/src/X86/common_x86.c:1.8 xc/extras/Mesa/src/X86/common_x86.c:1.9 --- xc/extras/Mesa/src/X86/common_x86.c:1.8 Wed Jan 17 07:50:10 2001 +++ xc/extras/Mesa/src/X86/common_x86.c Fri Aug 17 14:40:11 2001 @@ -35,7 +35,7 @@ #include #include -#if defined(USE_KATMAI_ASM) && defined(__linux__) && defined(_POSIX_SOURCE) +#if defined(USE_KATMAI_ASM) && defined(__linux__) #include #endif @@ -87,7 +87,7 @@ extern void gl_test_os_katmai_support( void ); extern void gl_test_os_katmai_exception_support( void ); -#if defined(__linux__) && defined(_POSIX_SOURCE) +#if defined(__linux__) && defined(_POSIX_SOURCE) && defined(X86_FXSR_MAGIC) static void sigill_handler( int signal, struct sigcontext sc ) { message( "SIGILL, " ); @@ -125,7 +125,7 @@ gl_problem( NULL, "SSE enabling test failed badly!" ); } } -#endif /* __linux__ && _POSIX_SOURCE */ +#endif /* __linux__ && _POSIX_SOURCE && X86_FXSR_MAGIC */ /* If we're running on a processor that can do SSE, let's see if we * are allowed to or not. This will catch 2.4.0 or later kernels that @@ -138,7 +138,7 @@ static void check_os_katmai_support( void ) { #if defined(__linux__) -#if defined(_POSIX_SOURCE) +#if defined(_POSIX_SOURCE) && defined(X86_FXSR_MAGIC) struct sigaction saved_sigill; struct sigaction saved_sigfpe; @@ -212,7 +212,7 @@ */ message( "Cannot test OS support for SSE, disabling to be safe.\n" ); gl_x86_cpu_features &= ~(X86_FEATURE_XMM); -#endif /* _POSIX_SOURCE */ +#endif /* _POSIX_SOURCE && X86_FXSR_MAGIC */ #else /* Do nothing on non-Linux platforms for now. */ Index: xc/extras/X-TrueType/xttblit.h diff -u xc/extras/X-TrueType/xttblit.h:1.1.1.1 xc/extras/X-TrueType/xttblit.h:1.2 --- xc/extras/X-TrueType/xttblit.h:1.1.1.1 Sun Feb 13 00:14:12 2000 +++ xc/extras/X-TrueType/xttblit.h Sat Oct 27 23:32:08 2001 @@ -28,6 +28,7 @@ Notice=== */ +/* $XFree86: xc/extras/X-TrueType/xttblit.h,v 1.2 2001/10/28 03:32:08 tsi Exp $ */ /* written by Yamano-uchi, Hidetoshi */ @@ -36,16 +37,6 @@ #ifndef XTT_BLIT_H #define XTT_BLIT_H - -static -void blit_stream( TT_Raster_Map* target, - TT_Byte* source, - TT_Int line_bits, - TT_Int height, - TT_Bool align, - TT_Int x_offset, - TT_Int y_offset, - TT_Bool inverted ); TT_Error XTT_Get_SBit_Bitmap( TT_Raster_Map* target, TT_SBit_Image* source_sbit, Index: xc/extras/X-TrueType/xttcap.h diff -u xc/extras/X-TrueType/xttcap.h:1.1.1.2 xc/extras/X-TrueType/xttcap.h:1.2 --- xc/extras/X-TrueType/xttcap.h:1.1.1.2 Sun Feb 13 00:14:13 2000 +++ xc/extras/X-TrueType/xttcap.h Tue Jul 31 20:44:33 2001 @@ -29,9 +29,12 @@ Notice=== */ +/* $XFree86: xc/extras/X-TrueType/xttcap.h,v 1.2 2001/08/01 00:44:33 tsi Exp $ */ #ifndef _XTTCAP_H_ #define _XTTCAP_H_ (1) + +#include /******************************************************************* Data Types Index: xc/extras/X-TrueType/xttcconvP.h diff -u xc/extras/X-TrueType/xttcconvP.h:1.7 xc/extras/X-TrueType/xttcconvP.h:1.8 --- xc/extras/X-TrueType/xttcconvP.h:1.7 Tue Mar 6 13:03:12 2001 +++ xc/extras/X-TrueType/xttcconvP.h Tue Jul 31 20:44:33 2001 @@ -32,11 +32,12 @@ Notice=== */ -/* $XFree86: xc/extras/X-TrueType/xttcconvP.h,v 1.7 2001/03/06 18:03:12 dawes Exp $ */ +/* $XFree86: xc/extras/X-TrueType/xttcconvP.h,v 1.8 2001/08/01 00:44:33 tsi Exp $ */ #ifndef _XTTCCONVP_H_ #define _XTTCCONVP_H_ 1 +#include /************************************* Data Types Index: xc/extras/X-TrueType/xttcommon.h diff -u xc/extras/X-TrueType/xttcommon.h:1.7 xc/extras/X-TrueType/xttcommon.h:1.8 --- xc/extras/X-TrueType/xttcommon.h:1.7 Fri Feb 18 07:18:49 2000 +++ xc/extras/X-TrueType/xttcommon.h Tue Jul 31 20:44:33 2001 @@ -31,7 +31,7 @@ Notice=== */ -/* $XFree86: xc/extras/X-TrueType/xttcommon.h,v 1.7 2000/02/18 12:18:49 tsi Exp $ */ +/* $XFree86: xc/extras/X-TrueType/xttcommon.h,v 1.8 2001/08/01 00:44:33 tsi Exp $ */ #ifndef _XTTCOMMON_H_ #define _XTTCOMMON_H_ (1) @@ -83,14 +83,13 @@ # include # include # include -# ifdef FONTMODULE -/* for New Designed XFree86 font module */ -# include "xf86Module.h" -# endif +# include "xf86Module.h" # include "fontmisc.h" # include "xf86_ansic.h" #endif + +#include #include #include Index: xc/extras/X-TrueType/xttfuncs.c diff -u xc/extras/X-TrueType/xttfuncs.c:1.8 xc/extras/X-TrueType/xttfuncs.c:1.11 --- xc/extras/X-TrueType/xttfuncs.c:1.8 Tue Sep 26 11:56:41 2000 +++ xc/extras/X-TrueType/xttfuncs.c Mon Dec 17 23:23:55 2001 @@ -31,7 +31,7 @@ Notice=== */ -/* $XFree86: xc/extras/X-TrueType/xttfuncs.c,v 1.8 2000/09/26 15:56:41 tsi Exp $ */ +/* $XFree86: xc/extras/X-TrueType/xttfuncs.c,v 1.11 2001/12/18 04:23:55 dawes Exp $ */ #include "xttversion.h" @@ -162,7 +162,6 @@ TT_Glyph glyph; TT_SBit_Image* sbit; FreeTypeFaceInfoPtr ptr; - SPropRecValContainer contRecValue; dprintf((stderr, "FreeType_OpenFace: %s %s %s\n", @@ -367,7 +366,7 @@ FreeTypeFaceInfo *fi; TT_Instance instance; double base_size; - int num_faces, linesize; + int num_faces = 0, linesize; base_size = hypot(vals->point_matrix[2], vals->point_matrix[3]); @@ -455,7 +454,8 @@ ft->instance = instance; TT_Get_Instance_Metrics(instance, &ft->imetrics); - if (fi->prop.num_Faces == 0) { + num_faces = fi->prop.num_Faces; + if (num_faces == 0) { num_faces = 1; } if ((fi->prop.num_Glyphs / num_faces) > 256) { @@ -897,7 +897,7 @@ FreeTypeFont *ft = (FreeTypeFont*) pFont->fontPrivate; CharInfoPtr *glyphsBase = glyphs; - int spacing; + int spacing = 0; dprintf((stderr, "FreeTypeGetGlyphs: %p %d\n", pFont, count)); @@ -1070,7 +1070,7 @@ { int row, col; short c; - xCharInfo minchar, maxchar, *tmpchar; + xCharInfo minchar, maxchar, *tmpchar = NULL; int overlap, maxOverlap; long swidth = 0; long total_width = 0; @@ -1330,7 +1330,7 @@ char *dynStrTTFileName = NULL; char *dynStrRealFileName = NULL; SPropRecValContainer contRecValue; - int setwidth_value; + int setwidth_value = 0; double base_width, base_height; @@ -1868,11 +1868,11 @@ char* registry; unsigned index; } em_indexarray[] = { - "ascii", 0x4d, - "iso8859", 0x4d, - "iso646", 0x4d, - "jisx0201", 0x4d, - "koi8", 0x4d + {"ascii", 0x4d}, + {"iso8859", 0x4d}, + {"iso646", 0x4d}, + {"jisx0201", 0x4d}, + {"koi8", 0x4d} }; unsigned i=0; @@ -2052,6 +2052,18 @@ }, { ".ttc", 4, + (int (*)()) 0, FreeTypeOpenScalable, + (int (*)()) 0, FreeTypeGetInfoScalable, + 0, CAP_MATRIX | CAP_CHARSUBSETTING + }, + { + ".TTF", 4, + (int (*)()) 0, FreeTypeOpenScalable, + (int (*)()) 0, FreeTypeGetInfoScalable, + 0, CAP_MATRIX | CAP_CHARSUBSETTING + }, + { + ".TTC", 4, (int (*)()) 0, FreeTypeOpenScalable, (int (*)()) 0, FreeTypeGetInfoScalable, 0, CAP_MATRIX | CAP_CHARSUBSETTING Index: xc/extras/X-TrueType/xttstruct.h diff -u xc/extras/X-TrueType/xttstruct.h:1.1.1.2 xc/extras/X-TrueType/xttstruct.h:1.2 --- xc/extras/X-TrueType/xttstruct.h:1.1.1.2 Sun Feb 13 00:14:16 2000 +++ xc/extras/X-TrueType/xttstruct.h Tue Jul 31 20:44:33 2001 @@ -30,10 +30,12 @@ Notice=== */ +/* $XFree86: xc/extras/X-TrueType/xttstruct.h,v 1.2 2001/08/01 00:44:33 tsi Exp $ */ #ifndef _XTTSTRUCT_H_ #define _XTTSTRUCT_H_ +#define _FONTCACHE_SERVER_ #include "fontcache.h" Index: xc/extras/Xpm/cxpm/cxpm.c diff -u xc/extras/Xpm/cxpm/cxpm.c:1.1.1.1 xc/extras/Xpm/cxpm/cxpm.c:1.2 --- xc/extras/Xpm/cxpm/cxpm.c:1.1.1.1 Mon Jan 11 08:23:13 1999 +++ xc/extras/Xpm/cxpm/cxpm.c Tue Jul 31 20:44:34 2001 @@ -22,6 +22,7 @@ * used in advertising or otherwise to promote the sale, use or other dealings * in this Software without prior written authorization from Arnaud LE HORS. */ +/* $XFree86: xc/extras/Xpm/cxpm/cxpm.c,v 1.2 2001/08/01 00:44:34 tsi Exp $ */ /*****************************************************************************\ * cxpm.c: * @@ -117,6 +118,7 @@ } } +int main(argc, argv) int argc; char **argv; Index: xc/extras/Xpm/lib/CrBufFrI.c diff -u xc/extras/Xpm/lib/CrBufFrI.c:1.1.1.1 xc/extras/Xpm/lib/CrBufFrI.c:1.2 --- xc/extras/Xpm/lib/CrBufFrI.c:1.1.1.1 Mon Jan 11 08:23:09 1999 +++ xc/extras/Xpm/lib/CrBufFrI.c Sat Oct 27 23:32:09 2001 @@ -31,6 +31,7 @@ * * * Developed by Arnaud Le Hors * \*****************************************************************************/ +/* $XFree86: xc/extras/Xpm/lib/CrBufFrI.c,v 1.2 2001/10/28 03:32:09 tsi Exp $ */ #include "XpmI.h" @@ -269,7 +270,7 @@ s += cpp; for (key = 1; key <= NKEYS; key++, defaults++) { - if (s2 = *defaults) { + if ((s2 = *defaults)) { #ifndef VOID_SPRINTF s += #endif Index: xc/extras/Xpm/lib/CrDatFrI.c diff -u xc/extras/Xpm/lib/CrDatFrI.c:1.1.1.1 xc/extras/Xpm/lib/CrDatFrI.c:1.2 --- xc/extras/Xpm/lib/CrDatFrI.c:1.1.1.1 Mon Jan 11 08:23:09 1999 +++ xc/extras/Xpm/lib/CrDatFrI.c Sat Oct 27 23:32:09 2001 @@ -31,6 +31,7 @@ * * * Developed by Arnaud Le Hors * \*****************************************************************************/ +/* $XFree86: xc/extras/Xpm/lib/CrDatFrI.c,v 1.2 2001/10/28 03:32:09 tsi Exp $ */ #include "XpmI.h" @@ -229,7 +230,7 @@ s = buf + cpp; for (key = 1; key <= NKEYS; key++, defaults++) { - if (s2 = *defaults) { + if ((s2 = *defaults)) { #ifndef VOID_SPRINTF s += #endif Index: xc/extras/Xpm/lib/RdFToI.c diff -u xc/extras/Xpm/lib/RdFToI.c:1.1.1.1 xc/extras/Xpm/lib/RdFToI.c:1.2 --- xc/extras/Xpm/lib/RdFToI.c:1.1.1.1 Mon Jan 11 08:23:10 1999 +++ xc/extras/Xpm/lib/RdFToI.c Sat Oct 27 23:32:09 2001 @@ -31,6 +31,7 @@ * * * Developed by Arnaud Le Hors * \*****************************************************************************/ +/* $XFree86: xc/extras/Xpm/lib/RdFToI.c,v 1.2 2001/10/28 03:32:09 tsi Exp $ */ #include "XpmI.h" #include @@ -128,8 +129,9 @@ xpmData *mdata; { #ifndef NO_ZPIPE - char *compressfile, buf[BUFSIZ]; + char buf[BUFSIZ]; # ifdef STAT_ZFILE + char *compressfile; struct stat status; # endif #endif Index: xc/extras/Xpm/lib/WrFFrI.c diff -u xc/extras/Xpm/lib/WrFFrI.c:1.1.1.1 xc/extras/Xpm/lib/WrFFrI.c:1.2 --- xc/extras/Xpm/lib/WrFFrI.c:1.1.1.1 Mon Jan 11 08:23:10 1999 +++ xc/extras/Xpm/lib/WrFFrI.c Sat Oct 27 23:32:09 2001 @@ -31,6 +31,7 @@ * * * Developed by Arnaud Le Hors * \*****************************************************************************/ +/* $XFree86: xc/extras/Xpm/lib/WrFFrI.c,v 1.2 2001/10/28 03:32:09 tsi Exp $ */ /* * The code related to AMIGA has been added by @@ -119,23 +120,23 @@ name++; #endif /* let's try to make a valid C syntax name */ - if (dot = index(name, '.')) { + if (index(name, '.')) { strcpy(new_name, name); /* change '.' to '_' */ name = s = new_name; - while (dot = index(s, '.')) { + while ((dot = index(s, '.'))) { *dot = '_'; s = dot; } } - if (dot = index(name, '-')) { + if (index(name, '-')) { if (name != new_name) { strcpy(new_name, name); name = new_name; } /* change '-' to '_' */ s = name; - while (dot = index(s, '-')) { + while ((dot = index(s, '-'))) { *dot = '_'; s = dot; } @@ -226,7 +227,7 @@ fprintf(file, "\"%s", *defaults++); for (key = 1; key <= NKEYS; key++, defaults++) { - if (s = *defaults) + if ((s = *defaults)) fprintf(file, "\t%s %s", xpmColorKeys[key - 1], s); } fprintf(file, "\",\n"); Index: xc/extras/Xpm/lib/XpmI.h diff -u xc/extras/Xpm/lib/XpmI.h:1.4 xc/extras/Xpm/lib/XpmI.h:1.8 --- xc/extras/Xpm/lib/XpmI.h:1.4 Tue Sep 26 11:56:42 2000 +++ xc/extras/Xpm/lib/XpmI.h Mon Jan 7 14:40:23 2002 @@ -22,7 +22,7 @@ * used in advertising or otherwise to promote the sale, use or other dealings * in this Software without prior written authorization from GROUPE BULL. */ -/* $XFree86: xc/extras/Xpm/lib/XpmI.h,v 1.4 2000/09/26 15:56:42 tsi Exp $ */ +/* $XFree86: xc/extras/Xpm/lib/XpmI.h,v 1.8 2002/01/07 19:40:23 dawes Exp $ */ /*****************************************************************************\ * XpmI.h: * @@ -56,39 +56,8 @@ extern FILE *popen(); #endif -#if defined(SYSV) || defined(SVR4) || defined(VMS) || defined(WIN32) || defined(linux) -#include - -#ifndef index -#define index strchr -#endif - -#ifndef rindex -#define rindex strrchr -#endif - -#else /* defined(SYSV) || defined(SVR4) || defined(VMS) */ -#include -#endif - - - -#if defined(SYSV) || defined(SVR4) || defined(VMS) || defined(WIN32) -#ifndef bcopy -#define bcopy(source, dest, count) memcpy(dest, source, count) -#endif -#ifndef bzero -#define bzero(b, len) memset(b, 0, len) -#endif -#endif - -/* the following is defined in X11R6 but not in previous versions */ -#if defined(__alpha) || defined(__alpha__) || \ - defined(ia64) || defined(__ia64__) -#ifndef LONG64 -#define LONG64 -#endif -#endif +#include +#include #ifdef VMS #include Index: xc/extras/Xpm/lib/create.c diff -u xc/extras/Xpm/lib/create.c:1.1.1.1 xc/extras/Xpm/lib/create.c:1.3 --- xc/extras/Xpm/lib/create.c:1.1.1.1 Mon Jan 11 08:23:10 1999 +++ xc/extras/Xpm/lib/create.c Mon Jan 7 14:40:49 2002 @@ -32,6 +32,7 @@ * * * Developed by Arnaud Le Hors * \*****************************************************************************/ +/* $XFree86: xc/extras/Xpm/lib/create.c,v 1.3 2002/01/07 19:40:49 dawes Exp $ */ /* * The code related to FOR_MSW has been added by @@ -212,8 +213,7 @@ } CloseColor; static int -closeness_cmp(a, b) - Const void *a, *b; +closeness_cmp(Const void *a, Const void *b) { CloseColor *x = (CloseColor *) a, *y = (CloseColor *) b; @@ -517,7 +517,7 @@ /* variables stored in the XpmAttributes structure */ Visual *visual; Colormap colormap; - XpmColorSymbol *colorsymbols; + XpmColorSymbol *colorsymbols = NULL; unsigned int numsymbols; XpmAllocColorFunc allocColor; void *closure; @@ -525,7 +525,7 @@ char *colorname; unsigned int color, key; Bool pixel_defined; - XpmColorSymbol *symbol; + XpmColorSymbol *symbol = NULL; char **defaults; int ErrorStatus = XpmSuccess; char *s; @@ -1755,7 +1755,6 @@ register char *src; register char *dst; register int i; - register char *data; Pixel px; int nbytes; @@ -1788,7 +1787,6 @@ register char *src; register char *dst; register int i; - register char *data; Pixel px; int nbytes, ibpp; @@ -2186,7 +2184,7 @@ /* * parse extensions */ - if (info && (info->valuemask & XpmReturnExtensions)) + if (info && (info->valuemask & XpmReturnExtensions)) { if (extensions) { ErrorStatus = xpmParseExtensions(data, &info->extensions, &info->nextensions); @@ -2196,7 +2194,7 @@ info->extensions = NULL; info->nextensions = 0; } - + } /* * store found informations in the XpmImage structure */ Index: xc/extras/Xpm/lib/data.c diff -u xc/extras/Xpm/lib/data.c:1.2 xc/extras/Xpm/lib/data.c:1.4 --- xc/extras/Xpm/lib/data.c:1.2 Wed Feb 23 15:28:14 2000 +++ xc/extras/Xpm/lib/data.c Mon Jan 7 14:40:49 2002 @@ -31,14 +31,16 @@ * * * Developed by Arnaud Le Hors * \*****************************************************************************/ +/* $XFree86: xc/extras/Xpm/lib/data.c,v 1.4 2002/01/07 19:40:49 dawes Exp $ */ #ifndef CXPMPROG +#if 0 /* Official version number */ static char *RCS_Version = "$XpmVersion: 3.4k $"; /* Internal version number */ static char *RCS_Id = "Id: xpm.shar,v 3.71 1998/03/19 19:47:14 lehors Exp $"; - +#endif #include "XpmI.h" #endif #include @@ -49,8 +51,7 @@ #endif static int -ParseComment(data) - xpmData *data; +ParseComment(xpmData *data) { if (data->type == XPMBUFFER) { register char c; @@ -386,14 +387,10 @@ xpmDataType xpmDataTypes[] = { - "", "!", "\n", '\0', '\n', "", "", "", "", /* Natural type */ - "C", "/*", "*/", '"', '"', ",\n", "static char *", "[] = {\n", "};\n", - "Lisp", ";", "\n", '"', '"', "\n", "(setq ", " '(\n", "))\n", -#ifdef VMS - NULL -#else - NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL -#endif + {"", "!", "\n", '\0', '\n', "", "", "", ""}, /* Natural type */ + {"C", "/*", "*/", '"', '"', ",\n", "static char *", "[] = {\n", "};\n"}, + {"Lisp", ";", "\n", '"', '"', "\n", "(setq ", " '(\n", "))\n"}, + {NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL} }; /* Index: xc/extras/Xpm/lib/parse.c diff -u xc/extras/Xpm/lib/parse.c:1.2 xc/extras/Xpm/lib/parse.c:1.3 --- xc/extras/Xpm/lib/parse.c:1.2 Tue Sep 26 11:56:43 2000 +++ xc/extras/Xpm/lib/parse.c Sat Oct 27 23:32:10 2001 @@ -22,7 +22,7 @@ * used in advertising or otherwise to promote the sale, use or other dealings * in this Software without prior written authorization from GROUPE BULL. */ -/* $XFree86: xc/extras/Xpm/lib/parse.c,v 1.2 2000/09/26 15:56:43 tsi Exp $ */ +/* $XFree86: xc/extras/Xpm/lib/parse.c,v 1.3 2001/10/28 03:32:10 tsi Exp $ */ /*****************************************************************************\ * parse.c: * @@ -33,6 +33,7 @@ * * * Developed by Arnaud Le Hors * \*****************************************************************************/ +/* $XFree86: xc/extras/Xpm/lib/parse.c,v 1.3 2001/10/28 03:32:10 tsi Exp $ */ /* * The code related to FOR_MSW has been added by @@ -174,7 +175,7 @@ XpmColor **colorTablePtr; xpmHashTable *hashtable; { - unsigned int key, l, a, b; + unsigned int key = 0, l, a, b; unsigned int curkey; /* current color key */ unsigned int lastwaskey; /* key read */ char buf[BUFSIZ]; @@ -224,7 +225,7 @@ curkey = 0; lastwaskey = 0; *curbuf = '\0'; /* init curbuf */ - while (l = xpmNextWord(data, buf, BUFSIZ)) { + while ((l = xpmNextWord(data, buf, BUFSIZ))) { if (!lastwaskey) { for (key = 0, sptr = xpmColorKeys; key < NKEYS; key++, sptr++) @@ -304,7 +305,7 @@ */ xpmNextString(data); /* get to the next string */ *curbuf = '\0'; /* init curbuf */ - while (l = xpmNextWord(data, buf, BUFSIZ)) { + while ((l = xpmNextWord(data, buf, BUFSIZ))) { if (*curbuf != '\0') strcat(curbuf, " ");/* append space */ buf[l] = '\0'; @@ -695,7 +696,7 @@ /* * parse extensions */ - if (info && (info->valuemask & XpmReturnExtensions)) + if (info && (info->valuemask & XpmReturnExtensions)) { if (extensions) { ErrorStatus = xpmParseExtensions(data, &info->extensions, &info->nextensions); @@ -705,6 +706,7 @@ info->extensions = NULL; info->nextensions = 0; } + } /* * store found informations in the XpmImage structure Index: xc/extras/Xpm/lib/scan.c diff -u xc/extras/Xpm/lib/scan.c:1.1.1.1 xc/extras/Xpm/lib/scan.c:1.3 --- xc/extras/Xpm/lib/scan.c:1.1.1.1 Mon Jan 11 08:23:11 1999 +++ xc/extras/Xpm/lib/scan.c Mon Jan 7 14:40:49 2002 @@ -31,6 +31,7 @@ * * * Developed by Arnaud Le Hors * \*****************************************************************************/ +/* $XFree86: xc/extras/Xpm/lib/scan.c,v 1.3 2002/01/07 19:40:49 dawes Exp $ */ /* * The code related to FOR_MSW has been added by @@ -73,6 +74,9 @@ LFUNC(storeMaskPixel, int, (Pixel pixel, PixelsMap *pmap, unsigned int *index_return)); +typedef int (*storeFuncPtr)(Pixel pixel, PixelsMap *pmap, + unsigned int *index_return); + #ifndef FOR_MSW # ifndef AMIGA LFUNC(GetImagePixels, int, (XImage *image, unsigned int width, @@ -89,16 +93,16 @@ LFUNC(GetImagePixels1, int, (XImage *image, unsigned int width, unsigned int height, PixelsMap *pmap, - int (*storeFunc) ())); + storeFuncPtr storeFunc)); # else /* AMIGA */ LFUNC(AGetImagePixels, int, (XImage *image, unsigned int width, unsigned int height, PixelsMap *pmap, - int (*storeFunc) ())); + storeFuncPtr storeFunc)); # endif/* AMIGA */ #else /* ndef FOR_MSW */ LFUNC(MSWGetImagePixels, int, (Display *d, XImage *image, unsigned int width, unsigned int height, PixelsMap *pmap, - int (*storeFunc) ())); + storeFuncPtr storeFunc)); #endif LFUNC(ScanTransparentColor, int, (XpmColor *color, unsigned int cpp, XpmAttributes *attributes)); @@ -191,7 +195,7 @@ /* variables to return */ PixelsMap pmap; XpmColor *colorTable = NULL; - int ErrorStatus; + int ErrorStatus = 0; /* calculation variables */ unsigned int width = 0; @@ -385,7 +389,7 @@ ((XpmColor **) attributes->colorTable)[attributes->mask_pixel]; /* end 3.2 bc */ for (key = 1; key <= NKEYS; key++) { - if (s = mask_defaults[key]) { + if ((s = mask_defaults[key])) { defaults[key] = (char *) xpmstrdup(s); if (!defaults[key]) return (XpmNoMemory); @@ -423,10 +427,10 @@ XpmColor *color; XColor *xcolors = NULL, *xcolor; char *colorname, *s; - XpmColor *colorTable, **oldColorTable = NULL; + XpmColor *colorTable = NULL, **oldColorTable = NULL; unsigned int ancolors = 0; - Pixel *apixels; - unsigned int mask_pixel; + Pixel *apixels = NULL; + unsigned int mask_pixel = 0; Bool found; /* retrieve information from the XpmAttributes */ @@ -521,7 +525,7 @@ found = True; for (key = 1; key <= NKEYS; key++) { - if (s = adefaults[key]) + if ((s = adefaults[key])) defaults[key] = (char *) xpmstrdup(s); } } @@ -845,7 +849,7 @@ unsigned int width; unsigned int height; PixelsMap *pmap; - int (*storeFunc) (); + storeFuncPtr storeFunc; { unsigned int *iptr; int x, y; Index: xc/extras/Xpm/lib/xpm.h diff -u xc/extras/Xpm/lib/xpm.h:1.1.1.1 xc/extras/Xpm/lib/xpm.h:1.2 --- xc/extras/Xpm/lib/xpm.h:1.1.1.1 Mon Jan 11 08:23:11 1999 +++ xc/extras/Xpm/lib/xpm.h Wed Aug 22 19:36:44 2001 @@ -22,6 +22,7 @@ * used in advertising or otherwise to promote the sale, use or other dealings * in this Software without prior written authorization from GROUPE BULL. */ +/* $XFree86: xc/extras/Xpm/lib/xpm.h,v 1.2 2001/08/22 23:36:44 dawes Exp $ */ /*****************************************************************************\ * xpm.h: * @@ -392,7 +393,7 @@ FUNC(XpmReadFileToData, int, (char *filename, char ***data_return)); FUNC(XpmWriteFileFromData, int, (char *filename, char **data)); - FUNC(XpmAttributesSize, int, ()); + FUNC(XpmAttributesSize, int, (void)); FUNC(XpmFreeAttributes, void, (XpmAttributes *attributes)); FUNC(XpmFreeExtensions, void, (XpmExtension *extensions, int nextensions)); @@ -400,7 +401,7 @@ FUNC(XpmFreeXpmImage, void, (XpmImage *image)); FUNC(XpmFreeXpmInfo, void, (XpmInfo *info)); FUNC(XpmGetErrorString, char *, (int errcode)); - FUNC(XpmLibraryVersion, int, ()); + FUNC(XpmLibraryVersion, int, (void)); /* XpmImage functions */ FUNC(XpmReadFileToXpmImage, int, (char *filename, Index: xc/extras/Xpm/sxpm/sxpm.c diff -u xc/extras/Xpm/sxpm/sxpm.c:1.1.1.1 xc/extras/Xpm/sxpm/sxpm.c:1.3 --- xc/extras/Xpm/sxpm/sxpm.c:1.1.1.1 Mon Jan 11 08:23:12 1999 +++ xc/extras/Xpm/sxpm/sxpm.c Sat Oct 27 23:32:13 2001 @@ -22,6 +22,7 @@ * used in advertising or otherwise to promote the sale, use or other dealings * in this Software without prior written authorization from GROUPE BULL. */ +/* $XFree86: xc/extras/Xpm/sxpm/sxpm.c,v 1.3 2001/10/28 03:32:13 tsi Exp $ */ /*****************************************************************************\ * sxpm.c: * @@ -126,6 +127,7 @@ {"-icon", ".icon", XrmoptionSepArg, (XtPointer) NULL}, }; +int main(argc, argv) int argc; char **argv; @@ -549,6 +551,9 @@ XtMainLoop(); } Punt(0); + + /* Muffle gcc */ + return 0; } void @@ -686,7 +691,6 @@ void VersionInfo() { - int num; int format, libmajor; char libminor; Index: xc/extras/fonts/ClearlyU/README diff -u xc/extras/fonts/ClearlyU/README:1.3 xc/extras/fonts/ClearlyU/README:1.4 --- xc/extras/fonts/ClearlyU/README:1.3 Thu Dec 7 13:47:04 2000 +++ xc/extras/fonts/ClearlyU/README Wed Nov 21 15:58:10 2001 @@ -1,7 +1,7 @@ # -# Id: README,v 1.11 2000/12/06 22:13:11 mleisher Exp $ +# Id: README,v 1.13 2001/10/29 18:54:35 mleisher Exp $ # -# Copyright 2000 Computing Research Lab, New Mexico State University +# Copyright 2001 Computing Research Lab, New Mexico State University # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), @@ -23,13 +23,13 @@ # Version: 1.8 -6 December 2000 +29 October 2001 This set of fonts provides a 12pt, 100dpi proportional font with many of the glyphs needed for Unicode text. I call the typeface "ClearlyU" and it was influenced by Donald Knuth's Computer Modern. -The fonts together contain 7564 glyphs at the moment. +The fonts together contain 8669 glyphs at the moment. Information about this font and samples, are located at: @@ -40,6 +40,12 @@ Thanks to Otto Stolz for finding spelling errors in one of the Greek samples. +Thanks to Theppitak Karoonboonyanan for his excellent +cleanup of the Thai glyphs, particularly the vowel and tone marks. + +Thanks to Ahmed Abdelali for his help in improving the +Arabic glyphs. + AUTHOR ====== Mark Leisher @@ -48,7 +54,22 @@ ======= CHANGES FROM 1.7 ---------------- +---------------- + + o Added Unified Canadian Aboriginal Syllabics glyphs. + + o Added Cherokee glyphs. + + o Changed some of the "caron" forms to the preferred "apostrophe" forms. + + o Added Thaana (Dhivehi - Maldivian) glyphs. + + o Finished the Arabic glyph improvements. + + o Adjusted the Lao dependent vowels, tones, and marks based on work done on + the Thai glyphs. + + o Replaced the Thai glyphs with cleaned up versions. o Adjusted the shapes of U+01A2 and U+01A3 based on: http://www.indigo.ie/egt/standards/iso10646/pdf/gha.pdf Index: xc/extras/fonts/ClearlyU/cu-alt12.bdf diff -u xc/extras/fonts/ClearlyU/cu-alt12.bdf:1.3 xc/extras/fonts/ClearlyU/cu-alt12.bdf:1.4 --- xc/extras/fonts/ClearlyU/cu-alt12.bdf:1.3 Thu Dec 7 13:47:04 2000 +++ xc/extras/fonts/ClearlyU/cu-alt12.bdf Wed Nov 21 15:58:11 2001 @@ -1,9 +1,8 @@ STARTFONT 2.1 COMMENT -COMMENT Id: cu-alt12.bdf,v 1.9 2000/12/06 21:58:14 mleisher Exp $ +COMMENT Id: cu-alt12.bdf,v 1.10 2001/10/23 23:55:30 mleisher Exp $ COMMENT -COMMENT Copyright 1997, 1998, 1999 Computing Research Labs, New Mexico State -COMMENT University +COMMENT Copyright 2001 Computing Research Labs, New Mexico State University COMMENT COMMENT Permission is hereby granted, free of charge, to any person COMMENT obtaining a copy of this software and associated documentation @@ -33,7 +32,7 @@ SIZE 12 100 100 FONTBOUNDINGBOX 18 24 -1 -7 STARTPROPERTIES 21 -COPYRIGHT "1997, 1998 Computing Research Lab, New Mexico State University." +COPYRIGHT "2001 Computing Research Lab, New Mexico State University." POINT_SIZE 120 PIXEL_SIZE 17 RESOLUTION_X 100 @@ -55,7 +54,56 @@ X_HEIGHT 7 DEFAULT_CHAR 65534 ENDPROPERTIES -CHARS 157 +CHARS 420 +STARTCHAR char0 +ENCODING -1 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING -1 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING -1 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING -1 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING -1 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING -1 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 0 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR STARTCHAR uni010F ENCODING 271 SWIDTH 420 0 @@ -99,8 +147,30 @@ 10 08 38 +ENDCHAR +STARTCHAR C076 +ENCODING 317 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 15 0 0 +BITMAP +44 +38 +10 +00 +F8 +20 +20 +20 +20 +20 +21 +21 +21 +23 +FF ENDCHAR -STARTCHAR uni013E +STARTCHAR C108 ENCODING 318 SWIDTH 240 0 DWIDTH 4 0 @@ -210,40 +280,97 @@ 08 10 ENDCHAR -STARTCHAR uni03DE -ENCODING 990 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 11 1 0 +STARTCHAR C116 +ENCODING 357 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 14 0 0 BITMAP -C0 +88 +70 +20 +00 20 20 20 +F8 20 -3F -02 -02 +20 +20 +24 +24 +18 +ENDCHAR +STARTCHAR 0x03DE +ENCODING 990 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 14 1 -3 +BITMAP +1C00 +2200 +4100 +8080 +8080 +8080 +8080 +8080 +4100 +2200 +1C00 +0800 +0800 +1C00 +ENDCHAR +STARTCHAR 0x03DF +ENCODING 991 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 10 1 -3 +BITMAP +70 +88 +88 +88 +88 +88 +70 +20 +20 +70 +ENDCHAR +STARTCHAR 0x03E0 +ENCODING 992 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 12 1 -1 +BITMAP +E0 +18 04 +0A +12 +23 +45 +89 +11 +22 +E2 04 -08 ENDCHAR -STARTCHAR uni03DF -ENCODING 991 +STARTCHAR 0x03E0 +ENCODING 993 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 10 1 0 +BBX 6 7 1 0 BITMAP -20 -20 -40 -40 -FC -08 -08 -10 -10 -20 +F0 +18 +64 +8C +34 +44 +E8 ENDCHAR STARTCHAR uni0431 ENCODING 1073 @@ -263,6 +390,58 @@ 88 70 ENDCHAR +STARTCHAR 0x047C +ENCODING 1148 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 13 16 1 0 +BITMAP +0F00 +1080 +2E40 +2D30 +0000 +3060 +4010 +8008 +8008 +8708 +8208 +8208 +8208 +8208 +4510 +38E0 +ENDCHAR +STARTCHAR 0x047D +ENCODING 1149 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +3800 +4400 +B300 +A800 +4100 +8080 +9C80 +8880 +8880 +4900 +3600 +ENDCHAR +STARTCHAR 0x0483 +ENCODING 1155 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 4 1 12 +BITMAP +3C00 +4200 +B900 +B4C0 +ENDCHAR STARTCHAR uni066B ENCODING 1643 SWIDTH 360 0 @@ -2913,134 +3092,5636 @@ 2180 F880 ENDCHAR -STARTCHAR uniF0C6 -ENCODING 61638 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 13 1 0 -BITMAP -7800 -8400 -C400 -0400 -3F80 -4440 -4440 -4440 -3F80 -0400 -0460 -0420 -03C0 -ENDCHAR -STARTCHAR uniF0F7 -ENCODING 61687 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 -BITMAP -78 -84 -C4 -04 -08 -10 -20 -40 -80 -8C -84 -78 -ENDCHAR -STARTCHAR uniF0F8 -ENCODING 61688 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR uni2800 +ENCODING 10240 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 BITMAP -18 -24 -20 -20 -20 -10 -08 44 -84 -84 -84 -78 -ENDCHAR -STARTCHAR uniFBA8 -ENCODING 64424 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 7 10 0 -4 -BITMAP -10 -10 -10 -10 -10 -EE +AA +44 00 -10 -20 -30 -ENDCHAR -STARTCHAR uniFEEC -ENCODING 65260 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 6 8 0 -6 -BITMAP -40 -CC -30 -20 -20 -24 -28 -0C -ENDCHAR -STARTCHAR uniFFFD -ENCODING 65533 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 15 0 0 -BITMAP -0100 -0380 -07C0 -0C60 -1BB0 -3BB8 -7F7C -FEFE -7EFC -3FF8 -1EF0 -0C60 -06C0 -0380 -0100 +44 +AA +44 +00 +44 +AA +44 +00 +44 +AA +44 ENDCHAR -STARTCHAR uniFFFE -ENCODING 65534 +STARTCHAR uni2801 +ENCODING 10241 SWIDTH 600 0 DWIDTH 10 0 -BBX 7 11 2 0 +BBX 7 15 1 0 BITMAP +44 +EA +44 +00 +44 AA +44 00 -82 +44 +AA +44 00 -82 +44 +AA +44 +ENDCHAR +STARTCHAR uni2802 +ENCODING 10242 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 00 -82 +44 +EA +44 00 -82 +44 +AA +44 00 +44 AA +44 +ENDCHAR +STARTCHAR uni2803 +ENCODING 10243 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2804 +ENCODING 10244 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2805 +ENCODING 10245 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2806 +ENCODING 10246 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2807 +ENCODING 10247 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2808 +ENCODING 10248 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2809 +ENCODING 10249 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni280A +ENCODING 10250 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni280B +ENCODING 10251 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni280C +ENCODING 10252 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni280D +ENCODING 10253 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni280E +ENCODING 10254 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni280F +ENCODING 10255 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2810 +ENCODING 10256 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2811 +ENCODING 10257 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2812 +ENCODING 10258 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2813 +ENCODING 10259 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2814 +ENCODING 10260 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2815 +ENCODING 10261 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2816 +ENCODING 10262 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2817 +ENCODING 10263 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2818 +ENCODING 10264 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2819 +ENCODING 10265 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni281A +ENCODING 10266 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni281B +ENCODING 10267 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni281C +ENCODING 10268 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni281D +ENCODING 10269 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni281E +ENCODING 10270 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni281F +ENCODING 10271 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2820 +ENCODING 10272 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2821 +ENCODING 10273 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2822 +ENCODING 10274 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2823 +ENCODING 10275 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2824 +ENCODING 10276 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2825 +ENCODING 10277 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2826 +ENCODING 10278 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2827 +ENCODING 10279 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2828 +ENCODING 10280 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2829 +ENCODING 10281 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni282A +ENCODING 10282 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni282B +ENCODING 10283 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni282C +ENCODING 10284 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni282D +ENCODING 10285 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni282E +ENCODING 10286 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni282F +ENCODING 10287 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2830 +ENCODING 10288 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2831 +ENCODING 10289 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2832 +ENCODING 10290 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2833 +ENCODING 10291 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2834 +ENCODING 10292 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2835 +ENCODING 10293 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2836 +ENCODING 10294 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2837 +ENCODING 10295 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2838 +ENCODING 10296 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2839 +ENCODING 10297 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni283A +ENCODING 10298 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni283B +ENCODING 10299 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni283C +ENCODING 10300 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni283D +ENCODING 10301 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni283E +ENCODING 10302 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni283F +ENCODING 10303 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2840 +ENCODING 10304 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2841 +ENCODING 10305 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2842 +ENCODING 10306 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2843 +ENCODING 10307 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2844 +ENCODING 10308 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2845 +ENCODING 10309 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2846 +ENCODING 10310 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2847 +ENCODING 10311 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2848 +ENCODING 10312 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2849 +ENCODING 10313 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni284A +ENCODING 10314 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni284B +ENCODING 10315 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni284C +ENCODING 10316 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni284D +ENCODING 10317 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni284E +ENCODING 10318 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni284F +ENCODING 10319 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2850 +ENCODING 10320 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2851 +ENCODING 10321 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2852 +ENCODING 10322 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2853 +ENCODING 10323 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2854 +ENCODING 10324 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2855 +ENCODING 10325 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2856 +ENCODING 10326 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2857 +ENCODING 10327 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2858 +ENCODING 10328 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2859 +ENCODING 10329 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni285A +ENCODING 10330 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni285B +ENCODING 10331 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni285C +ENCODING 10332 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni285D +ENCODING 10333 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni285E +ENCODING 10334 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni285F +ENCODING 10335 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2860 +ENCODING 10336 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2861 +ENCODING 10337 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2862 +ENCODING 10338 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2863 +ENCODING 10339 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2864 +ENCODING 10340 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2865 +ENCODING 10341 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2866 +ENCODING 10342 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2867 +ENCODING 10343 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2868 +ENCODING 10344 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2869 +ENCODING 10345 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni286A +ENCODING 10346 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni286B +ENCODING 10347 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni286C +ENCODING 10348 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni286D +ENCODING 10349 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni286E +ENCODING 10350 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni286F +ENCODING 10351 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2870 +ENCODING 10352 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2871 +ENCODING 10353 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2872 +ENCODING 10354 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2873 +ENCODING 10355 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2874 +ENCODING 10356 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2875 +ENCODING 10357 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2876 +ENCODING 10358 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2877 +ENCODING 10359 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +AA +44 +ENDCHAR +STARTCHAR uni2878 +ENCODING 10360 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2879 +ENCODING 10361 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni287A +ENCODING 10362 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni287B +ENCODING 10363 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni287C +ENCODING 10364 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni287D +ENCODING 10365 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni287E +ENCODING 10366 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni287F +ENCODING 10367 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +EA +44 +ENDCHAR +STARTCHAR uni2880 +ENCODING 10368 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2881 +ENCODING 10369 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2882 +ENCODING 10370 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2883 +ENCODING 10371 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2884 +ENCODING 10372 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2885 +ENCODING 10373 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2886 +ENCODING 10374 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2887 +ENCODING 10375 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2888 +ENCODING 10376 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni2889 +ENCODING 10377 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni288A +ENCODING 10378 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni288B +ENCODING 10379 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni288C +ENCODING 10380 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni288D +ENCODING 10381 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni288E +ENCODING 10382 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni288F +ENCODING 10383 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni2890 +ENCODING 10384 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2891 +ENCODING 10385 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2892 +ENCODING 10386 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2893 +ENCODING 10387 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2894 +ENCODING 10388 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2895 +ENCODING 10389 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2896 +ENCODING 10390 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2897 +ENCODING 10391 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni2898 +ENCODING 10392 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni2899 +ENCODING 10393 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni289A +ENCODING 10394 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni289B +ENCODING 10395 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni289C +ENCODING 10396 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni289D +ENCODING 10397 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni289E +ENCODING 10398 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni289F +ENCODING 10399 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28A0 +ENCODING 10400 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28A1 +ENCODING 10401 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28A2 +ENCODING 10402 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28A3 +ENCODING 10403 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28A4 +ENCODING 10404 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28A5 +ENCODING 10405 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28A6 +ENCODING 10406 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28A7 +ENCODING 10407 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28A8 +ENCODING 10408 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28A9 +ENCODING 10409 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28AA +ENCODING 10410 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28AB +ENCODING 10411 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28AC +ENCODING 10412 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28AD +ENCODING 10413 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28AE +ENCODING 10414 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28AF +ENCODING 10415 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28B0 +ENCODING 10416 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28B1 +ENCODING 10417 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28B2 +ENCODING 10418 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28B3 +ENCODING 10419 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28B4 +ENCODING 10420 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28B5 +ENCODING 10421 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28B6 +ENCODING 10422 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28B7 +ENCODING 10423 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28B8 +ENCODING 10424 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28B9 +ENCODING 10425 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28BA +ENCODING 10426 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28BB +ENCODING 10427 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +AA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28BC +ENCODING 10428 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28BD +ENCODING 10429 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28BE +ENCODING 10430 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28BF +ENCODING 10431 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +EA +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28C0 +ENCODING 10432 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28C1 +ENCODING 10433 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28C2 +ENCODING 10434 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28C3 +ENCODING 10435 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28C4 +ENCODING 10436 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28C5 +ENCODING 10437 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28C6 +ENCODING 10438 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28C7 +ENCODING 10439 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28C8 +ENCODING 10440 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28C9 +ENCODING 10441 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28CA +ENCODING 10442 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28CB +ENCODING 10443 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28CC +ENCODING 10444 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28CD +ENCODING 10445 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28CE +ENCODING 10446 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28CF +ENCODING 10447 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28D0 +ENCODING 10448 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28D1 +ENCODING 10449 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28D2 +ENCODING 10450 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28D3 +ENCODING 10451 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28D4 +ENCODING 10452 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28D5 +ENCODING 10453 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28D6 +ENCODING 10454 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28D7 +ENCODING 10455 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28D8 +ENCODING 10456 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28D9 +ENCODING 10457 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28DA +ENCODING 10458 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28DB +ENCODING 10459 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28DC +ENCODING 10460 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28DD +ENCODING 10461 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AA +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28DE +ENCODING 10462 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28DF +ENCODING 10463 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EA +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28E0 +ENCODING 10464 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28E1 +ENCODING 10465 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28E2 +ENCODING 10466 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28E3 +ENCODING 10467 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28E4 +ENCODING 10468 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28E5 +ENCODING 10469 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28E6 +ENCODING 10470 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28E7 +ENCODING 10471 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28E8 +ENCODING 10472 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28E9 +ENCODING 10473 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28EA +ENCODING 10474 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28EB +ENCODING 10475 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28EC +ENCODING 10476 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28ED +ENCODING 10477 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28EE +ENCODING 10478 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AA +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28EF +ENCODING 10479 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EA +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28F0 +ENCODING 10480 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28F1 +ENCODING 10481 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28F2 +ENCODING 10482 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28F3 +ENCODING 10483 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28F4 +ENCODING 10484 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28F5 +ENCODING 10485 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28F6 +ENCODING 10486 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28F7 +ENCODING 10487 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +AE +44 +ENDCHAR +STARTCHAR uni28F8 +ENCODING 10488 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28F9 +ENCODING 10489 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28FA +ENCODING 10490 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28FB +ENCODING 10491 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +AE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28FC +ENCODING 10492 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28FD +ENCODING 10493 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +AE +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28FE +ENCODING 10494 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +AE +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +EE +44 +ENDCHAR +STARTCHAR uni28FF +ENCODING 10495 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 15 1 0 +BITMAP +44 +EE +44 +00 +44 +EE +44 +00 +44 +EE +44 +00 +44 +EE +44 ENDCHAR ENDFONT Index: xc/extras/fonts/ClearlyU/cu-arabic12.bdf diff -u xc/extras/fonts/ClearlyU/cu-arabic12.bdf:1.3 xc/extras/fonts/ClearlyU/cu-arabic12.bdf:1.4 --- xc/extras/fonts/ClearlyU/cu-arabic12.bdf:1.3 Thu Dec 7 13:47:04 2000 +++ xc/extras/fonts/ClearlyU/cu-arabic12.bdf Wed Nov 21 15:58:14 2001 @@ -1,9 +1,8 @@ STARTFONT 2.1 COMMENT -COMMENT Id: cu-arabic12.bdf,v 1.5 2000/12/06 21:58:14 mleisher Exp $ +COMMENT Id: cu-arabic12.bdf,v 1.6 2001/10/23 23:55:31 mleisher Exp $ COMMENT -COMMENT Copyright 1997, 1998, 1999 Computing Research Labs, New Mexico State -COMMENT University +COMMENT Copyright 2001 Computing Research Labs, New Mexico State University COMMENT COMMENT Permission is hereby granted, free of charge, to any person COMMENT obtaining a copy of this software and associated documentation @@ -31,8 +30,9 @@ COMMENT FONT -MUTT-ClearlyU Arabic Extra-Medium-R-Normal--17-120-100-100-P-103-FontSpecific-0 SIZE 12 100 100 -FONTBOUNDINGBOX 21 29 -1 -10 -STARTPROPERTIES 19 +FONTBOUNDINGBOX 21 27 -1 -10 +STARTPROPERTIES 20 +COPYRIGHT "2001 Computing Research Lab, New Mexico State University." POINT_SIZE 120 PIXEL_SIZE 17 RESOLUTION_X 100 @@ -49,7 +49,7 @@ ADD_STYLE_NAME "" CHARSET_REGISTRY "FontSpecific" CHARSET_ENCODING "0" -_XMBDFED_INFO "Edited with xmbdfed 4.3." +_XMBDFED_INFO "Edited with xmbdfed 4.4." CAP_HEIGHT 11 X_HEIGHT 7 ENDPROPERTIES @@ -299,7 +299,7 @@ 10 10 10 -EC +FC ENDCHAR STARTCHAR uni000C ENCODING 12 @@ -331,7 +331,7 @@ 4000 8010 8010 -C06E +C07E 7F80 0600 0900 @@ -367,7 +367,7 @@ 10 10 10 -EC +FC 60 90 60 @@ -403,7 +403,7 @@ 4000 8010 8010 -C06E +C07E 7F80 ENDCHAR STARTCHAR uni0012 @@ -438,7 +438,7 @@ 10 10 10 -EC +FC ENDCHAR STARTCHAR uni0014 ENCODING 20 @@ -492,7 +492,7 @@ ENCODING 22 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 11 0 0 +BBX 9 10 0 0 BITMAP 0300 0400 @@ -501,16 +501,15 @@ 0000 0000 3800 -4780 -0C00 -1000 -E000 +4600 +0100 +FF80 ENDCHAR -STARTCHAR uni0017 +STARTCHAR uni0016 ENCODING 23 SWIDTH 600 0 DWIDTH 10 0 -BBX 10 11 0 0 +BBX 10 10 0 0 BITMAP 0300 0400 @@ -519,10 +518,9 @@ 0000 0000 3800 -4780 -0D00 -1100 -E0C0 +4600 +0100 +FFC0 ENDCHAR STARTCHAR uni0018 ENCODING 24 @@ -574,43 +572,41 @@ 60C0 1F00 ENDCHAR -STARTCHAR uni001A +STARTCHAR uni0016 ENCODING 26 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 12 0 0 +BBX 9 11 0 0 BITMAP -0400 -0400 +0800 +0800 0000 -0400 -0400 +0800 +0800 0000 0000 3800 -4780 -0C00 -1000 -E000 +4600 +0100 +FF80 ENDCHAR -STARTCHAR uni001B +STARTCHAR uni0016 ENCODING 27 SWIDTH 600 0 DWIDTH 10 0 -BBX 10 12 0 0 +BBX 10 11 1 0 BITMAP -0400 -0400 +0800 +0800 0000 -0400 -0400 +0800 +0800 0000 0000 3800 -4780 -0D00 -1100 -E0C0 +4600 +0100 +FFC0 ENDCHAR STARTCHAR uni001C ENCODING 28 @@ -660,41 +656,39 @@ 60C0 1F00 ENDCHAR -STARTCHAR uni001E +STARTCHAR uni0016 ENCODING 30 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 11 0 0 +BBX 9 10 0 0 BITMAP -0400 -0400 -0A00 -0A00 +0800 +0800 +1400 +1400 0000 0000 3800 -4780 -0C00 -1000 -E000 +4600 +0100 +FF80 ENDCHAR -STARTCHAR uni001F +STARTCHAR uni0016 ENCODING 31 SWIDTH 600 0 DWIDTH 10 0 -BBX 10 11 0 0 +BBX 10 10 1 0 BITMAP -0400 -0400 -0A00 -0A00 +0800 +0800 +1400 +1400 0000 0000 3800 -4780 -0D00 -1100 -E0C0 +4600 +0100 +FFC0 ENDCHAR STARTCHAR uni0020 ENCODING 32 @@ -702,12 +696,12 @@ DWIDTH 6 0 BBX 5 9 1 -3 BITMAP -20 10 -08 +10 08 08 -F0 +98 +60 20 50 20 @@ -734,12 +728,12 @@ DWIDTH 6 0 BBX 5 10 1 -4 BITMAP -20 10 -08 +10 08 08 -F0 +98 +60 00 00 20 @@ -775,12 +769,12 @@ 70 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 00 00 20 @@ -822,12 +816,12 @@ 20 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR STARTCHAR uni0027 ENCODING 39 @@ -862,12 +856,12 @@ 50 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR STARTCHAR uni0029 ENCODING 41 @@ -1158,10 +1152,10 @@ BITMAP 0010 0010 -0002 -0002 -0012 +0000 +0000 0112 +0112 40EC 8080 8080 @@ -1173,14 +1167,15 @@ ENCODING 57 SWIDTH 1020 0 DWIDTH 17 0 -BBX 17 11 1 -5 +BBX 17 12 1 -5 BITMAP 001000 001000 000000 -000200 +000000 +011200 011200 -40ED80 +40FF80 808000 808000 808800 @@ -1196,10 +1191,10 @@ 0100 0100 0000 -0020 -0120 +0000 1120 -EEC0 +1120 +FFE0 0000 0000 0080 @@ -1215,9 +1210,9 @@ 0100 0000 0000 -0100 1120 -EED8 +1120 +FFF8 0000 0000 0080 @@ -1227,11 +1222,10 @@ ENCODING 60 SWIDTH 960 0 DWIDTH 16 0 -BBX 15 10 1 -6 +BBX 15 9 1 -6 BITMAP -0002 -0012 0112 +0112 40EC 8080 8080 @@ -1246,9 +1240,9 @@ DWIDTH 17 0 BBX 17 9 1 -6 BITMAP -000200 +011200 011200 -40ED80 +40FF80 808000 808000 809400 @@ -1260,12 +1254,11 @@ ENCODING 62 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 10 0 -6 +BBX 11 9 0 -6 BITMAP -0020 -0120 +1120 1120 -EEC0 +FFE0 0000 0000 0280 @@ -1279,9 +1272,9 @@ DWIDTH 13 0 BBX 13 9 0 -6 BITMAP -0100 +1120 1120 -EED8 +FFF8 0000 0000 0280 @@ -1299,10 +1292,10 @@ 0010 0028 0028 +0000 0000 -0002 -0012 0112 +0112 40EC 8080 8080 @@ -1315,16 +1308,17 @@ ENCODING 65 SWIDTH 1020 0 DWIDTH 17 0 -BBX 17 14 1 -6 +BBX 17 15 1 -6 BITMAP 001000 001000 002800 002800 +000000 000000 -000200 011200 -40ED80 +011200 +40FF80 808000 808000 809400 @@ -1343,10 +1337,10 @@ 0280 0280 0000 -0020 -0120 +0000 +1120 1120 -EEC0 +FFE0 0000 0000 0280 @@ -1366,9 +1360,9 @@ 0280 0000 0000 -0100 +1120 1120 -EED8 +FFF8 0000 0000 0280 @@ -1380,13 +1374,12 @@ ENCODING 68 SWIDTH 1080 0 DWIDTH 18 0 -BBX 17 10 1 -5 +BBX 17 9 1 -5 BITMAP 000700 -000880 -001080 -012700 -40F800 +001880 +012080 +40FF00 80C000 808000 808A00 @@ -1397,12 +1390,11 @@ ENCODING 69 SWIDTH 1080 0 DWIDTH 18 0 -BBX 18 10 1 -5 +BBX 18 9 1 -5 BITMAP 000700 -000880 -001080 -012100 +001880 +012080 40FFC0 80C000 808000 @@ -1414,15 +1406,14 @@ ENCODING 70 SWIDTH 840 0 DWIDTH 14 0 -BBX 13 9 0 -4 +BBX 13 8 0 -4 BITMAP 0070 -0088 -0108 -2270 -DF80 -0400 +2188 +2208 +FFF0 0000 +0000 0140 0140 ENDCHAR @@ -1430,14 +1421,13 @@ ENCODING 71 SWIDTH 780 0 DWIDTH 13 0 -BBX 13 9 0 -4 +BBX 13 8 0 -4 BITMAP 00E0 -0110 -0210 -2420 -DFF8 -0800 +2310 +2410 +FFF8 +0000 0000 0280 0280 @@ -1453,11 +1443,11 @@ 002800 002800 000000 +000000 000700 -000880 -001080 -012700 -40F800 +001880 +012080 +40FF00 80C000 808000 808000 @@ -1475,10 +1465,10 @@ 002800 002800 000000 +000000 000700 -000880 -001080 -012100 +001880 +012080 40FFC0 80C000 808000 @@ -1490,37 +1480,35 @@ ENCODING 74 SWIDTH 840 0 DWIDTH 14 0 -BBX 13 11 0 -1 +BBX 13 10 0 0 BITMAP 0100 0100 0280 0280 0000 +0000 0070 -0088 -0108 -2270 -DF80 -0400 +2188 +2208 +FFF0 ENDCHAR STARTCHAR uni004B ENCODING 75 SWIDTH 780 0 DWIDTH 13 0 -BBX 13 11 0 -1 +BBX 13 10 0 0 BITMAP 0200 0200 0500 0500 0000 +0000 00E0 -0110 -0210 -2420 -DFF8 -0800 +2310 +2410 +FFF8 ENDCHAR STARTCHAR uni004C ENCODING 76 @@ -1532,12 +1520,12 @@ 32 25 25 +20 20 -26 -29 +2E 31 -26 -F8 +21 +FE ENDCHAR STARTCHAR uni004D ENCODING 77 @@ -1550,10 +1538,10 @@ 2500 2500 2000 -2600 -2900 +2000 +2E00 3100 -2200 +2100 FFC0 ENDCHAR STARTCHAR uni004E @@ -1567,11 +1555,11 @@ 25 25 20 -26 -29 +20 +2E 31 -26 -F8 +21 +FE ENDCHAR STARTCHAR uni004F ENCODING 79 @@ -1583,11 +1571,11 @@ 3200 2500 2500 +2000 2000 -2600 -2900 +2E00 3100 -2200 +2100 FFC0 ENDCHAR STARTCHAR uni0050 @@ -1654,8 +1642,8 @@ 1C 20 40 -26 -F8 +22 +FC ENDCHAR STARTCHAR uni0053 ENCODING 83 @@ -1728,9 +1716,9 @@ 18 24 24 -28 -10 -EF +18 +18 +E7 ENDCHAR STARTCHAR uni0058 ENCODING 88 @@ -1797,9 +1785,9 @@ 18 24 24 -28 -10 -EF +18 +18 +E7 00 00 40 @@ -1844,7 +1832,7 @@ 802C 8014 8004 -403B +403F 3FC0 0000 0000 @@ -1886,9 +1874,9 @@ 18 24 24 -28 -10 -EF +18 +18 +E7 00 00 40 @@ -1963,9 +1951,9 @@ 18 24 24 -28 -10 -EF +18 +18 +E7 00 00 28 @@ -2048,7 +2036,7 @@ 24 28 10 -EF +FF ENDCHAR STARTCHAR uni0068 ENCODING 104 @@ -2133,14 +2121,15 @@ 24 28 10 -EF +FF ENDCHAR STARTCHAR uni006C ENCODING 108 SWIDTH 960 0 DWIDTH 16 0 -BBX 14 8 0 0 +BBX 14 9 0 0 BITMAP +0180 0600 1800 2000 @@ -2164,14 +2153,15 @@ 1FF8 0004 8004 -7FFB +7FFF ENDCHAR STARTCHAR uni006E ENCODING 110 SWIDTH 900 0 DWIDTH 15 0 -BBX 14 8 0 0 +BBX 14 9 0 0 BITMAP +0180 0600 1800 2000 @@ -2185,8 +2175,9 @@ ENCODING 111 SWIDTH 960 0 DWIDTH 16 0 -BBX 16 8 0 0 +BBX 16 9 0 0 BITMAP +0180 0600 1800 2000 @@ -2194,242 +2185,234 @@ 1FF8 0004 0004 -FFFB +FFFF ENDCHAR STARTCHAR uni0070 ENCODING 112 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 14 1 -1 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 11 1 -1 BITMAP -0006 -0018 -0068 -01A8 -0210 -0200 -0100 -00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +0008 +0030 +00E8 +0128 +0110 +0080 +4060 +8010 +8010 +8060 +7F80 ENDCHAR STARTCHAR uni0071 ENCODING 113 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 14 1 -1 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 10 1 0 BITMAP -0006 -0018 -0068 -01A8 -0210 -0200 -0100 -00C0 -0020 -4010 -8008 -8008 -C037 -7FC0 +0008 +0030 +00E8 +0128 +0110 +4080 +8060 +8010 +8010 +7FFE ENDCHAR STARTCHAR uni0072 ENCODING 114 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 11 0 0 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 10 0 0 BITMAP -00C0 -0300 -0D00 -3500 -4200 -4000 -2000 -1800 -0400 -0400 -F800 +01 +06 +1D +25 +22 +10 +0C +02 +02 +FC ENDCHAR STARTCHAR uni0073 ENCODING 115 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 11 0 0 +BBX 11 10 0 0 BITMAP -00C0 +0080 0300 -0D00 -3500 -4200 -4000 -2000 -1800 -0400 -0700 -F8E0 -ENDCHAR -STARTCHAR uni0074 -ENCODING 116 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 13 1 0 -BITMAP -0800 +0E80 +1280 +1100 0800 -0000 -0100 -0180 -0100 -0900 -1900 -0900 -1900 +0600 0100 0100 -FE00 +FFE0 ENDCHAR STARTCHAR uni0075 -ENCODING 117 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 14 1 -1 +ENCODING 116 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 13 1 0 BITMAP -0200 -0200 +0400 +0400 0000 -0010 -0018 -0010 -0210 -0610 -0210 -4610 -8010 -8010 -C06C -7F80 +0080 +00C0 +0080 +0480 +0C80 +0480 +8C80 +8080 +C080 +7F00 ENDCHAR -STARTCHAR uni0076 -ENCODING 118 +STARTCHAR uni0075 +ENCODING 117 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 13 0 0 +BBX 11 13 1 0 BITMAP -1000 -1000 -00C0 -0300 -0C00 -3000 -4000 -4000 -2000 -1800 0400 0400 -F800 +0000 +0080 +00C0 +0080 +0480 +0C80 +0480 +8C80 +8080 +C080 +7FE0 ENDCHAR +STARTCHAR uni0076 +ENCODING 118 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 0 0 +BITMAP +08 +08 +00 +01 +06 +18 +20 +20 +10 +0C +02 +02 +FC +ENDCHAR STARTCHAR uni0077 ENCODING 119 SWIDTH 660 0 DWIDTH 11 0 BBX 11 13 0 0 BITMAP -1000 -1000 -00C0 +0400 +0400 +0000 +0080 0300 0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0700 -F8E0 +1000 +1000 +0800 +0600 +0100 +0100 +FFE0 ENDCHAR -STARTCHAR uni0078 +STARTCHAR uni0079 ENCODING 120 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 16 1 -6 +BBX 10 19 1 -6 BITMAP -0100 -0180 -0100 -0900 -1900 -0900 -1900 -0100 -0100 -FE00 +0400 +0400 0000 +0080 +00C0 +0080 +0480 +0C80 +0480 +8C80 +8080 +C080 +7F00 0000 -2800 -2800 -1000 -1000 +0000 +1400 +1400 +0800 +0800 ENDCHAR STARTCHAR uni0079 ENCODING 121 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 20 1 -7 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 19 1 -6 BITMAP -0200 -0200 +0400 +0400 0000 -0010 -0018 -0010 -0210 -0610 -0210 -4610 -8010 -8010 -C06C -7F80 +0080 +00C0 +0080 +0480 +0C80 +0480 +8C80 +8080 +C080 +7FE0 0000 0000 -0A00 -0A00 -0400 -0400 +1400 +1400 +0800 +0800 ENDCHAR STARTCHAR uni007A ENCODING 122 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 19 0 -6 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 19 0 -6 BITMAP -1000 -1000 -00C0 -0300 -0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0400 -F800 -0000 -0000 -5000 -5000 -2000 -2000 +08 +08 +00 +01 +06 +18 +20 +20 +10 +0C +02 +02 +FC +00 +00 +50 +50 +20 +20 ENDCHAR STARTCHAR uni007B ENCODING 123 @@ -2437,139 +2420,127 @@ DWIDTH 11 0 BBX 11 19 0 -6 BITMAP -1000 -1000 -00C0 +0400 +0400 +0000 +0080 0300 0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0700 -F8E0 +1000 +1000 +0800 +0600 +0100 +0100 +FFE0 0000 0000 -5000 -5000 -2000 -2000 +2800 +2800 +1000 +1000 ENDCHAR STARTCHAR uni007C ENCODING 124 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 17 1 -1 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 14 1 -1 BITMAP -0004 -0018 -0060 -0186 -0218 -0068 -01A8 -0210 -0200 -0100 +0008 +0030 00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +0108 +0030 +00E8 +0128 +0110 +0080 +4060 +8010 +8010 +8060 +7F80 ENDCHAR STARTCHAR uni007D ENCODING 125 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 17 1 -1 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 13 1 0 BITMAP -0004 -0018 -0060 -0186 -0218 -0068 -01A8 -0210 -0200 -0100 +0008 +0030 00C0 -0020 -4010 -8008 -8008 -C037 -7FC0 +0108 +0030 +00E8 +0128 +0110 +4080 +8060 +8010 +8010 +7FFE ENDCHAR STARTCHAR uni007E ENCODING 126 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 14 0 0 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 13 0 0 BITMAP -0080 -0300 -0C00 -30C0 -4300 -0D00 -3500 -4200 -4000 -2000 -1800 -0400 -0400 -F800 +01 +06 +18 +21 +07 +1D +25 +22 +10 +0C +02 +02 +FC ENDCHAR STARTCHAR uni007F ENCODING 127 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 14 0 0 +BBX 11 13 0 0 BITMAP 0080 0300 0C00 -30C0 -4300 -0D00 -3500 -4200 -4000 -2000 -1800 -0400 -0700 -F8E0 +1080 +0300 +0E80 +1280 +1100 +0800 +0600 +0100 +0100 +FFE0 ENDCHAR STARTCHAR uni0080 ENCODING 128 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 21 1 -5 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 18 1 -5 BITMAP -0004 -0018 -0060 -0186 -0218 -0060 -0180 -0200 -0200 -0100 +0008 +0030 00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +0108 +0030 +00C0 +0100 +0100 +0080 +4060 +8010 +8010 +C060 +7F80 0000 0000 0500 @@ -2577,27 +2548,23 @@ ENDCHAR STARTCHAR uni0081 ENCODING 129 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 21 1 -5 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 17 1 -4 BITMAP -0004 -0018 -0060 -0186 -0218 -0060 -0180 -0200 -0200 -0100 +0008 +0030 00C0 -0020 -4010 -8008 -8008 -C037 -7FC0 +0108 +0030 +00C0 +0100 +0100 +4080 +8060 +8010 +8010 +7FFE 0000 0000 0500 @@ -2605,131 +2572,124 @@ ENDCHAR STARTCHAR uni0082 ENCODING 130 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 18 0 -4 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 17 0 -4 BITMAP -0080 -0300 -0C00 -30C0 -4300 -0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0400 -F800 -0000 -0000 -5000 -5000 +01 +06 +18 +21 +06 +18 +20 +20 +10 +0C +02 +02 +FC +00 +00 +50 +50 ENDCHAR STARTCHAR uni0083 ENCODING 131 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 18 0 -4 +BBX 11 17 0 -4 BITMAP 0080 0300 0C00 -30C0 -4300 +1080 +0300 0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0700 -F8E0 +1000 +1000 +0800 +0600 +0100 +0100 +FFE0 0000 0000 -5000 -5000 +2800 +2800 ENDCHAR STARTCHAR uni0084 ENCODING 132 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 20 1 -1 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 18 1 -1 BITMAP +0080 +0080 +0020 +00A0 +0088 +0030 +00C0 +0108 +0030 +00C0 0100 -0100 -0040 -0144 -0118 -0060 -0186 -0218 -0060 -0180 -0200 -0200 0100 -00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +0080 +4060 +8010 +8010 +8060 +7F80 ENDCHAR STARTCHAR uni0085 ENCODING 133 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 20 1 -1 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 17 1 0 BITMAP +0080 +0080 +0020 +00A0 +0088 +0030 +00C0 +0108 +0030 +00C0 0100 -0100 -0040 -0144 -0118 -0060 -0186 -0218 -0060 -0180 -0200 -0200 0100 -00C0 -0020 -4010 -8008 -8008 -C037 -7FC0 +4080 +8060 +8010 +8010 +7FFE ENDCHAR STARTCHAR uni0086 ENCODING 134 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 17 0 0 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 17 0 0 BITMAP -2000 -2000 -0800 -2880 -2300 -0C00 -30C0 -4300 -0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0400 -F800 +10 +10 +04 +14 +11 +06 +18 +21 +06 +18 +20 +20 +10 +0C +02 +02 +FC ENDCHAR STARTCHAR uni0087 ENCODING 135 @@ -2737,23 +2697,23 @@ DWIDTH 11 0 BBX 11 17 0 0 BITMAP -2000 -2000 0800 -2880 -2300 +0800 +0200 +0A00 +0880 +0300 0C00 -30C0 -4300 +1080 +0300 0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0700 -F8E0 +1000 +1000 +0800 +0600 +0100 +0100 +FFE0 ENDCHAR STARTCHAR uni0088 ENCODING 136 @@ -2791,6 +2751,7 @@ 0000 0000 0200 +0300 0200 0200 0200 @@ -2798,8 +2759,7 @@ 0200 0200 0200 -0300 -4280 +4380 8200 8200 8400 @@ -2839,7 +2799,7 @@ 00 00 20 -20 +30 20 20 20 @@ -2847,7 +2807,7 @@ 20 20 20 -D0 +F0 ENDCHAR STARTCHAR uni008C ENCODING 140 @@ -2883,6 +2843,7 @@ 0000 0000 0200 +0300 0200 0200 0200 @@ -2890,8 +2851,7 @@ 0200 0200 0200 -0300 -4280 +4380 8200 8200 8400 @@ -2928,8 +2888,8 @@ 20 00 00 -20 20 +30 20 20 20 @@ -2937,7 +2897,7 @@ 20 20 20 -D0 +F0 ENDCHAR STARTCHAR uni0090 ENCODING 144 @@ -2977,6 +2937,7 @@ 0000 0000 0200 +0300 0200 0200 0200 @@ -2984,8 +2945,7 @@ 0200 0200 0200 -0300 -4280 +4380 8200 8200 8400 @@ -3026,8 +2986,8 @@ 50 00 00 -20 20 +30 20 20 20 @@ -3035,7 +2995,7 @@ 20 20 20 -D0 +F0 ENDCHAR STARTCHAR uni0094 ENCODING 148 @@ -3105,7 +3065,7 @@ 10 10 10 -EC +FC 60 90 60 @@ -3175,7 +3135,7 @@ 10 10 10 -EC +FC 00 00 28 @@ -3450,7 +3410,7 @@ 10 10 10 -EC +FC ENDCHAR STARTCHAR uni00AC ENCODING 172 @@ -3516,7 +3476,7 @@ 10 10 10 -EC +FC 00 28 28 @@ -3544,7 +3504,7 @@ 10 10 10 -EC +FC ENDCHAR STARTCHAR uni00B2 ENCODING 178 @@ -3578,8 +3538,8 @@ 0028 0028 0000 -0002 -0012 +0000 +0112 0112 40EC 8080 @@ -3592,16 +3552,17 @@ ENCODING 180 SWIDTH 1020 0 DWIDTH 17 0 -BBX 17 13 1 -5 +BBX 17 14 1 -5 BITMAP 001000 001000 002800 002800 000000 -000200 +000000 +011200 011200 -40ED80 +40FF80 808000 808000 808800 @@ -3619,10 +3580,10 @@ 0280 0280 0000 -0020 -0120 +0000 +1120 1120 -EEC0 +FFE0 0000 0000 0080 @@ -3640,9 +3601,9 @@ 0280 0000 0000 -0100 +1120 1120 -EED8 +FFF8 0000 0000 0080 @@ -3656,11 +3617,11 @@ BITMAP 002000 002000 +000000 000700 -000880 -001080 -012700 -40F800 +001880 +012080 +40FF00 80C000 808000 808400 @@ -3675,10 +3636,10 @@ BITMAP 002000 002000 +000000 000700 -000880 -001080 -012100 +001880 +012080 40FFC0 80C000 808000 @@ -3694,12 +3655,12 @@ BITMAP 0200 0200 +0000 0070 -0088 -0108 -2270 -DF80 -0400 +2188 +2208 +FFF0 +0000 0000 0040 0040 @@ -3712,12 +3673,12 @@ BITMAP 0400 0400 +0000 00E0 -0110 -0210 -2420 +0310 +2410 DFF8 -0800 +0000 0000 0080 0080 @@ -3780,8 +3741,8 @@ 1C 20 40 -26 -F8 +22 +FC 00 00 10 Index: xc/extras/fonts/ClearlyU/cu-devnag12.bdf diff -u /dev/null xc/extras/fonts/ClearlyU/cu-devnag12.bdf:1.2 --- /dev/null Fri Jan 18 15:21:21 2002 +++ xc/extras/fonts/ClearlyU/cu-devnag12.bdf Wed Nov 21 15:58:15 2001 @@ -0,0 +1,2200 @@ +STARTFONT 2.1 +COMMENT +COMMENT Id: cu-devnag12.bdf,v 1.1 2001/10/23 23:55:31 mleisher Exp $ +COMMENT +COMMENT Copyright 2001 Computing Research Labs, New Mexico State University +COMMENT +COMMENT Permission is hereby granted, free of charge, to any person +COMMENT obtaining a copy of this software and associated documentation +COMMENT files (the "Software"), to deal in the Software without +COMMENT restriction, including without limitation the rights to use, +COMMENT copy, modify, merge, publish, distribute, sublicense, and/or +COMMENT sell copies of the Software, and to permit persons to whom the +COMMENT Software is furnished to do so, subject to the following +COMMENT conditions: +COMMENT +COMMENT The above copyright notice and this permission notice shall be +COMMENT included in all copies or substantial portions of the Software. +COMMENT +COMMENT THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +COMMENT EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +COMMENT OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +COMMENT NONINFRINGEMENT. IN NO EVENT SHALL THE COMPUTING RESEARCH LAB +COMMENT OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY CLAIM, DAMAGES +COMMENT OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +COMMENT OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +COMMENT SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +COMMENT +COMMENT This font contains some of the basic glyph forms that are not encoded +COMMENT in Unicode. +COMMENT +FONT -MUTT-ClearlyU Devangari Extra-Medium-R-Normal--17-120-100-100-P-111-FontSpecific-0 +SIZE 12 100 100 +FONTBOUNDINGBOX 25 25 -6 -7 +STARTPROPERTIES 18 +COPYRIGHT "2001 Computing Research Lab, New Mexico State University." +POINT_SIZE 120 +PIXEL_SIZE 17 +RESOLUTION_X 100 +RESOLUTION_Y 100 +FONT_ASCENT 12 +FONT_DESCENT 3 +AVERAGE_WIDTH 111 +SPACING "P" +FOUNDRY "MUTT" +FAMILY_NAME "ClearlyU Devangari Extra" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +CHARSET_REGISTRY "FontSpecific" +CHARSET_ENCODING "0" +_XMBDFED_INFO "Edited with xmbdfed 4.3." +ENDPROPERTIES +CHARS 114 +STARTCHAR uni0000 +ENCODING 0 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 13 0 -2 +BITMAP +31FE +6840 +4440 +4CC0 +29C0 +7E40 +C040 +8040 +8440 +8E40 +7E40 +0400 +0200 +ENDCHAR +STARTCHAR uni0001 +ENCODING 1 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 13 11 0 0 +BITMAP +FFF8 +0100 +0100 +7F00 +3100 +0900 +0500 +6500 +7900 +1100 +0900 +ENDCHAR +STARTCHAR uni0002 +ENCODING 2 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 11 0 0 +BITMAP +FFFE +0040 +0040 +0040 +FFC0 +1040 +2040 +2040 +2040 +1040 +0840 +ENDCHAR +STARTCHAR uni0003 +ENCODING 3 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 11 0 0 +BITMAP +FFF0 +0200 +0200 +3A00 +4600 +0600 +0A00 +1200 +2200 +0200 +0200 +ENDCHAR +STARTCHAR uni0004 +ENCODING 4 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 12 0 -1 +BITMAP +FFFE +1840 +2440 +2440 +1840 +6740 +00C0 +7C40 +18C0 +10C0 +1140 +0E00 +ENDCHAR +STARTCHAR uni0005 +ENCODING 5 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 11 0 0 +BITMAP +FFFE +1840 +2440 +2440 +1840 +6740 +00C0 +01C0 +0240 +0440 +0040 +ENDCHAR +STARTCHAR uni0006 +ENCODING 6 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 11 0 0 +BITMAP +FFFE +1840 +2440 +2440 +1840 +6740 +08C0 +08C0 +08C0 +0740 +0040 +ENDCHAR +STARTCHAR uni0007 +ENCODING 7 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 11 0 0 +BITMAP +FFFC +0400 +0400 +7400 +8DC0 +8620 +8C20 +7420 +1420 +6440 +8400 +ENDCHAR +STARTCHAR uni0008 +ENCODING 8 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 18 11 0 0 +BITMAP +FFFFC0 +000800 +000800 +000800 +8FF800 +840800 +820800 +421800 +232800 +1E4800 +008800 +ENDCHAR +STARTCHAR uni0009 +ENCODING 9 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 18 11 0 0 +BITMAP +FFFFC0 +000800 +000800 +000800 +8FF800 +840800 +82C800 +429800 +232800 +1E4800 +008800 +ENDCHAR +STARTCHAR uni000A +ENCODING 10 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 11 0 0 +BITMAP +FFFE +4200 +4200 +42C0 +4320 +4210 +3E10 +0A10 +1210 +2220 +4200 +ENDCHAR +STARTCHAR uni000B +ENCODING 11 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 11 0 0 +BITMAP +FFFE +4200 +4200 +42C0 +4320 +4210 +3E10 +8A10 +9210 +2220 +4200 +ENDCHAR +STARTCHAR uni000C +ENCODING 12 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 11 0 0 +BITMAP +FFE0 +4200 +4200 +4200 +4200 +4200 +3E00 +0A00 +1200 +2200 +4200 +ENDCHAR +STARTCHAR uni000D +ENCODING 13 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 12 0 -1 +BITMAP +FFFC +1040 +1040 +1040 +B0C0 +FFC0 +40C0 +4140 +2240 +2440 +1040 +0800 +ENDCHAR +STARTCHAR uni000E +ENCODING 14 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 12 0 -1 +BITMAP +FFF0 +0200 +0200 +0200 +2700 +3C80 +1080 +1180 +0800 +0400 +0200 +0100 +ENDCHAR +STARTCHAR uni000F +ENCODING 15 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 11 0 0 +BITMAP +FFFC +0400 +0400 +0400 +2D80 +1F60 +1210 +11C8 +0800 +0400 +0200 +ENDCHAR +STARTCHAR uni0015 +ENCODING 21 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 11 0 0 +BITMAP +FFC0 +0400 +0400 +7400 +8DC0 +8600 +8C00 +7400 +0400 +0400 +0400 +ENDCHAR +STARTCHAR uni0016 +ENCODING 22 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 11 0 0 +BITMAP +FFC0 +1000 +1000 +1380 +B640 +E440 +44C0 +4380 +2000 +1040 +0F80 +ENDCHAR +STARTCHAR uni0017 +ENCODING 23 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 9 0 2 +BITMAP +FE +20 +20 +20 +20 +20 +A0 +60 +20 +ENDCHAR +STARTCHAR uni0018 +ENCODING 24 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 8 0 3 +BITMAP +FF +40 +40 +3C +30 +20 +21 +1E +ENDCHAR +STARTCHAR uni0019 +ENCODING 25 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 13 10 0 1 +BITMAP +FFF8 +0200 +3E00 +2000 +2020 +1E20 +8100 +8100 +4100 +3E00 +ENDCHAR +STARTCHAR uni001A +ENCODING 26 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 9 0 2 +BITMAP +FF +00 +00 +00 +7F +08 +10 +11 +0E +ENDCHAR +STARTCHAR uni001B +ENCODING 27 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 16 12 0 -1 +BITMAP +FFFF +0020 +0020 +3870 +40C8 +4088 +3E48 +1838 +1018 +1018 +1864 +0F84 +ENDCHAR +STARTCHAR uni001C +ENCODING 28 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 9 10 0 1 +BITMAP +FF80 +0000 +0000 +0000 +8F80 +8400 +4200 +4200 +2200 +1C00 +ENDCHAR +STARTCHAR uni001D +ENCODING 29 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 12 0 -1 +BITMAP +FFC0 +0400 +7C00 +4000 +4000 +3FC0 +0400 +0400 +3C00 +3C00 +0400 +0200 +ENDCHAR +STARTCHAR uni001E +ENCODING 30 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 8 0 3 +BITMAP +FF +00 +18 +24 +07 +84 +4C +38 +ENDCHAR +STARTCHAR uni001F +ENCODING 31 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 11 0 0 +BITMAP +FFF0 +0200 +0200 +3E00 +6000 +C000 +8000 +8000 +8100 +4300 +3E00 +ENDCHAR +STARTCHAR uni0020 +ENCODING 32 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 11 0 0 +BITMAP +FFF0 +0200 +0200 +1E00 +3100 +6080 +4080 +4080 +4080 +2180 +1F00 +ENDCHAR +STARTCHAR uni0021 +ENCODING 33 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 10 0 1 +BITMAP +FFF0 +0200 +3E00 +2000 +1000 +0E00 +8100 +8080 +4080 +3F00 +ENDCHAR +STARTCHAR uni0022 +ENCODING 34 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 11 0 0 +BITMAP +FFE0 +0200 +0200 +7E00 +C000 +8000 +8600 +8D00 +4900 +2900 +1E00 +ENDCHAR +STARTCHAR uni0023 +ENCODING 35 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 9 9 0 2 +BITMAP +FF80 +4400 +4400 +4400 +4400 +4400 +4400 +2400 +1800 +ENDCHAR +STARTCHAR uni0024 +ENCODING 36 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 12 0 -1 +BITMAP +FE +00 +00 +00 +7E +C0 +80 +80 +40 +40 +20 +10 +ENDCHAR +STARTCHAR uni0025 +ENCODING 37 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 9 0 2 +BITMAP +66 +D0 +88 +78 +30 +E0 +40 +20 +1E +ENDCHAR +STARTCHAR uni0026 +ENCODING 38 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 11 0 0 +BITMAP +FFE0 +0400 +0400 +7C00 +8000 +8000 +8600 +4600 +3E00 +0200 +0100 +ENDCHAR +STARTCHAR uni0027 +ENCODING 39 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 8 0 3 +BITMAP +46 +80 +80 +78 +60 +40 +42 +3C +ENDCHAR +STARTCHAR uni0028 +ENCODING 40 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 8 0 3 +BITMAP +FE +00 +00 +00 +FE +C0 +40 +20 +ENDCHAR +STARTCHAR uni0029 +ENCODING 41 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 11 0 0 +BITMAP +FE +00 +00 +00 +FE +C0 +40 +20 +00 +08 +08 +ENDCHAR +STARTCHAR uni002A +ENCODING 42 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 8 0 3 +BITMAP +FC +40 +40 +40 +40 +40 +44 +38 +ENDCHAR +STARTCHAR uni002B +ENCODING 43 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 11 0 0 +BITMAP +FFE0 +4200 +4200 +42E0 +4300 +4600 +3A00 +0200 +0200 +0200 +0200 +ENDCHAR +STARTCHAR uni002C +ENCODING 44 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 8 0 3 +BITMAP +FC +00 +00 +78 +E4 +94 +8C +78 +ENDCHAR +STARTCHAR uni002D +ENCODING 45 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 8 0 3 +BITMAP +C6 +A0 +90 +70 +10 +FE +60 +20 +ENDCHAR +STARTCHAR uni002E +ENCODING 46 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 8 0 3 +BITMAP +FE +20 +20 +20 +20 +FE +60 +20 +ENDCHAR +STARTCHAR uni002F +ENCODING 47 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 8 0 3 +BITMAP +FE +10 +10 +20 +C0 +80 +42 +3C +ENDCHAR +STARTCHAR uni0030 +ENCODING 48 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 12 0 -1 +BITMAP +FFE0 +0400 +0400 +0400 +2C00 +3800 +1000 +1000 +0800 +0800 +0400 +0200 +ENDCHAR +STARTCHAR uni0031 +ENCODING 49 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 12 0 -1 +BITMAP +FFE0 +0400 +0400 +0400 +2C00 +3800 +1000 +1000 +0800 +2800 +2400 +0200 +ENDCHAR +STARTCHAR uni0032 +ENCODING 50 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 10 11 0 0 +BITMAP +FFC0 +0000 +0000 +0000 +78C0 +8500 +8200 +8000 +4000 +4000 +2000 +ENDCHAR +STARTCHAR uni0033 +ENCODING 51 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 13 11 0 0 +BITMAP +FFF8 +0000 +0000 +0000 +7860 +C490 +8108 +8208 +8308 +4498 +3870 +ENDCHAR +STARTCHAR uni0034 +ENCODING 52 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 13 15 0 -4 +BITMAP +FFF8 +0000 +0000 +0000 +7860 +C490 +8108 +8208 +8308 +4498 +3870 +0000 +0000 +0200 +0200 +ENDCHAR +STARTCHAR uni0035 +ENCODING 53 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 8 0 3 +BITMAP +FC +00 +00 +78 +84 +84 +84 +78 +ENDCHAR +STARTCHAR uni0036 +ENCODING 54 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 9 11 0 0 +BITMAP +FF80 +1400 +2200 +2200 +2200 +1E00 +2200 +5C00 +3800 +0400 +0400 +ENDCHAR +STARTCHAR uni0037 +ENCODING 55 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 8 0 3 +BITMAP +FC +60 +50 +50 +48 +48 +24 +1C +ENDCHAR +STARTCHAR uni0038 +ENCODING 56 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 12 0 -1 +BITMAP +FF +10 +10 +10 +B1 +FE +40 +40 +20 +20 +10 +08 +ENDCHAR +STARTCHAR uni0039 +ENCODING 57 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 14 0 -3 +BITMAP +FFE0 +0200 +0200 +1E00 +2000 +1000 +1E00 +3100 +2100 +2200 +2000 +1000 +0800 +0600 +ENDCHAR +STARTCHAR uni0040 +ENCODING 64 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 11 0 0 +BITMAP +FFC0 +0400 +7580 +8E40 +8C40 +7480 +8F80 +8C40 +7440 +0480 +0400 +ENDCHAR +STARTCHAR uni0041 +ENCODING 65 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 12 0 -1 +BITMAP +FFFE +0040 +0040 +0040 +FFDC +3062 +2042 +2042 +2042 +1044 +0840 +0400 +ENDCHAR +STARTCHAR uni0042 +ENCODING 66 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 16 0 -5 +BITMAP +FFFC +0100 +3F00 +2000 +2020 +1E20 +8100 +8100 +4100 +3E00 +0400 +3500 +4E80 +4C80 +3480 +0400 +ENDCHAR +STARTCHAR uni0043 +ENCODING 67 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 16 0 -5 +BITMAP +FFFC +0100 +3F00 +2000 +2020 +1E20 +8100 +8100 +4100 +3F00 +6100 +CD00 +9300 +5300 +4D00 +2100 +ENDCHAR +STARTCHAR uni0044 +ENCODING 68 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 16 0 -5 +BITMAP +FFFC +0100 +3F00 +2000 +2020 +1E20 +8100 +8100 +4100 +3F00 +1100 +1100 +3100 +3100 +1100 +0100 +ENDCHAR +STARTCHAR uni0045 +ENCODING 69 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 16 0 -5 +BITMAP +FFFC +0200 +3E00 +2000 +2020 +1E20 +8100 +8100 +4100 +7E00 +4200 +4200 +3A00 +2200 +1E00 +0200 +ENDCHAR +STARTCHAR uni0046 +ENCODING 70 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 11 0 0 +BITMAP +FFFC +0040 +1840 +47C0 +2440 +1840 +0040 +47C0 +4440 +2240 +1C40 +ENDCHAR +STARTCHAR uni0047 +ENCODING 71 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 13 0 -2 +BITMAP +FFFC +0080 +0080 +0F80 +1000 +1000 +30C0 +50C0 +4FC0 +2040 +1840 +10C0 +0F40 +ENDCHAR +STARTCHAR uni0048 +ENCODING 72 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 14 0 -3 +BITMAP +FFE0 +0400 +0400 +3C00 +4000 +2000 +3C00 +4000 +4000 +4300 +3F00 +0300 +0100 +0080 +ENDCHAR +STARTCHAR uni0049 +ENCODING 73 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 13 0 -2 +BITMAP +FFFC +0080 +0080 +0F80 +1000 +1000 +10C0 +50C0 +4FC0 +4040 +3860 +1080 +0F00 +ENDCHAR +STARTCHAR uni004A +ENCODING 74 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 14 0 -3 +BITMAP +FFE0 +0400 +0400 +7C00 +8000 +8000 +8600 +8600 +7E00 +1E00 +3300 +2A80 +2600 +1C00 +ENDCHAR +STARTCHAR uni004B +ENCODING 75 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 13 13 0 -2 +BITMAP +FFF8 +0080 +0080 +0F80 +1000 +1000 +1180 +9180 +4F80 +4080 +4080 +FF80 +C080 +ENDCHAR +STARTCHAR uni004C +ENCODING 76 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 12 0 -1 +BITMAP +FFFC +0440 +0440 +7C40 +8040 +8040 +8C40 +8C40 +7C40 +0440 +0FC0 +0C40 +ENDCHAR +STARTCHAR uni004D +ENCODING 77 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 12 0 -1 +BITMAP +FFFE +0220 +0220 +3E20 +4020 +4020 +4620 +4620 +3E20 +0420 +0260 +01C0 +ENDCHAR +STARTCHAR uni004E +ENCODING 78 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 14 0 -3 +BITMAP +FFE0 +0400 +0400 +7C00 +8000 +8000 +8600 +8600 +7E00 +1E00 +2300 +2280 +2200 +1C00 +ENDCHAR +STARTCHAR uni004F +ENCODING 79 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 17 0 -6 +BITMAP +FFF0 +0200 +0200 +7E00 +C000 +8000 +8080 +C180 +7F00 +0200 +0200 +7E00 +C000 +8000 +8080 +C180 +7F00 +ENDCHAR +STARTCHAR uni0050 +ENCODING 80 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 17 0 -6 +BITMAP +FFF0 +0200 +0200 +7E00 +C000 +8000 +8100 +C300 +7E00 +0200 +3E00 +6200 +C100 +8100 +8100 +4300 +3E00 +ENDCHAR +STARTCHAR uni0051 +ENCODING 81 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 16 0 -5 +BITMAP +FFF0 +0200 +0200 +3E00 +6100 +C100 +8100 +8300 +7E00 +0200 +3E00 +6100 +C100 +8100 +8300 +7E00 +ENDCHAR +STARTCHAR uni0052 +ENCODING 82 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 16 0 -5 +BITMAP +FFFC +0100 +3F00 +2000 +2000 +1E00 +8100 +8100 +4100 +3F00 +1100 +1100 +3100 +3100 +1100 +0100 +ENDCHAR +STARTCHAR uni0053 +ENCODING 83 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 18 0 -7 +BITMAP +FFF0 +0100 +0100 +3F00 +2000 +3C00 +8600 +8200 +4600 +3E00 +0200 +3E00 +2000 +3C00 +8600 +8200 +4600 +3C00 +ENDCHAR +STARTCHAR uni0054 +ENCODING 84 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 18 0 -7 +BITMAP +FFF0 +0100 +0100 +3F00 +2000 +3C00 +8600 +8200 +4600 +3E00 +0200 +3E00 +4000 +8000 +9C00 +A200 +6200 +3C00 +ENDCHAR +STARTCHAR uni0055 +ENCODING 85 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 11 0 0 +BITMAP +FFFC +0080 +0080 +7880 +6480 +2380 +0E80 +3880 +3080 +1080 +0080 +ENDCHAR +STARTCHAR uni0056 +ENCODING 86 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 16 15 0 -4 +BITMAP +FFFF +0210 +0210 +3E10 +4010 +2010 +3C10 +6210 +4110 +43F0 +4310 +2010 +1000 +0C00 +0300 +ENDCHAR +STARTCHAR uni0057 +ENCODING 87 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 16 15 0 -4 +BITMAP +FFFF +0210 +0210 +3E10 +4010 +2010 +3C10 +6210 +4110 +4130 +4250 +2190 +1000 +0C00 +0300 +ENDCHAR +STARTCHAR uni0058 +ENCODING 88 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 19 15 0 -4 +BITMAP +FFFFE0 +000200 +000200 +003E00 +004000 +002000 +003C00 +006200 +004100 +3BC100 +464200 +422000 +401000 +200C00 +180300 +ENDCHAR +STARTCHAR uni0059 +ENCODING 89 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 16 15 0 -4 +BITMAP +FFFF +0010 +0010 +01F0 +0200 +0100 +01E0 +0310 +0208 +0208 +3E10 +6300 +4280 +4660 +3C18 +ENDCHAR +STARTCHAR uni005A +ENCODING 90 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 18 11 0 0 +BITMAP +FFFFC0 +100800 +100800 +10E800 +B01800 +FE1800 +402800 +404800 +208800 +100800 +080800 +ENDCHAR +STARTCHAR uni0070 +ENCODING 112 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 9 13 0 -2 +BITMAP +3180 +6800 +4400 +4C80 +2980 +7E00 +C000 +8000 +8400 +8E00 +7E00 +0400 +0200 +ENDCHAR +STARTCHAR uni0071 +ENCODING 113 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 13 11 0 0 +BITMAP +FFF8 +0100 +0100 +7F00 +3100 +0900 +0500 +6500 +7900 +1100 +0900 +ENDCHAR +STARTCHAR uni0072 +ENCODING 114 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 9 11 0 0 +BITMAP +FF80 +0000 +0000 +0000 +FF80 +1000 +2000 +2000 +2000 +1000 +0800 +ENDCHAR +STARTCHAR uni0073 +ENCODING 115 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 9 0 2 +BITMAP +FC +00 +00 +78 +84 +04 +08 +30 +40 +ENDCHAR +STARTCHAR uni0074 +ENCODING 116 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 9 12 0 -1 +BITMAP +FF80 +1800 +2400 +2400 +1800 +6700 +0080 +7C00 +1880 +1080 +1100 +0E00 +ENDCHAR +STARTCHAR uni0075 +ENCODING 117 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 9 10 0 1 +BITMAP +FF80 +1800 +2400 +2400 +1800 +6700 +0080 +0180 +0200 +0400 +ENDCHAR +STARTCHAR uni0076 +ENCODING 118 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 9 10 0 1 +BITMAP +FF80 +1800 +2400 +2400 +1800 +6700 +0880 +0880 +0880 +0700 +ENDCHAR +STARTCHAR uni007B +ENCODING 123 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 4 7 0 10 +BITMAP +60 +90 +A0 +A0 +80 +40 +20 +ENDCHAR +STARTCHAR uni007C +ENCODING 124 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 16 0 -5 +BITMAP +FFE0 +0200 +0200 +3E00 +4000 +2000 +3C00 +6200 +4100 +4100 +4200 +2000 +1000 +2C00 +4300 +8000 +ENDCHAR +STARTCHAR uni007D +ENCODING 125 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 8 7 0 4 +BITMAP +FF +00 +00 +00 +00 +43 +3C +ENDCHAR +STARTCHAR uni007E +ENCODING 126 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 4 7 0 10 +BITMAP +60 +90 +80 +80 +80 +40 +20 +ENDCHAR +STARTCHAR uni007F +ENCODING 127 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 5 5 0 -5 +BITMAP +20 +30 +68 +C0 +80 +ENDCHAR +STARTCHAR uni0080 +ENCODING 128 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 15 -1 0 +BITMAP +B4 +44 +38 +00 +7E +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR uni0081 +ENCODING 129 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 14 0 0 +BITMAP +60 +00 +00 +FC +40 +40 +40 +40 +40 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR uni0082 +ENCODING 130 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 17 0 0 +BITMAP +60 +90 +80 +80 +80 +40 +FC +40 +40 +40 +40 +40 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR uni0083 +ENCODING 131 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 17 0 0 +BITMAP +60 +90 +A0 +A0 +80 +40 +FC +40 +40 +40 +40 +40 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR uni0084 +ENCODING 132 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 9 18 0 0 +BITMAP +0080 +0080 +3C00 +4300 +4080 +4000 +4000 +FC00 +4000 +4000 +4000 +4000 +4000 +4000 +4000 +4000 +4000 +4000 +ENDCHAR +STARTCHAR uni0085 +ENCODING 133 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 17 0 0 +BITMAP +0070 +3C80 +4380 +4080 +4000 +4000 +FC00 +4000 +4000 +4000 +4000 +4000 +4000 +4000 +4000 +4000 +4000 +ENDCHAR +STARTCHAR uni0086 +ENCODING 134 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 17 0 0 +BITMAP +0070 +3C80 +43A0 +40A0 +4000 +4000 +FC00 +4000 +4000 +4000 +4000 +4000 +4000 +4000 +4000 +4000 +4000 +ENDCHAR +STARTCHAR uni0087 +ENCODING 135 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 12 16 -5 0 +BITMAP +7800 +8440 +8240 +8100 +0100 +03F0 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +ENDCHAR +STARTCHAR uni0088 +ENCODING 136 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 12 16 -5 0 +BITMAP +78C0 +8520 +8300 +8100 +0100 +03F0 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +ENDCHAR +STARTCHAR uni0089 +ENCODING 137 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 12 16 -5 0 +BITMAP +78C0 +8520 +8340 +8140 +0100 +03F0 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +ENDCHAR +STARTCHAR uni008A +ENCODING 138 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 6 4 0 13 +BITMAP +10 +94 +44 +38 +ENDCHAR +STARTCHAR uni008B +ENCODING 139 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 7 6 0 11 +BITMAP +02 +E2 +10 +08 +04 +02 +ENDCHAR +STARTCHAR uni008C +ENCODING 140 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 5 0 11 +BITMAP +E180 +1240 +0A00 +0600 +0200 +ENDCHAR +STARTCHAR uni008D +ENCODING 141 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 5 0 11 +BITMAP +E180 +1240 +0A80 +0680 +0200 +ENDCHAR +STARTCHAR uni008E +ENCODING 142 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 6 0 11 +BITMAP +31 +19 +E4 +7A +06 +01 +ENDCHAR +STARTCHAR uni008F +ENCODING 143 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 13 6 0 11 +BITMAP +3000 +1830 +E448 +7A40 +0640 +0140 +ENDCHAR +STARTCHAR uni0090 +ENCODING 144 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 13 6 0 11 +BITMAP +3000 +1830 +E448 +7A50 +0650 +0140 +ENDCHAR +STARTCHAR uni0091 +ENCODING 145 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 17 -5 0 +BITMAP +0200 +E200 +1000 +0800 +0400 +0200 +07E0 +0200 +0200 +0200 +0200 +0200 +0200 +0200 +0200 +0200 +0200 +ENDCHAR +STARTCHAR uni0092 +ENCODING 146 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 16 -5 0 +BITMAP +E180 +1240 +0A00 +0600 +0200 +07E0 +0200 +0200 +0200 +0200 +0200 +0200 +0200 +0200 +0200 +0200 +ENDCHAR +STARTCHAR uni0093 +ENCODING 147 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 16 -5 0 +BITMAP +E180 +1240 +0A80 +0680 +0200 +07E0 +0200 +0200 +0200 +0200 +0200 +0200 +0200 +0200 +0200 +0200 +ENDCHAR +STARTCHAR uni0094 +ENCODING 148 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 17 -6 0 +BITMAP +3100 +1900 +E400 +7A00 +0600 +0100 +03F0 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +ENDCHAR +STARTCHAR uni0095 +ENCODING 149 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 18 -6 0 +BITMAP +0200 +3200 +18C0 +E520 +7B00 +0700 +0100 +03F0 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +ENDCHAR +ENDFONT Index: xc/extras/fonts/ClearlyU/cu-lig12.bdf diff -u xc/extras/fonts/ClearlyU/cu-lig12.bdf:1.3 xc/extras/fonts/ClearlyU/cu-lig12.bdf:1.4 --- xc/extras/fonts/ClearlyU/cu-lig12.bdf:1.3 Thu Dec 7 13:47:04 2000 +++ xc/extras/fonts/ClearlyU/cu-lig12.bdf Wed Nov 21 15:58:15 2001 @@ -1,9 +1,8 @@ STARTFONT 2.1 COMMENT -COMMENT Id: cu-lig12.bdf,v 1.5 2000/12/06 21:58:14 mleisher Exp $ +COMMENT Id: cu-lig12.bdf,v 1.6 2001/10/23 23:55:31 mleisher Exp $ COMMENT -COMMENT Copyright 1997, 1998, 1999 Computing Research Labs, New Mexico State -COMMENT University +COMMENT Copyright 2001 Computing Research Labs, New Mexico State University COMMENT COMMENT Permission is hereby granted, free of charge, to any person COMMENT obtaining a copy of this software and associated documentation @@ -42,7 +41,7 @@ SIZE 12 100 100 FONTBOUNDINGBOX 23 19 0 -6 STARTPROPERTIES 20 -COPYRIGHT "1997, 1998 Computing Research Lab, New Mexico State University." +COPYRIGHT "2001 Computing Research Lab, New Mexico State University." POINT_SIZE 120 PIXEL_SIZE 17 RESOLUTION_X 100 Index: xc/extras/fonts/ClearlyU/cu-pua12.bdf diff -u xc/extras/fonts/ClearlyU/cu-pua12.bdf:1.3 xc/extras/fonts/ClearlyU/cu-pua12.bdf:1.4 --- xc/extras/fonts/ClearlyU/cu-pua12.bdf:1.3 Thu Dec 7 13:47:04 2000 +++ xc/extras/fonts/ClearlyU/cu-pua12.bdf Wed Nov 21 15:58:15 2001 @@ -1,9 +1,8 @@ STARTFONT 2.1 COMMENT -COMMENT Id: cu-pua12.bdf,v 1.6 2000/12/06 21:58:14 mleisher Exp $ +COMMENT Id: cu-pua12.bdf,v 1.7 2001/10/23 23:55:31 mleisher Exp $ COMMENT -COMMENT Copyright 1997, 1998, 1999 Computing Research Labs, New Mexico State -COMMENT University +COMMENT Copyright 2001 Computing Research Labs, New Mexico State University COMMENT COMMENT Permission is hereby granted, free of charge, to any person COMMENT obtaining a copy of this software and associated documentation @@ -38,7 +37,7 @@ SIZE 12 100 100 FONTBOUNDINGBOX 21 23 -5 -4 STARTPROPERTIES 19 -COPYRIGHT "1997, 1998 Computing Research Lab, New Mexico State University." +COPYRIGHT "2001 Computing Research Lab, New Mexico State University." POINT_SIZE 120 PIXEL_SIZE 17 RESOLUTION_X 100 Index: xc/extras/fonts/ClearlyU/cu12.bdf diff -u xc/extras/fonts/ClearlyU/cu12.bdf:1.3 xc/extras/fonts/ClearlyU/cu12.bdf:1.6 --- xc/extras/fonts/ClearlyU/cu12.bdf:1.3 Thu Dec 7 13:47:04 2000 +++ xc/extras/fonts/ClearlyU/cu12.bdf Wed Nov 21 15:58:15 2001 @@ -1,9 +1,8 @@ STARTFONT 2.1 COMMENT -COMMENT Id: cu12.bdf,v 1.14 2000/12/06 22:13:11 mleisher Exp $ +COMMENT Id: cu12.bdf,v 1.16 2001/10/29 18:54:12 mleisher Exp $ COMMENT -COMMENT Copyright 1997, 1998 Computing Research Labs, New Mexico State -COMMENT University +COMMENT Copyright 2001 Computing Research Labs, New Mexico State University COMMENT COMMENT Permission is hereby granted, free of charge, to any person COMMENT obtaining a copy of this software and associated documentation @@ -26,13 +25,13 @@ COMMENT OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE COMMENT SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. COMMENT -FONT -MUTT-ClearlyU-Medium-R-Normal--17-120-100-100-P-128-ISO10646-1 +FONT -MUTT-ClearlyU-Medium-R-Normal--17-120-100-100-P-124-ISO10646-1 SIZE 12 100 100 -FONTBOUNDINGBOX 27 30 -6 -10 +FONTBOUNDINGBOX 31 30 -7 -10 STARTPROPERTIES 21 FONT_ASCENT 20 FONT_DESCENT 9 -COPYRIGHT "1997, 1998 Computing Research Lab, New Mexico State University." +COPYRIGHT "2001 Computing Research Lab, New Mexico State University." _XMBDFED_INFO "Edited with xmbdfed 4.4." FOUNDRY "MUTT" FAMILY_NAME "ClearlyU" @@ -45,14 +44,14 @@ RESOLUTION_X 100 RESOLUTION_Y 100 SPACING "P" -AVERAGE_WIDTH 128 +AVERAGE_WIDTH 124 CHARSET_REGISTRY "ISO10646" CHARSET_ENCODING "1" DEFAULT_CHAR 65533 CAP_HEIGHT 11 X_HEIGHT 7 ENDPROPERTIES -CHARS 7093 +CHARS 8241 STARTCHAR space ENCODING 32 SWIDTH 300 0 @@ -3715,16 +3714,12 @@ ENCODING 271 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 16 1 0 +BBX 8 12 1 0 BITMAP -88 -70 -20 -00 -18 -08 -08 -08 +1B +0B +09 +0A 08 78 48 @@ -4642,16 +4637,12 @@ ENCODING 317 SWIDTH 600 0 DWIDTH 10 0 -BBX 8 15 0 0 +BBX 8 11 0 0 BITMAP -44 -38 -10 -00 -F8 -20 -20 -20 +FB +23 +21 +22 20 20 21 @@ -4664,24 +4655,20 @@ ENCODING 318 SWIDTH 240 0 DWIDTH 4 0 -BBX 5 16 0 0 +BBX 5 12 1 0 BITMAP -88 -70 -20 -00 -60 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -70 +D8 +58 +48 +50 +40 +40 +40 +40 +40 +40 +40 +E0 ENDCHAR STARTCHAR C076 ENCODING 319 @@ -5428,16 +5415,14 @@ ENDCHAR STARTCHAR C116 ENCODING 357 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 6 14 0 0 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 12 1 0 BITMAP -88 -70 -20 -00 -20 -20 +06 +06 +22 +24 20 F8 20 @@ -6977,39 +6962,45 @@ ENDCHAR STARTCHAR C053 ENCODING 439 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 11 1 0 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 14 1 -3 BITMAP -FC +FE +82 +04 08 10 20 -70 -08 -04 -04 -C4 -88 -70 +7C +02 +01 +01 +01 +C1 +82 +7C ENDCHAR STARTCHAR C053 ENCODING 440 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 11 1 0 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 14 1 -3 BITMAP -FC -40 +7F +41 20 10 -38 +08 +04 +3E 40 80 80 -8C -44 -38 +80 +83 +41 +3E ENDCHAR STARTCHAR C053 ENCODING 441 @@ -8069,25 +8060,28 @@ ENDCHAR STARTCHAR C053 ENCODING 494 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 15 1 0 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 18 1 -3 BITMAP -88 -70 -20 +44 +38 +10 00 -FC +FE +82 +04 08 10 20 -70 -08 -04 -04 -C4 -88 -70 +7C +02 +01 +01 +01 +C1 +82 +7C ENDCHAR STARTCHAR C053 ENCODING 495 @@ -8231,6 +8225,86 @@ 82 7C ENDCHAR +STARTCHAR C072 +ENCODING 502 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 11 1 0 +BITMAP +FBE0 +2080 +2080 +2080 +2080 +3F80 +209C +2084 +2084 +2084 +F878 +ENDCHAR +STARTCHAR C080 +ENCODING 503 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 9 13 1 -4 +BITMAP +2700 +7880 +A080 +2080 +2100 +2200 +2400 +2800 +3000 +2000 +2000 +2000 +4000 +ENDCHAR +STARTCHAR C078 +ENCODING 504 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 16 0 0 +BITMAP +1000 +1800 +0800 +0400 +0000 +E3E0 +3080 +3080 +2880 +2880 +2480 +2280 +2280 +2180 +2180 +F880 +ENDCHAR +STARTCHAR C110 +ENCODING 505 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 +BITMAP +40 +60 +20 +10 +00 +F8 +44 +44 +44 +44 +44 +EE +ENDCHAR STARTCHAR C065 ENCODING 506 SWIDTH 660 0 @@ -8939,6 +9013,44 @@ 10 20 ENDCHAR +STARTCHAR C053 +ENCODING 540 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 14 1 -3 +BITMAP +F8 +84 +84 +04 +04 +18 +68 +04 +04 +04 +04 +08 +30 +C0 +ENDCHAR +STARTCHAR C053 +ENCODING 541 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 10 1 -3 +BITMAP +F0 +88 +88 +08 +30 +48 +08 +08 +30 +C0 +ENDCHAR STARTCHAR C072 ENCODING 542 SWIDTH 720 0 @@ -8984,6 +9096,78 @@ 44 EE ENDCHAR +STARTCHAR C111 +ENCODING 546 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 +BITMAP +0C +62 +81 +81 +42 +3C +42 +81 +81 +42 +3C +ENDCHAR +STARTCHAR C111 +ENCODING 547 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 5 9 1 0 +BITMAP +50 +88 +88 +88 +70 +88 +88 +88 +70 +ENDCHAR +STARTCHAR C090 +ENCODING 548 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 14 1 -3 +BITMAP +FE +C4 +84 +88 +08 +10 +20 +20 +40 +40 +FE +06 +02 +04 +ENDCHAR +STARTCHAR C122 +ENCODING 549 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 10 1 -3 +BITMAP +F8 +90 +90 +20 +40 +40 +F8 +08 +08 +10 +ENDCHAR STARTCHAR C065 ENCODING 550 SWIDTH 660 0 @@ -10754,6 +10938,100 @@ 19C0 0200 ENDCHAR +STARTCHAR C102 +ENCODING 681 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 -3 +BITMAP +3800 +4800 +4000 +4000 +4000 +FF80 +4440 +4440 +4440 +4440 +4440 +EE40 +0040 +0140 +0180 +ENDCHAR +STARTCHAR C108 +ENCODING 682 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 12 1 0 +BITMAP +C0 +40 +40 +40 +40 +4F +51 +50 +4E +41 +61 +DE +ENDCHAR +STARTCHAR C108 +ENCODING 683 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 +BITMAP +C0 +40 +40 +40 +40 +7E +64 +44 +48 +52 +52 +FE +ENDCHAR +STARTCHAR C119 +ENCODING 684 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 +BITMAP +D6 +54 +54 +38 +28 +00 +D6 +54 +54 +38 +28 +ENDCHAR +STARTCHAR C119 +ENCODING 685 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 9 1 0 +BITMAP +FC +84 +84 +00 +00 +00 +FC +84 +84 +ENDCHAR STARTCHAR C104 ENCODING 688 SWIDTH 480 0 @@ -11503,6 +11781,66 @@ 08 F8 ENDCHAR +STARTCHAR C099 +ENCODING 746 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 7 1 4 +BITMAP +80 +80 +80 +80 +80 +80 +F8 +ENDCHAR +STARTCHAR C099 +ENCODING 747 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 7 1 4 +BITMAP +80 +80 +80 +F8 +80 +80 +80 +ENDCHAR +STARTCHAR char716 +ENCODING 748 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 3 1 -3 +BITMAP +88 +50 +20 +ENDCHAR +STARTCHAR char749 +ENCODING 749 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 3 2 11 +BITMAP +FE +00 +FE +ENDCHAR +STARTCHAR C034 +ENCODING 750 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 7 +BITMAP +D8 +D8 +48 +48 +90 +ENDCHAR STARTCHAR C125 ENCODING 768 SWIDTH 0 0 @@ -12239,6 +12577,106 @@ 50 20 ENDCHAR +STARTCHAR char810 +ENCODING 838 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 5 2 0 12 +BITMAP +F8 +88 +ENDCHAR +STARTCHAR C069 +ENCODING 839 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 5 3 0 -3 +BITMAP +F8 +00 +F8 +ENDCHAR +STARTCHAR char781 +ENCODING 840 +SWIDTH 120 0 +DWIDTH 2 0 +BBX 3 4 0 -4 +BITMAP +A0 +A0 +A0 +A0 +ENDCHAR +STARTCHAR char792 +ENCODING 841 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 4 0 -4 +BITMAP +F0 +10 +10 +10 +ENDCHAR +STARTCHAR C065 +ENCODING 842 +SWIDTH 60 0 +DWIDTH 1 0 +BBX 6 5 0 11 +BITMAP +10 +54 +B4 +A8 +20 +ENDCHAR +STARTCHAR C065 +ENCODING 843 +SWIDTH 60 0 +DWIDTH 1 0 +BBX 6 5 0 11 +BITMAP +10 +44 +B4 +88 +20 +ENDCHAR +STARTCHAR C065 +ENCODING 844 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 6 0 12 +BITMAP +48 +A8 +90 +48 +A8 +90 +ENDCHAR +STARTCHAR char792 +ENCODING 845 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 3 0 -3 +BITMAP +42 +FF +42 +ENDCHAR +STARTCHAR char792 +ENCODING 846 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 5 0 -5 +BITMAP +40 +E0 +40 +40 +40 +ENDCHAR STARTCHAR C065 ENCODING 864 SWIDTH 0 0 @@ -12259,6 +12697,16 @@ 4040 8020 ENDCHAR +STARTCHAR C065 +ENCODING 866 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 3 0 -3 +BITMAP +0080 +FFC0 +0080 +ENDCHAR STARTCHAR C125 ENCODING 884 SWIDTH 420 0 @@ -13782,76 +14230,77 @@ 40 E0 ENDCHAR -STARTCHAR 0x03DE +STARTCHAR uni03DE ENCODING 990 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 14 1 -3 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 2 0 BITMAP -1C00 -2200 -4100 -8080 -8080 -8080 -8080 -8080 -4100 -2200 -1C00 -0800 -0800 -1C00 +C0 +20 +40 +40 +80 +FC +04 +08 +08 +10 +0C ENDCHAR -STARTCHAR 0x03DF +STARTCHAR uni03DF ENCODING 991 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 10 1 -3 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 10 1 0 BITMAP -70 -88 -88 -88 -88 -88 -70 20 20 -70 +40 +40 +FC +08 +08 +10 +10 +20 ENDCHAR STARTCHAR 0x03E0 ENCODING 992 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 12 1 -1 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 12 1 -1 BITMAP -E0 -18 -04 -0A -12 -23 -45 -89 -11 -22 -E2 -04 +3C00 +5200 +9100 +1100 +1080 +0780 +0880 +0880 +0880 +0900 +0900 +0200 ENDCHAR STARTCHAR 0x03E0 ENCODING 993 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 7 1 0 +BBX 6 11 1 0 BITMAP -F0 +80 +40 +20 +10 +30 +48 18 -64 -8C -34 -44 -E8 +24 +04 +04 +04 ENDCHAR STARTCHAR C087 ENCODING 994 @@ -14138,8 +14587,8 @@ DWIDTH 7 0 BBX 6 7 1 0 BITMAP -7C -80 +78 +84 80 80 80 @@ -16320,10 +16769,10 @@ DWIDTH 13 0 BBX 13 16 1 0 BITMAP -0F00 -1080 -2E40 -2D30 +0180 +0D80 +1B00 +1800 0000 3060 4010 @@ -16341,12 +16790,13 @@ ENCODING 1149 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 11 1 0 +BBX 9 12 1 0 BITMAP -3800 -4400 -B300 -A800 +0600 +3600 +6C00 +6000 +0000 4100 8080 9C80 @@ -16449,14 +16899,14 @@ ENDCHAR STARTCHAR 0x0483 ENCODING 1155 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 4 1 12 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 6 4 1 12 BITMAP -3C00 -4200 -B900 -B4C0 +0C +6C +D8 +C0 ENDCHAR STARTCHAR 0x0484 ENCODING 1156 @@ -16488,6 +16938,53 @@ F8 08 ENDCHAR +STARTCHAR char1160 +ENCODING 1160 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +0100 +0280 +1010 +2828 +0000 +0000 +4004 +A00A +0000 +0000 +1010 +2828 +0000 +0100 +0280 +ENDCHAR +STARTCHAR char1161 +ENCODING 1161 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 16 18 0 0 +BITMAP +0080 +1100 +218C +399A +1008 +0000 +0000 +B00E +700D +0000 +0000 +0000 +1008 +581C +3184 +0188 +0080 +0100 +ENDCHAR STARTCHAR C120 ENCODING 1164 SWIDTH 660 0 @@ -21148,20 +21645,20 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0065 +STARTCHAR uni062F ENCODING 1583 SWIDTH 360 0 DWIDTH 6 0 BBX 5 6 1 0 BITMAP -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR -STARTCHAR 0065 +STARTCHAR uni0630 ENCODING 1584 SWIDTH 360 0 DWIDTH 6 0 @@ -21171,14 +21668,14 @@ 20 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR -STARTCHAR 0069 +STARTCHAR uni0631 ENCODING 1585 SWIDTH 420 0 DWIDTH 7 0 @@ -21193,7 +21690,7 @@ 18 F0 ENDCHAR -STARTCHAR 0069 +STARTCHAR uni0632 ENCODING 1586 SWIDTH 420 0 DWIDTH 7 0 @@ -21212,16 +21709,14 @@ 18 F0 ENDCHAR -STARTCHAR 0072 +STARTCHAR uni0633 ENCODING 1587 SWIDTH 960 0 DWIDTH 16 0 -BBX 15 10 1 -5 +BBX 15 8 1 -5 BITMAP -0002 -0002 -0012 0112 +0112 40EC 8080 8080 @@ -21229,7 +21724,7 @@ 4300 3C00 ENDCHAR -STARTCHAR 0072 +STARTCHAR uni0634 ENCODING 1588 SWIDTH 960 0 DWIDTH 16 0 @@ -21240,8 +21735,8 @@ 0028 0028 0000 -0002 -0012 +0000 +0112 0112 40EC 8080 @@ -21250,24 +21745,23 @@ 4300 3C00 ENDCHAR -STARTCHAR 0079 +STARTCHAR uni0635 ENCODING 1589 SWIDTH 1080 0 DWIDTH 18 0 -BBX 17 10 1 -5 +BBX 17 9 1 -5 BITMAP 000700 -000880 -001080 -012700 -40F800 +001880 +012080 +40FF00 80C000 808000 808000 430000 3C0000 ENDCHAR -STARTCHAR 0079 +STARTCHAR uni0636 ENCODING 1590 SWIDTH 1080 0 DWIDTH 18 0 @@ -21275,18 +21769,18 @@ BITMAP 002000 002000 +000000 000700 -000880 -001080 -012700 -40F800 +001880 +012080 +40FF00 80C000 808000 808000 430000 3C0000 ENDCHAR -STARTCHAR 00BC +STARTCHAR uni0637 ENCODING 1591 SWIDTH 540 0 DWIDTH 9 0 @@ -21297,13 +21791,13 @@ 20 20 20 -26 -29 -31 +20 26 -F8 +39 +21 +FE ENDCHAR -STARTCHAR 00BC +STARTCHAR uni0638 ENCODING 1592 SWIDTH 540 0 DWIDTH 9 0 @@ -21314,13 +21808,13 @@ 26 20 20 -26 -29 -31 +20 26 -F8 +39 +21 +FE ENDCHAR -STARTCHAR 00CB +STARTCHAR uni0639 ENCODING 1593 SWIDTH 600 0 DWIDTH 10 0 @@ -21339,7 +21833,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 00CB +STARTCHAR uni063A ENCODING 1594 SWIDTH 600 0 DWIDTH 10 0 @@ -21362,7 +21856,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 0x0640 +STARTCHAR uni0640 ENCODING 1600 SWIDTH 540 0 DWIDTH 9 0 @@ -21370,7 +21864,7 @@ BITMAP FF80 ENDCHAR -STARTCHAR 00CF +STARTCHAR uni0641 ENCODING 1601 SWIDTH 900 0 DWIDTH 15 0 @@ -21389,7 +21883,7 @@ 4038 3FC0 ENDCHAR -STARTCHAR 00D2 +STARTCHAR uni0642 ENCODING 1602 SWIDTH 600 0 DWIDTH 10 0 @@ -21410,24 +21904,24 @@ 4200 3C00 ENDCHAR -STARTCHAR 0xFED9 +STARTCHAR uni0075 ENCODING 1603 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 10 1 0 +BBX 10 10 1 0 BITMAP -0100 -0180 -0100 -0900 -1900 -0900 -1900 -0100 -0100 -FE00 +0080 +00C0 +0080 +0480 +0C80 +0480 +8C80 +8080 +C080 +7F00 ENDCHAR -STARTCHAR 00DE +STARTCHAR uni0644 ENCODING 1604 SWIDTH 540 0 DWIDTH 9 0 @@ -22172,7 +22666,7 @@ C030 7FC0 ENDCHAR -STARTCHAR 0048 +STARTCHAR uni0680 ENCODING 1664 SWIDTH 840 0 DWIDTH 14 0 @@ -22191,7 +22685,7 @@ 0500 0500 ENDCHAR -STARTCHAR 0057 +STARTCHAR uni0681 ENCODING 1665 SWIDTH 660 0 DWIDTH 11 0 @@ -22215,7 +22709,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uni0682 ENCODING 1666 SWIDTH 660 0 DWIDTH 11 0 @@ -22240,7 +22734,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uni0683 ENCODING 1667 SWIDTH 660 0 DWIDTH 11 0 @@ -22258,7 +22752,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uni0684 ENCODING 1668 SWIDTH 660 0 DWIDTH 11 0 @@ -22276,7 +22770,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uni0685 ENCODING 1669 SWIDTH 660 0 DWIDTH 11 0 @@ -22300,7 +22794,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uni0686 ENCODING 1670 SWIDTH 660 0 DWIDTH 11 0 @@ -22318,7 +22812,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uni0687 ENCODING 1671 SWIDTH 660 0 DWIDTH 11 0 @@ -22336,7 +22830,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0065 +STARTCHAR uni0688 ENCODING 1672 SWIDTH 360 0 DWIDTH 6 0 @@ -22348,47 +22842,47 @@ E0 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR -STARTCHAR 0065 +STARTCHAR uni0689 ENCODING 1673 SWIDTH 360 0 DWIDTH 6 0 BBX 5 9 1 -3 BITMAP -20 10 -08 +10 08 08 -F0 +98 +60 20 50 20 ENDCHAR -STARTCHAR 0065 +STARTCHAR uni068A ENCODING 1674 SWIDTH 360 0 DWIDTH 6 0 BBX 5 10 1 -4 BITMAP -20 10 -08 +10 08 08 -F0 +98 +60 00 00 20 20 ENDCHAR -STARTCHAR 0065 +STARTCHAR uni068B ENCODING 1675 SWIDTH 360 0 DWIDTH 6 0 @@ -22400,18 +22894,18 @@ 70 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 00 00 20 20 ENDCHAR -STARTCHAR 0065 +STARTCHAR uni068C ENCODING 1676 SWIDTH 360 0 DWIDTH 6 0 @@ -22421,30 +22915,30 @@ 50 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR -STARTCHAR 0065 +STARTCHAR uni068D ENCODING 1677 SWIDTH 360 0 DWIDTH 6 0 BBX 5 9 1 -3 BITMAP -20 10 -08 +10 08 08 -F0 +98 +60 00 50 50 ENDCHAR -STARTCHAR 0065 +STARTCHAR uni068E ENCODING 1678 SWIDTH 360 0 DWIDTH 6 0 @@ -22456,14 +22950,14 @@ 50 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR -STARTCHAR 0065 +STARTCHAR uni068F ENCODING 1679 SWIDTH 360 0 DWIDTH 6 0 @@ -22475,14 +22969,14 @@ 20 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR -STARTCHAR 0065 +STARTCHAR uni0690 ENCODING 1680 SWIDTH 360 0 DWIDTH 6 0 @@ -22495,14 +22989,14 @@ 50 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR -STARTCHAR 0069 +STARTCHAR uni0691 ENCODING 1681 SWIDTH 420 0 DWIDTH 7 0 @@ -22523,7 +23017,7 @@ 18 F0 ENDCHAR -STARTCHAR 0069 +STARTCHAR uni0692 ENCODING 1682 SWIDTH 480 0 DWIDTH 8 0 @@ -22543,7 +23037,7 @@ 18 F0 ENDCHAR -STARTCHAR 0069 +STARTCHAR uni0693 ENCODING 1683 SWIDTH 420 0 DWIDTH 7 0 @@ -22559,7 +23053,7 @@ F4 0C ENDCHAR -STARTCHAR 0069 +STARTCHAR uni0694 ENCODING 1684 SWIDTH 420 0 DWIDTH 7 0 @@ -22576,7 +23070,7 @@ 04 04 ENDCHAR -STARTCHAR 0069 +STARTCHAR uni0695 ENCODING 1685 SWIDTH 420 0 DWIDTH 7 0 @@ -22595,7 +23089,7 @@ 28 10 ENDCHAR -STARTCHAR 0069 +STARTCHAR uni0696 ENCODING 1686 SWIDTH 420 0 DWIDTH 7 0 @@ -22612,7 +23106,7 @@ 04 04 ENDCHAR -STARTCHAR 0069 +STARTCHAR uni0697 ENCODING 1687 SWIDTH 420 0 DWIDTH 7 0 @@ -22631,7 +23125,7 @@ 18 F0 ENDCHAR -STARTCHAR 0069 +STARTCHAR uni0698 ENCODING 1688 SWIDTH 420 0 DWIDTH 7 0 @@ -22652,7 +23146,7 @@ 18 F0 ENDCHAR -STARTCHAR 0069 +STARTCHAR uni0699 ENCODING 1689 SWIDTH 420 0 DWIDTH 7 0 @@ -22674,7 +23168,7 @@ 18 F0 ENDCHAR -STARTCHAR 0072 +STARTCHAR uni069A ENCODING 1690 SWIDTH 960 0 DWIDTH 16 0 @@ -22682,10 +23176,10 @@ BITMAP 0010 0010 -0002 -0002 -0012 +0000 +0000 0112 +0112 40EC 8080 8080 @@ -22693,14 +23187,13 @@ 4308 3C00 ENDCHAR -STARTCHAR 0072 +STARTCHAR uni069B ENCODING 1691 SWIDTH 960 0 DWIDTH 16 0 -BBX 15 10 1 -6 +BBX 15 9 1 -6 BITMAP -0002 -0012 +0112 0112 40EC 8080 @@ -22710,7 +23203,7 @@ 3C08 0008 ENDCHAR -STARTCHAR 0072 +STARTCHAR uni069C ENCODING 1692 SWIDTH 960 0 DWIDTH 16 0 @@ -22721,9 +23214,9 @@ 0028 0028 0000 -0002 -0012 +0000 0112 +0112 40EC 8080 8080 @@ -22732,24 +23225,23 @@ 3C08 0008 ENDCHAR -STARTCHAR 0079 +STARTCHAR uni069D ENCODING 1693 SWIDTH 1080 0 DWIDTH 18 0 -BBX 17 10 1 -5 +BBX 17 9 1 -5 BITMAP 000700 -000880 -001080 -012700 -40F800 +001880 +012080 +40FF00 80C000 808000 808A00 430A00 3C0000 ENDCHAR -STARTCHAR 0079 +STARTCHAR uni069E ENCODING 1694 SWIDTH 1080 0 DWIDTH 18 0 @@ -22760,18 +23252,18 @@ 002800 002800 000000 +000000 000700 -000880 -001080 -012700 -40F800 +001880 +012080 +40FF00 80C000 808000 808000 430000 3C0000 ENDCHAR -STARTCHAR 00BC +STARTCHAR uni069F ENCODING 1695 SWIDTH 540 0 DWIDTH 9 0 @@ -22782,13 +23274,13 @@ 25 25 20 -26 -29 -31 +20 26 -F8 +39 +21 +FE ENDCHAR -STARTCHAR 00CB +STARTCHAR uni06A0 ENCODING 1696 SWIDTH 600 0 DWIDTH 10 0 @@ -22813,7 +23305,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 00CF +STARTCHAR uni06A1 ENCODING 1697 SWIDTH 900 0 DWIDTH 15 0 @@ -22828,7 +23320,7 @@ 4038 3FC0 ENDCHAR -STARTCHAR 00CF +STARTCHAR uni06A2 ENCODING 1698 SWIDTH 900 0 DWIDTH 15 0 @@ -22847,7 +23339,7 @@ 0100 0100 ENDCHAR -STARTCHAR 00CF +STARTCHAR uni06A3 ENCODING 1699 SWIDTH 900 0 DWIDTH 15 0 @@ -22870,7 +23362,7 @@ 0100 0100 ENDCHAR -STARTCHAR 00CF +STARTCHAR uni06A4 ENCODING 1700 SWIDTH 900 0 DWIDTH 15 0 @@ -22891,7 +23383,7 @@ 4038 3FC0 ENDCHAR -STARTCHAR 00CF +STARTCHAR uni06A5 ENCODING 1701 SWIDTH 900 0 DWIDTH 15 0 @@ -22911,7 +23403,7 @@ 0010 0010 ENDCHAR -STARTCHAR 00CF +STARTCHAR uni06A6 ENCODING 1702 SWIDTH 900 0 DWIDTH 15 0 @@ -22933,7 +23425,7 @@ 4038 3FC0 ENDCHAR -STARTCHAR 00D2 +STARTCHAR uni06A7 ENCODING 1703 SWIDTH 600 0 DWIDTH 10 0 @@ -22954,7 +23446,7 @@ 4200 3C00 ENDCHAR -STARTCHAR 00D2 +STARTCHAR uni06A8 ENCODING 1704 SWIDTH 600 0 DWIDTH 10 0 @@ -22977,31 +23469,28 @@ 4200 3C00 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uni06A9 ENCODING 1705 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 17 1 -1 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 14 1 -1 BITMAP -0004 -0018 +0010 0060 -0186 -0218 +0180 +0210 0060 0180 0200 0200 0100 -00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +40C0 +8020 +8010 +8060 +7F80 ENDCHAR -STARTCHAR 0x06AA +STARTCHAR uni06AA ENCODING 1706 SWIDTH 960 0 DWIDTH 16 0 @@ -23017,213 +23506,200 @@ 8004 7FF8 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uni06AB ENCODING 1707 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 14 1 -1 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 -1 BITMAP -0006 -0018 -0068 -01A8 -0210 -0200 +0010 +0060 +01D0 +0250 +0220 0100 -00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +40C0 +8020 +8010 +8060 +7F80 ENDCHAR -STARTCHAR 0xFED9 +STARTCHAR uni0075 ENCODING 1708 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 13 1 0 +BBX 10 13 1 0 BITMAP -0800 -0800 +0400 +0400 0000 -0100 -0180 -0100 -0900 -1900 -0900 -1900 -0100 -0100 -FE00 +0080 +00C0 +0080 +0480 +0C80 +0480 +8C80 +8080 +C080 +7F00 ENDCHAR -STARTCHAR 0xFED9 +STARTCHAR uni0075 ENCODING 1709 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 12 1 0 +BBX 10 15 1 0 BITMAP -1000 -1000 -2900 -2980 -0100 -0900 -1900 -0900 -1900 -0100 -0100 -FE00 +0400 +0400 +0A00 +0A00 +0000 +0080 +00C0 +0080 +0480 +0C80 +0480 +8C80 +8080 +C080 +7F00 ENDCHAR -STARTCHAR 0xFED9 +STARTCHAR uni0075 ENCODING 1710 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 16 1 -6 +BBX 10 16 1 -6 BITMAP -0100 -0180 -0100 -0900 -1900 -0900 -1900 -0100 -0100 -FE00 +0080 +00C0 +0080 +0480 +0C80 +0480 +8C80 +8080 +C080 +7F00 0000 0000 -2800 -2800 -1000 -1000 +0A00 +0A00 +0400 +0400 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uni06AF ENCODING 1711 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 17 1 -1 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 15 1 -1 BITMAP -0004 -0018 +0010 0060 -0186 -0218 +0180 +0210 0060 0180 0200 0200 0100 00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +4020 +8010 +8010 +8060 +7F80 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uni06B0 ENCODING 1712 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 17 1 -1 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 14 1 -1 BITMAP -0004 -0018 +0010 0060 -0186 -0218 -0068 -01A8 +0180 0210 -0200 +0060 +01D0 +0250 +0220 0100 -00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +40C0 +8020 +8010 +8060 +7F80 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uni06B1 ENCODING 1713 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 18 1 -1 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 16 1 -1 BITMAP 0040 -0144 -0118 +0140 +0110 0060 -0186 -0218 +0180 +0210 0060 0180 0200 0200 0100 -00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +40C0 +8020 +8010 +8060 +7F80 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uni06B2 ENCODING 1714 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 21 1 -5 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 18 1 -5 BITMAP -0004 -0018 +0010 0060 -0186 -0218 +0180 +0210 0060 0180 0200 0200 0100 -00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +40C0 +8020 +8010 +8060 +7F80 0000 0000 -0500 -0500 +0A00 +0A00 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uni06B3 ENCODING 1715 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 23 1 -7 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 20 1 -7 BITMAP -0004 -0018 +0010 0060 -0186 -0218 +0180 +0210 0060 0180 0200 0200 0100 -00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +40C0 +8020 +8010 +8060 +7F80 0000 0400 0400 @@ -23231,34 +23707,32 @@ 0400 0400 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uni06B4 ENCODING 1716 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 20 1 -1 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 18 1 -1 BITMAP 0100 0100 0040 -0144 -0118 +0140 +0110 0060 -0186 -0218 +0180 +0210 0060 0180 0200 0200 0100 -00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +40C0 +8020 +8010 +8060 +7F80 ENDCHAR -STARTCHAR 00DE +STARTCHAR uni06B5 ENCODING 1717 SWIDTH 600 0 DWIDTH 10 0 @@ -23282,7 +23756,7 @@ 8400 7800 ENDCHAR -STARTCHAR 00DE +STARTCHAR uni06B6 ENCODING 1718 SWIDTH 540 0 DWIDTH 9 0 @@ -23305,7 +23779,7 @@ 84 78 ENDCHAR -STARTCHAR 00DE +STARTCHAR uni06B7 ENCODING 1719 SWIDTH 540 0 DWIDTH 9 0 @@ -23330,7 +23804,7 @@ 84 78 ENDCHAR -STARTCHAR 00E7 +STARTCHAR uni06BA ENCODING 1722 SWIDTH 600 0 DWIDTH 10 0 @@ -23344,7 +23818,7 @@ 82 7C ENDCHAR -STARTCHAR 00E7 +STARTCHAR uni06BB ENCODING 1723 SWIDTH 600 0 DWIDTH 10 0 @@ -23364,7 +23838,7 @@ 82 7C ENDCHAR -STARTCHAR 00E7 +STARTCHAR uni06BC ENCODING 1724 SWIDTH 600 0 DWIDTH 10 0 @@ -23382,7 +23856,7 @@ 7E80 0380 ENDCHAR -STARTCHAR 00E7 +STARTCHAR uni06BD ENCODING 1725 SWIDTH 600 0 DWIDTH 10 0 @@ -23401,7 +23875,7 @@ 82 7C ENDCHAR -STARTCHAR 00EA +STARTCHAR uni06BE ENCODING 1726 SWIDTH 600 0 DWIDTH 10 0 @@ -23414,7 +23888,7 @@ 26 C0 ENDCHAR -STARTCHAR 0x06C0 +STARTCHAR uni06C0 ENCODING 1728 SWIDTH 480 0 DWIDTH 8 0 @@ -23432,7 +23906,7 @@ 88 78 ENDCHAR -STARTCHAR 0x06C1 +STARTCHAR uni06C1 ENCODING 1729 SWIDTH 540 0 DWIDTH 9 0 @@ -23443,7 +23917,7 @@ 8C 04 ENDCHAR -STARTCHAR 0x06C2 +STARTCHAR uni06C2 ENCODING 1730 SWIDTH 540 0 DWIDTH 9 0 @@ -23460,7 +23934,7 @@ 8C 04 ENDCHAR -STARTCHAR 0x06C3 +STARTCHAR uni06C3 ENCODING 1731 SWIDTH 540 0 DWIDTH 9 0 @@ -23475,7 +23949,7 @@ 8C 04 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uni06C4 ENCODING 1732 SWIDTH 540 0 DWIDTH 9 0 @@ -23490,7 +23964,7 @@ 94 78 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uni06C5 ENCODING 1733 SWIDTH 540 0 DWIDTH 9 0 @@ -23505,7 +23979,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uni06C6 ENCODING 1734 SWIDTH 480 0 DWIDTH 8 0 @@ -23525,7 +23999,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uni06C7 ENCODING 1735 SWIDTH 540 0 DWIDTH 9 0 @@ -23546,7 +24020,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uni06C8 ENCODING 1736 SWIDTH 540 0 DWIDTH 9 0 @@ -23567,7 +24041,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uni06C9 ENCODING 1737 SWIDTH 480 0 DWIDTH 8 0 @@ -23587,7 +24061,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uni06CA ENCODING 1738 SWIDTH 540 0 DWIDTH 9 0 @@ -23606,7 +24080,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uni06CB ENCODING 1739 SWIDTH 540 0 DWIDTH 9 0 @@ -23627,7 +24101,7 @@ 84 78 ENDCHAR -STARTCHAR 00F0 +STARTCHAR uni06CC ENCODING 1740 SWIDTH 720 0 DWIDTH 12 0 @@ -23642,7 +24116,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 00F0 +STARTCHAR uni06CD ENCODING 1741 SWIDTH 780 0 DWIDTH 13 0 @@ -23657,7 +24131,7 @@ 1060 0F80 ENDCHAR -STARTCHAR 00F0 +STARTCHAR uni06CE ENCODING 1742 SWIDTH 660 0 DWIDTH 11 0 @@ -24036,6 +24510,661 @@ 94 80 ENDCHAR +STARTCHAR char1984 +ENCODING 1920 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 6 1 -2 +BITMAP +00C0 +0180 +0600 +0800 +3000 +C000 +ENDCHAR +STARTCHAR char1984 +ENCODING 1921 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 6 1 -2 +BITMAP +0220 +03C0 +0400 +0800 +3000 +C000 +ENDCHAR +STARTCHAR char1984 +ENCODING 1922 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 6 1 -2 +BITMAP +0248 +03B0 +0400 +0800 +3000 +C000 +ENDCHAR +STARTCHAR char1984 +ENCODING 1923 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 6 1 -2 +BITMAP +00E0 +0F00 +0580 +0800 +3000 +C000 +ENDCHAR +STARTCHAR char1988 +ENCODING 1924 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 4 1 0 +BITMAP +6E +92 +94 +78 +ENDCHAR +STARTCHAR char1989 +ENCODING 1925 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 4 0 0 +BITMAP +03 +0C +84 +78 +ENDCHAR +STARTCHAR char1984 +ENCODING 1926 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 4 1 0 +BITMAP +22 +44 +98 +E0 +ENDCHAR +STARTCHAR char1984 +ENCODING 1927 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 4 1 0 +BITMAP +0E +32 +44 +88 +ENDCHAR +STARTCHAR char1988 +ENCODING 1928 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 6 1 -2 +BITMAP +0E +12 +14 +18 +30 +C0 +ENDCHAR +STARTCHAR char1984 +ENCODING 1929 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 6 1 -2 +BITMAP +1FC0 +0180 +0600 +0800 +3000 +C000 +ENDCHAR +STARTCHAR char1984 +ENCODING 1930 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 -2 +BITMAP +0E +04 +0E +04 +08 +30 +C0 +ENDCHAR +STARTCHAR char1984 +ENCODING 1931 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 7 1 -2 +BITMAP +0140 +0080 +0880 +0700 +0800 +3000 +C000 +ENDCHAR +STARTCHAR char1996 +ENCODING 1932 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 7 1 -3 +BITMAP +0C +12 +2C +20 +10 +10 +E0 +ENDCHAR +STARTCHAR char1984 +ENCODING 1933 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 8 1 -2 +BITMAP +0200 +0400 +0FC0 +0180 +0600 +0800 +3000 +C000 +ENDCHAR +STARTCHAR char1989 +ENCODING 1934 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 4 1 0 +BITMAP +18 +20 +90 +60 +ENDCHAR +STARTCHAR char1984 +ENCODING 1935 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 7 1 -3 +BITMAP +49 +76 +80 +80 +80 +42 +3C +ENDCHAR +STARTCHAR char1936 +ENCODING 1936 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 14 5 1 0 +BITMAP +2000 +5004 +7FF8 +4000 +8000 +ENDCHAR +STARTCHAR char1937 +ENCODING 1937 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 5 6 1 -2 +BITMAP +20 +C0 +60 +40 +C0 +38 +ENDCHAR +STARTCHAR char1988 +ENCODING 1938 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 5 8 1 -3 +BITMAP +08 +10 +E0 +38 +40 +80 +88 +70 +ENDCHAR +STARTCHAR char1988 +ENCODING 1939 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 7 1 -3 +BITMAP +6E +92 +94 +78 +80 +84 +78 +ENDCHAR +STARTCHAR char1984 +ENCODING 1940 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 6 1 0 +BITMAP +0400 +0480 +0780 +0880 +3100 +C000 +ENDCHAR +STARTCHAR char1984 +ENCODING 1941 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 8 1 -3 +BITMAP +0E +04 +0E +04 +08 +30 +C4 +04 +ENDCHAR +STARTCHAR char1984 +ENCODING 1942 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 8 1 -3 +BITMAP +0A +04 +44 +38 +40 +80 +88 +70 +ENDCHAR +STARTCHAR char1996 +ENCODING 1943 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 10 1 -3 +BITMAP +01 +02 +04 +0C +12 +3C +20 +10 +10 +E0 +ENDCHAR +STARTCHAR char1996 +ENCODING 1944 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 -3 +BITMAP +08 +00 +14 +00 +0C +12 +3C +20 +10 +10 +E0 +ENDCHAR +STARTCHAR char1984 +ENCODING 1945 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 6 1 -2 +BITMAP +00C0 +0180 +0600 +0800 +3080 +C080 +ENDCHAR +STARTCHAR char1984 +ENCODING 1946 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 10 1 -2 +BITMAP +0080 +0080 +0000 +0000 +00C0 +0180 +0600 +0800 +3000 +C000 +ENDCHAR +STARTCHAR char1984 +ENCODING 1947 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 -2 +BITMAP +0080 +0080 +0000 +0140 +0080 +0880 +0700 +0800 +3000 +C000 +ENDCHAR +STARTCHAR char1984 +ENCODING 1948 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 10 1 -2 +BITMAP +0200 +0200 +0000 +0000 +00E0 +0F00 +0580 +0800 +3000 +C000 +ENDCHAR +STARTCHAR char1936 +ENCODING 1949 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 14 9 1 0 +BITMAP +0100 +0100 +0280 +0280 +2000 +5004 +7FF8 +4000 +8000 +ENDCHAR +STARTCHAR char1936 +ENCODING 1950 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 14 7 1 -2 +BITMAP +2000 +5004 +7FF8 +4000 +8000 +0100 +0100 +ENDCHAR +STARTCHAR char1936 +ENCODING 1951 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 14 7 1 0 +BITMAP +0100 +0100 +2000 +5004 +7FF8 +4000 +8000 +ENDCHAR +STARTCHAR char1996 +ENCODING 1952 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 7 1 -3 +BITMAP +0C +12 +2C +20 +14 +14 +E0 +ENDCHAR +STARTCHAR char1996 +ENCODING 1953 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 10 1 -3 +BITMAP +04 +04 +00 +0C +12 +2C +20 +10 +10 +E0 +ENDCHAR +STARTCHAR char1984 +ENCODING 1954 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 7 1 -3 +BITMAP +0E +32 +44 +88 +00 +20 +20 +ENDCHAR +STARTCHAR char1984 +ENCODING 1955 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 8 1 0 +BITMAP +04 +04 +00 +00 +0E +32 +44 +88 +ENDCHAR +STARTCHAR char1989 +ENCODING 1956 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 7 1 0 +BITMAP +14 +14 +00 +18 +20 +90 +60 +ENDCHAR +STARTCHAR char1988 +ENCODING 1957 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 10 1 -2 +BITMAP +04 +04 +00 +00 +0E +12 +14 +18 +30 +C0 +ENDCHAR +STARTCHAR char1963 +ENCODING 1958 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 6 3 11 8 +BITMAP +0C +30 +C0 +ENDCHAR +STARTCHAR char1963 +ENCODING 1959 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 9 4 10 7 +BITMAP +0C00 +3180 +C600 +1800 +ENDCHAR +STARTCHAR char1963 +ENCODING 1960 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 6 3 9 -7 +BITMAP +0C +30 +C0 +ENDCHAR +STARTCHAR char1963 +ENCODING 1961 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 7 5 9 -9 +BITMAP +0C +30 +C6 +18 +60 +ENDCHAR +STARTCHAR char1963 +ENCODING 1962 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 3 4 12 7 +BITMAP +C0 +20 +40 +80 +ENDCHAR +STARTCHAR char1963 +ENCODING 1963 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 7 4 10 7 +BITMAP +CC +22 +44 +88 +ENDCHAR +STARTCHAR char1963 +ENCODING 1964 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 3 4 12 7 +BITMAP +60 +80 +40 +20 +ENDCHAR +STARTCHAR char1963 +ENCODING 1965 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 7 4 10 7 +BITMAP +66 +88 +44 +22 +ENDCHAR +STARTCHAR char1963 +ENCODING 1966 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 7 4 10 7 +BITMAP +C6 +28 +44 +82 +ENDCHAR +STARTCHAR char1963 +ENCODING 1967 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 6 4 12 7 +BITMAP +18 +64 +88 +C0 +ENDCHAR +STARTCHAR char1963 +ENCODING 1968 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 4 4 11 7 +BITMAP +60 +90 +90 +60 +ENDCHAR STARTCHAR 00FA ENCODING 2305 SWIDTH 0 0 @@ -25921,14 +27050,14 @@ 88 70 ENDCHAR -STARTCHAR 00A1 +STARTCHAR 0x0E01 ENCODING 3585 SWIDTH 480 0 DWIDTH 8 0 BBX 7 9 1 0 BITMAP 7C -86 +82 42 82 82 @@ -25937,7 +27066,7 @@ 82 82 ENDCHAR -STARTCHAR 00A2 +STARTCHAR 0x0E02 ENCODING 3586 SWIDTH 540 0 DWIDTH 9 0 @@ -25953,7 +27082,7 @@ 11 3F ENDCHAR -STARTCHAR 00A3 +STARTCHAR 0x0E03 ENCODING 3587 SWIDTH 600 0 DWIDTH 10 0 @@ -25969,7 +27098,7 @@ 0880 1F80 ENDCHAR -STARTCHAR 00A4 +STARTCHAR 0x0E04 ENCODING 3588 SWIDTH 540 0 DWIDTH 9 0 @@ -25985,7 +27114,7 @@ 41 41 ENDCHAR -STARTCHAR 00A4 +STARTCHAR 0x0E05 ENCODING 3589 SWIDTH 540 0 DWIDTH 9 0 @@ -26001,7 +27130,7 @@ 41 41 ENDCHAR -STARTCHAR 00A6 +STARTCHAR 0x0E06 ENCODING 3590 SWIDTH 660 0 DWIDTH 11 0 @@ -26017,7 +27146,7 @@ 28C0 1840 ENDCHAR -STARTCHAR 00A7 +STARTCHAR 0x0E07 ENCODING 3591 SWIDTH 420 0 DWIDTH 7 0 @@ -26033,14 +27162,14 @@ 14 0C ENDCHAR -STARTCHAR 00A8 +STARTCHAR 0x0E08 ENCODING 3592 SWIDTH 480 0 DWIDTH 8 0 BBX 7 9 1 0 BITMAP 7C -86 +82 02 1A 2E @@ -26049,14 +27178,14 @@ 02 02 ENDCHAR -STARTCHAR 00A9 +STARTCHAR 0x0E09 ENCODING 3593 SWIDTH 600 0 DWIDTH 10 0 BBX 9 9 1 0 BITMAP 3C00 -4600 +4200 0200 4200 A200 @@ -26065,7 +27194,7 @@ 3280 2100 ENDCHAR -STARTCHAR 00AA +STARTCHAR 0x0E0A ENCODING 3594 SWIDTH 600 0 DWIDTH 10 0 @@ -26081,7 +27210,7 @@ 1100 3F00 ENDCHAR -STARTCHAR 00AB +STARTCHAR 0x0E0B ENCODING 3595 SWIDTH 660 0 DWIDTH 11 0 @@ -26097,7 +27226,7 @@ 0880 1F80 ENDCHAR -STARTCHAR 00AC +STARTCHAR 0x0E0C ENCODING 3596 SWIDTH 660 0 DWIDTH 11 0 @@ -26110,10 +27239,10 @@ 8440 8440 CF40 -ACC0 +B4C0 4840 ENDCHAR -STARTCHAR 00AD +STARTCHAR 0x0E0D ENCODING 3597 SWIDTH 660 0 DWIDTH 11 0 @@ -26133,7 +27262,7 @@ 0A40 0780 ENDCHAR -STARTCHAR 00AE +STARTCHAR 0x0E0E ENCODING 3598 SWIDTH 600 0 DWIDTH 10 0 @@ -26154,7 +27283,7 @@ 3180 0080 ENDCHAR -STARTCHAR 00AF +STARTCHAR 0x0E0F ENCODING 3599 SWIDTH 600 0 DWIDTH 10 0 @@ -26175,7 +27304,7 @@ 3580 0080 ENDCHAR -STARTCHAR 00B0 +STARTCHAR 0x0E10 ENCODING 3600 SWIDTH 540 0 DWIDTH 9 0 @@ -26196,7 +27325,7 @@ AA D4 ENDCHAR -STARTCHAR 00B1 +STARTCHAR 0x0E11 ENCODING 3601 SWIDTH 660 0 DWIDTH 11 0 @@ -26212,7 +27341,7 @@ 0840 0840 ENDCHAR -STARTCHAR 00B2 +STARTCHAR 0x0E12 ENCODING 3602 SWIDTH 780 0 DWIDTH 13 0 @@ -26228,7 +27357,7 @@ 6530 6310 ENDCHAR -STARTCHAR 00B3 +STARTCHAR 0x0E13 ENCODING 3603 SWIDTH 780 0 DWIDTH 13 0 @@ -26244,23 +27373,23 @@ A650 4460 ENDCHAR -STARTCHAR 00B4 +STARTCHAR 0x0E14 ENCODING 3604 SWIDTH 540 0 DWIDTH 9 0 BBX 8 9 1 0 BITMAP -3E -43 +3C +42 91 A9 99 -B1 +91 61 41 41 ENDCHAR -STARTCHAR 00B5 +STARTCHAR 0x0E15 ENCODING 3605 SWIDTH 600 0 DWIDTH 10 0 @@ -26276,14 +27405,14 @@ 41 41 ENDCHAR -STARTCHAR 00B6 +STARTCHAR 0x0E16 ENCODING 3606 SWIDTH 480 0 DWIDTH 8 0 BBX 7 9 1 0 BITMAP 7C -86 +82 42 82 82 @@ -26292,7 +27421,7 @@ A2 42 ENDCHAR -STARTCHAR 00B7 +STARTCHAR 0x0E17 ENCODING 3607 SWIDTH 540 0 DWIDTH 9 0 @@ -26308,7 +27437,7 @@ 21 21 ENDCHAR -STARTCHAR 00B8 +STARTCHAR 0x0E18 ENCODING 3608 SWIDTH 480 0 DWIDTH 8 0 @@ -26324,7 +27453,7 @@ 24 7C ENDCHAR -STARTCHAR 00B9 +STARTCHAR 0x0E19 ENCODING 3609 SWIDTH 660 0 DWIDTH 11 0 @@ -26340,7 +27469,7 @@ 3140 2180 ENDCHAR -STARTCHAR 00BA +STARTCHAR 0x0E1A ENCODING 3610 SWIDTH 600 0 DWIDTH 10 0 @@ -26356,7 +27485,7 @@ 2080 7F80 ENDCHAR -STARTCHAR 00BB +STARTCHAR 0x0E1B ENCODING 3611 SWIDTH 600 0 DWIDTH 10 0 @@ -26376,7 +27505,7 @@ 2080 7F80 ENDCHAR -STARTCHAR 00BC +STARTCHAR 0x0E1C ENCODING 3612 SWIDTH 480 0 DWIDTH 8 0 @@ -26392,7 +27521,7 @@ 82 82 ENDCHAR -STARTCHAR 00BD +STARTCHAR 0x0E1D ENCODING 3613 SWIDTH 480 0 DWIDTH 8 0 @@ -26412,7 +27541,7 @@ 82 82 ENDCHAR -STARTCHAR 00BE +STARTCHAR 0x0E1E ENCODING 3614 SWIDTH 660 0 DWIDTH 11 0 @@ -26428,7 +27557,7 @@ 2040 2040 ENDCHAR -STARTCHAR 00BF +STARTCHAR 0x0E1F ENCODING 3615 SWIDTH 660 0 DWIDTH 11 0 @@ -26448,14 +27577,14 @@ 2040 2040 ENDCHAR -STARTCHAR 00C0 +STARTCHAR 0x0E20 ENCODING 3616 SWIDTH 600 0 DWIDTH 10 0 BBX 9 9 1 0 BITMAP 1F00 -2180 +2080 1080 2080 2080 @@ -26464,7 +27593,7 @@ A080 4080 ENDCHAR -STARTCHAR 00C1 +STARTCHAR 0x0E21 ENCODING 3617 SWIDTH 540 0 DWIDTH 9 0 @@ -26480,7 +27609,7 @@ A3 61 ENDCHAR -STARTCHAR 00C2 +STARTCHAR 0x0E22 ENCODING 3618 SWIDTH 480 0 DWIDTH 8 0 @@ -26496,7 +27625,7 @@ 82 FC ENDCHAR -STARTCHAR 00C3 +STARTCHAR 0x0E23 ENCODING 3619 SWIDTH 480 0 DWIDTH 8 0 @@ -26512,14 +27641,14 @@ 14 08 ENDCHAR -STARTCHAR 00C4 +STARTCHAR 0x0E24 ENCODING 3620 SWIDTH 480 0 DWIDTH 8 0 BBX 7 14 1 -5 BITMAP 7C -86 +82 42 82 82 @@ -26533,14 +27662,14 @@ 02 02 ENDCHAR -STARTCHAR 00C5 +STARTCHAR 0x0E25 ENCODING 3621 SWIDTH 540 0 DWIDTH 9 0 BBX 7 9 2 0 BITMAP 7C -86 +82 02 72 8A @@ -26549,14 +27678,14 @@ A2 42 ENDCHAR -STARTCHAR 00C6 +STARTCHAR 0x0E26 ENCODING 3622 SWIDTH 600 0 DWIDTH 10 0 BBX 9 14 1 -5 BITMAP 1F00 -2180 +2080 1080 2080 2080 @@ -26570,14 +27699,14 @@ 0080 0080 ENDCHAR -STARTCHAR 00C7 +STARTCHAR 0x0E27 ENCODING 3623 SWIDTH 480 0 DWIDTH 8 0 BBX 7 9 1 0 BITMAP 7C -86 +82 02 02 02 @@ -26586,7 +27715,7 @@ 0A 04 ENDCHAR -STARTCHAR 00A4 +STARTCHAR 0x0E28 ENCODING 3624 SWIDTH 540 0 DWIDTH 9 0 @@ -26603,7 +27732,7 @@ 41 41 ENDCHAR -STARTCHAR 00C9 +STARTCHAR 0x0E29 ENCODING 3625 SWIDTH 660 0 DWIDTH 11 0 @@ -26619,7 +27748,7 @@ 2100 7F00 ENDCHAR -STARTCHAR 00CA +STARTCHAR 0x0E2A ENCODING 3626 SWIDTH 480 0 DWIDTH 8 0 @@ -26636,7 +27765,7 @@ 92 62 ENDCHAR -STARTCHAR 00CB +STARTCHAR 0x0E2B ENCODING 3627 SWIDTH 540 0 DWIDTH 9 0 @@ -26652,7 +27781,7 @@ 21 21 ENDCHAR -STARTCHAR 00CC +STARTCHAR 0x0E2C ENCODING 3628 SWIDTH 660 0 DWIDTH 11 0 @@ -26669,14 +27798,14 @@ 2040 2040 ENDCHAR -STARTCHAR 00CD +STARTCHAR 0x0E2D ENCODING 3629 SWIDTH 540 0 DWIDTH 9 0 BBX 7 9 2 0 BITMAP 7C -86 +82 02 42 A2 @@ -26685,7 +27814,7 @@ 82 FE ENDCHAR -STARTCHAR 00CE +STARTCHAR 0x0E2E ENCODING 3630 SWIDTH 540 0 DWIDTH 9 0 @@ -26701,7 +27830,7 @@ 82 7E ENDCHAR -STARTCHAR 00CF +STARTCHAR 0x0E2F ENCODING 3631 SWIDTH 480 0 DWIDTH 8 0 @@ -26717,7 +27846,7 @@ 06 18 ENDCHAR -STARTCHAR 00D0 +STARTCHAR 0x0E30 ENCODING 3632 SWIDTH 420 0 DWIDTH 7 0 @@ -26733,25 +27862,25 @@ C4 78 ENDCHAR -STARTCHAR 00D1 +STARTCHAR 0x0E31 ENCODING 3633 SWIDTH 0 0 DWIDTH 0 0 -BBX 6 4 0 10 +BBX 6 4 -5 10 BITMAP 40 A4 C4 78 ENDCHAR -STARTCHAR 00D2 +STARTCHAR 0x0E32 ENCODING 3634 SWIDTH 480 0 DWIDTH 8 0 BBX 7 9 1 0 BITMAP 7C -86 +82 02 02 02 @@ -26760,7 +27889,7 @@ 02 02 ENDCHAR -STARTCHAR 00D3 +STARTCHAR 0x0E33 ENCODING 3635 SWIDTH 480 0 DWIDTH 8 0 @@ -26773,7 +27902,7 @@ 0000 0000 07C0 -0860 +0820 0020 0020 0020 @@ -26782,22 +27911,22 @@ 0020 0020 ENDCHAR -STARTCHAR 00D4 +STARTCHAR 0x0E34 ENCODING 3636 SWIDTH 0 0 DWIDTH 0 0 -BBX 7 4 0 9 +BBX 7 4 -7 9 BITMAP 38 44 FE 02 ENDCHAR -STARTCHAR 00D5 +STARTCHAR 0x0E35 ENCODING 3637 SWIDTH 0 0 DWIDTH 0 0 -BBX 7 5 0 9 +BBX 7 5 -7 9 BITMAP 02 3A @@ -26805,11 +27934,11 @@ FE 02 ENDCHAR -STARTCHAR 00D6 +STARTCHAR 0x0E36 ENCODING 3638 SWIDTH 0 0 DWIDTH 0 0 -BBX 7 5 0 9 +BBX 7 5 -7 9 BITMAP 06 3A @@ -26817,11 +27946,11 @@ FE 02 ENDCHAR -STARTCHAR 00D7 +STARTCHAR 0x0E37 ENCODING 3639 SWIDTH 0 0 DWIDTH 0 0 -BBX 7 5 0 9 +BBX 7 5 -7 9 BITMAP 0A 3A @@ -26829,11 +27958,11 @@ FE 02 ENDCHAR -STARTCHAR 00D8 +STARTCHAR 0x0E38 ENCODING 3640 SWIDTH 0 0 DWIDTH 0 0 -BBX 3 6 0 -7 +BBX 3 6 -3 -7 BITMAP 40 A0 @@ -26842,11 +27971,11 @@ 20 20 ENDCHAR -STARTCHAR 00D9 +STARTCHAR 0x0E39 ENCODING 3641 SWIDTH 0 0 DWIDTH 0 0 -BBX 6 6 0 -7 +BBX 6 6 -6 -7 BITMAP 44 A4 @@ -26855,34 +27984,36 @@ 24 18 ENDCHAR -STARTCHAR char3642 +STARTCHAR 0x0E3A ENCODING 3642 SWIDTH 0 0 DWIDTH 0 0 -BBX 2 2 0 -3 +BBX 2 2 -2 -3 BITMAP C0 C0 ENDCHAR -STARTCHAR C066 +STARTCHAR 0x0E3F ENCODING 3647 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 11 1 0 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 8 13 3 -1 BITMAP -3F20 -10C0 -10C0 -1140 -1280 -1F00 -1880 -1040 -3040 -5080 -BF00 +08 +FC +4B +49 +49 +4A +7C +4A +49 +49 +4A +FC +08 ENDCHAR -STARTCHAR 00E0 +STARTCHAR 0x0E40 ENCODING 3648 SWIDTH 240 0 DWIDTH 4 0 @@ -26898,7 +28029,7 @@ A0 40 ENDCHAR -STARTCHAR 00E1 +STARTCHAR 0x0E41 ENCODING 3649 SWIDTH 480 0 DWIDTH 8 0 @@ -26914,86 +28045,86 @@ AA 44 ENDCHAR -STARTCHAR 00E2 +STARTCHAR 0x0E42 ENCODING 3650 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 17 1 0 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 17 0 0 BITMAP -F0 -98 -40 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -30 -28 +78 +86 +60 +10 +10 +10 10 +10 +10 +10 +10 +10 +10 +10 +18 +14 +08 ENDCHAR -STARTCHAR 00E3 +STARTCHAR 0x0E43 ENCODING 3651 SWIDTH 360 0 DWIDTH 6 0 -BBX 5 17 1 0 +BBX 6 17 0 0 BITMAP -40 -A0 60 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -30 -28 +90 +90 +50 +10 10 +10 +10 +10 +10 +10 +10 +10 +10 +18 +14 +08 ENDCHAR -STARTCHAR 00E4 +STARTCHAR 0x0E44 ENCODING 3652 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 7 17 1 0 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 17 0 0 BITMAP -18 -98 -A8 -68 -48 -08 -08 -08 -08 -08 -08 -08 -08 -08 -0C -0A +84 +4C +54 +24 +24 +04 +04 04 +04 +04 +04 +04 +04 +04 +06 +05 +02 ENDCHAR -STARTCHAR 00E5 +STARTCHAR 0x0E45 ENCODING 3653 SWIDTH 480 0 DWIDTH 8 0 BBX 7 14 1 -5 BITMAP 7C -86 +82 02 02 02 @@ -27007,7 +28138,7 @@ 02 02 ENDCHAR -STARTCHAR 00E6 +STARTCHAR 0x0E46 ENCODING 3654 SWIDTH 480 0 DWIDTH 8 0 @@ -27027,11 +28158,11 @@ 04 18 ENDCHAR -STARTCHAR 00E7 +STARTCHAR 0x0E47 ENCODING 3655 SWIDTH 0 0 DWIDTH 0 0 -BBX 6 5 0 10 +BBX 6 5 -7 10 BITMAP 04 78 @@ -27039,83 +28170,83 @@ F4 18 ENDCHAR -STARTCHAR char3656 +STARTCHAR 0x0E48 ENCODING 3656 SWIDTH 0 0 DWIDTH 0 0 -BBX 1 3 0 10 +BBX 1 3 -1 14 BITMAP 80 80 80 ENDCHAR -STARTCHAR 00E9 +STARTCHAR 0x0E49 ENCODING 3657 SWIDTH 0 0 DWIDTH 0 0 -BBX 6 4 0 10 +BBX 6 4 -5 14 BITMAP 40 A4 44 F8 ENDCHAR -STARTCHAR 00EA +STARTCHAR 0x0E4A ENCODING 3658 SWIDTH 0 0 DWIDTH 0 0 -BBX 9 4 0 10 +BBX 9 4 -7 14 BITMAP 6C00 9280 D300 D600 ENDCHAR -STARTCHAR 00EB +STARTCHAR 0x0E4B ENCODING 3659 SWIDTH 0 0 DWIDTH 0 0 -BBX 3 3 0 10 +BBX 3 3 -3 14 BITMAP 40 E0 40 ENDCHAR -STARTCHAR 00EC +STARTCHAR 0x0E4C ENCODING 3660 SWIDTH 0 0 DWIDTH 0 0 -BBX 4 4 0 10 +BBX 4 4 -3 14 BITMAP 10 60 A0 40 ENDCHAR -STARTCHAR 00ED +STARTCHAR 0x0E4D ENCODING 3661 SWIDTH 0 0 DWIDTH 0 0 -BBX 3 4 0 10 +BBX 3 4 -3 14 BITMAP 40 A0 A0 40 ENDCHAR -STARTCHAR 00EE +STARTCHAR 0x0E4E ENCODING 3662 SWIDTH 0 0 DWIDTH 0 0 -BBX 3 5 0 10 +BBX 4 5 -3 10 BITMAP -60 -80 +30 +40 60 80 60 ENDCHAR -STARTCHAR 00EF +STARTCHAR 0x0E4F ENCODING 3663 SWIDTH 540 0 DWIDTH 9 0 @@ -27124,13 +28255,13 @@ 3C 42 99 -BD -BD +A5 +A5 99 42 3C ENDCHAR -STARTCHAR 00F0 +STARTCHAR 0x0E50 ENCODING 3664 SWIDTH 540 0 DWIDTH 9 0 @@ -27144,7 +28275,7 @@ 42 3C ENDCHAR -STARTCHAR 00F1 +STARTCHAR 0x0E51 ENCODING 3665 SWIDTH 540 0 DWIDTH 9 0 @@ -27152,14 +28283,14 @@ BITMAP 3C 42 -89 -95 -8D -C5 -79 -02 +91 +A9 +99 +49 +32 +04 ENDCHAR -STARTCHAR 00F2 +STARTCHAR 0x0E52 ENCODING 3666 SWIDTH 660 0 DWIDTH 11 0 @@ -27176,21 +28307,21 @@ 4040 3F80 ENDCHAR -STARTCHAR 00F3 +STARTCHAR 0x0E53 ENCODING 3667 SWIDTH 600 0 DWIDTH 10 0 BBX 9 7 1 0 BITMAP 7700 -8980 8880 8880 +8880 C880 A880 4900 ENDCHAR -STARTCHAR 00F4 +STARTCHAR 0x0E54 ENCODING 3668 SWIDTH 720 0 DWIDTH 12 0 @@ -27208,7 +28339,7 @@ 4700 3FC0 ENDCHAR -STARTCHAR 00F5 +STARTCHAR 0x0E55 ENCODING 3669 SWIDTH 720 0 DWIDTH 12 0 @@ -27225,7 +28356,7 @@ 4E00 3FC0 ENDCHAR -STARTCHAR 00F6 +STARTCHAR 0x0E56 ENCODING 3670 SWIDTH 480 0 DWIDTH 8 0 @@ -27243,7 +28374,7 @@ 54 38 ENDCHAR -STARTCHAR 00F7 +STARTCHAR 0x0E57 ENCODING 3671 SWIDTH 720 0 DWIDTH 12 0 @@ -27254,14 +28385,14 @@ 0040 0040 7640 -D940 +8940 8940 8140 A140 -D280 +D180 6300 ENDCHAR -STARTCHAR 00F8 +STARTCHAR 0x0E58 ENCODING 3672 SWIDTH 660 0 DWIDTH 11 0 @@ -27270,7 +28401,7 @@ 0040 0040 0040 -3CC0 +3C40 4380 8100 B280 @@ -27278,7 +28409,7 @@ 6480 2300 ENDCHAR -STARTCHAR 00F9 +STARTCHAR 0x0E59 ENCODING 3673 SWIDTH 600 0 DWIDTH 10 0 @@ -27289,48 +28420,46 @@ 0080 0080 7280 -CD80 +8D80 8400 -8600 +8400 9200 A900 7100 ENDCHAR -STARTCHAR 00CF +STARTCHAR 0x0E5A ENCODING 3674 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 11 1 -2 +BBX 8 9 1 0 BITMAP -42 -A2 -C6 -8A -72 -02 -02 -02 -02 -01 -06 +45 +A5 +CD +95 +65 +05 +05 +05 +0A ENDCHAR -STARTCHAR char3675 +STARTCHAR 0x0E5B ENCODING 3675 SWIDTH 840 0 DWIDTH 14 0 BBX 13 11 1 0 BITMAP -6000 -9000 -A018 -8930 -8920 -8920 -8920 -8920 -8920 -D6A0 -7240 +2000 +5000 +8800 +8A80 +9AB8 +AAA0 +AAC0 +9B00 +8200 +4400 +3800 ENDCHAR STARTCHAR 0064 ENCODING 3713 @@ -27830,11 +28959,10 @@ ENCODING 3761 SWIDTH 0 0 DWIDTH 0 0 -BBX 8 4 0 10 +BBX 8 3 -7 10 BITMAP 40 A1 -C1 7E ENDCHAR STARTCHAR 006B @@ -27878,23 +29006,19 @@ ENCODING 3764 SWIDTH 0 0 DWIDTH 0 0 -BBX 7 5 0 10 +BBX 7 3 -7 10 BITMAP 7C -C6 82 -82 44 ENDCHAR STARTCHAR 0075 ENCODING 3765 SWIDTH 0 0 DWIDTH 0 0 -BBX 9 5 0 10 +BBX 9 3 -7 10 BITMAP 7C00 -C600 -8200 8280 4700 ENDCHAR @@ -27902,31 +29026,27 @@ ENCODING 3766 SWIDTH 0 0 DWIDTH 0 0 -BBX 7 5 0 10 +BBX 7 3 -7 10 BITMAP 7C -C6 -92 92 -44 +54 ENDCHAR STARTCHAR 0075 ENCODING 3767 SWIDTH 0 0 DWIDTH 0 0 -BBX 9 5 0 10 +BBX 9 3 -7 10 BITMAP 7C00 -C600 -9200 9280 -4700 +5700 ENDCHAR STARTCHAR 0035 ENCODING 3768 SWIDTH 0 0 DWIDTH 0 0 -BBX 3 5 0 -5 +BBX 3 5 -3 -6 BITMAP 40 A0 @@ -27938,7 +29058,7 @@ ENCODING 3769 SWIDTH 0 0 DWIDTH 0 0 -BBX 4 5 0 -5 +BBX 4 5 -4 -6 BITMAP D0 D0 @@ -27948,12 +29068,11 @@ ENDCHAR STARTCHAR 0061 ENCODING 3771 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 8 4 0 10 +SWIDTH 60 0 +DWIDTH 1 0 +BBX 8 3 -7 10 BITMAP 7E -C1 A1 40 ENDCHAR @@ -27961,7 +29080,7 @@ ENCODING 3772 SWIDTH 0 0 DWIDTH 0 0 -BBX 6 3 0 -3 +BBX 6 3 -6 -4 BITMAP 70 AC @@ -28111,7 +29230,7 @@ ENCODING 3784 SWIDTH 0 0 DWIDTH 0 0 -BBX 1 3 0 10 +BBX 1 3 -1 14 BITMAP 80 80 @@ -28121,7 +29240,7 @@ ENCODING 3785 SWIDTH 0 0 DWIDTH 0 0 -BBX 6 4 0 10 +BBX 6 4 -5 14 BITMAP 40 A0 @@ -28132,7 +29251,7 @@ ENCODING 3786 SWIDTH 0 0 DWIDTH 0 0 -BBX 8 4 0 9 +BBX 8 4 -7 14 BITMAP 6C 92 @@ -28143,7 +29262,7 @@ ENCODING 3787 SWIDTH 0 0 DWIDTH 0 0 -BBX 3 3 0 10 +BBX 3 3 -3 14 BITMAP 40 E0 @@ -28153,7 +29272,7 @@ ENCODING 3788 SWIDTH 0 0 DWIDTH 0 0 -BBX 6 4 0 10 +BBX 6 4 -6 14 BITMAP 04 78 @@ -28164,7 +29283,7 @@ ENCODING 3789 SWIDTH 0 0 DWIDTH 0 0 -BBX 3 4 0 10 +BBX 3 4 -3 14 BITMAP 40 A0 @@ -29794,6 +30913,556 @@ C0 C0 ENDCHAR +STARTCHAR 3131 +ENCODING 4352 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 11 10 2 0 +BITMAP +8000 +FFE0 +0020 +0020 +0020 +0020 +0020 +0020 +0020 +0020 +ENDCHAR +STARTCHAR 3132 +ENCODING 4353 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 12 9 2 1 +BITMAP +8100 +FDF0 +0410 +0410 +0410 +0410 +0410 +0410 +0410 +ENDCHAR +STARTCHAR 3134 +ENCODING 4354 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 12 7 3 2 +BITMAP +C000 +4000 +4000 +4000 +4000 +4060 +3FF0 +ENDCHAR +STARTCHAR 3137 +ENCODING 4355 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 12 8 3 2 +BITMAP +0040 +FFE0 +4000 +4000 +4000 +4000 +4070 +7FF0 +ENDCHAR +STARTCHAR 3138 +ENCODING 4356 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 13 8 2 1 +BITMAP +FDF0 +4100 +4100 +4100 +4100 +4300 +4D00 +71F8 +ENDCHAR +STARTCHAR 3139 +ENCODING 4357 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 12 9 3 1 +BITMAP +0040 +FFC0 +4040 +0040 +7FC0 +4000 +4000 +4060 +7FF0 +ENDCHAR +STARTCHAR 3141 +ENCODING 4358 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 11 8 3 1 +BITMAP +FFE0 +4020 +4040 +4040 +4040 +4040 +7FC0 +4000 +ENDCHAR +STARTCHAR 3142 +ENCODING 4359 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 10 11 3 0 +BITMAP +00C0 +C040 +4040 +4040 +7FC0 +4040 +4040 +4040 +4040 +7FC0 +0040 +ENDCHAR +STARTCHAR 3143 +ENCODING 4360 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 13 11 2 0 +BITMAP +0018 +0988 +C488 +4488 +44F8 +7C88 +4488 +4488 +4488 +7CF8 +4488 +ENDCHAR +STARTCHAR 3145 +ENCODING 4361 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 12 9 3 1 +BITMAP +0800 +0600 +0400 +0C00 +0B00 +1080 +2060 +4020 +8010 +ENDCHAR +STARTCHAR 3146 +ENCODING 4362 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 13 9 2 1 +BITMAP +1040 +0820 +0820 +1040 +18C0 +27A0 +4110 +8208 +0008 +ENDCHAR +STARTCHAR 3147 +ENCODING 4363 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 9 9 4 1 +BITMAP +0800 +3E00 +4100 +8080 +8080 +8080 +8080 +4100 +3E00 +ENDCHAR +STARTCHAR 3148 +ENCODING 4364 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 10 9 3 1 +BITMAP +0080 +FFC0 +0400 +0400 +0C00 +0A00 +1180 +60C0 +8040 +ENDCHAR +STARTCHAR 3149 +ENCODING 4365 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 15 9 1 1 +BITMAP +0204 +7F7C +2820 +0820 +0820 +1658 +2184 +4102 +8200 +ENDCHAR +STARTCHAR 314A +ENCODING 4366 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 11 9 3 1 +BITMAP +1F00 +0000 +FFE0 +4400 +0400 +0A00 +1180 +2060 +C020 +ENDCHAR +STARTCHAR 314B +ENCODING 4367 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 10 10 3 1 +BITMAP +0040 +FFC0 +6040 +0040 +01C0 +1E40 +E040 +0080 +0080 +0080 +ENDCHAR +STARTCHAR 314C +ENCODING 4368 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 12 8 3 1 +BITMAP +FFE0 +4000 +4000 +7FC0 +4000 +4000 +4070 +7FF0 +ENDCHAR +STARTCHAR 314D +ENCODING 4369 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 13 9 2 1 +BITMAP +0030 +7FF0 +20C0 +0040 +10C0 +0880 +0890 +0BF8 +FC00 +ENDCHAR +STARTCHAR 314E +ENCODING 4370 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 13 10 2 0 +BITMAP +0F80 +0010 +FFF8 +0200 +0D00 +10C0 +1040 +1040 +18C0 +0F80 +ENDCHAR +STARTCHAR 3165 +ENCODING 4371 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 10 9 2 1 +BITMAP +0400 +C7C0 +4040 +4040 +4040 +4040 +4440 +5840 +2040 +ENDCHAR +STARTCHAR 3165 +ENCODING 4372 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 13 9 2 1 +BITMAP +0300 +C100 +4100 +4100 +4100 +4100 +4500 +59F8 +2000 +ENDCHAR +STARTCHAR 3166 +ENCODING 4373 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 13 9 2 1 +BITMAP +0010 +C1F0 +4100 +4100 +4100 +4100 +4100 +5D18 +61F8 +ENDCHAR +STARTCHAR 3166 +ENCODING 4374 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 12 10 2 1 +BITMAP +0020 +0310 +C110 +4110 +41F0 +4110 +4110 +4110 +5DF0 +6110 +ENDCHAR +STARTCHAR 3166 +ENCODING 4375 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 12 9 2 1 +BITMAP +0900 +F9F0 +8010 +8010 +8010 +8010 +8010 +8C10 +FC10 +ENDCHAR +STARTCHAR 316A +ENCODING 4376 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 14 8 2 1 +BITMAP +FCC0 +0840 +0840 +FC40 +4040 +4044 +4258 +7C20 +ENDCHAR +STARTCHAR 316A +ENCODING 4377 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 14 8 2 1 +BITMAP +FDF8 +0810 +0810 +FDF8 +4080 +4080 +4284 +7CF8 +ENDCHAR +STARTCHAR 316D +ENCODING 4378 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 15 9 1 1 +BITMAP +0004 +FDFE +4800 +0820 +F878 +4088 +4084 +4288 +7C78 +ENDCHAR +STARTCHAR 317F +ENCODING 4416 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 10 9 4 1 +BITMAP +0800 +0800 +1400 +1200 +2200 +4100 +4080 +8080 +FFC0 +ENDCHAR +STARTCHAR 3182 +ENCODING 4421 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 13 9 2 1 +BITMAP +30C0 +1060 +7840 +CC40 +84C0 +84A0 +8510 +CE08 +7808 +ENDCHAR +STARTCHAR 3183 +ENCODING 4422 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 13 9 2 1 +BITMAP +1040 +1040 +78A0 +CCA0 +8490 +8510 +8508 +CD08 +7BF8 +ENDCHAR +STARTCHAR 3180 +ENCODING 4423 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 13 8 2 1 +BITMAP +1020 +78F0 +8988 +8508 +8508 +8508 +8D88 +78F0 +ENDCHAR +STARTCHAR 3184 +ENCODING 4439 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 11 13 3 -1 +BITMAP +0040 +7FE0 +0180 +1100 +1100 +0100 +FFE0 +1E00 +3180 +2080 +2080 +3180 +1F00 +ENDCHAR +STARTCHAR 3185 +ENCODING 4440 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 15 10 1 0 +BITMAP +1C38 +0000 +0202 +FEFE +0830 +3448 +4284 +4284 +66CC +3C78 +ENDCHAR +STARTCHAR 3186 +ENCODING 4441 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 11 11 3 0 +BITMAP +0060 +FFE0 +0000 +0000 +0000 +1F00 +3180 +2080 +2080 +3180 +1F00 +ENDCHAR STARTCHAR he ENCODING 4608 SWIDTH 960 0 @@ -36384,704 +38053,590 @@ 7000 3800 0F80 -ENDCHAR -STARTCHAR C065 -ENCODING 7680 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 15 0 -4 -BITMAP -0400 -0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 -0C00 -1200 -1200 -0C00 -ENDCHAR -STARTCHAR C097 -ENCODING 7681 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 11 1 -4 -BITMAP -70 -88 -08 -78 -88 -88 -7C -30 -48 -48 -30 ENDCHAR -STARTCHAR C066 -ENCODING 7682 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 14 0 0 +STARTCHAR C068 +ENCODING 5024 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 11 0 0 BITMAP -0C00 -0C00 -0000 -FF00 +FE00 +2180 2080 2040 2040 -2080 -3F00 -2080 2040 2040 +2040 2080 -FF00 -ENDCHAR -STARTCHAR C098 -ENCODING 7683 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 15 1 0 -BITMAP -30 -30 -00 -C0 -40 -40 -40 -40 -78 -44 -44 -44 -44 -44 -78 +2180 +FE00 ENDCHAR -STARTCHAR C066 -ENCODING 7684 +STARTCHAR C082 +ENCODING 5025 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 14 0 -3 +BBX 11 11 1 0 BITMAP -FF00 -2080 -2040 -2040 -2080 -3F00 +FE00 +2100 2080 -2040 -2040 2080 -FF00 -0000 -0C00 -0C00 +2100 +3E00 +2300 +2100 +2100 +2100 +F8E0 ENDCHAR -STARTCHAR C098 -ENCODING 7685 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 15 1 -3 +STARTCHAR C084 +ENCODING 5026 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -C0 -40 -40 -40 -40 -78 -44 -44 -44 -44 -44 -78 -00 -30 -30 +FF80 +8880 +8880 +8880 +0800 +0800 +0800 +0800 +0800 +0800 +3E00 ENDCHAR -STARTCHAR C066 -ENCODING 7686 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 13 0 -2 +STARTCHAR 0071 +ENCODING 5027 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -FF00 -2080 -2040 -2040 -2080 -3F00 -2080 -2040 -2040 +0E00 +0400 +0E00 +1100 2080 -FF00 -0000 -1F00 +6080 +9080 +9080 +9080 +9300 +4000 ENDCHAR -STARTCHAR C098 -ENCODING 7687 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 14 1 -2 +STARTCHAR C079 +ENCODING 5028 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 +BITMAP +3800 +4460 +8250 +8210 +8230 +83E0 +8200 +8200 +8200 +4400 +3800 +ENDCHAR +STARTCHAR 0x0069 +ENCODING 5029 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 11 1 0 BITMAP C0 +C0 +00 +00 +C0 40 40 40 40 -78 -44 -44 -44 -44 -44 -78 -00 +40 +E0 +ENDCHAR +STARTCHAR C083 +ENCODING 5030 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 11 0 0 +BITMAP +3E +42 +42 +40 +20 +FF +04 +02 +42 +42 7C ENDCHAR -STARTCHAR C067 -ENCODING 7688 +STARTCHAR C079 +ENCODING 5031 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 19 1 -3 +BBX 10 11 1 0 BITMAP -0400 -0C00 -0800 -1000 -0000 -1E80 -2180 -4080 -8080 -8000 -8000 -8000 +3E00 +0100 +6080 +9040 +9040 +9040 +A040 +C040 8080 -4080 -2100 -1E00 -0800 -0400 -1C00 +4100 +3E00 ENDCHAR -STARTCHAR C099 -ENCODING 7689 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 15 1 -3 +STARTCHAR C073 +ENCODING 5032 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -10 -30 +F8 20 -40 -00 -70 -88 -80 -80 -80 -88 -70 20 -10 -70 +29 +29 +3A +24 +20 +20 +20 +F8 ENDCHAR -STARTCHAR C068 -ENCODING 7690 +STARTCHAR C117 +ENCODING 5033 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 14 0 0 +BBX 11 11 0 0 BITMAP -0C00 -0C00 -0000 -FE00 -2180 -2080 -2040 -2040 -2040 -2040 -2040 +F1E0 2080 -2180 -FE00 -ENDCHAR -STARTCHAR C100 -ENCODING 7691 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 15 1 0 -BITMAP -30 -30 -00 -18 -08 -08 -08 -08 -78 -88 -88 -88 -88 -88 -7C +1080 +1100 +0900 +0900 +0A00 +0600 +4400 +4400 +3800 ENDCHAR -STARTCHAR C068 -ENCODING 7692 +STARTCHAR C065 +ENCODING 5034 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 14 0 -3 +BBX 11 11 0 0 BITMAP -FE00 -2180 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 2080 -2040 -2040 -2040 -2040 -2040 2080 -2180 -FE00 -0000 -0C00 -0C00 +F1E0 ENDCHAR -STARTCHAR C100 -ENCODING 7693 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 15 1 -3 +STARTCHAR C074 +ENCODING 5035 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 11 1 0 BITMAP -18 -08 -08 -08 -08 -78 -88 -88 -88 -88 -88 7C -00 -30 -30 +10 +10 +10 +10 +10 +10 +10 +10 +90 +E0 ENDCHAR -STARTCHAR C068 -ENCODING 7694 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 13 0 -2 +STARTCHAR C069 +ENCODING 5036 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 11 1 0 BITMAP -FE00 -2180 +FF80 2080 -2040 -2040 -2040 -2040 -2040 2080 -2180 -FE00 -0000 +2280 +2200 3E00 -ENDCHAR -STARTCHAR C100 -ENCODING 7695 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 14 1 -2 -BITMAP -18 -08 -08 -08 -08 -78 -88 -88 -88 -88 -88 -7C -00 -F8 -ENDCHAR -STARTCHAR C068 -ENCODING 7696 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 14 0 -3 -BITMAP -FE00 -2180 +2240 +2240 2080 -2040 -2040 -2040 -2040 -2040 2080 -2180 -FE00 -0800 +FF80 +ENDCHAR +STARTCHAR C052 +ENCODING 5037 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +1F00 0400 -1C00 +0400 +6400 +9FE0 +9420 +6440 +0480 +0500 +0600 +0400 ENDCHAR -STARTCHAR C100 -ENCODING 7697 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 15 1 -3 +STARTCHAR 0x0069 +ENCODING 5038 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 BITMAP -18 -08 -08 -08 -08 78 -88 -88 -88 -88 -88 -7C +84 +82 +02 +02 +E2 +42 +44 +78 +40 +40 +E0 +ENDCHAR +STARTCHAR C065 +ENCODING 5039 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +0200 +0500 +0880 +0880 +0880 +1080 +1F80 +1080 +2100 +2100 +E700 +ENDCHAR +STARTCHAR C073 +ENCODING 5040 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 +BITMAP +F8 20 -10 -70 +20 +20 +22 +3E +22 +20 +20 +20 +F8 ENDCHAR -STARTCHAR C032 -ENCODING 7698 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 15 0 -4 +STARTCHAR C103 +ENCODING 5041 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 9 11 0 0 BITMAP -FE00 +FF80 2180 2080 -2040 -2040 -2040 -2040 -2040 2080 -2180 -FE00 -0000 -0800 +2000 +2000 +2000 +2000 +2000 +2000 +F800 +ENDCHAR +STARTCHAR C054 +ENCODING 5042 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP 1C00 2200 +2200 +2200 +2200 +2200 +1400 +54E0 +8840 +8C40 +7380 ENDCHAR -STARTCHAR C100 -ENCODING 7699 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 +STARTCHAR C087 +ENCODING 5043 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 16 11 1 0 BITMAP -18 -08 -08 -08 -08 -78 -88 +F1CF +2184 +2184 +2244 +1248 +1248 +1248 +1428 +0C30 +0C30 +0810 +ENDCHAR +STARTCHAR C111 +ENCODING 5044 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 +BITMAP +0C +12 +22 +26 +60 +90 88 88 88 88 -7C -00 -20 70 -88 -ENDCHAR -STARTCHAR C069 -ENCODING 7700 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 18 0 0 -BITMAP -1000 -1800 -0800 -0400 -0000 -3E00 -0000 -FF80 -2080 -2080 -2280 -2200 -3E00 -2240 -2240 -2080 -2080 -FF80 ENDCHAR -STARTCHAR C101 -ENCODING 7701 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 14 1 0 +STARTCHAR C103 +ENCODING 5045 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -40 -60 +1E +21 +21 +21 +25 +26 20 -10 -00 -F8 -00 -70 -88 +20 +20 +20 F8 -80 -80 -88 -70 ENDCHAR -STARTCHAR C069 -ENCODING 7702 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 18 0 0 +STARTCHAR C067 +ENCODING 5046 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -0400 -0C00 -0800 -1000 -0000 -3E00 -0000 -FF80 -2080 -2080 -2280 -2200 -3E00 -2240 -2240 -2080 -2080 -FF80 +1E80 +2180 +4080 +8480 +8400 +8700 +8480 +8480 +4080 +2100 +1E00 ENDCHAR -STARTCHAR C101 -ENCODING 7703 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 14 1 0 +STARTCHAR C077 +ENCODING 5047 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 14 11 1 0 BITMAP -10 -30 -20 -40 -00 -F8 -00 -70 -88 -F8 -80 -80 -88 -70 +F03C +3030 +3030 +2850 +2850 +2890 +2490 +2490 +2310 +2310 +FB7C ENDCHAR -STARTCHAR C069 -ENCODING 7704 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 15 0 -4 +STARTCHAR C103 +ENCODING 5048 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 11 1 0 BITMAP -FF80 -2080 -2080 -2280 +F0 +C8 +84 +04 +04 +84 +E4 +9C +04 +04 +1F +ENDCHAR +STARTCHAR C073 +ENCODING 5049 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 11 1 0 +BITMAP +0F80 +0200 +0200 +0D0C +7912 +94E0 2200 -3E00 -2240 -2240 -2080 -2080 -FF80 -0000 -0800 -1C00 2200 +2200 +2200 +1C00 ENDCHAR -STARTCHAR C101 -ENCODING 7705 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 -4 +STARTCHAR C096 +ENCODING 5050 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -70 -88 -F8 -80 -80 -88 -70 -00 -20 -70 -88 +1C20 +2220 +4120 +80A0 +80A0 +80E0 +80A0 +80A0 +4120 +2220 +1C20 ENDCHAR -STARTCHAR C069 -ENCODING 7706 +STARTCHAR C072 +ENCODING 5051 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 15 0 -4 +BBX 11 11 1 0 BITMAP -FF80 +FBE0 2080 2080 -2280 -2200 -3E00 -2240 -2240 2080 2080 -FF80 -0000 -1200 -2A00 -2400 +3F80 +2080 +2080 +2080 +2080 +FBE0 ENDCHAR -STARTCHAR C101 -ENCODING 7707 +STARTCHAR C099 +ENCODING 5052 SWIDTH 360 0 DWIDTH 6 0 -BBX 5 11 1 -4 +BBX 5 11 1 0 BITMAP +F8 +20 +20 70 88 -F8 -80 -80 +08 +08 +08 +08 88 70 -00 -48 -A8 -90 ENDCHAR -STARTCHAR C069 -ENCODING 7708 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 17 0 -3 +STARTCHAR C117 +ENCODING 5053 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -2100 -1E00 -0000 -FF80 -2080 -2080 -2280 -2200 -3E00 -2240 -2240 -2080 +21E0 2080 -FF80 -0800 -0400 -1C00 +1080 +1100 +0900 +0900 +0A00 +0600 +F400 +4400 +3800 ENDCHAR -STARTCHAR C101 -ENCODING 7709 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 6 13 0 -3 +STARTCHAR C079 +ENCODING 5054 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 11 1 0 BITMAP -84 -78 -00 -38 -44 -7C -40 -40 -44 -38 -10 -08 -38 +1E00 +2100 +4080 +8040 +8040 +FFC0 +8040 +8040 +4080 +2100 +1E00 ENDCHAR -STARTCHAR C070 -ENCODING 7710 +STARTCHAR C116 +ENCODING 5055 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 14 0 0 +BBX 9 11 1 0 BITMAP -1800 -1800 -0000 -FF80 -2080 -2080 -2280 -2200 -3E00 -2200 -2200 +2000 2000 2000 F800 -ENDCHAR -STARTCHAR C102 -ENCODING 7711 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 15 1 0 -BITMAP -60 -60 -00 -38 -48 -40 -40 -40 -F0 -40 -40 -40 -40 -40 -E0 +2000 +2000 +2000 +2380 +2100 +2100 +1F00 ENDCHAR STARTCHAR C071 -ENCODING 7712 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 13 1 0 +ENCODING 5056 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 11 1 0 BITMAP -3E00 -0000 1E80 2180 4080 @@ -37091,124 +38646,213 @@ 83C0 8080 4080 -2080 -1F80 -ENDCHAR -STARTCHAR C103 -ENCODING 7713 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 13 1 -4 -BITMAP -7C -00 -3E -44 -44 -44 -78 -40 -7C -82 -82 -82 -7C +2180 +1E80 ENDCHAR -STARTCHAR C072 -ENCODING 7714 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 14 0 0 +STARTCHAR C065 +ENCODING 5057 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 11 1 0 BITMAP -0C00 -0C00 -0000 -FBE0 -2080 -2080 -2080 -2080 -3F80 -2080 -2080 -2080 -2080 -FBE0 +0E00 +1100 +1080 +1080 +1080 +1040 +1040 +1040 +D020 +9020 +6078 ENDCHAR -STARTCHAR C104 -ENCODING 7715 +STARTCHAR C126 +ENCODING 5058 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 15 1 0 +BBX 8 11 1 0 BITMAP -30 -30 -00 -C0 +E0 40 40 40 40 -78 -44 -44 -44 -44 -44 -EE +7C +42 +42 +42 +42 +E7 ENDCHAR -STARTCHAR C072 -ENCODING 7716 +STARTCHAR C090 +ENCODING 5059 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 +BITMAP +FE +C4 +84 +88 +08 +10 +22 +22 +42 +46 +FE +ENDCHAR +STARTCHAR C103 +ENCODING 5060 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +3C00 +4200 +E200 +0200 +0200 +E200 +4200 +3E00 +0200 +0200 +0F80 +ENDCHAR +STARTCHAR C096 +ENCODING 5061 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 11 1 0 +BITMAP +1C00 +2200 +4100 +80A4 +80A4 +80E8 +8090 +8080 +4100 +2200 +1C00 +ENDCHAR +STARTCHAR C084 +ENCODING 5062 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 9 11 1 0 +BITMAP +FF80 +8880 +8880 +8880 +0800 +0800 +0800 +0800 +8880 +8880 +FF80 +ENDCHAR +STARTCHAR char5063 +ENCODING 5063 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 14 0 -3 +BBX 12 11 1 0 BITMAP -FBE0 -2080 -2080 -2080 -2080 -3F80 -2080 -2080 -2080 -2080 -FBE0 -0000 -0C00 -0C00 +0780 +0840 +0820 +0010 +0010 +4210 +8410 +8410 +8410 +8C20 +73C0 ENDCHAR -STARTCHAR C104 -ENCODING 7717 +STARTCHAR C054 +ENCODING 5064 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 +BITMAP +6300 +9480 +9840 +9A40 +1980 +2400 +2400 +2400 +2400 +2400 +1800 +ENDCHAR +STARTCHAR C086 +ENCODING 5065 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 11 1 0 +BITMAP +00C6 +08A9 +1871 +9442 +6440 +0440 +0280 +0280 +0280 +0100 +0100 +ENDCHAR +STARTCHAR char5063 +ENCODING 5066 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 +BITMAP +0780 +0840 +0820 +0010 +4010 +8310 +8510 +8410 +8410 +8C20 +73C0 +ENDCHAR +STARTCHAR 0x0498 +ENCODING 5067 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 15 1 -3 +BBX 7 11 1 0 BITMAP -C0 -40 -40 -40 -40 +7A +86 +82 +80 78 -44 -44 -44 -44 -44 -EE -00 -18 -18 +40 +8C +92 +82 +82 +7C ENDCHAR STARTCHAR C072 -ENCODING 7718 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 14 0 0 +ENCODING 5068 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 11 1 0 BITMAP -1B00 -1B00 -0000 FBE0 2080 2080 @@ -37219,121 +38863,121 @@ 2080 2080 2080 -FBE0 +1F00 ENDCHAR -STARTCHAR C104 -ENCODING 7719 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 15 1 0 +STARTCHAR C064 +ENCODING 5069 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 11 1 0 BITMAP -D8 -D8 -00 -C0 -40 -40 -40 -40 -78 -44 -44 -44 -44 -44 -EE +00F8 +0104 +0102 +0002 +3382 +4902 +8502 +8702 +8502 +4884 +3078 ENDCHAR -STARTCHAR C072 -ENCODING 7720 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 14 0 -3 +STARTCHAR C052 +ENCODING 5070 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -FBE0 -2080 -2080 -2080 -2080 +0400 +0C00 +1400 +2400 +4480 +8480 +FF80 +0480 +0480 +0400 +1F00 +ENDCHAR +STARTCHAR C120 +ENCODING 5071 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 0 0 +BITMAP +F800 +2000 +2000 +2000 +2000 3F80 -2080 -2080 -2080 +20C0 +2040 +2040 2080 -FBE0 -1000 +FF00 +ENDCHAR +STARTCHAR C073 +ENCODING 5072 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +3E00 0800 -3800 +0800 +0800 +CF80 +F980 +0800 +0800 +0800 +0800 +3E00 ENDCHAR -STARTCHAR C104 -ENCODING 7721 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 15 1 -3 +STARTCHAR C111 +ENCODING 5073 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -C0 -40 -40 -40 -40 -78 -44 -44 -44 -44 -44 -EE -40 -20 -E0 +3180 +4A40 +3C40 +4040 +7180 +8800 +8800 +8800 +8800 +8800 +7000 ENDCHAR -STARTCHAR C072 -ENCODING 7722 +STARTCHAR C082 +ENCODING 5074 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 14 0 -3 +BBX 11 11 1 0 BITMAP -FBE0 -2080 -2080 -2080 +FE00 +2100 2080 -3F80 2080 +3900 +2600 +2100 2080 2080 2080 FBE0 -0000 -1080 -0F00 -ENDCHAR -STARTCHAR C104 -ENCODING 7723 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 15 1 -3 -BITMAP -C0 -40 -40 -40 -40 -78 -44 -44 -44 -44 -44 -EE -00 -42 -3C ENDCHAR -STARTCHAR C073 -ENCODING 7724 +STARTCHAR C074 +ENCODING 5075 SWIDTH 360 0 DWIDTH 6 0 -BBX 5 15 1 -4 +BBX 6 11 1 0 BITMAP F8 20 @@ -37343,311 +38987,182 @@ 20 20 20 -20 20 -F8 -00 -48 -A8 -90 +24 +1C ENDCHAR -STARTCHAR C105 -ENCODING 7725 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 5 11 0 -4 +STARTCHAR C086 +ENCODING 5076 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -60 -20 -20 -20 -20 -20 -70 -00 -48 -A8 -90 +8A20 +8A20 +8A20 +4440 +4440 +4440 +2A80 +2A80 +2A80 +1100 +1100 ENDCHAR -STARTCHAR C073 -ENCODING 7726 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 19 1 0 +STARTCHAR C083 +ENCODING 5077 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -10 -30 -20 +78 +84 +9E +80 40 -00 -D8 -D8 -00 -F8 -20 -20 -20 -20 -20 -20 -20 -20 -20 +36 +78 +04 +84 +84 F8 ENDCHAR -STARTCHAR C105 -ENCODING 7727 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 5 15 0 0 +STARTCHAR C084 +ENCODING 5078 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -10 -30 -20 -40 -00 -D8 -D8 -00 -60 -20 -20 -20 -20 -20 -70 +FF00 +8800 +8800 +8800 +0800 +0800 +0880 +0840 +0840 +0840 +0780 ENDCHAR -STARTCHAR C075 -ENCODING 7728 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 16 1 0 +STARTCHAR C073 +ENCODING 5079 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -0200 -0600 -0400 -0800 -0000 -F9E0 -2080 -2100 -2200 -2400 -2E00 -3200 -2100 -2100 -2080 -F9E0 +07C0 +0100 +0100 +0100 +0300 +0500 +0900 +1100 +A100 +C100 +87C0 ENDCHAR -STARTCHAR C107 -ENCODING 7729 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 17 1 0 +STARTCHAR C103 +ENCODING 5080 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -08 -18 -10 -20 -00 -C0 -40 -40 -40 -40 -5E -48 -50 -70 -58 -48 -EE +7FC0 +6100 +4100 +4100 +0300 +0500 +0900 +1100 +A100 +C100 +87C0 ENDCHAR -STARTCHAR C075 -ENCODING 7730 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 14 1 -3 +STARTCHAR C086 +ENCODING 5081 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 11 1 0 BITMAP -F9E0 +F1E0 2080 -2100 -2200 -2400 -2E00 -3200 -2100 -2100 2080 -F9E0 -0000 -0600 -0600 +1100 +1100 +1100 +0A00 +0A00 +0A00 +0400 +0400 ENDCHAR -STARTCHAR C107 -ENCODING 7731 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 15 1 -3 +STARTCHAR C083 +ENCODING 5082 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP -C0 -40 -40 -40 +7C +84 +84 +80 40 -5E -48 -50 -70 -58 -48 -EE -00 30 -30 +08 +04 +84 +84 +F8 ENDCHAR -STARTCHAR C075 -ENCODING 7732 +STARTCHAR char5083 +ENCODING 5083 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 13 1 -2 -BITMAP -F9E0 -2080 -2100 -2200 -2400 -2E00 -3200 -2100 -2100 -2080 -F9E0 -0000 -1F00 -ENDCHAR -STARTCHAR C107 -ENCODING 7733 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 14 1 -2 -BITMAP -C0 -40 -40 -40 -40 -5E -48 -50 -70 -58 -48 -EE -00 -7C -ENDCHAR -STARTCHAR C076 -ENCODING 7734 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 14 0 -3 -BITMAP -F8 -20 -20 -20 -20 -20 -21 -21 -21 -23 -FF -00 -18 -18 -ENDCHAR -STARTCHAR C108 -ENCODING 7735 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 15 1 -3 -BITMAP -C0 -40 -40 -40 -40 -40 -40 -40 -40 -40 -40 -E0 -00 -60 -60 -ENDCHAR -STARTCHAR C076 -ENCODING 7736 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 16 0 -3 +BBX 11 11 1 0 BITMAP -F8 -00 -F8 -20 -20 -20 -20 -20 -21 -21 -21 -23 -FF -00 -18 -18 +39C0 +4620 +4420 +B020 +8840 +8400 +8400 +8400 +8400 +4800 +3000 ENDCHAR -STARTCHAR C108 -ENCODING 7737 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 5 17 0 -3 +STARTCHAR C111 +ENCODING 5084 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -F8 -00 -60 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -70 -00 -30 -30 +0C00 +1200 +1200 +0C00 +3300 +6180 +9240 +9240 +9240 +9240 +6180 ENDCHAR STARTCHAR C076 -ENCODING 7738 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 13 0 -2 +ENCODING 5085 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 11 0 0 BITMAP -F8 -20 -20 -20 +1C +22 +22 +26 20 20 21 @@ -37655,35 +39170,12 @@ 21 23 FF -00 -3E -ENDCHAR -STARTCHAR C108 -ENCODING 7739 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 5 14 0 -2 -BITMAP -60 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -70 -00 -F8 ENDCHAR STARTCHAR C076 -ENCODING 7740 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 15 0 -4 +ENCODING 5086 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 11 0 0 BITMAP F8 20 @@ -37696,10141 +39188,9686 @@ 21 23 FF -00 -10 -38 -44 ENDCHAR -STARTCHAR C108 -ENCODING 7741 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 5 16 0 -4 +STARTCHAR C067 +ENCODING 5087 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -60 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -70 -00 -20 -70 -88 +1E80 +2180 +4080 +8080 +8000 +8000 +8000 +8080 +4080 +2100 +1E00 ENDCHAR -STARTCHAR C077 -ENCODING 7742 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 16 1 0 +STARTCHAR C074 +ENCODING 5088 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP +07C0 0100 -0300 -0200 -0400 -0000 -F03C -3030 -3030 -2850 -2850 -2890 -2490 -2490 -2310 -2310 -FB7C -ENDCHAR -STARTCHAR C109 -ENCODING 7743 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 12 1 0 -BITMAP -0200 -0600 -0400 -0800 -0000 -FB80 -4440 -4440 -4440 -4440 -4440 -E660 -ENDCHAR -STARTCHAR C077 -ENCODING 7744 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 14 1 0 -BITMAP -0300 -0300 -0000 -F03C -3030 -3030 -2850 -2850 -2890 -2490 -2490 -2310 -2310 -FB7C -ENDCHAR -STARTCHAR C109 -ENCODING 7745 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 10 1 0 -BITMAP -0C00 -0C00 -0000 -FB80 -4440 -4440 -4440 -4440 -4440 -E660 -ENDCHAR -STARTCHAR C077 -ENCODING 7746 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 14 1 -3 -BITMAP -F03C -3030 -3030 -2850 -2850 -2890 -2490 -2490 -2310 -2310 -FB7C -0000 -0300 -0300 +6100 +9100 +7FC0 +1100 +1100 +1100 +1100 +1100 +0E00 ENDCHAR -STARTCHAR C109 -ENCODING 7747 +STARTCHAR C054 +ENCODING 5089 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 10 1 -3 +BBX 11 11 1 0 BITMAP -FB80 -4440 -4440 -4440 -4440 -4440 -E660 -0000 -0C00 -0C00 +39C0 +4620 +4220 +E540 +0500 +0880 +0880 +0880 +0880 +0880 +0700 ENDCHAR -STARTCHAR C078 -ENCODING 7748 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 14 1 0 +STARTCHAR C080 +ENCODING 5090 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 9 11 1 0 BITMAP -0C00 -0C00 -0000 -E3E0 -3080 -3080 -2880 -2880 -2480 -2280 -2280 +FF00 2180 +2080 +2080 2180 -F880 -ENDCHAR -STARTCHAR C110 -ENCODING 7749 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 10 1 0 -BITMAP -30 -30 -00 -F8 -44 -44 -44 -44 -44 -EE +3F00 +2000 +2000 +2000 +2000 +F800 ENDCHAR -STARTCHAR C078 -ENCODING 7750 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 14 1 -3 +STARTCHAR C067 +ENCODING 5091 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -E3E0 -3080 -3080 -2880 -2880 -2480 -2280 -2280 -2180 -2180 -F880 -0000 -0C00 -0C00 +1E00 +2100 +4100 +8380 +8000 +8000 +8300 +8100 +4100 +2200 +1C00 ENDCHAR -STARTCHAR C110 -ENCODING 7751 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 10 1 -3 +STARTCHAR C073 +ENCODING 5092 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 BITMAP -F8 -44 -44 -44 -44 -44 -EE -00 -18 -18 +FCF0 +9040 +1040 +1080 +1080 +1100 +1200 +1200 +1400 +1400 +1800 ENDCHAR -STARTCHAR C078 -ENCODING 7752 +STARTCHAR C072 +ENCODING 5093 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 13 1 -2 -BITMAP -E3E0 -3080 -3080 -2880 -2880 -2480 -2280 -2280 -2180 -2180 -F880 -0000 -1F00 -ENDCHAR -STARTCHAR C110 -ENCODING 7753 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 9 1 -2 +BBX 11 11 1 0 BITMAP -F8 -44 -44 -44 -44 -44 -EE -00 -7C +F800 +2000 +20C0 +2320 +2D40 +3100 +2100 +2100 +2100 +2100 +F3C0 ENDCHAR -STARTCHAR C078 -ENCODING 7754 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 15 1 -4 +STARTCHAR C075 +ENCODING 5094 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 11 1 0 BITMAP -E3E0 -3080 -3080 -2880 -2880 -2480 -2280 -2280 -2180 -2180 -F880 -0000 -0400 -0E00 -1100 +F9E0 +2080 +2100 +2200 +2400 +2E00 +3200 +2100 +2100 +2080 +F9E0 ENDCHAR -STARTCHAR C110 -ENCODING 7755 +STARTCHAR C074 +ENCODING 5095 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 11 1 -4 +BBX 7 11 1 0 BITMAP -F8 +0E +04 +04 +04 +34 4C +84 +84 +84 44 -44 -44 -44 -EE -00 -10 38 -44 ENDCHAR -STARTCHAR C079 -ENCODING 7756 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 20 1 0 +STARTCHAR C067 +ENCODING 5096 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 11 1 0 BITMAP -0400 -0C00 -0800 -1000 -0000 -1200 -2A00 -2400 -0000 1E00 2100 -4080 -8040 -8040 -8040 -8040 -8040 -4080 +4148 +81B0 +8120 +8000 +8120 +81B0 +4148 2100 1E00 -ENDCHAR -STARTCHAR C111 -ENCODING 7757 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 16 1 0 -BITMAP -10 -30 -20 -40 -00 -48 -A8 -90 -00 -70 -88 -88 -88 -88 -88 -70 ENDCHAR -STARTCHAR C079 -ENCODING 7758 +STARTCHAR C071 +ENCODING 5097 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 18 1 0 +BBX 11 13 1 -2 BITMAP -3600 -3600 -0000 -1200 -2A00 -2400 -0000 -1E00 -2100 +1E80 +2180 4080 -8040 -8040 -8040 -8040 -8040 +8080 +8000 +8000 +83C0 +8080 4080 -2100 -1E00 +2180 +1E80 +0080 +0060 ENDCHAR -STARTCHAR C111 -ENCODING 7759 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 14 1 0 +STARTCHAR C054 +ENCODING 5098 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 11 1 0 BITMAP -D8 -D8 -00 -48 -A8 -90 -00 -70 -88 -88 -88 -88 -88 -70 +0630 +0948 +1148 +1148 +1228 +1218 +1408 +9410 +8810 +9820 +67C0 ENDCHAR STARTCHAR C079 -ENCODING 7760 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 18 1 0 +ENCODING 5099 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 11 1 0 BITMAP -1000 -1800 -0800 -0400 -0000 -3E00 -0000 1E00 2100 4080 -8040 -8040 -8040 -8040 -8040 +F040 +8840 +8440 +8440 +83C0 4080 2100 1E00 ENDCHAR -STARTCHAR C111 -ENCODING 7761 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 14 1 0 -BITMAP -40 -60 -20 -10 -00 -F8 -00 -70 -88 -88 -88 -88 -88 -70 -ENDCHAR STARTCHAR C079 -ENCODING 7762 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 18 1 0 -BITMAP -0400 -0C00 -0800 -1000 -0000 -3E00 -0000 -1E00 -2100 -4080 -8040 -8040 -8040 -8040 -8040 -4080 -2100 -1E00 -ENDCHAR -STARTCHAR C111 -ENCODING 7763 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 14 1 0 -BITMAP -10 -30 -20 -40 -00 -F8 -00 -70 -88 -88 -88 -88 -88 -70 -ENDCHAR -STARTCHAR C080 -ENCODING 7764 +ENCODING 5100 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 16 0 0 +BBX 10 10 1 0 BITMAP -0400 -0C00 -0800 -1000 -0000 -FF00 -2180 -2080 -2080 -2180 -3F00 -2000 -2000 -2000 -2000 -F800 +0300 +6280 +9240 +9040 +9040 +A040 +C040 +8080 +4100 +3E00 ENDCHAR -STARTCHAR C112 -ENCODING 7765 +STARTCHAR C079 +ENCODING 5101 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 15 1 -3 +BBX 6 11 1 0 BITMAP -10 -30 -20 -40 -00 -F8 -44 -44 -44 +18 +24 +24 +24 +14 +0C +04 +08 +88 +B0 +C0 +ENDCHAR +STARTCHAR C054 +ENCODING 5102 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 +BITMAP +3C 44 44 +80 +80 +B8 +C4 +84 +84 +84 78 -40 -40 -E0 ENDCHAR -STARTCHAR C080 -ENCODING 7766 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 14 0 0 +STARTCHAR char5063 +ENCODING 5103 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 11 1 0 BITMAP -1800 -1800 -0000 -FF00 +0780 +0840 +0820 +0010 +1110 +5BD0 +8410 +8410 +8410 +8C20 +73C0 +ENDCHAR +STARTCHAR C025 +ENCODING 5104 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 12 1 0 +BITMAP +0E +11 +21 +21 +21 +2E +21 +21 +A1 +61 +72 +CC +ENDCHAR +STARTCHAR 0071 +ENCODING 5105 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 11 1 0 +BITMAP +0700 +0200 +0700 +0880 +0840 +1040 +1040 +2240 +A440 +C480 +4300 +ENDCHAR +STARTCHAR C126 +ENCODING 5106 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 +BITMAP +3C +42 +46 +40 +40 +7C +42 +42 +42 +42 +E7 +ENDCHAR +STARTCHAR C071 +ENCODING 5107 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 11 1 0 +BITMAP +1EA8 +21F8 +4150 +8000 +8000 +8000 +83C0 +8080 +4080 2180 +1E80 +ENDCHAR +STARTCHAR C066 +ENCODING 5108 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 11 0 0 +BITMAP +FF00 2080 +2040 +2040 2080 -2180 3F00 -2000 -2000 -2000 -2000 -F800 +2080 +2040 +2040 +2080 +FF00 ENDCHAR -STARTCHAR C112 -ENCODING 7767 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 13 1 -3 +STARTCHAR C065 +ENCODING 5121 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -30 -30 -00 -F8 -44 -44 -44 -44 -44 -78 -40 -40 -E0 +FF80 +8080 +4100 +4100 +2200 +2200 +2200 +1400 +1400 +0800 +0800 ENDCHAR -STARTCHAR C082 -ENCODING 7768 +STARTCHAR C065 +ENCODING 5122 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 14 1 0 +BBX 9 15 1 0 BITMAP -1800 -1800 +0800 +1400 +0800 0000 -FE00 -2100 -2080 -2080 -2100 -3E00 -2300 -2100 -2100 -2100 -F8E0 +0800 +0800 +1400 +1400 +2200 +2200 +2200 +4100 +4100 +8080 +FF80 ENDCHAR -STARTCHAR C114 -ENCODING 7769 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 10 1 0 +STARTCHAR C065 +ENCODING 5123 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -60 -60 -00 -D0 -68 -40 -40 -40 -40 -F0 +0800 +0800 +1400 +1400 +2200 +2200 +2200 +4100 +4100 +8080 +FF80 ENDCHAR -STARTCHAR C082 -ENCODING 7770 +STARTCHAR C065 +ENCODING 5124 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 14 1 -3 +BBX 9 15 1 0 BITMAP -FE00 -2100 -2080 -2080 -2100 -3E00 -2300 -2100 -2100 -2100 -F8E0 +0800 +1C00 +0800 0000 -0C00 -0C00 +0800 +0800 +1400 +1400 +2200 +2200 +2200 +4100 +4100 +8080 +FF80 ENDCHAR -STARTCHAR C114 -ENCODING 7771 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 10 1 -3 +STARTCHAR C065 +ENCODING 5125 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -D0 -68 -40 -40 -40 -40 -F0 -00 -60 -60 +C000 +B000 +8C00 +8300 +8080 +8040 +8080 +8300 +8C00 +B000 +C000 ENDCHAR -STARTCHAR C082 -ENCODING 7772 +STARTCHAR C065 +ENCODING 5126 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 16 1 -3 +BBX 10 15 1 0 BITMAP -3E00 +0400 +0E00 +0400 0000 -FE00 -2100 -2080 -2080 -2100 -3E00 -2300 -2100 -2100 -2100 -F8E0 +C000 +B000 +8C00 +8300 +8080 +8040 +8080 +8300 +8C00 +B000 +C000 +ENDCHAR +STARTCHAR C065 +ENCODING 5127 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 +BITMAP +2200 +7700 +2200 +0000 +C000 +B000 +8C00 +8300 +8080 +8040 +8080 +8300 +8C00 +B000 +C000 +ENDCHAR +STARTCHAR C065 +ENCODING 5128 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 +BITMAP +C000 +B000 +8C00 +A300 +A080 +A040 +A080 +A300 +8C00 +B000 +C000 +ENDCHAR +STARTCHAR C065 +ENCODING 5129 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 +BITMAP +C000 +B000 +8C00 +8300 +9080 +B840 +9080 +8300 +8C00 +B000 +C000 +ENDCHAR +STARTCHAR C065 +ENCODING 5130 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 +BITMAP +00C0 +0340 +0C40 +3040 +4040 +8040 +4040 +3040 +0C40 +0340 +00C0 +ENDCHAR +STARTCHAR C065 +ENCODING 5131 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 +BITMAP +0800 +1C00 +0800 +0000 +00C0 +0340 +0C40 +3040 +4040 +8040 +4040 +3040 +0C40 +0340 +00C0 +ENDCHAR +STARTCHAR C065 +ENCODING 5132 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +3FE0 +2020 +1040 +1040 +4880 +E880 +4880 +0500 +0500 +0200 +0200 +ENDCHAR +STARTCHAR C065 +ENCODING 5133 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +FF80 +8080 +4100 +4100 +2240 +22E0 +2240 +1400 +1400 +0800 +0800 +ENDCHAR +STARTCHAR C065 +ENCODING 5134 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +0200 +0200 +0500 +0500 +4880 +E880 +4880 +1040 +1040 +2020 +3FE0 +ENDCHAR +STARTCHAR C065 +ENCODING 5135 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +0800 +0800 +1400 +1400 +2240 +22E0 +2240 +4100 +4100 +8080 +FF80 +ENDCHAR +STARTCHAR C065 +ENCODING 5136 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 +BITMAP +0200 +0700 +0200 +0000 +0200 +0200 +0500 +4500 +E880 +4880 +0880 +1040 +1040 +2020 +3FE0 +ENDCHAR +STARTCHAR C065 +ENCODING 5137 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 +BITMAP +0800 +1C00 +0800 0000 +0800 +0800 +1400 +1440 +22E0 +2240 +2200 +4100 +4100 +8080 +FF80 +ENDCHAR +STARTCHAR C065 +ENCODING 5138 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 11 1 0 +BITMAP 0C00 +0B00 +08C0 +0830 +4808 +E804 +4808 +0830 +08C0 +0B00 0C00 ENDCHAR -STARTCHAR C114 -ENCODING 7773 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 -3 +STARTCHAR C065 +ENCODING 5139 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 11 1 0 BITMAP -F8 -00 -D0 -68 -40 -40 -40 -40 -F0 -00 -60 -60 +C000 +B000 +8C00 +8300 +8088 +805C +8088 +8300 +8C00 +B000 +C000 ENDCHAR -STARTCHAR C082 -ENCODING 7774 +STARTCHAR C065 +ENCODING 5140 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 15 1 0 +BITMAP +0400 +0E00 +0400 +0000 +0C00 +0B00 +08C0 +0830 +4808 +E804 +4808 +0830 +08C0 +0B00 +0C00 +ENDCHAR +STARTCHAR C065 +ENCODING 5141 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 15 1 0 +BITMAP +4000 +E000 +4000 +0000 +C000 +B000 +8C00 +8300 +8088 +805C +8088 +8300 +8C00 +B000 +C000 +ENDCHAR +STARTCHAR C065 +ENCODING 5142 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 13 1 -2 +BBX 10 15 1 0 BITMAP -FE00 -2100 -2080 -2080 -2100 -3E00 -2300 -2100 -2100 -2100 -F8E0 +2000 +7000 +2000 +0080 +C1C0 +B080 +8C00 +8300 +8080 +8040 +8080 +8300 +8C00 +B000 +C000 +ENDCHAR +STARTCHAR C065 +ENCODING 5143 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 11 1 0 +BITMAP +000C +0034 +00C4 +0304 +4404 +E804 +4404 +0304 +00C4 +0034 +000C +ENDCHAR +STARTCHAR C065 +ENCODING 5144 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 11 1 0 +BITMAP +00C0 +0340 +0C40 +3040 +4048 +805C +4048 +3040 +0C40 +0340 +00C0 +ENDCHAR +STARTCHAR C065 +ENCODING 5145 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 15 1 0 +BITMAP +0008 +001C +0008 0000 -1F00 +000C +0034 +00C4 +0304 +4404 +E804 +4404 +0304 +00C4 +0034 +000C ENDCHAR -STARTCHAR C114 -ENCODING 7775 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 9 1 -2 +STARTCHAR C065 +ENCODING 5146 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 15 1 0 BITMAP -D0 -68 -40 -40 -40 -40 -F0 -00 -F8 +0080 +01C0 +0080 +0000 +00C0 +0340 +0C40 +3040 +4048 +805C +4048 +3040 +0C40 +0340 +00C0 ENDCHAR -STARTCHAR C083 -ENCODING 7776 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 14 1 0 +STARTCHAR C065 +ENCODING 5147 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -30 -30 -00 -7C -84 -84 -80 -40 -30 -08 -04 -84 -84 -F8 +0100 +0380 +0100 +4000 +E0C0 +4340 +0C40 +3040 +4040 +8040 +4040 +3040 +0C40 +0340 +00C0 ENDCHAR -STARTCHAR C115 -ENCODING 7777 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 10 1 0 +STARTCHAR char5141 +ENCODING 5148 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 6 1 5 BITMAP -60 -60 -00 -78 -88 -80 -70 -08 -88 -F0 +92 +92 +92 +92 +92 +6C ENDCHAR -STARTCHAR C083 -ENCODING 7778 +STARTCHAR char5149 +ENCODING 5149 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 14 1 -3 +BBX 6 6 1 5 BITMAP -7C -84 -84 -80 -40 -30 08 -04 -84 -84 -F8 -00 -30 -30 -ENDCHAR -STARTCHAR C115 -ENCODING 7779 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 10 1 -3 -BITMAP -78 -88 -80 -70 +14 08 -88 -F0 -00 -60 -60 +40 +E0 +40 ENDCHAR -STARTCHAR C083 -ENCODING 7780 +STARTCHAR char5150 +ENCODING 5150 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 19 1 0 +BBX 5 6 1 5 BITMAP -30 -30 -00 -08 -18 -10 20 -00 -7C -84 -84 -80 -40 -30 -08 -04 -84 -84 +20 +50 +50 +88 F8 ENDCHAR -STARTCHAR C115 -ENCODING 7781 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 15 1 0 +STARTCHAR char5151 +ENCODING 5151 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 4 1 7 BITMAP -60 -60 -00 10 -30 20 40 -00 -78 -88 80 -70 -08 -88 -F0 ENDCHAR -STARTCHAR C083 -ENCODING 7782 +STARTCHAR char5151 +ENCODING 5152 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 4 1 7 +BITMAP +80 +40 +20 +10 +ENDCHAR +STARTCHAR char5153 +ENCODING 5153 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 18 1 0 +BBX 6 4 1 7 BITMAP -30 -30 -00 -44 -38 -10 -00 -7C 84 84 -80 -40 -30 -08 -04 -84 84 -F8 -ENDCHAR -STARTCHAR C115 -ENCODING 7783 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 14 1 0 -BITMAP -60 -60 -00 -88 -70 -20 -00 78 -88 -80 -70 -08 -88 -F0 ENDCHAR -STARTCHAR C083 -ENCODING 7784 +STARTCHAR char5153 +ENCODING 5154 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 17 1 -3 +BBX 6 4 1 7 BITMAP -30 -30 -00 -7C -84 +78 84 -80 -40 -30 -08 -04 84 84 -F8 -00 -30 -30 ENDCHAR -STARTCHAR C115 -ENCODING 7785 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 13 1 -3 +STARTCHAR char5153 +ENCODING 5155 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 6 1 5 BITMAP -60 -60 -00 -78 -88 -80 -70 -08 -88 -F0 -00 +E0 +10 +10 +10 +10 +E0 +ENDCHAR +STARTCHAR char5156 +ENCODING 5156 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 4 1 4 +BITMAP 60 +90 +90 60 ENDCHAR -STARTCHAR C084 -ENCODING 7786 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 14 1 0 +STARTCHAR char5151 +ENCODING 5157 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 4 1 7 BITMAP -1800 -1800 -0000 -FF80 -8880 -8880 -8880 -0800 -0800 -0800 -0800 -0800 -0800 -3E00 +12 +24 +48 +90 ENDCHAR -STARTCHAR C116 -ENCODING 7787 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 13 1 0 +STARTCHAR char5158 +ENCODING 5158 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 5 1 6 BITMAP -30 -30 -00 -20 -20 -20 -F8 -20 -20 -20 -24 -24 -18 +90 +90 +90 +90 +90 ENDCHAR -STARTCHAR C084 -ENCODING 7788 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 14 1 -3 +STARTCHAR char5156 +ENCODING 5159 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 3 1 5 BITMAP -FF80 -8880 -8880 -8880 -0800 -0800 -0800 -0800 -0800 -0800 -3E00 -0000 -1800 -1800 +40 +E0 +40 ENDCHAR -STARTCHAR C116 -ENCODING 7789 +STARTCHAR char5160 +ENCODING 5160 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 1 1 10 +BITMAP +FE +ENDCHAR +STARTCHAR char5161 +ENCODING 5161 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 13 1 -3 +BBX 5 5 1 6 BITMAP 20 20 -20 F8 20 20 -20 -24 -24 -18 -00 -30 -30 -ENDCHAR -STARTCHAR C084 -ENCODING 7790 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 13 1 -2 -BITMAP -FF80 -8880 -8880 -8880 -0800 -0800 -0800 -0800 -0800 -0800 -3E00 -0000 -3E00 ENDCHAR -STARTCHAR C116 -ENCODING 7791 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 -2 +STARTCHAR char5161 +ENCODING 5162 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 1 6 BITMAP +F8 20 20 20 -F8 20 -20 -20 -24 -24 -18 -00 -7C ENDCHAR -STARTCHAR C084 -ENCODING 7792 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 15 1 -4 +STARTCHAR C065 +ENCODING 5163 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 14 12 1 0 BITMAP -FF80 -8880 -8880 -8880 +0020 +FF90 +8088 +4104 +4100 +2200 +2200 +2200 +1400 +1400 0800 0800 +ENDCHAR +STARTCHAR C065 +ENCODING 5164 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 12 1 0 +BITMAP +0200 +0900 +0880 +1440 +1400 +2200 +2200 +2200 +4100 +4100 +8080 +FF80 +ENDCHAR +STARTCHAR C065 +ENCODING 5165 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 1 +BITMAP +0200 +C100 +B080 +8C40 +8300 +8080 +8080 +8300 +8C00 +B000 +C000 +ENDCHAR +STARTCHAR C065 +ENCODING 5166 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 14 11 1 1 +BITMAP +0020 +0190 +0688 +1884 +6080 +8080 +8080 +6080 +1880 +0680 +0180 +ENDCHAR +STARTCHAR C065 +ENCODING 5167 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +8080 +8080 +4100 +4100 +2200 +2200 +2200 +1400 +1400 0800 0800 +ENDCHAR +STARTCHAR C065 +ENCODING 5168 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 15 1 0 +BITMAP 0800 +1400 0800 -3E00 0000 0800 -1C00 +0800 +1400 +1400 +2200 2200 +2200 +4100 +4100 +8080 +8080 ENDCHAR -STARTCHAR C116 -ENCODING 7793 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 14 1 -4 +STARTCHAR C065 +ENCODING 5169 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -20 -20 -20 -F8 -20 -20 -20 -24 -24 -18 -00 -10 -38 -44 +0800 +0800 +1400 +1400 +2200 +2200 +2200 +4100 +4100 +8080 +8080 ENDCHAR -STARTCHAR C085 -ENCODING 7794 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 14 1 -3 +STARTCHAR C065 +ENCODING 5170 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 15 1 0 BITMAP -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -1100 -0E00 +0800 +1C00 +0800 0000 -1B00 -1B00 +0800 +0800 +1400 +1400 +2200 +2200 +2200 +4100 +4100 +8080 +8080 ENDCHAR -STARTCHAR C117 -ENCODING 7795 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 10 1 -3 +STARTCHAR C065 +ENCODING 5171 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -CC -44 -44 -44 -44 -44 -3E -00 -6C -6C +C000 +3000 +0C00 +0300 +0080 +0040 +0080 +0300 +0C00 +3000 +C000 ENDCHAR -STARTCHAR C085 -ENCODING 7796 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 15 1 -4 +STARTCHAR C065 +ENCODING 5172 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -1100 +0400 0E00 +0400 0000 -0900 -1500 -1200 +C000 +3000 +0C00 +0300 +0080 +0040 +0080 +0300 +0C00 +3000 +C000 ENDCHAR -STARTCHAR C117 -ENCODING 7797 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 11 1 -4 +STARTCHAR C065 +ENCODING 5173 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -CC -44 -44 -44 -44 -44 -3E -00 -24 -54 -48 +2200 +7700 +2200 +0000 +C000 +3000 +0C00 +0300 +0080 +0040 +0080 +0300 +0C00 +3000 +C000 ENDCHAR -STARTCHAR C085 -ENCODING 7798 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 15 1 -4 +STARTCHAR C065 +ENCODING 5174 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 +C000 +3000 +0C00 +2300 2080 +2040 2080 -1100 -0E00 -0000 -0400 -0E00 -1100 +2300 +0C00 +3000 +C000 ENDCHAR -STARTCHAR C117 -ENCODING 7799 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 11 1 -4 +STARTCHAR C065 +ENCODING 5175 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -CC -44 -44 -44 -44 -44 -3E -00 -10 -38 -44 +C000 +3000 +0C00 +0300 +1080 +3840 +1080 +0300 +0C00 +3000 +C000 ENDCHAR -STARTCHAR C085 -ENCODING 7800 +STARTCHAR C065 +ENCODING 5176 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 +BITMAP +00C0 +0300 +0C00 +3000 +4000 +8000 +4000 +3000 +0C00 +0300 +00C0 +ENDCHAR +STARTCHAR C065 +ENCODING 5177 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 +BITMAP +0800 +1C00 +0800 +0000 +00C0 +0300 +0C00 +3000 +4000 +8000 +4000 +3000 +0C00 +0300 +00C0 +ENDCHAR +STARTCHAR C065 +ENCODING 5178 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 20 1 0 +BBX 11 11 -1 0 BITMAP +2020 +2020 +1040 +1040 +0880 +4880 +E880 +4500 +0500 0200 -0600 -0400 +0200 +ENDCHAR +STARTCHAR C065 +ENCODING 5179 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +8080 +8080 +4100 +4100 +2200 +2240 +22E0 +1440 +1400 0800 -0000 -0900 -1500 -1200 -0000 -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -1100 -0E00 +0800 ENDCHAR -STARTCHAR C117 -ENCODING 7801 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 16 1 0 +STARTCHAR C065 +ENCODING 5180 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 -1 0 BITMAP -08 -18 -10 -20 -00 -24 -54 -48 -00 -CC -44 -44 -44 -44 -44 -3E +0200 +0200 +0500 +4500 +E880 +4880 +0880 +1040 +1040 +2020 +2020 ENDCHAR -STARTCHAR C085 -ENCODING 7802 +STARTCHAR C065 +ENCODING 5181 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 16 1 0 +BBX 11 11 1 0 BITMAP -1B00 -1B00 -0000 -1F00 -0000 -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -1100 -0E00 +0800 +0800 +1400 +1440 +22E0 +2240 +2200 +4100 +4100 +8080 +8080 ENDCHAR -STARTCHAR C117 -ENCODING 7803 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 12 1 0 +STARTCHAR C065 +ENCODING 5182 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 BITMAP -6C -6C -00 -7C -00 -CC -44 -44 -44 -44 -44 -3E +0200 +0700 +0200 +0000 +0200 +0200 +0500 +4500 +E880 +4880 +0880 +1040 +1040 +2020 +2020 ENDCHAR -STARTCHAR C086 -ENCODING 7804 +STARTCHAR C065 +ENCODING 5183 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 15 0 0 +BBX 11 15 1 0 BITMAP -0900 -1500 -1200 +0800 +1C00 +0800 0000 -F1E0 -2080 -2080 -1100 -1100 -1100 -0A00 -0A00 -0A00 -0400 -0400 +0800 +0800 +1400 +1440 +22E0 +2240 +2200 +4100 +4100 +8080 +8080 ENDCHAR -STARTCHAR C118 -ENCODING 7805 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 11 1 0 +STARTCHAR C065 +ENCODING 5184 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 11 1 0 BITMAP -12 -2A -24 -00 -E7 -24 -24 -24 -18 -18 -18 +0C00 +0300 +00C0 +0030 +4008 +E004 +4008 +0030 +00C0 +0300 +0C00 ENDCHAR -STARTCHAR C086 -ENCODING 7806 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 14 0 -3 +STARTCHAR C065 +ENCODING 5185 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 11 1 0 BITMAP -F1E0 -2080 -2080 -1100 -1100 -1100 -0A00 -0A00 -0A00 +C000 +3000 +0C00 +0300 +0088 +005C +0088 +0300 +0C00 +3000 +C000 +ENDCHAR +STARTCHAR C065 +ENCODING 5186 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 15 1 0 +BITMAP 0400 +0E00 0400 0000 0C00 +0300 +00C0 +0030 +4008 +E004 +4008 +0030 +00C0 +0300 0C00 ENDCHAR -STARTCHAR C118 -ENCODING 7807 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 10 1 -3 +STARTCHAR C065 +ENCODING 5187 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 15 1 0 BITMAP -E7 -24 -24 -24 -18 -18 -18 -00 -18 -18 +4000 +E000 +4000 +0000 +C000 +3000 +0C00 +0300 +0088 +005C +0088 +0300 +0C00 +3000 +C000 ENDCHAR -STARTCHAR C087 -ENCODING 7808 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 16 0 0 +STARTCHAR C065 +ENCODING 5188 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 11 1 0 BITMAP -0200 +000C +0030 +00C0 0300 -0100 -0080 -0000 -F1CF -2184 -2184 -2244 -1248 -1248 -1248 -1428 -0C30 -0C30 -0810 +4400 +E800 +4400 +0300 +00C0 +0030 +000C ENDCHAR -STARTCHAR C119 -ENCODING 7809 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 12 0 0 +STARTCHAR C065 +ENCODING 5189 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 11 1 0 BITMAP -0800 +00C0 +0300 0C00 -0400 -0200 +3000 +4008 +801C +4008 +3000 +0C00 +0300 +00C0 +ENDCHAR +STARTCHAR C065 +ENCODING 5190 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 15 1 0 +BITMAP +0008 +001C +0008 0000 -EEE0 -2480 -2A80 -2A80 -2A80 -1B00 -1100 +000C +0030 +00C0 +0300 +4400 +E800 +4400 +0300 +00C0 +0030 +000C ENDCHAR -STARTCHAR C087 -ENCODING 7810 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 16 0 0 +STARTCHAR C065 +ENCODING 5191 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 15 1 0 BITMAP 0080 -0180 -0100 -0200 +01C0 +0080 0000 -F1CF -2184 -2184 -2244 -1248 -1248 -1248 -1428 -0C30 -0C30 -0810 +00C0 +0300 +0C00 +3000 +4008 +801C +4008 +3000 +0C00 +0300 +00C0 ENDCHAR -STARTCHAR C119 -ENCODING 7811 +STARTCHAR C065 +ENCODING 5192 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 12 0 0 +BBX 10 15 1 0 BITMAP -0200 -0600 -0400 -0800 -0000 -EEE0 -2480 -2A80 -2A80 -2A80 -1B00 1100 +3B80 +1100 +0000 +00C0 +0300 +0C00 +3000 +4000 +8000 +4000 +3000 +0C00 +0300 +00C0 ENDCHAR -STARTCHAR C087 -ENCODING 7812 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 14 0 0 +STARTCHAR char5150 +ENCODING 5193 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 5 1 6 BITMAP -06C0 -06C0 -0000 -F1CF -2184 -2184 -2244 -1248 -1248 -1248 -1428 -0C30 -0C30 -0810 +0C +30 +C0 +30 +0C ENDCHAR -STARTCHAR C119 -ENCODING 7813 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 10 0 0 +STARTCHAR char5158 +ENCODING 5194 +SWIDTH 120 0 +DWIDTH 2 0 +BBX 1 5 1 6 BITMAP -1B00 -1B00 -0000 -EEE0 -2480 -2A80 -2A80 -2A80 -1B00 -1100 +80 +80 +80 +80 +80 ENDCHAR -STARTCHAR C087 -ENCODING 7814 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 14 0 0 +STARTCHAR char5195 +ENCODING 5195 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 8 1 3 BITMAP -0180 -0180 -0000 -F1CF -2184 -2184 -2244 -1248 -1248 -1248 -1428 -0C30 -0C30 -0810 +80 +80 +80 +B0 +C8 +88 +88 +88 ENDCHAR -STARTCHAR C119 -ENCODING 7815 +STARTCHAR 0074 +ENCODING 5196 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 10 0 0 +BBX 9 11 1 0 BITMAP -0600 -0600 -0000 -EEE0 -2480 -2A80 -2A80 -2A80 -1B00 -1100 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +4100 +3E00 ENDCHAR -STARTCHAR C087 -ENCODING 7816 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 14 0 -3 +STARTCHAR 0074 +ENCODING 5197 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 15 1 0 BITMAP -F1CF -2184 -2184 -2244 -1248 -1248 -1248 -1428 -0C30 -0C30 -0810 +0800 +1400 +0800 0000 -0180 -0180 +3E00 +4100 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 ENDCHAR -STARTCHAR C119 -ENCODING 7817 +STARTCHAR 0074 +ENCODING 5198 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 10 0 -3 +BBX 9 11 1 0 BITMAP -EEE0 -2480 -2A80 -2A80 -2A80 -1B00 -1100 -0000 -0C00 -0C00 +3E00 +4100 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 ENDCHAR -STARTCHAR C088 -ENCODING 7818 +STARTCHAR 0074 +ENCODING 5199 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 14 1 0 +BBX 9 15 1 0 BITMAP -0C00 -0C00 +0800 +1C00 +0800 0000 -F3C0 -1100 -1200 -0A00 -0C00 -0400 -0A00 -1A00 -1100 -2080 -F1E0 +3E00 +4100 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 ENDCHAR -STARTCHAR C120 -ENCODING 7819 +STARTCHAR 0074 +ENCODING 5200 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 10 1 0 +BBX 8 11 1 0 BITMAP -18 -18 -00 -E7 -24 -18 -18 -18 -24 -E7 -ENDCHAR -STARTCHAR C088 -ENCODING 7820 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 14 1 0 -BITMAP -1B00 -1B00 -0000 -F3C0 -1100 -1200 -0A00 -0C00 -0400 -0A00 -1A00 -1100 -2080 -F1E0 +F8 +04 +02 +01 +01 +01 +01 +01 +02 +04 +F8 ENDCHAR -STARTCHAR C120 -ENCODING 7821 +STARTCHAR 0074 +ENCODING 5201 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 10 1 0 -BITMAP -36 -36 -00 -E7 -24 -18 -18 -18 -24 -E7 -ENDCHAR -STARTCHAR C089 -ENCODING 7822 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 14 0 0 -BITMAP -0C00 -0C00 -0000 -F1E0 -2080 -1100 -1100 -0A00 -0E00 -0400 -0400 -0400 -0400 -1F00 -ENDCHAR -STARTCHAR C121 -ENCODING 7823 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 8 13 1 -3 -BITMAP -18 -18 -00 -E7 -24 -24 -24 -18 -18 -18 -10 -90 -E0 -ENDCHAR -STARTCHAR C090 -ENCODING 7824 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 15 1 0 -BITMAP -10 -38 -44 -00 -FE -C4 -84 -88 -08 -10 -20 -22 -42 -46 -FE -ENDCHAR -STARTCHAR C122 -ENCODING 7825 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 0 +BBX 8 15 1 0 BITMAP 20 70 -88 +20 00 F8 -90 -90 -20 -48 -48 +04 +02 +01 +01 +01 +01 +01 +02 +04 F8 ENDCHAR -STARTCHAR C090 -ENCODING 7826 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 14 1 -3 +STARTCHAR 0074 +ENCODING 5202 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 0 BITMAP -FE -C4 -84 -88 -08 -10 -20 -22 -42 -46 -FE +44 +EE +44 00 -30 -30 -ENDCHAR -STARTCHAR C122 -ENCODING 7827 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 10 1 -3 -BITMAP F8 -90 -90 -20 -48 -48 +04 +02 +01 +01 +01 +01 +01 +02 +04 F8 -00 -60 -60 ENDCHAR -STARTCHAR C090 -ENCODING 7828 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 13 1 -2 +STARTCHAR 0074 +ENCODING 5203 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -FE -C4 -84 -88 -08 -10 -20 -22 -42 -46 -FE -00 -7C +F8 +04 +02 +21 +21 +21 +21 +21 +02 +04 +F8 ENDCHAR -STARTCHAR C122 -ENCODING 7829 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 9 1 -2 +STARTCHAR 0074 +ENCODING 5204 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -F8 -90 -90 -20 -48 -48 F8 -00 +04 +02 +01 +21 +71 +21 +01 +02 +04 F8 ENDCHAR -STARTCHAR C104 -ENCODING 7830 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 14 1 -2 +STARTCHAR 0074 +ENCODING 5205 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -C0 -40 -40 +1F +20 40 +80 +80 +80 +80 +80 40 -78 -44 -44 -44 -44 -44 -EE -00 -7C +20 +1F ENDCHAR -STARTCHAR C116 -ENCODING 7831 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 13 1 0 +STARTCHAR 0074 +ENCODING 5206 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 0 BITMAP -D8 -D8 +04 +0E +04 00 -20 -20 -20 -F8 -20 +1F 20 +40 +80 +80 +80 +80 +80 +40 20 -24 -24 -18 +1F ENDCHAR -STARTCHAR C119 -ENCODING 7832 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 12 0 0 +STARTCHAR 0074 +ENCODING 5207 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 11 1 0 BITMAP -0600 -0900 -0900 -0600 -0000 -EEE0 -2480 -2A80 -2A80 -2A80 -1B00 -1100 +0808 +0808 +0808 +0808 +4808 +E808 +4808 +0808 +0808 +0410 +03E0 ENDCHAR -STARTCHAR C121 -ENCODING 7833 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 8 15 1 -3 +STARTCHAR 0074 +ENCODING 5208 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 11 1 0 BITMAP -18 -24 -24 -18 -00 -E7 -24 -24 -24 -18 -18 -18 -10 -90 -E0 +8080 +8080 +8080 +8080 +8090 +80B8 +8090 +8080 +8080 +4100 +3E00 ENDCHAR -STARTCHAR C097 -ENCODING 7834 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR 0074 +ENCODING 5209 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 11 1 0 BITMAP -18 -04 -04 -18 -00 -70 -88 -08 -78 -88 -88 -7C +03E0 +0410 +0808 +0808 +4808 +E808 +4808 +0808 +0808 +0808 +0808 ENDCHAR -STARTCHAR C102 -ENCODING 7835 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 15 1 0 +STARTCHAR 0074 +ENCODING 5210 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 11 1 0 BITMAP -60 -60 -00 -38 -48 -40 -40 -40 -C0 -40 -40 -40 -40 -40 -E0 +3E00 +4100 +8080 +8080 +8090 +80B8 +8090 +8080 +8080 +8080 +8080 ENDCHAR -STARTCHAR C065 -ENCODING 7840 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 14 0 -3 +STARTCHAR 0074 +ENCODING 5211 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 15 1 0 BITMAP -0400 -0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 +0080 +01C0 +0080 0000 -0600 -0600 +03E0 +0410 +0808 +0808 +4808 +E808 +4808 +0808 +0808 +0808 +0808 ENDCHAR -STARTCHAR C097 -ENCODING 7841 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 10 1 -3 +STARTCHAR 0074 +ENCODING 5212 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 15 1 0 BITMAP -70 -88 -08 -78 -88 -88 -7C -00 -30 -30 +0800 +1C00 +0800 +0000 +3E00 +4100 +8080 +8080 +8090 +80B8 +8090 +8080 +8080 +8080 +8080 ENDCHAR -STARTCHAR C065 -ENCODING 7842 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 17 0 0 +STARTCHAR 0074 +ENCODING 5213 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +1F00 +0080 +0040 +0020 +4020 +E020 +4020 +0020 +0040 +0080 +1F00 +ENDCHAR +STARTCHAR 0074 +ENCODING 5214 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 BITMAP +F800 0400 -0A00 0200 -0400 +0100 +0120 +0170 +0120 +0100 +0200 0400 -0000 +F800 +ENDCHAR +STARTCHAR 0074 +ENCODING 5215 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 +BITMAP 0400 +0E00 0400 -0A00 -0A00 -0A00 -1100 -1100 +0000 1F00 -2080 -2080 -F1E0 -ENDCHAR -STARTCHAR C097 -ENCODING 7843 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 13 1 0 -BITMAP -20 -50 -10 -20 -20 -00 -70 -88 -08 -78 -88 -88 -7C +0080 +0040 +0020 +4020 +E020 +4020 +0020 +0040 +0080 +1F00 ENDCHAR -STARTCHAR C065 -ENCODING 7844 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 16 0 0 +STARTCHAR 0074 +ENCODING 5216 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 15 1 0 BITMAP -0080 -0500 -0E00 -1100 +2000 +7000 +2000 0000 +F800 0400 +0200 +0100 +0120 +0170 +0120 +0100 +0200 0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 +F800 ENDCHAR -STARTCHAR C097 -ENCODING 7845 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR 0074 +ENCODING 5217 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 BITMAP -04 -28 -70 -88 -00 -70 -88 -08 -78 -88 -88 -7C +01F0 +0200 +0400 +0800 +4800 +E800 +4800 +0800 +0400 +0200 +01F0 ENDCHAR -STARTCHAR C065 -ENCODING 7846 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 16 0 0 +STARTCHAR 0074 +ENCODING 5218 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP +1F00 2000 -1400 -0E00 -1100 +4000 +8000 +8040 +80E0 +8040 +8000 +4000 +2000 +1F00 +ENDCHAR +STARTCHAR 0074 +ENCODING 5219 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 15 1 0 +BITMAP +0040 +00E0 +0040 0000 +01F0 +0200 0400 +0800 +4800 +E800 +4800 +0800 0400 -0A00 -0A00 -0A00 -1100 -1100 +0200 +01F0 +ENDCHAR +STARTCHAR 0074 +ENCODING 5220 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 +BITMAP +0400 +0E00 +0400 +0000 1F00 -2080 -2080 -F1E0 +2000 +4000 +8000 +8040 +80E0 +8040 +8000 +4000 +2000 +1F00 ENDCHAR -STARTCHAR C097 -ENCODING 7847 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 7 12 0 0 +STARTCHAR 0074 +ENCODING 5221 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 +BITMAP +01F0 +0200 +4400 +E800 +4800 +0800 +4800 +E800 +4400 +0200 +01F0 +ENDCHAR +STARTCHAR char5153 +ENCODING 5222 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 6 1 5 BITMAP +70 80 -50 -38 -44 -00 -38 -44 -04 -3C -44 -44 -3E +80 +80 +80 +70 ENDCHAR -STARTCHAR C065 -ENCODING 7848 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 18 0 0 +STARTCHAR 0074 +ENCODING 5223 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 +BITMAP +8090 +8090 +8090 +8090 +8090 +8080 +8080 +8080 +8080 +4100 +3E00 +ENDCHAR +STARTCHAR 0074 +ENCODING 5224 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 +BITMAP +3E10 +4110 +8090 +8090 +8090 +8080 +8080 +8080 +8080 +8080 +8080 +ENDCHAR +STARTCHAR 0074 +ENCODING 5225 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP +F820 +0420 +0220 +0120 +0120 0100 -0280 -0080 -0500 -0F00 -1100 -0000 -0400 +0100 +0100 +0200 0400 -0A00 -0A00 -0A00 -1100 -1100 +F800 +ENDCHAR +STARTCHAR 0074 +ENCODING 5226 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +1F20 +2020 +4020 +8020 +8020 +8000 +8000 +8000 +4000 +2000 1F00 -2080 -2080 -F1E0 ENDCHAR -STARTCHAR C097 -ENCODING 7849 +STARTCHAR 0066 +ENCODING 5227 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 14 1 0 +BBX 6 11 1 0 BITMAP -08 -14 -04 -28 78 -88 +84 +84 +84 +84 +7C +04 +04 +04 +04 +04 +ENDCHAR +STARTCHAR 0066 +ENCODING 5228 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 0 +BITMAP +20 +50 +20 00 -70 -88 -08 78 -88 -88 -7C +84 +84 +84 +84 +F8 +80 +80 +80 +80 +80 ENDCHAR -STARTCHAR C065 -ENCODING 7850 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 19 0 0 +STARTCHAR 0066 +ENCODING 5229 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP -0900 -1500 -1200 -0000 -0400 -0E00 -1100 -0000 -0400 -0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 +78 +84 +84 +84 +84 +F8 +80 +80 +80 +80 +80 ENDCHAR -STARTCHAR C097 -ENCODING 7851 +STARTCHAR 0066 +ENCODING 5230 SWIDTH 420 0 DWIDTH 7 0 BBX 6 15 1 0 BITMAP -48 -A8 -90 -00 20 70 -88 +20 00 -70 -88 -08 78 -88 -88 +84 +84 +84 +84 +F8 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR 0066 +ENCODING 5231 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 +BITMAP +04 +04 +04 +04 +04 +7C +84 +84 +84 +84 +78 +ENDCHAR +STARTCHAR 0066 +ENCODING 5232 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 15 1 0 +BITMAP +04 +0E +04 +00 +04 +04 +04 +04 +04 7C +84 +84 +84 +84 +78 ENDCHAR -STARTCHAR C065 -ENCODING 7852 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 18 0 -3 +STARTCHAR 0066 +ENCODING 5233 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 BITMAP -0400 -0E00 +1100 +3B80 1100 0000 0400 0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 -0000 -0600 -0600 +0400 +0400 +0400 +7C00 +8400 +8400 +8400 +8400 +7800 ENDCHAR -STARTCHAR C097 -ENCODING 7853 +STARTCHAR 0066 +ENCODING 5234 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 14 1 -3 +BBX 6 11 1 0 BITMAP -20 -70 -88 -00 -70 -88 -08 +80 +80 +80 +80 +80 +F8 +84 +84 +84 +84 78 -88 -88 -7C -00 -30 -30 -ENDCHAR -STARTCHAR C065 -ENCODING 7854 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 18 0 0 -BITMAP -0100 -0300 -0200 -0400 -1100 -0E00 -0000 -0400 -0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 ENDCHAR -STARTCHAR C097 -ENCODING 7855 +STARTCHAR 0066 +ENCODING 5235 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 14 1 0 +BBX 7 15 0 0 BITMAP -08 -18 -10 -20 -88 -70 +40 +E0 +40 00 -70 -88 -08 -78 -88 -88 +40 +40 +40 +40 +40 7C +42 +42 +42 +42 +3C ENDCHAR -STARTCHAR C065 -ENCODING 7856 +STARTCHAR 0066 +ENCODING 5236 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 18 0 0 -BITMAP -1000 -1800 -0800 -0400 -1100 -0E00 -0000 -0400 -0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 -ENDCHAR -STARTCHAR C097 -ENCODING 7857 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 14 1 0 +BBX 10 11 1 0 BITMAP -80 -C0 -40 -20 -88 -70 -00 -70 -88 -08 -78 -88 -88 -7C +0780 +0840 +0840 +0840 +4840 +E7C0 +4040 +0040 +0040 +0040 +0040 ENDCHAR -STARTCHAR C065 -ENCODING 7858 +STARTCHAR 0066 +ENCODING 5237 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 19 0 0 +BBX 10 11 1 0 BITMAP -0400 -0A00 -0200 +7800 +8400 +8400 +8400 +8480 +7DC0 +0480 0400 0400 -1100 -0E00 -0000 0400 0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 ENDCHAR -STARTCHAR C097 -ENCODING 7859 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 15 1 0 +STARTCHAR 0066 +ENCODING 5238 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -20 -50 -10 -20 -20 -88 -70 -00 -70 -88 -08 -78 -88 -88 -7C +0780 +0840 +0840 +0840 +4840 +EF80 +4800 +0800 +0800 +0800 +0800 ENDCHAR -STARTCHAR C065 -ENCODING 7860 +STARTCHAR 0066 +ENCODING 5239 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 18 0 0 +BBX 10 11 1 0 BITMAP -0900 -1500 -1200 +7800 +8400 +8400 +8400 +8480 +F9C0 +8080 +8000 +8000 +8000 +8000 +ENDCHAR +STARTCHAR 0066 +ENCODING 5240 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 +BITMAP +0200 +0700 +0200 0000 -1100 -0E00 +0780 +0840 +0840 +0840 +4840 +EF80 +4800 +0800 +0800 +0800 +0800 +ENDCHAR +STARTCHAR 0066 +ENCODING 5241 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 +BITMAP +2000 +7000 +2000 0000 -0400 -0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 +7800 +8400 +8400 +8400 +8480 +F9C0 +8080 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR C097 -ENCODING 7861 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 14 1 0 +STARTCHAR 0066 +ENCODING 5242 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -48 -A8 -90 -00 -88 -70 -00 -70 -88 -08 -78 -88 -88 -7C +0040 +0040 +0040 +0040 +4040 +E7C0 +4840 +0840 +0840 +0840 +0780 ENDCHAR -STARTCHAR C065 -ENCODING 7862 +STARTCHAR 0066 +ENCODING 5243 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 17 0 -3 +BBX 10 11 1 0 BITMAP -1100 -0E00 -0000 0400 0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 -0000 -0600 -0600 +0400 +0400 +0480 +7DC0 +8480 +8400 +8400 +8400 +7800 ENDCHAR -STARTCHAR C097 -ENCODING 7863 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 13 1 -3 +STARTCHAR 0066 +ENCODING 5244 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 BITMAP -88 -70 -00 -70 -88 -08 -78 -88 -88 -7C -00 -30 -30 +0040 +00E0 +0040 +0000 +0040 +0040 +0040 +0040 +4040 +E7C0 +4840 +0840 +0840 +0840 +0780 ENDCHAR -STARTCHAR C069 -ENCODING 7864 +STARTCHAR 0066 +ENCODING 5245 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 14 0 -3 +BBX 10 15 1 0 BITMAP -FF80 -2080 -2080 -2280 -2200 -3E00 -2240 -2240 -2080 -2080 -FF80 +0400 +0E00 +0400 0000 -0C00 -0C00 -ENDCHAR -STARTCHAR C101 -ENCODING 7865 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 10 1 -3 -BITMAP -70 -88 -F8 -80 -80 -88 -70 -00 -30 -30 +0400 +0400 +0400 +0400 +0480 +7DC0 +8480 +8400 +8400 +8400 +7800 ENDCHAR -STARTCHAR C069 -ENCODING 7866 +STARTCHAR 0066 +ENCODING 5246 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 17 0 0 +BBX 10 11 1 0 BITMAP 0800 -1400 -0400 0800 0800 -0000 -FF80 -2080 -2080 -2280 -2200 -3E00 -2240 -2240 -2080 -2080 -FF80 +0800 +4800 +EF80 +4840 +0840 +0840 +0840 +0780 ENDCHAR -STARTCHAR C101 -ENCODING 7867 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 13 1 0 +STARTCHAR 0066 +ENCODING 5247 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -20 -50 -10 -20 -20 -00 -70 -88 -F8 -80 -80 -88 -70 +8000 +8000 +8000 +8000 +8080 +F9C0 +8480 +8400 +8400 +8400 +7800 ENDCHAR -STARTCHAR C069 -ENCODING 7868 +STARTCHAR 0066 +ENCODING 5248 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 15 0 0 +BBX 10 15 1 0 BITMAP -1200 -2A00 -2400 +0800 +1C00 +0800 0000 -FF80 -2080 -2080 -2280 -2200 -3E00 -2240 -2240 -2080 -2080 -FF80 +0800 +0800 +0800 +0800 +4800 +EF80 +4840 +0840 +0840 +0840 +0780 ENDCHAR -STARTCHAR C101 -ENCODING 7869 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 0 +STARTCHAR 0066 +ENCODING 5249 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 15 0 0 BITMAP -48 -A8 -90 -00 -70 -88 -F8 -80 -80 -88 -70 +4000 +E000 +4000 +0000 +4000 +4000 +4000 +4000 +4040 +7CE0 +4240 +4200 +4200 +4200 +3C00 ENDCHAR -STARTCHAR C069 -ENCODING 7870 +STARTCHAR 0066 +ENCODING 5250 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 16 0 0 +BBX 10 11 1 0 BITMAP -0100 -0A00 -1C00 -2200 -0000 -FF80 -2080 -2080 -2280 -2200 -3E00 -2240 -2240 -2080 -2080 -FF80 +0800 +0800 +4800 +E800 +4800 +0F80 +4840 +E840 +4840 +0840 +0780 ENDCHAR -STARTCHAR C101 -ENCODING 7871 +STARTCHAR char5251 +ENCODING 5251 SWIDTH 360 0 DWIDTH 6 0 -BBX 6 12 1 0 +BBX 4 6 1 5 BITMAP -04 -28 -70 -88 -00 -70 -88 -F8 80 80 -88 +E0 +90 +90 +E0 +ENDCHAR +STARTCHAR char5251 +ENCODING 5252 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 6 1 5 +BITMAP +10 +10 +70 +90 +90 70 ENDCHAR -STARTCHAR C069 -ENCODING 7872 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 16 0 0 +STARTCHAR 0066 +ENCODING 5253 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -4000 -2800 -1C00 -2200 -0000 -FF80 -2080 -2080 -2280 -2200 -3E00 -2240 -2240 -2080 -2080 -FF80 +7880 +8480 +8480 +8480 +8480 +7C00 +0400 +0400 +0400 +0400 +0400 ENDCHAR -STARTCHAR C101 -ENCODING 7873 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 6 12 0 0 +STARTCHAR 0066 +ENCODING 5254 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -80 -50 -38 -44 -00 -38 -44 -7C -40 -40 -44 -38 +7880 +8480 +8480 +8480 +8480 +F880 +8000 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR C069 -ENCODING 7874 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 18 0 0 +STARTCHAR 0066 +ENCODING 5255 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -0200 -0500 -0100 -0A00 -1E00 -2200 -0000 -FF80 -2080 -2080 -2280 -2200 -3E00 -2240 -2240 -2080 -2080 -FF80 +0480 +0480 +0480 +0480 +0480 +7C00 +8400 +8400 +8400 +8400 +7800 ENDCHAR -STARTCHAR C101 -ENCODING 7875 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 6 14 1 0 +STARTCHAR 0066 +ENCODING 5256 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -08 -14 -04 -28 -78 -88 -00 -70 -88 +81 +81 +81 +81 +81 F8 -80 -80 -88 -70 +84 +84 +84 +84 +78 ENDCHAR -STARTCHAR C069 -ENCODING 7876 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 19 0 0 +STARTCHAR 0066 +ENCODING 5257 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP -1200 -2A00 -2400 -0000 -0800 -1C00 -2200 -0000 -FF80 -2080 -2080 -2280 -2200 -3E00 -2240 -2240 -2080 -2080 -FF80 +78 +84 +84 +04 +04 +04 +04 +04 +04 +04 +04 ENDCHAR -STARTCHAR C101 -ENCODING 7877 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 15 1 0 +STARTCHAR 0066 +ENCODING 5258 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 0 BITMAP -48 -A8 -90 -00 20 -70 -88 +50 +20 00 -70 -88 -F8 +78 +84 +84 80 80 -88 -70 +80 +80 +80 +80 +80 +80 ENDCHAR -STARTCHAR C069 -ENCODING 7878 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 18 0 -3 +STARTCHAR 0066 +ENCODING 5259 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP -0800 -1C00 -2200 -0000 -FF80 -2080 -2080 -2280 -2200 -3E00 -2240 -2240 -2080 -2080 -FF80 -0000 -0C00 -0C00 +78 +84 +84 +80 +80 +80 +80 +80 +80 +80 +80 ENDCHAR -STARTCHAR C101 -ENCODING 7879 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 14 1 -3 +STARTCHAR 0066 +ENCODING 5260 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 0 BITMAP 20 70 -88 +20 00 -70 -88 -F8 +78 +84 +84 80 80 -88 -70 -00 -30 -30 +80 +80 +80 +80 +80 +80 ENDCHAR -STARTCHAR C073 -ENCODING 7880 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 17 1 0 +STARTCHAR 0066 +ENCODING 5261 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP -20 -50 -10 -20 -20 +04 +04 +04 +04 +04 +04 +04 +04 +84 +84 +78 +ENDCHAR +STARTCHAR 0066 +ENCODING 5262 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 15 1 0 +BITMAP +04 +0E +04 00 -F8 -20 -20 -20 -20 -20 -20 -20 -20 -20 -F8 +04 +04 +04 +04 +04 +04 +04 +04 +84 +84 +78 ENDCHAR -STARTCHAR C105 -ENCODING 7881 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 13 1 0 +STARTCHAR 0066 +ENCODING 5263 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 BITMAP -40 -A0 -20 +1100 +3B80 +1100 +0000 +0400 +0400 +0400 +0400 +0400 +0400 +0400 +0400 +8400 +8400 +7800 +ENDCHAR +STARTCHAR 0066 +ENCODING 5264 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 +BITMAP +80 +80 +80 +80 +80 +80 +80 +80 +84 +84 +78 +ENDCHAR +STARTCHAR 0066 +ENCODING 5265 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 15 1 0 +BITMAP 40 +E0 40 00 -C0 -40 -40 40 40 40 -E0 -ENDCHAR -STARTCHAR C073 -ENCODING 7882 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 14 1 -3 -BITMAP -F8 -20 -20 -20 -20 -20 -20 -20 -20 -20 -F8 -00 -60 -60 -ENDCHAR -STARTCHAR 0x1ECB -ENCODING 7883 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 14 1 -3 -BITMAP -C0 -C0 -00 -00 -C0 40 40 40 40 40 -E0 -00 -C0 -C0 +42 +42 +3C ENDCHAR -STARTCHAR C079 -ENCODING 7884 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 14 1 -3 +STARTCHAR 0066 +ENCODING 5266 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -1E00 -2100 +0F00 +1080 +1080 +0080 4080 -8040 -8040 -8040 -8040 -8040 +E080 4080 -2100 -1E00 -0000 -0C00 -0C00 +0080 +0080 +0080 +0080 ENDCHAR -STARTCHAR C111 -ENCODING 7885 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 10 1 -3 +STARTCHAR 0066 +ENCODING 5267 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -70 -88 -88 -88 -88 -88 -70 -00 -30 -30 +7800 +8400 +8400 +0400 +0480 +05C0 +0480 +0400 +0400 +0400 +0400 ENDCHAR -STARTCHAR C079 -ENCODING 7886 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 17 1 0 +STARTCHAR 0066 +ENCODING 5268 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP +0780 +0840 +0840 0800 -1400 -0400 +4800 +E800 +4800 0800 0800 -0000 -1E00 -2100 -4080 -8040 -8040 -8040 -8040 -8040 -4080 -2100 -1E00 +0800 +0800 ENDCHAR -STARTCHAR C111 -ENCODING 7887 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 13 1 0 +STARTCHAR 0066 +ENCODING 5269 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -20 -50 -10 -20 -20 -00 -70 -88 -88 -88 -88 -88 -70 +7800 +8400 +8400 +8000 +8100 +8380 +8100 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR C079 -ENCODING 7888 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 16 1 0 +STARTCHAR 0066 +ENCODING 5270 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -0100 -0A00 -1C00 -2200 +0200 +0700 +0200 0000 -1E00 -2100 -4080 -8040 -8040 -8040 -8040 -8040 -4080 -2100 -1E00 +0780 +0840 +0840 +0800 +4800 +E800 +4800 +0800 +0800 +0800 +0800 ENDCHAR -STARTCHAR C111 -ENCODING 7889 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 6 12 1 0 +STARTCHAR 0066 +ENCODING 5271 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 BITMAP -04 -28 -70 -88 -00 -70 -88 -88 -88 -88 -88 -70 +2000 +7000 +2000 +0000 +7800 +8400 +8400 +8000 +8100 +8380 +8100 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR C079 -ENCODING 7890 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 16 1 0 +STARTCHAR 0066 +ENCODING 5272 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -4000 -2800 -1C00 -2200 -0000 -1E00 -2100 +0080 +0080 +0080 +0080 4080 -8040 -8040 -8040 -8040 -8040 +E080 4080 -2100 -1E00 +0080 +1080 +1080 +0F00 ENDCHAR -STARTCHAR C111 -ENCODING 7891 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 6 12 0 0 +STARTCHAR 0066 +ENCODING 5273 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -80 -50 -38 -44 -00 -38 -44 -44 -44 -44 -44 -38 +0400 +0400 +0400 +0400 +0480 +05C0 +0480 +0400 +8400 +8400 +7800 ENDCHAR -STARTCHAR C079 -ENCODING 7892 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 18 1 0 +STARTCHAR 0066 +ENCODING 5274 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -0200 -0500 -0100 -0A00 -1E00 -2200 +0080 +01C0 +0080 0000 -1E00 -2100 +0080 +0080 +0080 +0080 4080 -8040 -8040 -8040 -8040 -8040 +E080 4080 -2100 -1E00 +0080 +1080 +1080 +0F00 ENDCHAR -STARTCHAR C111 -ENCODING 7893 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 6 14 1 0 +STARTCHAR 0066 +ENCODING 5275 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -08 -14 -04 -28 -78 -88 -00 -70 -88 -88 -88 -88 -88 -70 +0400 +0E00 +0400 +0000 +0400 +0400 +0400 +0400 +0480 +05C0 +0480 +0400 +8400 +8400 +7800 ENDCHAR -STARTCHAR C079 -ENCODING 7894 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 19 1 0 +STARTCHAR 0066 +ENCODING 5276 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -1200 -2A00 -2400 -0000 0800 -1C00 -2200 -0000 -1E00 -2100 -4080 -8040 -8040 -8040 -8040 -8040 -4080 -2100 -1E00 +0800 +0800 +0800 +4800 +E800 +4800 +0800 +0840 +0840 +0780 ENDCHAR -STARTCHAR C111 -ENCODING 7895 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 15 1 0 +STARTCHAR 0066 +ENCODING 5277 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -48 -A8 -90 -00 -20 -70 -88 -00 -70 -88 -88 -88 -88 -88 -70 +8000 +8000 +8000 +8000 +8100 +8380 +8100 +8000 +8400 +8400 +7800 ENDCHAR -STARTCHAR C079 -ENCODING 7896 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 18 1 -3 +STARTCHAR 0066 +ENCODING 5278 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP 0800 1C00 -2200 -0000 -1E00 -2100 -4080 -8040 -8040 -8040 -8040 -8040 -4080 -2100 -1E00 +0800 0000 -0C00 -0C00 -ENDCHAR -STARTCHAR C111 -ENCODING 7897 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 14 1 -3 -BITMAP -20 -70 -88 -00 -70 -88 -88 -88 -88 -88 -70 -00 -30 -30 +0800 +0800 +0800 +0800 +4800 +E800 +4800 +0800 +0840 +0840 +0780 ENDCHAR -STARTCHAR C079 -ENCODING 7898 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 16 1 0 +STARTCHAR 0066 +ENCODING 5279 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 15 0 0 BITMAP -0400 -0C00 -0800 -1000 -0060 -1E20 -21C0 +4000 +E000 +4000 +0000 +4000 +4000 +4000 +4000 4080 -8040 -8040 -8040 -8040 -8040 +41C0 4080 -2100 -1E00 -ENDCHAR -STARTCHAR C111 -ENCODING 7899 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 7 12 1 0 -BITMAP -10 -30 -20 -40 -06 -72 -8C -88 -88 -88 -88 -70 +4000 +4200 +4200 +3C00 ENDCHAR -STARTCHAR C079 -ENCODING 7900 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 16 1 0 +STARTCHAR 0066 +ENCODING 5280 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -1000 -1800 0800 -0400 -0060 -1E20 -21C0 -4080 -8040 -8040 -8040 -8040 -8040 -4080 -2100 -1E00 +0800 +4800 +E800 +4800 +0800 +4800 +E800 +4840 +0840 +0780 ENDCHAR -STARTCHAR C111 -ENCODING 7901 +STARTCHAR char5251 +ENCODING 5281 SWIDTH 360 0 DWIDTH 6 0 -BBX 7 12 1 0 +BBX 4 6 1 5 BITMAP -40 +80 +80 +80 +90 +90 60 -20 +ENDCHAR +STARTCHAR char5251 +ENCODING 5282 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 6 1 5 +BITMAP 10 -06 -72 -8C -88 -88 -88 -88 -70 +10 +10 +90 +90 +60 ENDCHAR -STARTCHAR C079 -ENCODING 7902 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 17 1 0 +STARTCHAR 0066 +ENCODING 5283 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 BITMAP -0800 -1400 -0400 -0800 -0800 -0060 -1E20 -21C0 -4080 -8040 -8040 -8040 -8040 -8040 -4080 -2100 -1E00 +FC +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 ENDCHAR -STARTCHAR C111 -ENCODING 7903 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 7 13 1 0 +STARTCHAR 0066 +ENCODING 5284 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 0 BITMAP 20 50 -10 -20 20 -06 -72 -8C -88 -88 -88 -88 -70 -ENDCHAR -STARTCHAR C079 -ENCODING 7904 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 15 1 0 -BITMAP -1200 -2A00 -2400 -0060 -1E20 -21C0 -4080 -8040 -8040 -8040 -8040 -8040 -4080 -2100 -1E00 -ENDCHAR -STARTCHAR C111 -ENCODING 7905 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 7 11 1 0 -BITMAP -48 -A8 -90 -06 -72 -8C -88 -88 -88 -88 -70 +00 +FC +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 ENDCHAR -STARTCHAR C079 -ENCODING 7906 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 15 1 -3 +STARTCHAR 0066 +ENCODING 5285 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP -0060 -1E20 -21C0 -4080 -8040 -8040 -8040 -8040 -8040 -4080 -2100 -1E00 -0000 -0C00 -0C00 +FC +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 ENDCHAR -STARTCHAR C111 -ENCODING 7907 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 7 11 1 -3 +STARTCHAR 0066 +ENCODING 5286 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 0 BITMAP -06 -72 -8C -88 -88 -88 -88 +20 70 +20 00 -30 -30 +FC +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 ENDCHAR -STARTCHAR C085 -ENCODING 7908 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 14 1 -3 +STARTCHAR 0066 +ENCODING 5287 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 BITMAP -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -1100 -0E00 -0000 -0C00 -0C00 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +FC ENDCHAR -STARTCHAR C117 -ENCODING 7909 +STARTCHAR 0066 +ENCODING 5288 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 10 1 -3 +BBX 7 15 1 0 BITMAP -CC -44 -44 -44 -44 -44 -3E +04 +0E +04 00 -18 -18 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +FC ENDCHAR -STARTCHAR C085 -ENCODING 7910 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 17 1 0 +STARTCHAR 0066 +ENCODING 5289 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 BITMAP +1100 +3B80 +1100 +0000 0400 -0A00 -0200 0400 0400 -0000 -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -1100 -0E00 +0400 +0400 +0400 +0400 +0400 +0400 +0400 +FC00 ENDCHAR -STARTCHAR C117 -ENCODING 7911 +STARTCHAR 0066 +ENCODING 5290 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 +BITMAP +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +FC +ENDCHAR +STARTCHAR 0066 +ENCODING 5291 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 13 1 0 +BBX 7 15 1 0 BITMAP -10 -28 -08 -10 -10 +40 +E0 +40 00 -CC -44 -44 -44 -44 -44 -3E +40 +40 +40 +40 +40 +40 +40 +40 +40 +40 +7E ENDCHAR -STARTCHAR C085 -ENCODING 7912 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 12 16 1 0 +STARTCHAR 0066 +ENCODING 5292 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -0200 -0600 -0400 -0830 -0010 -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -1100 -0E00 +1F80 +0080 +0080 +0080 +4080 +E080 +4080 +0080 +0080 +0080 +0080 ENDCHAR -STARTCHAR C117 -ENCODING 7913 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 8 12 1 0 +STARTCHAR 0066 +ENCODING 5293 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -04 -0C -08 -13 -01 -CE -44 -44 -44 -44 -44 -3E +FC00 +0400 +0400 +0400 +0480 +05C0 +0480 +0400 +0400 +0400 +0400 ENDCHAR -STARTCHAR C085 -ENCODING 7914 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 12 16 1 0 +STARTCHAR 0066 +ENCODING 5294 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP +0FC0 0800 -0C00 -0400 -0230 -0010 -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -1100 -0E00 +0800 +0800 +4800 +E800 +4800 +0800 +0800 +0800 +0800 ENDCHAR -STARTCHAR C117 -ENCODING 7915 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 8 12 1 0 +STARTCHAR 0066 +ENCODING 5295 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -40 -60 -20 -13 -01 -CE -44 -44 -44 -44 -44 -3E -ENDCHAR -STARTCHAR C085 -ENCODING 7916 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 12 17 1 0 -BITMAP -0400 -0A00 -0200 -0400 -0430 -0010 -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -1100 -0E00 -ENDCHAR -STARTCHAR C117 -ENCODING 7917 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 8 13 1 0 -BITMAP -10 -28 -08 -10 -13 -01 -CE -44 -44 -44 -44 -44 -3E -ENDCHAR -STARTCHAR C085 -ENCODING 7918 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 12 15 1 0 -BITMAP -0900 -1500 -1230 -0010 -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -1100 -0E00 +FC00 +8000 +8000 +8000 +8100 +8380 +8100 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR C117 -ENCODING 7919 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 8 12 1 0 +STARTCHAR 0066 +ENCODING 5296 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -24 -54 -48 -03 -01 -CE -44 -44 -44 -44 -44 -3E +0200 +0700 +0200 +0000 +0FC0 +0800 +0800 +0800 +4800 +E800 +4800 +0800 +0800 +0800 +0800 ENDCHAR -STARTCHAR C085 -ENCODING 7920 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 12 16 1 -3 +STARTCHAR 0066 +ENCODING 5297 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 BITMAP -0030 -0010 -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -1100 -0E00 +2000 +7000 +2000 0000 -0C00 -0C00 +FC00 +8000 +8000 +8000 +8100 +8380 +8100 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR C117 -ENCODING 7921 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 8 12 1 -3 +STARTCHAR 0066 +ENCODING 5298 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -03 -01 -CE -44 -44 -44 -44 -44 -3E -00 -18 -18 +0080 +0080 +0080 +0080 +4080 +E080 +4080 +0080 +0080 +0080 +1F80 ENDCHAR -STARTCHAR C089 -ENCODING 7922 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 16 0 0 +STARTCHAR 0066 +ENCODING 5299 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -0800 -0C00 0400 -0200 -0000 -F1E0 -2080 -1100 -1100 -0A00 -0E00 0400 0400 0400 +0480 +05C0 +0480 +0400 +0400 0400 -1F00 +FC00 ENDCHAR -STARTCHAR C121 -ENCODING 7923 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 8 15 1 -3 +STARTCHAR 0066 +ENCODING 5300 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -20 -30 -10 -08 -00 -E7 -24 -24 -24 -18 -18 -18 -10 -90 -E0 +0080 +01C0 +0080 +0000 +0080 +0080 +0080 +0080 +4080 +E080 +4080 +0080 +0080 +0080 +1F80 ENDCHAR -STARTCHAR C089 -ENCODING 7924 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 14 0 -3 +STARTCHAR 0066 +ENCODING 5301 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -F1E0 -2080 -1100 -1100 -0A00 -0E00 -0400 0400 +0E00 0400 -0400 -1F00 0000 -0C00 -0C00 -ENDCHAR -STARTCHAR C121 -ENCODING 7925 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 8 10 1 -3 -BITMAP -E7 -24 -24 -24 -18 -18 -18 -10 -96 -E6 -ENDCHAR -STARTCHAR C089 -ENCODING 7926 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 17 0 0 -BITMAP 0400 -0A00 -0200 0400 0400 -0000 -F1E0 -2080 -1100 -1100 -0A00 -0E00 0400 +0480 +05C0 +0480 0400 0400 0400 -1F00 +FC00 ENDCHAR -STARTCHAR C121 -ENCODING 7927 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 8 16 1 -3 +STARTCHAR 0066 +ENCODING 5302 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -10 -28 -08 -10 -10 -00 -E7 -24 -24 -24 -18 -18 -18 -10 -90 -E0 +0800 +0800 +0800 +0800 +4800 +E800 +4800 +0800 +0800 +0800 +0FC0 ENDCHAR -STARTCHAR C089 -ENCODING 7928 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 15 0 0 +STARTCHAR 0066 +ENCODING 5303 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -0900 -1500 -1200 +8000 +8000 +8000 +8000 +8100 +8380 +8100 +8000 +8000 +8000 +FC00 +ENDCHAR +STARTCHAR 0066 +ENCODING 5304 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 +BITMAP +0800 +1C00 +0800 0000 -F1E0 -2080 -1100 -1100 -0A00 -0E00 -0400 -0400 -0400 -0400 -1F00 +0800 +0800 +0800 +0800 +4800 +E800 +4800 +0800 +0800 +0800 +0FC0 ENDCHAR -STARTCHAR C121 -ENCODING 7929 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 8 14 1 -3 +STARTCHAR 0066 +ENCODING 5305 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 10 15 0 0 BITMAP -12 -2A -24 -00 -E7 -24 -24 -24 -18 -18 -18 -10 -90 -E0 +4000 +E000 +4000 +0000 +4000 +4000 +4000 +4000 +4080 +41C0 +4080 +4000 +4000 +4000 +7E00 ENDCHAR -STARTCHAR C130 -ENCODING 7936 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 12 1 0 +STARTCHAR 0066 +ENCODING 5306 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -18 -18 -08 -10 -00 -62 -92 -94 -8C -88 -98 -66 +0800 +0800 +4800 +E800 +4800 +0800 +4800 +E800 +4800 +0800 +0FC0 ENDCHAR -STARTCHAR C129 -ENCODING 7937 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 12 1 0 +STARTCHAR char5251 +ENCODING 5307 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 4 6 1 5 BITMAP -30 -30 -20 +80 +80 +80 +80 +80 +F0 +ENDCHAR +STARTCHAR char5153 +ENCODING 5308 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 6 1 5 +BITMAP +70 +80 +80 +80 +80 +70 +ENDCHAR +STARTCHAR char5251 +ENCODING 5309 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 4 6 1 5 +BITMAP 10 -00 -62 -92 -94 -8C -88 -98 -66 +10 +10 +10 +10 +F0 ENDCHAR -STARTCHAR C138 -ENCODING 7938 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 12 1 0 +STARTCHAR char5310 +ENCODING 5310 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 4 6 1 5 BITMAP -68 -68 -24 -44 -00 -62 -92 -94 -8C -88 -98 -66 +60 +90 +10 +20 +40 +F0 ENDCHAR -STARTCHAR C138 -ENCODING 7939 +STARTCHAR char5311 +ENCODING 5311 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 12 1 0 +BBX 7 11 1 0 BITMAP -68 -68 +38 44 -24 -00 -62 -92 -94 -8C -88 -98 -66 +82 +02 +02 +04 +08 +10 +20 +42 +FE ENDCHAR -STARTCHAR C138 -ENCODING 7940 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 12 1 0 +STARTCHAR 006B +ENCODING 5312 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 6 1 0 BITMAP -64 -64 -28 -48 -00 -62 -92 -94 -8C -88 -98 -66 +FF80 +0840 +0840 +0840 +0840 +0780 ENDCHAR -STARTCHAR C138 -ENCODING 7941 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 12 1 0 +STARTCHAR 006B +ENCODING 5313 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 0 BITMAP -64 -64 -48 -28 -00 -62 -92 -94 -8C -88 -98 -66 +1000 +2800 +1000 +0000 +7FC0 +8400 +8400 +8400 +8400 +7800 ENDCHAR -STARTCHAR C130 -ENCODING 7942 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 16 1 0 +STARTCHAR 006B +ENCODING 5314 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 6 1 0 BITMAP -24 -54 -48 -00 -18 -18 -08 -10 -00 -62 -92 -94 -8C -88 -98 -66 +7FC0 +8400 +8400 +8400 +8400 +7800 ENDCHAR -STARTCHAR C129 -ENCODING 7943 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 16 1 0 +STARTCHAR 006B +ENCODING 5315 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 0 BITMAP -24 -54 -48 -00 -30 -30 -20 -10 -00 -62 -92 -94 -8C -88 -98 -66 +1000 +3800 +1000 +0000 +7FC0 +8400 +8400 +8400 +8400 +7800 ENDCHAR -STARTCHAR C065 -ENCODING 7944 +STARTCHAR 006B +ENCODING 5316 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 13 0 0 +BBX 10 6 1 0 BITMAP -6000 -6000 -2400 -4400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 +0780 +0840 +0840 +0840 +0840 +FF80 ENDCHAR -STARTCHAR C065 -ENCODING 7945 +STARTCHAR 006B +ENCODING 5317 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 13 0 0 +BBX 10 10 1 0 BITMAP -6000 -6000 -4400 -2400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 +0200 +0700 +0200 +0000 +0780 +0840 +0840 +0840 +0840 +FF80 ENDCHAR -STARTCHAR 0x1F0A -ENCODING 7946 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 12 13 0 0 +STARTCHAR 006B +ENCODING 5318 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 0 BITMAP -D000 -D000 -4A00 -8A00 -0500 -0500 -0500 0880 +1DC0 0880 -0F80 -1040 -1040 -78F0 +0000 +0780 +0840 +0840 +0840 +0840 +FF80 ENDCHAR -STARTCHAR 0x1F0B -ENCODING 7947 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 12 13 0 0 +STARTCHAR 006B +ENCODING 5319 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 6 1 0 BITMAP -D000 -D000 -8A00 -4A00 -0500 -0500 -0500 -0880 -0880 -0F80 -1040 -1040 -78F0 +7800 +8400 +8400 +8400 +8400 +7FC0 ENDCHAR -STARTCHAR 0x1F0C -ENCODING 7948 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 12 13 0 0 +STARTCHAR 006B +ENCODING 5320 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 0 BITMAP -C800 -C800 -5200 -9200 -0500 -0500 -0500 -0880 -0880 -0F80 -1040 -1040 -78F0 +1000 +3800 +1000 +0000 +7800 +8400 +8400 +8400 +8400 +7FC0 ENDCHAR -STARTCHAR 0x1F0D -ENCODING 7949 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 12 13 0 0 +STARTCHAR 006B +ENCODING 5321 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 7 1 0 BITMAP -C800 -C800 -9200 -5200 -0500 -0500 -0500 -0880 -0880 -0F80 -1040 -1040 -78F0 +4000 +EFF8 +4084 +0084 +0084 +0084 +0078 ENDCHAR -STARTCHAR 0x1F0E -ENCODING 7950 +STARTCHAR 006B +ENCODING 5322 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 7 1 0 +BITMAP +0008 +FF9C +0848 +0840 +0840 +0840 +0780 +ENDCHAR +STARTCHAR 006B +ENCODING 5323 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 7 1 0 +BITMAP +4000 +E780 +4840 +0840 +0840 +0840 +07FC +ENDCHAR +STARTCHAR 006B +ENCODING 5324 SWIDTH 720 0 DWIDTH 12 0 -BBX 12 17 0 0 +BBX 11 7 1 0 BITMAP -4800 -A800 -9000 -0000 -3000 -3000 -1200 -2200 -0500 -0500 -0500 -0880 -0880 -0F80 -1040 -1040 -78F0 +0040 +78E0 +8440 +8400 +8400 +8400 +7FC0 ENDCHAR -STARTCHAR 0x1F0F -ENCODING 7951 +STARTCHAR 006B +ENCODING 5325 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 10 1 0 +BITMAP +0100 +0380 +0100 +4000 +E780 +4840 +0840 +0840 +0840 +07FC +ENDCHAR +STARTCHAR 006B +ENCODING 5326 SWIDTH 720 0 DWIDTH 12 0 -BBX 12 17 0 0 +BBX 11 10 1 0 BITMAP -4800 -A800 -9000 -0000 -3000 -3000 -2200 -1200 -0500 -0500 -0500 -0880 -0880 -0F80 -1040 -1040 -78F0 +1000 +3800 +1000 +0040 +78E0 +8440 +8400 +8400 +8400 +7FC0 ENDCHAR -STARTCHAR C090 -ENCODING 7952 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR 006B +ENCODING 5327 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 0 BITMAP -60 -60 -20 -40 -00 -70 -90 -80 -60 -80 -88 -70 +4400 +EE00 +4400 +0000 +7800 +8400 +8400 +8400 +8400 +7FC0 ENDCHAR -STARTCHAR C090 -ENCODING 7953 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR char5251 +ENCODING 5328 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 4 1 7 BITMAP 60 -60 -40 -20 -00 -70 90 -80 -60 -80 -88 -70 -ENDCHAR -STARTCHAR C090 -ENCODING 7954 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 -BITMAP -D0 -D0 -48 -88 -00 -70 90 -80 -60 -80 -88 -70 +7C ENDCHAR -STARTCHAR C090 -ENCODING 7955 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR char5153 +ENCODING 5329 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 6 1 5 BITMAP -D0 -D0 -88 -48 -00 -70 -90 -80 -60 -80 -88 -70 +84 +84 +84 +84 +84 +78 ENDCHAR -STARTCHAR C090 -ENCODING 7956 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR char5251 +ENCODING 5330 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 4 1 7 BITMAP -C8 -C8 -50 -90 -00 -70 -90 -80 -60 -80 -88 -70 +18 +24 +24 +F8 ENDCHAR -STARTCHAR C090 -ENCODING 7957 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR 006B +ENCODING 5331 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 6 1 0 BITMAP -C8 -C8 -90 -50 -00 -70 -90 -80 -60 -80 -88 -70 +FF80 +0040 +0040 +0040 +0040 +0180 ENDCHAR -STARTCHAR 0x1F18 -ENCODING 7960 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 13 0 0 +STARTCHAR 006B +ENCODING 5332 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 0 BITMAP -C000 -C000 -5FF0 -8410 -0410 -0450 -0440 -07C0 -0448 -0448 -0410 -0410 -1FF0 +0400 +0A00 +0400 +0000 +7FC0 +8000 +8000 +8000 +8000 +6000 ENDCHAR -STARTCHAR 0x1F19 -ENCODING 7961 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 13 0 0 +STARTCHAR 006B +ENCODING 5333 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 6 1 0 BITMAP -C000 -C000 -9FF0 -4410 -0410 -0450 -0440 -07C0 -0448 -0448 -0410 -0410 -1FF0 +7FC0 +8000 +8000 +8000 +8000 +6000 ENDCHAR -STARTCHAR 0x1F1A -ENCODING 7962 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 13 0 0 +STARTCHAR 006B +ENCODING 5334 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 0 BITMAP -D000 -D000 -4FFC -8904 -0104 -0114 -0110 -01F0 -0112 -0112 -0104 -0104 -07FC +0400 +0E00 +0400 +0000 +7FC0 +8000 +8000 +8000 +8000 +6000 ENDCHAR -STARTCHAR 0x1F1B -ENCODING 7963 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 13 0 0 +STARTCHAR 006B +ENCODING 5335 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 6 1 0 BITMAP -D000 -D000 -8FFC -4904 -0104 -0114 -0110 -01F0 -0112 -0112 -0104 -0104 -07FC +0180 +0040 +0040 +0040 +0040 +FF80 ENDCHAR -STARTCHAR 0x1F1C -ENCODING 7964 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 13 0 0 +STARTCHAR 006B +ENCODING 5336 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 10 1 0 BITMAP -C800 -C800 -57FC -9104 -0104 -0114 -0110 -01F0 -0112 -0112 -0104 -0104 -07FC +0400 +0E00 +0400 +0000 +0180 +0040 +0040 +0040 +0040 +FF80 ENDCHAR -STARTCHAR 0x1F1D -ENCODING 7965 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 13 0 0 +STARTCHAR 006B +ENCODING 5337 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 10 1 0 BITMAP -C800 -C800 -97FC -5104 -0104 -0114 -0110 -01F0 -0112 -0112 -0104 -0104 -07FC +1100 +3B80 +1100 +0000 +0180 +0040 +0040 +0040 +0040 +FF80 ENDCHAR -STARTCHAR C090 -ENCODING 7968 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 +STARTCHAR 006B +ENCODING 5338 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 6 1 0 BITMAP -30 -30 -10 -20 -00 -98 -64 -44 -44 -44 -44 -44 -04 -04 -04 -04 +6000 +8000 +8000 +8000 +8000 +7FC0 ENDCHAR -STARTCHAR C090 -ENCODING 7969 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 +STARTCHAR 006B +ENCODING 5339 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 0 BITMAP -30 -30 -20 -10 -00 -98 -64 -44 -44 -44 -44 -44 -04 -04 -04 -04 +0400 +0E00 +0400 +0000 +6000 +8000 +8000 +8000 +8000 +7FC0 ENDCHAR -STARTCHAR C090 -ENCODING 7970 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 +STARTCHAR 006B +ENCODING 5340 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 7 1 0 BITMAP -68 -68 -24 -44 -00 -98 -64 -44 -44 -44 -44 -44 -04 -04 -04 -04 +4000 +EFF8 +4004 +0004 +0004 +0004 +0018 ENDCHAR -STARTCHAR C090 -ENCODING 7971 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 +STARTCHAR 006B +ENCODING 5341 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 7 1 0 BITMAP -68 -68 -44 -24 -00 -98 -64 -44 -44 -44 -44 -44 -04 -04 -04 -04 +0008 +FF9C +0048 +0040 +0040 +0040 +0180 ENDCHAR -STARTCHAR C090 -ENCODING 7972 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 +STARTCHAR 006B +ENCODING 5342 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 7 1 0 BITMAP -64 -64 -28 -48 -00 -98 -64 -44 -44 -44 -44 -44 -04 -04 -04 -04 +4000 +E7FC +4800 +0800 +0800 +0800 +0600 ENDCHAR -STARTCHAR C090 -ENCODING 7973 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 +STARTCHAR 006B +ENCODING 5343 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 7 1 0 BITMAP -64 -64 -48 -28 -00 -98 -64 -44 -44 -44 -44 -44 -04 -04 -04 -04 +0008 +7FDC +8008 +8000 +8000 +8000 +6000 ENDCHAR -STARTCHAR C130 -ENCODING 7974 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 20 1 -4 +STARTCHAR 006B +ENCODING 5344 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 10 1 0 BITMAP -48 -A8 -90 -00 -30 -30 -10 -20 -00 -98 -64 -44 -44 -44 -44 -44 -04 -04 -04 -04 +0040 +00E0 +0040 +4000 +E7FC +4800 +0800 +0800 +0800 +0600 ENDCHAR -STARTCHAR C130 -ENCODING 7975 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 20 1 -4 +STARTCHAR 006B +ENCODING 5345 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 10 1 0 BITMAP -48 -A8 -90 -00 -30 -30 -20 -10 -00 -98 -64 -44 -44 -44 -44 -44 -04 -04 -04 -04 +0400 +0E00 +0400 +0008 +7FDC +8008 +8000 +8000 +8000 +6000 ENDCHAR -STARTCHAR C072 -ENCODING 7976 +STARTCHAR 006B +ENCODING 5346 SWIDTH 900 0 DWIDTH 15 0 -BBX 14 13 0 0 +BBX 14 7 1 0 BITMAP -C000 -C000 -5F7C -8410 -0410 -0410 -0410 -07F0 -0410 -0410 -0410 -0410 -1F7C +4000 +E018 +4004 +0004 +0004 +0004 +0FF8 ENDCHAR -STARTCHAR C072 -ENCODING 7977 +STARTCHAR 006B +ENCODING 5347 SWIDTH 900 0 DWIDTH 15 0 -BBX 14 13 0 0 +BBX 14 7 1 0 BITMAP -C000 -C000 -9F7C -4410 -0410 -0410 -0410 -07F0 -0410 -0410 -0410 -0410 -1F7C +0008 +019C +0048 +0040 +0040 +0040 +FF80 ENDCHAR -STARTCHAR C072 -ENCODING 7978 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 13 0 0 +STARTCHAR 006B +ENCODING 5348 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 10 1 0 BITMAP -D000 -D000 -4FDF -8904 -0104 -0104 -0104 -01FC -0104 -0104 -0104 -0104 -07DF +0040 +00E0 +0040 +4000 +E018 +4004 +0004 +0004 +0004 +0FF8 ENDCHAR -STARTCHAR C072 -ENCODING 7979 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 13 0 0 +STARTCHAR 006B +ENCODING 5349 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 10 1 0 BITMAP -D000 -D000 -8FDF -4904 -0104 -0104 -0104 -01FC -0104 -0104 -0104 -0104 -07DF +0400 +0E00 +0400 +0008 +019C +0048 +0040 +0040 +0040 +FF80 ENDCHAR -STARTCHAR C072 -ENCODING 7980 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 13 0 0 +STARTCHAR 006B +ENCODING 5350 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 7 1 0 BITMAP -C800 -C800 -57DF -9104 -0104 -0104 -0104 -01FC -0104 -0104 -0104 -0104 -07DF +4000 +E600 +4800 +0800 +0800 +0800 +07FC ENDCHAR -STARTCHAR C072 -ENCODING 7981 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 13 0 0 +STARTCHAR 006B +ENCODING 5351 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 7 1 0 BITMAP -C800 -C800 -97DF -5104 -0104 -0104 -0104 -01FC -0104 -0104 -0104 -0104 -07DF +0008 +601C +8008 +8000 +8000 +8000 +7FC0 ENDCHAR -STARTCHAR 0x1F2E -ENCODING 7982 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 17 0 0 +STARTCHAR 006B +ENCODING 5352 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 10 1 0 BITMAP +0040 +00E0 +0040 +4000 +E600 4800 -A800 -9000 -0000 -3000 -3000 -17DF -2104 -0104 -0104 -0104 -01FC -0104 -0104 -0104 -0104 -07DF +0800 +0800 +0800 +07FC ENDCHAR -STARTCHAR 0x1F2F -ENCODING 7983 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 17 0 0 +STARTCHAR 006B +ENCODING 5353 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 10 1 0 BITMAP -4800 -A800 -9000 -0000 -3000 -3000 -27DF -1104 -0104 -0104 -0104 -01FC -0104 -0104 -0104 -0104 -07DF +0400 +0E00 +0400 +0008 +601C +8008 +8000 +8000 +8000 +7FC0 ENDCHAR -STARTCHAR C090 -ENCODING 7984 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 12 1 0 +STARTCHAR char5251 +ENCODING 5354 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 4 1 7 BITMAP 60 -60 -20 -40 -00 -40 -C0 -40 -40 -40 -50 -20 +80 +80 +7C ENDCHAR -STARTCHAR C090 -ENCODING 7985 +STARTCHAR char5355 +ENCODING 5355 SWIDTH 300 0 DWIDTH 5 0 -BBX 4 12 1 0 +BBX 4 7 1 4 BITMAP -60 -60 -40 -20 -00 -40 +30 C0 -40 -40 -40 -50 -20 -ENDCHAR -STARTCHAR C090 -ENCODING 7986 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 5 12 1 0 -BITMAP -D0 -D0 -48 -88 -00 -40 C0 -40 -40 -40 -50 -20 -ENDCHAR -STARTCHAR C090 -ENCODING 7987 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 5 12 1 0 -BITMAP -D0 -D0 -88 -48 -00 -40 +30 C0 -40 -40 -40 -50 -20 -ENDCHAR -STARTCHAR C090 -ENCODING 7988 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 5 12 1 0 -BITMAP -C8 -C8 -50 -90 -00 -40 C0 -40 -40 -40 -50 -20 +30 ENDCHAR -STARTCHAR C090 -ENCODING 7989 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 5 12 1 0 +STARTCHAR C087 +ENCODING 5356 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -C8 -C8 -90 -50 -00 -40 -C0 -40 -40 -40 -50 -20 +0380 +1C00 +E000 +7000 +0C00 +0380 +0C00 +7000 +E000 +1C00 +0380 ENDCHAR -STARTCHAR C090 -ENCODING 7990 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 5 16 1 0 +STARTCHAR 0079 +ENCODING 5357 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 11 1 0 BITMAP -48 -A8 -90 -00 -60 -60 -20 -40 -00 -40 -C0 -40 -40 +80 +80 +80 +80 40 -50 20 +1E +02 +02 +02 +02 ENDCHAR -STARTCHAR C090 -ENCODING 7991 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 5 16 1 0 +STARTCHAR 0079 +ENCODING 5358 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 0 BITMAP -48 -A8 -90 -00 -60 -60 -40 -20 +02 +05 +02 00 -40 -C0 -40 -40 -40 -50 -20 +02 +02 +02 +02 +04 +08 +F0 +80 +80 +80 +80 ENDCHAR -STARTCHAR C072 -ENCODING 7992 +STARTCHAR 0079 +ENCODING 5359 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 13 0 0 +BBX 7 11 1 0 BITMAP -C0 -C0 -5F -84 -04 -04 -04 -04 -04 -04 -04 +02 +02 +02 +02 04 -1F +08 +F0 +80 +80 +80 +80 ENDCHAR -STARTCHAR C072 -ENCODING 7993 +STARTCHAR 0079 +ENCODING 5360 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 13 0 0 +BBX 8 15 1 0 BITMAP -C0 -C0 -9F -44 -04 -04 -04 -04 -04 -04 -04 +02 +07 +02 +00 +02 +02 +02 +02 04 -1F +08 +F0 +80 +80 +80 +80 ENDCHAR -STARTCHAR C072 -ENCODING 7994 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 13 0 0 +STARTCHAR 0079 +ENCODING 5361 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 11 1 0 BITMAP -D000 -D000 -4FC0 -8900 -0100 -0100 -0100 -0100 -0100 -0100 -0100 -0100 -07C0 +02 +02 +02 +02 +1E +20 +40 +80 +80 +80 +80 ENDCHAR -STARTCHAR C072 -ENCODING 7995 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 13 0 0 +STARTCHAR 0079 +ENCODING 5362 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 0 BITMAP -D000 -D000 -8FC0 -4900 -0100 -0100 -0100 -0100 -0100 -0100 -0100 -0100 -07C0 +02 +07 +02 +00 +02 +02 +02 +02 +1E +20 +40 +80 +80 +80 +80 ENDCHAR -STARTCHAR C072 -ENCODING 7996 +STARTCHAR 0079 +ENCODING 5363 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 13 0 0 +BBX 10 15 1 0 BITMAP -C800 -C800 -57C0 -9100 -0100 -0100 -0100 -0100 -0100 -0100 -0100 -0100 -07C0 +0880 +1DC0 +0880 +0000 +0200 +0200 +0200 +0200 +1E00 +2000 +4000 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR C072 -ENCODING 7997 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 13 0 0 +STARTCHAR 0079 +ENCODING 5364 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 11 1 0 BITMAP -C800 -C800 -97C0 -5100 -0100 -0100 -0100 -0100 -0100 -0100 -0100 -0100 -07C0 +80 +80 +80 +80 +F0 +08 +04 +02 +02 +02 +02 ENDCHAR -STARTCHAR C072 -ENCODING 7998 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 17 0 0 +STARTCHAR 0079 +ENCODING 5365 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 0 BITMAP -4800 -A800 -9000 -0000 -3000 -3000 -17C0 -2100 -0100 -0100 -0100 -0100 -0100 -0100 -0100 -0100 -07C0 +40 +E0 +40 +00 +40 +40 +40 +40 +78 +04 +02 +01 +01 +01 +01 ENDCHAR -STARTCHAR C072 -ENCODING 7999 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 17 0 0 +STARTCHAR 0079 +ENCODING 5366 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP +0800 +0800 +0800 4800 -A800 -9000 -0000 -3000 -3000 -27C0 -1100 -0100 -0100 -0100 -0100 -0100 -0100 -0100 -0100 -07C0 +E400 +4200 +01E0 +0020 +0020 +0020 +0020 ENDCHAR -STARTCHAR C090 -ENCODING 8000 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR 0079 +ENCODING 5367 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -60 -60 -20 -40 -00 -70 -88 -88 -88 -88 -88 -70 +8000 +8000 +8000 +8040 +40E0 +2040 +1E00 +0200 +0200 +0200 +0200 ENDCHAR -STARTCHAR C090 -ENCODING 8001 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR 0079 +ENCODING 5368 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -60 -60 -40 -20 -00 -70 -88 -88 -88 -88 -88 -70 +0020 +0020 +0020 +4020 +E040 +4080 +0F00 +0800 +0800 +0800 +0800 ENDCHAR -STARTCHAR C090 -ENCODING 8002 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR 0079 +ENCODING 5369 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -D0 -D0 -48 -88 -00 -70 -88 -88 -88 -88 -88 -70 +0200 +0200 +0200 +0240 +04E0 +0840 +F000 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR C090 -ENCODING 8003 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR 0079 +ENCODING 5370 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 15 1 0 BITMAP -D0 -D0 -88 -48 -00 -70 -88 -88 -88 -88 -88 -70 +0020 +0070 +0020 +0000 +0020 +0020 +0020 +4020 +E040 +4080 +0F00 +0800 +0800 +0800 +0800 ENDCHAR -STARTCHAR C090 -ENCODING 8004 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR 0079 +ENCODING 5371 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 BITMAP -C8 -C8 -50 -90 -00 -70 -88 -88 -88 -88 -88 -70 +0200 +0700 +0200 +0000 +0200 +0200 +0200 +0240 +04E0 +0840 +F000 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR C090 -ENCODING 8005 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR 0079 +ENCODING 5372 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -C8 -C8 -90 -50 -00 -70 -88 -88 -88 -88 -88 -70 +0020 +0020 +0020 +0020 +41E0 +E200 +4400 +0800 +0800 +0800 +0800 ENDCHAR -STARTCHAR C079 -ENCODING 8008 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 13 0 0 +STARTCHAR 0079 +ENCODING 5373 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -C000 -C000 -4F00 -9080 -2040 -4020 -4020 -4020 -4020 -4020 -2040 -1080 -0F00 +0200 +0200 +0200 +0200 +1E40 +20E0 +4040 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR C079 -ENCODING 8009 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 13 0 0 +STARTCHAR 0079 +ENCODING 5374 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 15 1 0 BITMAP -C000 -C000 -8F00 -5080 -2040 -4020 -4020 -4020 -4020 -4020 -2040 -1080 -0F00 +0020 +0070 +0020 +0000 +0020 +0020 +0020 +0020 +41E0 +E200 +4400 +0800 +0800 +0800 +0800 ENDCHAR -STARTCHAR 0x1F4A -ENCODING 8010 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 13 0 0 +STARTCHAR 0079 +ENCODING 5375 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 BITMAP -D000 -D000 -49E0 -8A10 -0408 -0804 -0804 -0804 -0804 -0804 -0408 -0210 -01E0 +0200 +0700 +0200 +0000 +0200 +0200 +0200 +0200 +1E40 +20E0 +4040 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR 0x1F4B -ENCODING 8011 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 13 0 0 +STARTCHAR 0079 +ENCODING 5376 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 BITMAP -D000 -D000 -89E0 -4A10 -0408 -0804 -0804 -0804 -0804 -0804 -0408 -0210 -01E0 +0400 +0400 +0400 +0400 +4780 +E040 +4020 +0010 +0010 +0010 +0010 ENDCHAR -STARTCHAR 0x1F4C -ENCODING 8012 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 13 0 0 +STARTCHAR 0079 +ENCODING 5377 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -C800 -C800 -51E0 -9210 -0408 -0804 -0804 -0804 -0804 -0804 -0408 -0210 -01E0 +8000 +8000 +8000 +8000 +F040 +08E0 +0440 +0200 +0200 +0200 +0200 ENDCHAR -STARTCHAR 0x1F4D -ENCODING 8013 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 13 0 0 +STARTCHAR 0079 +ENCODING 5378 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 15 1 0 BITMAP -C800 -C800 -91E0 -5210 -0408 -0804 -0804 -0804 -0804 -0804 -0408 -0210 -01E0 +0020 +0070 +0020 +0000 +0800 +0800 +0800 +0800 +4F00 +E080 +4040 +0020 +0020 +0020 +0020 ENDCHAR -STARTCHAR C117 -ENCODING 8016 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR 0079 +ENCODING 5379 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 BITMAP -30 -30 -10 -20 -00 -C8 -44 -44 -44 -44 -48 -30 +0200 +0700 +0200 +0000 +8000 +8000 +8000 +8000 +F040 +08E0 +0440 +0200 +0200 +0200 +0200 ENDCHAR -STARTCHAR C117 -ENCODING 8017 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR 0079 +ENCODING 5380 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -30 -30 +0800 +0800 +4800 +E800 +4F00 +0080 +4040 +E020 +4020 +0020 +0020 +ENDCHAR +STARTCHAR char5381 +ENCODING 5381 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 6 1 5 +BITMAP +80 +80 +C0 20 10 -00 -C8 -44 -44 -44 -44 -48 -30 +10 ENDCHAR -STARTCHAR C117 -ENCODING 8018 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR char5382 +ENCODING 5382 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 7 1 4 BITMAP -68 -68 -24 -44 -00 -C8 -44 -44 -44 -44 -48 -30 +70 +88 +80 +70 +08 +88 +70 ENDCHAR -STARTCHAR C117 -ENCODING 8019 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR char5381 +ENCODING 5383 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 6 1 5 BITMAP -68 -68 -44 -24 -00 -C8 -44 -44 -44 -44 -48 +10 +10 30 +40 +80 +80 ENDCHAR -STARTCHAR C117 -ENCODING 8020 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR char5384 +ENCODING 5384 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 1 6 BITMAP -64 -64 -28 -48 -00 -C8 -44 -44 -44 -44 -48 -30 +80 +80 +80 +40 +38 ENDCHAR -STARTCHAR C117 -ENCODING 8021 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR char5381 +ENCODING 5385 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 8 1 3 BITMAP -64 -64 -48 -28 -00 -C8 -44 -44 -44 -44 -48 +80 +80 +C0 +20 +10 30 +50 +20 ENDCHAR -STARTCHAR C117 -ENCODING 8022 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 0 +STARTCHAR char5381 +ENCODING 5386 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 8 1 3 BITMAP -48 -A8 -90 -00 -30 -30 10 -20 -00 -C8 -44 -44 -44 -44 -48 +10 30 +40 +80 +C0 +A0 +40 ENDCHAR -STARTCHAR C117 -ENCODING 8023 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 0 +STARTCHAR char5381 +ENCODING 5387 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 14 0 1 BITMAP -48 -A8 -90 +40 +E0 +40 00 -30 -30 -20 +40 +40 +60 10 +08 +08 00 -C8 -44 -44 -44 -44 -48 -30 -ENDCHAR -STARTCHAR 0x1F59 -ENCODING 8025 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 12 0 0 -BITMAP -C000 -FC78 -4820 -8440 -0440 -0280 -0380 -0100 -0100 -0100 -0100 -07C0 -ENDCHAR -STARTCHAR 0x1F5B -ENCODING 8027 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 12 0 0 -BITMAP -D000 -D78F -8904 -4888 -0088 -0050 -0070 -0020 -0020 -0020 -0020 -00F8 +08 +1C +08 ENDCHAR -STARTCHAR 0x1F5D -ENCODING 8029 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 12 0 0 +STARTCHAR C065 +ENCODING 5388 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 0 0 BITMAP -C800 -CF8F -9104 -5088 -0088 -0050 -0070 -0020 -0020 -0020 -0020 -00F8 +400000 +E00000 +400000 +000000 +400180 +400600 +601800 +106000 +088000 +090000 +008000 +086000 +1C1800 +080600 +000180 ENDCHAR -STARTCHAR 0x1F5F -ENCODING 8031 +STARTCHAR 0074 +ENCODING 5389 SWIDTH 960 0 DWIDTH 16 0 -BBX 15 16 0 0 +BBX 15 15 0 0 BITMAP -4800 -A800 -9000 +4000 +E000 +4000 0000 -3000 -3F1E -2208 -1110 -0110 -00A0 -00E0 -0040 -0040 -0040 -0040 -01F0 +403E +4040 +6080 +1100 +0900 +0900 +0100 +0900 +1C80 +0840 +003E ENDCHAR -STARTCHAR C117 -ENCODING 8032 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 12 1 0 +STARTCHAR 0066 +ENCODING 5390 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 15 0 0 BITMAP -1800 -1800 -0800 -1000 +4000 +E000 +4000 0000 -2200 4100 -8080 +4100 +6100 +1100 +0900 +09F0 +0108 +0908 +1D08 +0908 +00F0 +ENDCHAR +STARTCHAR 0066 +ENCODING 5391 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 15 0 0 +BITMAP +4000 +E000 +4000 +0000 +4100 +4100 +6100 +1100 +0900 +0900 +0100 +0900 +1D08 +0908 +00F0 +ENDCHAR +STARTCHAR char5383 +ENCODING 5392 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 9 6 1 0 +BITMAP +7080 8880 8880 8880 -7700 +8880 +8700 ENDCHAR -STARTCHAR C117 -ENCODING 8033 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 12 1 0 +STARTCHAR char5383 +ENCODING 5393 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 9 6 1 0 BITMAP -1800 -1800 -1000 -0800 -0000 -2200 -4100 -8080 +8700 8880 8880 8880 -7700 +8880 +7080 ENDCHAR -STARTCHAR C117 -ENCODING 8034 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 12 1 0 +STARTCHAR char5383 +ENCODING 5394 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 9 10 1 0 BITMAP -3400 -3400 -1200 -2200 +0800 +1C00 +0800 0000 -2200 -4100 -8080 +8700 8880 8880 8880 -7700 +8880 +7080 ENDCHAR -STARTCHAR C117 -ENCODING 8035 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 12 1 0 +STARTCHAR char5383 +ENCODING 5395 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 0 BITMAP -3400 -3400 -2200 -1200 -0000 -2200 -4100 -8080 -8880 -8880 -8880 -7700 +F0 +08 +08 +08 +08 +70 +80 +80 +80 +80 +78 ENDCHAR -STARTCHAR C117 -ENCODING 8036 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 12 1 0 +STARTCHAR char5383 +ENCODING 5396 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 15 1 0 BITMAP -3200 -3200 -1400 -2400 -0000 -2200 -4100 -8080 +20 +70 +20 +00 +F0 +08 +08 +08 +08 +70 +80 +80 +80 +80 +78 +ENDCHAR +STARTCHAR char5383 +ENCODING 5397 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 0 +BITMAP +78 +80 +80 +80 +80 +70 +08 +08 +08 +08 +F0 +ENDCHAR +STARTCHAR char5383 +ENCODING 5398 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 15 1 0 +BITMAP +20 +70 +20 +00 +78 +80 +80 +80 +80 +70 +08 +08 +08 +08 +F0 +ENDCHAR +STARTCHAR char5383 +ENCODING 5399 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 7 1 0 +BITMAP +4000 +E708 +4888 +0888 +0888 +0888 +0870 +ENDCHAR +STARTCHAR char5383 +ENCODING 5400 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 7 1 0 +BITMAP +0010 +70B8 +8890 8880 8880 8880 -7700 +8700 ENDCHAR -STARTCHAR C117 -ENCODING 8037 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 12 1 0 +STARTCHAR char5383 +ENCODING 5401 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 13 7 1 0 BITMAP -3200 -3200 -2400 -1400 -0000 -2200 -4100 -8080 +4000 +E870 +4888 +0888 +0888 +0888 +0708 +ENDCHAR +STARTCHAR char5383 +ENCODING 5402 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 13 7 1 0 +BITMAP +0010 +8738 +8890 8880 8880 8880 -7700 +7080 ENDCHAR -STARTCHAR C117 -ENCODING 8038 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 16 1 0 +STARTCHAR char5383 +ENCODING 5403 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 13 10 1 0 BITMAP -2400 -5400 -4800 -0000 -1800 -1800 +0080 +01C0 +0080 +4000 +E870 +4888 +0888 +0888 +0888 +0708 +ENDCHAR +STARTCHAR char5383 +ENCODING 5404 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 13 10 1 0 +BITMAP 0800 -1000 -0000 -2200 -4100 -8080 +1C00 +0800 +0010 +8738 +8890 8880 8880 8880 -7700 +7080 ENDCHAR -STARTCHAR C117 -ENCODING 8039 +STARTCHAR char5383 +ENCODING 5405 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 16 1 0 +BBX 9 11 1 0 BITMAP -2400 -5400 +0F00 +0080 +0080 +0080 +4080 +E700 4800 -0000 -1800 -1800 -1000 0800 -0000 -2200 -4100 -8080 -8880 -8880 -8880 -7700 -ENDCHAR -STARTCHAR 0x1F68 -ENCODING 8040 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 13 0 0 -BITMAP -C000 -C000 -4F80 -9040 -2020 -2020 -2020 -2020 -1040 -1040 -0880 -28A0 -38E0 +0800 +0800 +0780 ENDCHAR -STARTCHAR 0x1F69 -ENCODING 8041 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 13 0 0 +STARTCHAR char5383 +ENCODING 5406 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -C000 -C000 -8F80 -5040 -2020 -2020 -2020 -2020 -1040 -1040 -0880 -28A0 -38E0 +F000 +0800 +0800 +0800 +0900 +7380 +8100 +8000 +8000 +8000 +7800 ENDCHAR -STARTCHAR 0x1F6A -ENCODING 8042 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 13 0 0 +STARTCHAR char5383 +ENCODING 5407 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 BITMAP -D000 -D000 -49F0 -8A08 -0404 -0404 -0404 -0404 -0208 -0208 -0110 -0514 -071C +0200 +0700 +0200 +0000 +0F00 +0080 +0080 +0080 +4080 +E700 +4800 +0800 +0800 +0800 +0780 ENDCHAR -STARTCHAR 0x1F6B -ENCODING 8043 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 13 0 0 +STARTCHAR char5383 +ENCODING 5408 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 BITMAP -D000 -D000 -89F0 -4A08 -0404 -0404 -0404 -0404 -0208 -0208 -0110 -0514 -071C +2000 +7000 +2000 +0000 +F000 +0800 +0800 +0800 +0900 +7380 +8100 +8000 +8000 +8000 +7800 ENDCHAR -STARTCHAR 0x1F6C -ENCODING 8044 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 13 0 0 +STARTCHAR char5383 +ENCODING 5409 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -C800 -C800 -53E0 -9410 -0808 -0808 -0808 -0808 -0410 -0410 -0220 -0A28 -0E38 +0780 +0800 +0800 +0800 +4800 +E700 +4080 +0080 +0080 +0080 +0F00 ENDCHAR -STARTCHAR 0x1F6D -ENCODING 8045 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 13 0 0 +STARTCHAR char5383 +ENCODING 5410 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -C800 -C800 -93E0 -5410 -0808 -0808 -0808 -0808 -0410 -0410 -0220 -0A28 -0E38 +7800 +8000 +8000 +8000 +8100 +7380 +0900 +0800 +0800 +0800 +F000 ENDCHAR -STARTCHAR 0x1F6E -ENCODING 8046 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 17 0 0 +STARTCHAR char5383 +ENCODING 5411 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 BITMAP -4800 -A800 -9000 +0200 +0700 +0200 0000 -3000 -3000 -13E0 -2410 -0808 -0808 -0808 -0808 -0410 -0410 -0220 -0A28 -0E38 +0780 +0800 +0800 +0800 +4800 +E700 +4080 +0080 +0080 +0080 +0F00 ENDCHAR -STARTCHAR 0x1F6F -ENCODING 8047 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 17 0 0 +STARTCHAR char5383 +ENCODING 5412 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 BITMAP -4800 -A800 -9000 +2000 +7000 +2000 0000 -3000 -3000 -23E0 -1410 -0808 -0808 -0808 -0808 -0410 -0410 -0220 -0A28 -0E38 +7800 +8000 +8000 +8000 +8100 +7380 +0900 +0800 +0800 +0800 +F000 ENDCHAR -STARTCHAR C138 -ENCODING 8048 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 12 1 0 +STARTCHAR char5382 +ENCODING 5413 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 4 BITMAP -20 -20 +70 +80 +80 +60 10 10 -00 -62 -92 -94 -8C -88 -98 -66 +E0 ENDCHAR -STARTCHAR C138 -ENCODING 8049 +STARTCHAR 00F7 +ENCODING 5414 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 12 1 0 +BBX 6 11 1 0 BITMAP +08 10 -10 -20 20 -00 -62 -92 -94 -8C -88 -98 -66 +40 +80 +FC +04 +04 +04 +04 +04 ENDCHAR -STARTCHAR C090 -ENCODING 8050 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR 00F7 +ENCODING 5415 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 15 0 0 BITMAP 40 +A0 40 -20 -20 00 -70 -90 -80 -60 -80 -88 -70 +20 +10 +08 +04 +02 +7E +40 +40 +40 +40 +40 ENDCHAR -STARTCHAR C090 -ENCODING 8051 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 12 1 0 +STARTCHAR 00F7 +ENCODING 5416 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 BITMAP -10 -10 -20 +40 20 -00 -70 -90 +10 +08 +04 +FC 80 -60 80 -88 -70 +80 +80 +80 ENDCHAR -STARTCHAR C090 -ENCODING 8052 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 +STARTCHAR 00F7 +ENCODING 5417 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 15 0 0 BITMAP -20 +40 +E0 +40 +00 20 10 -10 -00 -98 -64 -44 -44 -44 -44 -44 +08 +04 +02 +7E +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR 00F7 +ENCODING 5418 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 +BITMAP 04 04 04 04 +04 +FC +80 +40 +20 +10 +08 ENDCHAR -STARTCHAR C090 -ENCODING 8053 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 +STARTCHAR 00F7 +ENCODING 5419 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 15 1 0 BITMAP -10 -10 -20 -20 +04 +0E +04 00 -98 -64 -44 -44 -44 -44 -44 04 04 04 04 +04 +FC +80 +40 +20 +10 +08 ENDCHAR -STARTCHAR C090 -ENCODING 8054 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 11 1 0 +STARTCHAR 00F7 +ENCODING 5420 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 +BITMAP +1100 +3B80 +1100 +0000 +0400 +0400 +0400 +0400 +0400 +FC00 +8000 +4000 +2000 +1000 +0800 +ENDCHAR +STARTCHAR 00F7 +ENCODING 5421 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 BITMAP 80 80 -40 -00 -40 -C0 -40 -40 -40 -50 +80 +80 +80 +FC +04 +08 +10 20 +40 ENDCHAR -STARTCHAR C090 -ENCODING 8055 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 11 1 0 +STARTCHAR 00F7 +ENCODING 5422 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 15 0 0 BITMAP -20 -20 40 -00 +E0 40 -C0 +00 40 40 40 -50 -20 -ENDCHAR -STARTCHAR C090 -ENCODING 8056 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 0 -BITMAP 40 40 +7E +02 +04 +08 +10 20 -00 -70 -88 -88 -88 -88 -88 -70 ENDCHAR -STARTCHAR C090 -ENCODING 8057 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 0 +STARTCHAR 00F7 +ENCODING 5423 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -20 -20 -40 -00 -70 -88 -88 -88 -88 -88 -70 +0080 +0100 +0200 +0400 +4800 +EFC0 +4040 +0040 +0040 +0040 +0040 ENDCHAR -STARTCHAR C117 -ENCODING 8058 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 11 1 0 +STARTCHAR 00F7 +ENCODING 5424 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -20 -20 -10 -00 -C8 -44 -44 -44 -44 -48 -30 +0800 +1000 +2000 +4000 +8080 +FDC0 +0480 +0400 +0400 +0400 +0400 ENDCHAR -STARTCHAR C117 -ENCODING 8059 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 11 1 0 +STARTCHAR 00F7 +ENCODING 5425 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -10 -10 -20 -00 -C8 -44 -44 -44 -44 -48 -30 +0400 +0200 +0100 +0080 +4040 +EFC0 +4800 +0800 +0800 +0800 +0800 ENDCHAR -STARTCHAR C117 -ENCODING 8060 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 11 1 0 +STARTCHAR 00F7 +ENCODING 5426 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -1000 +4000 +2000 1000 0800 -0000 -2200 -4100 +0480 +FDC0 8080 -8880 -8880 -8880 -7700 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR C117 -ENCODING 8061 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 11 1 0 +STARTCHAR 00F7 +ENCODING 5427 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -0400 +0800 +1C00 +0800 +0000 0400 +0200 +0100 +0080 +4040 +EFC0 +4800 +0800 +0800 0800 +0800 +ENDCHAR +STARTCHAR 00F7 +ENCODING 5428 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 15 0 0 +BITMAP +4000 +E000 +4000 0000 -2200 -4100 -8080 -8880 -8880 -8880 -7700 +2000 +1000 +0800 +0400 +0240 +7EE0 +4040 +4000 +4000 +4000 +4000 ENDCHAR -STARTCHAR C130 -ENCODING 8064 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 17 1 -5 +STARTCHAR 00F7 +ENCODING 5429 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -18 -18 -08 -10 -00 -62 -92 -94 -8C -88 -98 -66 -00 -60 -20 -28 -10 +0040 +0040 +0040 +0040 +4040 +EFC0 +4800 +0400 +0200 +0100 +0080 ENDCHAR -STARTCHAR C129 -ENCODING 8065 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 17 1 -5 +STARTCHAR 00F7 +ENCODING 5430 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -30 -30 -20 -10 -00 -62 -92 -94 -8C -88 -98 -66 -00 -60 -20 -28 -10 +0400 +0400 +0400 +0400 +0480 +FDC0 +8080 +4000 +2000 +1000 +0800 ENDCHAR -STARTCHAR C138 -ENCODING 8066 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 17 1 -5 +STARTCHAR 00F7 +ENCODING 5431 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 BITMAP -68 -68 -24 -44 -00 -62 -92 -94 -8C -88 -98 -66 -00 -60 -20 -28 -10 +0040 +00E0 +0040 +0000 +0040 +0040 +0040 +0040 +4040 +EFC0 +4800 +0400 +0200 +0100 +0080 ENDCHAR -STARTCHAR C138 -ENCODING 8067 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 17 1 -5 +STARTCHAR 00F7 +ENCODING 5432 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -68 -68 -44 -24 -00 -62 -92 -94 -8C -88 -98 -66 -00 -60 -20 -28 -10 -ENDCHAR -STARTCHAR C138 -ENCODING 8068 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 17 1 -5 -BITMAP -64 -64 -28 -48 -00 -62 -92 -94 -8C -88 -98 -66 -00 -60 -20 -28 -10 +0400 +0E00 +0400 +0000 +0400 +0400 +0400 +0400 +0480 +FDC0 +8080 +4000 +2000 +1000 +0800 ENDCHAR -STARTCHAR C138 -ENCODING 8069 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 17 1 -5 +STARTCHAR 00F7 +ENCODING 5433 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -64 -64 -48 -28 -00 -62 -92 -94 -8C -88 -98 -66 -00 -60 -20 -28 -10 +0800 +0800 +0800 +0800 +4800 +EFC0 +4040 +0080 +0100 +0200 +0400 ENDCHAR -STARTCHAR C130 -ENCODING 8070 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 21 1 -5 +STARTCHAR 00F7 +ENCODING 5434 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -24 -54 -48 -00 -18 -18 -08 -10 -00 -62 -92 -94 -8C -88 -98 -66 -00 -60 -20 -28 -10 +8000 +8000 +8000 +8000 +8080 +FDC0 +0480 +0800 +1000 +2000 +4000 ENDCHAR -STARTCHAR C129 -ENCODING 8071 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 21 1 -5 +STARTCHAR 00F7 +ENCODING 5435 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -24 -54 -48 -00 -30 -30 -20 -10 -00 -62 -92 -94 -8C -88 -98 -66 -00 -60 -20 -28 -10 +0800 +1C00 +0800 +0000 +0800 +0800 +0800 +0800 +4800 +EFC0 +4040 +0080 +0100 +0200 +0400 ENDCHAR -STARTCHAR C065 -ENCODING 8072 +STARTCHAR 00F7 +ENCODING 5436 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 17 0 -4 +BBX 11 15 0 0 BITMAP -6000 -6000 -2400 -4400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 -0C00 +4000 +E000 +4000 +0000 +4000 +4000 +4000 +4000 +4040 +7EE0 +0240 0400 -0500 -0200 +0800 +1000 +2000 ENDCHAR -STARTCHAR C065 -ENCODING 8073 +STARTCHAR 00F7 +ENCODING 5437 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 17 0 -4 +BBX 10 11 1 0 BITMAP -6000 -6000 -4400 -2400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 -0C00 -0400 -0500 +0800 +0800 +4800 +E800 +4800 +0FC0 +4040 +E080 +4100 0200 +0400 ENDCHAR -STARTCHAR 0x1F8A -ENCODING 8074 +STARTCHAR char5438 +ENCODING 5438 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 6 1 5 +BITMAP +80 +80 +E0 +20 +40 +80 +ENDCHAR +STARTCHAR char5355 +ENCODING 5439 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 7 4 1 7 +BITMAP +6C +6C +92 +92 +ENDCHAR +STARTCHAR char5161 +ENCODING 5440 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 5 5 1 6 +BITMAP +20 +20 +F8 +20 +20 +ENDCHAR +STARTCHAR char5441 +ENCODING 5441 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 6 1 5 +BITMAP +84 +48 +30 +30 +48 +84 +ENDCHAR +STARTCHAR 0045 +ENCODING 5442 SWIDTH 720 0 DWIDTH 12 0 -BBX 12 17 0 -4 +BBX 10 6 1 0 BITMAP -D000 -D000 -4A00 -8A00 -0500 -0500 -0500 -0880 -0880 -0F80 -1040 -1040 -78F0 -0600 -0200 -0280 -0100 +83C0 +8200 +8200 +8200 +4400 +3800 ENDCHAR -STARTCHAR 0x1F8B -ENCODING 8075 +STARTCHAR 0045 +ENCODING 5443 SWIDTH 720 0 DWIDTH 12 0 -BBX 12 17 0 -4 +BBX 10 6 1 0 BITMAP -D000 -D000 -8A00 -4A00 -0500 -0500 -0500 -0880 -0880 -0F80 +F040 1040 1040 -78F0 -0600 -0200 -0280 -0100 +1040 +0880 +0700 ENDCHAR -STARTCHAR 0x1F8C -ENCODING 8076 +STARTCHAR 0045 +ENCODING 5444 SWIDTH 720 0 DWIDTH 12 0 -BBX 12 17 0 -4 +BBX 10 6 1 0 BITMAP -C800 -C800 -5200 -9200 -0500 -0500 -0500 -0880 +0700 0880 -0F80 1040 1040 -78F0 -0600 -0200 -0280 -0100 +1040 +F040 ENDCHAR -STARTCHAR 0x1F8D -ENCODING 8077 +STARTCHAR 0045 +ENCODING 5445 SWIDTH 720 0 DWIDTH 12 0 -BBX 12 17 0 -4 +BBX 10 10 1 0 BITMAP -C800 -C800 -9200 -5200 -0500 -0500 -0500 -0880 -0880 -0F80 -1040 -1040 -78F0 -0600 -0200 -0280 -0100 +1000 +2800 +1000 +0000 +3800 +4400 +8200 +8200 +8200 +83C0 ENDCHAR -STARTCHAR 0x1F8E -ENCODING 8078 +STARTCHAR 0045 +ENCODING 5446 SWIDTH 720 0 DWIDTH 12 0 -BBX 12 21 0 -4 +BBX 10 6 1 0 BITMAP -4800 -A800 -9000 -0000 -3000 -3000 -1200 -2200 -0500 -0500 -0500 -0880 -0880 -0F80 -1040 -1040 -78F0 -0600 -0200 -0280 -0100 +3800 +4400 +8200 +8200 +8200 +83C0 ENDCHAR -STARTCHAR 0x1F8F -ENCODING 8079 +STARTCHAR 0045 +ENCODING 5447 SWIDTH 720 0 DWIDTH 12 0 -BBX 12 21 0 -4 +BBX 10 10 1 0 BITMAP -4800 -A800 -9000 +1000 +3800 +1000 0000 -3000 -3000 -2200 -1200 -0500 -0500 -0500 -0880 -0880 -0F80 -1040 -1040 -78F0 -0600 -0200 -0280 -0100 +3800 +4400 +8200 +8200 +8200 +83C0 ENDCHAR -STARTCHAR C090 -ENCODING 8080 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 +STARTCHAR 0044 +ENCODING 5448 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 BITMAP -30 -30 -10 -20 -00 -98 -64 -44 -44 -44 -44 -44 +F0 +08 04 -C4 -44 -64 +04 +04 +08 +F0 +80 +80 +80 +80 ENDCHAR -STARTCHAR C090 -ENCODING 8081 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 +STARTCHAR 0044 +ENCODING 5449 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 15 1 0 BITMAP -30 -30 20 -10 +70 +20 00 -98 -64 -44 -44 -44 -44 -44 +F0 +08 04 -C4 -44 -64 -ENDCHAR -STARTCHAR C090 -ENCODING 8082 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 -BITMAP -68 -68 -24 -44 -00 -98 -64 -44 -44 -44 -44 -44 04 -C4 -44 -64 -ENDCHAR -STARTCHAR C090 -ENCODING 8083 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 -BITMAP -68 -68 -44 -24 -00 -98 -64 -44 -44 -44 -44 -44 04 -C4 -44 -64 +08 +F0 +80 +80 +80 +80 ENDCHAR -STARTCHAR C090 -ENCODING 8084 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 +STARTCHAR 0044 +ENCODING 5450 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 BITMAP -64 -64 -28 -48 -00 -98 -64 -44 -44 -44 -44 -44 +80 +80 +80 +80 +F0 +08 04 -C4 -44 -64 -ENDCHAR -STARTCHAR C090 -ENCODING 8085 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 16 1 -4 -BITMAP -64 -64 -48 -28 -00 -98 -64 -44 -44 -44 -44 -44 04 -C4 -44 -64 +04 +08 +F0 ENDCHAR -STARTCHAR C130 -ENCODING 8086 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 20 1 -4 +STARTCHAR 0044 +ENCODING 5451 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 BITMAP -48 -A8 -90 -00 -30 -30 -10 -20 -00 -98 -64 -44 -44 -44 -44 -44 +3C +40 +80 +80 +80 +40 +3C 04 -C4 -44 -64 +04 +04 +04 ENDCHAR -STARTCHAR C130 -ENCODING 8087 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 20 1 -4 +STARTCHAR 0044 +ENCODING 5452 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 15 1 0 BITMAP -48 -A8 -90 -00 -30 -30 -20 10 +38 +10 00 -98 -64 -44 -44 -44 -44 -44 +3C +40 +80 +80 +80 +40 +3C 04 -C4 -44 -64 +04 +04 +04 ENDCHAR -STARTCHAR C072 -ENCODING 8088 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 18 0 -5 +STARTCHAR 0044 +ENCODING 5453 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 BITMAP -C000 -C000 -5F7C -8410 -0410 -0410 -0410 -07F0 -0410 -0410 -0410 -0410 -1F7C -0000 -0180 -0080 -00A0 -0040 +04 +04 +04 +04 +3C +40 +80 +80 +80 +40 +3C ENDCHAR -STARTCHAR C072 -ENCODING 8089 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 18 0 -5 +STARTCHAR 0044 +ENCODING 5454 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -C000 -C000 -9F7C -4410 -0410 -0410 -0410 -07F0 -0410 -0410 -0410 -0410 -1F7C +0100 +0380 +0100 0000 -00C0 +03C0 +0400 +0800 +0800 +4800 +E400 +43C0 0040 -0050 -0020 -ENDCHAR -STARTCHAR C072 -ENCODING 8090 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 18 0 -5 -BITMAP -D000 -D000 -4FDF -8904 -0104 -0104 -0104 -01FC -0104 -0104 -0104 -0104 -07DF -0000 -00C0 0040 -0050 -0020 -ENDCHAR -STARTCHAR C072 -ENCODING 8091 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 18 0 -5 -BITMAP -D000 -D000 -8FDF -4904 -0104 -0104 -0104 -01FC -0104 -0104 -0104 -0104 -07DF -0000 -00C0 0040 -0050 -0020 -ENDCHAR -STARTCHAR C072 -ENCODING 8092 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 18 0 -5 -BITMAP -C800 -C800 -57DF -9104 -0104 -0104 -0104 -01FC -0104 -0104 -0104 -0104 -07DF -0000 -00C0 0040 -0050 -0020 ENDCHAR -STARTCHAR C072 -ENCODING 8093 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 18 0 -5 +STARTCHAR 0044 +ENCODING 5455 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -C800 -C800 -97DF -5104 -0104 -0104 -0104 -01FC -0104 -0104 -0104 -0104 -07DF +1000 +3800 +1000 0000 -00C0 -0040 -0050 -0020 +3C00 +4000 +8000 +8000 +8080 +41C0 +3C80 +0400 +0400 +0400 +0400 ENDCHAR -STARTCHAR 0x1F9E -ENCODING 8094 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 22 0 -5 +STARTCHAR char5456 +ENCODING 5456 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 6 1 5 BITMAP -4800 -A800 -9000 -0000 -3000 -3000 -17DF -2104 -0104 -0104 -0104 -01FC -0104 -0104 -0104 -0104 -07DF -0000 -00C0 -0040 -0050 -0020 +60 +80 +80 +60 +20 +20 ENDCHAR -STARTCHAR 0x1F9F -ENCODING 8095 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 22 0 -5 +STARTCHAR char5355 +ENCODING 5457 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 4 BITMAP -4800 -A800 -9000 -0000 -3000 -3000 -27DF -1104 -0104 -0104 -0104 -01FC -0104 -0104 -0104 -0104 -07DF -0000 -00C0 -0040 -0050 -0020 +C0 +30 +30 +C0 +30 +30 +C0 ENDCHAR -STARTCHAR C117 -ENCODING 8096 +STARTCHAR C087 +ENCODING 5458 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 17 1 -5 +BBX 9 11 1 0 BITMAP +E000 +1C00 +0380 +0700 1800 +E000 1800 -0800 -1000 -0000 -2200 +0700 +0380 +1C00 +E000 +ENDCHAR +STARTCHAR 0046 +ENCODING 5459 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +6000 +9080 +9080 +E100 4100 -8080 -8880 -8880 -8880 -7700 -0000 -1800 +6200 +2200 +1400 +1400 0800 -0A00 -0400 +0800 ENDCHAR -STARTCHAR C117 -ENCODING 8097 +STARTCHAR 0046 +ENCODING 5460 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 17 1 -5 +BBX 9 15 1 0 BITMAP -1800 -1800 -1000 0800 +1400 +0800 0000 +0800 +0800 +1400 +1400 2200 +2200 4100 -8080 -8880 -8880 -8880 -7700 -0000 -1800 -0800 -0A00 -0400 +E100 +9080 +9080 +6000 ENDCHAR -STARTCHAR C117 -ENCODING 8098 +STARTCHAR 0046 +ENCODING 5461 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 17 1 -5 +BBX 9 11 1 0 BITMAP -3400 -3400 -1200 -2200 -0000 -2200 -4100 -8080 -8880 -8880 -8880 -7700 -0000 -1800 0800 -0A00 -0400 -ENDCHAR -STARTCHAR C117 -ENCODING 8099 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 17 1 -5 -BITMAP -3400 -3400 +0800 +1400 +1400 2200 -1200 -0000 2200 4100 -8080 -8880 -8880 -8880 -7700 -0000 -1800 -0800 -0A00 -0400 +E100 +9080 +9080 +6000 ENDCHAR -STARTCHAR C117 -ENCODING 8100 +STARTCHAR 0046 +ENCODING 5462 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 17 1 -5 +BBX 9 15 1 0 BITMAP -3200 -3200 -1400 -2400 -0000 -2200 -4100 -8080 -8880 -8880 -8880 -7700 +0800 +1C00 +0800 0000 -1800 0800 -0A00 -0400 -ENDCHAR -STARTCHAR C117 -ENCODING 8101 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 17 1 -5 -BITMAP -3200 -3200 -2400 +0800 1400 -0000 +1400 2200 +2200 4100 -8080 -8880 -8880 -8880 -7700 -0000 -1800 -0800 -0A00 -0400 +E100 +9080 +9080 +6000 ENDCHAR -STARTCHAR C117 -ENCODING 8102 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 21 1 -5 +STARTCHAR C065 +ENCODING 5463 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 0 BITMAP -2400 -5400 -4800 -0000 -1800 -1800 -0800 -1000 -0000 -2200 -4100 -8080 -8880 -8880 -8880 -7700 -0000 -1800 -0800 -0A00 -0400 +7000 +9C00 +9300 +6080 +0040 +0080 +0300 +0C00 +3000 +C000 ENDCHAR -STARTCHAR C117 -ENCODING 8103 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 21 1 -5 +STARTCHAR C065 +ENCODING 5464 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -2400 -5400 -4800 -0000 -1800 -1800 -1000 -0800 +0400 +0E00 +0400 0000 -2200 -4100 -8080 -8880 -8880 -8880 -7700 0000 -1800 -0800 -0A00 -0400 +7000 +9C00 +9300 +6080 +0040 +0080 +0300 +0C00 +3000 +C000 ENDCHAR -STARTCHAR 0x1FA8 -ENCODING 8104 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 17 0 -4 +STARTCHAR C065 +ENCODING 5465 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 0 BITMAP -C000 -C000 -4F80 -9040 -2020 -2020 -2020 -2020 -1040 -1040 -0880 -28A0 -38E0 -0600 -0200 -0280 -0100 +0380 +0E40 +3240 +4180 +8000 +4000 +3000 +0C00 +0300 +00C0 ENDCHAR -STARTCHAR 0x1FA9 -ENCODING 8105 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 17 0 -4 +STARTCHAR C065 +ENCODING 5466 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -C000 -C000 -8F80 -5040 -2020 -2020 -2020 -2020 -1040 -1040 -0880 -28A0 -38E0 -0600 -0200 -0280 -0100 +0400 +0E00 +0400 +0000 +0000 +0380 +0E40 +3240 +4180 +8000 +4000 +3000 +0C00 +0300 +00C0 ENDCHAR -STARTCHAR 0x1FAA -ENCODING 8106 +STARTCHAR C065 +ENCODING 5467 SWIDTH 900 0 DWIDTH 15 0 -BBX 14 17 0 -4 +BBX 14 15 1 0 BITMAP -D000 -D000 -49F0 -8A08 -0404 -0404 -0404 -0404 -0208 -0208 -0110 -0514 -071C -00C0 0040 -0050 -0020 +00E0 +0040 +0000 +0000 +0038 +00E4 +0324 +4418 +E800 +4400 +0300 +00C0 +0030 +000C ENDCHAR -STARTCHAR 0x1FAB -ENCODING 8107 +STARTCHAR C065 +ENCODING 5468 SWIDTH 900 0 DWIDTH 15 0 -BBX 14 17 0 -4 +BBX 14 15 1 0 BITMAP -D000 -D000 -89F0 -4A08 -0404 -0404 -0404 -0404 -0208 -0208 -0110 -0514 -071C +0400 +0E00 +0400 +0000 +0000 +0380 +0E40 +3240 +4188 +801C +4008 +3000 +0C00 +0300 00C0 -0040 -0050 -0020 ENDCHAR -STARTCHAR 0x1FAC -ENCODING 8108 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 17 0 -4 +STARTCHAR char5150 +ENCODING 5469 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 6 1 5 BITMAP -C800 -C800 -53E0 -9410 -0808 -0808 -0808 -0808 -0410 -0410 -0220 -0A28 -0E38 -0180 -0080 -00A0 -0040 +08 +34 +C8 +60 +18 +04 ENDCHAR -STARTCHAR 0x1FAD -ENCODING 8109 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 17 0 -4 +STARTCHAR 0074 +ENCODING 5470 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -C800 -C800 -93E0 -5410 -0808 -0808 -0808 -0808 -0410 -0410 -0220 -0A28 -0E38 -0180 -0080 -00A0 -0040 +6080 +9080 +9080 +E080 +8080 +8080 +8080 +8080 +8080 +4100 +3E00 ENDCHAR -STARTCHAR 0x1FAE -ENCODING 8110 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 21 0 -4 +STARTCHAR 0074 +ENCODING 5471 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -4800 -A800 -9000 -0000 -3000 -3000 -13E0 -2410 -0808 -0808 -0808 -0808 -0410 -0410 -0220 -0A28 -0E38 -0180 -0080 -00A0 -0040 +8300 +8480 +8480 +8380 +8080 +8080 +8080 +8080 +8080 +4100 +3E00 ENDCHAR -STARTCHAR 0x1FAF -ENCODING 8111 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 21 0 -4 +STARTCHAR 0074 +ENCODING 5472 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -4800 -A800 -9000 -0000 -3000 -3000 -23E0 -1410 -0808 -0808 -0808 -0808 -0410 -0410 -0220 -0A28 -0E38 -0180 -0080 -00A0 -0040 +3E00 +4100 +8080 +8080 +8080 +8080 +8080 +E080 +9080 +9080 +6080 ENDCHAR -STARTCHAR C130 -ENCODING 8112 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 11 1 0 +STARTCHAR 0074 +ENCODING 5473 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -44 -38 -00 -00 -62 -92 -94 -8C -88 -98 -66 +3E00 +4100 +8080 +8080 +8080 +8080 +8080 +8380 +8480 +8480 +8300 ENDCHAR -STARTCHAR C130 -ENCODING 8113 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 10 1 0 +STARTCHAR 0074 +ENCODING 5474 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 15 1 0 BITMAP -7C -00 -00 -62 -92 -94 -8C -88 -98 -66 +0800 +1C00 +0800 +0000 +3E00 +4100 +8080 +8080 +8080 +8080 +8080 +E080 +9080 +9080 +6080 ENDCHAR -STARTCHAR C130 -ENCODING 8114 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 17 1 -5 +STARTCHAR 0074 +ENCODING 5475 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 15 1 0 BITMAP -10 -10 -08 -08 -00 -62 -92 -94 -8C -88 -98 -66 -00 -60 -20 -28 -10 +0800 +1C00 +0800 +0000 +3E00 +4100 +8080 +8080 +8080 +8080 +8080 +8380 +8480 +8480 +8300 ENDCHAR -STARTCHAR C130 -ENCODING 8115 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 12 1 -5 +STARTCHAR 0074 +ENCODING 5476 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -62 -92 +78 94 -8C -88 -98 -66 -00 -60 -20 -28 -10 +92 +61 +01 +01 +01 +01 +02 +04 +F8 ENDCHAR -STARTCHAR C130 -ENCODING 8116 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 17 1 -5 +STARTCHAR 0074 +ENCODING 5477 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 0 BITMAP -08 -08 10 +38 10 00 -62 -92 +78 94 -8C -88 -98 -66 -00 -60 -20 -28 -10 +92 +61 +01 +01 +01 +01 +02 +04 +F8 ENDCHAR -STARTCHAR C130 -ENCODING 8118 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 11 1 0 +STARTCHAR 0074 +ENCODING 5478 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -24 -54 -48 -00 -62 -92 -94 -8C -88 -98 -66 +1E +29 +49 +86 +80 +80 +80 +80 +40 +20 +1F ENDCHAR -STARTCHAR C130 -ENCODING 8119 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 16 1 -5 +STARTCHAR 0074 +ENCODING 5479 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 0 BITMAP -24 -54 -48 -00 -62 -92 -94 -8C -88 -98 -66 +08 +1C +08 00 -60 +1E +29 +49 +86 +80 +80 +80 +80 +40 20 -28 -10 +1F ENDCHAR -STARTCHAR C065 -ENCODING 8120 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 14 0 0 +STARTCHAR 0074 +ENCODING 5480 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 15 1 0 BITMAP -1100 -0E00 +0080 +01C0 +0080 0000 -0400 +01E0 +0290 +0490 +0860 +4800 +E800 +4800 +0800 0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 +0200 +01F0 ENDCHAR -STARTCHAR C065 -ENCODING 8121 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 13 0 0 +STARTCHAR 0074 +ENCODING 5481 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 BITMAP -1F00 +0800 +1C00 +0800 0000 -0400 -0400 -0A00 -0A00 -0A00 -1100 -1100 +1E00 +2900 +4900 +8600 +8040 +80E0 +8040 +8000 +4000 +2000 1F00 -2080 -2080 -F1E0 ENDCHAR -STARTCHAR C065 -ENCODING 8122 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 13 0 0 +STARTCHAR char5153 +ENCODING 5482 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 6 1 5 BITMAP -4000 -4000 -2400 -2400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 +70 +A8 +90 +80 +80 +70 ENDCHAR -STARTCHAR C065 -ENCODING 8123 +STARTCHAR 0074 +ENCODING 5483 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 13 0 0 +BBX 9 11 1 0 BITMAP -2000 -2000 -4400 -4400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 +8880 +8880 +8880 +8880 +8880 +8080 +8080 +8080 +8080 +4100 +3E00 ENDCHAR -STARTCHAR C065 -ENCODING 8124 +STARTCHAR 0074 +ENCODING 5484 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 15 0 -4 +BBX 9 11 1 0 BITMAP -0400 -0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 -0C00 -0400 -0500 -0200 +3E00 +4100 +8080 +8080 +8080 +8080 +8880 +8880 +8880 +8880 +8880 ENDCHAR -STARTCHAR C044 -ENCODING 8125 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 5 1 11 +STARTCHAR 0074 +ENCODING 5485 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -C0 -C0 -40 -40 -80 +F8 +04 +02 +01 +01 +F1 +01 +01 +02 +04 +F8 ENDCHAR -STARTCHAR char837 -ENCODING 8126 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 4 1 -4 +STARTCHAR 0074 +ENCODING 5486 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -C0 -40 -50 +1F 20 -ENDCHAR -STARTCHAR C044 -ENCODING 8127 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 5 1 11 -BITMAP -C0 -C0 40 -40 80 +80 +8F +80 +80 +40 +20 +1F ENDCHAR -STARTCHAR char8128 -ENCODING 8128 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 3 1 11 +STARTCHAR char5487 +ENCODING 5487 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 12 5 1 4 BITMAP -48 -A8 -90 +2040 +A950 +70E0 +A950 +2040 ENDCHAR -STARTCHAR char8128 -ENCODING 8129 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 6 1 11 +STARTCHAR 0074 +ENCODING 5488 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -48 -A8 -90 -00 -D8 -D8 +A280 +A280 +A280 +A280 +A280 +9C80 +8080 +8080 +8080 +4100 +3E00 ENDCHAR -STARTCHAR C090 -ENCODING 8130 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 15 1 -4 +STARTCHAR 0074 +ENCODING 5489 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -20 -20 -10 -00 -98 -64 -44 -44 -44 -44 -44 -04 -C4 -44 -64 +3E00 +4100 +8080 +8080 +8080 +9C80 +A280 +A280 +A280 +A280 +A280 ENDCHAR -STARTCHAR C090 -ENCODING 8131 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 11 1 -4 +STARTCHAR 0074 +ENCODING 5490 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -98 -64 -44 -44 -44 -44 -44 +F8 04 -C4 -44 -64 +02 +E1 +11 +11 +11 +E1 +02 +04 +F8 ENDCHAR -STARTCHAR C090 -ENCODING 8132 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 15 1 -4 +STARTCHAR 0074 +ENCODING 5491 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -10 -10 +1F 20 -00 -98 -64 -44 -44 -44 -44 -44 -04 -C4 -44 -64 +40 +87 +88 +88 +88 +87 +40 +20 +1F ENDCHAR -STARTCHAR C090 -ENCODING 8134 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 15 1 -4 +STARTCHAR 0066 +ENCODING 5492 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -24 -54 -48 -00 -98 -64 -44 -44 -44 -44 -44 -04 -04 -04 -04 +7800 +8400 +8400 +8400 +8400 +7C00 +0400 +0480 +0500 +0600 +0400 ENDCHAR -STARTCHAR C090 -ENCODING 8135 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 15 1 -4 +STARTCHAR 0066 +ENCODING 5493 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -24 -54 -48 -00 -98 -64 -44 -44 -44 -44 -44 -04 -C4 -44 -64 +0F00 +1080 +1080 +1080 +1080 +1F00 +1000 +9000 +5000 +3000 +1000 ENDCHAR -STARTCHAR 0x1FC8 -ENCODING 8136 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 13 0 0 +STARTCHAR 0066 +ENCODING 5494 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 BITMAP -8000 -8000 -5FF0 -4410 -0410 -0450 -0440 -07C0 -0448 -0448 -0410 -0410 -1FF0 +0400 +0E00 +0400 +0000 +0F00 +1080 +1080 +1080 +1080 +1F00 +1000 +9000 +5000 +3000 +1000 ENDCHAR -STARTCHAR 0x1FC9 -ENCODING 8137 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 13 0 0 +STARTCHAR 0066 +ENCODING 5495 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -4000 -4000 -9FF0 -8410 -0410 -0450 -0440 -07C0 -0448 -0448 -0410 -0410 -1FF0 +0400 +0600 +0500 +0480 +0400 +7C00 +8400 +8400 +8400 +8400 +7800 ENDCHAR -STARTCHAR 0x1FCA -ENCODING 8138 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 13 0 0 +STARTCHAR 0066 +ENCODING 5496 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 BITMAP -8000 -8000 -5F7C -4410 -0410 -0410 -0410 -07F0 -0410 -0410 -0410 -0410 -1F7C +0400 +0E00 +0400 +0000 +0400 +0600 +0500 +0480 +0400 +7C00 +8400 +8400 +8400 +8400 +7800 ENDCHAR -STARTCHAR 0x1FCB -ENCODING 8139 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 13 0 0 +STARTCHAR 0066 +ENCODING 5497 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -4000 -4000 -9F7C -8410 -0410 -0410 -0410 -07F0 -0410 -0410 -0410 -0410 -1F7C +1000 +3000 +5000 +9000 +1000 +1F00 +1080 +1080 +1080 +1080 +0F00 ENDCHAR -STARTCHAR 0x1FCC -ENCODING 8140 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 16 0 -5 +STARTCHAR 0066 +ENCODING 5498 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 0 BITMAP -FBE0 -2080 -2080 -2080 -2080 -3F80 -2080 -2080 -2080 -2080 -FBE0 +1000 +3800 +1000 0000 -0C00 -0400 -0500 -0200 +1000 +3000 +5000 +9000 +1000 +1F00 +1080 +1080 +1080 +1080 +0F00 ENDCHAR -STARTCHAR char8141 -ENCODING 8141 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 4 1 11 +STARTCHAR char5251 +ENCODING 5499 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 6 1 5 BITMAP -D0 -D0 -48 -88 +20 +60 +B8 +24 +24 +38 ENDCHAR -STARTCHAR char8141 -ENCODING 8142 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 4 1 11 +STARTCHAR 0074 +ENCODING 5500 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -C8 -C8 -50 -90 +8080 +8080 +8080 +8080 +8080 +FF80 +8080 +8080 +8080 +8080 +8080 ENDCHAR -STARTCHAR char8143 -ENCODING 8143 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 8 1 11 +STARTCHAR char5441 +ENCODING 5501 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 6 1 5 BITMAP +84 48 -A8 -90 -00 30 30 -10 -20 +48 +84 ENDCHAR -STARTCHAR C090 -ENCODING 8144 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 5 11 0 0 +STARTCHAR 0066 +ENCODING 5502 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -88 -70 -00 -00 -20 -60 -20 -20 -20 -28 -10 +0200 +0500 +0200 +0000 +6780 +8840 +8840 +6840 +2840 +2F80 +0800 +0800 +0800 +0800 +0800 ENDCHAR -STARTCHAR C090 -ENCODING 8145 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 5 10 0 0 +STARTCHAR 0066 +ENCODING 5503 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -F8 -00 -00 -20 -60 -20 -20 -20 -28 -10 +6780 +8840 +8840 +6840 +2840 +2F80 +0800 +0800 +0800 +0800 +0800 ENDCHAR -STARTCHAR C090 -ENCODING 8146 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 6 13 -1 0 +STARTCHAR 0066 +ENCODING 5504 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 1 0 BITMAP -20 -20 -DC -CC -00 -00 -10 -30 -10 -10 -10 -14 -08 +0200 +0700 +0200 +0000 +6780 +8840 +8840 +6840 +2840 +2F80 +0800 +0800 +0800 +0800 +0800 ENDCHAR -STARTCHAR C090 -ENCODING 8147 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 6 13 -1 0 +STARTCHAR 0066 +ENCODING 5505 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -10 -10 -EC -CC -00 -00 -10 -30 -10 -10 -10 -14 -08 +6040 +8040 +8040 +6040 +2040 +27C0 +0840 +0840 +0840 +0840 +0780 ENDCHAR -STARTCHAR C090 -ENCODING 8150 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 5 12 0 0 +STARTCHAR 0066 +ENCODING 5506 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 BITMAP -48 -A8 -90 -00 -00 -20 -60 -20 -20 -20 -28 -10 +0040 +00E0 +0040 +0000 +6040 +8040 +8040 +6040 +2040 +27C0 +0840 +0840 +0840 +0840 +0780 ENDCHAR -STARTCHAR C090 -ENCODING 8151 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 5 15 0 0 +STARTCHAR 0066 +ENCODING 5507 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -48 -A8 -90 -00 -D8 -D8 -00 -00 -20 -60 -20 -20 -20 -28 -10 +6800 +8800 +8800 +6800 +2800 +2F80 +0840 +0840 +0840 +0840 +0780 ENDCHAR -STARTCHAR C072 -ENCODING 8152 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 14 1 0 +STARTCHAR 0066 +ENCODING 5508 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 0 BITMAP -88 -70 -00 -F8 -20 -20 -20 -20 -20 -20 -20 -20 -20 -F8 +0040 +00E0 +0040 +0000 +6800 +8800 +8800 +6800 +2800 +2F80 +0840 +0840 +0840 +0840 +0780 ENDCHAR -STARTCHAR C072 -ENCODING 8153 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 13 1 0 +STARTCHAR char5251 +ENCODING 5509 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 6 1 5 BITMAP -F8 -00 -F8 -20 -20 -20 -20 -20 -20 -20 -20 -20 -F8 +68 +88 +8E +69 +29 +2E ENDCHAR -STARTCHAR C072 -ENCODING 8154 +STARTCHAR 0066 +ENCODING 5510 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 13 0 0 +BBX 8 11 1 0 BITMAP -80 -80 -5F -44 -04 -04 -04 -04 -04 -04 -04 -04 +1E +21 +21 +21 +21 1F +09 +11 +21 +41 +81 ENDCHAR -STARTCHAR C072 -ENCODING 8155 +STARTCHAR 0066 +ENCODING 5511 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 13 0 0 +BBX 8 11 1 0 BITMAP -40 -40 -9F +78 84 -04 -04 -04 -04 -04 -04 -04 -04 +84 +84 +84 +F8 +90 +88 +84 +82 +81 +ENDCHAR +STARTCHAR 0066 +ENCODING 5512 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 +BITMAP +81 +41 +21 +11 +09 1F +21 +21 +21 +21 +1E ENDCHAR -STARTCHAR char8141 -ENCODING 8157 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 4 1 11 +STARTCHAR 0066 +ENCODING 5513 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -D0 -D0 +81 +82 +84 88 -48 +90 +F8 +84 +84 +84 +84 +78 ENDCHAR -STARTCHAR char8141 -ENCODING 8158 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 4 1 11 +STARTCHAR 0066 +ENCODING 5514 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -C8 -C8 -90 -50 +7800 +8400 +8400 +0400 +0400 +0400 +0400 +0580 +0600 +0400 +0400 ENDCHAR -STARTCHAR char8143 -ENCODING 8159 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 8 1 11 +STARTCHAR 0066 +ENCODING 5515 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -48 -A8 -90 -00 -30 -30 -20 -10 +0F00 +1080 +1080 +1000 +1000 +1000 +1000 +D000 +3000 +1000 +1000 ENDCHAR -STARTCHAR C090 -ENCODING 8160 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 11 1 0 +STARTCHAR 0066 +ENCODING 5516 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -44 -38 -00 -00 -C8 -44 -44 -44 -44 -48 -30 +0400 +0400 +0600 +0580 +0400 +0400 +0400 +0400 +8400 +8400 +7800 ENDCHAR -STARTCHAR C090 -ENCODING 8161 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 10 1 0 +STARTCHAR 0066 +ENCODING 5517 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -7C -00 -00 -C8 -44 -44 -44 -44 -48 -30 +1000 +1000 +3000 +D000 +1000 +1000 +1000 +1000 +1080 +1080 +0F00 ENDCHAR -STARTCHAR C090 -ENCODING 8162 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 13 1 0 +STARTCHAR 0066 +ENCODING 5518 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 0 BITMAP -20 -20 -DC -CC -00 -00 -C8 -44 -44 -44 -44 -48 -30 +000400 +000A00 +000400 +000000 +600F00 +901080 +901080 +7C1000 +041000 +049000 +049000 +031000 +001000 +001000 +001000 ENDCHAR -STARTCHAR C090 -ENCODING 8163 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 13 1 0 +STARTCHAR 0066 +ENCODING 5519 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 11 1 0 BITMAP -10 -10 -EC -CC -00 -00 -C8 -44 -44 -44 -44 -48 -30 +600F00 +901080 +901080 +7C1000 +041000 +049000 +049000 +031000 +001000 +001000 +001000 ENDCHAR -STARTCHAR C114 -ENCODING 8164 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 17 1 -4 +STARTCHAR 0066 +ENCODING 5520 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 0 BITMAP -30 -30 -10 -20 -00 -00 -70 -88 -88 -88 -88 -88 -F0 -80 -80 -80 -80 +000400 +000E00 +000400 +000000 +600F00 +901080 +901080 +7C1000 +041000 +049000 +049000 +031000 +001000 +001000 +001000 ENDCHAR -STARTCHAR C114 -ENCODING 8165 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 17 1 -4 +STARTCHAR 0066 +ENCODING 5521 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 11 1 0 BITMAP -60 -60 -40 -20 -00 -00 -70 -88 -88 -88 -88 -88 -F0 -80 -80 -80 -80 +600080 +900080 +900080 +7C0080 +040080 +048080 +048080 +030080 +001080 +001080 +000F00 ENDCHAR -STARTCHAR C090 -ENCODING 8166 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR 0066 +ENCODING 5522 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 18 15 1 0 BITMAP -24 -54 -48 -00 -00 -C8 -44 -44 -44 -44 -48 -30 +000080 +0001C0 +000080 +000000 +600080 +900080 +900080 +7C0080 +040080 +048080 +048080 +030080 +001080 +001080 +000F00 ENDCHAR -STARTCHAR C090 -ENCODING 8167 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 15 1 0 +STARTCHAR 0066 +ENCODING 5523 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 11 1 0 BITMAP -24 -54 -48 -00 -6C -6C -00 -00 -C8 -44 -44 -44 -44 -48 -30 +601000 +901000 +901000 +7C1000 +041000 +049000 +049000 +031000 +001080 +001080 +000F00 ENDCHAR -STARTCHAR C085 -ENCODING 8168 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 11 14 0 0 +STARTCHAR 0066 +ENCODING 5524 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 0 BITMAP -1100 -0E00 -0000 -F1E0 -2080 -1100 -1100 -0A00 -0E00 -0400 -0400 -0400 -0400 -1F00 +001000 +003800 +001000 +000000 +601000 +901000 +901000 +7C1000 +041000 +049000 +049000 +031000 +001080 +001080 +000F00 ENDCHAR -STARTCHAR C085 -ENCODING 8169 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 11 13 0 0 +STARTCHAR char5251 +ENCODING 5525 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 8 1 3 BITMAP -1F00 -0000 -F1E0 -2080 -1100 -1100 -0A00 -0E00 +6000 +9000 +9000 +7C00 0400 -0400 -0400 -0400 -1F00 -ENDCHAR -STARTCHAR 0x1FEA -ENCODING 8170 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 12 0 0 -BITMAP -8000 -BC78 -4820 -4440 -0440 -0280 -0380 -0100 -0100 -0100 -0100 -07C0 +0480 +0480 +0300 ENDCHAR -STARTCHAR 0x1FEB -ENCODING 8171 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 12 0 0 +STARTCHAR char5251 +ENCODING 5526 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 14 8 1 3 BITMAP -4000 -7C78 -8820 -8440 -0440 -0280 -0380 -0100 -0100 -0100 -0100 -07C0 +6300 +9480 +9480 +7BE0 +0020 +0024 +0024 +0018 ENDCHAR -STARTCHAR C082 -ENCODING 8172 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 13 0 0 +STARTCHAR 0066 +ENCODING 5527 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -C000 -C000 -9FE0 -8430 -4410 -0410 -0430 -07E0 -0400 -0400 -0400 -0400 -1F00 +38 +44 +92 +AA +8A +72 +02 +02 +02 +02 +02 ENDCHAR -STARTCHAR char901 -ENCODING 8173 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 4 2 11 +STARTCHAR 0066 +ENCODING 5528 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -20 -20 -DC -CC +38 +44 +92 +AA +A2 +9C +80 +80 +80 +80 +80 ENDCHAR -STARTCHAR char901 -ENCODING 8174 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 4 2 11 +STARTCHAR 0066 +ENCODING 5529 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -10 -10 -EC -CC +02 +02 +02 +02 +02 +72 +8A +AA +92 +44 +38 ENDCHAR -STARTCHAR char8141 -ENCODING 8175 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 4 1 11 +STARTCHAR 0066 +ENCODING 5530 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP 80 80 -40 -40 +80 +80 +80 +9C +A2 +AA +92 +44 +38 ENDCHAR -STARTCHAR C117 -ENCODING 8178 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 16 1 -5 +STARTCHAR 006B +ENCODING 5531 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 8 1 0 BITMAP -1000 -1000 -0800 -0000 -2200 -4100 -8080 -8880 -8880 -8880 -7700 +FF80 0000 -1800 -0800 -0A00 -0400 +FF80 +0840 +0840 +0840 +0840 +0780 ENDCHAR -STARTCHAR C117 -ENCODING 8179 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 12 1 -5 +STARTCHAR 006B +ENCODING 5532 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 8 1 0 BITMAP -2200 -4100 -8080 -8880 -8880 -8880 -7700 +7FC0 0000 -1800 -0800 -0A00 -0400 +7FC0 +8400 +8400 +8400 +8400 +7800 ENDCHAR -STARTCHAR C117 -ENCODING 8180 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 16 1 -5 +STARTCHAR 006B +ENCODING 5533 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 8 1 0 BITMAP -0400 -0400 -0800 -0000 -2200 -4100 -8080 -8880 -8880 -8880 -7700 +FF80 0000 -1800 -0800 -0A00 -0400 +0780 +0840 +0840 +0840 +0840 +FF80 ENDCHAR -STARTCHAR C117 -ENCODING 8182 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 11 1 0 +STARTCHAR 006B +ENCODING 5534 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 8 1 0 BITMAP -1200 -2A00 -2400 +7FC0 0000 -2200 -4100 -8080 -8880 -8880 -8880 -7700 +7800 +8400 +8400 +8400 +8400 +7FC0 ENDCHAR -STARTCHAR C117 -ENCODING 8183 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 16 1 -5 +STARTCHAR char5251 +ENCODING 5535 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 6 1 5 BITMAP -1200 -2A00 -2400 -0000 -2200 -4100 -8080 -8880 -8880 -8880 -7700 -0000 -1800 -0800 -0A00 -0400 +7C +00 +60 +90 +90 +7C ENDCHAR -STARTCHAR C079 -ENCODING 8184 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 12 13 0 0 +STARTCHAR 006B +ENCODING 5536 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 9 1 0 BITMAP +0200 +0100 +0080 +7FC0 8000 8000 -4780 -4840 -1020 -2010 -2010 -2010 -2010 -2010 -1020 -0840 -0780 -ENDCHAR -STARTCHAR C079 -ENCODING 8185 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 12 13 0 0 -BITMAP -4000 -4000 -8780 -8840 -1020 -2010 -2010 -2010 -2010 -2010 -1020 -0840 -0780 +8000 +8000 +6000 ENDCHAR -STARTCHAR 0x1FFA -ENCODING 8186 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 13 0 0 +STARTCHAR 006B +ENCODING 5537 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 0 BITMAP +1000 +3A00 +1100 +0080 +7FC0 8000 8000 -47C0 -4820 -1010 -1010 -1010 -1010 -0820 -0820 -0440 -1450 -1C70 +8000 +8000 +6000 ENDCHAR -STARTCHAR 0x1FFB -ENCODING 8187 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 13 0 0 +STARTCHAR 006B +ENCODING 5538 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 9 1 -3 BITMAP -4000 +0180 +0040 +0040 +0040 +0040 +FF80 4000 -87C0 -8820 -1010 -1010 -1010 -1010 -0820 -0820 -0440 -1450 -1C70 -ENDCHAR -STARTCHAR 0x1FFC -ENCODING 8188 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 15 1 -4 -BITMAP -3E00 -4100 -8080 -8080 -8080 -8080 -4100 -4100 -2200 -A280 -E380 -1800 -0800 -0A00 -0400 -ENDCHAR -STARTCHAR char8141 -ENCODING 8189 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 4 1 11 -BITMAP -40 -40 -80 -80 +2000 +1000 ENDCHAR -STARTCHAR C044 -ENCODING 8190 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 5 1 11 +STARTCHAR 006B +ENCODING 5539 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 13 1 -3 BITMAP -C0 -C0 -80 -80 -40 +0200 +0700 +0200 +0000 +0180 +0040 +0040 +0040 +0040 +FF80 +4000 +2000 +1000 ENDCHAR -STARTCHAR char8192 -ENCODING 8192 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 15 15 0 0 +STARTCHAR 006B +ENCODING 5540 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 9 1 -3 BITMAP -B6D6 +6000 8000 -2272 -B288 -2A8A -A69A -A278 -0002 -9EF2 -A088 -1CF2 -8282 -BC80 -0002 -DB6A -ENDCHAR -STARTCHAR char8192 -ENCODING 8203 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 15 15 0 0 -BITMAP -B6D6 8000 -3EAA -84A8 -08AA -90AA -BE50 -0002 -9EF2 -A088 -1CF2 -8282 -BC80 -0002 -DB6A -ENDCHAR -STARTCHAR char8192 -ENCODING 8204 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 15 15 0 0 -BITMAP -B6D6 8000 -3EAA -84A8 -08AA -90AA -BE50 -0002 -A20A -B208 -2A0A -A68A -A270 -0002 -DB6A +8000 +7FC0 +0080 +0100 +0200 ENDCHAR -STARTCHAR char8192 -ENCODING 8205 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 15 15 0 0 +STARTCHAR 006B +ENCODING 5541 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 13 1 -3 BITMAP -B6D6 +1000 +3800 +1000 +0000 +6000 8000 -3EAA -84A8 -08AA -90AA -BE50 -0002 -8042 -8040 -0042 -8442 -8380 -0002 -DB6A +8000 +8000 +8000 +7FC0 +0080 +0100 +0200 ENDCHAR -STARTCHAR C032 -ENCODING 8208 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 1 1 4 +STARTCHAR char5251 +ENCODING 5542 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 6 1 5 BITMAP -F0 +60 +80 +80 +7C +08 +10 ENDCHAR -STARTCHAR C045 -ENCODING 8209 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 1 1 4 +STARTCHAR 00F7 +ENCODING 5543 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -F0 +08 +10 +20 +40 +80 +FC +04 +04 +1F +04 +04 ENDCHAR -STARTCHAR EN DASH -ENCODING 8210 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 1 1 4 +STARTCHAR 00F7 +ENCODING 5544 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -FE +10 +08 +04 +02 +01 +3F +20 +20 +F8 +20 +20 ENDCHAR -STARTCHAR EN DASH -ENCODING 8211 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 1 1 4 +STARTCHAR 00F7 +ENCODING 5545 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 0 BITMAP -FE +10 +38 +10 +00 +10 +08 +04 +02 +01 +3F +20 +20 +F8 +20 +20 ENDCHAR -STARTCHAR EM DASH -ENCODING 8212 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 1 1 4 +STARTCHAR 00F7 +ENCODING 5546 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -FFFE +04 +04 +1F +04 +04 +FC +80 +40 +20 +10 +08 ENDCHAR -STARTCHAR EM DASH -ENCODING 8213 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 1 1 4 +STARTCHAR 00F7 +ENCODING 5547 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 0 BITMAP -FFFF +04 +0E +04 +00 +04 +04 +1F +04 +04 +FC +80 +40 +20 +10 +08 ENDCHAR -STARTCHAR EM DASH -ENCODING 8214 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 13 0 0 +STARTCHAR 00F7 +ENCODING 5548 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -A0 -A0 -A0 -A0 -A0 -A0 -A0 -A0 -A0 -A0 -A0 -A0 -A0 +20 +20 +F8 +20 +20 +3F +01 +02 +04 +08 +10 ENDCHAR -STARTCHAR C069 -ENCODING 8215 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 3 0 -3 +STARTCHAR 00F7 +ENCODING 5549 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 0 BITMAP -FFC0 -0000 -FFC0 +20 +70 +20 +00 +20 +20 +F8 +20 +20 +3F +01 +02 +04 +08 +10 ENDCHAR -STARTCHAR C044 -ENCODING 8216 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 5 1 7 +STARTCHAR char5438 +ENCODING 5550 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 4 BITMAP 40 -80 -80 -C0 -C0 -ENDCHAR -STARTCHAR C044 -ENCODING 8217 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 5 1 7 -BITMAP -C0 -C0 +E0 40 +70 +10 +20 40 -80 ENDCHAR -STARTCHAR C044 -ENCODING 8218 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 5 1 -3 +STARTCHAR 0066 +ENCODING 5551 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP -C0 -C0 -40 -40 80 +80 +80 +80 +80 +B8 +C4 +84 +84 +C4 +B8 ENDCHAR -STARTCHAR C044 -ENCODING 8219 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 5 1 7 +STARTCHAR 0066 +ENCODING 5552 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP -C0 -C0 +B8 +FC +FC +FC +FC +B8 80 80 -40 +80 +80 +80 ENDCHAR -STARTCHAR C092 -ENCODING 8220 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 5 1 7 +STARTCHAR 0066 +ENCODING 5553 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP -48 -90 -90 -D8 -D8 +04 +04 +04 +04 +04 +74 +FC +FC +FC +FC +74 ENDCHAR -STARTCHAR C034 -ENCODING 8221 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 5 1 7 +STARTCHAR 0066 +ENCODING 5554 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP -D8 -D8 -48 -48 -90 +80 +80 +80 +80 +80 +B8 +FC +FC +FC +FC +B8 ENDCHAR -STARTCHAR C034 -ENCODING 8222 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 5 1 -3 +STARTCHAR 0066 +ENCODING 5555 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP -D8 -D8 -48 -48 -90 +74 +FC +FC +FC +FC +74 +04 +04 +04 +04 +04 ENDCHAR -STARTCHAR C034 -ENCODING 8223 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 5 1 7 +STARTCHAR 0066 +ENCODING 5556 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 BITMAP -D8 -D8 -90 -90 -48 +FC +80 +80 +80 +FC +80 +80 +80 +80 +80 +80 ENDCHAR -STARTCHAR C121 -ENCODING 8224 +STARTCHAR 0066 +ENCODING 5557 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 15 1 -3 +BBX 6 11 1 0 BITMAP -10 -38 -10 -10 -54 -FE -54 -10 -10 -38 -10 -10 -10 -10 -10 +04 +04 +04 +04 +04 +04 +FC +04 +04 +04 +FC ENDCHAR -STARTCHAR C121 -ENCODING 8225 +STARTCHAR 0066 +ENCODING 5558 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 15 1 -3 +BBX 6 11 1 0 BITMAP -10 -38 -10 -10 -54 -FE -56 -10 -54 -FE -54 -10 -10 -38 -10 +80 +80 +80 +80 +80 +80 +FC +80 +80 +80 +FC ENDCHAR -STARTCHAR C045 -ENCODING 8226 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 4 1 3 +STARTCHAR 0066 +ENCODING 5559 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 BITMAP -60 -F0 -F0 -60 +FC +04 +04 +04 +FC +04 +04 +04 +04 +04 +04 ENDCHAR -STARTCHAR C045 -ENCODING 8227 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 6 1 2 +STARTCHAR 0066 +ENCODING 5560 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP +E2 +A2 +A2 +A2 +A2 +9C 80 -E0 -F8 -F8 -E0 +80 +80 +80 80 ENDCHAR -STARTCHAR C046 -ENCODING 8228 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 2 2 1 0 -BITMAP -C0 -C0 -ENDCHAR -STARTCHAR C046 -ENCODING 8229 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 6 2 1 0 +STARTCHAR 0066 +ENCODING 5561 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -CC -CC +02 +02 +02 +02 +02 +72 +8A +8A +8A +8A +8E ENDCHAR -STARTCHAR C046 -ENCODING 8230 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 10 2 1 0 +STARTCHAR 0066 +ENCODING 5562 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -CCC0 -CCC0 +80 +80 +80 +80 +80 +9C +A2 +A2 +A2 +A2 +E2 ENDCHAR -STARTCHAR C046 -ENCODING 8231 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 2 1 3 +STARTCHAR 0066 +ENCODING 5563 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -C0 -C0 +8E +8A +8A +8A +8A +72 +02 +02 +02 +02 +02 ENDCHAR -STARTCHAR C037 -ENCODING 8240 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 13 1 -1 +STARTCHAR 0066 +ENCODING 5564 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -6080 -9900 -9700 -9200 -9400 -6400 -0800 -1318 -14A4 -24A4 -44A4 -44A4 -8318 +C2 +C2 +A4 +A4 +98 +98 +80 +80 +80 +80 +80 ENDCHAR -STARTCHAR C037 -ENCODING 8241 -SWIDTH 1200 0 -DWIDTH 20 0 -BBX 19 13 1 -1 +STARTCHAR 0066 +ENCODING 5565 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -608000 -990000 -970000 -920000 -940000 -640000 -080000 -1318C0 -14A520 -24A520 -44A520 -44A520 -8318C0 +02 +02 +02 +02 +02 +32 +32 +4A +4A +86 +86 ENDCHAR -STARTCHAR C125 -ENCODING 8242 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 4 1 7 +STARTCHAR 0066 +ENCODING 5566 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -20 -60 -40 80 +80 +80 +80 +80 +98 +98 +A4 +A4 +C2 +C2 ENDCHAR -STARTCHAR C125 -ENCODING 8243 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 4 1 7 +STARTCHAR 0066 +ENCODING 5567 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -24 -6C -48 -90 +86 +86 +4A +4A +32 +32 +02 +02 +02 +02 +02 ENDCHAR -STARTCHAR C125 -ENCODING 8244 +STARTCHAR 0066 +ENCODING 5568 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 4 1 7 -BITMAP -2480 -6D80 -4900 -9200 -ENDCHAR -STARTCHAR C125 -ENCODING 8245 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 4 1 7 -BITMAP -80 -C0 -40 -20 -ENDCHAR -STARTCHAR C125 -ENCODING 8246 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 4 1 7 +BBX 9 11 1 0 BITMAP -90 -D8 -48 -24 +0080 +0080 +0080 +0080 +7880 +8480 +8480 +8480 +0280 +0180 +0080 ENDCHAR -STARTCHAR C125 -ENCODING 8247 +STARTCHAR 0066 +ENCODING 5569 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 4 1 7 +BBX 9 11 1 0 BITMAP -9200 -DB00 -4900 -2480 +8000 +8000 +8000 +8000 +8F00 +9080 +9080 +9080 +A000 +C000 +8000 ENDCHAR -STARTCHAR char8248 -ENCODING 8248 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 4 1 -2 +STARTCHAR 0066 +ENCODING 5570 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -40 -40 -A0 -A0 +0080 +0180 +0280 +8480 +8480 +8480 +7880 +0080 +0080 +0080 +0080 ENDCHAR -STARTCHAR char171 -ENCODING 8249 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 0 +STARTCHAR 0066 +ENCODING 5571 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 BITMAP -10 -20 -60 -C0 -60 -20 -10 +8000 +C000 +A000 +9080 +9080 +9080 +8F00 +8000 +8000 +8000 +8000 ENDCHAR -STARTCHAR char171 -ENCODING 8250 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 0 +STARTCHAR C065 +ENCODING 5572 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -80 -40 -60 -30 -60 -40 -80 +8080 +8080 +4100 +4100 +3E00 +2200 +2200 +1400 +1400 +0800 +0800 ENDCHAR -STARTCHAR char8251 -ENCODING 8251 +STARTCHAR C065 +ENCODING 5573 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 13 1 0 +BBX 9 11 1 0 BITMAP -8040 -4C80 -4C80 -2100 -1200 -1200 -CCC0 -D2C0 -1200 -2100 -4C80 -4C80 -8040 +0800 +0800 +1400 +1400 +2200 +2200 +3E00 +4100 +4100 +8080 +8080 ENDCHAR -STARTCHAR C033 -ENCODING 8252 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 5 12 1 0 +STARTCHAR C065 +ENCODING 5574 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -D8 -D8 -D8 -D8 -D8 -D8 -D8 -00 -00 -00 -D8 -D8 +C000 +3000 +0C00 +0B00 +0880 +0840 +0880 +0B00 +0C00 +3000 +C000 ENDCHAR -STARTCHAR C063 -ENCODING 8253 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR C065 +ENCODING 5575 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -78 -84 -A4 -24 -28 -30 -20 -60 -60 -00 -60 -60 +C000 +3000 +0C00 +4B00 +4880 +4840 +4880 +4B00 +0C00 +3000 +C000 ENDCHAR -STARTCHAR C069 -ENCODING 8254 +STARTCHAR C065 +ENCODING 5576 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 1 0 12 +BBX 10 11 1 0 BITMAP -FFC0 +C000 +3000 +0C00 +0B00 +4880 +E840 +4880 +0B00 +0C00 +3000 +C000 ENDCHAR STARTCHAR C065 -ENCODING 8255 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 3 1 0 +ENCODING 5577 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -8020 -4040 -3F80 +00C0 +0300 +0C00 +3400 +4400 +8400 +4400 +3400 +0C00 +0300 +00C0 ENDCHAR STARTCHAR C065 -ENCODING 8256 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 3 1 12 +ENCODING 5578 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -3F80 -4040 -8020 +8080 +8080 +7F00 +4100 +2200 +2200 +2200 +1400 +1400 +0800 +0800 ENDCHAR -STARTCHAR C047 -ENCODING 8257 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 8 1 -4 +STARTCHAR C065 +ENCODING 5579 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -10 -10 -20 -20 -40 -60 -90 -90 +0800 +0800 +1400 +1400 +2200 +2200 +2200 +4100 +7F00 +8080 +8080 ENDCHAR -STARTCHAR C042 -ENCODING 8258 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 10 1 1 +STARTCHAR C065 +ENCODING 5580 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -0400 -1500 -0E00 -1500 -0400 +C000 +3000 +2C00 +2300 2080 -AAA0 -71C0 -AAA0 +2040 2080 -ENDCHAR -STARTCHAR C045 -ENCODING 8259 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 2 1 3 -BITMAP -F0 -F0 +2300 +2C00 +3000 +C000 ENDCHAR -STARTCHAR C047 -ENCODING 8260 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 16 1 -4 +STARTCHAR C065 +ENCODING 5581 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -01 -01 -02 -02 -04 -04 -08 -08 -10 -10 -20 -20 -40 -40 -80 -80 +C000 +3000 +2C00 +2300 +2880 +2840 +2880 +2300 +2C00 +3000 +C000 ENDCHAR -STARTCHAR C091 -ENCODING 8261 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 3 16 1 -4 +STARTCHAR C065 +ENCODING 5582 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -E0 -80 -80 -80 -80 -80 -80 -E0 -80 -80 -80 -80 -80 -80 -80 -E0 +C000 +3000 +2C00 +2300 +2480 +2E40 +2480 +2300 +2C00 +3000 +C000 ENDCHAR -STARTCHAR C093 -ENCODING 8262 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 3 16 0 -4 +STARTCHAR C065 +ENCODING 5583 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -E0 -20 -20 -20 -20 -20 -20 -E0 -20 -20 -20 -20 -20 -20 -20 -E0 +00C0 +0300 +0D00 +3100 +4100 +8100 +4100 +3100 +0D00 +0300 +00C0 ENDCHAR -STARTCHAR char8304 -ENCODING 8304 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 6 +STARTCHAR C065 +ENCODING 5584 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -60 -90 -90 -90 -90 -90 -60 +8880 +8880 +4900 +4900 +2A00 +2A00 +2A00 +1C00 +1C00 +0800 +0800 ENDCHAR -STARTCHAR char185 -ENCODING 8308 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 7 1 6 +STARTCHAR C065 +ENCODING 5585 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -10 -30 -50 -90 -F8 -10 -38 +0800 +0800 +1C00 +1C00 +2A00 +2A00 +2A00 +4900 +4900 +8880 +8880 ENDCHAR -STARTCHAR char8309 -ENCODING 8309 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 6 +STARTCHAR C065 +ENCODING 5586 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -F0 -80 -A0 -D0 -10 -90 -60 +C000 +3000 +0C00 +0300 +0080 +FFC0 +0080 +0300 +0C00 +3000 +C000 ENDCHAR -STARTCHAR char8310 -ENCODING 8310 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 6 +STARTCHAR C065 +ENCODING 5587 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -60 -90 -80 -E0 -90 -90 -60 +C000 +3000 +0C00 +4300 +4080 +FFC0 +4080 +4300 +0C00 +3000 +C000 ENDCHAR -STARTCHAR char8311 -ENCODING 8311 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 6 +STARTCHAR C065 +ENCODING 5588 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -F0 -90 -20 -20 -40 -40 -40 +C000 +3000 +0C00 +0300 +2080 +FFC0 +2080 +0300 +0C00 +3000 +C000 ENDCHAR -STARTCHAR char8310 -ENCODING 8312 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 6 +STARTCHAR C065 +ENCODING 5589 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -60 -90 -90 -60 -90 -90 -60 +00C0 +0300 +0C00 +3000 +4000 +FFC0 +4000 +3000 +0C00 +0300 +00C0 ENDCHAR -STARTCHAR char8310 -ENCODING 8313 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 6 +STARTCHAR C065 +ENCODING 5590 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -60 -90 -90 -70 -10 -90 -60 +8880 +8880 +4900 +4900 +3E00 +2A00 +2A00 +1C00 +1C00 +0800 +0800 ENDCHAR -STARTCHAR char8314 -ENCODING 8314 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 5 1 7 +STARTCHAR C065 +ENCODING 5591 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -20 -20 -F8 -20 -20 +0800 +0800 +1C00 +1C00 +2A00 +2A00 +3E00 +4900 +4900 +8880 +8880 ENDCHAR -STARTCHAR char8314 -ENCODING 8315 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 1 1 9 +STARTCHAR C065 +ENCODING 5592 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -F8 +C000 +3000 +0C00 +0B00 +0880 +FFC0 +0880 +0B00 +0C00 +3000 +C000 ENDCHAR -STARTCHAR char8314 -ENCODING 8316 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 3 1 8 +STARTCHAR C065 +ENCODING 5593 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -F8 -00 -F8 +C000 +3000 +0C00 +4B00 +4880 +FFC0 +4880 +4B00 +0C00 +3000 +C000 ENDCHAR -STARTCHAR char8317 -ENCODING 8317 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 7 1 6 +STARTCHAR C065 +ENCODING 5594 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -40 -80 -80 -80 -80 -80 -40 +C000 +3000 +0C00 +0B00 +2880 +FFC0 +2880 +0B00 +0C00 +3000 +C000 ENDCHAR -STARTCHAR char8317 -ENCODING 8318 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 7 1 6 +STARTCHAR C065 +ENCODING 5595 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -80 -40 -40 -40 -40 -40 -80 +00C0 +0300 +0C00 +3400 +4400 +FFC0 +4400 +3400 +0C00 +0300 +00C0 ENDCHAR -STARTCHAR C110 -ENCODING 8319 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 5 1 6 +STARTCHAR 0074 +ENCODING 5596 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -D0 -68 -48 -48 -48 +FF80 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +4100 +3E00 ENDCHAR -STARTCHAR char8304 -ENCODING 8320 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 -4 +STARTCHAR 0074 +ENCODING 5597 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -60 -90 -90 -90 -90 -90 -60 +3E00 +4100 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +FF80 ENDCHAR -STARTCHAR char185 -ENCODING 8321 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 7 1 -4 +STARTCHAR 0074 +ENCODING 5598 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -40 -C0 -40 -40 -40 -40 -E0 +F8 +84 +82 +81 +81 +81 +81 +81 +82 +84 +F8 ENDCHAR -STARTCHAR char178 -ENCODING 8322 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 -4 +STARTCHAR 0074 +ENCODING 5599 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -60 -90 -10 -10 -20 -40 -F0 +F8 +84 +82 +91 +91 +91 +91 +91 +82 +84 +F8 ENDCHAR -STARTCHAR char8323 -ENCODING 8323 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 -4 +STARTCHAR 0074 +ENCODING 5600 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -60 -90 -10 -20 -10 -90 -60 +F8 +84 +82 +81 +91 +B9 +91 +81 +82 +84 +F8 ENDCHAR -STARTCHAR char185 -ENCODING 8324 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 7 1 -4 +STARTCHAR 0074 +ENCODING 5601 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -10 -30 -50 -90 +1F +21 +41 +81 +81 +81 +81 +81 +41 +21 +1F +ENDCHAR +STARTCHAR 0074 +ENCODING 5602 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +8080 +C180 +A280 +9480 +8880 +8080 +8080 +8080 +8080 +4100 +3E00 +ENDCHAR +STARTCHAR 0074 +ENCODING 5603 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +3E00 +4100 +8080 +8080 +8080 +8080 +8880 +9480 +A280 +C180 +8080 +ENDCHAR +STARTCHAR 0074 +ENCODING 5604 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 +BITMAP F8 -10 -38 +84 +82 +41 +41 +21 +41 +41 +82 +84 +F8 ENDCHAR -STARTCHAR char8309 -ENCODING 8325 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 -4 +STARTCHAR 0074 +ENCODING 5605 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -F0 -80 -A0 -D0 -10 -90 -60 +F8 +84 +82 +49 +49 +29 +49 +49 +82 +84 +F8 ENDCHAR -STARTCHAR char8310 -ENCODING 8326 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 -4 +STARTCHAR 0074 +ENCODING 5606 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -60 -90 -80 -E0 -90 -90 -60 +F8 +84 +82 +41 +49 +3D +49 +41 +82 +84 +F8 ENDCHAR -STARTCHAR char8311 -ENCODING 8327 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 -4 +STARTCHAR 0074 +ENCODING 5607 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -F0 -90 -20 -20 -40 -40 -40 +1F +21 +41 +82 +82 +84 +82 +82 +41 +21 +1F ENDCHAR -STARTCHAR char8310 -ENCODING 8328 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 -4 +STARTCHAR 0074 +ENCODING 5608 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -60 -90 -90 -60 -90 -90 -60 +8080 +8080 +8080 +FF80 +8080 +8080 +8080 +8080 +8080 +4100 +3E00 ENDCHAR -STARTCHAR char8310 -ENCODING 8329 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 7 1 -4 +STARTCHAR 0074 +ENCODING 5609 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -60 -90 -90 -70 -10 -90 -60 +3E00 +4100 +8080 +8080 +8080 +8080 +8080 +FF80 +8080 +8080 +8080 ENDCHAR -STARTCHAR char8314 -ENCODING 8330 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 5 1 -3 +STARTCHAR 0074 +ENCODING 5610 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -20 -20 F8 -20 -20 +24 +22 +21 +21 +21 +21 +21 +22 +24 +F8 ENDCHAR -STARTCHAR char8314 -ENCODING 8331 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 1 1 -1 +STARTCHAR 0074 +ENCODING 5611 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP F8 +24 +22 +29 +29 +29 +29 +29 +22 +24 +F8 ENDCHAR -STARTCHAR char8314 -ENCODING 8332 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 3 1 -2 +STARTCHAR 0074 +ENCODING 5612 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP F8 -00 +24 +22 +21 +29 +3D +29 +21 +22 +24 F8 ENDCHAR -STARTCHAR char8317 -ENCODING 8333 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 7 1 -4 +STARTCHAR 0074 +ENCODING 5613 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -40 -80 -80 -80 -80 -80 -40 +1F +24 +44 +84 +84 +84 +84 +84 +44 +24 +1F ENDCHAR -STARTCHAR char8317 -ENCODING 8334 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 2 7 1 -4 +STARTCHAR char5161 +ENCODING 5614 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 5 5 1 6 BITMAP -80 -40 -40 -40 -40 -40 -80 +20 +20 +20 +20 +F8 ENDCHAR -STARTCHAR C067 -ENCODING 8352 +STARTCHAR 0074 +ENCODING 5615 SWIDTH 660 0 DWIDTH 11 0 -BBX 8 12 2 0 -BITMAP -34 -4C -84 -80 -9F -89 -48 -3E -08 -08 -09 -1F -ENDCHAR -STARTCHAR C067 -ENCODING 8353 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 9 16 2 -2 +BBX 9 11 1 0 BITMAP -0500 -0500 -0A00 -1E80 -2B80 -4A80 -9480 -9400 -9400 -9400 -A880 -6880 -2900 -3E00 -5000 -5000 +8880 +8880 +8880 +8880 +8880 +8880 +8880 +8880 +8880 +5500 +2200 ENDCHAR -STARTCHAR C067 -ENCODING 8354 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 9 11 2 0 +STARTCHAR 0074 +ENCODING 5616 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -1E80 -2180 -4080 -8080 -9A00 -8D00 -8800 +2200 +5500 8880 -4880 -2900 -1E00 +8880 +8880 +8880 +8880 +8880 +8880 +8880 +8880 ENDCHAR -STARTCHAR C070 -ENCODING 8355 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 9 11 2 0 +STARTCHAR 0074 +ENCODING 5617 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -FF80 -2080 -2080 -2000 -2700 -3C80 -2480 -2700 -2500 -2480 -FC80 +FC +02 +01 +01 +02 +FC +02 +01 +01 +02 +FC ENDCHAR -STARTCHAR C036 -ENCODING 8356 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 8 12 2 0 +STARTCHAR 0074 +ENCODING 5618 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -06 -09 -11 -10 -7C -10 -7C -10 -10 -51 -B2 -CC +FC +02 +01 +41 +42 +FC +42 +41 +01 +02 +FC ENDCHAR -STARTCHAR C109 -ENCODING 8357 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 11 11 2 -2 +STARTCHAR 0074 +ENCODING 5619 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -0100 -0100 -FB80 -4640 -4440 -4440 -4C40 -4C40 -FEE0 -1000 -1000 +FC +02 +01 +01 +22 +FC +22 +01 +01 +02 +FC ENDCHAR -STARTCHAR C078 -ENCODING 8358 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 11 11 2 0 +STARTCHAR 0074 +ENCODING 5620 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -E3E0 -3080 -3080 -2880 -FFE0 -2480 -FFE0 -2280 -2180 -2180 -F880 +3F +40 +80 +80 +40 +3F +40 +80 +80 +40 +3F ENDCHAR -STARTCHAR C080 -ENCODING 8359 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 11 11 2 0 +STARTCHAR 0074 +ENCODING 5621 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -FF00 -2180 -2080 -FFE0 -2080 -2180 -3F00 -2000 -2000 -2000 -F800 +FF80 +8880 +8880 +8880 +8880 +8880 +8880 +8880 +8880 +5500 +2200 ENDCHAR -STARTCHAR C082 -ENCODING 8360 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 15 11 2 0 +STARTCHAR 0074 +ENCODING 5622 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -FE00 -2100 -2080 -FFE0 -209E -2122 -3E20 -231C -2102 -2122 -F8FC +2200 +5500 +8880 +8880 +8880 +8880 +8880 +8880 +8880 +8880 +FF80 ENDCHAR -STARTCHAR C087 -ENCODING 8361 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 16 11 2 0 +STARTCHAR 0074 +ENCODING 5623 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -F1CF -2184 -2184 -2244 -FFFF -1248 -FFFF -1428 -0C30 -0C30 -0810 +FC +82 +81 +81 +82 +FC +82 +81 +81 +82 +FC ENDCHAR -STARTCHAR 00A6 -ENCODING 8362 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 10 9 2 0 +STARTCHAR 0074 +ENCODING 5624 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -FC00 -8600 -9240 -9240 -9240 -9240 -9040 -10C0 -1F80 +FC +82 +81 +91 +92 +FC +92 +91 +81 +82 +FC ENDCHAR -STARTCHAR C100 -ENCODING 8363 +STARTCHAR 0074 +ENCODING 5625 SWIDTH 540 0 DWIDTH 9 0 -BBX 6 14 2 -2 +BBX 8 11 1 0 BITMAP -18 -08 -7C -08 -08 -78 -48 -88 -88 -88 -48 -7C -00 -7C +FC +82 +81 +81 +92 +FC +92 +81 +81 +82 +FC ENDCHAR -STARTCHAR C067 -ENCODING 8364 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 11 11 2 0 +STARTCHAR 0074 +ENCODING 5626 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -07A0 -0860 -1020 -2020 -FF80 -2000 -FE00 -2020 -1020 -0840 -0780 +3F +41 +81 +81 +41 +3F +41 +81 +81 +41 +3F ENDCHAR -STARTCHAR C075 -ENCODING 8365 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 11 2 0 +STARTCHAR 0074 +ENCODING 5627 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -E7 -42 -44 -48 -50 -FE -50 -48 -44 -42 -E7 +8880 +C980 +AA80 +9C80 +8880 +8880 +8880 +8880 +8880 +5500 +2200 ENDCHAR -STARTCHAR C084 -ENCODING 8366 +STARTCHAR 0074 +ENCODING 5628 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 11 2 0 +BBX 9 11 1 0 BITMAP -FF80 +2200 +5500 8880 8880 -8A80 -0C00 -1A00 -2C00 -1800 -2800 -0800 -3E00 +8880 +8880 +8880 +9C80 +AA80 +C980 +8880 ENDCHAR -STARTCHAR C036 -ENCODING 8367 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 13 2 0 +STARTCHAR 0074 +ENCODING 5629 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -0180 -0200 -1F80 -2440 -0420 -0820 -0820 -1020 -1020 -1040 -7040 -B180 -CE00 +FC +82 +41 +41 +22 +FC +22 +41 +41 +82 +FC ENDCHAR -STARTCHAR C069 -ENCODING 8400 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 6 2 0 12 +STARTCHAR 0074 +ENCODING 5630 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -40 FC +82 +41 +49 +2A +FC +2A +49 +41 +82 +FC ENDCHAR -STARTCHAR C069 -ENCODING 8401 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 6 2 0 12 +STARTCHAR 0074 +ENCODING 5631 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -08 +FC +82 +41 +41 +2A +FC +2A +41 +41 +82 FC ENDCHAR -STARTCHAR EM DASH -ENCODING 8402 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 1 13 0 -2 +STARTCHAR 0074 +ENCODING 5632 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 +3F +41 +82 +82 +44 +3F +44 +82 +82 +41 +3F ENDCHAR -STARTCHAR EM DASH -ENCODING 8403 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 1 7 0 1 +STARTCHAR char5150 +ENCODING 5633 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 5 6 1 5 +BITMAP +88 +88 +50 +50 +20 +20 +ENDCHAR +STARTCHAR 0066 +ENCODING 5634 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP 80 80 @@ -47839,12936 +48876,31730 @@ 80 80 80 +80 +84 +84 +78 ENDCHAR -STARTCHAR char8404 -ENCODING 8404 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 13 5 0 9 +STARTCHAR 0066 +ENCODING 5635 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 BITMAP -0780 -1860 -A010 -C008 -E000 +78 +84 +84 +04 +04 +04 +04 +04 +04 +04 +04 ENDCHAR -STARTCHAR char8404 -ENCODING 8405 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 13 5 0 9 +STARTCHAR 006B +ENCODING 5636 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 6 1 0 BITMAP -0F00 -30C0 -4028 -8018 -0038 +FF80 +0040 +0040 +0040 +0040 +0180 ENDCHAR -STARTCHAR C069 -ENCODING 8406 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 6 3 0 11 +STARTCHAR 006B +ENCODING 5637 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 6 1 0 BITMAP -40 -FC -40 +FF80 +0040 +0440 +0440 +0440 +0180 ENDCHAR -STARTCHAR C069 -ENCODING 8407 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 6 3 0 11 -BITMAP -08 -FC -08 -ENDCHAR -STARTCHAR C023 -ENCODING 8408 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 5 5 0 4 +STARTCHAR 006B +ENCODING 5638 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 6 1 0 BITMAP -70 -88 -88 -88 -70 +FF80 +0040 +0440 +0E40 +0440 +0180 ENDCHAR -STARTCHAR C023 -ENCODING 8409 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 6 6 0 4 +STARTCHAR 006B +ENCODING 5639 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 6 1 0 BITMAP -04 -78 -98 -A8 -88 -70 +6000 +8000 +8000 +8000 +8000 +7FC0 ENDCHAR -STARTCHAR C023 -ENCODING 8410 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 6 6 0 3 +STARTCHAR 0066 +ENCODING 5640 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -70 -88 -A8 -98 -78 -04 +80 +80 +80 +80 +80 +92 +92 +92 +92 +92 +6C ENDCHAR -STARTCHAR C046 -ENCODING 8411 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 8 2 0 11 +STARTCHAR 0066 +ENCODING 5641 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -DB -DB +6C +92 +92 +92 +92 +92 +02 +02 +02 +02 +02 ENDCHAR -STARTCHAR C046 -ENCODING 8412 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 11 2 0 11 +STARTCHAR 006B +ENCODING 5642 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -DB60 -DB60 +FF80 +0040 +0040 +0040 +0040 +0780 +0040 +0040 +0040 +0040 +0780 ENDCHAR -STARTCHAR C040 -ENCODING 8413 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 17 17 0 -3 +STARTCHAR 006B +ENCODING 5643 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -800080 -800080 -800080 -800080 -800080 -800080 -800080 -400100 -400100 -200200 -180C00 -07F000 +FF80 +0040 +0040 +0840 +0840 +0F80 +0840 +0840 +0040 +0040 +0780 ENDCHAR -STARTCHAR C040 -ENCODING 8414 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 17 17 0 -3 +STARTCHAR 006B +ENCODING 5644 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -FFFF80 -800080 -800080 -800080 -800080 -800080 -800080 -800080 -800080 -800080 -800080 -800080 -800080 -800080 -800080 -800080 -FFFF80 +FF80 +0040 +0040 +0040 +0840 +1F80 +0840 +0040 +0040 +0040 +0780 ENDCHAR -STARTCHAR C040 -ENCODING 8415 -SWIDTH 0 0 -DWIDTH 0 0 -BBX 17 17 0 -3 +STARTCHAR 006B +ENCODING 5645 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -008000 -014000 -022000 -041000 -080800 -100400 -200200 -400100 -800080 -400100 -200200 -100400 -080800 -041000 -022000 -014000 -008000 +7800 +8000 +8000 +8000 +8000 +7800 +8000 +8000 +8000 +8000 +7FC0 ENDCHAR -STARTCHAR char8448 -ENCODING 8448 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 11 1 0 +STARTCHAR 0074 +ENCODING 5646 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 BITMAP -3440 -4840 -8880 +8600 +8900 9080 -9500 -6930 -0248 -0280 -0480 -0490 -0060 -ENDCHAR -STARTCHAR char8448 -ENCODING 8449 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 11 1 0 -BITMAP -3440 -4840 -8880 9080 -9500 -6938 -0248 -0220 -0410 -0448 -0070 -ENDCHAR -STARTCHAR C067 -ENCODING 8450 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 11 1 0 -BITMAP -1F40 -30C0 -5040 -A040 -A000 -A000 -A000 -A040 -5040 -3080 -1F00 -ENDCHAR -STARTCHAR C067 -ENCODING 8451 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 15 12 1 0 -BITMAP -7000 -887A -8886 -8902 -7202 -0200 -0200 -0200 -0202 -0102 -0084 -0078 +8880 +8080 +8080 +8080 +8080 +4100 +3E00 ENDCHAR -STARTCHAR C076 -ENCODING 8452 +STARTCHAR 0074 +ENCODING 5647 SWIDTH 660 0 DWIDTH 11 0 BBX 9 11 1 0 -BITMAP -7C00 -1000 -3C00 -5200 -9000 -9000 -9000 -5200 -3C00 -1080 -7F00 -ENDCHAR -STARTCHAR char8448 -ENCODING 8453 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 11 1 0 BITMAP -3080 +3E00 +4100 +8080 +8080 +8080 +8080 +8880 +8480 +8480 4880 -8100 -8100 -9200 -6230 -0448 -0488 -0888 -0890 -0060 -ENDCHAR -STARTCHAR char8448 -ENCODING 8454 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 11 1 0 -BITMAP 3080 -4880 -8100 -8100 -9200 -6264 -0424 -0424 -0848 -084A -0034 ENDCHAR -STARTCHAR C119 -ENCODING 8455 -SWIDTH 600 0 -DWIDTH 10 0 +STARTCHAR 0074 +ENCODING 5648 +SWIDTH 540 0 +DWIDTH 9 0 BBX 8 11 1 0 BITMAP -3D -43 -81 +F8 +04 +02 +01 +61 +91 +91 81 -40 +82 +44 38 -40 -80 -81 -41 -3E -ENDCHAR -STARTCHAR C124 -ENCODING 8456 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 11 1 0 -BITMAP -BC00 -C200 -8100 -8080 -0080 -1F80 -0080 -8080 -8100 -4200 -3C00 -ENDCHAR -STARTCHAR C067 -ENCODING 8457 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 15 12 1 0 -BITMAP -7000 -8BFE -8882 -8882 -708A -0088 -00F8 -0088 -0088 -0080 -0080 -03E0 ENDCHAR -STARTCHAR C113 -ENCODING 8458 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 6 10 1 -4 +STARTCHAR 0074 +ENCODING 5649 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -18 -24 -44 +F8 +04 +02 +11 +51 +B1 +91 +91 +82 44 -48 38 -1C -70 -90 -E0 -ENDCHAR -STARTCHAR char8464 -ENCODING 8459 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 12 11 1 0 -BITMAP -0A10 -1610 -0210 -0420 -0420 -1FE0 -2840 -4840 -4840 -9090 -60E0 -ENDCHAR -STARTCHAR char8460 -ENCODING 8460 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 12 1 -1 -BITMAP -7038 -D850 -8840 -C840 -4840 -4FC0 -0840 -0840 -1840 -F058 -6070 -0060 ENDCHAR -STARTCHAR C072 -ENCODING 8461 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 12 11 1 0 +STARTCHAR 0074 +ENCODING 5650 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -F9F0 -50A0 -50A0 -50A0 -50A0 -5FA0 -50A0 -50A0 -50A0 -50A0 -F9F0 +F8 +04 +02 +01 +51 +B9 +91 +81 +82 +44 +38 ENDCHAR -STARTCHAR char104 -ENCODING 8462 +STARTCHAR 0074 +ENCODING 5651 SWIDTH 540 0 DWIDTH 9 0 -BBX 7 12 1 0 +BBX 8 11 1 0 BITMAP -30 -10 -10 +1C +22 +41 +81 +89 +89 +86 +80 +40 20 +1F +ENDCHAR +STARTCHAR char5311 +ENCODING 5652 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 +BITMAP +FE +84 +08 +10 20 -38 -44 -44 +4C +92 +92 +82 44 -88 -8A -8C +38 ENDCHAR -STARTCHAR char104 -ENCODING 8463 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 12 1 0 +STARTCHAR char5311 +ENCODING 5653 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -30 +FE +42 +20 10 -1C -30 -E0 -38 -44 -44 +08 +64 +92 +92 +82 44 -88 -8A -8C +38 ENDCHAR -STARTCHAR char8464 -ENCODING 8464 -SWIDTH 540 0 -DWIDTH 9 0 +STARTCHAR char5311 +ENCODING 5654 +SWIDTH 480 0 +DWIDTH 8 0 BBX 7 11 1 0 BITMAP -0E -12 -22 -04 -04 -04 -08 38 -48 -90 -60 +44 +82 +92 +92 +64 +08 +10 +20 +42 +FE ENDCHAR -STARTCHAR char8465 -ENCODING 8465 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 11 1 0 +STARTCHAR char5311 +ENCODING 5655 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 0 BITMAP -7F00 -C200 -8600 -C400 -6600 -2200 -0300 -0180 -4080 -E180 -3F00 +C380 +8440 +8820 +9320 +A420 +C440 +8380 ENDCHAR -STARTCHAR C036 -ENCODING 8466 +STARTCHAR char5311 +ENCODING 5656 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 11 1 0 +BBX 11 7 1 0 BITMAP -0380 -0440 -0480 -3F00 -0800 -0800 -0800 -1000 -5000 -B100 -CE00 +C380 +8440 +8920 +9320 +A520 +C440 +8380 ENDCHAR -STARTCHAR C036 -ENCODING 8467 +STARTCHAR char5311 +ENCODING 5657 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 0 +BITMAP +C380 +8440 +8920 +97A0 +A520 +C440 +8380 +ENDCHAR +STARTCHAR char5311 +ENCODING 5658 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 0 +BITMAP +8380 +C440 +A420 +9320 +8820 +8440 +C380 +ENDCHAR +STARTCHAR char5311 +ENCODING 5659 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 0 +BITMAP +3820 +4460 +84A0 +9920 +8220 +4420 +3860 +ENDCHAR +STARTCHAR char5311 +ENCODING 5660 SWIDTH 480 0 DWIDTH 8 0 -BBX 6 11 1 0 +BBX 7 11 1 0 BITMAP -10 -28 -28 +82 +44 28 -50 -50 -50 -60 -60 -C4 +10 +20 +4C +92 +92 +82 +44 38 ENDCHAR -STARTCHAR C108 -ENCODING 8468 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 12 1 0 +STARTCHAR char5311 +ENCODING 5661 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 BITMAP -6600 -2200 -FFE0 -2200 -2200 -23C0 -2220 -2220 -2220 -2220 -2220 -73C0 +38 +44 +82 +92 +92 +64 +08 +10 +28 +44 +82 ENDCHAR -STARTCHAR C078 -ENCODING 8469 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 11 1 0 +STARTCHAR char5311 +ENCODING 5662 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 0 BITMAP -F8F8 +8380 +4440 +2820 +1320 2420 -3420 -2A20 -2A20 +4440 +8380 +ENDCHAR +STARTCHAR char5311 +ENCODING 5663 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 0 +BITMAP +8380 +4440 +2920 +1320 2520 -22A0 -22A0 -2160 -2120 -F8E0 +4440 +8380 ENDCHAR -STARTCHAR C078 -ENCODING 8470 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 15 11 1 0 +STARTCHAR char5311 +ENCODING 5664 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 0 BITMAP -E3E0 -3080 -3080 -289C -28A2 -24A2 -22A2 -22A2 -219C -2180 -F8BE +8380 +4440 +2920 +17A0 +2520 +4440 +8380 ENDCHAR -STARTCHAR C099 -ENCODING 8471 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 10 1 3 +STARTCHAR char5311 +ENCODING 5665 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 0 BITMAP -3E00 -4100 -BC80 -9280 -9280 -9C80 -9080 -B880 -4100 -3E00 +3820 +4440 +8480 +9900 +8280 +4440 +3820 ENDCHAR -STARTCHAR char8472 -ENCODING 8472 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 13 1 -4 +STARTCHAR 0045 +ENCODING 5666 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 6 1 0 BITMAP -4000 -8700 -8880 -9080 -9080 -A480 -AC80 -4900 -A600 -A000 -9000 -9000 -6000 +FC40 +0840 +1040 +1040 +0880 +0700 ENDCHAR -STARTCHAR C080 -ENCODING 8473 +STARTCHAR 0045 +ENCODING 5667 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 11 1 0 +BBX 10 6 1 0 BITMAP -FF80 -52C0 -5140 -5140 -5140 -52C0 -5F80 -5000 -5000 -5000 -F800 +3800 +4400 +8200 +8200 +8400 +8FC0 ENDCHAR -STARTCHAR C081 -ENCODING 8474 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 14 1 -3 +STARTCHAR 0044 +ENCODING 5668 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 BITMAP -1F00 -3180 -5140 -A0A0 -A0A0 -A0A0 -A0A0 -A0A0 -5540 -3B80 -1F00 -0500 -0520 -03C0 +80 +80 +80 +B0 +C8 +84 +04 +04 +04 +08 +F0 ENDCHAR -STARTCHAR C036 -ENCODING 8475 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR 0044 +ENCODING 5669 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 BITMAP -01C0 -0620 -0A20 -1440 -2480 -4B00 -4A00 -8A00 -9100 -9120 -60C0 +80 +80 +80 +B0 +C8 +84 +24 +24 +24 +08 +F0 ENDCHAR -STARTCHAR char8460 -ENCODING 8476 +STARTCHAR 0044 +ENCODING 5670 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 +BITMAP +80 +80 +80 +B0 +C8 +84 +24 +74 +24 +08 +F0 +ENDCHAR +STARTCHAR 0044 +ENCODING 5671 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 +BITMAP +04 +04 +04 +34 +4C +84 +80 +80 +80 +40 +3C +ENDCHAR +STARTCHAR 0045 +ENCODING 5672 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 11 1 0 +BBX 10 8 1 0 BITMAP -7380 -DCC0 +8000 +8000 +FC40 8840 -C8C0 -4880 -4B00 -0B00 -0B00 -1900 -F1C0 -6180 +9040 +1040 +0880 +0700 ENDCHAR -STARTCHAR C082 -ENCODING 8477 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 12 11 1 0 +STARTCHAR 0045 +ENCODING 5673 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 8 1 -2 BITMAP -FF00 -5280 -5140 -5140 -5280 -5F00 -5580 -5280 -5280 -5280 -F970 -ENDCHAR -STARTCHAR C082 -ENCODING 8478 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 -BITMAP -FE00 -2100 -2080 -2080 -2100 -3E20 -2340 -2180 -2100 -2300 -F4E0 -ENDCHAR -STARTCHAR C082 -ENCODING 8479 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 17 1 -3 -BITMAP -1800 -0600 -0200 -FE00 -2500 -2480 -2480 -2900 -3E00 -2B00 -2900 -3100 -3100 -F8E0 -1000 -2000 -2000 -ENDCHAR -STARTCHAR char8480 -ENCODING 8480 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 7 1 4 -BITMAP -7618 -9330 -8330 -62D0 -12D0 -9210 -E738 -ENDCHAR -STARTCHAR char8480 -ENCODING 8481 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 4 -BITMAP -FBEE00 -A92400 -210400 -21C400 -210400 -212480 -73EF80 -ENDCHAR -STARTCHAR char8480 -ENCODING 8482 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 14 7 1 4 -BITMAP -FB0C -A998 -2198 -2168 -2168 -2108 -739C +3800 +4400 +8200 +8240 +8440 +8FC0 +0040 +0040 ENDCHAR -STARTCHAR C086 -ENCODING 8483 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 17 1 -2 +STARTCHAR 0044 +ENCODING 5674 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 0 0 BITMAP -1800 -0600 -0200 -0400 -F5E0 -2480 -2480 -1900 -1900 -1900 -0A00 -1A00 -1A00 -1400 -1400 -2000 -2000 +F8 +20 +20 +2C +32 +21 +01 +01 +01 +02 +3C ENDCHAR -STARTCHAR C090 -ENCODING 8484 +STARTCHAR 0044 +ENCODING 5675 SWIDTH 540 0 DWIDTH 9 0 -BBX 7 11 1 0 +BBX 8 11 0 0 BITMAP -FE -CA -8A -94 -14 -28 -52 -52 -A2 -A6 -FE +F8 +20 +20 +2C +32 +21 +09 +09 +09 +02 +3C ENDCHAR -STARTCHAR C053 -ENCODING 8485 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 6 15 1 -4 +STARTCHAR 0044 +ENCODING 5676 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 0 0 BITMAP -7C -08 -10 +F8 20 -7C -08 -10 20 -70 -08 +2C +32 +21 +09 +1D +09 +02 +3C +ENDCHAR +STARTCHAR 0044 +ENCODING 5677 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 +BITMAP +1F 04 04 -C4 -88 -70 +34 +4C +84 +80 +80 +80 +40 +3C ENDCHAR -STARTCHAR C087 -ENCODING 8486 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 11 1 0 +STARTCHAR char5678 +ENCODING 5678 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 7 1 0 BITMAP -3E00 +F780 +2200 4100 -8080 -8080 -8080 -8080 4100 4100 2200 -A280 -E380 +1C00 ENDCHAR -STARTCHAR C087 -ENCODING 8487 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 11 1 0 +STARTCHAR char5678 +ENCODING 5679 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 7 1 0 BITMAP -E380 -A280 +1C00 2200 4100 4100 -8080 -8080 -8080 -8080 4100 -3E00 +2200 +F780 ENDCHAR -STARTCHAR C119 -ENCODING 8488 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 11 1 0 +STARTCHAR char5678 +ENCODING 5680 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 9 1 0 BITMAP -78 -84 -02 -22 -44 -38 -44 -02 +80 +B8 +C4 +82 02 -64 -98 -ENDCHAR -STARTCHAR C105 -ENCODING 8489 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 4 7 1 0 -BITMAP -40 -A0 -20 -20 -20 -30 -20 +82 +C4 +B8 +80 ENDCHAR -STARTCHAR C075 -ENCODING 8490 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR char5678 +ENCODING 5681 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 9 1 0 BITMAP -F9E0 -2180 -2300 -2600 -2C00 -2E00 -3200 -2100 -2100 -2080 -F9E0 +80 +B8 +C4 +92 +12 +92 +C4 +B8 +80 ENDCHAR -STARTCHAR C065 -ENCODING 8491 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 15 1 0 +STARTCHAR char5678 +ENCODING 5682 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 9 1 0 BITMAP -0600 -0900 -0900 -0600 -0400 -0400 -0A00 -0A00 -0A00 -1100 -1100 -1F00 -2080 -2080 -F1E0 +80 +B8 +C4 +92 +3A +92 +C4 +B8 +80 ENDCHAR -STARTCHAR C036 -ENCODING 8492 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR char5678 +ENCODING 5683 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 9 1 0 BITMAP -01C0 -0620 -0A20 -1440 -2480 -4BC0 -4C20 -8820 -9020 -9840 -6780 +02 +3A +46 +82 +80 +82 +46 +3A +02 ENDCHAR -STARTCHAR C067 -ENCODING 8493 +STARTCHAR char5678 +ENCODING 5684 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 11 1 0 -BITMAP -1F40 -3180 -6300 -C180 -C080 -C180 -C300 -C000 -6040 -3080 -1F00 -ENDCHAR -STARTCHAR C101 -ENCODING 8494 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 0 +BBX 11 9 1 0 BITMAP -38 -44 -C6 -C6 -FE -C0 -C0 -46 -3C +0020 +0020 +F7E0 +2220 +4120 +4100 +4100 +2200 +1C00 ENDCHAR -STARTCHAR C101 -ENCODING 8495 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 7 1 0 +STARTCHAR char5678 +ENCODING 5685 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 9 1 -2 BITMAP -1C -22 -4C -70 -80 -88 -70 +0700 +0880 +1040 +1040 +9040 +8880 +FDE0 +8000 +8000 ENDCHAR -STARTCHAR char8497 -ENCODING 8496 -SWIDTH 660 0 -DWIDTH 11 0 +STARTCHAR char5678 +ENCODING 5686 +SWIDTH 600 0 +DWIDTH 10 0 BBX 9 11 1 0 BITMAP -0700 -0880 -1080 -1100 -1000 -3C00 -4000 -8F00 -9080 -8100 -7E00 +F800 +2000 +2000 +2E00 +3100 +2080 +0080 +2080 +3100 +2E00 +2000 ENDCHAR -STARTCHAR C036 -ENCODING 8497 -SWIDTH 660 0 -DWIDTH 11 0 +STARTCHAR char5678 +ENCODING 5687 +SWIDTH 600 0 +DWIDTH 10 0 BBX 9 11 1 0 BITMAP -1880 -2700 +F800 +2000 +2000 +2E00 3100 -0200 -7F80 -0400 -0400 -7C00 -8C00 -9200 -6200 +2480 +0480 +2480 +3100 +2E00 +2000 ENDCHAR -STARTCHAR C070 -ENCODING 8498 -SWIDTH 660 0 -DWIDTH 11 0 +STARTCHAR char5678 +ENCODING 5688 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 10 1 0 +BITMAP +E0 +40 +5C +62 +49 +1D +49 +62 +5C +40 +ENDCHAR +STARTCHAR char5678 +ENCODING 5689 +SWIDTH 600 0 +DWIDTH 10 0 BBX 9 11 1 0 BITMAP 0F80 0200 0200 -2200 -2200 -3E00 -2200 -A200 +3A00 +4600 8200 +8000 8200 -FF80 -ENDCHAR -STARTCHAR char8499 -ENCODING 8499 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 16 11 1 0 -BITMAP -00C6 -00C6 -014A -014A -0294 -0294 -04A4 -64A4 -8948 -8949 -7086 -ENDCHAR -STARTCHAR C111 -ENCODING 8500 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 5 7 1 0 -BITMAP -30 -48 -88 -88 -88 -90 -60 -ENDCHAR -STARTCHAR 00E0 -ENCODING 8501 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 11 1 0 -BITMAP -4100 -4100 -6180 -30C0 -1940 -2E40 4600 -4300 -4180 -6080 -C080 +3A00 +0200 ENDCHAR -STARTCHAR 00E1 -ENCODING 8502 +STARTCHAR 0066 +ENCODING 5690 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 11 1 0 +BBX 10 9 1 0 BITMAP -4000 -FC00 -7E00 -0600 -0200 -0200 -0200 -0200 -0200 -7F80 -FF00 +0040 +0040 +83C0 +8240 +9240 +9200 +9200 +9200 +6C00 ENDCHAR -STARTCHAR 00E2 -ENCODING 8503 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 6 11 1 0 +STARTCHAR 0066 +ENCODING 5691 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 9 1 -2 BITMAP -40 -F0 -78 -08 -08 -08 -08 -78 -C8 -8C -88 +0D80 +1240 +1240 +1240 +9240 +9040 +F040 +8000 +8000 ENDCHAR -STARTCHAR 00E3 -ENCODING 8504 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 11 1 0 +STARTCHAR 0066 +ENCODING 5692 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 10 1 0 BITMAP -40 -FE -7F -04 -04 -04 -04 -04 -04 -04 -04 +F800 +2000 +2000 +3F00 +0080 +0080 +0F00 +0080 +0080 +3F00 ENDCHAR -STARTCHAR char185 -ENCODING 8531 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 12 1 0 +STARTCHAR 0066 +ENCODING 5693 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 10 1 0 BITMAP -4200 -C200 -4200 -4400 -4400 -44C0 -E920 -0820 -0840 -1020 -1120 -10C0 +F800 +2000 +2000 +3F00 +0080 +0880 +0F00 +0880 +0080 +3F00 ENDCHAR -STARTCHAR char185 -ENCODING 8532 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 12 1 0 +STARTCHAR 0066 +ENCODING 5694 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 10 1 0 BITMAP -6100 -9100 -1100 -1200 -2200 -4260 -F490 -0410 -0420 -0810 -0890 -0860 +F800 +2000 +2000 +3F00 +0080 +0880 +1F00 +0880 +0080 +3F00 ENDCHAR -STARTCHAR char185 -ENCODING 8533 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 12 1 0 +STARTCHAR 0066 +ENCODING 5695 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 10 1 0 BITMAP -4200 -C200 -4200 -4400 -4400 -45E0 -E900 -0940 -09A0 -1020 -1120 -10C0 +0F80 +0200 +0200 +7E00 +8000 +8000 +7800 +8000 +8000 +7E00 ENDCHAR -STARTCHAR char185 -ENCODING 8534 +STARTCHAR 0074 +ENCODING 5696 SWIDTH 780 0 DWIDTH 13 0 -BBX 12 12 1 0 +BBX 11 11 1 0 BITMAP -6100 -9100 -1100 -1200 -2200 -42F0 -F480 -04A0 -04D0 -0810 -0890 -0860 +8020 +4040 +4040 +4040 +4040 +4040 +4040 +4040 +4040 +2080 +1F00 ENDCHAR -STARTCHAR char185 -ENCODING 8535 +STARTCHAR 0074 +ENCODING 5697 SWIDTH 780 0 DWIDTH 13 0 -BBX 12 12 1 0 -BITMAP -6100 -9100 -1100 -2200 -1200 -92F0 -6480 -04A0 -04D0 -0810 -0890 -0860 -ENDCHAR -STARTCHAR char185 -ENCODING 8536 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 12 1 0 +BBX 11 11 1 0 BITMAP -1080 -3080 -5080 -9100 -F900 -1178 -3A40 -0250 -0268 -0408 -0448 -0430 +1F00 +2080 +4040 +4040 +4040 +4040 +4040 +4040 +4040 +4040 +8020 ENDCHAR -STARTCHAR char185 -ENCODING 8537 +STARTCHAR 0074 +ENCODING 5698 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 12 1 0 -BITMAP -4200 -C200 -4200 -4400 -4400 -44C0 -E920 -0900 -09C0 -1120 -1120 -10C0 -ENDCHAR -STARTCHAR char185 -ENCODING 8538 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 12 1 0 +BBX 11 13 1 -1 BITMAP -F100 -8100 -A100 -D200 -1200 -9260 -6490 -0480 -04E0 -0890 -0890 -0860 +8000 +7F80 +0040 +0020 +0020 +0020 +0020 +0020 +0020 +0020 +0040 +7F80 +8000 ENDCHAR -STARTCHAR char185 -ENCODING 8539 +STARTCHAR 0074 +ENCODING 5699 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 12 1 0 -BITMAP -4200 -C200 -4200 -4400 -4400 -44C0 -E920 -0920 -08C0 -1120 -1120 -10C0 -ENDCHAR -STARTCHAR char185 -ENCODING 8540 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 12 1 0 +BBX 11 13 1 -1 BITMAP -6100 -9100 -1100 -2200 -1200 -9260 -6490 -0490 -0460 -0890 -0890 -0860 +8000 +7F80 +0040 +0020 +0820 +0820 +0820 +0820 +0820 +0020 +0040 +7F80 +8000 ENDCHAR -STARTCHAR char185 -ENCODING 8541 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 12 1 0 +STARTCHAR 0074 +ENCODING 5700 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 13 1 -1 BITMAP -F100 -8100 -A100 -D200 -1200 -9260 -6490 -0490 -0460 -0890 -0890 -0860 +8000 +7F80 +0040 +0020 +0020 +0820 +1C20 +0820 +0020 +0020 +0040 +7F80 +8000 ENDCHAR -STARTCHAR char185 -ENCODING 8542 +STARTCHAR 0074 +ENCODING 5701 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 12 1 0 +BBX 11 12 1 -1 BITMAP -F200 -9200 -2200 -2400 -4400 -44C0 -4920 -0920 -08C0 -1120 -1120 -10C0 +0020 +3FC0 +4000 +8000 +8000 +8000 +8000 +8000 +8000 +4000 +3FC0 +0020 ENDCHAR -STARTCHAR char185 -ENCODING 8543 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 12 1 0 +STARTCHAR char5702 +ENCODING 5702 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 1 6 BITMAP -42 -C2 -42 -44 -44 -44 -E8 -08 -08 -10 -10 +F8 10 +20 +40 +F8 ENDCHAR -STARTCHAR C073 -ENCODING 8544 +STARTCHAR char5702 +ENCODING 5703 SWIDTH 360 0 DWIDTH 6 0 -BBX 5 11 1 0 +BBX 5 9 1 4 BITMAP -F8 20 20 -20 -20 -20 -20 +F8 +30 20 +60 +F8 20 20 -F8 ENDCHAR -STARTCHAR C073 -ENCODING 8545 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 11 1 0 +STARTCHAR 0074 +ENCODING 5704 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 BITMAP -FF -24 -24 -24 -24 -24 -24 -24 -24 -24 -FF +9F20 +4440 +4440 +4440 +4440 +4040 +4040 +4040 +4040 +2080 +1F00 ENDCHAR -STARTCHAR C073 -ENCODING 8546 -SWIDTH 720 0 -DWIDTH 12 0 +STARTCHAR 0074 +ENCODING 5705 +SWIDTH 780 0 +DWIDTH 13 0 BBX 11 11 1 0 BITMAP -FFE0 -2480 -2480 -2480 -2480 -2480 -2480 -2480 -2480 -2480 -FFE0 +1F00 +2080 +4040 +4040 +4040 +4040 +4440 +4440 +4440 +4440 +9F20 ENDCHAR -STARTCHAR C086 -ENCODING 8547 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 11 1 0 +STARTCHAR 0074 +ENCODING 5706 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 13 1 -1 BITMAP -FF8F -2104 -2104 -2088 -2088 -2088 -2050 -2050 -2050 -2020 +8000 +7F80 +0040 +0020 +8020 +8020 F820 +8020 +8020 +0020 +0040 +7F80 +8000 ENDCHAR -STARTCHAR C086 -ENCODING 8548 +STARTCHAR 0074 +ENCODING 5707 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 11 1 0 -BITMAP -F1E0 -2080 -2080 -1100 -1100 -1100 -0A00 -0A00 -0A00 -0400 -0400 -ENDCHAR -STARTCHAR C086 -ENCODING 8549 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 11 1 0 -BITMAP -F1FF -2084 -2084 -1104 -1104 -1104 -0A04 -0A04 -0A04 -0404 -041F -ENDCHAR -STARTCHAR C086 -ENCODING 8550 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 11 1 0 +BBX 11 13 1 -1 BITMAP -F3FF80 -211200 -211200 -121200 -121200 -121200 -121200 -141200 -081200 -081200 -087F80 +8000 +7F80 +0040 +0020 +8120 +8120 +F920 +8120 +8120 +0020 +0040 +7F80 +8000 ENDCHAR -STARTCHAR C086 -ENCODING 8551 -SWIDTH 1260 0 -DWIDTH 21 0 -BBX 20 11 1 0 +STARTCHAR 0074 +ENCODING 5708 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 13 1 -1 BITMAP -F3FFF0 -211240 -211240 -121240 -121240 -121240 -121240 -141240 -081240 -081240 -087FF0 +8000 +7F80 +0040 +0020 +8020 +8120 +FBA0 +8120 +8020 +0020 +0040 +7F80 +8000 ENDCHAR -STARTCHAR C088 -ENCODING 8552 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 11 1 0 +STARTCHAR 0074 +ENCODING 5709 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 13 1 -1 BITMAP -FF9E -2088 -2090 -2050 -2060 -2020 -2050 -20D0 -2088 -2104 -FF8F +0020 +3FC0 +4000 +8000 +8020 +8020 +83E0 +8020 +8020 +8000 +4000 +3FC0 +0020 ENDCHAR -STARTCHAR C088 -ENCODING 8553 +STARTCHAR 0074 +ENCODING 5710 SWIDTH 720 0 DWIDTH 12 0 BBX 11 11 1 0 BITMAP -F3C0 -1100 -1200 -0A00 -0C00 -0400 -0A00 -1A00 +8020 +4040 +4040 +4440 +4440 +4440 +4440 +4440 +4440 +2A80 1100 -2080 -F1E0 -ENDCHAR -STARTCHAR C088 -ENCODING 8554 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 11 1 0 -BITMAP -F3FE -1108 -1208 -0A08 -0C08 -0408 -0A08 -1A08 -1108 -2088 -F1FE ENDCHAR -STARTCHAR C088 -ENCODING 8555 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 18 11 1 0 +STARTCHAR 0074 +ENCODING 5711 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -F3FFC0 -110900 -120900 -0A0900 -0C0900 -040900 -0A0900 -1A0900 -110900 -208900 -F1FFC0 +1100 +2A80 +4440 +4440 +4440 +4440 +4440 +4440 +4040 +4040 +8020 ENDCHAR -STARTCHAR C076 -ENCODING 8556 +STARTCHAR 0074 +ENCODING 5712 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 11 1 0 -BITMAP -F8 -20 -20 -20 -20 -20 -21 -21 -21 -23 -FF -ENDCHAR -STARTCHAR C067 -ENCODING 8557 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 11 1 0 +BBX 8 13 1 -1 BITMAP -1E80 -2180 -4080 -8080 -8000 -8000 -8000 -8080 -4080 -2100 -1E00 +80 +7C +02 +01 +01 +02 +3C +02 +01 +01 +02 +7C +80 ENDCHAR -STARTCHAR C068 -ENCODING 8558 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 11 1 0 +STARTCHAR 0074 +ENCODING 5713 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -FE00 -2180 -2080 -2040 -2040 -2040 -2040 -2040 -2080 -2180 -FE00 +80 +7C +02 +01 +41 +42 +7C +42 +41 +01 +02 +7C +80 ENDCHAR -STARTCHAR C077 -ENCODING 8559 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 11 1 0 +STARTCHAR 0074 +ENCODING 5714 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -F03C -3030 -3030 -2850 -2850 -2890 -2490 -2490 -2310 -2310 -FB7C +80 +7C +02 +01 +01 +42 +FC +42 +01 +01 +02 +7C +80 ENDCHAR -STARTCHAR 0x2170 -ENCODING 8560 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 11 1 0 +STARTCHAR 0074 +ENCODING 5715 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -C0 -C0 -00 -00 -C0 -40 +01 +3E 40 +80 +80 40 +3C 40 +80 +80 40 -E0 -ENDCHAR -STARTCHAR 0x2171 -ENCODING 8561 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 11 1 0 -BITMAP -CC -CC -00 -00 -CC -44 -44 -44 -44 -44 -EE +3E +01 ENDCHAR -STARTCHAR 0x2172 -ENCODING 8562 +STARTCHAR 0074 +ENCODING 5716 SWIDTH 720 0 DWIDTH 12 0 BBX 11 11 1 0 BITMAP -CCC0 -CCC0 -0000 -0000 -CCC0 +8420 4440 +7FC0 4440 4440 4440 4440 -EEE0 +4440 +4440 +2A80 +1100 ENDCHAR -STARTCHAR 0x2173 -ENCODING 8563 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 11 1 0 +STARTCHAR 0074 +ENCODING 5717 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -C000 -C000 -0000 -0000 -CE70 -4240 -4240 -4240 -4180 -4180 -E180 +1100 +2A80 +4440 +4440 +4440 +4440 +4440 +4440 +7FC0 +4440 +8420 ENDCHAR -STARTCHAR C118 -ENCODING 8564 +STARTCHAR 0074 +ENCODING 5718 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 7 1 0 -BITMAP -E7 -24 -24 -24 -18 -18 -18 -ENDCHAR -STARTCHAR 0x2175 -ENCODING 8565 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 11 1 0 -BITMAP -0060 -0060 -0000 -0000 -E760 -2420 -2420 -2420 -1820 -1820 -1870 -ENDCHAR -STARTCHAR 0x2176 -ENCODING 8566 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 11 1 0 +BBX 8 13 1 -1 BITMAP -0066 -0066 -0000 -0000 -E766 -2422 -2422 -2422 -1822 -1822 -1877 +80 +7C +42 +41 +41 +42 +FC +42 +41 +41 +42 +7C +80 ENDCHAR -STARTCHAR 0x2177 -ENCODING 8567 -SWIDTH 1260 0 -DWIDTH 21 0 -BBX 20 11 1 0 +STARTCHAR 0074 +ENCODING 5719 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -006660 -006660 -000000 -000000 -E76660 -242220 -242220 -242220 -182220 -182220 -187770 +80 +7C +42 +41 +51 +52 +FC +52 +51 +41 +42 +7C +80 ENDCHAR -STARTCHAR 0x2178 -ENCODING 8568 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 11 1 0 +STARTCHAR 0074 +ENCODING 5720 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -C000 -C000 -0000 -0000 -CE70 -4240 -4180 -4180 -4180 -4240 -EE70 +80 +7C +42 +41 +41 +52 +FC +52 +41 +41 +42 +7C +80 ENDCHAR -STARTCHAR C120 -ENCODING 8569 +STARTCHAR 0074 +ENCODING 5721 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 7 1 0 +BBX 8 13 1 -1 BITMAP -E7 -24 -18 -18 -18 -24 -E7 +01 +3E +42 +82 +82 +42 +3F +42 +82 +82 +42 +3E +01 ENDCHAR -STARTCHAR 0x217A -ENCODING 8570 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 11 1 0 +STARTCHAR char5382 +ENCODING 5722 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 2 BITMAP -0060 -0060 -0000 -0000 -E760 -2420 -1820 -1820 -1820 -2420 -E770 +20 +20 +70 +A8 +A0 +70 +28 +A8 +70 +20 +20 ENDCHAR -STARTCHAR 0x217B -ENCODING 8571 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 11 1 0 +STARTCHAR 0074 +ENCODING 5723 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -0066 -0066 -0000 -0000 -E766 -2422 -1822 -1822 -1822 -2422 -E777 +9F20 +4440 +7FC0 +4440 +4440 +4440 +4440 +4440 +4440 +2A80 +1100 ENDCHAR -STARTCHAR C108 -ENCODING 8572 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 12 1 0 +STARTCHAR 0074 +ENCODING 5724 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -C0 -40 -40 -40 -40 -40 -40 -40 -40 -40 -40 -E0 +1100 +2A80 +4440 +4440 +4440 +4440 +4440 +4440 +7FC0 +4440 +9F20 ENDCHAR -STARTCHAR C099 -ENCODING 8573 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 7 1 0 +STARTCHAR 0074 +ENCODING 5725 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -70 -88 80 +7C +22 +21 +A1 +A2 +FC +A2 +A1 +21 +22 +7C +80 +ENDCHAR +STARTCHAR 0074 +ENCODING 5726 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 +BITMAP 80 +7C +22 +21 +A9 +AA +FC +AA +A9 +21 +22 +7C 80 -88 -70 ENDCHAR -STARTCHAR C100 -ENCODING 8574 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR 0074 +ENCODING 5727 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -18 -08 -08 -08 -08 -78 -88 -88 -88 -88 -88 +80 +7C +22 +21 +A1 +AA +FC +AA +A1 +21 +22 7C +80 ENDCHAR -STARTCHAR C109 -ENCODING 8575 +STARTCHAR 0074 +ENCODING 5728 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 +BITMAP +01 +3E +44 +84 +85 +45 +3F +45 +85 +84 +44 +3E +01 +ENDCHAR +STARTCHAR 0074 +ENCODING 5729 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 7 1 0 +BBX 11 11 1 0 BITMAP -FB80 +9F20 4440 4440 4440 4440 4440 -EEE0 +4440 +4440 +4440 +2A80 +1100 ENDCHAR -STARTCHAR C067 -ENCODING 8576 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 11 1 0 +STARTCHAR 0074 +ENCODING 5730 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -1FF8 -2186 -4082 -8081 -8081 -8081 -8081 -8081 -4082 -2186 -1FF8 +1100 +2A80 +4440 +4440 +4440 +4440 +4440 +4440 +4440 +4440 +9F20 ENDCHAR -STARTCHAR char8577 -ENCODING 8577 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 11 1 0 +STARTCHAR 0074 +ENCODING 5731 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -FE00 -2180 -3880 -2440 -2240 -2240 -2240 -2440 -3880 -2180 -FE00 +80 +7C +02 +01 +81 +82 +FC +82 +81 +01 +02 +7C +80 ENDCHAR -STARTCHAR C067 -ENCODING 8578 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 11 1 0 +STARTCHAR 0074 +ENCODING 5732 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -1FF8 -2186 -43E2 -8491 -8889 -8889 -8889 -8491 -43E2 -2186 -1FF8 +80 +7C +02 +01 +91 +92 +FC +92 +91 +01 +02 +7C +80 ENDCHAR -STARTCHAR char8592 -ENCODING 8592 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 5 1 4 +STARTCHAR 0074 +ENCODING 5733 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -2000 -4000 -FFE0 -4000 -2000 +80 +7C +02 +01 +81 +92 +FC +92 +81 +01 +02 +7C +80 ENDCHAR -STARTCHAR char8592 -ENCODING 8593 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 1 +STARTCHAR 0074 +ENCODING 5734 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -20 -70 -A8 -20 -20 -20 -20 -20 -20 -20 -20 +01 +3E +40 +80 +81 +41 +3F +41 +81 +80 +40 +3E +01 ENDCHAR -STARTCHAR char8592 -ENCODING 8594 +STARTCHAR 0074 +ENCODING 5735 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 5 1 4 +BBX 11 11 1 0 BITMAP -0080 -0040 -FFE0 -0040 -0080 +9F20 +64C0 +5540 +4E40 +4440 +4440 +4440 +4440 +4440 +2A80 +1100 ENDCHAR -STARTCHAR char8592 -ENCODING 8595 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 1 +STARTCHAR 0074 +ENCODING 5736 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 BITMAP -20 -20 -20 -20 -20 -20 -20 -20 -A8 -70 -20 -ENDCHAR -STARTCHAR char8592 -ENCODING 8596 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 5 1 4 -BITMAP -2080 -4040 -FFE0 -4040 -2080 -ENDCHAR -STARTCHAR char8592 -ENCODING 8597 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 1 -BITMAP -20 -70 -A8 -20 -20 -20 -20 -20 -A8 -70 -20 -ENDCHAR -STARTCHAR char8598 -ENCODING 8598 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 -BITMAP -F000 -C000 -A000 -9000 -0800 -0400 -0200 -0100 -0080 -ENDCHAR -STARTCHAR char8598 -ENCODING 8599 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 -BITMAP -0780 -0180 -0280 -0480 -0800 -1000 -2000 -4000 -8000 -ENDCHAR -STARTCHAR char8598 -ENCODING 8600 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 -BITMAP -8000 -4000 -2000 -1000 -0800 -0480 -0280 -0180 -0780 -ENDCHAR -STARTCHAR char8598 -ENCODING 8601 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 -BITMAP -0080 -0100 -0200 -0400 -0800 -9000 -A000 -C000 -F000 +1100 +2A80 +4440 +4440 +4440 +4440 +4440 +4E40 +5540 +64C0 +9F20 ENDCHAR -STARTCHAR char8592 -ENCODING 8602 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 5 1 4 +STARTCHAR 0074 +ENCODING 5737 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -2080 -4100 -FFE0 -4200 -2400 +80 +FC +82 +41 +A1 +92 +FC +92 +A1 +41 +82 +FC +80 ENDCHAR -STARTCHAR char8592 -ENCODING 8603 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 5 1 4 +STARTCHAR 0074 +ENCODING 5738 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -0480 -0840 -FFE0 -1040 -2080 +80 +FC +42 +41 +A9 +9A +FC +9A +A9 +41 +82 +FC +80 ENDCHAR -STARTCHAR char8592 -ENCODING 8604 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 4 1 5 +STARTCHAR 0074 +ENCODING 5739 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -F000 -C1C0 -A220 -9C10 +80 +FC +82 +41 +A1 +9A +FC +9A +A1 +41 +82 +FC +80 ENDCHAR -STARTCHAR char8592 -ENCODING 8605 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 4 1 5 +STARTCHAR 0074 +ENCODING 5740 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 1 -1 BITMAP -00F0 -3830 -4450 -8390 +01 +3F +41 +82 +85 +49 +3F +49 +85 +82 +41 +3F +01 ENDCHAR -STARTCHAR char8592 -ENCODING 8606 +STARTCHAR char5741 +ENCODING 5741 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 5 1 4 +BBX 11 11 2 0 BITMAP -2800 -5000 -FFE0 -5000 -2800 +C020 +2040 +1080 +0900 +0A00 +0400 +0A00 +1200 +2100 +4080 +8060 ENDCHAR -STARTCHAR char8592 -ENCODING 8607 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 1 +STARTCHAR char5441 +ENCODING 5742 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 5 5 1 0 BITMAP -20 -70 -A8 -70 -A8 -20 -20 -20 -20 -20 +88 +50 20 -ENDCHAR -STARTCHAR char8592 -ENCODING 8608 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 5 1 4 -BITMAP -0280 -0140 -FFE0 -0140 -0280 +50 +88 ENDCHAR -STARTCHAR char8592 -ENCODING 8609 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 1 +STARTCHAR 0066 +ENCODING 5743 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 BITMAP -20 -20 -20 -20 -20 -20 -A8 -70 -A8 -70 -20 +6780 +8840 +8840 +6840 +2840 +27C0 +0040 +0040 +0040 +0040 +0040 ENDCHAR -STARTCHAR char8592 -ENCODING 8610 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 5 1 4 +STARTCHAR 0066 +ENCODING 5744 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 11 1 0 BITMAP -2060 -4180 -FF00 -4180 -2060 +600F00 +901080 +901080 +7C0080 +040080 +048080 +048080 +030080 +000080 +000080 +000080 ENDCHAR -STARTCHAR char8592 -ENCODING 8611 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 5 1 4 -BITMAP -C080 -3040 -1FE0 -3040 -C080 +STARTCHAR 0066 +ENCODING 5745 +SWIDTH 1380 0 +DWIDTH 23 0 +BBX 22 11 1 0 +BITMAP +630078 +948084 +948084 +7BE080 +002080 +002480 +002480 +001880 +000080 +000080 +000080 ENDCHAR -STARTCHAR char8592 -ENCODING 8612 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 7 1 3 -BITMAP -0020 -2020 -4020 -FFE0 -4020 -2020 -0020 +STARTCHAR 0066 +ENCODING 5746 +SWIDTH 1380 0 +DWIDTH 23 0 +BBX 22 15 1 0 +BITMAP +000020 +000070 +000020 +000000 +630078 +948084 +948084 +7BE080 +002080 +002480 +002480 +001880 +000080 +000080 +000080 ENDCHAR -STARTCHAR char8592 -ENCODING 8613 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 11 1 1 -BITMAP -10 -38 -54 -10 -10 -10 -10 -10 -10 -10 -FE +STARTCHAR 0066 +ENCODING 5747 +SWIDTH 1380 0 +DWIDTH 23 0 +BBX 22 11 1 0 +BITMAP +630004 +948004 +948004 +7BE004 +002004 +002404 +002404 +001804 +000084 +000084 +000078 ENDCHAR -STARTCHAR char8592 -ENCODING 8614 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 7 1 3 -BITMAP -8000 -8080 -8040 -FFE0 -8040 -8080 -8000 +STARTCHAR 0066 +ENCODING 5748 +SWIDTH 1440 0 +DWIDTH 24 0 +BBX 23 15 1 0 +BITMAP +000004 +00000E +000004 +000000 +630004 +948004 +948004 +7BE004 +002004 +002404 +002404 +001804 +000084 +000084 +000078 ENDCHAR -STARTCHAR char8592 -ENCODING 8615 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 11 1 1 -BITMAP -FE -10 -10 -10 -10 -10 -10 -10 -54 -38 -10 +STARTCHAR 0066 +ENCODING 5749 +SWIDTH 1380 0 +DWIDTH 23 0 +BBX 22 11 1 0 +BITMAP +630080 +948080 +948080 +7BE080 +002080 +002480 +002480 +001880 +000084 +000084 +000078 ENDCHAR -STARTCHAR char8592 -ENCODING 8616 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 11 1 1 -BITMAP -10 -38 -54 -10 -10 -10 -10 -10 -54 -38 -FE +STARTCHAR 0066 +ENCODING 5750 +SWIDTH 1440 0 +DWIDTH 24 0 +BBX 23 15 1 0 +BITMAP +000040 +0000E0 +000040 +000000 +630040 +948040 +948040 +7BE040 +002040 +002440 +002440 +001840 +000042 +000042 +00003C ENDCHAR -STARTCHAR char8592 -ENCODING 8617 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 7 1 4 +STARTCHAR C065 +ENCODING 7680 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 15 0 -4 BITMAP -01C0 -0020 -2020 -4020 -FFC0 -4000 -2000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 +0C00 +1200 +1200 +0C00 ENDCHAR -STARTCHAR char8592 -ENCODING 8618 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 7 1 4 +STARTCHAR C097 +ENCODING 7681 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 -4 BITMAP -7000 -8000 -8080 -8040 -7FE0 -0040 -0080 +70 +88 +08 +78 +88 +88 +7C +30 +48 +48 +30 ENDCHAR -STARTCHAR char8592 -ENCODING 8619 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 7 1 4 +STARTCHAR C066 +ENCODING 7682 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 14 0 0 BITMAP -01C0 -0220 -2220 -4220 -FFC0 -4200 -2200 +0C00 +0C00 +0000 +FF00 +2080 +2040 +2040 +2080 +3F00 +2080 +2040 +2040 +2080 +FF00 ENDCHAR -STARTCHAR char8592 -ENCODING 8620 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 7 1 4 +STARTCHAR C098 +ENCODING 7683 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 0 BITMAP -7000 -8800 -8880 -8840 -7FE0 -0840 -0880 +30 +30 +00 +C0 +40 +40 +40 +40 +78 +44 +44 +44 +44 +44 +78 ENDCHAR -STARTCHAR char8592 -ENCODING 8621 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 5 1 4 +STARTCHAR C066 +ENCODING 7684 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 14 0 -3 BITMAP -2640 -4920 -E970 -50A0 +FF00 +2080 +2040 2040 +2080 +3F00 +2080 +2040 +2040 +2080 +FF00 +0000 +0C00 +0C00 ENDCHAR -STARTCHAR char8592 -ENCODING 8622 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 5 1 4 +STARTCHAR C098 +ENCODING 7685 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 -3 BITMAP -2140 -4220 -FFF0 -4420 -2840 +C0 +40 +40 +40 +40 +78 +44 +44 +44 +44 +44 +78 +00 +30 +30 ENDCHAR -STARTCHAR char8592 -ENCODING 8623 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 11 1 1 +STARTCHAR C066 +ENCODING 7686 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 13 0 -2 BITMAP -10 -10 -20 -40 -B0 -D0 -20 -A0 -A0 -C0 -F0 +FF00 +2080 +2040 +2040 +2080 +3F00 +2080 +2040 +2040 +2080 +FF00 +0000 +1F00 ENDCHAR -STARTCHAR char8592 -ENCODING 8624 +STARTCHAR C098 +ENCODING 7687 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 11 1 1 +BBX 6 14 1 -2 BITMAP -20 +C0 40 -FC +40 +40 +40 +78 44 -24 -04 -04 -04 -04 -04 -04 +44 +44 +44 +44 +78 +00 +7C ENDCHAR -STARTCHAR char8592 -ENCODING 8625 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 11 1 1 +STARTCHAR C067 +ENCODING 7688 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 19 1 -3 +BITMAP +0400 +0C00 +0800 +1000 +0000 +1E80 +2180 +4080 +8080 +8000 +8000 +8000 +8080 +4080 +2100 +1E00 +0800 +0400 +1C00 +ENDCHAR +STARTCHAR C099 +ENCODING 7689 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 15 1 -3 BITMAP 10 -08 -FC +30 +20 +40 +00 +70 88 -90 -80 -80 -80 80 80 80 +88 +70 +20 +10 +70 ENDCHAR -STARTCHAR char8592 -ENCODING 8626 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 11 1 1 +STARTCHAR C068 +ENCODING 7690 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 14 0 0 BITMAP -04 -04 -04 -04 -04 -04 -24 -44 -FC -40 -20 +0C00 +0C00 +0000 +FE00 +2180 +2080 +2040 +2040 +2040 +2040 +2040 +2080 +2180 +FE00 ENDCHAR -STARTCHAR char8592 -ENCODING 8627 +STARTCHAR C100 +ENCODING 7691 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 11 1 1 +BBX 6 15 1 0 BITMAP -80 -80 -80 -80 -80 -80 -90 -88 -FC +30 +30 +00 +18 08 -10 +08 +08 +08 +78 +88 +88 +88 +88 +88 +7C ENDCHAR -STARTCHAR char8592 -ENCODING 8628 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 6 1 2 +STARTCHAR C068 +ENCODING 7692 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 14 0 -3 BITMAP -FC -04 -04 -15 -0E -04 +FE00 +2180 +2080 +2040 +2040 +2040 +2040 +2040 +2080 +2180 +FE00 +0000 +0C00 +0C00 ENDCHAR -STARTCHAR char8592 -ENCODING 8629 +STARTCHAR C100 +ENCODING 7693 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 8 1 1 +BBX 6 15 1 -3 BITMAP -04 -04 -04 -24 -44 -FC -40 -20 +18 +08 +08 +08 +08 +78 +88 +88 +88 +88 +88 +7C +00 +30 +30 ENDCHAR -STARTCHAR char8630 -ENCODING 8630 +STARTCHAR C068 +ENCODING 7694 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 8 1 1 +BBX 10 13 0 -2 BITMAP -0F80 -1040 -2020 -2020 -2020 -A820 -7000 -2000 +FE00 +2180 +2080 +2040 +2040 +2040 +2040 +2040 +2080 +2180 +FE00 +0000 +3E00 ENDCHAR -STARTCHAR char8630 -ENCODING 8631 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 11 8 1 1 +STARTCHAR C100 +ENCODING 7695 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 14 1 -2 BITMAP -3E00 -4100 -8080 -8080 -8080 -82A0 -01C0 -0080 +18 +08 +08 +08 +08 +78 +88 +88 +88 +88 +88 +7C +00 +F8 ENDCHAR -STARTCHAR char8598 -ENCODING 8632 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 11 1 1 +STARTCHAR C068 +ENCODING 7696 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 14 0 -3 BITMAP -FF80 -0000 -F000 -C000 -A000 -9000 +FE00 +2180 +2080 +2040 +2040 +2040 +2040 +2040 +2080 +2180 +FE00 0800 0400 -0200 -0100 -0080 +1C00 ENDCHAR -STARTCHAR char8592 -ENCODING 8633 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 13 1 0 +STARTCHAR C100 +ENCODING 7697 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 -3 BITMAP -8000 -9000 -A000 -FFF0 -A000 -9000 -8010 -0090 -0050 -FFF0 -0050 -0090 -0010 +18 +08 +08 +08 +08 +78 +88 +88 +88 +88 +88 +7C +20 +10 +70 ENDCHAR -STARTCHAR char8630 -ENCODING 8634 +STARTCHAR C032 +ENCODING 7698 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 7 1 2 +BBX 10 15 0 -4 BITMAP -03C0 -4300 -8280 -8280 -8080 -4100 -3E00 +FE00 +2180 +2080 +2040 +2040 +2040 +2040 +2040 +2080 +2180 +FE00 +0000 +0800 +1C00 +2200 ENDCHAR -STARTCHAR char8630 -ENCODING 8635 +STARTCHAR C100 +ENCODING 7699 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 +BITMAP +18 +08 +08 +08 +08 +78 +88 +88 +88 +88 +88 +7C +00 +20 +70 +88 +ENDCHAR +STARTCHAR C069 +ENCODING 7700 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 7 1 2 +BBX 10 18 0 0 BITMAP -F000 -3080 -5040 -5040 -4040 +1000 +1800 +0800 +0400 +0000 +3E00 +0000 +FF80 2080 -1F00 +2080 +2280 +2200 +3E00 +2240 +2240 +2080 +2080 +FF80 ENDCHAR -STARTCHAR char8592 -ENCODING 8636 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 3 1 6 +STARTCHAR C101 +ENCODING 7701 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 14 1 0 BITMAP -2000 -4000 -FFE0 +40 +60 +20 +10 +00 +F8 +00 +70 +88 +F8 +80 +80 +88 +70 ENDCHAR -STARTCHAR char8592 -ENCODING 8637 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 3 1 6 +STARTCHAR C069 +ENCODING 7702 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 18 0 0 BITMAP -FFE0 -4000 -2000 +0400 +0C00 +0800 +1000 +0000 +3E00 +0000 +FF80 +2080 +2080 +2280 +2200 +3E00 +2240 +2240 +2080 +2080 +FF80 ENDCHAR -STARTCHAR char8592 -ENCODING 8638 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 11 1 1 +STARTCHAR C101 +ENCODING 7703 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 14 1 0 BITMAP -80 -C0 -A0 -80 -80 -80 -80 -80 -80 +10 +30 +20 +40 +00 +F8 +00 +70 +88 +F8 80 80 +88 +70 ENDCHAR -STARTCHAR char8592 -ENCODING 8639 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 11 1 1 +STARTCHAR C069 +ENCODING 7704 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 0 -4 BITMAP -20 -60 -A0 -20 -20 -20 -20 -20 -20 -20 -20 +FF80 +2080 +2080 +2280 +2200 +3E00 +2240 +2240 +2080 +2080 +FF80 +0000 +0800 +1C00 +2200 ENDCHAR -STARTCHAR char8592 -ENCODING 8640 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 3 1 6 +STARTCHAR C101 +ENCODING 7705 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 -4 BITMAP -0080 -0040 -FFE0 +70 +88 +F8 +80 +80 +88 +70 +00 +20 +70 +88 ENDCHAR -STARTCHAR char8592 -ENCODING 8641 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 3 1 6 +STARTCHAR C069 +ENCODING 7706 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 0 -4 BITMAP -FFE0 -0040 -0080 +FF80 +2080 +2080 +2280 +2200 +3E00 +2240 +2240 +2080 +2080 +FF80 +0000 +1200 +2A00 +2400 ENDCHAR -STARTCHAR char8592 -ENCODING 8642 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 11 1 1 +STARTCHAR C101 +ENCODING 7707 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 -4 BITMAP +70 +88 +F8 80 -80 -80 -80 -80 -80 -80 -80 -A0 -C0 80 -ENDCHAR -STARTCHAR char8592 -ENCODING 8643 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 3 11 1 1 -BITMAP -20 -20 -20 -20 -20 -20 -20 -20 -A0 -60 -20 +88 +70 +00 +48 +A8 +90 ENDCHAR -STARTCHAR char8592 -ENCODING 8644 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 11 1 1 +STARTCHAR C069 +ENCODING 7708 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 17 0 -3 BITMAP -0080 -0040 -FFE0 -0040 -0080 +2100 +1E00 0000 -2000 -4000 -FFE0 -4000 -2000 -ENDCHAR -STARTCHAR char8592 -ENCODING 8645 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 11 1 1 -BITMAP -2080 -7080 -A880 -2080 -2080 +FF80 2080 2080 +2280 +2200 +3E00 +2240 +2240 2080 -22A0 -21C0 2080 +FF80 +0800 +0400 +1C00 ENDCHAR -STARTCHAR char8592 -ENCODING 8646 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 11 1 1 +STARTCHAR C101 +ENCODING 7709 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 13 0 -3 BITMAP -2000 -4000 -FFE0 -4000 -2000 -0000 -0080 -0040 -FFE0 -0040 -0080 +84 +78 +00 +38 +44 +7C +40 +40 +44 +38 +10 +08 +38 ENDCHAR -STARTCHAR char8592 -ENCODING 8647 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 11 1 1 +STARTCHAR C070 +ENCODING 7710 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 14 0 0 BITMAP -2000 -4000 -FFE0 -4000 -2000 +1800 +1800 0000 +FF80 +2080 +2080 +2280 +2200 +3E00 +2200 +2200 2000 -4000 -FFE0 -4000 2000 +F800 ENDCHAR -STARTCHAR char8592 -ENCODING 8648 +STARTCHAR C102 +ENCODING 7711 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 15 1 0 +BITMAP +60 +60 +00 +38 +48 +40 +40 +40 +F0 +40 +40 +40 +40 +40 +E0 +ENDCHAR +STARTCHAR C071 +ENCODING 7712 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 13 1 0 +BITMAP +3E00 +0000 +1E80 +2180 +4080 +8080 +8000 +8000 +83C0 +8080 +4080 +2080 +1F80 +ENDCHAR +STARTCHAR C103 +ENCODING 7713 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 13 1 -4 +BITMAP +7C +00 +3E +44 +44 +44 +78 +40 +7C +82 +82 +82 +7C +ENDCHAR +STARTCHAR C072 +ENCODING 7714 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 11 1 1 +BBX 11 14 0 0 BITMAP -2080 -71C0 -AAA0 +0C00 +0C00 +0000 +FBE0 2080 2080 2080 2080 +3F80 2080 2080 2080 2080 +FBE0 ENDCHAR -STARTCHAR char8592 -ENCODING 8649 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 11 1 1 +STARTCHAR C104 +ENCODING 7715 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 15 1 0 BITMAP -0080 -0040 -FFE0 -0040 -0080 -0000 -0080 -0040 -FFE0 -0040 -0080 +30 +30 +00 +C0 +40 +40 +40 +40 +78 +44 +44 +44 +44 +44 +EE ENDCHAR -STARTCHAR char8592 -ENCODING 8650 +STARTCHAR C072 +ENCODING 7716 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 11 1 1 +BBX 11 14 0 -3 BITMAP -2080 +FBE0 2080 2080 2080 2080 +3F80 2080 2080 2080 -AAA0 -71C0 2080 -ENDCHAR -STARTCHAR char8592 -ENCODING 8651 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 8 1 3 -BITMAP -2000 -4000 -FFE0 -0000 +FBE0 0000 -FFE0 -0040 -0080 +0C00 +0C00 ENDCHAR -STARTCHAR char8592 -ENCODING 8652 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 8 1 3 +STARTCHAR C104 +ENCODING 7717 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 15 1 -3 BITMAP -0080 -0040 -FFE0 -0000 -0000 -FFE0 -4000 -2000 +C0 +40 +40 +40 +40 +78 +44 +44 +44 +44 +44 +EE +00 +18 +18 ENDCHAR -STARTCHAR char8592 -ENCODING 8653 +STARTCHAR C072 +ENCODING 7718 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 7 1 3 +BBX 11 14 0 0 BITMAP -1080 +1B00 +1B00 +0000 +FBE0 2080 -7FE0 -8100 -7FE0 -2200 -1200 -ENDCHAR -STARTCHAR char8592 -ENCODING 8654 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 13 7 1 3 -BITMAP -1140 -2120 -7FF0 -8208 -7FF0 -2420 -1440 -ENDCHAR -STARTCHAR char8592 -ENCODING 8655 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 7 1 3 -BITMAP -0900 -0880 -FFC0 -1020 -FFC0 2080 -2100 -ENDCHAR -STARTCHAR char8592 -ENCODING 8656 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 7 1 3 -BITMAP -1000 -2000 -7FE0 -8000 -7FE0 -2000 -1000 +2080 +2080 +3F80 +2080 +2080 +2080 +2080 +FBE0 ENDCHAR -STARTCHAR char8592 -ENCODING 8657 +STARTCHAR C104 +ENCODING 7719 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 11 1 1 +BBX 7 15 1 0 BITMAP -10 -28 -6C -AA -28 -28 -28 -28 -28 -28 -28 +D8 +D8 +00 +C0 +40 +40 +40 +40 +78 +44 +44 +44 +44 +44 +EE ENDCHAR -STARTCHAR char8592 -ENCODING 8658 +STARTCHAR C072 +ENCODING 7720 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 7 1 3 +BBX 11 14 0 -3 BITMAP -0100 -0080 -FFC0 -0020 -FFC0 -0080 -0100 +FBE0 +2080 +2080 +2080 +2080 +3F80 +2080 +2080 +2080 +2080 +FBE0 +1000 +0800 +3800 ENDCHAR -STARTCHAR char8592 -ENCODING 8659 +STARTCHAR C104 +ENCODING 7721 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 11 1 1 +BBX 7 15 1 -3 BITMAP -28 -28 -28 -28 -28 -28 -28 -AA -6C -28 -10 +C0 +40 +40 +40 +40 +78 +44 +44 +44 +44 +44 +EE +40 +20 +E0 ENDCHAR -STARTCHAR char8592 -ENCODING 8660 +STARTCHAR C072 +ENCODING 7722 SWIDTH 720 0 DWIDTH 12 0 -BBX 12 7 1 3 +BBX 11 14 0 -3 BITMAP -1080 -2040 -7FE0 -8010 -7FE0 -2040 +FBE0 +2080 +2080 +2080 +2080 +3F80 +2080 +2080 +2080 +2080 +FBE0 +0000 1080 +0F00 ENDCHAR -STARTCHAR char8592 -ENCODING 8661 +STARTCHAR C104 +ENCODING 7723 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 12 1 0 -BITMAP -10 -28 -6C -AA -28 -28 -28 -28 -AA -6C -28 -10 -ENDCHAR -STARTCHAR char8598 -ENCODING 8662 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 10 1 1 -BITMAP -F800 -9000 -8800 -C400 -A200 -1100 -0880 -0440 -0200 -0100 -ENDCHAR -STARTCHAR char8598 -ENCODING 8663 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 10 1 1 -BITMAP -07C0 -0240 -0440 -08C0 -1140 -2200 -4400 -8800 -1000 -2000 -ENDCHAR -STARTCHAR char8598 -ENCODING 8664 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 10 1 1 -BITMAP -2000 -1000 -8800 -4400 -2200 -1140 -08C0 -0440 -0240 -07C0 -ENDCHAR -STARTCHAR char8598 -ENCODING 8665 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 10 1 1 -BITMAP -0100 -0200 -0440 -0880 -1100 -A200 -C400 -8800 -9000 -F800 -ENDCHAR -STARTCHAR char8592 -ENCODING 8666 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 7 1 3 -BITMAP -1000 -3FE0 -4000 -FFE0 -4000 -3FE0 -1000 -ENDCHAR -STARTCHAR char8592 -ENCODING 8667 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 7 1 3 -BITMAP -0100 -FF80 -0040 -FFE0 -0040 -FF80 -0100 -ENDCHAR -STARTCHAR char8592 -ENCODING 8668 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 5 1 4 -BITMAP -2000 -4880 -F550 -4220 -2000 -ENDCHAR -STARTCHAR char8592 -ENCODING 8669 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 5 1 4 +BBX 7 15 1 -3 BITMAP -0040 -1120 -AAF0 -4420 -0040 +C0 +40 +40 +40 +40 +78 +44 +44 +44 +44 +44 +EE +00 +42 +3C ENDCHAR -STARTCHAR char8592 -ENCODING 8670 +STARTCHAR C073 +ENCODING 7724 SWIDTH 360 0 DWIDTH 6 0 -BBX 5 11 1 1 +BBX 5 15 1 -4 BITMAP +F8 20 -70 -A8 20 20 -F8 20 -F8 20 20 20 +20 +20 +F8 +00 +48 +A8 +90 ENDCHAR -STARTCHAR char8592 -ENCODING 8671 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 1 +STARTCHAR C105 +ENCODING 7725 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 5 11 0 -4 BITMAP +60 20 20 20 -F8 -20 -F8 20 20 -A8 70 -20 -ENDCHAR -STARTCHAR char8592 -ENCODING 8672 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 5 1 4 -BITMAP -2000 -4000 -EEE0 -4000 -2000 +00 +48 +A8 +90 ENDCHAR -STARTCHAR char8592 -ENCODING 8673 +STARTCHAR C073 +ENCODING 7726 SWIDTH 360 0 DWIDTH 6 0 -BBX 5 11 1 1 +BBX 5 19 1 0 BITMAP +10 +30 20 -70 -A8 +40 +00 +D8 +D8 00 +F8 20 20 20 -00 20 20 20 -ENDCHAR -STARTCHAR char8592 -ENCODING 8674 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 5 1 4 -BITMAP -0080 -0040 -EEE0 -0040 -0080 +20 +20 +20 +F8 ENDCHAR -STARTCHAR char8592 -ENCODING 8675 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 1 +STARTCHAR C105 +ENCODING 7727 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 5 15 0 0 BITMAP +10 +30 20 +40 +00 +D8 +D8 +00 +60 20 20 -00 20 20 20 -00 -A8 70 -20 -ENDCHAR -STARTCHAR char8592 -ENCODING 8676 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 7 1 3 -BITMAP -8000 -9000 -A000 -FFF0 -A000 -9000 -8000 ENDCHAR -STARTCHAR char8592 -ENCODING 8677 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 7 1 3 +STARTCHAR C075 +ENCODING 7728 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 16 1 0 BITMAP -0010 -0090 -0050 -FFF0 -0050 -0090 -0010 +0200 +0600 +0400 +0800 +0000 +F9E0 +2080 +2100 +2200 +2400 +2E00 +3200 +2100 +2100 +2080 +F9E0 ENDCHAR -STARTCHAR char8592 -ENCODING 8678 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 9 1 2 +STARTCHAR C107 +ENCODING 7729 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 17 1 0 BITMAP -0800 -1800 -2FF0 -4010 -8010 -4010 -2FF0 -1800 -0800 -ENDCHAR -STARTCHAR char8592 -ENCODING 8679 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 12 1 1 -BITMAP -0800 -1400 -2200 -4100 -E380 -2200 -2200 -2200 -2200 -2200 -2200 -3E00 -ENDCHAR -STARTCHAR char8592 -ENCODING 8680 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 9 1 2 -BITMAP -0100 -0180 -FF40 -8020 -8010 -8020 -FF40 -0180 -0100 +08 +18 +10 +20 +00 +C0 +40 +40 +40 +40 +5E +48 +50 +70 +58 +48 +EE ENDCHAR -STARTCHAR char8592 -ENCODING 8681 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 12 1 1 +STARTCHAR C075 +ENCODING 7730 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 14 1 -3 BITMAP -3E00 -2200 -2200 -2200 -2200 -2200 -2200 -E380 -4100 +F9E0 +2080 +2100 2200 -1400 -0800 +2400 +2E00 +3200 +2100 +2100 +2080 +F9E0 +0000 +0600 +0600 ENDCHAR -STARTCHAR char8592 -ENCODING 8682 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 17 1 0 +STARTCHAR C107 +ENCODING 7731 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 15 1 -3 BITMAP -0800 -1400 -2200 -4100 -E380 -2200 -2200 -2200 -2200 -2200 -2200 -3E00 -0000 -3E00 -2200 -2200 -3E00 +C0 +40 +40 +40 +40 +5E +48 +50 +70 +58 +48 +EE +00 +30 +30 ENDCHAR -STARTCHAR C068 -ENCODING 8704 +STARTCHAR C075 +ENCODING 7732 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 11 1 0 +BBX 11 13 1 -2 BITMAP -8020 -8020 -4040 -4040 -3F80 +F9E0 2080 -1100 -1100 -0A00 -0A00 -0400 -ENDCHAR -STARTCHAR C067 -ENCODING 8705 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 11 1 0 -BITMAP -78 -84 -84 -80 -80 -80 -80 -80 -84 -84 -78 +2100 +2200 +2400 +2E00 +3200 +2100 +2100 +2080 +F9E0 +0000 +1F00 ENDCHAR -STARTCHAR C100 -ENCODING 8706 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 11 1 0 +STARTCHAR C107 +ENCODING 7733 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 14 1 -2 BITMAP -60 -10 -10 -08 -38 +C0 +40 +40 +40 +40 +5E 48 -88 -88 -88 -90 -60 -ENDCHAR -STARTCHAR C069 -ENCODING 8707 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 11 1 0 -BITMAP -FF -01 -01 -01 -01 -FF -01 -01 -01 -01 -FF +50 +70 +58 +48 +EE +00 +7C ENDCHAR -STARTCHAR C069 -ENCODING 8708 +STARTCHAR C076 +ENCODING 7734 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 15 1 -2 +BBX 8 14 0 -3 BITMAP -02 -02 -FF -05 -05 -05 -09 -FF -09 -09 -11 -11 -FF +F8 20 20 -ENDCHAR -STARTCHAR C079 -ENCODING 8709 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 11 1 0 -BITMAP -1F20 -20C0 -40C0 -8120 -8220 -8420 -8820 -9020 -6040 -6080 -9F00 -ENDCHAR -STARTCHAR C068 -ENCODING 8710 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 11 1 0 -BITMAP -0400 -0E00 -0E00 -1300 -1300 -2180 -2180 -40C0 -40C0 -8060 -FFE0 -ENDCHAR -STARTCHAR C068 -ENCODING 8711 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 11 1 0 -BITMAP -FFE0 -8060 -40C0 -40C0 -2180 -2180 -1300 -1300 -0E00 -0E00 -0400 +20 +20 +20 +21 +21 +21 +23 +FF +00 +18 +18 ENDCHAR -STARTCHAR C069 -ENCODING 8712 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 11 1 0 +STARTCHAR C108 +ENCODING 7735 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 15 1 -3 BITMAP -1F -20 +C0 40 -80 -80 -FF -80 -80 40 -20 -1F +40 +40 +40 +40 +40 +40 +40 +40 +E0 +00 +60 +60 ENDCHAR -STARTCHAR C069 -ENCODING 8713 +STARTCHAR C076 +ENCODING 7736 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 15 1 -2 +BBX 8 16 0 -3 BITMAP -02 -02 -1F -24 -44 -84 -88 -FF -88 -88 -50 -30 -1F +F8 +00 +F8 +20 20 20 +20 +20 +21 +21 +21 +23 +FF +00 +18 +18 ENDCHAR -STARTCHAR C069 -ENCODING 8714 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 7 1 2 +STARTCHAR C108 +ENCODING 7737 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 5 17 0 -3 BITMAP -3E -40 -80 -FE -80 -40 -3E +F8 +00 +60 +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +70 +00 +30 +30 ENDCHAR -STARTCHAR C069 -ENCODING 8715 +STARTCHAR C076 +ENCODING 7738 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 11 1 0 +BBX 8 13 0 -2 BITMAP F8 -04 -02 -01 -01 +20 +20 +20 +20 +20 +21 +21 +21 +23 FF -01 -01 -02 -04 +00 +3E +ENDCHAR +STARTCHAR C108 +ENCODING 7739 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 5 14 0 -2 +BITMAP +60 +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +70 +00 F8 ENDCHAR -STARTCHAR C069 -ENCODING 8716 +STARTCHAR C076 +ENCODING 7740 SWIDTH 540 0 DWIDTH 9 0 -BBX 8 15 1 -2 +BBX 8 15 0 -4 BITMAP -40 -40 F8 -24 -22 +20 +20 +20 +20 +20 21 -11 +21 +21 +23 FF -11 -11 -0A -0C -F8 -04 -04 +00 +10 +38 +44 ENDCHAR -STARTCHAR C069 -ENCODING 8717 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 7 1 2 +STARTCHAR C108 +ENCODING 7741 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 5 16 0 -4 BITMAP -F8 -04 -02 -FE -02 -04 -F8 +60 +20 +20 +20 +20 +20 +20 +20 +20 +20 +20 +70 +00 +20 +70 +88 ENDCHAR -STARTCHAR char9632 -ENCODING 8718 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 9 1 1 +STARTCHAR C077 +ENCODING 7742 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 16 1 0 BITMAP -F8 -F8 -F8 -F8 -F8 -F8 -F8 -F8 -F8 +0100 +0300 +0200 +0400 +0000 +F03C +3030 +3030 +2850 +2850 +2890 +2490 +2490 +2310 +2310 +FB7C ENDCHAR -STARTCHAR C080 -ENCODING 8719 +STARTCHAR C109 +ENCODING 7743 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 11 0 0 +BBX 11 12 1 0 BITMAP -FFE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -FBE0 +0200 +0600 +0400 +0800 +0000 +FB80 +4440 +4440 +4440 +4440 +4440 +E660 ENDCHAR -STARTCHAR C080 -ENCODING 8720 +STARTCHAR C077 +ENCODING 7744 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 14 1 0 +BITMAP +0300 +0300 +0000 +F03C +3030 +3030 +2850 +2850 +2890 +2490 +2490 +2310 +2310 +FB7C +ENDCHAR +STARTCHAR C109 +ENCODING 7745 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 11 0 0 +BBX 11 10 1 0 BITMAP -FBE0 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -FFE0 +0C00 +0C00 +0000 +FB80 +4440 +4440 +4440 +4440 +4440 +E660 ENDCHAR -STARTCHAR C083 -ENCODING 8721 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 11 1 0 +STARTCHAR C077 +ENCODING 7746 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 14 1 -3 BITMAP -FF80 -4180 -2080 -2080 -1000 -1800 -1000 -2080 -2080 -4180 -FF80 +F03C +3030 +3030 +2850 +2850 +2890 +2490 +2490 +2310 +2310 +FB7C +0000 +0300 +0300 ENDCHAR -STARTCHAR C043 -ENCODING 8722 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 1 1 5 +STARTCHAR C109 +ENCODING 7747 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 10 1 -3 BITMAP -FE +FB80 +4440 +4440 +4440 +4440 +4440 +E660 +0000 +0C00 +0C00 ENDCHAR -STARTCHAR char177 -ENCODING 8723 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 1 +STARTCHAR C078 +ENCODING 7748 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 14 1 0 BITMAP -FE -00 -10 -10 -10 -FE -10 -10 -10 +0C00 +0C00 +0000 +E3E0 +3080 +3080 +2880 +2880 +2480 +2280 +2280 +2180 +2180 +F880 ENDCHAR -STARTCHAR char177 -ENCODING 8724 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 11 1 1 +STARTCHAR C110 +ENCODING 7749 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 10 1 0 BITMAP -10 -38 -10 +30 +30 00 -10 -10 -10 -FE -10 -10 -10 -ENDCHAR -STARTCHAR C047 -ENCODING 8725 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 16 1 -4 -BITMAP -01 -01 -02 -02 -04 -04 -08 -08 -10 -10 -20 -20 -40 -40 -80 -80 +F8 +44 +44 +44 +44 +44 +EE ENDCHAR -STARTCHAR C047 -ENCODING 8726 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 6 12 1 0 +STARTCHAR C078 +ENCODING 7750 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 14 1 -3 BITMAP -80 -80 -40 -40 -20 -20 -10 -10 -08 -08 -04 -04 +E3E0 +3080 +3080 +2880 +2880 +2480 +2280 +2280 +2180 +2180 +F880 +0000 +0C00 +0C00 ENDCHAR -STARTCHAR C042 -ENCODING 8727 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 7 1 2 +STARTCHAR C110 +ENCODING 7751 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 10 1 -3 BITMAP -10 -92 -54 -38 -54 -92 -10 +F8 +44 +44 +44 +44 +44 +EE +00 +18 +18 ENDCHAR -STARTCHAR C023 -ENCODING 8728 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 4 4 1 4 +STARTCHAR C078 +ENCODING 7752 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 13 1 -2 BITMAP -60 -90 -90 -60 +E3E0 +3080 +3080 +2880 +2880 +2480 +2280 +2280 +2180 +2180 +F880 +0000 +1F00 ENDCHAR -STARTCHAR C023 -ENCODING 8729 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 4 4 1 4 +STARTCHAR C110 +ENCODING 7753 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 9 1 -2 BITMAP -60 -F0 -F0 -60 +F8 +44 +44 +44 +44 +44 +EE +00 +7C ENDCHAR -STARTCHAR C068 -ENCODING 8730 +STARTCHAR C078 +ENCODING 7754 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 11 1 0 +BBX 11 15 1 -4 BITMAP -0020 -0020 -0040 -0040 -F080 +E3E0 3080 -1900 -1900 -0E00 -0E00 +3080 +2880 +2880 +2480 +2280 +2280 +2180 +2180 +F880 +0000 0400 +0E00 +1100 ENDCHAR -STARTCHAR C068 -ENCODING 8731 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 14 1 0 +STARTCHAR C110 +ENCODING 7755 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 -4 BITMAP -0600 -0900 -0100 -0220 -0120 -0940 -0640 -F080 -3080 -1900 -1900 -0E00 -0E00 -0400 +F8 +4C +44 +44 +44 +44 +EE +00 +10 +38 +44 ENDCHAR -STARTCHAR C068 -ENCODING 8732 +STARTCHAR C079 +ENCODING 7756 SWIDTH 720 0 DWIDTH 12 0 -BBX 11 14 1 0 +BBX 10 20 1 0 BITMAP -0200 -0600 -0A00 -1220 -1F20 -0240 -0740 -F080 -3080 -1900 -1900 -0E00 -0E00 0400 +0C00 +0800 +1000 +0000 +1200 +2A00 +2400 +0000 +1E00 +2100 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 ENDCHAR -STARTCHAR char8733 -ENCODING 8733 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 5 1 3 +STARTCHAR C111 +ENCODING 7757 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 16 1 0 BITMAP -7180 -8A00 -8400 -8A00 -7180 +10 +30 +20 +40 +00 +48 +A8 +90 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char8733 -ENCODING 8734 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 5 1 3 +STARTCHAR C079 +ENCODING 7758 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 18 1 0 BITMAP -71C0 -8A20 -8420 -8A20 -71C0 +3600 +3600 +0000 +1200 +2A00 +2400 +0000 +1E00 +2100 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 ENDCHAR -STARTCHAR char8735 -ENCODING 8735 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 7 1 2 +STARTCHAR C111 +ENCODING 7759 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 14 1 0 BITMAP -80 -80 -80 -80 -80 -80 -FE +D8 +D8 +00 +48 +A8 +90 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char8735 -ENCODING 8736 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 7 1 2 +STARTCHAR C079 +ENCODING 7760 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 18 1 0 BITMAP -04 -08 +1000 +1800 +0800 +0400 +0000 +3E00 +0000 +1E00 +2100 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 +ENDCHAR +STARTCHAR C111 +ENCODING 7761 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 14 1 0 +BITMAP +40 +60 +20 +10 +00 +F8 +00 +70 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR C079 +ENCODING 7762 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 18 1 0 +BITMAP +0400 +0C00 +0800 +1000 +0000 +3E00 +0000 +1E00 +2100 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 +ENDCHAR +STARTCHAR C111 +ENCODING 7763 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 14 1 0 +BITMAP 10 +30 20 40 -80 -FE +00 +F8 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char8735 -ENCODING 8737 +STARTCHAR C080 +ENCODING 7764 SWIDTH 600 0 DWIDTH 10 0 -BBX 8 9 1 0 +BBX 9 16 0 0 BITMAP -04 -68 -10 -28 -44 -84 -FF -04 -04 +0400 +0C00 +0800 +1000 +0000 +FF00 +2180 +2080 +2080 +2180 +3F00 +2000 +2000 +2000 +2000 +F800 ENDCHAR -STARTCHAR char8735 -ENCODING 8738 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 1 +STARTCHAR C112 +ENCODING 7765 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 -3 BITMAP -20 -16 -18 -68 -88 -68 -18 -16 +10 +30 20 +40 +00 +F8 +44 +44 +44 +44 +44 +78 +40 +40 +E0 ENDCHAR -STARTCHAR char123 -ENCODING 8739 -SWIDTH 180 0 -DWIDTH 3 0 -BBX 1 12 1 0 +STARTCHAR C080 +ENCODING 7766 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 14 0 0 BITMAP -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 +1800 +1800 +0000 +FF00 +2180 +2080 +2080 +2180 +3F00 +2000 +2000 +2000 +2000 +F800 ENDCHAR -STARTCHAR char123 -ENCODING 8740 +STARTCHAR C112 +ENCODING 7767 SWIDTH 420 0 DWIDTH 7 0 -BBX 5 12 1 0 +BBX 6 13 1 -3 BITMAP -20 -20 -20 -28 30 -20 +30 +00 +F8 +44 +44 +44 +44 +44 +78 +40 +40 +E0 +ENDCHAR +STARTCHAR C082 +ENCODING 7768 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 14 1 0 +BITMAP +1800 +1800 +0000 +FE00 +2100 +2080 +2080 +2100 +3E00 +2300 +2100 +2100 +2100 +F8E0 +ENDCHAR +STARTCHAR C114 +ENCODING 7769 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 10 1 0 +BITMAP 60 -A0 -20 -20 -20 -20 +60 +00 +D0 +68 +40 +40 +40 +40 +F0 ENDCHAR -STARTCHAR char123 -ENCODING 8741 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 3 12 1 0 +STARTCHAR C082 +ENCODING 7770 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 14 1 -3 BITMAP -A0 -A0 -A0 -A0 -A0 -A0 -A0 -A0 -A0 -A0 -A0 -A0 +FE00 +2100 +2080 +2080 +2100 +3E00 +2300 +2100 +2100 +2100 +F8E0 +0000 +0C00 +0C00 ENDCHAR -STARTCHAR char123 -ENCODING 8742 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 12 1 0 +STARTCHAR C114 +ENCODING 7771 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 10 1 -3 BITMAP -28 -28 -2A -2C -28 -38 -28 +D0 68 -A8 -28 -28 -28 +40 +40 +40 +40 +F0 +00 +60 +60 ENDCHAR -STARTCHAR C068 -ENCODING 8743 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 11 1 0 +STARTCHAR C082 +ENCODING 7772 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 16 1 -3 BITMAP -0400 -0A00 -0A00 -1100 -1100 +3E00 +0000 +FE00 +2100 2080 2080 -4040 -4040 -8020 -8020 +2100 +3E00 +2300 +2100 +2100 +2100 +F8E0 +0000 +0C00 +0C00 ENDCHAR -STARTCHAR C068 -ENCODING 8744 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 11 1 0 +STARTCHAR C114 +ENCODING 7773 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 -3 BITMAP -8020 -8020 -4040 -4040 +F8 +00 +D0 +68 +40 +40 +40 +40 +F0 +00 +60 +60 +ENDCHAR +STARTCHAR C082 +ENCODING 7774 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 13 1 -2 +BITMAP +FE00 +2100 2080 2080 -1100 -1100 -0A00 -0A00 -0400 +2100 +3E00 +2300 +2100 +2100 +2100 +F8E0 +0000 +1F00 ENDCHAR -STARTCHAR C060 -ENCODING 8745 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 11 1 0 +STARTCHAR C114 +ENCODING 7775 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 9 1 -2 BITMAP -3C -42 -81 -81 -81 -81 -81 -81 -81 -81 -81 +D0 +68 +40 +40 +40 +40 +F0 +00 +F8 ENDCHAR -STARTCHAR C060 -ENCODING 8746 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 11 1 0 +STARTCHAR C083 +ENCODING 7776 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 14 1 0 BITMAP -81 -81 -81 -81 -81 -81 -81 -81 -81 -42 -3C +30 +30 +00 +7C +84 +84 +80 +40 +30 +08 +04 +84 +84 +F8 ENDCHAR -STARTCHAR char8747 -ENCODING 8747 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 19 1 -4 +STARTCHAR C115 +ENCODING 7777 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 10 1 0 BITMAP -0E -12 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -90 -E0 +60 +60 +00 +78 +88 +80 +70 +08 +88 +F0 ENDCHAR -STARTCHAR char8747 -ENCODING 8748 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 12 19 1 -4 +STARTCHAR C083 +ENCODING 7778 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 14 1 -3 BITMAP -0E70 -1290 -1080 -1080 -1080 -1080 -1080 -1080 -1080 -1080 -1080 -1080 -1080 -1080 -1080 -1080 -1080 -9480 -E700 +7C +84 +84 +80 +40 +30 +08 +04 +84 +84 +F8 +00 +30 +30 ENDCHAR -STARTCHAR char8747 -ENCODING 8749 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 19 1 -4 +STARTCHAR C115 +ENCODING 7779 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 10 1 -3 BITMAP -0E7380 -129480 -108400 -108400 -108400 -108400 -108400 -108400 -108400 -108400 -108400 -108400 -108400 -108400 -108400 -108400 -108400 -94A400 -E73800 +78 +88 +80 +70 +08 +88 +F0 +00 +60 +60 ENDCHAR -STARTCHAR char8747 -ENCODING 8750 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 19 1 -4 +STARTCHAR C083 +ENCODING 7780 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 19 1 0 BITMAP -0E -12 -10 -10 +30 +30 +00 +08 +18 10 +20 +00 +7C +84 +84 +80 +40 +30 +08 +04 +84 +84 +F8 +ENDCHAR +STARTCHAR C115 +ENCODING 7781 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 15 1 0 +BITMAP +60 +60 +00 10 +30 +20 +40 +00 +78 +88 +80 +70 +08 +88 +F0 +ENDCHAR +STARTCHAR C083 +ENCODING 7782 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 18 1 0 +BITMAP +30 +30 +00 +44 38 -54 -92 -92 -92 -54 -38 -10 -10 10 -10 -90 -E0 +00 +7C +84 +84 +80 +40 +30 +08 +04 +84 +84 +F8 ENDCHAR -STARTCHAR char8747 -ENCODING 8751 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 19 1 -4 +STARTCHAR C115 +ENCODING 7783 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 14 1 0 BITMAP -0E70 -1290 -1080 -1080 -1080 -1080 -3FC0 -50A0 -9090 -9090 -9090 -50A0 -3FC0 -1080 -1080 -1080 -1080 -9480 -E700 +60 +60 +00 +88 +70 +20 +00 +78 +88 +80 +70 +08 +88 +F0 ENDCHAR -STARTCHAR char8747 -ENCODING 8752 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 19 1 -4 +STARTCHAR C083 +ENCODING 7784 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 17 1 -3 BITMAP -0E7380 -129480 -108400 -108400 -108400 -108400 -3FFE00 -508500 -908480 -908480 -908480 -508500 -3FFE00 -108400 -108400 -108400 -108400 -94A400 -E73800 +30 +30 +00 +7C +84 +84 +80 +40 +30 +08 +04 +84 +84 +F8 +00 +30 +30 ENDCHAR -STARTCHAR char8747 -ENCODING 8753 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 19 1 -4 +STARTCHAR C115 +ENCODING 7785 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 13 1 -3 BITMAP -0E -12 -10 -10 -10 -10 -10 -7D -93 -17 -10 -10 -10 -10 -10 -10 -10 -90 -E0 +60 +60 +00 +78 +88 +80 +70 +08 +88 +F0 +00 +60 +60 ENDCHAR -STARTCHAR char8747 -ENCODING 8754 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 19 1 -4 +STARTCHAR C084 +ENCODING 7786 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 14 1 0 BITMAP -0700 -0900 +1800 +1800 +0000 +FF80 +8880 +8880 +8880 0800 0800 0800 0800 -3E80 -4980 -8B80 +0800 +0800 +3E00 +ENDCHAR +STARTCHAR C116 +ENCODING 7787 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 13 1 0 +BITMAP +30 +30 +00 +20 +20 +20 +F8 +20 +20 +20 +24 +24 +18 +ENDCHAR +STARTCHAR C084 +ENCODING 7788 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 14 1 -3 +BITMAP +FF80 8880 8880 -4900 -3E00 +8880 0800 0800 0800 0800 -4800 -7000 +0800 +0800 +3E00 +0000 +1800 +1800 ENDCHAR -STARTCHAR char8747 -ENCODING 8755 +STARTCHAR C116 +ENCODING 7789 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 13 1 -3 +BITMAP +20 +20 +20 +F8 +20 +20 +20 +24 +24 +18 +00 +30 +30 +ENDCHAR +STARTCHAR C084 +ENCODING 7790 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 19 1 -4 +BBX 9 13 1 -2 BITMAP -0700 -0900 +FF80 +8880 +8880 +8880 0800 0800 0800 0800 -3F80 -4B00 -8A80 +0800 +0800 +3E00 +0000 +3E00 +ENDCHAR +STARTCHAR C116 +ENCODING 7791 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 -2 +BITMAP +20 +20 +20 +F8 +20 +20 +20 +24 +24 +18 +00 +7C +ENDCHAR +STARTCHAR C084 +ENCODING 7792 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 -4 +BITMAP +FF80 8880 8880 -4900 -3E00 +8880 0800 0800 0800 0800 -4800 -7000 -ENDCHAR -STARTCHAR char8756 -ENCODING 8756 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 11 1 0 -BITMAP -0200 -0700 -0200 -0000 +0800 +0800 +3E00 0000 -0000 -0000 -0000 -4010 -E038 -4010 -ENDCHAR -STARTCHAR char8756 -ENCODING 8757 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 11 1 0 -BITMAP -4010 -E038 -4010 -0000 -0000 -0000 -0000 -0000 -0200 -0700 -0200 -ENDCHAR -STARTCHAR char8756 -ENCODING 8758 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 3 11 1 0 -BITMAP -40 -E0 -40 -00 -00 -00 -00 -00 -40 -E0 -40 -ENDCHAR -STARTCHAR char8756 -ENCODING 8759 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 11 1 0 -BITMAP -4010 -E038 -4010 -0000 -0000 -0000 -0000 -0000 -4010 -E038 -4010 -ENDCHAR -STARTCHAR C043 -ENCODING 8760 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 5 1 5 -BITMAP 0800 1C00 -0800 -0000 -FF80 +2200 ENDCHAR -STARTCHAR C043 -ENCODING 8761 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 9 1 1 +STARTCHAR C116 +ENCODING 7793 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 14 1 -4 BITMAP -0080 -01C0 -0080 -0000 -FE00 -0000 -0080 -01C0 -0080 +20 +20 +20 +F8 +20 +20 +20 +24 +24 +18 +00 +10 +38 +44 ENDCHAR -STARTCHAR C043 -ENCODING 8762 +STARTCHAR C085 +ENCODING 7794 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 9 1 1 -BITMAP -4080 -E1C0 -4080 -0000 -FFC0 -0000 -4080 -E1C0 -4080 -ENDCHAR -STARTCHAR C043 -ENCODING 8763 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 10 10 1 1 +BBX 11 14 1 -3 BITMAP -0400 +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +1100 0E00 -0400 -0000 -7840 -8780 0000 -0400 -0E00 -0400 -ENDCHAR -STARTCHAR C043 -ENCODING 8764 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 2 1 6 -BITMAP -7840 -8780 -ENDCHAR -STARTCHAR C043 -ENCODING 8765 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 2 1 6 -BITMAP -8780 -7840 -ENDCHAR -STARTCHAR C043 -ENCODING 8766 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 4 1 4 -BITMAP -7080 -8840 -8440 -4380 -ENDCHAR -STARTCHAR C043 -ENCODING 8767 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 8 1 2 -BITMAP -7000 -8800 -8800 -8800 -0440 -0440 -0440 -0380 -ENDCHAR -STARTCHAR C043 -ENCODING 8768 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 2 10 1 2 -BITMAP -80 -40 -40 -40 -40 -80 -80 -80 -80 -40 -ENDCHAR -STARTCHAR C043 -ENCODING 8769 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 6 1 4 -BITMAP -0200 -0200 -7C40 -8780 -0800 -0800 +1B00 +1B00 ENDCHAR -STARTCHAR C043 -ENCODING 8770 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 4 1 4 +STARTCHAR C117 +ENCODING 7795 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 10 1 -3 BITMAP -FFC0 -0000 -7840 -8780 +CC +44 +44 +44 +44 +44 +3E +00 +6C +6C ENDCHAR -STARTCHAR C043 -ENCODING 8771 +STARTCHAR C085 +ENCODING 7796 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 4 1 4 +BBX 11 15 1 -4 BITMAP -7840 -8780 +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +1100 +0E00 0000 -FFC0 +0900 +1500 +1200 ENDCHAR -STARTCHAR C043 -ENCODING 8772 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 8 1 2 +STARTCHAR C117 +ENCODING 7797 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 -4 BITMAP -0200 -0200 -7C40 -8780 -0800 -FFC0 -1000 -1000 +CC +44 +44 +44 +44 +44 +3E +00 +24 +54 +48 ENDCHAR -STARTCHAR C043 -ENCODING 8773 +STARTCHAR C085 +ENCODING 7798 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 6 1 3 +BBX 11 15 1 -4 BITMAP -7840 -8780 -0000 -FFC0 +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +1100 +0E00 0000 -FFC0 +0400 +0E00 +1100 ENDCHAR -STARTCHAR C043 -ENCODING 8774 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 8 1 1 +STARTCHAR C117 +ENCODING 7799 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 -4 BITMAP -7840 -8780 -0400 -FFC0 -0800 -FFC0 -1000 -1000 +CC +44 +44 +44 +44 +44 +3E +00 +10 +38 +44 ENDCHAR -STARTCHAR C043 -ENCODING 8775 +STARTCHAR C085 +ENCODING 7800 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 9 1 1 +BBX 11 20 1 0 BITMAP 0200 -7A40 -8780 +0600 0400 -FFC0 0800 -FFC0 -1000 -1000 -ENDCHAR -STARTCHAR C043 -ENCODING 8776 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 5 1 3 -BITMAP -7840 -8780 0000 -7840 -8780 +0900 +1500 +1200 +0000 +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +1100 +0E00 ENDCHAR -STARTCHAR C043 -ENCODING 8777 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 8 1 1 +STARTCHAR C117 +ENCODING 7801 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 16 1 0 BITMAP -0200 -7A40 -8780 -0400 -7C40 -8F80 -0800 -0800 +08 +18 +10 +20 +00 +24 +54 +48 +00 +CC +44 +44 +44 +44 +44 +3E ENDCHAR -STARTCHAR C043 -ENCODING 8778 +STARTCHAR C085 +ENCODING 7802 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 7 1 3 +BBX 11 16 1 0 BITMAP -7840 -8780 +1B00 +1B00 0000 -7840 -8780 +1F00 0000 -FFC0 +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +1100 +0E00 ENDCHAR -STARTCHAR C043 -ENCODING 8779 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 8 1 2 +STARTCHAR C117 +ENCODING 7803 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 BITMAP -7840 -8780 -0000 -7840 -8780 -0000 -7840 -8780 +6C +6C +00 +7C +00 +CC +44 +44 +44 +44 +44 +3E ENDCHAR -STARTCHAR C043 -ENCODING 8780 +STARTCHAR C086 +ENCODING 7804 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 8 1 2 +BBX 11 15 0 0 BITMAP -7080 -8840 -8440 -4380 -0000 -FFC0 +0900 +1500 +1200 0000 -FFC0 +F1E0 +2080 +2080 +1100 +1100 +1100 +0A00 +0A00 +0A00 +0400 +0400 ENDCHAR -STARTCHAR C043 -ENCODING 8781 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 5 1 3 +STARTCHAR C118 +ENCODING 7805 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 BITMAP -C0C0 -3F00 -0000 -3F00 -C0C0 +12 +2A +24 +00 +E7 +24 +24 +24 +18 +18 +18 ENDCHAR -STARTCHAR C043 -ENCODING 8782 +STARTCHAR C086 +ENCODING 7806 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 7 1 2 +BBX 11 14 0 -3 BITMAP -0C00 -1200 -F3C0 +F1E0 +2080 +2080 +1100 +1100 +1100 +0A00 +0A00 +0A00 +0400 +0400 0000 -F3C0 -1200 +0C00 0C00 ENDCHAR -STARTCHAR C043 -ENCODING 8783 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 5 1 4 +STARTCHAR C118 +ENCODING 7807 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 10 1 -3 BITMAP -0C00 -1200 -F3C0 -0000 -FFC0 +E7 +24 +24 +24 +18 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR C043 -ENCODING 8784 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 8 1 4 +STARTCHAR C087 +ENCODING 7808 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 16 0 0 BITMAP -0800 -1C00 -0800 -0000 -FF80 -0000 +0200 +0300 +0100 +0080 0000 -FF80 +F1CF +2184 +2184 +2244 +1248 +1248 +1248 +1428 +0C30 +0C30 +0810 ENDCHAR -STARTCHAR C043 -ENCODING 8785 +STARTCHAR C119 +ENCODING 7809 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 12 1 0 +BBX 11 12 0 0 BITMAP -0800 -1C00 0800 -0000 -FF80 -0000 -0000 -FF80 +0C00 +0400 +0200 0000 -0800 -1C00 -0800 +EEE0 +2480 +2A80 +2A80 +2A80 +1B00 +1100 ENDCHAR -STARTCHAR C043 -ENCODING 8786 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 12 1 0 +STARTCHAR C087 +ENCODING 7810 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 16 0 0 BITMAP -4000 -E000 -4000 -0000 -FF80 -0000 -0000 -FF80 -0000 -0100 -0380 +0080 +0180 0100 +0200 +0000 +F1CF +2184 +2184 +2244 +1248 +1248 +1248 +1428 +0C30 +0C30 +0810 ENDCHAR -STARTCHAR C043 -ENCODING 8787 +STARTCHAR C119 +ENCODING 7811 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 12 1 0 -BITMAP -0100 -0380 -0100 -0000 -FF80 -0000 -0000 -FF80 -0000 -4000 -E000 -4000 -ENDCHAR -STARTCHAR C043 -ENCODING 8788 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 7 1 2 +BBX 11 12 0 0 BITMAP -4000 -EFF8 -4000 +0200 +0600 +0400 +0800 0000 -4000 -EFF8 -4000 +EEE0 +2480 +2A80 +2A80 +2A80 +1B00 +1100 ENDCHAR -STARTCHAR C043 -ENCODING 8789 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 7 1 2 +STARTCHAR C087 +ENCODING 7812 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 14 0 0 BITMAP -0010 -FFB8 -0010 +06C0 +06C0 0000 -0010 -FFB8 -0010 +F1CF +2184 +2184 +2244 +1248 +1248 +1248 +1428 +0C30 +0C30 +0810 ENDCHAR -STARTCHAR C043 -ENCODING 8790 +STARTCHAR C119 +ENCODING 7813 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 4 1 4 -BITMAP -FF80 -1400 -1400 -FF80 -ENDCHAR -STARTCHAR C043 -ENCODING 8791 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 9 1 4 +BBX 11 10 0 0 BITMAP -0C00 -1200 -1200 -0C00 -0000 -FFC0 -0000 +1B00 +1B00 0000 -FFC0 +EEE0 +2480 +2A80 +2A80 +2A80 +1B00 +1100 ENDCHAR -STARTCHAR C043 -ENCODING 8792 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 7 1 4 +STARTCHAR C087 +ENCODING 7814 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 14 0 0 BITMAP -1E00 -2100 -0000 -FFC0 -0000 +0180 +0180 0000 -FFC0 +F1CF +2184 +2184 +2244 +1248 +1248 +1248 +1428 +0C30 +0C30 +0810 ENDCHAR -STARTCHAR C043 -ENCODING 8793 +STARTCHAR C119 +ENCODING 7815 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 9 1 4 +BBX 11 10 0 0 BITMAP -0800 -1400 -2200 -4100 -0000 -FF80 -0000 +0600 +0600 0000 -FF80 +EEE0 +2480 +2A80 +2A80 +2A80 +1B00 +1100 ENDCHAR -STARTCHAR C043 -ENCODING 8794 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 9 1 4 +STARTCHAR C087 +ENCODING 7816 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 14 0 -3 BITMAP -4100 -2200 -1400 -0800 -0000 -FF80 -0000 +F1CF +2184 +2184 +2244 +1248 +1248 +1248 +1428 +0C30 +0C30 +0810 0000 -FF80 +0180 +0180 ENDCHAR -STARTCHAR C043 -ENCODING 8795 +STARTCHAR C119 +ENCODING 7817 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 10 1 4 +BBX 11 10 0 -3 BITMAP -0800 -0800 -3E00 -1C00 -3600 -0000 -FF80 -0000 +EEE0 +2480 +2A80 +2A80 +2A80 +1B00 +1100 0000 -FF80 +0C00 +0C00 ENDCHAR -STARTCHAR C043 -ENCODING 8796 +STARTCHAR C088 +ENCODING 7818 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 10 1 4 +BBX 11 14 1 0 BITMAP -0800 -1400 -2200 -4100 -7F00 -0000 -FF80 -0000 +0C00 +0C00 0000 -FF80 +F3C0 +1100 +1200 +0A00 +0C00 +0400 +0A00 +1A00 +1100 +2080 +F1E0 ENDCHAR -STARTCHAR C043 -ENCODING 8797 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 12 1 4 +STARTCHAR C120 +ENCODING 7819 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 10 1 0 BITMAP -1040 -10A0 -1480 -7BC0 -9E80 -9880 -7680 -0000 -FFE0 -0000 -0000 -FFE0 +18 +18 +00 +E7 +24 +18 +18 +18 +24 +E7 ENDCHAR -STARTCHAR C043 -ENCODING 8798 +STARTCHAR C088 +ENCODING 7820 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 10 1 4 +BBX 11 14 1 0 BITMAP -F600 -4900 -4900 -4900 -4900 -0000 -FF80 -0000 +1B00 +1B00 0000 -FF80 +F3C0 +1100 +1200 +0A00 +0C00 +0400 +0A00 +1A00 +1100 +2080 +F1E0 ENDCHAR -STARTCHAR C043 -ENCODING 8799 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 12 1 4 +STARTCHAR C120 +ENCODING 7821 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 10 1 0 BITMAP -1800 -2400 -0C00 -1000 -1000 -0000 -1000 -0000 -FF80 -0000 -0000 -FF80 +36 +36 +00 +E7 +24 +18 +18 +18 +24 +E7 ENDCHAR -STARTCHAR C043 -ENCODING 8800 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 8 1 2 +STARTCHAR C089 +ENCODING 7822 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 14 0 0 BITMAP +0C00 +0C00 +0000 +F1E0 +2080 +1100 +1100 +0A00 +0E00 0400 0400 -FF80 -0800 -0800 -FF80 -1000 -1000 -ENDCHAR -STARTCHAR C043 -ENCODING 8801 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 5 1 3 -BITMAP -FF80 -0000 -FF80 -0000 -FF80 -ENDCHAR -STARTCHAR C043 -ENCODING 8802 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 9 1 1 -BITMAP 0400 0400 -FF80 -0800 -FF80 -1000 -FF80 -2000 -2000 -ENDCHAR -STARTCHAR C043 -ENCODING 8803 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 7 1 3 -BITMAP -FF80 -0000 -FF80 -0000 -FF80 -0000 -FF80 +1F00 ENDCHAR -STARTCHAR char8804 -ENCODING 8804 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 2 +STARTCHAR C121 +ENCODING 7823 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 13 1 -3 BITMAP -06 18 -60 -80 -60 18 -06 00 -FE +E7 +24 +24 +24 +18 +18 +18 +10 +90 +E0 ENDCHAR -STARTCHAR char8804 -ENCODING 8805 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 2 +STARTCHAR C090 +ENCODING 7824 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 15 1 0 BITMAP -C0 -30 -0C -02 -0C -30 -C0 +10 +38 +44 00 FE +C4 +84 +88 +08 +10 +20 +22 +42 +46 +FE ENDCHAR -STARTCHAR char8804 -ENCODING 8806 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 2 +STARTCHAR C122 +ENCODING 7825 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 0 BITMAP -0E -70 -80 +20 70 -0E -00 -FE +88 00 -FE +F8 +90 +90 +20 +48 +48 +F8 ENDCHAR -STARTCHAR char8804 -ENCODING 8807 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 2 +STARTCHAR C090 +ENCODING 7826 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 14 1 -3 BITMAP -E0 -1C -02 -1C -E0 -00 FE -00 +C4 +84 +88 +08 +10 +20 +22 +42 +46 FE +00 +30 +30 ENDCHAR -STARTCHAR char8804 -ENCODING 8808 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 10 1 1 +STARTCHAR C122 +ENCODING 7827 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 10 1 -3 BITMAP -0E -70 -80 -70 -0E -10 -FE +F8 +90 +90 20 -FE -40 +48 +48 +F8 +00 +60 +60 ENDCHAR -STARTCHAR char8804 -ENCODING 8809 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 10 1 1 +STARTCHAR C090 +ENCODING 7828 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 13 1 -2 BITMAP -E0 -1C -02 -1C -E0 -08 FE +C4 +84 +88 +08 10 -FE 20 -ENDCHAR -STARTCHAR char8804 -ENCODING 8810 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 12 7 1 3 -BITMAP -0630 -18C0 -6300 -8400 -6300 -18C0 -0630 +22 +42 +46 +FE +00 +7C ENDCHAR -STARTCHAR char8804 -ENCODING 8811 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 12 7 1 3 +STARTCHAR C122 +ENCODING 7829 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 9 1 -2 BITMAP -C600 -3180 -0C60 -0210 -0C60 -3180 -C600 +F8 +90 +90 +20 +48 +48 +F8 +00 +F8 ENDCHAR -STARTCHAR char8812 -ENCODING 8812 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 3 11 1 1 +STARTCHAR C104 +ENCODING 7830 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 14 1 -2 BITMAP -A0 +C0 40 -A0 -A0 -A0 -A0 -A0 -A0 -A0 40 -A0 -ENDCHAR -STARTCHAR C043 -ENCODING 8813 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 7 1 2 -BITMAP -0200 -C2C0 -3F00 -0400 -3F00 -C8C0 -0800 +40 +40 +78 +44 +44 +44 +44 +44 +EE +00 +7C ENDCHAR -STARTCHAR char8804 -ENCODING 8814 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 10 1 2 +STARTCHAR C116 +ENCODING 7831 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 13 1 0 BITMAP -08 -08 -0E -18 -70 -90 -60 -38 -26 +D8 +D8 +00 20 -ENDCHAR -STARTCHAR char8804 -ENCODING 8815 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 2 -BITMAP -08 -C8 -38 -14 -12 -1C -30 -E0 20 -ENDCHAR -STARTCHAR char8804 -ENCODING 8816 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 11 1 1 -BITMAP -08 -08 -0E +20 +F8 +20 +20 +20 +24 +24 18 -70 -90 -60 -B8 -66 -78 -46 ENDCHAR -STARTCHAR char8804 -ENCODING 8817 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 11 1 0 +STARTCHAR C119 +ENCODING 7832 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 12 0 0 BITMAP -08 -C8 -38 -14 -12 -1C -32 -EC -30 -E0 -20 +0600 +0900 +0900 +0600 +0000 +EEE0 +2480 +2A80 +2A80 +2A80 +1B00 +1100 ENDCHAR -STARTCHAR char8804 -ENCODING 8818 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 10 1 1 +STARTCHAR C121 +ENCODING 7833 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 15 1 -3 BITMAP -06 18 -60 -80 -60 +24 +24 18 -06 00 -71 -8E -ENDCHAR -STARTCHAR char8804 -ENCODING 8819 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 10 1 1 -BITMAP -60 +E7 +24 +24 +24 18 -06 -01 -06 18 -60 -00 -71 -8E +18 +10 +90 +E0 ENDCHAR -STARTCHAR char8804 -ENCODING 8820 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 13 1 0 +STARTCHAR C097 +ENCODING 7834 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 0 BITMAP +18 04 04 -06 18 -68 -88 +00 70 -38 -16 -20 -71 -AE -20 +88 +08 +78 +88 +88 +7C ENDCHAR -STARTCHAR char8804 -ENCODING 8821 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 13 1 0 +STARTCHAR C102 +ENCODING 7835 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 15 1 0 BITMAP -02 -02 -62 -1C -06 -05 -0E -18 -68 -10 -71 -9E -20 +60 +60 +00 +38 +48 +40 +40 +40 +C0 +40 +40 +40 +40 +40 +E0 ENDCHAR -STARTCHAR char8804 -ENCODING 8822 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 10 1 1 +STARTCHAR C065 +ENCODING 7840 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 14 0 -3 BITMAP -0E -70 -80 -70 -0E -E0 -1C -02 -1C -E0 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 +0000 +0600 +0600 ENDCHAR -STARTCHAR char8804 -ENCODING 8823 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 10 1 1 +STARTCHAR C097 +ENCODING 7841 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 10 1 -3 BITMAP -E0 -1C -02 -1C -E0 -0E -70 -80 70 -0E +88 +08 +78 +88 +88 +7C +00 +30 +30 ENDCHAR -STARTCHAR char8804 -ENCODING 8824 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 14 1 -1 +STARTCHAR C065 +ENCODING 7842 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 17 0 0 BITMAP -10 -10 -1E -70 -90 -70 -1E -F0 -1C -12 -1C -F0 -10 -10 +0400 +0A00 +0200 +0400 +0400 +0000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 ENDCHAR -STARTCHAR char8804 -ENCODING 8825 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 14 1 -1 +STARTCHAR C097 +ENCODING 7843 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 13 1 0 BITMAP -10 +20 +50 10 -F0 -1C -12 -1C -F0 -1E -70 -90 +20 +20 +00 70 -1E -10 -10 +88 +08 +78 +88 +88 +7C ENDCHAR -STARTCHAR char8804 -ENCODING 8826 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 2 +STARTCHAR C065 +ENCODING 7844 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 16 0 0 BITMAP -0080 -0100 -0600 -3800 -C000 -3800 -0600 -0100 0080 -ENDCHAR -STARTCHAR char8804 -ENCODING 8827 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 2 -BITMAP -8000 -4000 -3000 -0E00 -0180 +0500 0E00 -3000 -4000 -8000 +1100 +0000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 ENDCHAR -STARTCHAR char8804 -ENCODING 8828 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 11 1 0 +STARTCHAR C097 +ENCODING 7845 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 0 BITMAP -0080 -0100 -0600 -3800 -C000 -3800 -C600 -3900 -0480 -0200 -0100 +04 +28 +70 +88 +00 +70 +88 +08 +78 +88 +88 +7C ENDCHAR -STARTCHAR char8804 -ENCODING 8829 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 11 1 0 +STARTCHAR C065 +ENCODING 7846 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 16 0 0 BITMAP -8000 -4000 -3000 -0E00 -0180 -0E00 -3180 -4E00 -9000 2000 -4000 +1400 +0E00 +1100 +0000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 ENDCHAR -STARTCHAR char8804 -ENCODING 8830 +STARTCHAR C097 +ENCODING 7847 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 7 12 0 0 +BITMAP +80 +50 +38 +44 +00 +38 +44 +04 +3C +44 +44 +3E +ENDCHAR +STARTCHAR C065 +ENCODING 7848 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 12 1 1 +BBX 11 18 0 0 BITMAP -0040 -0080 -0300 -1C00 -6000 -1C00 -0300 +0100 +0280 0080 -0040 +0500 +0F00 +1100 0000 -7840 -8780 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 ENDCHAR -STARTCHAR char8804 -ENCODING 8831 +STARTCHAR C097 +ENCODING 7849 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 14 1 0 +BITMAP +08 +14 +04 +28 +78 +88 +00 +70 +88 +08 +78 +88 +88 +7C +ENDCHAR +STARTCHAR C065 +ENCODING 7850 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 12 1 1 +BBX 11 19 0 0 BITMAP -8000 -4000 -3000 -0E00 -0180 -0E00 -3000 -4000 -8000 +0900 +1500 +1200 0000 -7840 -8780 -ENDCHAR -STARTCHAR char8804 -ENCODING 8832 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 10 1 2 -BITMAP 0400 -0480 -0500 0E00 -3800 -C800 -3800 -1600 1100 -1080 +0000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 ENDCHAR -STARTCHAR char8804 -ENCODING 8833 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 10 1 1 +STARTCHAR C097 +ENCODING 7851 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 0 BITMAP -8200 -4200 -3400 -0E00 -0980 +48 +A8 +90 +00 +20 +70 +88 +00 +70 +88 +08 +78 +88 +88 +7C +ENDCHAR +STARTCHAR C065 +ENCODING 7852 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 18 0 -3 +BITMAP +0400 0E00 -3000 -5000 -A000 -2000 +1100 +0000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 +0000 +0600 +0600 ENDCHAR -STARTCHAR C060 -ENCODING 8834 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 9 1 2 +STARTCHAR C097 +ENCODING 7853 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 14 1 -3 BITMAP -3F -40 -80 -80 -80 -80 -80 -40 -3F +20 +70 +88 +00 +70 +88 +08 +78 +88 +88 +7C +00 +30 +30 ENDCHAR -STARTCHAR C060 -ENCODING 8835 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 9 1 2 +STARTCHAR C065 +ENCODING 7854 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 18 0 0 BITMAP -FC -02 -01 -01 -01 -01 -01 -02 -FC +0100 +0300 +0200 +0400 +1100 +0E00 +0000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 ENDCHAR -STARTCHAR C060 -ENCODING 8836 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 13 1 0 +STARTCHAR C097 +ENCODING 7855 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 14 1 0 BITMAP -02 -02 -3F -44 -84 +08 +18 +10 +20 88 +70 +00 +70 88 -90 -90 -60 -3F -40 -40 +08 +78 +88 +88 +7C ENDCHAR -STARTCHAR C060 -ENCODING 8837 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 13 1 0 +STARTCHAR C065 +ENCODING 7856 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 18 0 0 BITMAP -02 -02 -FC -06 -09 -09 -11 -11 -21 -22 -FC -40 -40 +1000 +1800 +0800 +0400 +1100 +0E00 +0000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 ENDCHAR -STARTCHAR C060 -ENCODING 8838 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 11 1 0 +STARTCHAR C097 +ENCODING 7857 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 14 1 0 BITMAP -3F -40 -80 -80 80 -80 -80 +C0 40 -3F +20 +88 +70 00 -FF +70 +88 +08 +78 +88 +88 +7C ENDCHAR -STARTCHAR C060 -ENCODING 8839 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 11 1 0 +STARTCHAR C065 +ENCODING 7858 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 19 0 0 BITMAP -FC -02 -01 -01 -01 -01 -01 -02 -FC -00 -FF +0400 +0A00 +0200 +0400 +0400 +1100 +0E00 +0000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 ENDCHAR -STARTCHAR C060 -ENCODING 8840 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 14 1 -1 +STARTCHAR C097 +ENCODING 7859 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 0 BITMAP -02 -02 -3F -44 -84 +20 +50 +10 +20 +20 88 +70 +00 +70 88 -90 -90 -60 -3F -40 -FF -80 +08 +78 +88 +88 +7C ENDCHAR -STARTCHAR C060 -ENCODING 8841 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 14 1 -1 +STARTCHAR C065 +ENCODING 7860 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 18 0 0 BITMAP -02 -02 -FC -06 -09 -09 -11 -11 -21 -22 -FC -40 -FF -80 +0900 +1500 +1200 +0000 +1100 +0E00 +0000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 ENDCHAR -STARTCHAR C060 -ENCODING 8842 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 12 1 -1 +STARTCHAR C097 +ENCODING 7861 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 14 1 0 BITMAP -3F -40 -80 -80 -80 -80 -80 -40 -3F +48 +A8 +90 +00 +88 +70 +00 +70 +88 08 -FF -10 +78 +88 +88 +7C ENDCHAR -STARTCHAR C060 -ENCODING 8843 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 12 1 -1 +STARTCHAR C065 +ENCODING 7862 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 17 0 -3 BITMAP -FC -02 -01 -01 -01 -01 -01 -02 -FC +1100 +0E00 +0000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 +0000 +0600 +0600 +ENDCHAR +STARTCHAR C097 +ENCODING 7863 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 13 1 -3 +BITMAP +88 +70 +00 +70 +88 08 -FF -10 +78 +88 +88 +7C +00 +30 +30 ENDCHAR -STARTCHAR C060 -ENCODING 8844 +STARTCHAR C069 +ENCODING 7864 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 11 1 0 +BBX 10 14 0 -3 BITMAP -8080 -8080 -8080 -8080 -9080 -B080 FF80 -B080 -9080 -4100 +2080 +2080 +2280 +2200 3E00 +2240 +2240 +2080 +2080 +FF80 +0000 +0C00 +0C00 ENDCHAR -STARTCHAR C060 -ENCODING 8845 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 11 1 0 +STARTCHAR C101 +ENCODING 7865 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 10 1 -3 BITMAP -8080 -8080 -8080 -8080 -8080 -9C80 -9C80 -9C80 -8080 -4100 -3E00 +70 +88 +F8 +80 +80 +88 +70 +00 +30 +30 ENDCHAR -STARTCHAR C060 -ENCODING 8846 +STARTCHAR C069 +ENCODING 7866 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 11 1 0 +BBX 10 17 0 0 BITMAP -8080 -8080 -8080 -8080 -8880 -8880 -BE80 -8880 -8880 -4100 +0800 +1400 +0400 +0800 +0800 +0000 +FF80 +2080 +2080 +2280 +2200 3E00 +2240 +2240 +2080 +2080 +FF80 ENDCHAR -STARTCHAR char8847 -ENCODING 8847 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 10 1 2 +STARTCHAR C101 +ENCODING 7867 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 13 1 0 BITMAP -FF -80 -80 -80 -80 -80 -80 +20 +50 +10 +20 +20 +00 +70 +88 +F8 80 80 -FF +88 +70 ENDCHAR -STARTCHAR char8847 -ENCODING 8848 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 10 1 2 +STARTCHAR C069 +ENCODING 7868 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 15 0 0 BITMAP -FF -01 -01 -01 -01 -01 -01 -01 -01 -FF +1200 +2A00 +2400 +0000 +FF80 +2080 +2080 +2280 +2200 +3E00 +2240 +2240 +2080 +2080 +FF80 ENDCHAR -STARTCHAR char8847 -ENCODING 8849 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 12 1 0 +STARTCHAR C101 +ENCODING 7869 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 0 BITMAP -FF -80 -80 -80 -80 -80 -80 +48 +A8 +90 +00 +70 +88 +F8 80 80 -FF -00 -FF +88 +70 ENDCHAR -STARTCHAR char8847 -ENCODING 8850 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 12 1 0 +STARTCHAR C069 +ENCODING 7870 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 16 0 0 BITMAP -FF -01 -01 -01 -01 -01 -01 -01 -01 -FF +0100 +0A00 +1C00 +2200 +0000 +FF80 +2080 +2080 +2280 +2200 +3E00 +2240 +2240 +2080 +2080 +FF80 +ENDCHAR +STARTCHAR C101 +ENCODING 7871 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 12 1 0 +BITMAP +04 +28 +70 +88 00 -FF +70 +88 +F8 +80 +80 +88 +70 ENDCHAR -STARTCHAR char8847 -ENCODING 8851 +STARTCHAR C069 +ENCODING 7872 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 10 1 2 +BBX 10 16 0 0 BITMAP +4000 +2800 +1C00 +2200 +0000 FF80 -8080 -8080 -8080 -8080 -8080 -8080 -8080 -8080 -8080 +2080 +2080 +2280 +2200 +3E00 +2240 +2240 +2080 +2080 +FF80 ENDCHAR -STARTCHAR char8847 -ENCODING 8852 +STARTCHAR C101 +ENCODING 7873 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 12 0 0 +BITMAP +80 +50 +38 +44 +00 +38 +44 +7C +40 +40 +44 +38 +ENDCHAR +STARTCHAR C069 +ENCODING 7874 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 10 1 2 +BBX 10 18 0 0 BITMAP -8080 -8080 -8080 -8080 -8080 -8080 -8080 -8080 -8080 +0200 +0500 +0100 +0A00 +1E00 +2200 +0000 FF80 +2080 +2080 +2280 +2200 +3E00 +2240 +2240 +2080 +2080 +FF80 ENDCHAR -STARTCHAR char8853 -ENCODING 8853 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 13 1 0 +STARTCHAR C101 +ENCODING 7875 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 14 1 0 BITMAP -0F80 -3260 -6230 -4210 -8208 -8208 -FFF8 -8208 -8208 -4210 -6230 -3260 -0F80 +08 +14 +04 +28 +78 +88 +00 +70 +88 +F8 +80 +80 +88 +70 ENDCHAR -STARTCHAR char8853 -ENCODING 8854 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 13 1 0 +STARTCHAR C069 +ENCODING 7876 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 19 0 0 BITMAP -0F80 -3060 -6030 -4010 -8008 -8008 -FFF8 -8008 -8008 -4010 -6030 -3060 -0F80 +1200 +2A00 +2400 +0000 +0800 +1C00 +2200 +0000 +FF80 +2080 +2080 +2280 +2200 +3E00 +2240 +2240 +2080 +2080 +FF80 ENDCHAR -STARTCHAR char8853 -ENCODING 8855 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 13 1 0 +STARTCHAR C101 +ENCODING 7877 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 15 1 0 BITMAP -0F80 -3060 -6030 -5050 -8888 -8508 -8208 -8508 -8888 -5050 -6030 -3060 -0F80 +48 +A8 +90 +00 +20 +70 +88 +00 +70 +88 +F8 +80 +80 +88 +70 ENDCHAR -STARTCHAR char8853 -ENCODING 8856 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 13 1 0 +STARTCHAR C069 +ENCODING 7878 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 18 0 -3 BITMAP -0F80 -3060 -6030 -4050 -8088 -8108 -8208 -8408 -8808 -5010 -6030 -3060 -0F80 +0800 +1C00 +2200 +0000 +FF80 +2080 +2080 +2280 +2200 +3E00 +2240 +2240 +2080 +2080 +FF80 +0000 +0C00 +0C00 ENDCHAR -STARTCHAR char8853 -ENCODING 8857 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 13 1 0 +STARTCHAR C101 +ENCODING 7879 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 14 1 -3 BITMAP -0F80 -3060 -6030 -4010 -8008 -8708 -8708 -8708 -8008 -4010 -6030 -3060 -0F80 +20 +70 +88 +00 +70 +88 +F8 +80 +80 +88 +70 +00 +30 +30 ENDCHAR -STARTCHAR char8853 -ENCODING 8858 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 13 1 0 +STARTCHAR C073 +ENCODING 7880 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 17 1 0 BITMAP -0F80 -3060 -6030 -4010 -8708 -8888 -8888 -8888 -8708 -4010 -6030 -3060 -0F80 +20 +50 +10 +20 +20 +00 +F8 +20 +20 +20 +20 +20 +20 +20 +20 +20 +F8 ENDCHAR -STARTCHAR char8853 -ENCODING 8859 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 13 1 0 +STARTCHAR C105 +ENCODING 7881 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 13 1 0 BITMAP -0F80 -3060 -6030 -4210 -9248 -8A88 -8708 -8A88 -9248 -4210 -6030 -3060 -0F80 +40 +A0 +20 +40 +40 +00 +C0 +40 +40 +40 +40 +40 +E0 ENDCHAR -STARTCHAR char8853 -ENCODING 8860 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 13 1 0 +STARTCHAR C073 +ENCODING 7882 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 14 1 -3 BITMAP -0F80 -3060 -6030 -4010 -8008 -9FC8 -8008 -9FC8 -8008 -4010 -6030 -3060 -0F80 +F8 +20 +20 +20 +20 +20 +20 +20 +20 +20 +F8 +00 +60 +60 ENDCHAR -STARTCHAR char8853 -ENCODING 8861 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 13 1 0 +STARTCHAR 0x1ECB +ENCODING 7883 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 14 1 -3 BITMAP -0F80 -3060 -6030 -4010 -8008 -8008 -9FC8 -8008 -8008 -4010 -6030 -3060 -0F80 +C0 +C0 +00 +00 +C0 +40 +40 +40 +40 +40 +E0 +00 +C0 +C0 ENDCHAR -STARTCHAR char8847 -ENCODING 8862 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C079 +ENCODING 7884 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 14 1 -3 BITMAP -FFE0 -8420 -8420 -8420 -8420 -FFE0 -8420 -8420 -8420 -8420 -FFE0 +1E00 +2100 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 +0000 +0C00 +0C00 ENDCHAR -STARTCHAR char8847 -ENCODING 8863 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C111 +ENCODING 7885 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 10 1 -3 BITMAP -FFE0 -8020 -8020 -8020 -8020 -FFE0 -8020 -8020 -8020 -8020 -FFE0 +70 +88 +88 +88 +88 +88 +70 +00 +30 +30 ENDCHAR -STARTCHAR char8847 -ENCODING 8864 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C079 +ENCODING 7886 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 17 1 0 BITMAP -FFE0 -C060 -A0A0 -9120 -8A20 -8420 -8A20 -9120 -A0A0 -C060 -FFE0 -ENDCHAR -STARTCHAR char8847 -ENCODING 8865 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 -BITMAP -FFE0 -8020 -8020 -8020 -8420 -8E20 -8420 -8020 -8020 -8020 -FFE0 -ENDCHAR -STARTCHAR char8847 -ENCODING 8866 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 -BITMAP -8000 -8000 -8000 -8000 -8000 -FFE0 -8000 -8000 -8000 -8000 -8000 +0800 +1400 +0400 +0800 +0800 +0000 +1E00 +2100 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 ENDCHAR -STARTCHAR char8847 -ENCODING 8867 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C111 +ENCODING 7887 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 13 1 0 BITMAP -0020 -0020 -0020 -0020 -0020 -FFE0 -0020 -0020 -0020 -0020 -0020 +20 +50 +10 +20 +20 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char8847 -ENCODING 8868 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C079 +ENCODING 7888 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 16 1 0 BITMAP -FFE0 -0400 -0400 -0400 -0400 -0400 -0400 -0400 -0400 -0400 -0400 +0100 +0A00 +1C00 +2200 +0000 +1E00 +2100 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 ENDCHAR -STARTCHAR char8847 -ENCODING 8869 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C111 +ENCODING 7889 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 12 1 0 BITMAP -0400 -0400 -0400 -0400 -0400 -0400 -0400 -0400 -0400 -0400 -FFE0 +04 +28 +70 +88 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char8847 -ENCODING 8870 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 6 11 1 0 +STARTCHAR C079 +ENCODING 7890 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 16 1 0 BITMAP -80 -80 -80 -80 -80 -FC -80 -80 -80 -80 -80 +4000 +2800 +1C00 +2200 +0000 +1E00 +2100 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 ENDCHAR -STARTCHAR char8847 -ENCODING 8871 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 12 1 0 +STARTCHAR C111 +ENCODING 7891 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 12 0 0 BITMAP -80 -80 -80 -80 -FE -80 -80 -FE -80 -80 80 -80 +50 +38 +44 +00 +38 +44 +44 +44 +44 +44 +38 ENDCHAR -STARTCHAR char8847 -ENCODING 8872 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 12 1 0 +STARTCHAR C079 +ENCODING 7892 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 18 1 0 BITMAP -8000 -8000 -8000 -8000 -FFE0 -8000 -8000 -FFE0 -8000 -8000 -8000 -8000 +0200 +0500 +0100 +0A00 +1E00 +2200 +0000 +1E00 +2100 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 ENDCHAR -STARTCHAR char8847 -ENCODING 8873 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C111 +ENCODING 7893 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 6 14 1 0 BITMAP -9000 -9000 -9000 -9000 -9000 -9FE0 -9000 -9000 -9000 -9000 -9000 +08 +14 +04 +28 +78 +88 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char8847 -ENCODING 8874 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C079 +ENCODING 7894 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 19 1 0 BITMAP -9200 -9200 -9200 -9200 -9200 -93E0 -9200 -9200 -9200 -9200 -9200 +1200 +2A00 +2400 +0000 +0800 +1C00 +2200 +0000 +1E00 +2100 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 ENDCHAR -STARTCHAR char8847 -ENCODING 8875 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 12 1 0 +STARTCHAR C111 +ENCODING 7895 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 15 1 0 BITMAP -9000 -9000 -9000 -9000 -9FE0 -9000 -9000 -9FE0 -9000 -9000 -9000 -9000 +48 +A8 +90 +00 +20 +70 +88 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char8847 -ENCODING 8876 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 14 1 -2 +STARTCHAR C079 +ENCODING 7896 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 18 1 -3 BITMAP -0080 -8080 -8100 -8100 -8200 -8200 -FFE0 -8400 -8800 -8800 -9000 -9000 -2000 -2000 +0800 +1C00 +2200 +0000 +1E00 +2100 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 +0000 +0C00 +0C00 ENDCHAR -STARTCHAR char8847 -ENCODING 8877 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 16 1 -2 +STARTCHAR C111 +ENCODING 7897 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 14 1 -3 BITMAP -0080 -0080 -8100 -8100 -8200 -8200 -FFE0 -8400 -8400 -FFE0 -8800 -8800 -9000 -9000 -2000 -2000 +20 +70 +88 +00 +70 +88 +88 +88 +88 +88 +70 +00 +30 +30 ENDCHAR -STARTCHAR char8847 -ENCODING 8878 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 14 1 -2 +STARTCHAR C079 +ENCODING 7898 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 16 1 0 BITMAP -0040 -9040 -9080 -9080 -9100 -9100 -9FE0 -9200 -9400 -9400 -9800 -9800 -1000 +0400 +0C00 +0800 1000 +0060 +1E20 +21C0 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 ENDCHAR -STARTCHAR char8847 -ENCODING 8879 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 16 1 -2 +STARTCHAR C111 +ENCODING 7899 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 7 12 1 0 BITMAP -0040 -0040 -9080 -9080 -9100 -9100 -9FE0 -9200 -9200 -9FE0 -9400 -9400 -9800 -9800 -1000 -1000 +10 +30 +20 +40 +06 +72 +8C +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char8804 -ENCODING 8880 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 11 1 1 +STARTCHAR C079 +ENCODING 7900 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 16 1 0 BITMAP -02 -05 -01 -06 -38 -C0 -38 -06 -01 -05 -02 +1000 +1800 +0800 +0400 +0060 +1E20 +21C0 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 ENDCHAR -STARTCHAR char8804 -ENCODING 8881 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 11 1 1 +STARTCHAR C111 +ENCODING 7901 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 7 12 1 0 BITMAP 40 -A0 -80 -60 -1C -03 -1C 60 -80 -A0 -40 +20 +10 +06 +72 +8C +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char8882 -ENCODING 8882 +STARTCHAR C079 +ENCODING 7902 SWIDTH 720 0 DWIDTH 12 0 -BBX 9 6 1 3 +BBX 11 17 1 0 BITMAP -0380 -1C80 -E080 -E080 -1C80 -0380 +0800 +1400 +0400 +0800 +0800 +0060 +1E20 +21C0 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 ENDCHAR -STARTCHAR char8882 -ENCODING 8883 +STARTCHAR C111 +ENCODING 7903 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 7 13 1 0 +BITMAP +20 +50 +10 +20 +20 +06 +72 +8C +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR C079 +ENCODING 7904 SWIDTH 720 0 DWIDTH 12 0 -BBX 9 6 1 3 +BBX 11 15 1 0 BITMAP -E000 -9C00 -8380 -8380 -9C00 -E000 +1200 +2A00 +2400 +0060 +1E20 +21C0 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 ENDCHAR -STARTCHAR char8882 -ENCODING 8884 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 9 1 0 +STARTCHAR C111 +ENCODING 7905 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 7 11 1 0 BITMAP -0380 -1C80 -E080 -E080 -1C80 -0380 -0000 -0000 -FF80 +48 +A8 +90 +06 +72 +8C +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char8882 -ENCODING 8885 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 0 +STARTCHAR C079 +ENCODING 7906 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 1 -3 BITMAP -E000 -9C00 -8380 -8380 -9C00 -E000 -0000 +0060 +1E20 +21C0 +4080 +8040 +8040 +8040 +8040 +8040 +4080 +2100 +1E00 0000 -FF80 +0C00 +0C00 ENDCHAR -STARTCHAR char8886 -ENCODING 8886 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 5 1 3 +STARTCHAR C111 +ENCODING 7907 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 7 11 1 -3 BITMAP -6018 -903C -9FFC -903C -6018 +06 +72 +8C +88 +88 +88 +88 +70 +00 +30 +30 ENDCHAR -STARTCHAR char8886 -ENCODING 8887 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 5 1 3 +STARTCHAR C085 +ENCODING 7908 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 14 1 -3 BITMAP -6018 -F024 -FFE4 -F024 -6018 +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +1100 +0E00 +0000 +0C00 +0C00 ENDCHAR -STARTCHAR char8886 -ENCODING 8888 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 5 1 3 +STARTCHAR C117 +ENCODING 7909 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 10 1 -3 BITMAP -00C0 -0120 -FF20 -0120 -00C0 +CC +44 +44 +44 +44 +44 +3E +00 +18 +18 ENDCHAR -STARTCHAR char8853 -ENCODING 8889 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 13 13 1 0 +STARTCHAR C085 +ENCODING 7910 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 17 1 0 BITMAP -0200 -0200 -0200 -0200 +0400 +0A00 0200 -0000 -F8F8 +0400 +0400 0000 -0200 -0200 -0200 -0200 -0200 +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +1100 +0E00 ENDCHAR -STARTCHAR char8847 -ENCODING 8890 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 11 1 0 +STARTCHAR C117 +ENCODING 7911 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 13 1 0 BITMAP -FE -10 -10 -10 10 -10 -10 -10 -10 -10 -10 -ENDCHAR -STARTCHAR char8804 -ENCODING 8891 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 2 -BITMAP -82 -82 -44 -44 -28 28 +08 10 -00 -FE -ENDCHAR -STARTCHAR char8804 -ENCODING 8892 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 2 -BITMAP -FE -00 10 -28 -28 +00 +CC 44 44 -82 -82 -ENDCHAR -STARTCHAR char8804 -ENCODING 8893 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 2 -BITMAP -FE -00 -82 -82 44 44 -28 -28 -10 +44 +3E ENDCHAR -STARTCHAR char8894 -ENCODING 8894 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C085 +ENCODING 7912 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 16 1 0 BITMAP -8000 -8000 -8000 -E000 -9800 -8400 -8200 -8200 -8100 -8100 -FFE0 +0200 +0600 +0400 +0830 +0010 +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +1100 +0E00 ENDCHAR -STARTCHAR char8894 -ENCODING 8895 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C117 +ENCODING 7913 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 12 1 0 BITMAP -0020 -0060 -00A0 -0120 -0220 -0420 -0820 -1020 -2020 -4020 -FFE0 +04 +0C +08 +13 +01 +CE +44 +44 +44 +44 +44 +3E ENDCHAR -STARTCHAR char8804 -ENCODING 8896 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 8 1 3 +STARTCHAR C085 +ENCODING 7914 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 16 1 0 BITMAP 0800 -1C00 -3600 -3600 -6300 -6300 -C180 -C180 -ENDCHAR -STARTCHAR char8804 -ENCODING 8897 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 8 1 3 -BITMAP -C180 -C180 -6300 -6300 -3600 -3600 -1C00 -0800 -ENDCHAR -STARTCHAR C060 -ENCODING 8898 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 3 -BITMAP -38 -7C -C6 -C6 -C6 -C6 -C6 -C6 -C6 -ENDCHAR -STARTCHAR C060 -ENCODING 8899 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 3 -BITMAP -C6 -C6 -C6 -C6 -C6 -C6 -C6 -7C -38 +0C00 +0400 +0230 +0010 +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +1100 +0E00 ENDCHAR -STARTCHAR char8900 -ENCODING 8900 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 5 10 1 2 +STARTCHAR C117 +ENCODING 7915 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 12 1 0 BITMAP -20 -20 -50 -50 -88 -88 -50 -50 -20 +40 +60 20 +13 +01 +CE +44 +44 +44 +44 +44 +3E ENDCHAR -STARTCHAR char8901 -ENCODING 8901 -SWIDTH 240 0 -DWIDTH 4 0 -BBX 2 2 1 5 +STARTCHAR C085 +ENCODING 7916 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 17 1 0 BITMAP -C0 -C0 +0400 +0A00 +0200 +0400 +0430 +0010 +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +1100 +0E00 ENDCHAR -STARTCHAR char8902 -ENCODING 8902 -SWIDTH 420 0 -DWIDTH 7 0 -BBX 5 5 1 4 +STARTCHAR C117 +ENCODING 7917 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 13 1 0 BITMAP -20 -20 -F8 -70 -D8 +10 +28 +08 +10 +13 +01 +CE +44 +44 +44 +44 +44 +3E ENDCHAR -STARTCHAR char8903 -ENCODING 8903 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C085 +ENCODING 7918 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 15 1 0 BITMAP -8420 -4E40 -2480 -1100 -0A00 -FFE0 -0A00 +0900 +1500 +1230 +0010 +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 1100 -2480 -4E40 -8420 +0E00 ENDCHAR -STARTCHAR char8903 -ENCODING 8904 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C117 +ENCODING 7919 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 12 1 0 BITMAP -8020 -C060 -A0A0 -9120 -8A20 -8420 -8A20 -9120 -A0A0 -C060 -8020 +24 +54 +48 +03 +01 +CE +44 +44 +44 +44 +44 +3E ENDCHAR -STARTCHAR char8903 -ENCODING 8905 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C085 +ENCODING 7920 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 16 1 -3 BITMAP -8020 -C040 -A080 -9100 -8A00 -8400 -8A00 -9100 -A080 -C040 -8020 +0030 +0010 +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +1100 +0E00 +0000 +0C00 +0C00 ENDCHAR -STARTCHAR char8903 -ENCODING 8906 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C117 +ENCODING 7921 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 12 1 -3 BITMAP -8020 -4060 -20A0 -1120 -0A20 -0420 -0A20 -1120 -20A0 -4060 -8020 +03 +01 +CE +44 +44 +44 +44 +44 +3E +00 +18 +18 ENDCHAR -STARTCHAR char8903 -ENCODING 8907 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C089 +ENCODING 7922 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 16 0 0 BITMAP -8000 -4000 -2000 -1000 0800 +0C00 0400 -0A00 -1100 +0200 +0000 +F1E0 2080 -4040 -8020 +1100 +1100 +0A00 +0E00 +0400 +0400 +0400 +0400 +1F00 ENDCHAR -STARTCHAR char8903 -ENCODING 8908 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 0 +STARTCHAR C121 +ENCODING 7923 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 15 1 -3 BITMAP -0020 -0040 -0080 -0100 -0200 -0400 -0A00 -1100 -2080 -4040 -8020 +20 +30 +10 +08 +00 +E7 +24 +24 +24 +18 +18 +18 +10 +90 +E0 ENDCHAR -STARTCHAR C043 -ENCODING 8909 +STARTCHAR C089 +ENCODING 7924 SWIDTH 720 0 DWIDTH 12 0 -BBX 10 4 1 4 +BBX 11 14 0 -3 BITMAP -8780 -7840 +F1E0 +2080 +1100 +1100 +0A00 +0E00 +0400 +0400 +0400 +0400 +1F00 0000 -FFC0 +0C00 +0C00 ENDCHAR -STARTCHAR char8804 -ENCODING 8910 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 9 1 2 +STARTCHAR C121 +ENCODING 7925 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 10 1 -3 BITMAP -8080 -4100 -2200 -2200 -1400 -1400 -1400 -0800 -0800 +E7 +24 +24 +24 +18 +18 +18 +10 +96 +E6 ENDCHAR -STARTCHAR char8804 -ENCODING 8911 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 9 1 2 +STARTCHAR C089 +ENCODING 7926 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 17 0 0 BITMAP -0800 -0800 -1400 -1400 -1400 -2200 -2200 -4100 -8080 +0400 +0A00 +0200 +0400 +0400 +0000 +F1E0 +2080 +1100 +1100 +0A00 +0E00 +0400 +0400 +0400 +0400 +1F00 ENDCHAR -STARTCHAR C060 -ENCODING 8912 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 9 1 2 +STARTCHAR C121 +ENCODING 7927 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 1 -3 BITMAP -3F -40 -9F -A0 -A0 -A0 -9F -40 -3F +10 +28 +08 +10 +10 +00 +E7 +24 +24 +24 +18 +18 +18 +10 +90 +E0 ENDCHAR -STARTCHAR C060 -ENCODING 8913 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 9 1 2 +STARTCHAR C089 +ENCODING 7928 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 15 0 0 BITMAP -FC -02 -F9 -05 -05 -05 -F9 -02 -FC +0900 +1500 +1200 +0000 +F1E0 +2080 +1100 +1100 +0A00 +0E00 +0400 +0400 +0400 +0400 +1F00 ENDCHAR -STARTCHAR C060 -ENCODING 8914 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 11 1 0 +STARTCHAR C121 +ENCODING 7929 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 14 1 -3 BITMAP -3C -42 -99 -A5 -A5 -A5 -A5 -A5 -A5 -A5 -A5 +12 +2A +24 +00 +E7 +24 +24 +24 +18 +18 +18 +10 +90 +E0 ENDCHAR -STARTCHAR C060 -ENCODING 8915 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 11 1 0 +STARTCHAR C130 +ENCODING 7936 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 BITMAP -A5 -A5 -A5 -A5 -A5 -A5 -A5 -A5 -99 -42 -3C +18 +18 +08 +10 +00 +62 +92 +94 +8C +88 +98 +66 ENDCHAR -STARTCHAR C060 -ENCODING 8916 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 13 1 0 +STARTCHAR C129 +ENCODING 7937 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 BITMAP -10 -10 +30 +30 +20 10 -38 -54 -92 +00 +62 92 +94 +8C +88 +98 +66 +ENDCHAR +STARTCHAR C138 +ENCODING 7938 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 +BITMAP +68 +68 +24 +44 +00 +62 92 +94 +8C +88 +98 +66 +ENDCHAR +STARTCHAR C138 +ENCODING 7939 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 +BITMAP +68 +68 +44 +24 +00 +62 92 +94 +8C +88 +98 +66 +ENDCHAR +STARTCHAR C138 +ENCODING 7940 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 +BITMAP +64 +64 +28 +48 +00 +62 92 +94 +8C +88 +98 +66 +ENDCHAR +STARTCHAR C138 +ENCODING 7941 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 +BITMAP +64 +64 +48 +28 +00 +62 92 +94 +8C +88 +98 +66 +ENDCHAR +STARTCHAR C130 +ENCODING 7942 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 16 1 0 +BITMAP +24 +54 +48 +00 +18 +18 +08 +10 +00 +62 92 +94 +8C +88 +98 +66 +ENDCHAR +STARTCHAR C129 +ENCODING 7943 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 16 1 0 +BITMAP +24 +54 +48 +00 +30 +30 +20 +10 +00 +62 92 +94 +8C +88 +98 +66 ENDCHAR -STARTCHAR char123 -ENCODING 8917 +STARTCHAR C065 +ENCODING 7944 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 12 1 0 +BBX 11 13 0 0 BITMAP -1400 -1400 -1400 -1400 -FF80 -1400 -1400 -FF80 -1400 -1400 -1400 -1400 +6000 +6000 +2400 +4400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 ENDCHAR -STARTCHAR char8804 -ENCODING 8918 +STARTCHAR C065 +ENCODING 7945 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 7 1 4 +BBX 11 13 0 0 BITMAP -0380 -1C00 -6200 -8700 -6200 -1C00 -0380 +6000 +6000 +4400 +2400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 ENDCHAR -STARTCHAR char8804 -ENCODING 8919 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 7 1 4 +STARTCHAR 0x1F0A +ENCODING 7946 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 13 0 0 BITMAP -E000 -1C00 -2300 -7080 -2300 -1C00 -E000 +D000 +D000 +4A00 +8A00 +0500 +0500 +0500 +0880 +0880 +0F80 +1040 +1040 +78F0 ENDCHAR -STARTCHAR char8804 -ENCODING 8920 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR 0x1F0B +ENCODING 7947 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 13 0 0 BITMAP -063180 -18C600 -631800 -842000 -631800 -18C600 -063180 +D000 +D000 +8A00 +4A00 +0500 +0500 +0500 +0880 +0880 +0F80 +1040 +1040 +78F0 ENDCHAR -STARTCHAR char8804 -ENCODING 8921 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR 0x1F0C +ENCODING 7948 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 13 0 0 BITMAP -C63000 -318C00 -0C6300 -021080 -0C6300 -318C00 -C63000 +C800 +C800 +5200 +9200 +0500 +0500 +0500 +0880 +0880 +0F80 +1040 +1040 +78F0 ENDCHAR -STARTCHAR char8804 -ENCODING 8922 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 13 1 1 +STARTCHAR 0x1F0D +ENCODING 7949 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 13 0 0 BITMAP -0E +C800 +C800 +9200 +5200 +0500 +0500 +0500 +0880 +0880 +0F80 +1040 +1040 +78F0 +ENDCHAR +STARTCHAR 0x1F0E +ENCODING 7950 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 17 0 0 +BITMAP +4800 +A800 +9000 +0000 +3000 +3000 +1200 +2200 +0500 +0500 +0500 +0880 +0880 +0F80 +1040 +1040 +78F0 +ENDCHAR +STARTCHAR 0x1F0F +ENCODING 7951 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 17 0 0 +BITMAP +4800 +A800 +9000 +0000 +3000 +3000 +2200 +1200 +0500 +0500 +0500 +0880 +0880 +0F80 +1040 +1040 +78F0 +ENDCHAR +STARTCHAR C090 +ENCODING 7952 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 +BITMAP +60 +60 +20 +40 +00 70 +90 +80 +60 80 +88 70 -0E -00 -FE -00 -E0 -1C -02 -1C -E0 ENDCHAR -STARTCHAR char8804 -ENCODING 8923 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 13 1 1 +STARTCHAR C090 +ENCODING 7953 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 BITMAP -E0 -1C -02 -1C -E0 -00 -FE +60 +60 +40 +20 00 -0E 70 +90 80 +60 +80 +88 70 -0E ENDCHAR -STARTCHAR char8804 -ENCODING 8924 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 2 +STARTCHAR C090 +ENCODING 7954 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 BITMAP -FE +D0 +D0 +48 +88 00 -06 -18 -60 +70 +90 80 60 -18 -06 +80 +88 +70 ENDCHAR -STARTCHAR char8804 -ENCODING 8925 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 7 9 1 2 +STARTCHAR C090 +ENCODING 7955 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 BITMAP -FE +D0 +D0 +88 +48 00 -C0 -30 -0C -02 -0C -30 -C0 -ENDCHAR -STARTCHAR char8804 -ENCODING 8926 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 11 1 0 -BITMAP -0100 -0200 -0480 -3900 -C600 -3800 -C000 -3800 -0600 -0100 -0080 -ENDCHAR -STARTCHAR char8804 -ENCODING 8927 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 11 1 0 -BITMAP -4000 -2000 -9000 -4E00 -3180 -0E00 -0180 -0E00 -3000 -4000 -8000 -ENDCHAR -STARTCHAR char8804 -ENCODING 8928 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 12 1 0 -BITMAP -0400 -0480 -0500 -0E00 -3800 -C800 -3800 -D600 -3900 -1480 -1200 -0100 -ENDCHAR -STARTCHAR char8804 -ENCODING 8929 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 11 1 0 -BITMAP -8200 -4200 -3400 -0E00 -0980 -0E00 -3180 -5E00 -9000 -2000 -6000 -ENDCHAR -STARTCHAR char8847 -ENCODING 8930 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 16 1 -2 -BITMAP -02 -02 -FF -84 -84 -84 -88 -88 -88 -88 +70 90 -FF -10 -FF -20 -20 -ENDCHAR -STARTCHAR char8847 -ENCODING 8931 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 16 1 -2 -BITMAP -40 -40 -FF -21 -21 -21 -11 -11 -11 -11 -09 -FF -08 -FF -04 -04 -ENDCHAR -STARTCHAR char8847 -ENCODING 8932 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 13 1 -1 -BITMAP -FF -80 -80 80 -80 -80 -80 -80 +60 80 -FF -08 -FF -20 -ENDCHAR -STARTCHAR char8847 -ENCODING 8933 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 13 1 -1 -BITMAP -FF -01 -01 -01 -01 -01 -01 -01 -01 -FF -08 -FF -10 +88 +70 ENDCHAR -STARTCHAR char8804 -ENCODING 8934 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 11 1 0 +STARTCHAR C090 +ENCODING 7956 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 BITMAP -06 -18 -60 +C8 +C8 +50 +90 +00 +70 +90 80 60 -18 -06 -04 -79 -9E -20 +80 +88 +70 ENDCHAR -STARTCHAR char8804 -ENCODING 8935 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 8 11 1 0 +STARTCHAR C090 +ENCODING 7957 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 BITMAP -60 -18 -06 -01 -06 -18 +C8 +C8 +90 +50 +00 +70 +90 +80 60 -04 -79 -9E -20 +80 +88 +70 ENDCHAR -STARTCHAR char8804 -ENCODING 8936 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 13 0 0 +STARTCHAR 0x1F18 +ENCODING 7960 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 13 0 0 BITMAP -0040 -0080 -0300 -1C00 -6000 -1C00 -0300 -0080 -0040 -0200 -7C40 -8F80 -1000 +C000 +C000 +5FF0 +8410 +0410 +0450 +0440 +07C0 +0448 +0448 +0410 +0410 +1FF0 ENDCHAR -STARTCHAR char8804 -ENCODING 8937 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 13 1 0 +STARTCHAR 0x1F19 +ENCODING 7961 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 13 0 0 BITMAP -8000 -4000 -3000 -0E00 -0180 -0E00 -3000 -4000 -8000 -0200 -7C40 -8F80 -1000 +C000 +C000 +9FF0 +4410 +0410 +0450 +0440 +07C0 +0448 +0448 +0410 +0410 +1FF0 ENDCHAR -STARTCHAR char8882 -ENCODING 8938 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 9 10 1 1 +STARTCHAR 0x1F1A +ENCODING 7962 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 13 0 0 BITMAP -0200 -0200 -0380 -1C80 -E480 -E480 -1C80 -0B80 -0800 -0800 +D000 +D000 +4FFC +8904 +0104 +0114 +0110 +01F0 +0112 +0112 +0104 +0104 +07FC ENDCHAR -STARTCHAR char8882 -ENCODING 8939 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 9 9 1 1 +STARTCHAR 0x1F1B +ENCODING 7963 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 13 0 0 BITMAP -0400 -E400 -9C00 -8B80 -8B80 -9C00 -F000 -1000 -1000 +D000 +D000 +8FFC +4904 +0104 +0114 +0110 +01F0 +0112 +0112 +0104 +0104 +07FC ENDCHAR -STARTCHAR char8882 -ENCODING 8940 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 13 1 -2 +STARTCHAR 0x1F1C +ENCODING 7964 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 13 0 0 BITMAP -0100 -0100 -01C0 -0E40 -7240 -7240 -0E40 -05C0 -0400 -0400 -FFC0 -0800 -0800 +C800 +C800 +57FC +9104 +0104 +0114 +0110 +01F0 +0112 +0112 +0104 +0104 +07FC ENDCHAR -STARTCHAR char8882 -ENCODING 8941 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 10 12 1 -2 +STARTCHAR 0x1F1D +ENCODING 7965 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 13 0 0 BITMAP -0400 -E400 -9C00 -8B80 -8B80 -9C00 -E800 -1000 -1000 -FFC0 -1000 -2000 +C800 +C800 +97FC +5104 +0104 +0114 +0110 +01F0 +0112 +0112 +0104 +0104 +07FC ENDCHAR -STARTCHAR char8756 -ENCODING 8942 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 3 11 1 0 +STARTCHAR C090 +ENCODING 7968 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 BITMAP -40 -E0 -40 -00 -40 -E0 -40 +30 +30 +10 +20 00 -40 -E0 -40 -ENDCHAR -STARTCHAR char8756 -ENCODING 8943 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 3 1 5 -BITMAP -4440 -EEE0 -4440 -ENDCHAR -STARTCHAR char8756 -ENCODING 8944 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 13 1 0 -BITMAP -0040 -00E0 -0040 -0000 -0000 -0400 -0E00 -0400 -0000 -0000 -4000 -E000 -4000 -ENDCHAR -STARTCHAR char8756 -ENCODING 8945 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 13 1 0 -BITMAP -4000 -E000 -4000 -0000 -0000 -0400 -0E00 -0400 -0000 -0000 -0040 -00E0 -0040 -ENDCHAR -STARTCHAR char8960 -ENCODING 8960 -SWIDTH 540 0 -DWIDTH 9 0 -BBX 8 8 1 2 -BITMAP -3D -42 -85 -89 -91 -A1 -42 -BC -ENDCHAR -STARTCHAR char8962 -ENCODING 8962 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 12 1 0 -BITMAP -0400 -0A00 -1100 -2080 -4040 -8020 -8020 -8020 -8020 -8020 -8020 -FFE0 +98 +64 +44 +44 +44 +44 +44 +04 +04 +04 +04 ENDCHAR -STARTCHAR char8963 -ENCODING 8963 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 7 1 5 +STARTCHAR C090 +ENCODING 7969 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 BITMAP +30 +30 +20 10 -28 -28 +00 +98 +64 44 44 -82 -82 -ENDCHAR -STARTCHAR char8963 -ENCODING 8964 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 7 1 0 -BITMAP -82 -82 44 44 -28 -28 -10 +44 +04 +04 +04 +04 ENDCHAR -STARTCHAR char8963 -ENCODING 8965 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 9 1 2 +STARTCHAR C090 +ENCODING 7970 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 BITMAP -FE +68 +68 +24 +44 00 -10 -28 -28 +98 +64 44 44 -82 -82 +44 +44 +44 +04 +04 +04 +04 ENDCHAR -STARTCHAR char8963 -ENCODING 8966 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 11 1 2 +STARTCHAR C090 +ENCODING 7971 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 BITMAP -FE -00 -FE +68 +68 +44 +24 00 -10 -28 -28 +98 +64 44 44 -82 -82 -ENDCHAR -STARTCHAR C091 -ENCODING 8968 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 12 1 0 -BITMAP -F0 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -ENDCHAR -STARTCHAR C091 -ENCODING 8969 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 12 1 0 -BITMAP -F0 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -ENDCHAR -STARTCHAR C091 -ENCODING 8970 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 12 1 0 -BITMAP -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -F0 -ENDCHAR -STARTCHAR C091 -ENCODING 8971 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 12 1 0 -BITMAP -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -F0 +44 +44 +44 +04 +04 +04 +04 ENDCHAR -STARTCHAR C091 -ENCODING 8972 +STARTCHAR C090 +ENCODING 7972 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 6 1 0 +BBX 6 16 1 -4 BITMAP -3C -80 -80 -80 -80 -80 +64 +64 +28 +48 +00 +98 +64 +44 +44 +44 +44 +44 +04 +04 +04 +04 ENDCHAR -STARTCHAR C091 -ENCODING 8973 +STARTCHAR C090 +ENCODING 7973 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 6 1 0 +BBX 6 16 1 -4 BITMAP -F0 -04 +64 +64 +48 +28 +00 +98 +64 +44 +44 +44 +44 +44 04 04 04 04 ENDCHAR -STARTCHAR C091 -ENCODING 8974 +STARTCHAR C130 +ENCODING 7974 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 6 1 6 +BBX 6 20 1 -4 BITMAP -80 -80 -80 -80 -80 -3C +48 +A8 +90 +00 +30 +30 +10 +20 +00 +98 +64 +44 +44 +44 +44 +44 +04 +04 +04 +04 ENDCHAR -STARTCHAR C091 -ENCODING 8975 +STARTCHAR C130 +ENCODING 7975 SWIDTH 420 0 DWIDTH 7 0 -BBX 6 6 1 6 +BBX 6 20 1 -4 BITMAP +48 +A8 +90 +00 +30 +30 +20 +10 +00 +98 +64 +44 +44 +44 +44 +44 04 04 04 04 -04 -F0 ENDCHAR -STARTCHAR char172 -ENCODING 8976 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 6 4 1 2 +STARTCHAR C072 +ENCODING 7976 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 13 0 0 BITMAP -FC -80 -80 -80 +C000 +C000 +5F7C +8410 +0410 +0410 +0410 +07F0 +0410 +0410 +0410 +0410 +1F7C ENDCHAR -STARTCHAR char9216 -ENCODING 9216 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C072 +ENCODING 7977 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 13 0 0 BITMAP -8A2800 -8A2800 -CA2800 -AA2800 -9A2800 -8A2800 -89CF80 +C000 +C000 +9F7C +4410 +0410 +0410 +0410 +07F0 +0410 +0410 +0410 +0410 +1F7C ENDCHAR -STARTCHAR char9217 -ENCODING 9217 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C072 +ENCODING 7978 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 13 0 0 BITMAP -71C880 -8A2880 -822880 -722F80 -0A2880 -8A2880 -71C880 +D000 +D000 +4FDF +8904 +0104 +0104 +0104 +01FC +0104 +0104 +0104 +0104 +07DF ENDCHAR -STARTCHAR char9218 -ENCODING 9218 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C072 +ENCODING 7979 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 13 0 0 BITMAP -73E880 -888880 -808500 -708200 -088500 -888880 -708880 +D000 +D000 +8FDF +4904 +0104 +0104 +0104 +01FC +0104 +0104 +0104 +0104 +07DF ENDCHAR -STARTCHAR char9219 -ENCODING 9219 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C072 +ENCODING 7980 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 13 0 0 BITMAP -FBE880 -808880 -808500 -F08200 -808500 -808880 -F88880 +C800 +C800 +57DF +9104 +0104 +0104 +0104 +01FC +0104 +0104 +0104 +0104 +07DF ENDCHAR -STARTCHAR char9220 -ENCODING 9220 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C072 +ENCODING 7981 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 13 0 0 BITMAP -F9CF80 -822200 -822200 -F22200 -822200 -822200 -F9C200 +C800 +C800 +97DF +5104 +0104 +0104 +0104 +01FC +0104 +0104 +0104 +0104 +07DF ENDCHAR -STARTCHAR char9221 -ENCODING 9221 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 8 1 2 +STARTCHAR 0x1F2E +ENCODING 7982 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 17 0 0 BITMAP -FA2700 -822880 -832880 -F2A880 -826880 -822A80 -FA2700 -000080 +4800 +A800 +9000 +0000 +3000 +3000 +17DF +2104 +0104 +0104 +0104 +01FC +0104 +0104 +0104 +0104 +07DF ENDCHAR -STARTCHAR char9222 -ENCODING 9222 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR 0x1F2F +ENCODING 7983 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 17 0 0 BITMAP -21C880 -522900 -8A0A00 -8A0C00 -FA0A00 -8A2900 -89C880 +4800 +A800 +9000 +0000 +3000 +3000 +27DF +1104 +0104 +0104 +0104 +01FC +0104 +0104 +0104 +0104 +07DF ENDCHAR -STARTCHAR char9223 -ENCODING 9223 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C090 +ENCODING 7984 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 12 1 0 BITMAP -F3E800 -4A0800 -4A0800 -73C800 -4A0800 -4A0800 -F3EF80 +60 +60 +20 +40 +00 +40 +C0 +40 +40 +40 +50 +20 ENDCHAR -STARTCHAR char9224 -ENCODING 9224 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 3 +STARTCHAR C090 +ENCODING 7985 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 12 1 0 BITMAP -F1C0 -4A20 -4A00 -71C0 -4820 -4A20 -F1C0 +60 +60 +40 +20 +00 +40 +C0 +40 +40 +40 +50 +20 ENDCHAR -STARTCHAR char9225 -ENCODING 9225 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 3 +STARTCHAR C090 +ENCODING 7986 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 12 1 0 BITMAP -8BE0 -8880 -8880 -F880 -8880 -8880 -8880 +D0 +D0 +48 +88 +00 +40 +C0 +40 +40 +40 +50 +20 ENDCHAR -STARTCHAR char9226 -ENCODING 9226 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 3 +STARTCHAR C090 +ENCODING 7987 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 12 1 0 BITMAP -83E0 -8200 -8200 -83C0 -8200 -8200 -FA00 +D0 +D0 +88 +48 +00 +40 +C0 +40 +40 +40 +50 +20 ENDCHAR -STARTCHAR char9227 -ENCODING 9227 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 4 +STARTCHAR C090 +ENCODING 7988 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 12 1 0 BITMAP -8BE0 -8880 -8880 -5080 -5080 -5080 -2080 +C8 +C8 +50 +90 +00 +40 +C0 +40 +40 +40 +50 +20 ENDCHAR -STARTCHAR char9228 -ENCODING 9228 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 3 +STARTCHAR C090 +ENCODING 7989 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 12 1 0 BITMAP -FBE0 -8200 -8200 -F3C0 -8200 -8200 -8200 +C8 +C8 +90 +50 +00 +40 +C0 +40 +40 +40 +50 +20 ENDCHAR -STARTCHAR char9229 -ENCODING 9229 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 3 +STARTCHAR C090 +ENCODING 7990 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 16 1 0 BITMAP -73C0 -8A20 -8220 -83C0 -8280 -8A40 -7220 +48 +A8 +90 +00 +60 +60 +20 +40 +00 +40 +C0 +40 +40 +40 +50 +20 ENDCHAR -STARTCHAR char9230 -ENCODING 9230 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 3 +STARTCHAR C090 +ENCODING 7991 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 16 1 0 BITMAP -71C0 -8A20 -8220 -7220 -0A20 -8A20 -71C0 +48 +A8 +90 +00 +60 +60 +40 +20 +00 +40 +C0 +40 +40 +40 +50 +20 ENDCHAR -STARTCHAR char9231 -ENCODING 9231 +STARTCHAR C072 +ENCODING 7992 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 0 0 +BITMAP +C0 +C0 +5F +84 +04 +04 +04 +04 +04 +04 +04 +04 +1F +ENDCHAR +STARTCHAR C072 +ENCODING 7993 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 0 0 +BITMAP +C0 +C0 +9F +44 +04 +04 +04 +04 +04 +04 +04 +04 +1F +ENDCHAR +STARTCHAR C072 +ENCODING 7994 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 7 1 3 +BBX 10 13 0 0 BITMAP -7380 -8900 -8100 -7100 -0900 +D000 +D000 +4FC0 8900 -7380 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +07C0 ENDCHAR -STARTCHAR char9232 -ENCODING 9232 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C072 +ENCODING 7995 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 13 0 0 BITMAP -F20F80 -4A0800 -4A0800 -4A0F00 -4A0800 -4A0800 -F3EF80 +D000 +D000 +8FC0 +4900 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +07C0 ENDCHAR -STARTCHAR char9233 -ENCODING 9233 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C072 +ENCODING 7996 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 13 0 0 BITMAP -F1C200 -4A2600 -4A0A00 -4A0200 -4A0200 -4A2200 -F1CF80 +C800 +C800 +57C0 +9100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +07C0 ENDCHAR -STARTCHAR char9234 -ENCODING 9234 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C072 +ENCODING 7997 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 13 0 0 BITMAP -F1C700 -4A2880 -4A0080 -4A0300 -4A0400 -4A2800 -F1CF80 +C800 +C800 +97C0 +5100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +07C0 ENDCHAR -STARTCHAR char9235 -ENCODING 9235 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C072 +ENCODING 7998 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 17 0 0 BITMAP -F1CF80 -4A2080 -4A0100 -4A0300 -4A0080 -4A2880 -F1C700 +4800 +A800 +9000 +0000 +3000 +3000 +17C0 +2100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +07C0 ENDCHAR -STARTCHAR char9236 -ENCODING 9236 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C072 +ENCODING 7999 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 17 0 0 BITMAP -F1C100 -4A2300 -4A0500 -4A0900 -4A0F80 -4A2100 -F1C100 +4800 +A800 +9000 +0000 +3000 +3000 +27C0 +1100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +0100 +07C0 ENDCHAR -STARTCHAR char9237 -ENCODING 9237 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C090 +ENCODING 8000 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 BITMAP -888880 -894900 -CA2A00 -AA2C00 -9BEA00 -8A2900 -8A2880 +60 +60 +20 +40 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char9238 -ENCODING 9238 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C090 +ENCODING 8001 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 BITMAP -722880 -8A2880 -814C80 -708A80 -088980 -888880 -708880 +60 +60 +40 +20 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char9239 -ENCODING 9239 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C090 +ENCODING 8002 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 BITMAP -FBEF00 -808480 -808480 -F08700 -808480 -808480 -F88F00 +D0 +D0 +48 +88 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char9240 -ENCODING 9240 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C090 +ENCODING 8003 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 BITMAP -708880 -894880 -822C80 -822A80 -83E980 -8A2880 -722880 +D0 +D0 +88 +48 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char9241 -ENCODING 9241 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 3 +STARTCHAR C090 +ENCODING 8004 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 BITMAP -FA20 -8220 -8360 -F2A0 -8220 -8220 -FA20 +C8 +C8 +50 +90 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char9242 -ENCODING 9242 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C090 +ENCODING 8005 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 BITMAP -722F00 -8A2480 -822480 -722700 -0A2480 -8A2480 -71CF00 +C8 +C8 +90 +50 +00 +70 +88 +88 +88 +88 +88 +70 ENDCHAR -STARTCHAR char9243 -ENCODING 9243 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C079 +ENCODING 8008 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 13 0 0 BITMAP -F9C700 -822880 -820800 -F1C800 -802800 -822880 -F9C700 +C000 +C000 +4F00 +9080 +2040 +4020 +4020 +4020 +4020 +4020 +2040 +1080 +0F00 ENDCHAR -STARTCHAR char9244 -ENCODING 9244 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 3 +STARTCHAR C079 +ENCODING 8009 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 13 0 0 BITMAP -F9C0 -8220 -8200 -F1C0 -8020 -8220 -81C0 +C000 +C000 +8F00 +5080 +2040 +4020 +4020 +4020 +4020 +4020 +2040 +1080 +0F00 ENDCHAR -STARTCHAR char9245 -ENCODING 9245 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 3 +STARTCHAR 0x1F4A +ENCODING 8010 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 13 0 0 BITMAP -71C0 -8A20 -8200 -81C0 -9820 -8A20 -71C0 +D000 +D000 +49E0 +8A10 +0408 +0804 +0804 +0804 +0804 +0804 +0408 +0210 +01E0 ENDCHAR -STARTCHAR char9246 -ENCODING 9246 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 3 +STARTCHAR 0x1F4B +ENCODING 8011 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 13 0 0 BITMAP -F1C0 -8A20 -8A00 -F1C0 -A020 -9220 -89C0 +D000 +D000 +89E0 +4A10 +0408 +0804 +0804 +0804 +0804 +0804 +0408 +0210 +01E0 ENDCHAR -STARTCHAR char9247 -ENCODING 9247 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 3 +STARTCHAR 0x1F4C +ENCODING 8012 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 13 0 0 BITMAP -89C0 -8A20 -8A00 -89C0 -8820 -8A20 -71C0 +C800 +C800 +51E0 +9210 +0408 +0804 +0804 +0804 +0804 +0804 +0408 +0210 +01E0 ENDCHAR -STARTCHAR char9248 -ENCODING 9248 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 7 1 3 +STARTCHAR 0x1F4D +ENCODING 8013 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 13 0 0 BITMAP -73C0 -8A20 -8220 -73C0 -0A00 -8A00 -7200 +C800 +C800 +91E0 +5210 +0408 +0804 +0804 +0804 +0804 +0804 +0408 +0210 +01E0 ENDCHAR -STARTCHAR char9249 -ENCODING 9249 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 17 7 1 3 +STARTCHAR C117 +ENCODING 8016 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 0 BITMAP -F3E800 -4A0800 -4A0800 -4BC800 -4A0800 -4A0800 -F3EF80 +30 +30 +10 +20 +00 +C8 +44 +44 +44 +44 +48 +30 ENDCHAR -STARTCHAR C098 -ENCODING 9250 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 6 13 1 -3 +STARTCHAR C117 +ENCODING 8017 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 0 BITMAP +30 +30 +20 +10 +00 C8 -48 +44 +44 +44 +44 48 -78 -54 -54 -54 -64 -64 -78 -20 -40 -40 +30 ENDCHAR -STARTCHAR char9251 -ENCODING 9251 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 9 3 1 -2 +STARTCHAR C117 +ENCODING 8018 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 0 BITMAP -8080 -8080 -FF80 +68 +68 +24 +44 +00 +C8 +44 +44 +44 +44 +48 +30 ENDCHAR -STARTCHAR char9216 -ENCODING 9252 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 11 11 1 1 +STARTCHAR C117 +ENCODING 8019 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 0 BITMAP -8800 -8800 -C800 -A800 -9A00 -8A00 -8A00 -0200 -0200 -0200 -03E0 +68 +68 +44 +24 +00 +C8 +44 +44 +44 +44 +48 +30 ENDCHAR -STARTCHAR char9280 -ENCODING 9280 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 11 1 1 +STARTCHAR C117 +ENCODING 8020 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 0 BITMAP -1E -12 -12 -12 -10 -10 -10 -90 -90 -90 -F0 +64 +64 +28 +48 +00 +C8 +44 +44 +44 +44 +48 +30 ENDCHAR -STARTCHAR char9281 -ENCODING 9281 -SWIDTH 480 0 -DWIDTH 8 0 -BBX 7 11 1 1 +STARTCHAR C117 +ENCODING 8021 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 0 +BITMAP +64 +64 +48 +28 +00 +C8 +44 +44 +44 +44 +48 +30 +ENDCHAR +STARTCHAR C117 +ENCODING 8022 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 0 +BITMAP +48 +A8 +90 +00 +30 +30 +10 +20 +00 +C8 +44 +44 +44 +44 +48 +30 +ENDCHAR +STARTCHAR C117 +ENCODING 8023 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 0 +BITMAP +48 +A8 +90 +00 +30 +30 +20 +10 +00 +C8 +44 +44 +44 +44 +48 +30 +ENDCHAR +STARTCHAR 0x1F59 +ENCODING 8025 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 12 0 0 +BITMAP +C000 +FC78 +4820 +8440 +0440 +0280 +0380 +0100 +0100 +0100 +0100 +07C0 +ENDCHAR +STARTCHAR 0x1F5B +ENCODING 8027 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 12 0 0 +BITMAP +D000 +D78F +8904 +4888 +0088 +0050 +0070 +0020 +0020 +0020 +0020 +00F8 +ENDCHAR +STARTCHAR 0x1F5D +ENCODING 8029 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 12 0 0 +BITMAP +C800 +CF8F +9104 +5088 +0088 +0050 +0070 +0020 +0020 +0020 +0020 +00F8 +ENDCHAR +STARTCHAR 0x1F5F +ENCODING 8031 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 16 0 0 +BITMAP +4800 +A800 +9000 +0000 +3000 +3F1E +2208 +1110 +0110 +00A0 +00E0 +0040 +0040 +0040 +0040 +01F0 +ENDCHAR +STARTCHAR C117 +ENCODING 8032 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 12 1 0 +BITMAP +1800 +1800 +0800 +1000 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +ENDCHAR +STARTCHAR C117 +ENCODING 8033 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 12 1 0 +BITMAP +1800 +1800 +1000 +0800 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +ENDCHAR +STARTCHAR C117 +ENCODING 8034 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 12 1 0 +BITMAP +3400 +3400 +1200 +2200 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +ENDCHAR +STARTCHAR C117 +ENCODING 8035 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 12 1 0 +BITMAP +3400 +3400 +2200 +1200 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +ENDCHAR +STARTCHAR C117 +ENCODING 8036 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 12 1 0 +BITMAP +3200 +3200 +1400 +2400 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +ENDCHAR +STARTCHAR C117 +ENCODING 8037 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 12 1 0 +BITMAP +3200 +3200 +2400 +1400 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +ENDCHAR +STARTCHAR C117 +ENCODING 8038 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 16 1 0 +BITMAP +2400 +5400 +4800 +0000 +1800 +1800 +0800 +1000 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +ENDCHAR +STARTCHAR C117 +ENCODING 8039 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 16 1 0 +BITMAP +2400 +5400 +4800 +0000 +1800 +1800 +1000 +0800 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +ENDCHAR +STARTCHAR 0x1F68 +ENCODING 8040 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 13 0 0 +BITMAP +C000 +C000 +4F80 +9040 +2020 +2020 +2020 +2020 +1040 +1040 +0880 +28A0 +38E0 +ENDCHAR +STARTCHAR 0x1F69 +ENCODING 8041 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 13 0 0 +BITMAP +C000 +C000 +8F80 +5040 +2020 +2020 +2020 +2020 +1040 +1040 +0880 +28A0 +38E0 +ENDCHAR +STARTCHAR 0x1F6A +ENCODING 8042 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 13 0 0 +BITMAP +D000 +D000 +49F0 +8A08 +0404 +0404 +0404 +0404 +0208 +0208 +0110 +0514 +071C +ENDCHAR +STARTCHAR 0x1F6B +ENCODING 8043 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 13 0 0 +BITMAP +D000 +D000 +89F0 +4A08 +0404 +0404 +0404 +0404 +0208 +0208 +0110 +0514 +071C +ENDCHAR +STARTCHAR 0x1F6C +ENCODING 8044 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 13 0 0 +BITMAP +C800 +C800 +53E0 +9410 +0808 +0808 +0808 +0808 +0410 +0410 +0220 +0A28 +0E38 +ENDCHAR +STARTCHAR 0x1F6D +ENCODING 8045 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 13 0 0 +BITMAP +C800 +C800 +93E0 +5410 +0808 +0808 +0808 +0808 +0410 +0410 +0220 +0A28 +0E38 +ENDCHAR +STARTCHAR 0x1F6E +ENCODING 8046 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 17 0 0 +BITMAP +4800 +A800 +9000 +0000 +3000 +3000 +13E0 +2410 +0808 +0808 +0808 +0808 +0410 +0410 +0220 +0A28 +0E38 +ENDCHAR +STARTCHAR 0x1F6F +ENCODING 8047 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 17 0 0 +BITMAP +4800 +A800 +9000 +0000 +3000 +3000 +23E0 +1410 +0808 +0808 +0808 +0808 +0410 +0410 +0220 +0A28 +0E38 +ENDCHAR +STARTCHAR C138 +ENCODING 8048 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 +BITMAP +20 +20 +10 +10 +00 +62 +92 +94 +8C +88 +98 +66 +ENDCHAR +STARTCHAR C138 +ENCODING 8049 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 +BITMAP +10 +10 +20 +20 +00 +62 +92 +94 +8C +88 +98 +66 +ENDCHAR +STARTCHAR C090 +ENCODING 8050 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 +BITMAP +40 +40 +20 +20 +00 +70 +90 +80 +60 +80 +88 +70 +ENDCHAR +STARTCHAR C090 +ENCODING 8051 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 12 1 0 +BITMAP +10 +10 +20 +20 +00 +70 +90 +80 +60 +80 +88 +70 +ENDCHAR +STARTCHAR C090 +ENCODING 8052 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 +BITMAP +20 +20 +10 +10 +00 +98 +64 +44 +44 +44 +44 +44 +04 +04 +04 +04 +ENDCHAR +STARTCHAR C090 +ENCODING 8053 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 +BITMAP +10 +10 +20 +20 +00 +98 +64 +44 +44 +44 +44 +44 +04 +04 +04 +04 +ENDCHAR +STARTCHAR C090 +ENCODING 8054 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 11 1 0 +BITMAP +80 +80 +40 +00 +40 +C0 +40 +40 +40 +50 +20 +ENDCHAR +STARTCHAR C090 +ENCODING 8055 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 11 1 0 +BITMAP +20 +20 +40 +00 +40 +C0 +40 +40 +40 +50 +20 +ENDCHAR +STARTCHAR C090 +ENCODING 8056 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 0 +BITMAP +40 +40 +20 +00 +70 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR C090 +ENCODING 8057 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 0 +BITMAP +20 +20 +40 +00 +70 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR C117 +ENCODING 8058 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 +BITMAP +20 +20 +10 +00 +C8 +44 +44 +44 +44 +48 +30 +ENDCHAR +STARTCHAR C117 +ENCODING 8059 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 +BITMAP +10 +10 +20 +00 +C8 +44 +44 +44 +44 +48 +30 +ENDCHAR +STARTCHAR C117 +ENCODING 8060 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +1000 +1000 +0800 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +ENDCHAR +STARTCHAR C117 +ENCODING 8061 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +0400 +0400 +0800 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +ENDCHAR +STARTCHAR C130 +ENCODING 8064 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 17 1 -5 +BITMAP +18 +18 +08 +10 +00 +62 +92 +94 +8C +88 +98 +66 +00 +60 +20 +28 +10 +ENDCHAR +STARTCHAR C129 +ENCODING 8065 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 17 1 -5 +BITMAP +30 +30 +20 +10 +00 +62 +92 +94 +8C +88 +98 +66 +00 +60 +20 +28 +10 +ENDCHAR +STARTCHAR C138 +ENCODING 8066 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 17 1 -5 +BITMAP +68 +68 +24 +44 +00 +62 +92 +94 +8C +88 +98 +66 +00 +60 +20 +28 +10 +ENDCHAR +STARTCHAR C138 +ENCODING 8067 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 17 1 -5 +BITMAP +68 +68 +44 +24 +00 +62 +92 +94 +8C +88 +98 +66 +00 +60 +20 +28 +10 +ENDCHAR +STARTCHAR C138 +ENCODING 8068 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 17 1 -5 +BITMAP +64 +64 +28 +48 +00 +62 +92 +94 +8C +88 +98 +66 +00 +60 +20 +28 +10 +ENDCHAR +STARTCHAR C138 +ENCODING 8069 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 17 1 -5 +BITMAP +64 +64 +48 +28 +00 +62 +92 +94 +8C +88 +98 +66 +00 +60 +20 +28 +10 +ENDCHAR +STARTCHAR C130 +ENCODING 8070 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 21 1 -5 +BITMAP +24 +54 +48 +00 +18 +18 +08 +10 +00 +62 +92 +94 +8C +88 +98 +66 +00 +60 +20 +28 +10 +ENDCHAR +STARTCHAR C129 +ENCODING 8071 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 21 1 -5 +BITMAP +24 +54 +48 +00 +30 +30 +20 +10 +00 +62 +92 +94 +8C +88 +98 +66 +00 +60 +20 +28 +10 +ENDCHAR +STARTCHAR C065 +ENCODING 8072 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 17 0 -4 +BITMAP +6000 +6000 +2400 +4400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 +0C00 +0400 +0500 +0200 +ENDCHAR +STARTCHAR C065 +ENCODING 8073 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 17 0 -4 +BITMAP +6000 +6000 +4400 +2400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 +0C00 +0400 +0500 +0200 +ENDCHAR +STARTCHAR 0x1F8A +ENCODING 8074 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 17 0 -4 +BITMAP +D000 +D000 +4A00 +8A00 +0500 +0500 +0500 +0880 +0880 +0F80 +1040 +1040 +78F0 +0600 +0200 +0280 +0100 +ENDCHAR +STARTCHAR 0x1F8B +ENCODING 8075 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 17 0 -4 +BITMAP +D000 +D000 +8A00 +4A00 +0500 +0500 +0500 +0880 +0880 +0F80 +1040 +1040 +78F0 +0600 +0200 +0280 +0100 +ENDCHAR +STARTCHAR 0x1F8C +ENCODING 8076 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 17 0 -4 +BITMAP +C800 +C800 +5200 +9200 +0500 +0500 +0500 +0880 +0880 +0F80 +1040 +1040 +78F0 +0600 +0200 +0280 +0100 +ENDCHAR +STARTCHAR 0x1F8D +ENCODING 8077 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 17 0 -4 +BITMAP +C800 +C800 +9200 +5200 +0500 +0500 +0500 +0880 +0880 +0F80 +1040 +1040 +78F0 +0600 +0200 +0280 +0100 +ENDCHAR +STARTCHAR 0x1F8E +ENCODING 8078 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 21 0 -4 +BITMAP +4800 +A800 +9000 +0000 +3000 +3000 +1200 +2200 +0500 +0500 +0500 +0880 +0880 +0F80 +1040 +1040 +78F0 +0600 +0200 +0280 +0100 +ENDCHAR +STARTCHAR 0x1F8F +ENCODING 8079 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 21 0 -4 +BITMAP +4800 +A800 +9000 +0000 +3000 +3000 +2200 +1200 +0500 +0500 +0500 +0880 +0880 +0F80 +1040 +1040 +78F0 +0600 +0200 +0280 +0100 +ENDCHAR +STARTCHAR C090 +ENCODING 8080 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 +BITMAP +30 +30 +10 +20 +00 +98 +64 +44 +44 +44 +44 +44 +04 +C4 +44 +64 +ENDCHAR +STARTCHAR C090 +ENCODING 8081 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 +BITMAP +30 +30 +20 +10 +00 +98 +64 +44 +44 +44 +44 +44 +04 +C4 +44 +64 +ENDCHAR +STARTCHAR C090 +ENCODING 8082 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 +BITMAP +68 +68 +24 +44 +00 +98 +64 +44 +44 +44 +44 +44 +04 +C4 +44 +64 +ENDCHAR +STARTCHAR C090 +ENCODING 8083 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 +BITMAP +68 +68 +44 +24 +00 +98 +64 +44 +44 +44 +44 +44 +04 +C4 +44 +64 +ENDCHAR +STARTCHAR C090 +ENCODING 8084 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 +BITMAP +64 +64 +28 +48 +00 +98 +64 +44 +44 +44 +44 +44 +04 +C4 +44 +64 +ENDCHAR +STARTCHAR C090 +ENCODING 8085 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 16 1 -4 +BITMAP +64 +64 +48 +28 +00 +98 +64 +44 +44 +44 +44 +44 +04 +C4 +44 +64 +ENDCHAR +STARTCHAR C130 +ENCODING 8086 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 20 1 -4 +BITMAP +48 +A8 +90 +00 +30 +30 +10 +20 +00 +98 +64 +44 +44 +44 +44 +44 +04 +C4 +44 +64 +ENDCHAR +STARTCHAR C130 +ENCODING 8087 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 20 1 -4 +BITMAP +48 +A8 +90 +00 +30 +30 +20 +10 +00 +98 +64 +44 +44 +44 +44 +44 +04 +C4 +44 +64 +ENDCHAR +STARTCHAR C072 +ENCODING 8088 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 18 0 -5 +BITMAP +C000 +C000 +5F7C +8410 +0410 +0410 +0410 +07F0 +0410 +0410 +0410 +0410 +1F7C +0000 +0180 +0080 +00A0 +0040 +ENDCHAR +STARTCHAR C072 +ENCODING 8089 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 18 0 -5 +BITMAP +C000 +C000 +9F7C +4410 +0410 +0410 +0410 +07F0 +0410 +0410 +0410 +0410 +1F7C +0000 +00C0 +0040 +0050 +0020 +ENDCHAR +STARTCHAR C072 +ENCODING 8090 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 18 0 -5 +BITMAP +D000 +D000 +4FDF +8904 +0104 +0104 +0104 +01FC +0104 +0104 +0104 +0104 +07DF +0000 +00C0 +0040 +0050 +0020 +ENDCHAR +STARTCHAR C072 +ENCODING 8091 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 18 0 -5 +BITMAP +D000 +D000 +8FDF +4904 +0104 +0104 +0104 +01FC +0104 +0104 +0104 +0104 +07DF +0000 +00C0 +0040 +0050 +0020 +ENDCHAR +STARTCHAR C072 +ENCODING 8092 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 18 0 -5 +BITMAP +C800 +C800 +57DF +9104 +0104 +0104 +0104 +01FC +0104 +0104 +0104 +0104 +07DF +0000 +00C0 +0040 +0050 +0020 +ENDCHAR +STARTCHAR C072 +ENCODING 8093 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 18 0 -5 +BITMAP +C800 +C800 +97DF +5104 +0104 +0104 +0104 +01FC +0104 +0104 +0104 +0104 +07DF +0000 +00C0 +0040 +0050 +0020 +ENDCHAR +STARTCHAR 0x1F9E +ENCODING 8094 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 22 0 -5 +BITMAP +4800 +A800 +9000 +0000 +3000 +3000 +17DF +2104 +0104 +0104 +0104 +01FC +0104 +0104 +0104 +0104 +07DF +0000 +00C0 +0040 +0050 +0020 +ENDCHAR +STARTCHAR 0x1F9F +ENCODING 8095 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 22 0 -5 +BITMAP +4800 +A800 +9000 +0000 +3000 +3000 +27DF +1104 +0104 +0104 +0104 +01FC +0104 +0104 +0104 +0104 +07DF +0000 +00C0 +0040 +0050 +0020 +ENDCHAR +STARTCHAR C117 +ENCODING 8096 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 17 1 -5 +BITMAP +1800 +1800 +0800 +1000 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +0000 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR C117 +ENCODING 8097 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 17 1 -5 +BITMAP +1800 +1800 +1000 +0800 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +0000 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR C117 +ENCODING 8098 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 17 1 -5 +BITMAP +3400 +3400 +1200 +2200 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +0000 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR C117 +ENCODING 8099 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 17 1 -5 +BITMAP +3400 +3400 +2200 +1200 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +0000 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR C117 +ENCODING 8100 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 17 1 -5 +BITMAP +3200 +3200 +1400 +2400 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +0000 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR C117 +ENCODING 8101 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 17 1 -5 +BITMAP +3200 +3200 +2400 +1400 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +0000 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR C117 +ENCODING 8102 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 21 1 -5 +BITMAP +2400 +5400 +4800 +0000 +1800 +1800 +0800 +1000 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +0000 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR C117 +ENCODING 8103 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 21 1 -5 +BITMAP +2400 +5400 +4800 +0000 +1800 +1800 +1000 +0800 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +0000 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR 0x1FA8 +ENCODING 8104 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 17 0 -4 +BITMAP +C000 +C000 +4F80 +9040 +2020 +2020 +2020 +2020 +1040 +1040 +0880 +28A0 +38E0 +0600 +0200 +0280 +0100 +ENDCHAR +STARTCHAR 0x1FA9 +ENCODING 8105 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 17 0 -4 +BITMAP +C000 +C000 +8F80 +5040 +2020 +2020 +2020 +2020 +1040 +1040 +0880 +28A0 +38E0 +0600 +0200 +0280 +0100 +ENDCHAR +STARTCHAR 0x1FAA +ENCODING 8106 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 17 0 -4 +BITMAP +D000 +D000 +49F0 +8A08 +0404 +0404 +0404 +0404 +0208 +0208 +0110 +0514 +071C +00C0 +0040 +0050 +0020 +ENDCHAR +STARTCHAR 0x1FAB +ENCODING 8107 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 17 0 -4 +BITMAP +D000 +D000 +89F0 +4A08 +0404 +0404 +0404 +0404 +0208 +0208 +0110 +0514 +071C +00C0 +0040 +0050 +0020 +ENDCHAR +STARTCHAR 0x1FAC +ENCODING 8108 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 17 0 -4 +BITMAP +C800 +C800 +53E0 +9410 +0808 +0808 +0808 +0808 +0410 +0410 +0220 +0A28 +0E38 +0180 +0080 +00A0 +0040 +ENDCHAR +STARTCHAR 0x1FAD +ENCODING 8109 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 17 0 -4 +BITMAP +C800 +C800 +93E0 +5410 +0808 +0808 +0808 +0808 +0410 +0410 +0220 +0A28 +0E38 +0180 +0080 +00A0 +0040 +ENDCHAR +STARTCHAR 0x1FAE +ENCODING 8110 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 21 0 -4 +BITMAP +4800 +A800 +9000 +0000 +3000 +3000 +13E0 +2410 +0808 +0808 +0808 +0808 +0410 +0410 +0220 +0A28 +0E38 +0180 +0080 +00A0 +0040 +ENDCHAR +STARTCHAR 0x1FAF +ENCODING 8111 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 21 0 -4 +BITMAP +4800 +A800 +9000 +0000 +3000 +3000 +23E0 +1410 +0808 +0808 +0808 +0808 +0410 +0410 +0220 +0A28 +0E38 +0180 +0080 +00A0 +0040 +ENDCHAR +STARTCHAR C130 +ENCODING 8112 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 +BITMAP +44 +38 +00 +00 +62 +92 +94 +8C +88 +98 +66 +ENDCHAR +STARTCHAR C130 +ENCODING 8113 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 10 1 0 +BITMAP +7C +00 +00 +62 +92 +94 +8C +88 +98 +66 +ENDCHAR +STARTCHAR C130 +ENCODING 8114 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 17 1 -5 +BITMAP +10 +10 +08 +08 +00 +62 +92 +94 +8C +88 +98 +66 +00 +60 +20 +28 +10 +ENDCHAR +STARTCHAR C130 +ENCODING 8115 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 -5 +BITMAP +62 +92 +94 +8C +88 +98 +66 +00 +60 +20 +28 +10 +ENDCHAR +STARTCHAR C130 +ENCODING 8116 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 17 1 -5 +BITMAP +08 +08 +10 +10 +00 +62 +92 +94 +8C +88 +98 +66 +00 +60 +20 +28 +10 +ENDCHAR +STARTCHAR C130 +ENCODING 8118 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 +BITMAP +24 +54 +48 +00 +62 +92 +94 +8C +88 +98 +66 +ENDCHAR +STARTCHAR C130 +ENCODING 8119 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 16 1 -5 +BITMAP +24 +54 +48 +00 +62 +92 +94 +8C +88 +98 +66 +00 +60 +20 +28 +10 +ENDCHAR +STARTCHAR C065 +ENCODING 8120 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 14 0 0 +BITMAP +1100 +0E00 +0000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 +ENDCHAR +STARTCHAR C065 +ENCODING 8121 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 13 0 0 +BITMAP +1F00 +0000 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 +ENDCHAR +STARTCHAR C065 +ENCODING 8122 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 13 0 0 +BITMAP +4000 +4000 +2400 +2400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 +ENDCHAR +STARTCHAR C065 +ENCODING 8123 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 13 0 0 +BITMAP +2000 +2000 +4400 +4400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 +ENDCHAR +STARTCHAR C065 +ENCODING 8124 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 15 0 -4 +BITMAP +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 +0C00 +0400 +0500 +0200 +ENDCHAR +STARTCHAR C044 +ENCODING 8125 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 5 1 11 +BITMAP +C0 +C0 +40 +40 +80 +ENDCHAR +STARTCHAR char837 +ENCODING 8126 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 4 1 -4 +BITMAP +C0 +40 +50 +20 +ENDCHAR +STARTCHAR C044 +ENCODING 8127 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 5 1 11 +BITMAP +C0 +C0 +40 +40 +80 +ENDCHAR +STARTCHAR char8128 +ENCODING 8128 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 3 1 11 +BITMAP +48 +A8 +90 +ENDCHAR +STARTCHAR char8128 +ENCODING 8129 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 6 1 11 +BITMAP +48 +A8 +90 +00 +D8 +D8 +ENDCHAR +STARTCHAR C090 +ENCODING 8130 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 -4 +BITMAP +20 +20 +10 +00 +98 +64 +44 +44 +44 +44 +44 +04 +C4 +44 +64 +ENDCHAR +STARTCHAR C090 +ENCODING 8131 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 -4 +BITMAP +98 +64 +44 +44 +44 +44 +44 +04 +C4 +44 +64 +ENDCHAR +STARTCHAR C090 +ENCODING 8132 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 -4 +BITMAP +10 +10 +20 +00 +98 +64 +44 +44 +44 +44 +44 +04 +C4 +44 +64 +ENDCHAR +STARTCHAR C090 +ENCODING 8134 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 -4 +BITMAP +24 +54 +48 +00 +98 +64 +44 +44 +44 +44 +44 +04 +04 +04 +04 +ENDCHAR +STARTCHAR C090 +ENCODING 8135 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 -4 +BITMAP +24 +54 +48 +00 +98 +64 +44 +44 +44 +44 +44 +04 +C4 +44 +64 +ENDCHAR +STARTCHAR 0x1FC8 +ENCODING 8136 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 13 0 0 +BITMAP +8000 +8000 +5FF0 +4410 +0410 +0450 +0440 +07C0 +0448 +0448 +0410 +0410 +1FF0 +ENDCHAR +STARTCHAR 0x1FC9 +ENCODING 8137 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 13 0 0 +BITMAP +4000 +4000 +9FF0 +8410 +0410 +0450 +0440 +07C0 +0448 +0448 +0410 +0410 +1FF0 +ENDCHAR +STARTCHAR 0x1FCA +ENCODING 8138 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 13 0 0 +BITMAP +8000 +8000 +5F7C +4410 +0410 +0410 +0410 +07F0 +0410 +0410 +0410 +0410 +1F7C +ENDCHAR +STARTCHAR 0x1FCB +ENCODING 8139 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 13 0 0 +BITMAP +4000 +4000 +9F7C +8410 +0410 +0410 +0410 +07F0 +0410 +0410 +0410 +0410 +1F7C +ENDCHAR +STARTCHAR 0x1FCC +ENCODING 8140 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 16 0 -5 +BITMAP +FBE0 +2080 +2080 +2080 +2080 +3F80 +2080 +2080 +2080 +2080 +FBE0 +0000 +0C00 +0400 +0500 +0200 +ENDCHAR +STARTCHAR char8141 +ENCODING 8141 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 4 1 11 +BITMAP +D0 +D0 +48 +88 +ENDCHAR +STARTCHAR char8141 +ENCODING 8142 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 4 1 11 +BITMAP +C8 +C8 +50 +90 +ENDCHAR +STARTCHAR char8143 +ENCODING 8143 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 8 1 11 +BITMAP +48 +A8 +90 +00 +30 +30 +10 +20 +ENDCHAR +STARTCHAR C090 +ENCODING 8144 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 11 0 0 +BITMAP +88 +70 +00 +00 +20 +60 +20 +20 +20 +28 +10 +ENDCHAR +STARTCHAR C090 +ENCODING 8145 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 10 0 0 +BITMAP +F8 +00 +00 +20 +60 +20 +20 +20 +28 +10 +ENDCHAR +STARTCHAR C090 +ENCODING 8146 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 6 13 -1 0 +BITMAP +20 +20 +DC +CC +00 +00 +10 +30 +10 +10 +10 +14 +08 +ENDCHAR +STARTCHAR C090 +ENCODING 8147 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 6 13 -1 0 +BITMAP +10 +10 +EC +CC +00 +00 +10 +30 +10 +10 +10 +14 +08 +ENDCHAR +STARTCHAR C090 +ENCODING 8150 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 12 0 0 +BITMAP +48 +A8 +90 +00 +00 +20 +60 +20 +20 +20 +28 +10 +ENDCHAR +STARTCHAR C090 +ENCODING 8151 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 15 0 0 +BITMAP +48 +A8 +90 +00 +D8 +D8 +00 +00 +20 +60 +20 +20 +20 +28 +10 +ENDCHAR +STARTCHAR C072 +ENCODING 8152 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 14 1 0 +BITMAP +88 +70 +00 +F8 +20 +20 +20 +20 +20 +20 +20 +20 +20 +F8 +ENDCHAR +STARTCHAR C072 +ENCODING 8153 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 13 1 0 +BITMAP +F8 +00 +F8 +20 +20 +20 +20 +20 +20 +20 +20 +20 +F8 +ENDCHAR +STARTCHAR C072 +ENCODING 8154 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 0 0 +BITMAP +80 +80 +5F +44 +04 +04 +04 +04 +04 +04 +04 +04 +1F +ENDCHAR +STARTCHAR C072 +ENCODING 8155 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 13 0 0 +BITMAP +40 +40 +9F +84 +04 +04 +04 +04 +04 +04 +04 +04 +1F +ENDCHAR +STARTCHAR char8141 +ENCODING 8157 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 4 1 11 +BITMAP +D0 +D0 +88 +48 +ENDCHAR +STARTCHAR char8141 +ENCODING 8158 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 4 1 11 +BITMAP +C8 +C8 +90 +50 +ENDCHAR +STARTCHAR char8143 +ENCODING 8159 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 8 1 11 +BITMAP +48 +A8 +90 +00 +30 +30 +20 +10 +ENDCHAR +STARTCHAR C090 +ENCODING 8160 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 +BITMAP +44 +38 +00 +00 +C8 +44 +44 +44 +44 +48 +30 +ENDCHAR +STARTCHAR C090 +ENCODING 8161 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 10 1 0 +BITMAP +7C +00 +00 +C8 +44 +44 +44 +44 +48 +30 +ENDCHAR +STARTCHAR C090 +ENCODING 8162 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 13 1 0 +BITMAP +20 +20 +DC +CC +00 +00 +C8 +44 +44 +44 +44 +48 +30 +ENDCHAR +STARTCHAR C090 +ENCODING 8163 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 13 1 0 +BITMAP +10 +10 +EC +CC +00 +00 +C8 +44 +44 +44 +44 +48 +30 +ENDCHAR +STARTCHAR C114 +ENCODING 8164 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 17 1 -4 +BITMAP +30 +30 +10 +20 +00 +00 +70 +88 +88 +88 +88 +88 +F0 +80 +80 +80 +80 +ENDCHAR +STARTCHAR C114 +ENCODING 8165 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 17 1 -4 +BITMAP +60 +60 +40 +20 +00 +00 +70 +88 +88 +88 +88 +88 +F0 +80 +80 +80 +80 +ENDCHAR +STARTCHAR C090 +ENCODING 8166 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 0 +BITMAP +24 +54 +48 +00 +00 +C8 +44 +44 +44 +44 +48 +30 +ENDCHAR +STARTCHAR C090 +ENCODING 8167 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 15 1 0 +BITMAP +24 +54 +48 +00 +6C +6C +00 +00 +C8 +44 +44 +44 +44 +48 +30 +ENDCHAR +STARTCHAR C085 +ENCODING 8168 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 11 14 0 0 +BITMAP +1100 +0E00 +0000 +F1E0 +2080 +1100 +1100 +0A00 +0E00 +0400 +0400 +0400 +0400 +1F00 +ENDCHAR +STARTCHAR C085 +ENCODING 8169 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 11 13 0 0 +BITMAP +1F00 +0000 +F1E0 +2080 +1100 +1100 +0A00 +0E00 +0400 +0400 +0400 +0400 +1F00 +ENDCHAR +STARTCHAR 0x1FEA +ENCODING 8170 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 12 0 0 +BITMAP +8000 +BC78 +4820 +4440 +0440 +0280 +0380 +0100 +0100 +0100 +0100 +07C0 +ENDCHAR +STARTCHAR 0x1FEB +ENCODING 8171 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 12 0 0 +BITMAP +4000 +7C78 +8820 +8440 +0440 +0280 +0380 +0100 +0100 +0100 +0100 +07C0 +ENDCHAR +STARTCHAR C082 +ENCODING 8172 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 13 0 0 +BITMAP +C000 +C000 +9FE0 +8430 +4410 +0410 +0430 +07E0 +0400 +0400 +0400 +0400 +1F00 +ENDCHAR +STARTCHAR char901 +ENCODING 8173 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 4 2 11 +BITMAP +20 +20 +DC +CC +ENDCHAR +STARTCHAR char901 +ENCODING 8174 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 4 2 11 +BITMAP +10 +10 +EC +CC +ENDCHAR +STARTCHAR char8141 +ENCODING 8175 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 4 1 11 +BITMAP +80 +80 +40 +40 +ENDCHAR +STARTCHAR C117 +ENCODING 8178 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 16 1 -5 +BITMAP +1000 +1000 +0800 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +0000 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR C117 +ENCODING 8179 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 12 1 -5 +BITMAP +2200 +4100 +8080 +8880 +8880 +8880 +7700 +0000 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR C117 +ENCODING 8180 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 16 1 -5 +BITMAP +0400 +0400 +0800 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +0000 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR C117 +ENCODING 8182 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +1200 +2A00 +2400 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +ENDCHAR +STARTCHAR C117 +ENCODING 8183 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 16 1 -5 +BITMAP +1200 +2A00 +2400 +0000 +2200 +4100 +8080 +8880 +8880 +8880 +7700 +0000 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR C079 +ENCODING 8184 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 12 13 0 0 +BITMAP +8000 +8000 +4780 +4840 +1020 +2010 +2010 +2010 +2010 +2010 +1020 +0840 +0780 +ENDCHAR +STARTCHAR C079 +ENCODING 8185 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 12 13 0 0 +BITMAP +4000 +4000 +8780 +8840 +1020 +2010 +2010 +2010 +2010 +2010 +1020 +0840 +0780 +ENDCHAR +STARTCHAR 0x1FFA +ENCODING 8186 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 13 0 0 +BITMAP +8000 +8000 +47C0 +4820 +1010 +1010 +1010 +1010 +0820 +0820 +0440 +1450 +1C70 +ENDCHAR +STARTCHAR 0x1FFB +ENCODING 8187 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 13 0 0 +BITMAP +4000 +4000 +87C0 +8820 +1010 +1010 +1010 +1010 +0820 +0820 +0440 +1450 +1C70 +ENDCHAR +STARTCHAR 0x1FFC +ENCODING 8188 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 -4 +BITMAP +3E00 +4100 +8080 +8080 +8080 +8080 +4100 +4100 +2200 +A280 +E380 +1800 +0800 +0A00 +0400 +ENDCHAR +STARTCHAR char8141 +ENCODING 8189 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 4 1 11 +BITMAP +40 +40 +80 +80 +ENDCHAR +STARTCHAR C044 +ENCODING 8190 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 5 1 11 +BITMAP +C0 +C0 +80 +80 +40 +ENDCHAR +STARTCHAR char8192 +ENCODING 8192 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +2272 +B288 +2A8A +A69A +A278 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8193 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +2272 +B688 +2A8A +A29A +A278 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8194 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +3E8A +A0C8 +38AA +A09A +BE88 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8195 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +3E8A +A0D8 +38AA +A08A +BE88 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8196 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +388A +84D8 +18AA +848A +B888 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8197 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +288A +A8D8 +3CAA +888A +8888 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8198 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +1C8A +A0D8 +38AA +A48A +9888 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8199 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +07C2 +8400 +0702 +8402 +8400 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8200 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +0782 +8440 +0782 +8402 +8400 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8201 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +3E8A +8888 +08FA +888A +8888 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8202 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +0442 +8440 +07C2 +8442 +8440 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8203 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +3EAA +84A8 +08AA +90AA +BE50 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8204 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +3EAA +84A8 +08AA +90AA +BE50 +0002 +A20A +B208 +2A0A +A68A +A270 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8205 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +3EAA +84A8 +08AA +90AA +BE50 +0002 +8042 +8040 +0042 +8442 +8380 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8206 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +20F2 +A088 +20F2 +A092 +BE88 +0002 +8442 +86C0 +0542 +8442 +8440 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8207 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +3C82 +A280 +3C82 +A482 +A2F8 +0002 +8442 +86C0 +0542 +8442 +8440 +0002 +DB6A +ENDCHAR +STARTCHAR C032 +ENCODING 8208 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 1 1 4 +BITMAP +F0 +ENDCHAR +STARTCHAR C045 +ENCODING 8209 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 1 1 4 +BITMAP +F0 +ENDCHAR +STARTCHAR EN DASH +ENCODING 8210 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 1 1 4 +BITMAP +FE +ENDCHAR +STARTCHAR EN DASH +ENCODING 8211 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 1 1 4 +BITMAP +FE +ENDCHAR +STARTCHAR EM DASH +ENCODING 8212 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 1 1 4 +BITMAP +FFFE +ENDCHAR +STARTCHAR EM DASH +ENCODING 8213 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 1 1 4 +BITMAP +FFFF +ENDCHAR +STARTCHAR EM DASH +ENCODING 8214 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 13 0 0 +BITMAP +A0 +A0 +A0 +A0 +A0 +A0 +A0 +A0 +A0 +A0 +A0 +A0 +A0 +ENDCHAR +STARTCHAR C069 +ENCODING 8215 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 3 0 -3 +BITMAP +FFC0 +0000 +FFC0 +ENDCHAR +STARTCHAR C044 +ENCODING 8216 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 5 1 7 +BITMAP +40 +80 +80 +C0 +C0 +ENDCHAR +STARTCHAR C044 +ENCODING 8217 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 5 1 7 +BITMAP +C0 +C0 +40 +40 +80 +ENDCHAR +STARTCHAR C044 +ENCODING 8218 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 5 1 -3 +BITMAP +C0 +C0 +40 +40 +80 +ENDCHAR +STARTCHAR C044 +ENCODING 8219 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 5 1 7 +BITMAP +C0 +C0 +80 +80 +40 +ENDCHAR +STARTCHAR C092 +ENCODING 8220 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 1 7 +BITMAP +48 +90 +90 +D8 +D8 +ENDCHAR +STARTCHAR C034 +ENCODING 8221 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 1 7 +BITMAP +D8 +D8 +48 +48 +90 +ENDCHAR +STARTCHAR C034 +ENCODING 8222 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 1 -3 +BITMAP +D8 +D8 +48 +48 +90 +ENDCHAR +STARTCHAR C034 +ENCODING 8223 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 1 7 +BITMAP +D8 +D8 +90 +90 +48 +ENDCHAR +STARTCHAR C121 +ENCODING 8224 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 15 1 -3 +BITMAP +10 +38 +10 +10 +54 +FE +54 +10 +10 +38 +10 +10 +10 +10 +10 +ENDCHAR +STARTCHAR C121 +ENCODING 8225 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 15 1 -3 +BITMAP +10 +38 +10 +10 +54 +FE +56 +10 +54 +FE +54 +10 +10 +38 +10 +ENDCHAR +STARTCHAR C045 +ENCODING 8226 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 4 1 3 +BITMAP +60 +F0 +F0 +60 +ENDCHAR +STARTCHAR C045 +ENCODING 8227 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 6 1 2 +BITMAP +80 +E0 +F8 +F8 +E0 +80 +ENDCHAR +STARTCHAR C046 +ENCODING 8228 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 2 2 1 0 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR C046 +ENCODING 8229 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 6 2 1 0 +BITMAP +CC +CC +ENDCHAR +STARTCHAR C046 +ENCODING 8230 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 10 2 1 0 +BITMAP +CCC0 +CCC0 +ENDCHAR +STARTCHAR C046 +ENCODING 8231 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 2 1 3 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char8192 +ENCODING 8232 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +0202 +8200 +0202 +8202 +83E0 +0002 +9BB2 +A228 +1332 +8A22 +B3A0 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8233 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +03C2 +8220 +03C2 +8202 +8200 +0002 +9BB2 +A228 +1332 +8A22 +B3A0 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8234 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +0002 +8000 +0002 +A33A +A2A0 +2332 +A322 +BAB8 +0002 +8002 +8000 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8235 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +0002 +8000 +0002 +B23A +AA20 +3232 +B222 +ABB8 +0002 +8002 +8000 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8236 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +0002 +8000 +0002 +B33A +AAA0 +32B2 +A2A2 +A320 +0002 +8002 +8000 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8237 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +0002 +8000 +0002 +A312 +A2A8 +232A +A32A +BA90 +0002 +8002 +8000 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8238 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +0002 +8000 +0002 +B212 +AA28 +322A +B22A +AB90 +0002 +8002 +8000 +0002 +DB6A +ENDCHAR +STARTCHAR char8192 +ENCODING 8239 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 15 0 0 +BITMAP +B6D6 +8000 +2AB2 +AAA8 +3BB2 +BBAA +AAB0 +0002 +9EF2 +A088 +1CF2 +8282 +BC80 +0002 +DB6A +ENDCHAR +STARTCHAR C037 +ENCODING 8240 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 13 1 -1 +BITMAP +6080 +9900 +9700 +9200 +9400 +6400 +0800 +1318 +14A4 +24A4 +44A4 +44A4 +8318 +ENDCHAR +STARTCHAR C037 +ENCODING 8241 +SWIDTH 1200 0 +DWIDTH 20 0 +BBX 19 13 1 -1 +BITMAP +608000 +990000 +970000 +920000 +940000 +640000 +080000 +1318C0 +14A520 +24A520 +44A520 +44A520 +8318C0 +ENDCHAR +STARTCHAR C125 +ENCODING 8242 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 4 1 7 +BITMAP +20 +60 +40 +80 +ENDCHAR +STARTCHAR C125 +ENCODING 8243 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 4 1 7 +BITMAP +24 +6C +48 +90 +ENDCHAR +STARTCHAR C125 +ENCODING 8244 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 4 1 7 +BITMAP +2480 +6D80 +4900 +9200 +ENDCHAR +STARTCHAR C125 +ENCODING 8245 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 4 1 7 +BITMAP +80 +C0 +40 +20 +ENDCHAR +STARTCHAR C125 +ENCODING 8246 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 4 1 7 +BITMAP +90 +D8 +48 +24 +ENDCHAR +STARTCHAR C125 +ENCODING 8247 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 4 1 7 +BITMAP +9200 +DB00 +4900 +2480 +ENDCHAR +STARTCHAR char8248 +ENCODING 8248 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 4 1 -2 +BITMAP +40 +40 +A0 +A0 +ENDCHAR +STARTCHAR char171 +ENCODING 8249 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 0 +BITMAP +10 +20 +60 +C0 +60 +20 +10 +ENDCHAR +STARTCHAR char171 +ENCODING 8250 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 0 +BITMAP +80 +40 +60 +30 +60 +40 +80 +ENDCHAR +STARTCHAR char8251 +ENCODING 8251 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 13 1 0 +BITMAP +8040 +4C80 +4C80 +2100 +1200 +1200 +CCC0 +D2C0 +1200 +2100 +4C80 +4C80 +8040 +ENDCHAR +STARTCHAR C033 +ENCODING 8252 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 12 1 0 +BITMAP +D8 +D8 +D8 +D8 +D8 +D8 +D8 +00 +00 +00 +D8 +D8 +ENDCHAR +STARTCHAR C063 +ENCODING 8253 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 0 +BITMAP +78 +84 +A4 +24 +28 +30 +20 +60 +60 +00 +60 +60 +ENDCHAR +STARTCHAR C069 +ENCODING 8254 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 1 0 12 +BITMAP +FFC0 +ENDCHAR +STARTCHAR C065 +ENCODING 8255 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 3 1 0 +BITMAP +8020 +4040 +3F80 +ENDCHAR +STARTCHAR C065 +ENCODING 8256 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 3 1 12 +BITMAP +3F80 +4040 +8020 +ENDCHAR +STARTCHAR C047 +ENCODING 8257 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 8 1 -4 +BITMAP +10 +10 +20 +20 +40 +60 +90 +90 +ENDCHAR +STARTCHAR C042 +ENCODING 8258 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 10 1 1 +BITMAP +0400 +1500 +0E00 +1500 +0400 +2080 +AAA0 +71C0 +AAA0 +2080 +ENDCHAR +STARTCHAR C045 +ENCODING 8259 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 2 1 3 +BITMAP +F0 +F0 +ENDCHAR +STARTCHAR C047 +ENCODING 8260 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 16 1 -4 +BITMAP +01 +01 +02 +02 +04 +04 +08 +08 +10 +10 +20 +20 +40 +40 +80 +80 +ENDCHAR +STARTCHAR C091 +ENCODING 8261 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 3 16 1 -4 +BITMAP +E0 +80 +80 +80 +80 +80 +80 +E0 +80 +80 +80 +80 +80 +80 +80 +E0 +ENDCHAR +STARTCHAR C093 +ENCODING 8262 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 3 16 0 -4 +BITMAP +E0 +20 +20 +20 +20 +20 +20 +E0 +20 +20 +20 +20 +20 +20 +20 +E0 +ENDCHAR +STARTCHAR C063 +ENCODING 8264 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 9 12 1 0 +BITMAP +7180 +8980 +8980 +1180 +2180 +2180 +6180 +0000 +0000 +0000 +6180 +6180 +ENDCHAR +STARTCHAR C063 +ENCODING 8265 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 9 12 1 0 +BITMAP +C700 +C880 +C880 +C100 +C200 +C200 +C600 +0000 +0000 +0000 +C600 +C600 +ENDCHAR +STARTCHAR char171 +ENCODING 8266 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 7 1 0 +BITMAP +80 +F8 +08 +10 +20 +40 +80 +ENDCHAR +STARTCHAR char182 +ENCODING 8267 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 15 1 -4 +BITMAP +F8 +5C +5E +5E +5E +5C +58 +50 +50 +50 +50 +50 +50 +50 +50 +ENDCHAR +STARTCHAR char8268 +ENCODING 8268 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 7 1 2 +BITMAP +3C +74 +F4 +F4 +F4 +74 +3C +ENDCHAR +STARTCHAR char8268 +ENCODING 8269 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 7 1 2 +BITMAP +F0 +B8 +BC +BC +BC +B8 +F0 +ENDCHAR +STARTCHAR char8304 +ENCODING 8304 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 6 +BITMAP +60 +90 +90 +90 +90 +90 +60 +ENDCHAR +STARTCHAR char185 +ENCODING 8308 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 7 1 6 +BITMAP +10 +30 +50 +90 +F8 +10 +38 +ENDCHAR +STARTCHAR char8309 +ENCODING 8309 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 6 +BITMAP +F0 +80 +A0 +D0 +10 +90 +60 +ENDCHAR +STARTCHAR char8310 +ENCODING 8310 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 6 +BITMAP +60 +90 +80 +E0 +90 +90 +60 +ENDCHAR +STARTCHAR char8311 +ENCODING 8311 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 6 +BITMAP +F0 +90 +20 +20 +40 +40 +40 +ENDCHAR +STARTCHAR char8310 +ENCODING 8312 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 6 +BITMAP +60 +90 +90 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char8310 +ENCODING 8313 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 6 +BITMAP +60 +90 +90 +70 +10 +90 +60 +ENDCHAR +STARTCHAR char8314 +ENCODING 8314 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 1 7 +BITMAP +20 +20 +F8 +20 +20 +ENDCHAR +STARTCHAR char8314 +ENCODING 8315 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 1 1 9 +BITMAP +F8 +ENDCHAR +STARTCHAR char8314 +ENCODING 8316 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 3 1 8 +BITMAP +F8 +00 +F8 +ENDCHAR +STARTCHAR char8317 +ENCODING 8317 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 7 1 6 +BITMAP +40 +80 +80 +80 +80 +80 +40 +ENDCHAR +STARTCHAR char8317 +ENCODING 8318 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 7 1 6 +BITMAP +80 +40 +40 +40 +40 +40 +80 +ENDCHAR +STARTCHAR C110 +ENCODING 8319 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 1 6 +BITMAP +D0 +68 +48 +48 +48 +ENDCHAR +STARTCHAR char8304 +ENCODING 8320 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 -4 +BITMAP +60 +90 +90 +90 +90 +90 +60 +ENDCHAR +STARTCHAR char185 +ENCODING 8321 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 7 1 -4 +BITMAP +40 +C0 +40 +40 +40 +40 +E0 +ENDCHAR +STARTCHAR char178 +ENCODING 8322 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 -4 +BITMAP +60 +90 +10 +10 +20 +40 +F0 +ENDCHAR +STARTCHAR char8323 +ENCODING 8323 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 -4 +BITMAP +60 +90 +10 +20 +10 +90 +60 +ENDCHAR +STARTCHAR char185 +ENCODING 8324 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 7 1 -4 +BITMAP +10 +30 +50 +90 +F8 +10 +38 +ENDCHAR +STARTCHAR char8309 +ENCODING 8325 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 -4 +BITMAP +F0 +80 +A0 +D0 +10 +90 +60 +ENDCHAR +STARTCHAR char8310 +ENCODING 8326 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 -4 +BITMAP +60 +90 +80 +E0 +90 +90 +60 +ENDCHAR +STARTCHAR char8311 +ENCODING 8327 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 -4 +BITMAP +F0 +90 +20 +20 +40 +40 +40 +ENDCHAR +STARTCHAR char8310 +ENCODING 8328 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 -4 +BITMAP +60 +90 +90 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char8310 +ENCODING 8329 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 7 1 -4 +BITMAP +60 +90 +90 +70 +10 +90 +60 +ENDCHAR +STARTCHAR char8314 +ENCODING 8330 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 1 -3 +BITMAP +20 +20 +F8 +20 +20 +ENDCHAR +STARTCHAR char8314 +ENCODING 8331 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 1 1 -1 +BITMAP +F8 +ENDCHAR +STARTCHAR char8314 +ENCODING 8332 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 3 1 -2 +BITMAP +F8 +00 +F8 +ENDCHAR +STARTCHAR char8317 +ENCODING 8333 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 7 1 -4 +BITMAP +40 +80 +80 +80 +80 +80 +40 +ENDCHAR +STARTCHAR char8317 +ENCODING 8334 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 2 7 1 -4 +BITMAP +80 +40 +40 +40 +40 +40 +80 +ENDCHAR +STARTCHAR C067 +ENCODING 8352 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 8 12 2 0 +BITMAP +34 +4C +84 +80 +9F +89 +48 +3E +08 +08 +09 +1F +ENDCHAR +STARTCHAR C067 +ENCODING 8353 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 9 16 2 -2 +BITMAP +0500 +0500 +0A00 +1E80 +2B80 +4A80 +9480 +9400 +9400 +9400 +A880 +6880 +2900 +3E00 +5000 +5000 +ENDCHAR +STARTCHAR C067 +ENCODING 8354 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 9 11 2 0 +BITMAP +1E80 +2180 +4080 +8080 +9A00 +8D00 +8800 +8880 +4880 +2900 +1E00 +ENDCHAR +STARTCHAR C070 +ENCODING 8355 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 9 11 2 0 +BITMAP +FF80 +2080 +2080 +2000 +2700 +3C80 +2480 +2700 +2500 +2480 +FC80 +ENDCHAR +STARTCHAR C036 +ENCODING 8356 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 8 12 2 0 +BITMAP +06 +09 +11 +10 +7C +10 +7C +10 +10 +51 +B2 +CC +ENDCHAR +STARTCHAR C109 +ENCODING 8357 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 11 11 2 -2 +BITMAP +0100 +0100 +FB80 +4640 +4440 +4440 +4C40 +4C40 +FEE0 +1000 +1000 +ENDCHAR +STARTCHAR C078 +ENCODING 8358 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 11 11 2 0 +BITMAP +E3E0 +3080 +3080 +2880 +FFE0 +2480 +FFE0 +2280 +2180 +2180 +F880 +ENDCHAR +STARTCHAR C080 +ENCODING 8359 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 11 11 2 0 +BITMAP +FF00 +2180 +2080 +FFE0 +2080 +2180 +3F00 +2000 +2000 +2000 +F800 +ENDCHAR +STARTCHAR C082 +ENCODING 8360 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 15 11 2 0 +BITMAP +FE00 +2100 +2080 +FFE0 +209E +2122 +3E20 +231C +2102 +2122 +F8FC +ENDCHAR +STARTCHAR C087 +ENCODING 8361 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 16 11 2 0 +BITMAP +F1CF +2184 +2184 +2244 +FFFF +1248 +FFFF +1428 +0C30 +0C30 +0810 +ENDCHAR +STARTCHAR 00A6 +ENCODING 8362 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 10 9 2 0 +BITMAP +FC00 +8600 +9240 +9240 +9240 +9240 +9040 +10C0 +1F80 +ENDCHAR +STARTCHAR C100 +ENCODING 8363 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 6 14 2 -2 +BITMAP +18 +08 +7C +08 +08 +78 +48 +88 +88 +88 +48 +7C +00 +7C +ENDCHAR +STARTCHAR C067 +ENCODING 8364 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 11 11 2 0 +BITMAP +07A0 +0860 +1020 +2020 +FF80 +2000 +FE00 +2020 +1020 +0840 +0780 +ENDCHAR +STARTCHAR C075 +ENCODING 8365 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 2 0 +BITMAP +E7 +42 +44 +48 +50 +FE +50 +48 +44 +42 +E7 +ENDCHAR +STARTCHAR C084 +ENCODING 8366 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 2 0 +BITMAP +FF80 +8880 +8880 +8A80 +0C00 +1A00 +2C00 +1800 +2800 +0800 +3E00 +ENDCHAR +STARTCHAR C036 +ENCODING 8367 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 15 16 2 -3 +BITMAP +0180 +0200 +1F80 +2440 +0420 +0820 +0820 +1020 +1020 +104C +7052 +B192 +CE2C +0020 +0040 +0040 +ENDCHAR +STARTCHAR C069 +ENCODING 8400 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 6 2 0 12 +BITMAP +40 +FC +ENDCHAR +STARTCHAR C069 +ENCODING 8401 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 6 2 0 12 +BITMAP +08 +FC +ENDCHAR +STARTCHAR EM DASH +ENCODING 8402 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 1 13 0 -2 +BITMAP +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR EM DASH +ENCODING 8403 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 1 7 0 1 +BITMAP +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char8404 +ENCODING 8404 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 13 5 0 9 +BITMAP +0780 +1860 +A010 +C008 +E000 +ENDCHAR +STARTCHAR char8404 +ENCODING 8405 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 13 5 0 9 +BITMAP +0F00 +30C0 +4028 +8018 +0038 +ENDCHAR +STARTCHAR C069 +ENCODING 8406 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 6 3 0 11 +BITMAP +40 +FC +40 +ENDCHAR +STARTCHAR C069 +ENCODING 8407 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 6 3 0 11 +BITMAP +08 +FC +08 +ENDCHAR +STARTCHAR C023 +ENCODING 8408 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 5 5 0 4 +BITMAP +70 +88 +88 +88 +70 +ENDCHAR +STARTCHAR C023 +ENCODING 8409 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 6 6 0 4 +BITMAP +04 +78 +98 +A8 +88 +70 +ENDCHAR +STARTCHAR C023 +ENCODING 8410 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 6 6 0 3 +BITMAP +70 +88 +A8 +98 +78 +04 +ENDCHAR +STARTCHAR C046 +ENCODING 8411 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 2 0 11 +BITMAP +DB +DB +ENDCHAR +STARTCHAR C046 +ENCODING 8412 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 11 2 0 11 +BITMAP +DB60 +DB60 +ENDCHAR +STARTCHAR C040 +ENCODING 8413 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 17 17 0 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 8414 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 17 17 0 -3 +BITMAP +FFFF80 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +FFFF80 +ENDCHAR +STARTCHAR C040 +ENCODING 8415 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 17 17 0 -3 +BITMAP +008000 +014000 +022000 +041000 +080800 +100400 +200200 +400100 +800080 +400100 +200200 +100400 +080800 +041000 +022000 +014000 +008000 +ENDCHAR +STARTCHAR C040 +ENCODING 8416 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 17 17 0 -3 +BITMAP +07F000 +180C00 +200200 +500100 +480100 +840080 +820080 +810080 +808080 +804080 +802080 +801080 +400900 +400500 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C069 +ENCODING 8417 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 7 3 0 11 +BITMAP +44 +FE +44 +ENDCHAR +STARTCHAR C040 +ENCODING 8418 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 17 16 1 -1 +BITMAP +3FFE00 +400100 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +800080 +400100 +3FFE00 +ENDCHAR +STARTCHAR C040 +ENCODING 8419 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 17 16 1 -1 +BITMAP +3FFE00 +7FFF00 +DFFD80 +EFFB80 +F00780 +F00780 +F00780 +F00780 +F00780 +F00780 +F00780 +F00780 +EFFB80 +DFFD80 +7FFF00 +3FFE00 +ENDCHAR +STARTCHAR char8448 +ENCODING 8448 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 11 1 0 +BITMAP +3440 +4840 +8880 +9080 +9500 +6930 +0248 +0280 +0480 +0490 +0060 +ENDCHAR +STARTCHAR char8448 +ENCODING 8449 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 11 1 0 +BITMAP +3440 +4840 +8880 +9080 +9500 +6938 +0248 +0220 +0410 +0448 +0070 +ENDCHAR +STARTCHAR C067 +ENCODING 8450 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 11 1 0 +BITMAP +1F40 +30C0 +5040 +A040 +A000 +A000 +A000 +A040 +5040 +3080 +1F00 +ENDCHAR +STARTCHAR C067 +ENCODING 8451 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 15 12 1 0 +BITMAP +7000 +887A +8886 +8902 +7202 +0200 +0200 +0200 +0202 +0102 +0084 +0078 +ENDCHAR +STARTCHAR C076 +ENCODING 8452 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +7C00 +1000 +3C00 +5200 +9000 +9000 +9000 +5200 +3C00 +1080 +7F00 +ENDCHAR +STARTCHAR char8448 +ENCODING 8453 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 11 1 0 +BITMAP +3080 +4880 +8100 +8100 +9200 +6230 +0448 +0488 +0888 +0890 +0060 +ENDCHAR +STARTCHAR char8448 +ENCODING 8454 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 11 1 0 +BITMAP +3080 +4880 +8100 +8100 +9200 +6264 +0424 +0424 +0848 +084A +0034 +ENDCHAR +STARTCHAR C119 +ENCODING 8455 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 1 0 +BITMAP +3D +43 +81 +81 +40 +38 +40 +80 +81 +41 +3E +ENDCHAR +STARTCHAR C124 +ENCODING 8456 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +BC00 +C200 +8100 +8080 +0080 +1F80 +0080 +8080 +8100 +4200 +3C00 +ENDCHAR +STARTCHAR C067 +ENCODING 8457 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 15 12 1 0 +BITMAP +7000 +8BFE +8882 +8882 +708A +0088 +00F8 +0088 +0088 +0080 +0080 +03E0 +ENDCHAR +STARTCHAR C113 +ENCODING 8458 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 10 1 -4 +BITMAP +18 +24 +44 +44 +48 +38 +1C +70 +90 +E0 +ENDCHAR +STARTCHAR char8464 +ENCODING 8459 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 12 11 1 0 +BITMAP +0A10 +1610 +0210 +0420 +0420 +1FE0 +2840 +4840 +4840 +9090 +60E0 +ENDCHAR +STARTCHAR char8460 +ENCODING 8460 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 12 1 -1 +BITMAP +7038 +D850 +8840 +C840 +4840 +4FC0 +0840 +0840 +1840 +F058 +6070 +0060 +ENDCHAR +STARTCHAR C072 +ENCODING 8461 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 12 11 1 0 +BITMAP +F9F0 +50A0 +50A0 +50A0 +50A0 +5FA0 +50A0 +50A0 +50A0 +50A0 +F9F0 +ENDCHAR +STARTCHAR char104 +ENCODING 8462 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 12 1 0 +BITMAP +30 +10 +10 +20 +20 +38 +44 +44 +44 +88 +8A +8C +ENDCHAR +STARTCHAR char104 +ENCODING 8463 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 12 1 0 +BITMAP +30 +10 +1C +30 +E0 +38 +44 +44 +44 +88 +8A +8C +ENDCHAR +STARTCHAR char8464 +ENCODING 8464 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 11 1 0 +BITMAP +0E +12 +22 +04 +04 +04 +08 +38 +48 +90 +60 +ENDCHAR +STARTCHAR char8465 +ENCODING 8465 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +7F00 +C200 +8600 +C400 +6600 +2200 +0300 +0180 +4080 +E180 +3F00 +ENDCHAR +STARTCHAR C036 +ENCODING 8466 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 11 1 0 +BITMAP +0380 +0440 +0480 +3F00 +0800 +0800 +0800 +1000 +5000 +B100 +CE00 +ENDCHAR +STARTCHAR C036 +ENCODING 8467 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 +BITMAP +10 +28 +28 +28 +50 +50 +50 +60 +60 +C4 +38 +ENDCHAR +STARTCHAR C108 +ENCODING 8468 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 12 1 0 +BITMAP +6600 +2200 +FFE0 +2200 +2200 +23C0 +2220 +2220 +2220 +2220 +2220 +73C0 +ENDCHAR +STARTCHAR C078 +ENCODING 8469 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 11 1 0 +BITMAP +F8F8 +2420 +3420 +2A20 +2A20 +2520 +22A0 +22A0 +2160 +2120 +F8E0 +ENDCHAR +STARTCHAR C078 +ENCODING 8470 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 15 11 1 0 +BITMAP +E3E0 +3080 +3080 +289C +28A2 +24A2 +22A2 +22A2 +219C +2180 +F8BE +ENDCHAR +STARTCHAR C099 +ENCODING 8471 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 10 1 3 +BITMAP +3E00 +4100 +BC80 +9280 +9280 +9C80 +9080 +B880 +4100 +3E00 +ENDCHAR +STARTCHAR char8472 +ENCODING 8472 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 13 1 -4 +BITMAP +4000 +8700 +8880 +9080 +9080 +A480 +AC80 +4900 +A600 +A000 +9000 +9000 +6000 +ENDCHAR +STARTCHAR C080 +ENCODING 8473 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 11 1 0 +BITMAP +FF80 +52C0 +5140 +5140 +5140 +52C0 +5F80 +5000 +5000 +5000 +F800 +ENDCHAR +STARTCHAR C081 +ENCODING 8474 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 14 1 -3 +BITMAP +1F00 +3180 +5140 +A0A0 +A0A0 +A0A0 +A0A0 +A0A0 +5540 +3B80 +1F00 +0500 +0520 +03C0 +ENDCHAR +STARTCHAR C036 +ENCODING 8475 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +01C0 +0620 +0A20 +1440 +2480 +4B00 +4A00 +8A00 +9100 +9120 +60C0 +ENDCHAR +STARTCHAR char8460 +ENCODING 8476 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 11 1 0 +BITMAP +7380 +DCC0 +8840 +C8C0 +4880 +4B00 +0B00 +0B00 +1900 +F1C0 +6180 +ENDCHAR +STARTCHAR C082 +ENCODING 8477 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 12 11 1 0 +BITMAP +FF00 +5280 +5140 +5140 +5280 +5F00 +5580 +5280 +5280 +5280 +F970 +ENDCHAR +STARTCHAR C082 +ENCODING 8478 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +FE00 +2100 +2080 +2080 +2100 +3E20 +2340 +2180 +2100 +2300 +F4E0 +ENDCHAR +STARTCHAR C082 +ENCODING 8479 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 17 1 -3 +BITMAP +1800 +0600 +0200 +FE00 +2500 +2480 +2480 +2900 +3E00 +2B00 +2900 +3100 +3100 +F8E0 +1000 +2000 +2000 +ENDCHAR +STARTCHAR char8480 +ENCODING 8480 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 7 1 4 +BITMAP +7618 +9330 +8330 +62D0 +12D0 +9210 +E738 +ENDCHAR +STARTCHAR char8480 +ENCODING 8481 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 4 +BITMAP +FBEE00 +A92400 +210400 +21C400 +210400 +212480 +73EF80 +ENDCHAR +STARTCHAR char8480 +ENCODING 8482 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 14 7 1 4 +BITMAP +FB0C +A998 +2198 +2168 +2168 +2108 +739C +ENDCHAR +STARTCHAR C086 +ENCODING 8483 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 17 1 -2 +BITMAP +1800 +0600 +0200 +0400 +F5E0 +2480 +2480 +1900 +1900 +1900 +0A00 +1A00 +1A00 +1400 +1400 +2000 +2000 +ENDCHAR +STARTCHAR C090 +ENCODING 8484 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 11 1 0 +BITMAP +FE +CA +8A +94 +14 +28 +52 +52 +A2 +A6 +FE +ENDCHAR +STARTCHAR C053 +ENCODING 8485 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 15 1 -4 +BITMAP +7C +08 +10 +20 +7C +08 +10 +20 +70 +08 +04 +04 +C4 +88 +70 +ENDCHAR +STARTCHAR C087 +ENCODING 8486 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +3E00 +4100 +8080 +8080 +8080 +8080 +4100 +4100 +2200 +A280 +E380 +ENDCHAR +STARTCHAR C087 +ENCODING 8487 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +E380 +A280 +2200 +4100 +4100 +8080 +8080 +8080 +8080 +4100 +3E00 +ENDCHAR +STARTCHAR C119 +ENCODING 8488 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 11 1 0 +BITMAP +78 +84 +02 +22 +44 +38 +44 +02 +02 +64 +98 +ENDCHAR +STARTCHAR C105 +ENCODING 8489 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 4 7 1 0 +BITMAP +40 +A0 +20 +20 +20 +30 +20 +ENDCHAR +STARTCHAR C075 +ENCODING 8490 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +F9E0 +2180 +2300 +2600 +2C00 +2E00 +3200 +2100 +2100 +2080 +F9E0 +ENDCHAR +STARTCHAR C065 +ENCODING 8491 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 15 1 0 +BITMAP +0600 +0900 +0900 +0600 +0400 +0400 +0A00 +0A00 +0A00 +1100 +1100 +1F00 +2080 +2080 +F1E0 +ENDCHAR +STARTCHAR C036 +ENCODING 8492 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +01C0 +0620 +0A20 +1440 +2480 +4BC0 +4C20 +8820 +9020 +9840 +6780 +ENDCHAR +STARTCHAR C067 +ENCODING 8493 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 11 1 0 +BITMAP +1F40 +3180 +6300 +C180 +C080 +C180 +C300 +C000 +6040 +3080 +1F00 +ENDCHAR +STARTCHAR C101 +ENCODING 8494 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 0 +BITMAP +38 +44 +C6 +C6 +FE +C0 +C0 +46 +3C +ENDCHAR +STARTCHAR C101 +ENCODING 8495 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 7 1 0 +BITMAP +1C +22 +4C +70 +80 +88 +70 +ENDCHAR +STARTCHAR char8497 +ENCODING 8496 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +0700 +0880 +1080 +1100 +1000 +3C00 +4000 +8F00 +9080 +8100 +7E00 +ENDCHAR +STARTCHAR C036 +ENCODING 8497 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +1880 +2700 +3100 +0200 +7F80 +0400 +0400 +7C00 +8C00 +9200 +6200 +ENDCHAR +STARTCHAR C070 +ENCODING 8498 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +0F80 +0200 +0200 +2200 +2200 +3E00 +2200 +A200 +8200 +8200 +FF80 +ENDCHAR +STARTCHAR char8499 +ENCODING 8499 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 16 11 1 0 +BITMAP +00C6 +00C6 +014A +014A +0294 +0294 +04A4 +64A4 +8948 +8949 +7086 +ENDCHAR +STARTCHAR C111 +ENCODING 8500 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 5 7 1 0 +BITMAP +30 +48 +88 +88 +88 +90 +60 +ENDCHAR +STARTCHAR 00E0 +ENCODING 8501 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 11 1 0 +BITMAP +4100 +4100 +6180 +30C0 +1940 +2E40 +4600 +4300 +4180 +6080 +C080 +ENDCHAR +STARTCHAR 00E1 +ENCODING 8502 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +4000 +FC00 +7E00 +0600 +0200 +0200 +0200 +0200 +0200 +7F80 +FF00 +ENDCHAR +STARTCHAR 00E2 +ENCODING 8503 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 +BITMAP +40 +F0 +78 +08 +08 +08 +08 +78 +C8 +8C +88 +ENDCHAR +STARTCHAR 00E3 +ENCODING 8504 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 1 0 +BITMAP +40 +FE +7F +04 +04 +04 +04 +04 +04 +04 +04 +ENDCHAR +STARTCHAR 0x2170 +ENCODING 8505 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 4 11 2 0 +BITMAP +60 +60 +00 +E0 +E0 +60 +60 +60 +60 +60 +F0 +ENDCHAR +STARTCHAR C081 +ENCODING 8506 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 10 1 0 +BITMAP +1F08 +2084 +4044 +8078 +80A0 +80A0 +80E0 +4040 +2080 +1F00 +ENDCHAR +STARTCHAR char185 +ENCODING 8531 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 12 1 0 +BITMAP +4200 +C200 +4200 +4400 +4400 +44C0 +E920 +0820 +0840 +1020 +1120 +10C0 +ENDCHAR +STARTCHAR char185 +ENCODING 8532 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 12 1 0 +BITMAP +6100 +9100 +1100 +1200 +2200 +4260 +F490 +0410 +0420 +0810 +0890 +0860 +ENDCHAR +STARTCHAR char185 +ENCODING 8533 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 12 1 0 +BITMAP +4200 +C200 +4200 +4400 +4400 +45E0 +E900 +0940 +09A0 +1020 +1120 +10C0 +ENDCHAR +STARTCHAR char185 +ENCODING 8534 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 12 1 0 +BITMAP +6100 +9100 +1100 +1200 +2200 +42F0 +F480 +04A0 +04D0 +0810 +0890 +0860 +ENDCHAR +STARTCHAR char185 +ENCODING 8535 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 12 1 0 +BITMAP +6100 +9100 +1100 +2200 +1200 +92F0 +6480 +04A0 +04D0 +0810 +0890 +0860 +ENDCHAR +STARTCHAR char185 +ENCODING 8536 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 12 1 0 +BITMAP +1080 +3080 +5080 +9100 +F900 +1178 +3A40 +0250 +0268 +0408 +0448 +0430 +ENDCHAR +STARTCHAR char185 +ENCODING 8537 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 12 1 0 +BITMAP +4200 +C200 +4200 +4400 +4400 +44C0 +E920 +0900 +09C0 +1120 +1120 +10C0 +ENDCHAR +STARTCHAR char185 +ENCODING 8538 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 12 1 0 +BITMAP +F100 +8100 +A100 +D200 +1200 +9260 +6490 +0480 +04E0 +0890 +0890 +0860 +ENDCHAR +STARTCHAR char185 +ENCODING 8539 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 12 1 0 +BITMAP +4200 +C200 +4200 +4400 +4400 +44C0 +E920 +0920 +08C0 +1120 +1120 +10C0 +ENDCHAR +STARTCHAR char185 +ENCODING 8540 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 12 1 0 +BITMAP +6100 +9100 +1100 +2200 +1200 +9260 +6490 +0490 +0460 +0890 +0890 +0860 +ENDCHAR +STARTCHAR char185 +ENCODING 8541 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 12 1 0 +BITMAP +F100 +8100 +A100 +D200 +1200 +9260 +6490 +0490 +0460 +0890 +0890 +0860 +ENDCHAR +STARTCHAR char185 +ENCODING 8542 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 12 1 0 +BITMAP +F200 +9200 +2200 +2400 +4400 +44C0 +4920 +0920 +08C0 +1120 +1120 +10C0 +ENDCHAR +STARTCHAR char185 +ENCODING 8543 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 +BITMAP +42 +C2 +42 +44 +44 +44 +E8 +08 +08 +10 +10 +10 +ENDCHAR +STARTCHAR C073 +ENCODING 8544 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 0 +BITMAP +F8 +20 +20 +20 +20 +20 +20 +20 +20 +20 +F8 +ENDCHAR +STARTCHAR C073 +ENCODING 8545 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 +BITMAP +FF +24 +24 +24 +24 +24 +24 +24 +24 +24 +FF +ENDCHAR +STARTCHAR C073 +ENCODING 8546 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +FFE0 +2480 +2480 +2480 +2480 +2480 +2480 +2480 +2480 +2480 +FFE0 +ENDCHAR +STARTCHAR C086 +ENCODING 8547 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 11 1 0 +BITMAP +FF8F +2104 +2104 +2088 +2088 +2088 +2050 +2050 +2050 +2020 +F820 +ENDCHAR +STARTCHAR C086 +ENCODING 8548 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +F1E0 +2080 +2080 +1100 +1100 +1100 +0A00 +0A00 +0A00 +0400 +0400 +ENDCHAR +STARTCHAR C086 +ENCODING 8549 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 11 1 0 +BITMAP +F1FF +2084 +2084 +1104 +1104 +1104 +0A04 +0A04 +0A04 +0404 +041F +ENDCHAR +STARTCHAR C086 +ENCODING 8550 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 11 1 0 +BITMAP +F3FF80 +211200 +211200 +121200 +121200 +121200 +121200 +141200 +081200 +081200 +087F80 +ENDCHAR +STARTCHAR C086 +ENCODING 8551 +SWIDTH 1260 0 +DWIDTH 21 0 +BBX 20 11 1 0 +BITMAP +F3FFF0 +211240 +211240 +121240 +121240 +121240 +121240 +141240 +081240 +081240 +087FF0 +ENDCHAR +STARTCHAR C088 +ENCODING 8552 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 11 1 0 +BITMAP +FF9E +2088 +2090 +2050 +2060 +2020 +2050 +20D0 +2088 +2104 +FF8F +ENDCHAR +STARTCHAR C088 +ENCODING 8553 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +F3C0 +1100 +1200 +0A00 +0C00 +0400 +0A00 +1A00 +1100 +2080 +F1E0 +ENDCHAR +STARTCHAR C088 +ENCODING 8554 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 11 1 0 +BITMAP +F3FE +1108 +1208 +0A08 +0C08 +0408 +0A08 +1A08 +1108 +2088 +F1FE +ENDCHAR +STARTCHAR C088 +ENCODING 8555 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 18 11 1 0 +BITMAP +F3FFC0 +110900 +120900 +0A0900 +0C0900 +040900 +0A0900 +1A0900 +110900 +208900 +F1FFC0 +ENDCHAR +STARTCHAR C076 +ENCODING 8556 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 +BITMAP +F8 +20 +20 +20 +20 +20 +21 +21 +21 +23 +FF +ENDCHAR +STARTCHAR C067 +ENCODING 8557 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +1E80 +2180 +4080 +8080 +8000 +8000 +8000 +8080 +4080 +2100 +1E00 +ENDCHAR +STARTCHAR C068 +ENCODING 8558 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 +BITMAP +FE00 +2180 +2080 +2040 +2040 +2040 +2040 +2040 +2080 +2180 +FE00 +ENDCHAR +STARTCHAR C077 +ENCODING 8559 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 11 1 0 +BITMAP +F03C +3030 +3030 +2850 +2850 +2890 +2490 +2490 +2310 +2310 +FB7C +ENDCHAR +STARTCHAR 0x2170 +ENCODING 8560 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 11 1 0 +BITMAP +C0 +C0 +00 +00 +C0 +40 +40 +40 +40 +40 +E0 +ENDCHAR +STARTCHAR 0x2171 +ENCODING 8561 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 0 +BITMAP +CC +CC +00 +00 +CC +44 +44 +44 +44 +44 +EE +ENDCHAR +STARTCHAR 0x2172 +ENCODING 8562 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +CCC0 +CCC0 +0000 +0000 +CCC0 +4440 +4440 +4440 +4440 +4440 +EEE0 +ENDCHAR +STARTCHAR 0x2173 +ENCODING 8563 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 +BITMAP +C000 +C000 +0000 +0000 +CE70 +4240 +4240 +4240 +4180 +4180 +E180 +ENDCHAR +STARTCHAR C118 +ENCODING 8564 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 7 1 0 +BITMAP +E7 +24 +24 +24 +18 +18 +18 +ENDCHAR +STARTCHAR 0x2175 +ENCODING 8565 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 +BITMAP +0060 +0060 +0000 +0000 +E760 +2420 +2420 +2420 +1820 +1820 +1870 +ENDCHAR +STARTCHAR 0x2176 +ENCODING 8566 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 11 1 0 +BITMAP +0066 +0066 +0000 +0000 +E766 +2422 +2422 +2422 +1822 +1822 +1877 +ENDCHAR +STARTCHAR 0x2177 +ENCODING 8567 +SWIDTH 1260 0 +DWIDTH 21 0 +BBX 20 11 1 0 +BITMAP +006660 +006660 +000000 +000000 +E76660 +242220 +242220 +242220 +182220 +182220 +187770 +ENDCHAR +STARTCHAR 0x2178 +ENCODING 8568 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 +BITMAP +C000 +C000 +0000 +0000 +CE70 +4240 +4180 +4180 +4180 +4240 +EE70 +ENDCHAR +STARTCHAR C120 +ENCODING 8569 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 7 1 0 +BITMAP +E7 +24 +18 +18 +18 +24 +E7 +ENDCHAR +STARTCHAR 0x217A +ENCODING 8570 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 11 1 0 +BITMAP +0060 +0060 +0000 +0000 +E760 +2420 +1820 +1820 +1820 +2420 +E770 +ENDCHAR +STARTCHAR 0x217B +ENCODING 8571 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 11 1 0 +BITMAP +0066 +0066 +0000 +0000 +E766 +2422 +1822 +1822 +1822 +2422 +E777 +ENDCHAR +STARTCHAR C108 +ENCODING 8572 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 12 1 0 +BITMAP +C0 +40 +40 +40 +40 +40 +40 +40 +40 +40 +40 +E0 +ENDCHAR +STARTCHAR C099 +ENCODING 8573 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 7 1 0 +BITMAP +70 +88 +80 +80 +80 +88 +70 +ENDCHAR +STARTCHAR C100 +ENCODING 8574 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 0 +BITMAP +18 +08 +08 +08 +08 +78 +88 +88 +88 +88 +88 +7C +ENDCHAR +STARTCHAR C109 +ENCODING 8575 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 0 +BITMAP +FB80 +4440 +4440 +4440 +4440 +4440 +EEE0 +ENDCHAR +STARTCHAR C067 +ENCODING 8576 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 11 1 0 +BITMAP +1FF8 +2186 +4082 +8081 +8081 +8081 +8081 +8081 +4082 +2186 +1FF8 +ENDCHAR +STARTCHAR char8577 +ENCODING 8577 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 11 1 0 +BITMAP +FE00 +2180 +3880 +2440 +2240 +2240 +2240 +2440 +3880 +2180 +FE00 +ENDCHAR +STARTCHAR C067 +ENCODING 8578 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 16 11 1 0 +BITMAP +1FF8 +2186 +43E2 +8491 +8889 +8889 +8889 +8491 +43E2 +2186 +1FF8 +ENDCHAR +STARTCHAR C067 +ENCODING 8579 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +BC00 +C200 +8100 +8080 +0080 +0080 +0080 +8080 +8100 +4200 +3C00 +ENDCHAR +STARTCHAR char8592 +ENCODING 8592 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 5 1 4 +BITMAP +2000 +4000 +FFE0 +4000 +2000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8593 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 1 +BITMAP +20 +70 +A8 +20 +20 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char8592 +ENCODING 8594 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 5 1 4 +BITMAP +0080 +0040 +FFE0 +0040 +0080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8595 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 1 +BITMAP +20 +20 +20 +20 +20 +20 +20 +20 +A8 +70 +20 +ENDCHAR +STARTCHAR char8592 +ENCODING 8596 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 5 1 4 +BITMAP +2080 +4040 +FFE0 +4040 +2080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8597 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 1 +BITMAP +20 +70 +A8 +20 +20 +20 +20 +20 +A8 +70 +20 +ENDCHAR +STARTCHAR char8598 +ENCODING 8598 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +F000 +C000 +A000 +9000 +0800 +0400 +0200 +0100 +0080 +ENDCHAR +STARTCHAR char8598 +ENCODING 8599 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +0780 +0180 +0280 +0480 +0800 +1000 +2000 +4000 +8000 +ENDCHAR +STARTCHAR char8598 +ENCODING 8600 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +8000 +4000 +2000 +1000 +0800 +0480 +0280 +0180 +0780 +ENDCHAR +STARTCHAR char8598 +ENCODING 8601 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +0080 +0100 +0200 +0400 +0800 +9000 +A000 +C000 +F000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8602 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 5 1 4 +BITMAP +2080 +4100 +FFE0 +4200 +2400 +ENDCHAR +STARTCHAR char8592 +ENCODING 8603 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 5 1 4 +BITMAP +0480 +0840 +FFE0 +1040 +2080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8604 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 4 1 5 +BITMAP +F000 +C1C0 +A220 +9C10 +ENDCHAR +STARTCHAR char8592 +ENCODING 8605 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 4 1 5 +BITMAP +00F0 +3830 +4450 +8390 +ENDCHAR +STARTCHAR char8592 +ENCODING 8606 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 5 1 4 +BITMAP +2800 +5000 +FFE0 +5000 +2800 +ENDCHAR +STARTCHAR char8592 +ENCODING 8607 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 1 +BITMAP +20 +70 +A8 +70 +A8 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char8592 +ENCODING 8608 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 5 1 4 +BITMAP +0280 +0140 +FFE0 +0140 +0280 +ENDCHAR +STARTCHAR char8592 +ENCODING 8609 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 1 +BITMAP +20 +20 +20 +20 +20 +20 +A8 +70 +A8 +70 +20 +ENDCHAR +STARTCHAR char8592 +ENCODING 8610 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 5 1 4 +BITMAP +2060 +4180 +FF00 +4180 +2060 +ENDCHAR +STARTCHAR char8592 +ENCODING 8611 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 5 1 4 +BITMAP +C080 +3040 +1FE0 +3040 +C080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8612 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 3 +BITMAP +0020 +2020 +4020 +FFE0 +4020 +2020 +0020 +ENDCHAR +STARTCHAR char8592 +ENCODING 8613 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 1 +BITMAP +10 +38 +54 +10 +10 +10 +10 +10 +10 +10 +FE +ENDCHAR +STARTCHAR char8592 +ENCODING 8614 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 3 +BITMAP +8000 +8080 +8040 +FFE0 +8040 +8080 +8000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8615 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 1 +BITMAP +FE +10 +10 +10 +10 +10 +10 +10 +54 +38 +10 +ENDCHAR +STARTCHAR char8592 +ENCODING 8616 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 1 +BITMAP +10 +38 +54 +10 +10 +10 +10 +10 +54 +38 +FE +ENDCHAR +STARTCHAR char8592 +ENCODING 8617 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 4 +BITMAP +01C0 +0020 +2020 +4020 +FFC0 +4000 +2000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8618 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 4 +BITMAP +7000 +8000 +8080 +8040 +7FE0 +0040 +0080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8619 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 4 +BITMAP +01C0 +0220 +2220 +4220 +FFC0 +4200 +2200 +ENDCHAR +STARTCHAR char8592 +ENCODING 8620 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 4 +BITMAP +7000 +8800 +8880 +8840 +7FE0 +0840 +0880 +ENDCHAR +STARTCHAR char8592 +ENCODING 8621 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 5 1 4 +BITMAP +2640 +4920 +E970 +50A0 +2040 +ENDCHAR +STARTCHAR char8592 +ENCODING 8622 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 5 1 4 +BITMAP +2140 +4220 +FFF0 +4420 +2840 +ENDCHAR +STARTCHAR char8592 +ENCODING 8623 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 11 1 1 +BITMAP +10 +10 +20 +40 +B0 +D0 +20 +A0 +A0 +C0 +F0 +ENDCHAR +STARTCHAR char8592 +ENCODING 8624 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 1 +BITMAP +20 +40 +FC +44 +24 +04 +04 +04 +04 +04 +04 +ENDCHAR +STARTCHAR char8592 +ENCODING 8625 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 1 +BITMAP +10 +08 +FC +88 +90 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char8592 +ENCODING 8626 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 1 +BITMAP +04 +04 +04 +04 +04 +04 +24 +44 +FC +40 +20 +ENDCHAR +STARTCHAR char8592 +ENCODING 8627 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 1 +BITMAP +80 +80 +80 +80 +80 +80 +90 +88 +FC +08 +10 +ENDCHAR +STARTCHAR char8592 +ENCODING 8628 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 6 1 2 +BITMAP +FC +04 +04 +15 +0E +04 +ENDCHAR +STARTCHAR char8592 +ENCODING 8629 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 8 1 1 +BITMAP +04 +04 +04 +24 +44 +FC +40 +20 +ENDCHAR +STARTCHAR char8630 +ENCODING 8630 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 8 1 1 +BITMAP +0F80 +1040 +2020 +2020 +2020 +A820 +7000 +2000 +ENDCHAR +STARTCHAR char8630 +ENCODING 8631 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 8 1 1 +BITMAP +3E00 +4100 +8080 +8080 +8080 +82A0 +01C0 +0080 +ENDCHAR +STARTCHAR char8598 +ENCODING 8632 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 1 +BITMAP +FF80 +0000 +F000 +C000 +A000 +9000 +0800 +0400 +0200 +0100 +0080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8633 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 13 1 0 +BITMAP +8000 +9000 +A000 +FFF0 +A000 +9000 +8010 +0090 +0050 +FFF0 +0050 +0090 +0010 +ENDCHAR +STARTCHAR char8630 +ENCODING 8634 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 7 1 2 +BITMAP +03C0 +4300 +8280 +8280 +8080 +4100 +3E00 +ENDCHAR +STARTCHAR char8630 +ENCODING 8635 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 7 1 2 +BITMAP +F000 +3080 +5040 +5040 +4040 +2080 +1F00 +ENDCHAR +STARTCHAR char8592 +ENCODING 8636 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 3 1 6 +BITMAP +2000 +4000 +FFE0 +ENDCHAR +STARTCHAR char8592 +ENCODING 8637 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 3 1 6 +BITMAP +FFE0 +4000 +2000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8638 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 11 1 1 +BITMAP +80 +C0 +A0 +80 +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char8592 +ENCODING 8639 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 11 1 1 +BITMAP +20 +60 +A0 +20 +20 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char8592 +ENCODING 8640 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 3 1 6 +BITMAP +0080 +0040 +FFE0 +ENDCHAR +STARTCHAR char8592 +ENCODING 8641 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 3 1 6 +BITMAP +FFE0 +0040 +0080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8642 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 11 1 1 +BITMAP +80 +80 +80 +80 +80 +80 +80 +80 +A0 +C0 +80 +ENDCHAR +STARTCHAR char8592 +ENCODING 8643 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 3 11 1 1 +BITMAP +20 +20 +20 +20 +20 +20 +20 +20 +A0 +60 +20 +ENDCHAR +STARTCHAR char8592 +ENCODING 8644 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 1 +BITMAP +0080 +0040 +FFE0 +0040 +0080 +0000 +2000 +4000 +FFE0 +4000 +2000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8645 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 1 +BITMAP +2080 +7080 +A880 +2080 +2080 +2080 +2080 +2080 +22A0 +21C0 +2080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8646 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 1 +BITMAP +2000 +4000 +FFE0 +4000 +2000 +0000 +0080 +0040 +FFE0 +0040 +0080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8647 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 1 +BITMAP +2000 +4000 +FFE0 +4000 +2000 +0000 +2000 +4000 +FFE0 +4000 +2000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8648 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 1 +BITMAP +2080 +71C0 +AAA0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8649 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 1 +BITMAP +0080 +0040 +FFE0 +0040 +0080 +0000 +0080 +0040 +FFE0 +0040 +0080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8650 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 1 +BITMAP +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +AAA0 +71C0 +2080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8651 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 8 1 3 +BITMAP +2000 +4000 +FFE0 +0000 +0000 +FFE0 +0040 +0080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8652 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 8 1 3 +BITMAP +0080 +0040 +FFE0 +0000 +0000 +FFE0 +4000 +2000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8653 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 3 +BITMAP +1080 +2080 +7FE0 +8100 +7FE0 +2200 +1200 +ENDCHAR +STARTCHAR char8592 +ENCODING 8654 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 7 1 3 +BITMAP +1140 +2120 +7FF0 +8208 +7FF0 +2420 +1440 +ENDCHAR +STARTCHAR char8592 +ENCODING 8655 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 3 +BITMAP +0900 +0880 +FFC0 +1020 +FFC0 +2080 +2100 +ENDCHAR +STARTCHAR char8592 +ENCODING 8656 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 3 +BITMAP +1000 +2000 +7FE0 +8000 +7FE0 +2000 +1000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8657 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 1 +BITMAP +10 +28 +6C +AA +28 +28 +28 +28 +28 +28 +28 +ENDCHAR +STARTCHAR char8592 +ENCODING 8658 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 3 +BITMAP +0100 +0080 +FFC0 +0020 +FFC0 +0080 +0100 +ENDCHAR +STARTCHAR char8592 +ENCODING 8659 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 1 +BITMAP +28 +28 +28 +28 +28 +28 +28 +AA +6C +28 +10 +ENDCHAR +STARTCHAR char8592 +ENCODING 8660 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 12 7 1 3 +BITMAP +1080 +2040 +7FE0 +8010 +7FE0 +2040 +1080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8661 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 +BITMAP +10 +28 +6C +AA +28 +28 +28 +28 +AA +6C +28 +10 +ENDCHAR +STARTCHAR char8598 +ENCODING 8662 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 1 +BITMAP +F800 +9000 +8800 +C400 +A200 +1100 +0880 +0440 +0200 +0100 +ENDCHAR +STARTCHAR char8598 +ENCODING 8663 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 1 +BITMAP +07C0 +0240 +0440 +08C0 +1140 +2200 +4400 +8800 +1000 +2000 +ENDCHAR +STARTCHAR char8598 +ENCODING 8664 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 1 +BITMAP +2000 +1000 +8800 +4400 +2200 +1140 +08C0 +0440 +0240 +07C0 +ENDCHAR +STARTCHAR char8598 +ENCODING 8665 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 1 +BITMAP +0100 +0200 +0440 +0880 +1100 +A200 +C400 +8800 +9000 +F800 +ENDCHAR +STARTCHAR char8592 +ENCODING 8666 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 3 +BITMAP +1000 +3FE0 +4000 +FFE0 +4000 +3FE0 +1000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8667 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 7 1 3 +BITMAP +0100 +FF80 +0040 +FFE0 +0040 +FF80 +0100 +ENDCHAR +STARTCHAR char8592 +ENCODING 8668 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 5 1 4 +BITMAP +2000 +4880 +F550 +4220 +2000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8669 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 5 1 4 +BITMAP +0040 +1120 +AAF0 +4420 +0040 +ENDCHAR +STARTCHAR char8592 +ENCODING 8670 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 1 +BITMAP +20 +70 +A8 +20 +20 +F8 +20 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR char8592 +ENCODING 8671 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 1 +BITMAP +20 +20 +20 +F8 +20 +F8 +20 +20 +A8 +70 +20 +ENDCHAR +STARTCHAR char8592 +ENCODING 8672 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 5 1 4 +BITMAP +2000 +4000 +EEE0 +4000 +2000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8673 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 1 +BITMAP +20 +70 +A8 +00 +20 +20 +20 +00 +20 +20 +20 +ENDCHAR +STARTCHAR char8592 +ENCODING 8674 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 5 1 4 +BITMAP +0080 +0040 +EEE0 +0040 +0080 +ENDCHAR +STARTCHAR char8592 +ENCODING 8675 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 1 +BITMAP +20 +20 +20 +00 +20 +20 +20 +00 +A8 +70 +20 +ENDCHAR +STARTCHAR char8592 +ENCODING 8676 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 7 1 3 +BITMAP +8000 +9000 +A000 +FFF0 +A000 +9000 +8000 +ENDCHAR +STARTCHAR char8592 +ENCODING 8677 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 7 1 3 +BITMAP +0010 +0090 +0050 +FFF0 +0050 +0090 +0010 +ENDCHAR +STARTCHAR char8592 +ENCODING 8678 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 9 1 2 +BITMAP +0800 +1800 +2FF0 +4010 +8010 +4010 +2FF0 +1800 +0800 +ENDCHAR +STARTCHAR char8592 +ENCODING 8679 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 12 1 1 +BITMAP +0800 +1400 +2200 +4100 +E380 +2200 +2200 +2200 +2200 +2200 +2200 +3E00 +ENDCHAR +STARTCHAR char8592 +ENCODING 8680 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 9 1 2 +BITMAP +0100 +0180 +FF40 +8020 +8010 +8020 +FF40 +0180 +0100 +ENDCHAR +STARTCHAR char8592 +ENCODING 8681 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 12 1 1 +BITMAP +3E00 +2200 +2200 +2200 +2200 +2200 +2200 +E380 +4100 +2200 +1400 +0800 +ENDCHAR +STARTCHAR char8592 +ENCODING 8682 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 17 1 0 +BITMAP +0800 +1400 +2200 +4100 +E380 +2200 +2200 +2200 +2200 +2200 +2200 +3E00 +0000 +3E00 +2200 +2200 +3E00 +ENDCHAR +STARTCHAR char8592 +ENCODING 8683 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 14 1 0 +BITMAP +0800 +1400 +2200 +4100 +E380 +2200 +2200 +2200 +2200 +2200 +2200 +E380 +8080 +FF80 +ENDCHAR +STARTCHAR char8592 +ENCODING 8684 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 14 1 0 +BITMAP +0800 +1400 +3E00 +4100 +E380 +2200 +2200 +2200 +2200 +2200 +2200 +E380 +8080 +FF80 +ENDCHAR +STARTCHAR char8592 +ENCODING 8685 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 14 1 0 +BITMAP +0800 +1C00 +2A00 +4900 +EB80 +2A00 +2A00 +2A00 +2A00 +2A00 +2A00 +EB80 +8880 +FF80 +ENDCHAR +STARTCHAR char8592 +ENCODING 8686 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 15 1 2 +BITMAP +0800 +1400 +2200 +4900 +D580 +2200 +4100 +E380 +2200 +2200 +2200 +2200 +2200 +2200 +3E00 +ENDCHAR +STARTCHAR char8592 +ENCODING 8687 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 17 1 0 +BITMAP +0800 +1400 +2200 +4900 +D580 +2200 +4100 +E380 +2200 +2200 +2200 +2200 +2200 +2200 +E380 +8080 +FF80 +ENDCHAR +STARTCHAR char8592 +ENCODING 8688 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 14 9 2 2 +BITMAP +E040 +A060 +BFD0 +8018 +8014 +8018 +BFD0 +A060 +E040 +ENDCHAR +STARTCHAR char8598 +ENCODING 8689 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 1 +BITMAP +FFE0 +8000 +BC00 +B000 +A800 +A400 +8200 +8100 +8080 +8040 +8020 +ENDCHAR +STARTCHAR char8598 +ENCODING 8690 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 1 +BITMAP +8020 +4020 +2020 +1020 +0820 +04A0 +02A0 +01A0 +07A0 +0020 +FFE0 +ENDCHAR +STARTCHAR char8592 +ENCODING 8691 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 16 1 0 +BITMAP +0800 +1400 +2200 +4100 +E380 +2200 +2200 +2200 +2200 +2200 +2200 +E380 +4100 +2200 +1400 +0800 +ENDCHAR +STARTCHAR C068 +ENCODING 8704 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +8020 +8020 +4040 +4040 +3F80 +2080 +1100 +1100 +0A00 +0A00 +0400 +ENDCHAR +STARTCHAR C067 +ENCODING 8705 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 11 1 0 +BITMAP +78 +84 +84 +80 +80 +80 +80 +80 +84 +84 +78 +ENDCHAR +STARTCHAR C100 +ENCODING 8706 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 11 1 0 +BITMAP +60 +10 +10 +08 +38 +48 +88 +88 +88 +90 +60 +ENDCHAR +STARTCHAR C069 +ENCODING 8707 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 +BITMAP +FF +01 +01 +01 +01 +FF +01 +01 +01 +01 +FF +ENDCHAR +STARTCHAR C069 +ENCODING 8708 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 -2 +BITMAP +02 +02 +FF +05 +05 +05 +09 +FF +09 +09 +11 +11 +FF +20 +20 +ENDCHAR +STARTCHAR C079 +ENCODING 8709 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +1F20 +20C0 +40C0 +8120 +8220 +8420 +8820 +9020 +6040 +6080 +9F00 +ENDCHAR +STARTCHAR C068 +ENCODING 8710 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +0400 +0E00 +0E00 +1300 +1300 +2180 +2180 +40C0 +40C0 +8060 +FFE0 +ENDCHAR +STARTCHAR C068 +ENCODING 8711 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +FFE0 +8060 +40C0 +40C0 +2180 +2180 +1300 +1300 +0E00 +0E00 +0400 +ENDCHAR +STARTCHAR C069 +ENCODING 8712 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 +BITMAP +1F +20 +40 +80 +80 +FF +80 +80 +40 +20 +1F +ENDCHAR +STARTCHAR C069 +ENCODING 8713 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 -2 +BITMAP +02 +02 +1F +24 +44 +84 +88 +FF +88 +88 +50 +30 +1F +20 +20 +ENDCHAR +STARTCHAR C069 +ENCODING 8714 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 2 +BITMAP +3E +40 +80 +FE +80 +40 +3E +ENDCHAR +STARTCHAR C069 +ENCODING 8715 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 11 1 0 +BITMAP +F8 +04 +02 +01 +01 +FF +01 +01 +02 +04 +F8 +ENDCHAR +STARTCHAR C069 +ENCODING 8716 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 15 1 -2 +BITMAP +40 +40 +F8 +24 +22 +21 +11 +FF +11 +11 +0A +0C +F8 +04 +04 +ENDCHAR +STARTCHAR C069 +ENCODING 8717 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 2 +BITMAP +F8 +04 +02 +FE +02 +04 +F8 +ENDCHAR +STARTCHAR char9632 +ENCODING 8718 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 9 1 1 +BITMAP +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR C080 +ENCODING 8719 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 0 0 +BITMAP +FFE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +FBE0 +ENDCHAR +STARTCHAR C080 +ENCODING 8720 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 0 0 +BITMAP +FBE0 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +FFE0 +ENDCHAR +STARTCHAR C083 +ENCODING 8721 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +FF80 +4180 +2080 +2080 +1000 +1800 +1000 +2080 +2080 +4180 +FF80 +ENDCHAR +STARTCHAR C043 +ENCODING 8722 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 1 1 5 +BITMAP +FE +ENDCHAR +STARTCHAR char177 +ENCODING 8723 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 1 +BITMAP +FE +00 +10 +10 +10 +FE +10 +10 +10 +ENDCHAR +STARTCHAR char177 +ENCODING 8724 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 11 1 1 +BITMAP +10 +38 +10 +00 +10 +10 +10 +FE +10 +10 +10 +ENDCHAR +STARTCHAR C047 +ENCODING 8725 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 16 1 -4 +BITMAP +01 +01 +02 +02 +04 +04 +08 +08 +10 +10 +20 +20 +40 +40 +80 +80 +ENDCHAR +STARTCHAR C047 +ENCODING 8726 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 12 1 0 +BITMAP +80 +80 +40 +40 +20 +20 +10 +10 +08 +08 +04 +04 +ENDCHAR +STARTCHAR C042 +ENCODING 8727 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 7 1 2 +BITMAP +10 +92 +54 +38 +54 +92 +10 +ENDCHAR +STARTCHAR C023 +ENCODING 8728 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 4 4 1 4 +BITMAP +60 +90 +90 +60 +ENDCHAR +STARTCHAR C023 +ENCODING 8729 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 4 4 1 4 +BITMAP +60 +F0 +F0 +60 +ENDCHAR +STARTCHAR C068 +ENCODING 8730 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +0020 +0020 +0040 +0040 +F080 +3080 +1900 +1900 +0E00 +0E00 +0400 +ENDCHAR +STARTCHAR C068 +ENCODING 8731 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 14 1 0 +BITMAP +0600 +0900 +0100 +0220 +0120 +0940 +0640 +F080 +3080 +1900 +1900 +0E00 +0E00 +0400 +ENDCHAR +STARTCHAR C068 +ENCODING 8732 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 14 1 0 +BITMAP +0200 +0600 +0A00 +1220 +1F20 +0240 +0740 +F080 +3080 +1900 +1900 +0E00 +0E00 +0400 +ENDCHAR +STARTCHAR char8733 +ENCODING 8733 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 5 1 3 +BITMAP +7180 +8A00 +8400 +8A00 +7180 +ENDCHAR +STARTCHAR char8733 +ENCODING 8734 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 5 1 3 +BITMAP +71C0 +8A20 +8420 +8A20 +71C0 +ENDCHAR +STARTCHAR char8735 +ENCODING 8735 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 7 1 2 +BITMAP +80 +80 +80 +80 +80 +80 +FE +ENDCHAR +STARTCHAR char8735 +ENCODING 8736 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 7 1 2 +BITMAP +04 +08 +10 +20 +40 +80 +FE +ENDCHAR +STARTCHAR char8735 +ENCODING 8737 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 9 1 0 +BITMAP +04 +68 +10 +28 +44 +84 +FF +04 +04 +ENDCHAR +STARTCHAR char8735 +ENCODING 8738 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 1 +BITMAP +20 +16 +18 +68 +88 +68 +18 +16 +20 +ENDCHAR +STARTCHAR char123 +ENCODING 8739 +SWIDTH 180 0 +DWIDTH 3 0 +BBX 1 12 1 0 +BITMAP +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char123 +ENCODING 8740 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 5 12 1 0 +BITMAP +20 +20 +20 +28 +30 +20 +60 +A0 +20 +20 +20 +20 +ENDCHAR +STARTCHAR char123 +ENCODING 8741 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 3 12 1 0 +BITMAP +A0 +A0 +A0 +A0 +A0 +A0 +A0 +A0 +A0 +A0 +A0 +A0 +ENDCHAR +STARTCHAR char123 +ENCODING 8742 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 12 1 0 +BITMAP +28 +28 +2A +2C +28 +38 +28 +68 +A8 +28 +28 +28 +ENDCHAR +STARTCHAR C068 +ENCODING 8743 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +0400 +0A00 +0A00 +1100 +1100 +2080 +2080 +4040 +4040 +8020 +8020 +ENDCHAR +STARTCHAR C068 +ENCODING 8744 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 11 1 0 +BITMAP +8020 +8020 +4040 +4040 +2080 +2080 +1100 +1100 +0A00 +0A00 +0400 +ENDCHAR +STARTCHAR C060 +ENCODING 8745 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 1 0 +BITMAP +3C +42 +81 +81 +81 +81 +81 +81 +81 +81 +81 +ENDCHAR +STARTCHAR C060 +ENCODING 8746 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 1 0 +BITMAP +81 +81 +81 +81 +81 +81 +81 +81 +81 +42 +3C +ENDCHAR +STARTCHAR char8747 +ENCODING 8747 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 19 1 -4 +BITMAP +0E +12 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +90 +E0 +ENDCHAR +STARTCHAR char8747 +ENCODING 8748 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 12 19 1 -4 +BITMAP +0E70 +1290 +1080 +1080 +1080 +1080 +1080 +1080 +1080 +1080 +1080 +1080 +1080 +1080 +1080 +1080 +1080 +9480 +E700 +ENDCHAR +STARTCHAR char8747 +ENCODING 8749 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 19 1 -4 +BITMAP +0E7380 +129480 +108400 +108400 +108400 +108400 +108400 +108400 +108400 +108400 +108400 +108400 +108400 +108400 +108400 +108400 +108400 +94A400 +E73800 +ENDCHAR +STARTCHAR char8747 +ENCODING 8750 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 19 1 -4 +BITMAP +0E +12 +10 +10 +10 +10 +38 +54 +92 +92 +92 +54 +38 +10 +10 +10 +10 +90 +E0 +ENDCHAR +STARTCHAR char8747 +ENCODING 8751 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 19 1 -4 +BITMAP +0E70 +1290 +1080 +1080 +1080 +1080 +3FC0 +50A0 +9090 +9090 +9090 +50A0 +3FC0 +1080 +1080 +1080 +1080 +9480 +E700 +ENDCHAR +STARTCHAR char8747 +ENCODING 8752 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 19 1 -4 +BITMAP +0E7380 +129480 +108400 +108400 +108400 +108400 +3FFE00 +508500 +908480 +908480 +908480 +508500 +3FFE00 +108400 +108400 +108400 +108400 +94A400 +E73800 +ENDCHAR +STARTCHAR char8747 +ENCODING 8753 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 19 1 -4 +BITMAP +0E +12 +10 +10 +10 +10 +10 +7D +93 +17 +10 +10 +10 +10 +10 +10 +10 +90 +E0 +ENDCHAR +STARTCHAR char8747 +ENCODING 8754 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 19 1 -4 +BITMAP +0700 +0900 +0800 +0800 +0800 +0800 +3E80 +4980 +8B80 +8880 +8880 +4900 +3E00 +0800 +0800 +0800 +0800 +4800 +7000 +ENDCHAR +STARTCHAR char8747 +ENCODING 8755 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 19 1 -4 +BITMAP +0700 +0900 +0800 +0800 +0800 +0800 +3F80 +4B00 +8A80 +8880 +8880 +4900 +3E00 +0800 +0800 +0800 +0800 +4800 +7000 +ENDCHAR +STARTCHAR char8756 +ENCODING 8756 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 11 1 0 +BITMAP +0200 +0700 +0200 +0000 +0000 +0000 +0000 +0000 +4010 +E038 +4010 +ENDCHAR +STARTCHAR char8756 +ENCODING 8757 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 11 1 0 +BITMAP +4010 +E038 +4010 +0000 +0000 +0000 +0000 +0000 +0200 +0700 +0200 +ENDCHAR +STARTCHAR char8756 +ENCODING 8758 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 3 11 1 0 +BITMAP +40 +E0 +40 +00 +00 +00 +00 +00 +40 +E0 +40 +ENDCHAR +STARTCHAR char8756 +ENCODING 8759 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 11 1 0 +BITMAP +4010 +E038 +4010 +0000 +0000 +0000 +0000 +0000 +4010 +E038 +4010 +ENDCHAR +STARTCHAR C043 +ENCODING 8760 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 5 1 5 +BITMAP +0800 +1C00 +0800 +0000 +FF80 +ENDCHAR +STARTCHAR C043 +ENCODING 8761 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 9 1 1 +BITMAP +0080 +01C0 +0080 +0000 +FE00 +0000 +0080 +01C0 +0080 +ENDCHAR +STARTCHAR C043 +ENCODING 8762 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 9 1 1 +BITMAP +4080 +E1C0 +4080 +0000 +FFC0 +0000 +4080 +E1C0 +4080 +ENDCHAR +STARTCHAR C043 +ENCODING 8763 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 10 10 1 1 +BITMAP +0400 +0E00 +0400 +0000 +7840 +8780 +0000 +0400 +0E00 +0400 +ENDCHAR +STARTCHAR C043 +ENCODING 8764 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 2 1 6 +BITMAP +7840 +8780 +ENDCHAR +STARTCHAR C043 +ENCODING 8765 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 2 1 6 +BITMAP +8780 +7840 +ENDCHAR +STARTCHAR C043 +ENCODING 8766 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 4 1 4 +BITMAP +7080 +8840 +8440 +4380 +ENDCHAR +STARTCHAR C043 +ENCODING 8767 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 8 1 2 +BITMAP +7000 +8800 +8800 +8800 +0440 +0440 +0440 +0380 +ENDCHAR +STARTCHAR C043 +ENCODING 8768 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 2 10 1 2 +BITMAP +80 +40 +40 +40 +40 +80 +80 +80 +80 +40 +ENDCHAR +STARTCHAR C043 +ENCODING 8769 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 6 1 4 +BITMAP +0200 +0200 +7C40 +8780 +0800 +0800 +ENDCHAR +STARTCHAR C043 +ENCODING 8770 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 4 1 4 +BITMAP +FFC0 +0000 +7840 +8780 +ENDCHAR +STARTCHAR C043 +ENCODING 8771 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 4 1 4 +BITMAP +7840 +8780 +0000 +FFC0 +ENDCHAR +STARTCHAR C043 +ENCODING 8772 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 8 1 2 +BITMAP +0200 +0200 +7C40 +8780 +0800 +FFC0 +1000 +1000 +ENDCHAR +STARTCHAR C043 +ENCODING 8773 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 6 1 3 +BITMAP +7840 +8780 +0000 +FFC0 +0000 +FFC0 +ENDCHAR +STARTCHAR C043 +ENCODING 8774 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 8 1 1 +BITMAP +7840 +8780 +0400 +FFC0 +0800 +FFC0 +1000 +1000 +ENDCHAR +STARTCHAR C043 +ENCODING 8775 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 9 1 1 +BITMAP +0200 +7A40 +8780 +0400 +FFC0 +0800 +FFC0 +1000 +1000 +ENDCHAR +STARTCHAR C043 +ENCODING 8776 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 5 1 3 +BITMAP +7840 +8780 +0000 +7840 +8780 +ENDCHAR +STARTCHAR C043 +ENCODING 8777 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 8 1 1 +BITMAP +0200 +7A40 +8780 +0400 +7C40 +8F80 +0800 +0800 +ENDCHAR +STARTCHAR C043 +ENCODING 8778 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 7 1 3 +BITMAP +7840 +8780 +0000 +7840 +8780 +0000 +FFC0 +ENDCHAR +STARTCHAR C043 +ENCODING 8779 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 8 1 2 +BITMAP +7840 +8780 +0000 +7840 +8780 +0000 +7840 +8780 +ENDCHAR +STARTCHAR C043 +ENCODING 8780 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 8 1 2 +BITMAP +7080 +8840 +8440 +4380 +0000 +FFC0 +0000 +FFC0 +ENDCHAR +STARTCHAR C043 +ENCODING 8781 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 5 1 3 +BITMAP +C0C0 +3F00 +0000 +3F00 +C0C0 +ENDCHAR +STARTCHAR C043 +ENCODING 8782 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 7 1 2 +BITMAP +0C00 +1200 +F3C0 +0000 +F3C0 +1200 +0C00 +ENDCHAR +STARTCHAR C043 +ENCODING 8783 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 5 1 4 +BITMAP +0C00 +1200 +F3C0 +0000 +FFC0 +ENDCHAR +STARTCHAR C043 +ENCODING 8784 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 8 1 4 +BITMAP +0800 +1C00 +0800 +0000 +FF80 +0000 +0000 +FF80 +ENDCHAR +STARTCHAR C043 +ENCODING 8785 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 12 1 0 +BITMAP +0800 +1C00 +0800 +0000 +FF80 +0000 +0000 +FF80 +0000 +0800 +1C00 +0800 +ENDCHAR +STARTCHAR C043 +ENCODING 8786 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 12 1 0 +BITMAP +4000 +E000 +4000 +0000 +FF80 +0000 +0000 +FF80 +0000 +0100 +0380 +0100 +ENDCHAR +STARTCHAR C043 +ENCODING 8787 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 12 1 0 +BITMAP +0100 +0380 +0100 +0000 +FF80 +0000 +0000 +FF80 +0000 +4000 +E000 +4000 +ENDCHAR +STARTCHAR C043 +ENCODING 8788 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 7 1 2 +BITMAP +4000 +EFF8 +4000 +0000 +4000 +EFF8 +4000 +ENDCHAR +STARTCHAR C043 +ENCODING 8789 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 7 1 2 +BITMAP +0010 +FFB8 +0010 +0000 +0010 +FFB8 +0010 +ENDCHAR +STARTCHAR C043 +ENCODING 8790 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 4 1 4 +BITMAP +FF80 +1400 +1400 +FF80 +ENDCHAR +STARTCHAR C043 +ENCODING 8791 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 9 1 4 +BITMAP +0C00 +1200 +1200 +0C00 +0000 +FFC0 +0000 +0000 +FFC0 +ENDCHAR +STARTCHAR C043 +ENCODING 8792 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 7 1 4 +BITMAP +1E00 +2100 +0000 +FFC0 +0000 +0000 +FFC0 +ENDCHAR +STARTCHAR C043 +ENCODING 8793 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 9 1 4 +BITMAP +0800 +1400 +2200 +4100 +0000 +FF80 +0000 +0000 +FF80 +ENDCHAR +STARTCHAR C043 +ENCODING 8794 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 9 1 4 +BITMAP +4100 +2200 +1400 +0800 +0000 +FF80 +0000 +0000 +FF80 +ENDCHAR +STARTCHAR C043 +ENCODING 8795 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 10 1 4 +BITMAP +0800 +0800 +3E00 +1C00 +3600 +0000 +FF80 +0000 +0000 +FF80 +ENDCHAR +STARTCHAR C043 +ENCODING 8796 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 10 1 4 +BITMAP +0800 +1400 +2200 +4100 +7F00 +0000 +FF80 +0000 +0000 +FF80 +ENDCHAR +STARTCHAR C043 +ENCODING 8797 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 12 1 4 +BITMAP +1040 +10A0 +1480 +7BC0 +9E80 +9880 +7680 +0000 +FFE0 +0000 +0000 +FFE0 +ENDCHAR +STARTCHAR C043 +ENCODING 8798 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 10 1 4 +BITMAP +F600 +4900 +4900 +4900 +4900 +0000 +FF80 +0000 +0000 +FF80 +ENDCHAR +STARTCHAR C043 +ENCODING 8799 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 12 1 4 +BITMAP +1800 +2400 +0C00 +1000 +1000 +0000 +1000 +0000 +FF80 +0000 +0000 +FF80 +ENDCHAR +STARTCHAR C043 +ENCODING 8800 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 8 1 2 +BITMAP +0400 +0400 +FF80 +0800 +0800 +FF80 +1000 +1000 +ENDCHAR +STARTCHAR C043 +ENCODING 8801 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 5 1 3 +BITMAP +FF80 +0000 +FF80 +0000 +FF80 +ENDCHAR +STARTCHAR C043 +ENCODING 8802 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 9 1 1 +BITMAP +0400 +0400 +FF80 +0800 +FF80 +1000 +FF80 +2000 +2000 +ENDCHAR +STARTCHAR C043 +ENCODING 8803 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 7 1 3 +BITMAP +FF80 +0000 +FF80 +0000 +FF80 +0000 +FF80 +ENDCHAR +STARTCHAR char8804 +ENCODING 8804 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 2 +BITMAP +06 +18 +60 +80 +60 +18 +06 +00 +FE +ENDCHAR +STARTCHAR char8804 +ENCODING 8805 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 2 +BITMAP +C0 +30 +0C +02 +0C +30 +C0 +00 +FE +ENDCHAR +STARTCHAR char8804 +ENCODING 8806 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 2 +BITMAP +0E +70 +80 +70 +0E +00 +FE +00 +FE +ENDCHAR +STARTCHAR char8804 +ENCODING 8807 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 2 +BITMAP +E0 +1C +02 +1C +E0 +00 +FE +00 +FE +ENDCHAR +STARTCHAR char8804 +ENCODING 8808 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 10 1 1 +BITMAP +0E +70 +80 +70 +0E +10 +FE +20 +FE +40 +ENDCHAR +STARTCHAR char8804 +ENCODING 8809 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 10 1 1 +BITMAP +E0 +1C +02 +1C +E0 +08 +FE +10 +FE +20 +ENDCHAR +STARTCHAR char8804 +ENCODING 8810 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 12 7 1 3 +BITMAP +0630 +18C0 +6300 +8400 +6300 +18C0 +0630 +ENDCHAR +STARTCHAR char8804 +ENCODING 8811 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 12 7 1 3 +BITMAP +C600 +3180 +0C60 +0210 +0C60 +3180 +C600 +ENDCHAR +STARTCHAR char8812 +ENCODING 8812 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 3 11 1 1 +BITMAP +A0 +40 +A0 +A0 +A0 +A0 +A0 +A0 +A0 +40 +A0 +ENDCHAR +STARTCHAR C043 +ENCODING 8813 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 7 1 2 +BITMAP +0200 +C2C0 +3F00 +0400 +3F00 +C8C0 +0800 +ENDCHAR +STARTCHAR char8804 +ENCODING 8814 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 10 1 2 +BITMAP +08 +08 +0E +18 +70 +90 +60 +38 +26 +20 +ENDCHAR +STARTCHAR char8804 +ENCODING 8815 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 2 +BITMAP +08 +C8 +38 +14 +12 +1C +30 +E0 +20 +ENDCHAR +STARTCHAR char8804 +ENCODING 8816 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 11 1 1 +BITMAP +08 +08 +0E +18 +70 +90 +60 +B8 +66 +78 +46 +ENDCHAR +STARTCHAR char8804 +ENCODING 8817 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 11 1 0 +BITMAP +08 +C8 +38 +14 +12 +1C +32 +EC +30 +E0 +20 +ENDCHAR +STARTCHAR char8804 +ENCODING 8818 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 10 1 1 +BITMAP +06 +18 +60 +80 +60 +18 +06 +00 +71 +8E +ENDCHAR +STARTCHAR char8804 +ENCODING 8819 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 10 1 1 +BITMAP +60 +18 +06 +01 +06 +18 +60 +00 +71 +8E +ENDCHAR +STARTCHAR char8804 +ENCODING 8820 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 13 1 0 +BITMAP +04 +04 +06 +18 +68 +88 +70 +38 +16 +20 +71 +AE +20 +ENDCHAR +STARTCHAR char8804 +ENCODING 8821 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 13 1 0 +BITMAP +02 +02 +62 +1C +06 +05 +0E +18 +68 +10 +71 +9E +20 +ENDCHAR +STARTCHAR char8804 +ENCODING 8822 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 10 1 1 +BITMAP +0E +70 +80 +70 +0E +E0 +1C +02 +1C +E0 +ENDCHAR +STARTCHAR char8804 +ENCODING 8823 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 10 1 1 +BITMAP +E0 +1C +02 +1C +E0 +0E +70 +80 +70 +0E +ENDCHAR +STARTCHAR char8804 +ENCODING 8824 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 14 1 -1 +BITMAP +10 +10 +1E +70 +90 +70 +1E +F0 +1C +12 +1C +F0 +10 +10 +ENDCHAR +STARTCHAR char8804 +ENCODING 8825 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 14 1 -1 +BITMAP +10 +10 +F0 +1C +12 +1C +F0 +1E +70 +90 +70 +1E +10 +10 +ENDCHAR +STARTCHAR char8804 +ENCODING 8826 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 2 +BITMAP +0080 +0100 +0600 +3800 +C000 +3800 +0600 +0100 +0080 +ENDCHAR +STARTCHAR char8804 +ENCODING 8827 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 2 +BITMAP +8000 +4000 +3000 +0E00 +0180 +0E00 +3000 +4000 +8000 +ENDCHAR +STARTCHAR char8804 +ENCODING 8828 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +0080 +0100 +0600 +3800 +C000 +3800 +C600 +3900 +0480 +0200 +0100 +ENDCHAR +STARTCHAR char8804 +ENCODING 8829 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +8000 +4000 +3000 +0E00 +0180 +0E00 +3180 +4E00 +9000 +2000 +4000 +ENDCHAR +STARTCHAR char8804 +ENCODING 8830 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 12 1 1 +BITMAP +0040 +0080 +0300 +1C00 +6000 +1C00 +0300 +0080 +0040 +0000 +7840 +8780 +ENDCHAR +STARTCHAR char8804 +ENCODING 8831 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 12 1 1 +BITMAP +8000 +4000 +3000 +0E00 +0180 +0E00 +3000 +4000 +8000 +0000 +7840 +8780 +ENDCHAR +STARTCHAR char8804 +ENCODING 8832 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 10 1 2 +BITMAP +0400 +0480 +0500 +0E00 +3800 +C800 +3800 +1600 +1100 +1080 +ENDCHAR +STARTCHAR char8804 +ENCODING 8833 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 10 1 1 +BITMAP +8200 +4200 +3400 +0E00 +0980 +0E00 +3000 +5000 +A000 +2000 +ENDCHAR +STARTCHAR C060 +ENCODING 8834 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 9 1 2 +BITMAP +3F +40 +80 +80 +80 +80 +80 +40 +3F +ENDCHAR +STARTCHAR C060 +ENCODING 8835 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 9 1 2 +BITMAP +FC +02 +01 +01 +01 +01 +01 +02 +FC +ENDCHAR +STARTCHAR C060 +ENCODING 8836 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 13 1 0 +BITMAP +02 +02 +3F +44 +84 +88 +88 +90 +90 +60 +3F +40 +40 +ENDCHAR +STARTCHAR C060 +ENCODING 8837 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 13 1 0 +BITMAP +02 +02 +FC +06 +09 +09 +11 +11 +21 +22 +FC +40 +40 +ENDCHAR +STARTCHAR C060 +ENCODING 8838 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 1 0 +BITMAP +3F +40 +80 +80 +80 +80 +80 +40 +3F +00 +FF +ENDCHAR +STARTCHAR C060 +ENCODING 8839 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 1 0 +BITMAP +FC +02 +01 +01 +01 +01 +01 +02 +FC +00 +FF +ENDCHAR +STARTCHAR C060 +ENCODING 8840 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 14 1 -1 +BITMAP +02 +02 +3F +44 +84 +88 +88 +90 +90 +60 +3F +40 +FF +80 +ENDCHAR +STARTCHAR C060 +ENCODING 8841 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 14 1 -1 +BITMAP +02 +02 +FC +06 +09 +09 +11 +11 +21 +22 +FC +40 +FF +80 +ENDCHAR +STARTCHAR C060 +ENCODING 8842 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 12 1 -1 +BITMAP +3F +40 +80 +80 +80 +80 +80 +40 +3F +08 +FF +10 +ENDCHAR +STARTCHAR C060 +ENCODING 8843 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 12 1 -1 +BITMAP +FC +02 +01 +01 +01 +01 +01 +02 +FC +08 +FF +10 +ENDCHAR +STARTCHAR C060 +ENCODING 8844 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +8080 +8080 +8080 +8080 +9080 +B080 +FF80 +B080 +9080 +4100 +3E00 +ENDCHAR +STARTCHAR C060 +ENCODING 8845 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +8080 +8080 +8080 +8080 +8080 +9C80 +9C80 +9C80 +8080 +4100 +3E00 +ENDCHAR +STARTCHAR C060 +ENCODING 8846 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +8080 +8080 +8080 +8080 +8880 +8880 +BE80 +8880 +8880 +4100 +3E00 +ENDCHAR +STARTCHAR char8847 +ENCODING 8847 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 10 1 2 +BITMAP +FF +80 +80 +80 +80 +80 +80 +80 +80 +FF +ENDCHAR +STARTCHAR char8847 +ENCODING 8848 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 10 1 2 +BITMAP +FF +01 +01 +01 +01 +01 +01 +01 +01 +FF +ENDCHAR +STARTCHAR char8847 +ENCODING 8849 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 12 1 0 +BITMAP +FF +80 +80 +80 +80 +80 +80 +80 +80 +FF +00 +FF +ENDCHAR +STARTCHAR char8847 +ENCODING 8850 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 12 1 0 +BITMAP +FF +01 +01 +01 +01 +01 +01 +01 +01 +FF +00 +FF +ENDCHAR +STARTCHAR char8847 +ENCODING 8851 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 10 1 2 +BITMAP +FF80 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +ENDCHAR +STARTCHAR char8847 +ENCODING 8852 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 10 1 2 +BITMAP +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +FF80 +ENDCHAR +STARTCHAR char8853 +ENCODING 8853 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 13 1 0 +BITMAP +0F80 +3260 +6230 +4210 +8208 +8208 +FFF8 +8208 +8208 +4210 +6230 +3260 +0F80 +ENDCHAR +STARTCHAR char8853 +ENCODING 8854 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 13 1 0 +BITMAP +0F80 +3060 +6030 +4010 +8008 +8008 +FFF8 +8008 +8008 +4010 +6030 +3060 +0F80 +ENDCHAR +STARTCHAR char8853 +ENCODING 8855 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 13 1 0 +BITMAP +0F80 +3060 +6030 +5050 +8888 +8508 +8208 +8508 +8888 +5050 +6030 +3060 +0F80 +ENDCHAR +STARTCHAR char8853 +ENCODING 8856 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 13 1 0 +BITMAP +0F80 +3060 +6030 +4050 +8088 +8108 +8208 +8408 +8808 +5010 +6030 +3060 +0F80 +ENDCHAR +STARTCHAR char8853 +ENCODING 8857 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 13 1 0 +BITMAP +0F80 +3060 +6030 +4010 +8008 +8708 +8708 +8708 +8008 +4010 +6030 +3060 +0F80 +ENDCHAR +STARTCHAR char8853 +ENCODING 8858 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 13 1 0 +BITMAP +0F80 +3060 +6030 +4010 +8708 +8888 +8888 +8888 +8708 +4010 +6030 +3060 +0F80 +ENDCHAR +STARTCHAR char8853 +ENCODING 8859 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 13 1 0 +BITMAP +0F80 +3060 +6030 +4210 +9248 +8A88 +8708 +8A88 +9248 +4210 +6030 +3060 +0F80 +ENDCHAR +STARTCHAR char8853 +ENCODING 8860 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 13 1 0 +BITMAP +0F80 +3060 +6030 +4010 +8008 +9FC8 +8008 +9FC8 +8008 +4010 +6030 +3060 +0F80 +ENDCHAR +STARTCHAR char8853 +ENCODING 8861 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 13 1 0 +BITMAP +0F80 +3060 +6030 +4010 +8008 +8008 +9FC8 +8008 +8008 +4010 +6030 +3060 +0F80 +ENDCHAR +STARTCHAR char8847 +ENCODING 8862 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +FFE0 +8420 +8420 +8420 +8420 +FFE0 +8420 +8420 +8420 +8420 +FFE0 +ENDCHAR +STARTCHAR char8847 +ENCODING 8863 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +FFE0 +8020 +8020 +8020 +8020 +FFE0 +8020 +8020 +8020 +8020 +FFE0 +ENDCHAR +STARTCHAR char8847 +ENCODING 8864 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +FFE0 +C060 +A0A0 +9120 +8A20 +8420 +8A20 +9120 +A0A0 +C060 +FFE0 +ENDCHAR +STARTCHAR char8847 +ENCODING 8865 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +FFE0 +8020 +8020 +8020 +8420 +8E20 +8420 +8020 +8020 +8020 +FFE0 +ENDCHAR +STARTCHAR char8847 +ENCODING 8866 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +8000 +8000 +8000 +8000 +8000 +FFE0 +8000 +8000 +8000 +8000 +8000 +ENDCHAR +STARTCHAR char8847 +ENCODING 8867 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +0020 +0020 +0020 +0020 +0020 +FFE0 +0020 +0020 +0020 +0020 +0020 +ENDCHAR +STARTCHAR char8847 +ENCODING 8868 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +FFE0 +0400 +0400 +0400 +0400 +0400 +0400 +0400 +0400 +0400 +0400 +ENDCHAR +STARTCHAR char8847 +ENCODING 8869 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +0400 +0400 +0400 +0400 +0400 +0400 +0400 +0400 +0400 +0400 +FFE0 +ENDCHAR +STARTCHAR char8847 +ENCODING 8870 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 11 1 0 +BITMAP +80 +80 +80 +80 +80 +FC +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char8847 +ENCODING 8871 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 12 1 0 +BITMAP +80 +80 +80 +80 +FE +80 +80 +FE +80 +80 +80 +80 +ENDCHAR +STARTCHAR char8847 +ENCODING 8872 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 12 1 0 +BITMAP +8000 +8000 +8000 +8000 +FFE0 +8000 +8000 +FFE0 +8000 +8000 +8000 +8000 +ENDCHAR +STARTCHAR char8847 +ENCODING 8873 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +9000 +9000 +9000 +9000 +9000 +9FE0 +9000 +9000 +9000 +9000 +9000 +ENDCHAR +STARTCHAR char8847 +ENCODING 8874 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +9200 +9200 +9200 +9200 +9200 +93E0 +9200 +9200 +9200 +9200 +9200 +ENDCHAR +STARTCHAR char8847 +ENCODING 8875 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 12 1 0 +BITMAP +9000 +9000 +9000 +9000 +9FE0 +9000 +9000 +9FE0 +9000 +9000 +9000 +9000 +ENDCHAR +STARTCHAR char8847 +ENCODING 8876 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 14 1 -2 +BITMAP +0080 +8080 +8100 +8100 +8200 +8200 +FFE0 +8400 +8800 +8800 +9000 +9000 +2000 +2000 +ENDCHAR +STARTCHAR char8847 +ENCODING 8877 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 16 1 -2 +BITMAP +0080 +0080 +8100 +8100 +8200 +8200 +FFE0 +8400 +8400 +FFE0 +8800 +8800 +9000 +9000 +2000 +2000 +ENDCHAR +STARTCHAR char8847 +ENCODING 8878 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 14 1 -2 +BITMAP +0040 +9040 +9080 +9080 +9100 +9100 +9FE0 +9200 +9400 +9400 +9800 +9800 +1000 +1000 +ENDCHAR +STARTCHAR char8847 +ENCODING 8879 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 16 1 -2 +BITMAP +0040 +0040 +9080 +9080 +9100 +9100 +9FE0 +9200 +9200 +9FE0 +9400 +9400 +9800 +9800 +1000 +1000 +ENDCHAR +STARTCHAR char8804 +ENCODING 8880 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 1 1 +BITMAP +02 +05 +01 +06 +38 +C0 +38 +06 +01 +05 +02 +ENDCHAR +STARTCHAR char8804 +ENCODING 8881 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 1 1 +BITMAP +40 +A0 +80 +60 +1C +03 +1C +60 +80 +A0 +40 +ENDCHAR +STARTCHAR char8882 +ENCODING 8882 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 9 6 1 3 +BITMAP +0380 +1C80 +E080 +E080 +1C80 +0380 +ENDCHAR +STARTCHAR char8882 +ENCODING 8883 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 9 6 1 3 +BITMAP +E000 +9C00 +8380 +8380 +9C00 +E000 +ENDCHAR +STARTCHAR char8882 +ENCODING 8884 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 9 1 0 +BITMAP +0380 +1C80 +E080 +E080 +1C80 +0380 +0000 +0000 +FF80 +ENDCHAR +STARTCHAR char8882 +ENCODING 8885 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 0 +BITMAP +E000 +9C00 +8380 +8380 +9C00 +E000 +0000 +0000 +FF80 +ENDCHAR +STARTCHAR char8886 +ENCODING 8886 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 5 1 3 +BITMAP +6018 +903C +9FFC +903C +6018 +ENDCHAR +STARTCHAR char8886 +ENCODING 8887 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 14 5 1 3 +BITMAP +6018 +F024 +FFE4 +F024 +6018 +ENDCHAR +STARTCHAR char8886 +ENCODING 8888 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 5 1 3 +BITMAP +00C0 +0120 +FF20 +0120 +00C0 +ENDCHAR +STARTCHAR char8853 +ENCODING 8889 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 13 13 1 0 +BITMAP +0200 +0200 +0200 +0200 +0200 +0000 +F8F8 +0000 +0200 +0200 +0200 +0200 +0200 +ENDCHAR +STARTCHAR char8847 +ENCODING 8890 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 11 1 0 +BITMAP +FE +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +ENDCHAR +STARTCHAR char8804 +ENCODING 8891 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 2 +BITMAP +82 +82 +44 +44 +28 +28 +10 +00 +FE +ENDCHAR +STARTCHAR char8804 +ENCODING 8892 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 2 +BITMAP +FE +00 +10 +28 +28 +44 +44 +82 +82 +ENDCHAR +STARTCHAR char8804 +ENCODING 8893 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 2 +BITMAP +FE +00 +82 +82 +44 +44 +28 +28 +10 +ENDCHAR +STARTCHAR char8894 +ENCODING 8894 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +8000 +8000 +8000 +E000 +9800 +8400 +8200 +8200 +8100 +8100 +FFE0 +ENDCHAR +STARTCHAR char8894 +ENCODING 8895 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +0020 +0060 +00A0 +0120 +0220 +0420 +0820 +1020 +2020 +4020 +FFE0 +ENDCHAR +STARTCHAR char8804 +ENCODING 8896 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 8 1 3 +BITMAP +0800 +1C00 +3600 +3600 +6300 +6300 +C180 +C180 +ENDCHAR +STARTCHAR char8804 +ENCODING 8897 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 8 1 3 +BITMAP +C180 +C180 +6300 +6300 +3600 +3600 +1C00 +0800 +ENDCHAR +STARTCHAR C060 +ENCODING 8898 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 3 +BITMAP +38 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +ENDCHAR +STARTCHAR C060 +ENCODING 8899 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 3 +BITMAP +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +38 +ENDCHAR +STARTCHAR char8900 +ENCODING 8900 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 5 10 1 2 +BITMAP +20 +20 +50 +50 +88 +88 +50 +50 +20 +20 +ENDCHAR +STARTCHAR char8901 +ENCODING 8901 +SWIDTH 240 0 +DWIDTH 4 0 +BBX 2 2 1 5 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char8902 +ENCODING 8902 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 5 5 1 4 +BITMAP +20 +20 +F8 +70 +D8 +ENDCHAR +STARTCHAR char8903 +ENCODING 8903 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +8420 +4E40 +2480 +1100 +0A00 +FFE0 +0A00 +1100 +2480 +4E40 +8420 +ENDCHAR +STARTCHAR char8903 +ENCODING 8904 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +8020 +C060 +A0A0 +9120 +8A20 +8420 +8A20 +9120 +A0A0 +C060 +8020 +ENDCHAR +STARTCHAR char8903 +ENCODING 8905 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +8020 +C040 +A080 +9100 +8A00 +8400 +8A00 +9100 +A080 +C040 +8020 +ENDCHAR +STARTCHAR char8903 +ENCODING 8906 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +8020 +4060 +20A0 +1120 +0A20 +0420 +0A20 +1120 +20A0 +4060 +8020 +ENDCHAR +STARTCHAR char8903 +ENCODING 8907 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +8000 +4000 +2000 +1000 +0800 +0400 +0A00 +1100 +2080 +4040 +8020 +ENDCHAR +STARTCHAR char8903 +ENCODING 8908 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 0 +BITMAP +0020 +0040 +0080 +0100 +0200 +0400 +0A00 +1100 +2080 +4040 +8020 +ENDCHAR +STARTCHAR C043 +ENCODING 8909 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 4 1 4 +BITMAP +8780 +7840 +0000 +FFC0 +ENDCHAR +STARTCHAR char8804 +ENCODING 8910 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 9 1 2 +BITMAP +8080 +4100 +2200 +2200 +1400 +1400 +1400 +0800 +0800 +ENDCHAR +STARTCHAR char8804 +ENCODING 8911 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 9 1 2 +BITMAP +0800 +0800 +1400 +1400 +1400 +2200 +2200 +4100 +8080 +ENDCHAR +STARTCHAR C060 +ENCODING 8912 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 9 1 2 +BITMAP +3F +40 +9F +A0 +A0 +A0 +9F +40 +3F +ENDCHAR +STARTCHAR C060 +ENCODING 8913 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 9 1 2 +BITMAP +FC +02 +F9 +05 +05 +05 +F9 +02 +FC +ENDCHAR +STARTCHAR C060 +ENCODING 8914 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 1 0 +BITMAP +3C +42 +99 +A5 +A5 +A5 +A5 +A5 +A5 +A5 +A5 +ENDCHAR +STARTCHAR C060 +ENCODING 8915 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 1 0 +BITMAP +A5 +A5 +A5 +A5 +A5 +A5 +A5 +A5 +99 +42 +3C +ENDCHAR +STARTCHAR C060 +ENCODING 8916 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 13 1 0 +BITMAP +10 +10 +10 +38 +54 +92 +92 +92 +92 +92 +92 +92 +92 +ENDCHAR +STARTCHAR char123 +ENCODING 8917 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 12 1 0 +BITMAP +1400 +1400 +1400 +1400 +FF80 +1400 +1400 +FF80 +1400 +1400 +1400 +1400 +ENDCHAR +STARTCHAR char8804 +ENCODING 8918 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 7 1 4 +BITMAP +0380 +1C00 +6200 +8700 +6200 +1C00 +0380 +ENDCHAR +STARTCHAR char8804 +ENCODING 8919 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 7 1 4 +BITMAP +E000 +1C00 +2300 +7080 +2300 +1C00 +E000 +ENDCHAR +STARTCHAR char8804 +ENCODING 8920 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +063180 +18C600 +631800 +842000 +631800 +18C600 +063180 +ENDCHAR +STARTCHAR char8804 +ENCODING 8921 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +C63000 +318C00 +0C6300 +021080 +0C6300 +318C00 +C63000 +ENDCHAR +STARTCHAR char8804 +ENCODING 8922 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 13 1 1 +BITMAP +0E +70 +80 +70 +0E +00 +FE +00 +E0 +1C +02 +1C +E0 +ENDCHAR +STARTCHAR char8804 +ENCODING 8923 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 13 1 1 +BITMAP +E0 +1C +02 +1C +E0 +00 +FE +00 +0E +70 +80 +70 +0E +ENDCHAR +STARTCHAR char8804 +ENCODING 8924 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 2 +BITMAP +FE +00 +06 +18 +60 +80 +60 +18 +06 +ENDCHAR +STARTCHAR char8804 +ENCODING 8925 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 7 9 1 2 +BITMAP +FE +00 +C0 +30 +0C +02 +0C +30 +C0 +ENDCHAR +STARTCHAR char8804 +ENCODING 8926 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +0100 +0200 +0480 +3900 +C600 +3800 +C000 +3800 +0600 +0100 +0080 +ENDCHAR +STARTCHAR char8804 +ENCODING 8927 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 11 1 0 +BITMAP +4000 +2000 +9000 +4E00 +3180 +0E00 +0180 +0E00 +3000 +4000 +8000 +ENDCHAR +STARTCHAR char8804 +ENCODING 8928 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 12 1 0 +BITMAP +0400 +0480 +0500 +0E00 +3800 +C800 +3800 +D600 +3900 +1480 +1200 +0100 +ENDCHAR +STARTCHAR char8804 +ENCODING 8929 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 11 1 0 +BITMAP +8200 +4200 +3400 +0E00 +0980 +0E00 +3180 +5E00 +9000 +2000 +6000 +ENDCHAR +STARTCHAR char8847 +ENCODING 8930 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 16 1 -2 +BITMAP +02 +02 +FF +84 +84 +84 +88 +88 +88 +88 +90 +FF +10 +FF +20 +20 +ENDCHAR +STARTCHAR char8847 +ENCODING 8931 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 16 1 -2 +BITMAP +40 +40 +FF +21 +21 +21 +11 +11 +11 +11 +09 +FF +08 +FF +04 +04 +ENDCHAR +STARTCHAR char8847 +ENCODING 8932 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 13 1 -1 +BITMAP +FF +80 +80 +80 +80 +80 +80 +80 +80 +FF +08 +FF +20 +ENDCHAR +STARTCHAR char8847 +ENCODING 8933 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 13 1 -1 +BITMAP +FF +01 +01 +01 +01 +01 +01 +01 +01 +FF +08 +FF +10 +ENDCHAR +STARTCHAR char8804 +ENCODING 8934 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 1 0 +BITMAP +06 +18 +60 +80 +60 +18 +06 +04 +79 +9E +20 +ENDCHAR +STARTCHAR char8804 +ENCODING 8935 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 8 11 1 0 +BITMAP +60 +18 +06 +01 +06 +18 +60 +04 +79 +9E +20 +ENDCHAR +STARTCHAR char8804 +ENCODING 8936 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 13 0 0 +BITMAP +0040 +0080 +0300 +1C00 +6000 +1C00 +0300 +0080 +0040 +0200 +7C40 +8F80 +1000 +ENDCHAR +STARTCHAR char8804 +ENCODING 8937 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 13 1 0 +BITMAP +8000 +4000 +3000 +0E00 +0180 +0E00 +3000 +4000 +8000 +0200 +7C40 +8F80 +1000 +ENDCHAR +STARTCHAR char8882 +ENCODING 8938 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 9 10 1 1 +BITMAP +0200 +0200 +0380 +1C80 +E480 +E480 +1C80 +0B80 +0800 +0800 +ENDCHAR +STARTCHAR char8882 +ENCODING 8939 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 9 9 1 1 +BITMAP +0400 +E400 +9C00 +8B80 +8B80 +9C00 +F000 +1000 +1000 +ENDCHAR +STARTCHAR char8882 +ENCODING 8940 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 13 1 -2 +BITMAP +0100 +0100 +01C0 +0E40 +7240 +7240 +0E40 +05C0 +0400 +0400 +FFC0 +0800 +0800 +ENDCHAR +STARTCHAR char8882 +ENCODING 8941 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 10 12 1 -2 +BITMAP +0400 +E400 +9C00 +8B80 +8B80 +9C00 +E800 +1000 +1000 +FFC0 +1000 +2000 +ENDCHAR +STARTCHAR char8756 +ENCODING 8942 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 3 11 1 0 +BITMAP +40 +E0 +40 +00 +40 +E0 +40 +00 +40 +E0 +40 +ENDCHAR +STARTCHAR char8756 +ENCODING 8943 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 3 1 5 +BITMAP +4440 +EEE0 +4440 +ENDCHAR +STARTCHAR char8756 +ENCODING 8944 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 13 1 0 +BITMAP +0040 +00E0 +0040 +0000 +0000 +0400 +0E00 +0400 +0000 +0000 +4000 +E000 +4000 +ENDCHAR +STARTCHAR char8756 +ENCODING 8945 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 13 1 0 +BITMAP +4000 +E000 +4000 +0000 +0000 +0400 +0E00 +0400 +0000 +0000 +0040 +00E0 +0040 +ENDCHAR +STARTCHAR char8960 +ENCODING 8960 +SWIDTH 540 0 +DWIDTH 9 0 +BBX 8 8 1 2 +BITMAP +3D +42 +85 +89 +91 +A1 +42 +BC +ENDCHAR +STARTCHAR char8961 +ENCODING 8961 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 5 1 4 +BITMAP +8800 +4C00 +2A00 +1900 +0880 +ENDCHAR +STARTCHAR char8962 +ENCODING 8962 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 12 1 0 +BITMAP +0400 +0A00 +1100 +2080 +4040 +8020 +8020 +8020 +8020 +8020 +8020 +FFE0 +ENDCHAR +STARTCHAR char8963 +ENCODING 8963 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 7 +BITMAP +10 +28 +28 +44 +44 +82 +82 +ENDCHAR +STARTCHAR char8963 +ENCODING 8964 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 -3 +BITMAP +82 +82 +44 +44 +28 +28 +10 +ENDCHAR +STARTCHAR char8963 +ENCODING 8965 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 9 1 2 +BITMAP +FE +00 +10 +28 +28 +44 +44 +82 +82 +ENDCHAR +STARTCHAR char8963 +ENCODING 8966 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 2 +BITMAP +FE +00 +FE +00 +10 +28 +28 +44 +44 +82 +82 +ENDCHAR +STARTCHAR char8967 +ENCODING 8967 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 4 15 1 -1 +BITMAP +80 +60 +10 +10 +60 +80 +80 +60 +10 +10 +60 +80 +80 +60 +10 +ENDCHAR +STARTCHAR C091 +ENCODING 8968 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 12 1 0 +BITMAP +F0 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR C091 +ENCODING 8969 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 12 1 0 +BITMAP +F0 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +ENDCHAR +STARTCHAR C091 +ENCODING 8970 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 12 1 0 +BITMAP +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +F0 +ENDCHAR +STARTCHAR C091 +ENCODING 8971 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 12 1 0 +BITMAP +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +F0 +ENDCHAR +STARTCHAR C091 +ENCODING 8972 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 6 1 0 +BITMAP +3C +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR C091 +ENCODING 8973 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 6 1 0 +BITMAP +F0 +04 +04 +04 +04 +04 +ENDCHAR +STARTCHAR C091 +ENCODING 8974 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 6 1 6 +BITMAP +80 +80 +80 +80 +80 +3C +ENDCHAR +STARTCHAR C091 +ENCODING 8975 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 6 1 6 +BITMAP +04 +04 +04 +04 +04 +F0 +ENDCHAR +STARTCHAR char172 +ENCODING 8976 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 4 1 2 +BITMAP +FC +80 +80 +80 +ENDCHAR +STARTCHAR char8977 +ENCODING 8977 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 7 7 2 1 +BITMAP +82 +7C +44 +44 +44 +7C +82 +ENDCHAR +STARTCHAR char8978 +ENCODING 8978 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 12 7 2 0 +BITMAP +0F00 +30C0 +4020 +4020 +8010 +8010 +8010 +ENDCHAR +STARTCHAR char8978 +ENCODING 8979 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 12 7 2 0 +BITMAP +0F00 +30C0 +4020 +4020 +8010 +8010 +FFF0 +ENDCHAR +STARTCHAR char8978 +ENCODING 8980 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 9 7 2 0 +BITMAP +3E00 +4100 +8080 +4100 +2200 +1400 +0800 +ENDCHAR +STARTCHAR char8960 +ENCODING 8981 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 10 10 2 0 +BITMAP +0F00 +1080 +2040 +2040 +2040 +2040 +1080 +2F00 +4000 +8000 +ENDCHAR +STARTCHAR char8960 +ENCODING 8982 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 13 1 0 +BITMAP +0400 +0400 +0400 +0E00 +1500 +2480 +FFE0 +2480 +1500 +0E00 +0400 +0400 +0400 +ENDCHAR +STARTCHAR char8983 +ENCODING 8983 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 15 15 2 -2 +BITMAP +0820 +0820 +0820 +0820 +FFFE +0820 +0820 +0820 +0820 +0820 +FFFE +0820 +0820 +0820 +0820 +ENDCHAR +STARTCHAR char8984 +ENCODING 8984 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 11 10 2 1 +BITMAP +60C0 +9120 +9120 +7FC0 +1100 +1100 +7FC0 +9120 +9120 +60C0 +ENDCHAR +STARTCHAR char172 +ENCODING 8985 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 4 1 2 +BITMAP +80 +80 +80 +FC +ENDCHAR +STARTCHAR char8960 +ENCODING 8986 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 13 15 2 0 +BITMAP +0F80 +1FC0 +2020 +4210 +8048 +8088 +8108 +AE28 +8008 +8008 +8008 +4210 +2020 +1FC0 +0F80 +ENDCHAR +STARTCHAR char8987 +ENCODING 8987 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 13 1 0 +BITMAP +FF80 +4100 +4100 +4100 +4100 +2200 +1400 +2A00 +4100 +5D00 +4100 +5D00 +FF80 +ENDCHAR +STARTCHAR C091 +ENCODING 8988 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 6 6 1 6 +BITMAP +FC +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR C091 +ENCODING 8989 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 6 6 1 6 +BITMAP +FC +04 +04 +04 +04 +04 +ENDCHAR +STARTCHAR C091 +ENCODING 8990 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 6 1 0 +BITMAP +80 +80 +80 +80 +80 +FC +ENDCHAR +STARTCHAR C091 +ENCODING 8991 +SWIDTH 420 0 +DWIDTH 7 0 +BBX 6 6 1 0 +BITMAP +04 +04 +04 +04 +04 +FC +ENDCHAR +STARTCHAR char8960 +ENCODING 9005 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 14 10 2 2 +BITMAP +0804 +0804 +1708 +1888 +3050 +3050 +5060 +48A0 +8740 +8040 +ENDCHAR +STARTCHAR char8960 +ENCODING 9006 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 11 9 2 1 +BITMAP +0E00 +1100 +2080 +27E0 +2880 +1100 +2E00 +C000 +C000 +ENDCHAR +STARTCHAR char8960 +ENCODING 9009 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 12 11 3 1 +BITMAP +1000 +1000 +3800 +5400 +9220 +FFF0 +9220 +5400 +3800 +1000 +1000 +ENDCHAR +STARTCHAR char9216 +ENCODING 9216 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +8A2800 +8A2800 +CA2800 +AA2800 +9A2800 +8A2800 +89CF80 +ENDCHAR +STARTCHAR char9217 +ENCODING 9217 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +71C880 +8A2880 +822880 +722F80 +0A2880 +8A2880 +71C880 +ENDCHAR +STARTCHAR char9218 +ENCODING 9218 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +73E880 +888880 +808500 +708200 +088500 +888880 +708880 +ENDCHAR +STARTCHAR char9219 +ENCODING 9219 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +FBE880 +808880 +808500 +F08200 +808500 +808880 +F88880 +ENDCHAR +STARTCHAR char9220 +ENCODING 9220 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +F9CF80 +822200 +822200 +F22200 +822200 +822200 +F9C200 +ENDCHAR +STARTCHAR char9221 +ENCODING 9221 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 8 1 2 +BITMAP +FA2700 +822880 +832880 +F2A880 +826880 +822A80 +FA2700 +000080 +ENDCHAR +STARTCHAR char9222 +ENCODING 9222 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +21C880 +522900 +8A0A00 +8A0C00 +FA0A00 +8A2900 +89C880 +ENDCHAR +STARTCHAR char9223 +ENCODING 9223 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +F3E800 +4A0800 +4A0800 +73C800 +4A0800 +4A0800 +F3EF80 +ENDCHAR +STARTCHAR char9224 +ENCODING 9224 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 3 +BITMAP +F1C0 +4A20 +4A00 +71C0 +4820 +4A20 +F1C0 +ENDCHAR +STARTCHAR char9225 +ENCODING 9225 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 3 +BITMAP +8BE0 +8880 +8880 +F880 +8880 +8880 +8880 +ENDCHAR +STARTCHAR char9226 +ENCODING 9226 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 3 +BITMAP +83E0 +8200 +8200 +83C0 +8200 +8200 +FA00 +ENDCHAR +STARTCHAR char9227 +ENCODING 9227 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 4 +BITMAP +8BE0 +8880 +8880 +5080 +5080 +5080 +2080 +ENDCHAR +STARTCHAR char9228 +ENCODING 9228 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 3 +BITMAP +FBE0 +8200 +8200 +F3C0 +8200 +8200 +8200 +ENDCHAR +STARTCHAR char9229 +ENCODING 9229 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 3 +BITMAP +73C0 +8A20 +8220 +83C0 +8280 +8A40 +7220 +ENDCHAR +STARTCHAR char9230 +ENCODING 9230 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 3 +BITMAP +71C0 +8A20 +8220 +7220 +0A20 +8A20 +71C0 +ENDCHAR +STARTCHAR char9231 +ENCODING 9231 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 7 1 3 +BITMAP +7380 +8900 +8100 +7100 +0900 +8900 +7380 +ENDCHAR +STARTCHAR char9232 +ENCODING 9232 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +F20F80 +4A0800 +4A0800 +4A0F00 +4A0800 +4A0800 +F3EF80 +ENDCHAR +STARTCHAR char9233 +ENCODING 9233 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +F1C200 +4A2600 +4A0A00 +4A0200 +4A0200 +4A2200 +F1CF80 +ENDCHAR +STARTCHAR char9234 +ENCODING 9234 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +F1C700 +4A2880 +4A0080 +4A0300 +4A0400 +4A2800 +F1CF80 +ENDCHAR +STARTCHAR char9235 +ENCODING 9235 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +F1CF80 +4A2080 +4A0100 +4A0300 +4A0080 +4A2880 +F1C700 +ENDCHAR +STARTCHAR char9236 +ENCODING 9236 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +F1C100 +4A2300 +4A0500 +4A0900 +4A0F80 +4A2100 +F1C100 +ENDCHAR +STARTCHAR char9237 +ENCODING 9237 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +888880 +894900 +CA2A00 +AA2C00 +9BEA00 +8A2900 +8A2880 +ENDCHAR +STARTCHAR char9238 +ENCODING 9238 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +722880 +8A2880 +814C80 +708A80 +088980 +888880 +708880 +ENDCHAR +STARTCHAR char9239 +ENCODING 9239 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +FBEF00 +808480 +808480 +F08700 +808480 +808480 +F88F00 +ENDCHAR +STARTCHAR char9240 +ENCODING 9240 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +708880 +894880 +822C80 +822A80 +83E980 +8A2880 +722880 +ENDCHAR +STARTCHAR char9241 +ENCODING 9241 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 3 +BITMAP +FA20 +8220 +8360 +F2A0 +8220 +8220 +FA20 +ENDCHAR +STARTCHAR char9242 +ENCODING 9242 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +722F00 +8A2480 +822480 +722700 +0A2480 +8A2480 +71CF00 +ENDCHAR +STARTCHAR char9243 +ENCODING 9243 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +F9C700 +822880 +820800 +F1C800 +802800 +822880 +F9C700 +ENDCHAR +STARTCHAR char9244 +ENCODING 9244 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 3 +BITMAP +F9C0 +8220 +8200 +F1C0 +8020 +8220 +81C0 +ENDCHAR +STARTCHAR char9245 +ENCODING 9245 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 3 +BITMAP +71C0 +8A20 +8200 +81C0 +9820 +8A20 +71C0 +ENDCHAR +STARTCHAR char9246 +ENCODING 9246 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 3 +BITMAP +F1C0 +8A20 +8A00 +F1C0 +A020 +9220 +89C0 +ENDCHAR +STARTCHAR char9247 +ENCODING 9247 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 3 +BITMAP +89C0 +8A20 +8A00 +89C0 +8820 +8A20 +71C0 +ENDCHAR +STARTCHAR char9248 +ENCODING 9248 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 7 1 3 +BITMAP +73C0 +8A20 +8220 +73C0 +0A00 +8A00 +7200 +ENDCHAR +STARTCHAR char9249 +ENCODING 9249 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 17 7 1 3 +BITMAP +F3E800 +4A0800 +4A0800 +4BC800 +4A0800 +4A0800 +F3EF80 +ENDCHAR +STARTCHAR C098 +ENCODING 9250 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 6 13 1 -3 +BITMAP +C8 +48 +48 +78 +54 +54 +54 +64 +64 +78 +20 +40 +40 +ENDCHAR +STARTCHAR char9251 +ENCODING 9251 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 9 3 1 -2 +BITMAP +8080 +8080 +FF80 +ENDCHAR +STARTCHAR char9216 +ENCODING 9252 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 11 11 1 1 +BITMAP +8800 +8800 +C800 +A800 +9A00 +8A00 +8A00 +0200 +0200 +0200 +03E0 +ENDCHAR +STARTCHAR char9280 +ENCODING 9280 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 1 +BITMAP +1E +12 +12 +12 +10 +10 +10 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char9281 +ENCODING 9281 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 1 +BITMAP +02 +02 +02 +02 +02 +FE +82 +82 +82 +82 +82 +ENDCHAR +STARTCHAR char9281 +ENCODING 9282 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 1 +BITMAP +82 +82 +82 +82 +82 +FE +10 +10 +10 +10 +10 +ENDCHAR +STARTCHAR char9281 +ENCODING 9283 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 1 +BITMAP +FE +92 +92 +92 +10 +10 +10 +92 +92 +92 +FE +ENDCHAR +STARTCHAR char9284 +ENCODING 9284 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 5 1 7 +BITMAP +C6 +AA +92 +AA +C6 +ENDCHAR +STARTCHAR char9285 +ENCODING 9285 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 9 1 2 +BITMAP +0E +CE +CE +C0 +C0 +C0 +CE +CE +0E +ENDCHAR +STARTCHAR char9285 +ENCODING 9286 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 11 1 1 +BITMAP +06 +06 +06 +16 +16 +10 +D0 +D0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char9287 +ENCODING 9287 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 8 1 2 +BITMAP +0E +0E +AE +AE +AE +A0 +A0 +A0 +ENDCHAR +STARTCHAR char9285 +ENCODING 9288 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 5 1 4 +BITMAP +DA +DA +DA +DA +DA +ENDCHAR +STARTCHAR C047 +ENCODING 9289 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 +BITMAP +90 +90 +48 +48 +48 +48 +24 +24 +24 +24 +12 +12 +ENDCHAR +STARTCHAR C040 +ENCODING 9312 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +408100 +438100 +808080 +808080 +808080 +808080 +808080 +808080 +808080 +408100 +43E100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9313 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +41C100 +422100 +822080 +822080 +802080 +804080 +804080 +808080 +812080 +412100 +43E100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9314 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +41C100 +422100 +822080 +802080 +802080 +80C080 +802080 +802080 +822080 +422100 +41C100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9315 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +40C100 +40C100 +814080 +814080 +824080 +864080 +87F080 +804080 +804080 +404100 +41F100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9316 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +422100 +43C100 +820080 +820080 +83C080 +832080 +802080 +802080 +822080 +424100 +418100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9317 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +40C100 +412100 +810080 +820080 +83C080 +822080 +822080 +822080 +822080 +414100 +41C100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9318 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +220200 +43F100 +421100 +822080 +804080 +804080 +804080 +808080 +808080 +808080 +408100 +408100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9319 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +41C100 +422100 +822080 +822080 +814080 +81C080 +822080 +822080 +822080 +422100 +41C100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9320 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +41C100 +414100 +822080 +822080 +822080 +822080 +81E080 +802080 +804080 +424100 +418100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9321 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +447100 +5C5100 +848880 +848880 +848880 +848880 +848880 +848880 +848880 +445100 +5F7100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9322 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +441100 +5C7100 +841080 +841080 +841080 +841080 +841080 +841080 +841080 +441100 +5F7D00 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9323 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +447100 +5C8900 +848880 +848880 +840880 +841080 +841080 +842080 +844880 +444900 +5FF900 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9324 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +447100 +5C8900 +848880 +840880 +840880 +843080 +840880 +840880 +848880 +448900 +5F7100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9325 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +443100 +5C3100 +845080 +845080 +849080 +859080 +85FC80 +841080 +841080 +441100 +5F7D00 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9326 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +448900 +5CF100 +848080 +848080 +84F080 +84C880 +840880 +840880 +848880 +449100 +5F6100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9327 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +443100 +5C4900 +844080 +848080 +84F080 +848880 +848880 +848880 +848880 +445100 +5F7100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9328 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +208200 +44FD00 +5C8500 +848880 +841080 +841080 +841080 +842080 +842080 +842080 +442100 +5F2100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9329 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +447100 +5C8900 +848880 +848880 +845080 +847080 +848880 +848880 +848880 +448900 +5F7100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9330 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +447100 +5C5100 +848880 +848880 +848880 +848880 +847880 +840880 +841080 +449100 +5F6100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9331 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +4E3900 +512900 +914480 +914480 +814480 +824480 +824480 +844480 +894480 +492900 +5F3900 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9332 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +208200 +438100 +408100 +808080 +808080 +808080 +808080 +808080 +808080 +808080 +43E100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9333 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +21C200 +422100 +422100 +822080 +802080 +804080 +804080 +808080 +812080 +812080 +43E100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9334 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +21C200 +422100 +422100 +802080 +802080 +80C080 +802080 +802080 +822080 +822080 +41C100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9335 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +20C200 +40C100 +414100 +814080 +824080 +864080 +87F080 +804080 +804080 +804080 +41F100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9336 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +222200 +43C100 +420100 +820080 +83C080 +832080 +802080 +802080 +822080 +824080 +418100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9337 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +20C200 +412100 +410100 +820080 +83C080 +822080 +822080 +822080 +822080 +814080 +41C100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9338 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +120400 +23F200 +421100 +422100 +804080 +804080 +804080 +808080 +808080 +808080 +808080 +408100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9339 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +21C200 +422100 +422100 +822080 +814080 +81C080 +822080 +822080 +822080 +822080 +41C100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9340 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +21C200 +414100 +422100 +822080 +822080 +822080 +81E080 +802080 +804080 +824080 +418100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9341 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +247200 +5C5100 +448900 +848880 +848880 +848880 +848880 +848880 +848880 +845080 +5F7100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9342 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +241200 +5C7100 +441100 +841080 +841080 +841080 +841080 +841080 +841080 +841080 +5F7D00 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9343 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +247200 +5C8900 +448900 +848880 +840880 +841080 +841080 +842080 +844880 +844880 +5FF900 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9344 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +247200 +5C8900 +448900 +840880 +840880 +843080 +840880 +840880 +848880 +848880 +5F7100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9345 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +243200 +5C3100 +445100 +845080 +849080 +859080 +85F880 +841080 +841080 +841080 +5F7900 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9346 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +248A00 +5CF100 +448100 +848080 +84F080 +84C880 +840880 +840880 +848880 +849080 +5F6100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9347 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +243200 +5C4900 +444100 +848080 +84F080 +848880 +848880 +848880 +848880 +845080 +5F7100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9348 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +108400 +24FE00 +5C8500 +448900 +841080 +841080 +841080 +842080 +842080 +842080 +842080 +5F2100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9349 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +247200 +5C8900 +448900 +848880 +845080 +847080 +848880 +848880 +848880 +848880 +5F7100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9350 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +247200 +5C5100 +448900 +848880 +848880 +848880 +847880 +840880 +841080 +849080 +5F6100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9351 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +2E3A00 +512900 +514500 +914480 +814480 +824480 +824480 +844480 +894480 +892880 +5F3900 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C049 +ENCODING 9352 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 9 11 3 0 +BITMAP +2000 +E000 +2000 +2000 +2000 +2000 +2000 +2000 +2000 +2180 +F980 +ENDCHAR +STARTCHAR C050 +ENCODING 9353 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 9 11 3 0 +BITMAP +7000 +8800 +8800 +8800 +0800 +1000 +1000 +2000 +4800 +4980 +F980 +ENDCHAR +STARTCHAR C051 +ENCODING 9354 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 9 11 3 0 +BITMAP +7000 +8800 +8800 +0800 +0800 +3000 +0800 +0800 +8800 +8980 +7180 +ENDCHAR +STARTCHAR C052 +ENCODING 9355 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 11 11 3 0 +BITMAP +1800 +1800 +2800 +2800 +4800 +C800 +FE00 +0800 +0800 +0860 +3E60 +ENDCHAR +STARTCHAR C053 +ENCODING 9356 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 9 11 3 0 +BITMAP +8800 +F000 +8000 +8000 +F000 +C800 +0800 +0800 +8800 +9180 +6180 +ENDCHAR +STARTCHAR C054 +ENCODING 9357 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 9 11 3 0 +BITMAP +3000 +4800 +4000 +8000 +F000 +8800 +8800 +8800 +8800 +5180 +7180 +ENDCHAR +STARTCHAR C055 +ENCODING 9358 +SWIDTH 720 0 +DWIDTH 12 0 +BBX 7 12 3 0 +BITMAP +80 +FC +84 +88 +10 +10 +10 +20 +20 +20 +26 +26 +ENDCHAR +STARTCHAR C056 +ENCODING 9359 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 9 11 3 0 +BITMAP +7000 +8800 +8800 +8800 +5000 +7000 +8800 +8800 +8800 +8980 +7180 +ENDCHAR +STARTCHAR C057 +ENCODING 9360 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 8 11 3 0 +BITMAP +70 +50 +88 +88 +88 +88 +78 +08 +10 +93 +63 +ENDCHAR +STARTCHAR C040 +ENCODING 9361 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 13 11 3 0 +BITMAP +2380 +E280 +2440 +2440 +2440 +2440 +2440 +2440 +2440 +2298 +FB98 +ENDCHAR +STARTCHAR C040 +ENCODING 9362 +SWIDTH 1200 0 +DWIDTH 20 0 +BBX 15 11 3 0 +BITMAP +2080 +E380 +2080 +2080 +2080 +2080 +2080 +2080 +2080 +2086 +FBE6 +ENDCHAR +STARTCHAR C040 +ENCODING 9363 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 14 11 3 0 +BITMAP +2380 +E440 +2440 +2440 +2040 +2080 +2080 +2100 +2240 +224C +FFCC +ENDCHAR +STARTCHAR C040 +ENCODING 9364 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 14 11 3 0 +BITMAP +2380 +E440 +2440 +2040 +2040 +2180 +2040 +2040 +2440 +244C +FB8C +ENDCHAR +STARTCHAR C040 +ENCODING 9365 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 14 11 3 0 +BITMAP +2180 +E180 +2280 +2280 +2480 +2C80 +2FC0 +2080 +2080 +208C +FBCC +ENDCHAR +STARTCHAR C040 +ENCODING 9366 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 13 11 3 0 +BITMAP +2440 +E780 +2400 +2400 +2780 +2640 +2040 +2040 +2440 +2498 +FB18 +ENDCHAR +STARTCHAR C040 +ENCODING 9367 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 13 11 3 0 +BITMAP +2180 +E240 +2200 +2400 +2780 +2440 +2440 +2440 +2440 +2298 +FB98 +ENDCHAR +STARTCHAR C040 +ENCODING 9368 +SWIDTH 1020 0 +DWIDTH 17 0 +BBX 12 12 3 0 +BITMAP +0400 +27E0 +E420 +2440 +2080 +2080 +2080 +2100 +2100 +2100 +2130 +F930 +ENDCHAR +STARTCHAR C040 +ENCODING 9369 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 14 11 3 0 +BITMAP +2380 +E440 +2440 +2440 +2280 +2380 +2440 +2440 +2440 +244C +FB8C +ENDCHAR +STARTCHAR C040 +ENCODING 9370 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 13 11 3 0 +BITMAP +2380 +E280 +2440 +2440 +2440 +2440 +23C0 +2040 +2080 +2498 +FB18 +ENDCHAR +STARTCHAR C040 +ENCODING 9371 +SWIDTH 1140 0 +DWIDTH 19 0 +BBX 14 11 3 0 +BITMAP +71C0 +8940 +8A20 +8A20 +0A20 +1220 +1220 +2220 +4A20 +494C +F9CC +ENDCHAR +STARTCHAR C109 +ENCODING 9372 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +838080 +844080 +804080 +83C080 +844080 +844080 +43E100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9373 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +160400 +220200 +420100 +420100 +820080 +83C080 +822080 +822080 +822080 +822080 +822080 +43C100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9374 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +81C080 +822080 +820080 +820080 +820080 +822080 +41C100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9375 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +10C400 +204200 +404100 +404100 +804080 +83C080 +844080 +844080 +844080 +844080 +844080 +43E100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9376 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +81C080 +822080 +83E080 +820080 +820080 +822080 +41C100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9377 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +10E400 +212200 +410100 +410100 +810080 +83C080 +810080 +810080 +810080 +810080 +810080 +438100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9378 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 16 1 -4 +BITMAP +100400 +200200 +400100 +400100 +800080 +81F080 +822080 +822080 +822080 +83C080 +820080 +43E100 +441100 +241200 +141400 +03E000 +ENDCHAR +STARTCHAR C109 +ENCODING 9379 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +160400 +220200 +420100 +420100 +820080 +83C080 +822080 +822080 +822080 +822080 +822080 +477100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR 0x24A4 +ENCODING 9380 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +218200 +418100 +400100 +800080 +818080 +808080 +808080 +808080 +808080 +808080 +41C100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR 0x24A5 +ENCODING 9381 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +20C200 +40C100 +400100 +800080 +80C080 +804080 +804080 +804080 +804080 +804080 +404100 +404100 +224200 +138400 +ENDCHAR +STARTCHAR C109 +ENCODING 9382 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +160400 +220200 +420100 +420100 +820080 +82F080 +824080 +828080 +838080 +82C080 +824080 +477100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9383 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +118400 +208200 +408100 +408100 +808080 +808080 +808080 +808080 +808080 +808080 +808080 +41C100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9384 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +9F7080 +888880 +888880 +888880 +888880 +888880 +5DDD00 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9385 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +87C080 +822080 +822080 +822080 +822080 +822080 +477100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9386 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +81C080 +822080 +822080 +822080 +822080 +822080 +41C100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9387 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +87C080 +822080 +822080 +822080 +822080 +822080 +43C100 +420100 +220200 +170400 +ENDCHAR +STARTCHAR C109 +ENCODING 9388 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +83C080 +844080 +844080 +844080 +844080 +844080 +43C100 +404100 +204200 +10E400 +ENDCHAR +STARTCHAR C109 +ENCODING 9389 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +834080 +81A080 +810080 +810080 +810080 +810080 +43C100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9390 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +81E080 +822080 +820080 +81C080 +802080 +822080 +43C100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9391 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +410100 +410100 +830080 +87C080 +810080 +810080 +810080 +812080 +812080 +40C100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9392 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +866080 +822080 +822080 +822080 +822080 +822080 +41F100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9393 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +8E7080 +824080 +824080 +824080 +818080 +818080 +418100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C119 +ENCODING 9394 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +9DDC80 +849080 +855080 +855080 +855080 +836080 +422100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9395 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +8E7080 +824080 +818080 +818080 +818080 +824080 +4E7100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C109 +ENCODING 9396 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +873880 +812080 +812080 +812080 +80C080 +80C080 +40C100 +408100 +248200 +170400 +ENDCHAR +STARTCHAR C109 +ENCODING 9397 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 15 1 -3 +BITMAP +100400 +200200 +400100 +400100 +800080 +83E080 +824080 +824080 +808080 +812080 +812080 +43E100 +400100 +200200 +100400 +ENDCHAR +STARTCHAR C040 +ENCODING 9398 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +408100 +408100 +814080 +814080 +814080 +822080 +822080 +83E080 +841080 +441100 +5E3D00 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9399 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +5FE100 +441100 +840880 +840880 +841080 +87E080 +841080 +840880 +840880 +441100 +5FE100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9400 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +41E900 +421900 +840880 +880880 +880080 +880080 +880080 +880880 +840880 +421100 +41E100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9401 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +5FC100 +443100 +841080 +840880 +840880 +840880 +840880 +840880 +841080 +443100 +5FC100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9402 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +5FF100 +441100 +841080 +845080 +844080 +87C080 +844880 +844880 +841080 +441100 +5FF100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9403 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +4FF900 +420900 +820880 +822880 +822080 +83E080 +822080 +822080 +820080 +420100 +4F8100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9404 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +43D100 +443100 +881080 +901080 +900080 +900080 +907880 +901080 +881080 +441100 +43F100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9405 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +5F7D00 +441100 +841080 +841080 +841080 +87F080 +841080 +841080 +841080 +441100 +5F7D00 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9406 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +43E100 +408100 +808080 +808080 +808080 +808080 +808080 +808080 +808080 +408100 +43E100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9407 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +41F100 +404100 +804080 +804080 +804080 +804080 +804080 +804080 +804080 +424100 +438100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9408 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +5F3D00 +441100 +842080 +844080 +848080 +85C080 +864080 +842080 +842080 +441100 +5F3D00 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9409 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +47C100 +410100 +810080 +810080 +810080 +810080 +810880 +810880 +810880 +411900 +47F900 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9410 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +5C1D00 +4C1900 +8C1880 +8A2880 +8A2880 +8A4880 +894880 +894880 +888880 +488900 +5C9D00 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9411 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +5C7D00 +461100 +861080 +851080 +851080 +849080 +845080 +845080 +843080 +443100 +5F1100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9412 +SWIDTH 2100 0 +DWIDTH 35 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +43C100 +442100 +881080 +900880 +900880 +900880 +900880 +900880 +881080 +442100 +43C100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9413 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +4FF100 +421900 +820880 +820880 +821880 +83F080 +820080 +820080 +820080 +420100 +4F8100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9414 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +43C100 +442100 +881080 +900880 +900880 +900880 +900880 +900880 +8B9080 +466100 +43C100 +204A00 +183C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9415 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +4FE100 +421100 +820880 +820880 +821080 +83E080 +823080 +821080 +821080 +421100 +4F8F00 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9416 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +43E100 +442100 +842080 +840080 +820080 +818080 +804080 +802080 +842080 +442100 +47C100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9417 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +4FF900 +488900 +888880 +888880 +808080 +808080 +808080 +808080 +808080 +408100 +43E100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9418 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +5F7D00 +441100 +841080 +841080 +841080 +841080 +841080 +841080 +841080 +422100 +41C100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9419 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +5E3D00 +441100 +841080 +822080 +822080 +822080 +814080 +814080 +814080 +408100 +408100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9420 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +788F00 +908480 +908480 +914480 +894880 +894880 +894880 +8A2880 +463100 +463100 +241200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9421 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +5E7900 +422100 +824080 +814080 +818080 +808080 +814080 +834080 +822080 +441100 +5E3D00 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9422 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +5E3D00 +441100 +822080 +822080 +814080 +81C080 +808080 +808080 +808080 +408100 +43E100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9423 +SWIDTH 2100 0 +DWIDTH 35 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +47F100 +462100 +842080 +844080 +804080 +808080 +811080 +811080 +821080 +423100 +47F100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9424 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +838080 +844080 +804080 +83C080 +844080 +844080 +83E080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9425 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +230200 +410100 +410100 +810080 +810080 +81E080 +811080 +811080 +811080 +811080 +411100 +41E100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9426 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +81C080 +822080 +820080 +820080 +820080 +822080 +81C080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9427 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +20C200 +404100 +404100 +804080 +804080 +83C080 +844080 +844080 +844080 +844080 +444100 +43E100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9428 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +81C080 +822080 +83E080 +820080 +820080 +822080 +81C080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9429 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +20E200 +412100 +410100 +810080 +810080 +83C080 +810080 +810080 +810080 +810080 +410100 +438100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9430 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +41F100 +422100 +822080 +822080 +83C080 +820080 +83E080 +841080 +841080 +441100 +43E100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9431 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +260200 +420100 +420100 +820080 +820080 +83C080 +822080 +822080 +822080 +822080 +422100 +477100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR 0x24D8 +ENCODING 9432 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +418100 +418100 +800080 +800080 +818080 +808080 +808080 +808080 +808080 +408100 +41C100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9433 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +20C200 +40C100 +400100 +800080 +80C080 +804080 +804080 +804080 +804080 +804080 +404100 +424100 +238200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9434 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +260200 +420100 +420100 +820080 +820080 +82F080 +824080 +828080 +838080 +82C080 +424100 +477100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9435 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +218200 +408100 +408100 +808080 +808080 +808080 +808080 +808080 +808080 +808080 +408100 +41C100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9436 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +9F7080 +888880 +888880 +888880 +888880 +888880 +9DDC80 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9437 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +87C080 +822080 +822080 +822080 +822080 +822080 +877080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9438 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +81C080 +822080 +822080 +822080 +822080 +822080 +81C080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9439 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +47C100 +822080 +822080 +822080 +822080 +822080 +83C080 +820080 +420100 +470100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9440 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +43C100 +844080 +844080 +844080 +844080 +844080 +83C080 +804080 +404100 +40E100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9441 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +834080 +81A080 +810080 +810080 +810080 +810080 +83C080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9442 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +81E080 +822080 +820080 +81C080 +802080 +822080 +83C080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9443 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +410100 +410100 +830080 +87C080 +810080 +810080 +810080 +812080 +812080 +40C100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9444 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +866080 +822080 +822080 +822080 +822080 +822080 +81F080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9445 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +873880 +812080 +812080 +812080 +80C080 +80C080 +80C080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9446 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +9DDC80 +849080 +855080 +855080 +855080 +836080 +822080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9447 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +8E7080 +824080 +818080 +818080 +818080 +824080 +8E7080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9448 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +473900 +812080 +812080 +812080 +80C080 +80C080 +80C080 +808080 +448100 +470100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9449 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +400100 +400100 +83E080 +824080 +824080 +808080 +812080 +812080 +83E080 +400100 +400100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR C040 +ENCODING 9450 +SWIDTH 1080 0 +DWIDTH 18 0 +BBX 17 17 1 -3 +BITMAP +07F000 +180C00 +200200 +41C100 +414100 +822080 +822080 +822080 +822080 +822080 +822080 +822080 +414100 +41C100 +200200 +180C00 +07F000 +ENDCHAR +STARTCHAR char9632 +ENCODING 9632 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +FF80 +FF80 +FF80 +FF80 +FF80 +FF80 +FF80 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9633 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9634 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +7F00 +8080 +8080 +8080 +8080 +8080 +8080 +8080 +7F00 +ENDCHAR +STARTCHAR char9632 +ENCODING 9635 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +8080 +BE80 +BE80 +BE80 +BE80 +BE80 +8080 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9636 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +8080 +FF80 +8080 +FF80 +8080 +FF80 +8080 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9637 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +AA80 +AA80 +AA80 +AA80 +AA80 +AA80 +AA80 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9638 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +AA80 +FF80 +AA80 +FF80 +AA80 +FF80 +AA80 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9639 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +9280 +C980 +A480 +9280 +C980 +A480 +9280 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9640 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +A480 +C980 +9280 +A480 +C980 +9280 +A480 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9641 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +D580 +AA80 +D580 +AA80 +D580 +AA80 +D580 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9642 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 3 3 +BITMAP +F8 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR char9632 +ENCODING 9643 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 3 3 +BITMAP +F8 +88 +88 +88 +F8 +ENDCHAR +STARTCHAR char9632 +ENCODING 9644 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 5 1 3 +BITMAP +FFC0 +FFC0 +FFC0 +FFC0 +FFC0 +ENDCHAR +STARTCHAR char9632 +ENCODING 9645 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 5 1 3 +BITMAP +FFC0 +8040 +8040 +8040 +FFC0 +ENDCHAR +STARTCHAR char9632 +ENCODING 9646 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 10 1 0 +BITMAP +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR char9632 +ENCODING 9647 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 10 1 0 +BITMAP +F8 +88 +88 +88 +88 +88 +88 +88 +88 +F8 +ENDCHAR +STARTCHAR char9632 +ENCODING 9648 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 5 1 3 +BITMAP +1FF0 +3FE0 +7FE0 +7FC0 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9649 +SWIDTH 780 0 +DWIDTH 13 0 +BBX 12 5 1 3 +BITMAP +1FF0 +2010 +4020 +8040 +FF80 +ENDCHAR +STARTCHAR char9650 +ENCODING 9650 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 10 1 1 +BITMAP +0800 +0800 +1C00 +1C00 +3E00 +3E00 +7F00 +7F00 +FF80 +FF80 +ENDCHAR +STARTCHAR char9650 +ENCODING 9651 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 10 1 1 +BITMAP +0800 +0800 +1400 +1400 +2200 +2200 +4100 +4100 +8080 +FF80 +ENDCHAR +STARTCHAR char9650 +ENCODING 9652 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 2 +BITMAP +10 +38 +38 +7C +7C +FE +FE +ENDCHAR +STARTCHAR char9650 +ENCODING 9653 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 2 +BITMAP +10 +28 +28 +44 +44 +82 +FE +ENDCHAR +STARTCHAR char9650 +ENCODING 9654 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 9 1 1 +BITMAP +C000 +F000 +FC00 +FF00 +FFC0 +FF00 +FC00 +F000 +C000 +ENDCHAR +STARTCHAR char9650 +ENCODING 9655 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 9 1 1 +BITMAP +C000 +B000 +8C00 +8300 +80C0 +8300 +8C00 +B000 +C000 +ENDCHAR +STARTCHAR char9650 +ENCODING 9656 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 2 +BITMAP +C0 +F0 +FC +FE +FC +F0 +C0 +ENDCHAR +STARTCHAR char9650 +ENCODING 9657 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 2 +BITMAP +C0 +B0 +8C +82 +8C +B0 +C0 +ENDCHAR +STARTCHAR char9650 +ENCODING 9658 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 5 1 3 +BITMAP +F000 +FF00 +FFC0 +FF00 +F000 +ENDCHAR +STARTCHAR char9650 +ENCODING 9659 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 5 1 3 +BITMAP +F000 +8F00 +80C0 +8F00 +F000 +ENDCHAR +STARTCHAR char9650 +ENCODING 9660 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 10 1 1 +BITMAP +FF80 +FF80 +7F00 +7F00 +3E00 +3E00 +1C00 +1C00 +0800 +0800 +ENDCHAR +STARTCHAR char9650 +ENCODING 9661 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 10 1 1 +BITMAP +FF80 +8080 +4100 +4100 +2200 +2200 +1400 +1400 +0800 +0800 +ENDCHAR +STARTCHAR char9650 +ENCODING 9662 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 2 +BITMAP +FE +FE +7C +7C +38 +38 +10 +ENDCHAR +STARTCHAR char9650 +ENCODING 9663 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 2 +BITMAP +FE +82 +44 +44 +28 +28 +10 +ENDCHAR +STARTCHAR char9650 +ENCODING 9664 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 9 1 1 +BITMAP +00C0 +03C0 +0FC0 +3FC0 +FFC0 +3FC0 +0FC0 +03C0 +00C0 +ENDCHAR +STARTCHAR char9650 +ENCODING 9665 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 9 1 1 +BITMAP +00C0 +0340 +0C40 +3040 +C040 +3040 +0C40 +0340 +00C0 +ENDCHAR +STARTCHAR char9650 +ENCODING 9666 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 2 +BITMAP +06 +1E +7E +FE +7E +1E +06 +ENDCHAR +STARTCHAR char9650 +ENCODING 9667 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 2 +BITMAP +06 +1A +62 +82 +62 +1A +06 +ENDCHAR +STARTCHAR char9650 +ENCODING 9668 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 5 1 3 +BITMAP +03C0 +3FC0 +FFC0 +3FC0 +03C0 +ENDCHAR +STARTCHAR char9650 +ENCODING 9669 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 5 1 3 +BITMAP +03C0 +3C40 +C040 +3C40 +03C0 +ENDCHAR +STARTCHAR char9670 +ENCODING 9670 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +0800 +1C00 +3E00 +7F00 +FF80 +7F00 +3E00 +1C00 +0800 +ENDCHAR +STARTCHAR char9670 +ENCODING 9671 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +0800 +1400 +2200 +4100 +8080 +4100 +2200 +1400 +0800 +ENDCHAR +STARTCHAR char9670 +ENCODING 9672 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +0800 +1400 +2A00 +5D00 +BE80 +5D00 +2A00 +1400 +0800 +ENDCHAR +STARTCHAR char9670 +ENCODING 9673 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +3E00 +4100 +9C80 +BE80 +BE80 +BE80 +9C80 +4100 +3E00 +ENDCHAR +STARTCHAR char9670 +ENCODING 9674 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 12 1 0 +BITMAP +10 +28 +28 +44 +44 +82 +82 +44 +44 +28 +28 +10 +ENDCHAR +STARTCHAR char9670 +ENCODING 9675 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +3E00 +4100 +8080 +8080 +8080 +8080 +8080 +4100 +3E00 +ENDCHAR +STARTCHAR char9670 +ENCODING 9676 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +3600 +0000 +8080 +8080 +0000 +8080 +8080 +0000 +3600 +ENDCHAR +STARTCHAR char9670 +ENCODING 9677 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +3E00 +6B00 +AA80 +AA80 +AA80 +AA80 +AA80 +6B00 +3E00 +ENDCHAR +STARTCHAR char9670 +ENCODING 9678 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +3E00 +4100 +9C80 +A280 +A280 +A280 +9C80 +4100 +3E00 +ENDCHAR +STARTCHAR char9670 +ENCODING 9679 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +3E00 +7F00 +FF80 +FF80 +FF80 +FF80 +FF80 +7F00 +3E00 +ENDCHAR +STARTCHAR char9670 +ENCODING 9680 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +3E00 +7100 +F080 +F080 +F080 +F080 +F080 +7100 +3E00 +ENDCHAR +STARTCHAR char9670 +ENCODING 9681 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +3E00 +4700 +8780 +8780 +8780 +8780 +8780 +4700 +3E00 +ENDCHAR +STARTCHAR char9670 +ENCODING 9682 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +3E00 +7F00 +FF80 +FF80 +8080 +8080 +8080 +4100 +3E00 +ENDCHAR +STARTCHAR char9670 +ENCODING 9683 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +3E00 +4100 +8080 +8080 +8080 +FF80 +FF80 +7F00 +3E00 +ENDCHAR +STARTCHAR char9670 +ENCODING 9684 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +3E00 +4F00 +8F80 +8F80 +8F80 +8080 +8080 +4100 +3E00 +ENDCHAR +STARTCHAR char9670 +ENCODING 9685 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +3E00 +4700 +8780 +8780 +8780 +FF80 +FF80 +7F00 +3E00 +ENDCHAR +STARTCHAR char9670 +ENCODING 9686 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 9 1 1 +BITMAP +30 +70 +F0 +F0 +F0 +F0 +F0 +70 +30 +ENDCHAR +STARTCHAR char9670 +ENCODING 9687 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 4 9 1 1 +BITMAP +C0 +E0 +F0 +F0 +F0 +F0 +F0 +E0 +C0 +ENDCHAR +STARTCHAR char9632 +ENCODING 9688 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +FF80 +E380 +C180 +C180 +C180 +E380 +FF80 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9689 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +E380 +DD80 +BE80 +BE80 +BE80 +DD80 +E380 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9690 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 5 1 0 +BITMAP +FF80 +E380 +DD80 +BE80 +BE80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9691 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 5 1 0 +BITMAP +BE80 +BE80 +DD80 +E380 +FF80 +ENDCHAR +STARTCHAR char9670 +ENCODING 9692 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +38 +40 +80 +80 +80 +ENDCHAR +STARTCHAR char9670 +ENCODING 9693 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 0 0 +BITMAP +E0 +10 +08 +08 +08 +ENDCHAR +STARTCHAR char9670 +ENCODING 9694 +SWIDTH 360 0 +DWIDTH 6 0 +BBX 5 5 0 0 +BITMAP +08 +08 +08 +10 +E0 +ENDCHAR +STARTCHAR char9670 +ENCODING 9695 +SWIDTH 300 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +80 +80 +80 +40 +38 +ENDCHAR +STARTCHAR char9670 +ENCODING 9696 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 5 1 -1 +BITMAP +3E00 +4100 +8080 +8080 +8080 +ENDCHAR +STARTCHAR char9670 +ENCODING 9697 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 5 1 0 +BITMAP +8080 +8080 +8080 +4100 +3E00 +ENDCHAR +STARTCHAR char9632 +ENCODING 9698 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +0080 +0180 +0380 +0780 +0F80 +1F80 +3F80 +7F80 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9699 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +8000 +C000 +E000 +F000 +F800 +FC00 +FE00 +FF00 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9700 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +FF00 +FE00 +FC00 +F800 +F000 +E000 +C000 +8000 +ENDCHAR +STARTCHAR char9632 +ENCODING 9701 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +7F80 +3F80 +1F80 +0F80 +0780 +0380 +0180 +0080 +ENDCHAR +STARTCHAR char9670 +ENCODING 9702 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 7 7 1 2 +BITMAP +38 +44 +82 +82 +82 +44 +38 +ENDCHAR +STARTCHAR char9632 +ENCODING 9703 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +F080 +F080 +F080 +F080 +F080 +F080 +F080 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9704 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +8780 +8780 +8780 +8780 +8780 +8780 +8780 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9705 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +FF80 +FE80 +FC80 +F880 +F080 +E080 +C080 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9706 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +8180 +8380 +8780 +8F80 +9F80 +BF80 +FF80 +FF80 +ENDCHAR +STARTCHAR char9632 +ENCODING 9707 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 9 1 1 +BITMAP +FF80 +8880 +8880 +8880 +8880 +8880 +8880 +8880 +FF80 +ENDCHAR +STARTCHAR char9650 +ENCODING 9708 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 10 1 1 +BITMAP +0800 +0800 +1400 +1400 +2200 +2A00 +5D00 +4900 +8080 +FF80 +ENDCHAR +STARTCHAR char9650 +ENCODING 9709 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 10 1 1 +BITMAP +0800 +0800 +1C00 +1C00 +3A00 +3A00 +7900 +7900 +F880 +FF80 +ENDCHAR +STARTCHAR char9650 +ENCODING 9710 +SWIDTH 600 0 +DWIDTH 10 0 +BBX 9 10 1 1 +BITMAP +0800 +0800 +1C00 +1C00 +2E00 +2E00 +4F00 +4F00 +8F80 +FF80 +ENDCHAR +STARTCHAR char9670 +ENCODING 9711 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 10 10 1 0 +BITMAP +1E00 +6180 +4080 +8040 +8040 +8040 +8040 +4080 +6180 +1E00 +ENDCHAR +STARTCHAR char10049 +ENCODING 10049 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 11 11 2 1 +BITMAP +1700 +2880 +4540 +B520 +8A40 +B5A0 +4A20 +95A0 +5440 +2280 +1D00 +ENDCHAR +STARTCHAR uni2800 +ENCODING 10240 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR uni2801 +ENCODING 10241 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 2 1 9 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR uni2802 +ENCODING 10242 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 2 1 6 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR uni2803 +ENCODING 10243 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 5 1 6 +BITMAP +C0 +C0 +00 +C0 +C0 +ENDCHAR +STARTCHAR uni2804 +ENCODING 10244 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 2 1 3 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR uni2805 +ENCODING 10245 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 8 1 3 +BITMAP +C0 +C0 +00 +00 +00 +00 +C0 +C0 +ENDCHAR +STARTCHAR uni2806 +ENCODING 10246 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 5 1 3 +BITMAP +C0 +C0 +00 +C0 +C0 +ENDCHAR +STARTCHAR uni2807 +ENCODING 10247 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 8 1 3 +BITMAP +C0 +C0 +00 +C0 +C0 +00 +C0 +C0 +ENDCHAR +STARTCHAR uni2808 +ENCODING 10248 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 2 4 9 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR uni2809 +ENCODING 10249 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 2 1 9 +BITMAP +D8 +D8 +ENDCHAR +STARTCHAR uni280A +ENCODING 10250 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 6 +BITMAP +18 +18 +00 +C0 +C0 +ENDCHAR +STARTCHAR uni280B +ENCODING 10251 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 6 +BITMAP +D8 +D8 +00 +C0 +C0 +ENDCHAR +STARTCHAR uni280C +ENCODING 10252 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 +BITMAP +18 +18 +00 +00 +00 +00 +C0 +C0 +ENDCHAR +STARTCHAR uni280D +ENCODING 10253 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 +BITMAP +D8 +D8 +00 +00 +00 +00 +C0 +C0 +ENDCHAR +STARTCHAR uni280E +ENCODING 10254 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 +BITMAP +18 +18 +00 +C0 +C0 +00 +C0 +C0 +ENDCHAR +STARTCHAR uni280F +ENCODING 10255 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 +BITMAP +D8 +D8 +00 +C0 +C0 +00 +C0 +C0 +ENDCHAR +STARTCHAR uni2810 +ENCODING 10256 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 2 4 6 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR uni2811 +ENCODING 10257 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 6 +BITMAP +C0 +C0 +00 +18 +18 +ENDCHAR +STARTCHAR uni2812 +ENCODING 10258 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 2 1 6 +BITMAP +D8 +D8 +ENDCHAR +STARTCHAR uni2813 +ENCODING 10259 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 6 +BITMAP +C0 +C0 +00 +D8 +D8 +ENDCHAR +STARTCHAR uni2814 +ENCODING 10260 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 3 BITMAP -02 -02 -02 -02 -02 -FE -82 -82 -82 -82 -82 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR char9281 -ENCODING 9282 +STARTCHAR uni2815 +ENCODING 10261 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 11 1 1 +BBX 5 8 1 3 BITMAP -82 -82 -82 -82 -82 -FE -10 -10 -10 -10 -10 +C0 +C0 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR char9281 -ENCODING 9283 +STARTCHAR uni2816 +ENCODING 10262 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 11 1 1 +BBX 5 5 1 3 BITMAP -FE -92 -92 -92 -10 -10 -10 -92 -92 -92 -FE +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR char9284 -ENCODING 9284 +STARTCHAR uni2817 +ENCODING 10263 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 5 1 7 +BBX 5 8 1 3 BITMAP -C6 -AA -92 -AA -C6 +C0 +C0 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR char9285 -ENCODING 9285 +STARTCHAR uni2818 +ENCODING 10264 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 9 1 2 +BBX 2 5 4 6 BITMAP -0E -CE -CE C0 C0 +00 +C0 C0 -CE -CE -0E ENDCHAR -STARTCHAR char9285 -ENCODING 9286 +STARTCHAR uni2819 +ENCODING 10265 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 11 1 1 +BBX 5 5 1 6 BITMAP -06 -06 -06 -16 -16 -10 -D0 -D0 +D8 +D8 +00 +18 +18 +ENDCHAR +STARTCHAR uni281A +ENCODING 10266 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 6 +BITMAP +18 +18 +00 +D8 +D8 +ENDCHAR +STARTCHAR uni281B +ENCODING 10267 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 6 +BITMAP +D8 +D8 +00 +D8 +D8 +ENDCHAR +STARTCHAR uni281C +ENCODING 10268 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 +BITMAP +18 +18 +00 +18 +18 +00 +C0 C0 +ENDCHAR +STARTCHAR uni281D +ENCODING 10269 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 +BITMAP +D8 +D8 +00 +18 +18 +00 C0 C0 ENDCHAR -STARTCHAR char9287 -ENCODING 9287 +STARTCHAR uni281E +ENCODING 10270 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 8 1 2 +BBX 5 8 1 3 BITMAP -0E -0E -AE -AE -AE -A0 -A0 -A0 +18 +18 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR char9285 -ENCODING 9288 +STARTCHAR uni281F +ENCODING 10271 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 5 1 4 +BBX 5 8 1 3 BITMAP -DA -DA -DA -DA -DA +D8 +D8 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C047 -ENCODING 9289 +STARTCHAR uni2820 +ENCODING 10272 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 12 1 0 +BBX 2 2 4 3 BITMAP -90 -90 -48 -48 -48 -48 -24 -24 -24 -24 -12 -12 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9312 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2821 +ENCODING 10273 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -200200 -408100 -438100 -808080 -808080 -808080 -808080 -808080 -808080 -808080 -408100 -43E100 -200200 -180C00 -07F000 +C0 +C0 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9313 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2822 +ENCODING 10274 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 3 BITMAP -07F000 -180C00 -200200 -41C100 -422100 -822080 -822080 -802080 -804080 -804080 -808080 -812080 -412100 -43E100 -200200 -180C00 -07F000 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9314 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2823 +ENCODING 10275 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -200200 -41C100 -422100 -822080 -802080 -802080 -80C080 -802080 -802080 -822080 -422100 -41C100 -200200 -180C00 -07F000 +C0 +C0 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9315 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2824 +ENCODING 10276 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 2 1 3 BITMAP -07F000 -180C00 -200200 -40C100 -40C100 -814080 -814080 -824080 -864080 -87F080 -804080 -804080 -404100 -41F100 -200200 -180C00 -07F000 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9316 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2825 +ENCODING 10277 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -200200 -422100 -43C100 -820080 -820080 -83C080 -832080 -802080 -802080 -822080 -424100 -418100 -200200 -180C00 -07F000 +C0 +C0 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9317 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2826 +ENCODING 10278 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 3 BITMAP -07F000 -180C00 -200200 -40C100 -412100 -810080 -820080 -83C080 -822080 -822080 -822080 -822080 -414100 -41C100 -200200 -180C00 -07F000 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9318 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2827 +ENCODING 10279 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -220200 -43F100 -421100 -822080 -804080 -804080 -804080 -808080 -808080 -808080 -408100 -408100 -200200 -180C00 -07F000 +C0 +C0 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9319 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2828 +ENCODING 10280 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 8 4 3 BITMAP -07F000 -180C00 -200200 -41C100 -422100 -822080 -822080 -814080 -81C080 -822080 -822080 -822080 -422100 -41C100 -200200 -180C00 -07F000 +C0 +C0 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9320 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2829 +ENCODING 10281 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -200200 -41C100 -414100 -822080 -822080 -822080 -822080 -81E080 -802080 -804080 -424100 -418100 -200200 -180C00 -07F000 +D8 +D8 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9321 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni282A +ENCODING 10282 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -200200 -447100 -5C5100 -848880 -848880 -848880 -848880 -848880 -848880 -848880 -445100 -5F7100 -200200 -180C00 -07F000 +18 +18 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9322 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni282B +ENCODING 10283 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -200200 -441100 -5C7100 -841080 -841080 -841080 -841080 -841080 -841080 -841080 -441100 -5F7D00 -200200 -180C00 -07F000 +D8 +D8 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9323 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni282C +ENCODING 10284 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -200200 -447100 -5C8900 -848880 -848880 -840880 -841080 -841080 -842080 -844880 -444900 -5FF900 -200200 -180C00 -07F000 +18 +18 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9324 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni282D +ENCODING 10285 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -200200 -447100 -5C8900 -848880 -840880 -840880 -843080 -840880 -840880 -848880 -448900 -5F7100 -200200 -180C00 -07F000 +D8 +D8 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9325 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni282E +ENCODING 10286 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -200200 -443100 -5C3100 -845080 -845080 -849080 -859080 -85FC80 -841080 -841080 -441100 -5F7D00 -200200 -180C00 -07F000 +18 +18 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9326 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni282F +ENCODING 10287 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -200200 -448900 -5CF100 -848080 -848080 -84F080 -84C880 -840880 -840880 -848880 -449100 -5F6100 -200200 -180C00 -07F000 +D8 +D8 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9327 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2830 +ENCODING 10288 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 5 4 3 BITMAP -07F000 -180C00 -200200 -443100 -5C4900 -844080 -848080 -84F080 -848880 -848880 -848880 -848880 -445100 -5F7100 -200200 -180C00 -07F000 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9328 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2831 +ENCODING 10289 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -208200 -44FD00 -5C8500 -848880 -841080 -841080 -841080 -842080 -842080 -842080 -442100 -5F2100 -200200 -180C00 -07F000 +C0 +C0 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9329 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2832 +ENCODING 10290 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 3 BITMAP -07F000 -180C00 -200200 -447100 -5C8900 -848880 -848880 -845080 -847080 -848880 -848880 -848880 -448900 -5F7100 -200200 -180C00 -07F000 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9330 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2833 +ENCODING 10291 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -07F000 -180C00 -200200 -447100 -5C5100 -848880 -848880 -848880 -848880 -847880 -840880 -841080 -449100 -5F6100 -200200 -180C00 -07F000 +C0 +C0 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9331 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2834 +ENCODING 10292 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 3 BITMAP -07F000 -180C00 -200200 -4E3900 -512900 -914480 -914480 -814480 -824480 -824480 -844480 -894480 -492900 -5F3900 -200200 -180C00 -07F000 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9332 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2835 +ENCODING 10293 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -100400 -208200 -438100 -408100 -808080 -808080 -808080 -808080 -808080 -808080 -808080 -43E100 -400100 -200200 -100400 +C0 +C0 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9333 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2836 +ENCODING 10294 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 3 BITMAP -100400 -21C200 -422100 -422100 -822080 -802080 -804080 -804080 -808080 -812080 -812080 -43E100 -400100 -200200 -100400 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9334 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2837 +ENCODING 10295 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -100400 -21C200 -422100 -422100 -802080 -802080 -80C080 -802080 -802080 -822080 -822080 -41C100 -400100 -200200 -100400 +C0 +C0 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9335 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2838 +ENCODING 10296 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 8 4 3 BITMAP -100400 -20C200 -40C100 -414100 -814080 -824080 -864080 -87F080 -804080 -804080 -804080 -41F100 -400100 -200200 -100400 +C0 +C0 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9336 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2839 +ENCODING 10297 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -100400 -222200 -43C100 -420100 -820080 -83C080 -832080 -802080 -802080 -822080 -824080 -418100 -400100 -200200 -100400 +D8 +D8 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9337 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni283A +ENCODING 10298 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -100400 -20C200 -412100 -410100 -820080 -83C080 -822080 -822080 -822080 -822080 -814080 -41C100 -400100 -200200 -100400 +18 +18 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9338 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni283B +ENCODING 10299 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -120400 -23F200 -421100 -422100 -804080 -804080 -804080 -808080 -808080 -808080 -808080 -408100 -400100 -200200 -100400 +D8 +D8 +00 +D8 +D8 +00 +18 +18 +ENDCHAR +STARTCHAR uni283C +ENCODING 10300 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 +BITMAP +18 +18 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9339 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni283D +ENCODING 10301 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -100400 -21C200 -422100 -422100 -822080 -814080 -81C080 -822080 -822080 -822080 -822080 -41C100 -400100 -200200 -100400 +D8 +D8 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9340 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni283E +ENCODING 10302 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -100400 -21C200 -414100 -422100 -822080 -822080 -822080 -81E080 -802080 -804080 -824080 -418100 -400100 -200200 -100400 +18 +18 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9341 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni283F +ENCODING 10303 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 3 BITMAP -100400 -247200 -5C5100 -448900 -848880 -848880 -848880 -848880 -848880 -848880 -845080 -5F7100 -400100 -200200 -100400 +D8 +D8 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR C040 -ENCODING 9342 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2840 +ENCODING 10304 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 2 1 0 BITMAP -100400 -241200 -5C7100 -441100 -841080 -841080 -841080 -841080 -841080 -841080 -841080 -5F7D00 -400100 -200200 -100400 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9343 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2841 +ENCODING 10305 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 11 1 0 BITMAP -100400 -247200 -5C8900 -448900 -848880 -840880 -841080 -841080 -842080 -844880 -844880 -5FF900 -400100 -200200 -100400 +C0 +C0 +00 +00 +00 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9344 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2842 +ENCODING 10306 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 8 1 0 BITMAP -100400 -247200 -5C8900 -448900 -840880 -840880 -843080 -840880 -840880 -848880 -848880 -5F7100 -400100 -200200 -100400 +C0 +C0 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9345 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2843 +ENCODING 10307 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 11 1 0 BITMAP -100400 -243200 -5C3100 -445100 -845080 -849080 -859080 -85F880 -841080 -841080 -841080 -5F7900 -400100 -200200 -100400 +C0 +C0 +00 +C0 +C0 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9346 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2844 +ENCODING 10308 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 5 1 0 BITMAP -100400 -248A00 -5CF100 -448100 -848080 -84F080 -84C880 -840880 -840880 -848880 -849080 -5F6100 -400100 -200200 -100400 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9347 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2845 +ENCODING 10309 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 11 1 0 BITMAP -100400 -243200 -5C4900 -444100 -848080 -84F080 -848880 -848880 -848880 -848880 -845080 -5F7100 -400100 -200200 -100400 +C0 +C0 +00 +00 +00 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9348 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2846 +ENCODING 10310 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 8 1 0 BITMAP -108400 -24FE00 -5C8500 -448900 -841080 -841080 -841080 -842080 -842080 -842080 -842080 -5F2100 -400100 -200200 -100400 +C0 +C0 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9349 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2847 +ENCODING 10311 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 11 1 0 BITMAP -100400 -247200 -5C8900 -448900 -848880 -845080 -847080 -848880 -848880 -848880 -848880 -5F7100 -400100 -200200 -100400 +C0 +C0 +00 +C0 +C0 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9350 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2848 +ENCODING 10312 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -247200 -5C5100 -448900 -848880 -848880 -848880 -847880 -840880 -841080 -849080 -5F6100 -400100 -200200 -100400 +18 +18 +00 +00 +00 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9351 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2849 +ENCODING 10313 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -2E3A00 -512900 -514500 -914480 -814480 -824480 -824480 -844480 -894480 -892880 -5F3900 -400100 -200200 -100400 +D8 +D8 +00 +00 +00 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C049 -ENCODING 9352 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 9 11 3 0 +STARTCHAR uni284A +ENCODING 10314 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -2000 -E000 -2000 -2000 -2000 -2000 -2000 -2000 -2000 -2180 -F980 +18 +18 +00 +C0 +C0 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C050 -ENCODING 9353 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 9 11 3 0 +STARTCHAR uni284B +ENCODING 10315 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -7000 -8800 -8800 -8800 -0800 -1000 -1000 -2000 -4800 -4980 -F980 +D8 +D8 +00 +C0 +C0 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C051 -ENCODING 9354 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 9 11 3 0 +STARTCHAR uni284C +ENCODING 10316 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -7000 -8800 -8800 -0800 -0800 -3000 -0800 -0800 -8800 -8980 -7180 +18 +18 +00 +00 +00 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C052 -ENCODING 9355 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 11 11 3 0 +STARTCHAR uni284D +ENCODING 10317 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -1800 -1800 -2800 -2800 -4800 -C800 -FE00 -0800 -0800 -0860 -3E60 +D8 +D8 +00 +00 +00 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C053 -ENCODING 9356 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 9 11 3 0 +STARTCHAR uni284E +ENCODING 10318 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -8800 -F000 -8000 -8000 -F000 -C800 -0800 -0800 -8800 -9180 -6180 +18 +18 +00 +C0 +C0 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C054 -ENCODING 9357 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 9 11 3 0 +STARTCHAR uni284F +ENCODING 10319 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -3000 -4800 -4000 -8000 -F000 -8800 -8800 -8800 -8800 -5180 -7180 +D8 +D8 +00 +C0 +C0 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C055 -ENCODING 9358 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 7 12 3 0 +STARTCHAR uni2850 +ENCODING 10320 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -80 -FC -84 -88 -10 -10 -10 -20 -20 -20 -26 -26 +18 +18 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C056 -ENCODING 9359 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 9 11 3 0 +STARTCHAR uni2851 +ENCODING 10321 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -7000 -8800 -8800 -8800 -5000 -7000 -8800 -8800 -8800 -8980 -7180 +C0 +C0 +00 +18 +18 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C057 -ENCODING 9360 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 8 11 3 0 +STARTCHAR uni2852 +ENCODING 10322 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -70 -50 -88 -88 -88 -88 -78 -08 -10 -93 -63 +D8 +D8 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9361 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 13 11 3 0 +STARTCHAR uni2853 +ENCODING 10323 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -2380 -E280 -2440 -2440 -2440 -2440 -2440 -2440 -2440 -2298 -FB98 +C0 +C0 +00 +D8 +D8 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9362 -SWIDTH 1200 0 -DWIDTH 20 0 -BBX 15 11 3 0 +STARTCHAR uni2854 +ENCODING 10324 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -2080 -E380 -2080 -2080 -2080 -2080 -2080 -2080 -2080 -2086 -FBE6 +18 +18 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9363 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 14 11 3 0 +STARTCHAR uni2855 +ENCODING 10325 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -2380 -E440 -2440 -2440 -2040 -2080 -2080 -2100 -2240 -224C -FFCC +C0 +C0 +00 +18 +18 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9364 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 14 11 3 0 +STARTCHAR uni2856 +ENCODING 10326 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -2380 -E440 -2440 -2040 -2040 -2180 -2040 -2040 -2440 -244C -FB8C +D8 +D8 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9365 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 14 11 3 0 +STARTCHAR uni2857 +ENCODING 10327 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -2180 -E180 -2280 -2280 -2480 -2C80 -2FC0 -2080 -2080 -208C -FBCC +C0 +C0 +00 +D8 +D8 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9366 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 13 11 3 0 +STARTCHAR uni2858 +ENCODING 10328 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -2440 -E780 -2400 -2400 -2780 -2640 -2040 -2040 -2440 -2498 -FB18 +18 +18 +00 +18 +18 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9367 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 13 11 3 0 +STARTCHAR uni2859 +ENCODING 10329 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -2180 -E240 -2200 -2400 -2780 -2440 -2440 -2440 -2440 -2298 -FB98 +D8 +D8 +00 +18 +18 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9368 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 12 12 3 0 +STARTCHAR uni285A +ENCODING 10330 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -0400 -27E0 -E420 -2440 -2080 -2080 -2080 -2100 -2100 -2100 -2130 -F930 +18 +18 +00 +D8 +D8 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9369 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 14 11 3 0 +STARTCHAR uni285B +ENCODING 10331 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -2380 -E440 -2440 -2440 -2280 -2380 -2440 -2440 -2440 -244C -FB8C +D8 +D8 +00 +D8 +D8 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9370 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 13 11 3 0 +STARTCHAR uni285C +ENCODING 10332 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -2380 -E280 -2440 -2440 -2440 -2440 -23C0 -2040 -2080 -2498 -FB18 +18 +18 +00 +18 +18 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9371 -SWIDTH 1140 0 -DWIDTH 19 0 -BBX 14 11 3 0 +STARTCHAR uni285D +ENCODING 10333 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -71C0 -8940 -8A20 -8A20 -0A20 -1220 -1220 -2220 -4A20 -494C -F9CC +D8 +D8 +00 +18 +18 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9372 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni285E +ENCODING 10334 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -838080 -844080 -804080 -83C080 -844080 -844080 -43E100 -400100 -200200 -100400 +18 +18 +00 +D8 +D8 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9373 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni285F +ENCODING 10335 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -160400 -220200 -420100 -420100 -820080 -83C080 -822080 -822080 -822080 -822080 -822080 -43C100 -400100 -200200 -100400 +D8 +D8 +00 +D8 +D8 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9374 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2860 +ENCODING 10336 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -81C080 -822080 -820080 -820080 -820080 -822080 -41C100 -400100 -200200 -100400 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9375 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2861 +ENCODING 10337 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -10C400 -204200 -404100 -404100 -804080 -83C080 -844080 -844080 -844080 -844080 -844080 -43E100 -400100 -200200 -100400 +C0 +C0 +00 +00 +00 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9376 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2862 +ENCODING 10338 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -81C080 -822080 -83E080 -820080 -820080 -822080 -41C100 -400100 -200200 -100400 +C0 +C0 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9377 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2863 +ENCODING 10339 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -10E400 -212200 -410100 -410100 -810080 -83C080 -810080 -810080 -810080 -810080 -810080 -438100 -400100 -200200 -100400 +C0 +C0 +00 +C0 +C0 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9378 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 16 1 -4 +STARTCHAR uni2864 +ENCODING 10340 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -81F080 -822080 -822080 -822080 -83C080 -820080 -43E100 -441100 -241200 -141400 -03E000 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9379 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2865 +ENCODING 10341 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -160400 -220200 -420100 -420100 -820080 -83C080 -822080 -822080 -822080 -822080 -822080 -477100 -400100 -200200 -100400 +C0 +C0 +00 +00 +00 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR 0x24A4 -ENCODING 9380 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2866 +ENCODING 10342 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -100400 -218200 -418100 -400100 -800080 -818080 -808080 -808080 -808080 -808080 -808080 -41C100 -400100 -200200 -100400 +C0 +C0 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR 0x24A5 -ENCODING 9381 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2867 +ENCODING 10343 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -20C200 -40C100 -400100 -800080 -80C080 -804080 -804080 -804080 -804080 -804080 -404100 -404100 -224200 -138400 +C0 +C0 +00 +C0 +C0 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9382 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2868 +ENCODING 10344 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -160400 -220200 -420100 -420100 -820080 -82F080 -824080 -828080 -838080 -82C080 -824080 -477100 -400100 -200200 -100400 +18 +18 +00 +00 +00 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9383 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2869 +ENCODING 10345 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -118400 -208200 -408100 -408100 -808080 -808080 -808080 -808080 -808080 -808080 -808080 -41C100 -400100 -200200 -100400 +D8 +D8 +00 +00 +00 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9384 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni286A +ENCODING 10346 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -9F7080 -888880 -888880 -888880 -888880 -888880 -5DDD00 -400100 -200200 -100400 +18 +18 +00 +C0 +C0 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9385 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni286B +ENCODING 10347 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -87C080 -822080 -822080 -822080 -822080 -822080 -477100 -400100 -200200 -100400 +D8 +D8 +00 +C0 +C0 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9386 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni286C +ENCODING 10348 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -81C080 -822080 -822080 -822080 -822080 -822080 -41C100 -400100 -200200 -100400 +18 +18 +00 +00 +00 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9387 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni286D +ENCODING 10349 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -87C080 -822080 -822080 -822080 -822080 -822080 -43C100 -420100 -220200 -170400 +D8 +D8 +00 +00 +00 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9388 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni286E +ENCODING 10350 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -83C080 -844080 -844080 -844080 -844080 -844080 -43C100 -404100 -204200 -10E400 +18 +18 +00 +C0 +C0 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9389 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni286F +ENCODING 10351 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -834080 -81A080 -810080 -810080 -810080 -810080 -43C100 -400100 -200200 -100400 +D8 +D8 +00 +C0 +C0 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9390 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2870 +ENCODING 10352 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -81E080 -822080 -820080 -81C080 -802080 -822080 -43C100 -400100 -200200 -100400 +18 +18 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9391 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2871 +ENCODING 10353 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -200200 -410100 -410100 -830080 -87C080 -810080 -810080 -810080 -812080 -812080 -40C100 -400100 -200200 -100400 +C0 +C0 +00 +18 +18 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9392 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2872 +ENCODING 10354 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -866080 -822080 -822080 -822080 -822080 -822080 -41F100 -400100 -200200 -100400 +D8 +D8 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9393 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2873 +ENCODING 10355 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -8E7080 -824080 -824080 -824080 -818080 -818080 -418100 -400100 -200200 -100400 +C0 +C0 +00 +D8 +D8 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C119 -ENCODING 9394 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2874 +ENCODING 10356 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -9DDC80 -849080 -855080 -855080 -855080 -836080 -422100 -400100 -200200 -100400 +18 +18 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9395 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2875 +ENCODING 10357 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -8E7080 -824080 -818080 -818080 -818080 -824080 -4E7100 -400100 -200200 -100400 +C0 +C0 +00 +18 +18 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9396 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2876 +ENCODING 10358 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -873880 -812080 -812080 -812080 -80C080 -80C080 -40C100 -408100 -248200 -170400 +D8 +D8 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C109 -ENCODING 9397 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 15 1 -3 +STARTCHAR uni2877 +ENCODING 10359 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -100400 -200200 -400100 -400100 -800080 -83E080 -824080 -824080 -808080 -812080 -812080 -43E100 -400100 -200200 -100400 +C0 +C0 +00 +D8 +D8 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9398 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2878 +ENCODING 10360 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -408100 -408100 -814080 -814080 -814080 -822080 -822080 -83E080 -841080 -441100 -5E3D00 -200200 -180C00 -07F000 +18 +18 +00 +18 +18 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9399 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2879 +ENCODING 10361 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -5FE100 -441100 -840880 -840880 -841080 -87E080 -841080 -840880 -840880 -441100 -5FE100 -200200 -180C00 -07F000 +D8 +D8 +00 +18 +18 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9400 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni287A +ENCODING 10362 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -41E900 -421900 -840880 -880880 -880080 -880080 -880080 -880880 -840880 -421100 -41E100 -200200 -180C00 -07F000 +18 +18 +00 +D8 +D8 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9401 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni287B +ENCODING 10363 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -5FC100 -443100 -841080 -840880 -840880 -840880 -840880 -840880 -841080 -443100 -5FC100 -200200 -180C00 -07F000 +D8 +D8 +00 +D8 +D8 +00 +18 +18 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9402 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni287C +ENCODING 10364 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -5FF100 -441100 -841080 -845080 -844080 -87C080 -844880 -844880 -841080 -441100 -5FF100 -200200 -180C00 -07F000 +18 +18 +00 +18 +18 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9403 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni287D +ENCODING 10365 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -4FF900 -420900 -820880 -822880 -822080 -83E080 -822080 -822080 -820080 -420100 -4F8100 -200200 -180C00 -07F000 +D8 +D8 +00 +18 +18 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9404 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni287E +ENCODING 10366 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -43D100 -443100 -881080 -901080 -900080 -900080 -907880 -901080 -881080 -441100 -43F100 -200200 -180C00 -07F000 +18 +18 +00 +D8 +D8 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9405 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni287F +ENCODING 10367 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -5F7D00 -441100 -841080 -841080 -841080 -87F080 -841080 -841080 -841080 -441100 -5F7D00 -200200 -180C00 -07F000 +D8 +D8 +00 +D8 +D8 +00 +D8 +D8 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9406 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2880 +ENCODING 10368 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 2 4 0 BITMAP -07F000 -180C00 -200200 -43E100 -408100 -808080 -808080 -808080 -808080 -808080 -808080 -808080 -408100 -43E100 -200200 -180C00 -07F000 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9407 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2881 +ENCODING 10369 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -41F100 -404100 -804080 -804080 -804080 -804080 -804080 -804080 -804080 -424100 -438100 -200200 -180C00 -07F000 +C0 +C0 +00 +00 +00 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9408 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2882 +ENCODING 10370 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -07F000 -180C00 -200200 -5F3D00 -441100 -842080 -844080 -848080 -85C080 -864080 -842080 -842080 -441100 -5F3D00 -200200 -180C00 -07F000 +C0 +C0 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9409 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2883 +ENCODING 10371 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -47C100 -410100 -810080 -810080 -810080 -810080 -810880 -810880 -810880 -411900 -47F900 -200200 -180C00 -07F000 +C0 +C0 +00 +C0 +C0 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9410 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2884 +ENCODING 10372 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 0 BITMAP -07F000 -180C00 -200200 -5C1D00 -4C1900 -8C1880 -8A2880 -8A2880 -8A4880 -894880 -894880 -888880 -488900 -5C9D00 -200200 -180C00 -07F000 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9411 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2885 +ENCODING 10373 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -5C7D00 -461100 -861080 -851080 -851080 -849080 -845080 -845080 -843080 -443100 -5F1100 -200200 -180C00 -07F000 +C0 +C0 +00 +00 +00 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9412 -SWIDTH 2100 0 -DWIDTH 35 0 -BBX 17 17 1 -3 +STARTCHAR uni2886 +ENCODING 10374 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -07F000 -180C00 -200200 -43C100 -442100 -881080 -900880 -900880 -900880 -900880 -900880 -881080 -442100 -43C100 -200200 -180C00 -07F000 +C0 +C0 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9413 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2887 +ENCODING 10375 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -4FF100 -421900 -820880 -820880 -821880 -83F080 -820080 -820080 -820080 -420100 -4F8100 -200200 -180C00 -07F000 +C0 +C0 +00 +C0 +C0 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9414 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2888 +ENCODING 10376 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 11 4 0 BITMAP -07F000 -180C00 -200200 -43C100 -442100 -881080 -900880 -900880 -900880 -900880 -900880 -8B9080 -466100 -43C100 -204A00 -183C00 -07F000 +C0 +C0 +00 +00 +00 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9415 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2889 +ENCODING 10377 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -4FE100 -421100 -820880 -820880 -821080 -83E080 -823080 -821080 -821080 -421100 -4F8F00 -200200 -180C00 -07F000 +D8 +D8 +00 +00 +00 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9416 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni288A +ENCODING 10378 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -43E100 -442100 -842080 -840080 -820080 -818080 -804080 -802080 -842080 -442100 -47C100 -200200 -180C00 -07F000 +18 +18 +00 +C0 +C0 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9417 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni288B +ENCODING 10379 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -4FF900 -488900 -888880 -888880 -808080 -808080 -808080 -808080 -808080 -408100 -43E100 -200200 -180C00 -07F000 +D8 +D8 +00 +C0 +C0 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9418 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni288C +ENCODING 10380 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -5F7D00 -441100 -841080 -841080 -841080 -841080 -841080 -841080 -841080 -422100 -41C100 -200200 -180C00 -07F000 +18 +18 +00 +00 +00 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9419 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni288D +ENCODING 10381 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -5E3D00 -441100 -841080 -822080 -822080 -822080 -814080 -814080 -814080 -408100 -408100 -200200 -180C00 -07F000 +D8 +D8 +00 +00 +00 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9420 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni288E +ENCODING 10382 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -400100 -788F00 -908480 -908480 -914480 -894880 -894880 -894880 -8A2880 -463100 -463100 -241200 -180C00 -07F000 +18 +18 +00 +C0 +C0 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9421 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni288F +ENCODING 10383 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -5E7900 -422100 -824080 -814080 -818080 -808080 -814080 -834080 -822080 -441100 -5E3D00 -200200 -180C00 -07F000 +D8 +D8 +00 +C0 +C0 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9422 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2890 +ENCODING 10384 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 8 4 0 BITMAP -07F000 -180C00 -200200 -5E3D00 -441100 -822080 -822080 -814080 -81C080 -808080 -808080 -808080 -408100 -43E100 -200200 -180C00 -07F000 +C0 +C0 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9423 -SWIDTH 2100 0 -DWIDTH 35 0 -BBX 17 17 1 -3 +STARTCHAR uni2891 +ENCODING 10385 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -47F100 -462100 -842080 -844080 -804080 -808080 -811080 -811080 -821080 -423100 -47F100 -200200 -180C00 -07F000 +C0 +C0 +00 +18 +18 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9424 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2892 +ENCODING 10386 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -838080 -844080 -804080 -83C080 -844080 -844080 -83E080 -400100 -400100 -200200 -180C00 -07F000 +D8 +D8 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9425 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2893 +ENCODING 10387 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -230200 -410100 -410100 -810080 -810080 -81E080 -811080 -811080 -811080 -811080 -411100 -41E100 -200200 -180C00 -07F000 +C0 +C0 +00 +D8 +D8 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9426 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2894 +ENCODING 10388 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -81C080 -822080 -820080 -820080 -820080 -822080 -81C080 -400100 -400100 -200200 -180C00 -07F000 +18 +18 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9427 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2895 +ENCODING 10389 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -20C200 -404100 -404100 -804080 -804080 -83C080 -844080 -844080 -844080 -844080 -444100 -43E100 -200200 -180C00 -07F000 +C0 +C0 +00 +18 +18 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9428 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2896 +ENCODING 10390 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -81C080 -822080 -83E080 -820080 -820080 -822080 -81C080 -400100 -400100 -200200 -180C00 -07F000 +D8 +D8 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9429 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2897 +ENCODING 10391 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -20E200 -412100 -410100 -810080 -810080 -83C080 -810080 -810080 -810080 -810080 -410100 -438100 -200200 -180C00 -07F000 +C0 +C0 +00 +D8 +D8 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9430 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2898 +ENCODING 10392 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 11 4 0 BITMAP -07F000 -180C00 -200200 -41F100 -422100 -822080 -822080 -83C080 -820080 -83E080 -841080 -841080 -441100 -43E100 -200200 -180C00 -07F000 +C0 +C0 +00 +C0 +C0 +00 +00 +00 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9431 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni2899 +ENCODING 10393 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -260200 -420100 -420100 -820080 -820080 -83C080 -822080 -822080 -822080 -822080 -422100 -477100 -200200 -180C00 -07F000 +D8 +D8 +00 +18 +18 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR 0x24D8 -ENCODING 9432 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni289A +ENCODING 10394 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -418100 -418100 -800080 -800080 -818080 -808080 -808080 -808080 -808080 -408100 -41C100 -200200 -180C00 -07F000 +18 +18 +00 +D8 +D8 +00 +00 +00 +00 +18 +18 +ENDCHAR +STARTCHAR uni289B +ENCODING 10395 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 +BITMAP +D8 +D8 +00 +D8 +D8 +00 +00 +00 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9433 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni289C +ENCODING 10396 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -20C200 -40C100 -400100 -800080 -80C080 -804080 -804080 -804080 -804080 -804080 -404100 -424100 -238200 -180C00 -07F000 +18 +18 +00 +18 +18 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9434 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni289D +ENCODING 10397 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -260200 -420100 -420100 -820080 -820080 -82F080 -824080 -828080 -838080 -82C080 -424100 -477100 -200200 -180C00 -07F000 +D8 +D8 +00 +18 +18 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9435 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni289E +ENCODING 10398 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -218200 -408100 -408100 -808080 -808080 -808080 -808080 -808080 -808080 -808080 -408100 -41C100 -200200 -180C00 -07F000 +18 +18 +00 +D8 +D8 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9436 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni289F +ENCODING 10399 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -9F7080 -888880 -888880 -888880 -888880 -888880 -9DDC80 -400100 -400100 -200200 -180C00 -07F000 +D8 +D8 +00 +D8 +D8 +00 +C0 +C0 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9437 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28A0 +ENCODING 10400 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 5 4 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -87C080 -822080 -822080 -822080 -822080 -822080 -877080 -400100 -400100 -200200 -180C00 -07F000 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9438 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28A1 +ENCODING 10401 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -81C080 -822080 -822080 -822080 -822080 -822080 -81C080 -400100 -400100 -200200 -180C00 -07F000 +C0 +C0 +00 +00 +00 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9439 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28A2 +ENCODING 10402 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -07F000 -180C00 -200200 -400100 -47C100 -822080 -822080 -822080 -822080 -822080 -83C080 -820080 -420100 -470100 -200200 -180C00 -07F000 +C0 +C0 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9440 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28A3 +ENCODING 10403 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -400100 -43C100 -844080 -844080 -844080 -844080 -844080 -83C080 -804080 -404100 -40E100 -200200 -180C00 -07F000 +C0 +C0 +00 +C0 +C0 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9441 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28A4 +ENCODING 10404 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -834080 -81A080 -810080 -810080 -810080 -810080 -83C080 -400100 -400100 -200200 -180C00 -07F000 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9442 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28A5 +ENCODING 10405 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -81E080 -822080 -820080 -81C080 -802080 -822080 -83C080 -400100 -400100 -200200 -180C00 -07F000 +C0 +C0 +00 +00 +00 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9443 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28A6 +ENCODING 10406 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -07F000 -180C00 -200200 -410100 -410100 -830080 -87C080 -810080 -810080 -810080 -812080 -812080 -40C100 -400100 -200200 -180C00 -07F000 +C0 +C0 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9444 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28A7 +ENCODING 10407 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -866080 -822080 -822080 -822080 -822080 -822080 -81F080 -400100 -400100 -200200 -180C00 -07F000 +C0 +C0 +00 +C0 +C0 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9445 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28A8 +ENCODING 10408 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 11 4 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -873880 -812080 -812080 -812080 -80C080 -80C080 -80C080 -400100 -400100 -200200 -180C00 -07F000 +C0 +C0 +00 +00 +00 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR C040 -ENCODING 9446 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28A9 +ENCODING 10409 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -9DDC80 -849080 -855080 -855080 -855080 -836080 -822080 -400100 -400100 -200200 -180C00 -07F000 +D8 +D8 +00 +00 +00 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9447 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28AA +ENCODING 10410 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -8E7080 -824080 -818080 -818080 -818080 -824080 -8E7080 -400100 -400100 -200200 -180C00 -07F000 +18 +18 +00 +C0 +C0 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9448 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28AB +ENCODING 10411 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -400100 -473900 -812080 -812080 -812080 -80C080 -80C080 -80C080 -808080 -448100 -470100 -200200 -180C00 -07F000 +D8 +D8 +00 +C0 +C0 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9449 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28AC +ENCODING 10412 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -400100 -400100 -83E080 -824080 -824080 -808080 -812080 -812080 -83E080 -400100 -400100 -200200 -180C00 -07F000 +18 +18 +00 +00 +00 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR C040 -ENCODING 9450 -SWIDTH 1080 0 -DWIDTH 18 0 -BBX 17 17 1 -3 +STARTCHAR uni28AD +ENCODING 10413 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -07F000 -180C00 -200200 -41C100 -414100 -822080 -822080 -822080 -822080 -822080 -822080 -822080 -414100 -41C100 -200200 -180C00 -07F000 +D8 +D8 +00 +00 +00 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9632 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28AE +ENCODING 10414 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -FF80 -FF80 -FF80 -FF80 -FF80 -FF80 -FF80 -FF80 +18 +18 +00 +C0 +C0 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9633 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28AF +ENCODING 10415 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -8080 -8080 -8080 -8080 -8080 -8080 -8080 -FF80 +D8 +D8 +00 +C0 +C0 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9634 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28B0 +ENCODING 10416 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 8 4 0 BITMAP -7F00 -8080 -8080 -8080 -8080 -8080 -8080 -8080 -7F00 +C0 +C0 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR char9632 -ENCODING 9635 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28B1 +ENCODING 10417 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -8080 -BE80 -BE80 -BE80 -BE80 -BE80 -8080 -FF80 +C0 +C0 +00 +18 +18 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9636 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28B2 +ENCODING 10418 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -FF80 -8080 -FF80 -8080 -FF80 -8080 -FF80 -8080 -FF80 +D8 +D8 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9637 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28B3 +ENCODING 10419 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -AA80 -AA80 -AA80 -AA80 -AA80 -AA80 -AA80 -FF80 +C0 +C0 +00 +D8 +D8 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9638 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28B4 +ENCODING 10420 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -FF80 -AA80 -FF80 -AA80 -FF80 -AA80 -FF80 -AA80 -FF80 +18 +18 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9639 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28B5 +ENCODING 10421 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -9280 -C980 -A480 -9280 -C980 -A480 -9280 -FF80 +C0 +C0 +00 +18 +18 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9640 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28B6 +ENCODING 10422 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -FF80 -A480 -C980 -9280 -A480 -C980 -9280 -A480 -FF80 +D8 +D8 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9641 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28B7 +ENCODING 10423 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -D580 -AA80 -D580 -AA80 -D580 -AA80 -D580 -FF80 +C0 +C0 +00 +D8 +D8 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9642 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 5 3 3 +STARTCHAR uni28B8 +ENCODING 10424 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 2 11 4 0 BITMAP -F8 -F8 -F8 -F8 -F8 +C0 +C0 +00 +C0 +C0 +00 +C0 +C0 +00 +C0 +C0 ENDCHAR -STARTCHAR char9632 -ENCODING 9643 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 5 3 3 +STARTCHAR uni28B9 +ENCODING 10425 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -F8 -88 -88 -88 -F8 +D8 +D8 +00 +18 +18 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9644 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 5 1 3 +STARTCHAR uni28BA +ENCODING 10426 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FFC0 -FFC0 -FFC0 -FFC0 -FFC0 +18 +18 +00 +D8 +D8 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9645 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 5 1 3 +STARTCHAR uni28BB +ENCODING 10427 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FFC0 -8040 -8040 -8040 -FFC0 +D8 +D8 +00 +D8 +D8 +00 +18 +18 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9646 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 10 1 0 +STARTCHAR uni28BC +ENCODING 10428 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -F8 -F8 -F8 -F8 -F8 -F8 -F8 -F8 -F8 -F8 +18 +18 +00 +18 +18 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9647 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 10 1 0 +STARTCHAR uni28BD +ENCODING 10429 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -F8 -88 -88 -88 -88 -88 -88 -88 -88 -F8 +D8 +D8 +00 +18 +18 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9648 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 5 1 3 +STARTCHAR uni28BE +ENCODING 10430 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -1FF0 -3FE0 -7FE0 -7FC0 -FF80 +18 +18 +00 +D8 +D8 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR char9632 -ENCODING 9649 -SWIDTH 780 0 -DWIDTH 13 0 -BBX 12 5 1 3 +STARTCHAR uni28BF +ENCODING 10431 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -1FF0 -2010 -4020 -8040 -FF80 +D8 +D8 +00 +D8 +D8 +00 +D8 +D8 +00 +18 +18 ENDCHAR -STARTCHAR char9650 -ENCODING 9650 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 10 1 1 +STARTCHAR uni28C0 +ENCODING 10432 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 2 1 0 BITMAP -0800 -0800 -1C00 -1C00 -3E00 -3E00 -7F00 -7F00 -FF80 -FF80 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9651 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 10 1 1 +STARTCHAR uni28C1 +ENCODING 10433 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -0800 -0800 -1400 -1400 -2200 -2200 -4100 -4100 -8080 -FF80 +C0 +C0 +00 +00 +00 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9652 +STARTCHAR uni28C2 +ENCODING 10434 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 7 1 2 +BBX 5 8 1 0 BITMAP -10 -38 -38 -7C -7C -FE -FE +C0 +C0 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9653 +STARTCHAR uni28C3 +ENCODING 10435 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 7 1 2 +BBX 5 11 1 0 BITMAP -10 -28 -28 -44 -44 -82 -FE +C0 +C0 +00 +C0 +C0 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9654 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 9 1 1 +STARTCHAR uni28C4 +ENCODING 10436 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 0 BITMAP -C000 -F000 -FC00 -FF00 -FFC0 -FF00 -FC00 -F000 -C000 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9655 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 9 1 1 +STARTCHAR uni28C5 +ENCODING 10437 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -C000 -B000 -8C00 -8300 -80C0 -8300 -8C00 -B000 -C000 +C0 +C0 +00 +00 +00 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9656 +STARTCHAR uni28C6 +ENCODING 10438 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 7 1 2 +BBX 5 8 1 0 BITMAP C0 -F0 -FC -FE -FC -F0 C0 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9657 +STARTCHAR uni28C7 +ENCODING 10439 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 7 1 2 +BBX 5 11 1 0 BITMAP C0 -B0 -8C -82 -8C -B0 C0 +00 +C0 +C0 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9658 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 5 1 3 +STARTCHAR uni28C8 +ENCODING 10440 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -F000 -FF00 -FFC0 -FF00 -F000 +18 +18 +00 +00 +00 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9659 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 5 1 3 +STARTCHAR uni28C9 +ENCODING 10441 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -F000 -8F00 -80C0 -8F00 -F000 +D8 +D8 +00 +00 +00 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9660 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 10 1 1 +STARTCHAR uni28CA +ENCODING 10442 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -FF80 -7F00 -7F00 -3E00 -3E00 -1C00 -1C00 -0800 -0800 +18 +18 +00 +C0 +C0 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9661 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 10 1 1 +STARTCHAR uni28CB +ENCODING 10443 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -8080 -4100 -4100 -2200 -2200 -1400 -1400 -0800 -0800 +D8 +D8 +00 +C0 +C0 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9662 +STARTCHAR uni28CC +ENCODING 10444 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 7 1 2 +BBX 5 11 1 0 BITMAP -FE -FE -7C -7C -38 -38 -10 +18 +18 +00 +00 +00 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9663 +STARTCHAR uni28CD +ENCODING 10445 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 7 1 2 +BBX 5 11 1 0 BITMAP -FE -82 -44 -44 -28 -28 -10 +D8 +D8 +00 +00 +00 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9664 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 9 1 1 +STARTCHAR uni28CE +ENCODING 10446 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -00C0 -03C0 -0FC0 -3FC0 -FFC0 -3FC0 -0FC0 -03C0 -00C0 +18 +18 +00 +C0 +C0 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9665 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 9 1 1 +STARTCHAR uni28CF +ENCODING 10447 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -00C0 -0340 -0C40 -3040 -C040 -3040 -0C40 -0340 -00C0 +D8 +D8 +00 +C0 +C0 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9666 +STARTCHAR uni28D0 +ENCODING 10448 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 7 1 2 +BBX 5 8 1 0 BITMAP -06 -1E -7E -FE -7E -1E -06 +18 +18 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9667 +STARTCHAR uni28D1 +ENCODING 10449 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 7 1 2 +BBX 5 11 1 0 BITMAP -06 -1A -62 -82 -62 -1A -06 +C0 +C0 +00 +18 +18 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9668 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 5 1 3 +STARTCHAR uni28D2 +ENCODING 10450 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -03C0 -3FC0 -FFC0 -3FC0 -03C0 +D8 +D8 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9669 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 5 1 3 +STARTCHAR uni28D3 +ENCODING 10451 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -03C0 -3C40 -C040 -3C40 -03C0 +C0 +C0 +00 +D8 +D8 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9670 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28D4 +ENCODING 10452 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -0800 -1C00 -3E00 -7F00 -FF80 -7F00 -3E00 -1C00 -0800 +18 +18 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9671 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28D5 +ENCODING 10453 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -0800 -1400 -2200 -4100 -8080 -4100 -2200 -1400 -0800 +C0 +C0 +00 +18 +18 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9672 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28D6 +ENCODING 10454 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -0800 -1400 -2A00 -5D00 -BE80 -5D00 -2A00 -1400 -0800 +D8 +D8 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9673 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28D7 +ENCODING 10455 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -3E00 -4100 -9C80 -BE80 -BE80 -BE80 -9C80 -4100 -3E00 +C0 +C0 +00 +D8 +D8 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9674 +STARTCHAR uni28D8 +ENCODING 10456 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 12 1 0 +BBX 5 11 1 0 BITMAP -10 -28 -28 -44 -44 -82 -82 -44 -44 -28 -28 -10 +18 +18 +00 +18 +18 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9675 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28D9 +ENCODING 10457 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -3E00 -4100 -8080 -8080 -8080 -8080 -8080 -4100 -3E00 +D8 +D8 +00 +18 +18 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9676 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28DA +ENCODING 10458 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -3600 -0000 -8080 -8080 -0000 -8080 -8080 -0000 -3600 +18 +18 +00 +D8 +D8 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9677 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28DB +ENCODING 10459 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -3E00 -6B00 -AA80 -AA80 -AA80 -AA80 -AA80 -6B00 -3E00 +D8 +D8 +00 +D8 +D8 +00 +00 +00 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9678 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28DC +ENCODING 10460 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -3E00 -4100 -9C80 -A280 -A280 -A280 -9C80 -4100 -3E00 +18 +18 +00 +18 +18 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9679 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28DD +ENCODING 10461 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -3E00 -7F00 -FF80 -FF80 -FF80 -FF80 -FF80 -7F00 -3E00 +D8 +D8 +00 +18 +18 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9680 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28DE +ENCODING 10462 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -3E00 -7100 -F080 -F080 -F080 -F080 -F080 -7100 -3E00 +18 +18 +00 +D8 +D8 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9681 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28DF +ENCODING 10463 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -3E00 -4700 -8780 -8780 -8780 -8780 -8780 -4700 -3E00 +D8 +D8 +00 +D8 +D8 +00 +C0 +C0 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9682 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28E0 +ENCODING 10464 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 0 BITMAP -3E00 -7F00 -FF80 -FF80 -8080 -8080 -8080 -4100 -3E00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9683 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28E1 +ENCODING 10465 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -3E00 -4100 -8080 -8080 -8080 -FF80 -FF80 -7F00 -3E00 +C0 +C0 +00 +00 +00 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9684 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28E2 +ENCODING 10466 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -3E00 -4F00 -8F80 -8F80 -8F80 -8080 -8080 -4100 -3E00 +C0 +C0 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9685 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28E3 +ENCODING 10467 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -3E00 -4700 -8780 -8780 -8780 -FF80 -FF80 -7F00 -3E00 +C0 +C0 +00 +C0 +C0 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9686 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 9 1 1 +STARTCHAR uni28E4 +ENCODING 10468 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 5 1 0 BITMAP -30 -70 -F0 -F0 -F0 -F0 -F0 -70 -30 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9687 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 4 9 1 1 +STARTCHAR uni28E5 +ENCODING 10469 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP C0 -E0 -F0 -F0 -F0 -F0 -F0 -E0 C0 +00 +00 +00 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9688 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28E6 +ENCODING 10470 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -FF80 -FF80 -E380 -C180 -C180 -C180 -E380 -FF80 -FF80 +C0 +C0 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9689 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28E7 +ENCODING 10471 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -E380 -DD80 -BE80 -BE80 -BE80 -DD80 -E380 -FF80 +C0 +C0 +00 +C0 +C0 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9690 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 5 1 0 +STARTCHAR uni28E8 +ENCODING 10472 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -E380 -DD80 -BE80 -BE80 +18 +18 +00 +00 +00 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9691 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 5 1 0 +STARTCHAR uni28E9 +ENCODING 10473 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -BE80 -BE80 -DD80 -E380 -FF80 +D8 +D8 +00 +00 +00 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9692 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 5 5 0 0 +STARTCHAR uni28EA +ENCODING 10474 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -38 -40 -80 -80 -80 +18 +18 +00 +C0 +C0 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9693 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 5 0 0 +STARTCHAR uni28EB +ENCODING 10475 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -E0 -10 -08 -08 -08 +D8 +D8 +00 +C0 +C0 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9694 -SWIDTH 360 0 -DWIDTH 6 0 -BBX 5 5 0 0 +STARTCHAR uni28EC +ENCODING 10476 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -08 -08 -08 -10 -E0 +18 +18 +00 +00 +00 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9695 -SWIDTH 300 0 -DWIDTH 5 0 -BBX 5 5 0 0 +STARTCHAR uni28ED +ENCODING 10477 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -80 -80 -80 -40 -38 +D8 +D8 +00 +00 +00 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9696 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 5 1 -1 +STARTCHAR uni28EE +ENCODING 10478 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -3E00 -4100 -8080 -8080 -8080 +18 +18 +00 +C0 +C0 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9697 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 5 1 0 +STARTCHAR uni28EF +ENCODING 10479 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -8080 -8080 -8080 -4100 -3E00 +D8 +D8 +00 +C0 +C0 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9698 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28F0 +ENCODING 10480 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -0080 -0180 -0380 -0780 -0F80 -1F80 -3F80 -7F80 -FF80 +18 +18 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9699 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28F1 +ENCODING 10481 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -8000 -C000 -E000 -F000 -F800 -FC00 -FE00 -FF00 -FF80 +C0 +C0 +00 +18 +18 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9700 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28F2 +ENCODING 10482 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -FF80 -FF00 -FE00 -FC00 -F800 -F000 -E000 -C000 -8000 +D8 +D8 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9701 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28F3 +ENCODING 10483 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -7F80 -3F80 -1F80 -0F80 -0780 -0380 -0180 -0080 +C0 +C0 +00 +D8 +D8 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9702 +STARTCHAR uni28F4 +ENCODING 10484 SWIDTH 480 0 DWIDTH 8 0 -BBX 7 7 1 2 +BBX 5 8 1 0 BITMAP -38 -44 -82 -82 -82 -44 -38 +18 +18 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9703 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28F5 +ENCODING 10485 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -F080 -F080 -F080 -F080 -F080 -F080 -F080 -FF80 +C0 +C0 +00 +18 +18 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9704 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28F6 +ENCODING 10486 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 8 1 0 BITMAP -FF80 -8780 -8780 -8780 -8780 -8780 -8780 -8780 -FF80 +D8 +D8 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9705 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28F7 +ENCODING 10487 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -FF80 -FE80 -FC80 -F880 -F080 -E080 -C080 -FF80 +C0 +C0 +00 +D8 +D8 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9706 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28F8 +ENCODING 10488 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -8180 -8380 -8780 -8F80 -9F80 -BF80 -FF80 -FF80 +18 +18 +00 +18 +18 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9632 -ENCODING 9707 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 9 1 1 +STARTCHAR uni28F9 +ENCODING 10489 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -FF80 -8880 -8880 -8880 -8880 -8880 -8880 -8880 -FF80 +D8 +D8 +00 +18 +18 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9708 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 10 1 1 +STARTCHAR uni28FA +ENCODING 10490 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -0800 -0800 -1400 -1400 -2200 -2A00 -5D00 -4900 -8080 -FF80 +18 +18 +00 +D8 +D8 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9709 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 10 1 1 +STARTCHAR uni28FB +ENCODING 10491 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -0800 -0800 -1C00 -1C00 -3A00 -3A00 -7900 -7900 -F880 -FF80 +D8 +D8 +00 +D8 +D8 +00 +18 +18 +00 +D8 +D8 ENDCHAR -STARTCHAR char9650 -ENCODING 9710 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 9 10 1 1 +STARTCHAR uni28FC +ENCODING 10492 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -0800 -0800 -1C00 -1C00 -2E00 -2E00 -4F00 -4F00 -8F80 -FF80 +18 +18 +00 +18 +18 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char9670 -ENCODING 9711 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 10 1 0 +STARTCHAR uni28FD +ENCODING 10493 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -1E00 -6180 -4080 -8040 -8040 -8040 -8040 -4080 -6180 -1E00 +D8 +D8 +00 +18 +18 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR -STARTCHAR char10049 -ENCODING 10049 -SWIDTH 840 0 -DWIDTH 14 0 -BBX 11 11 2 1 +STARTCHAR uni28FE +ENCODING 10494 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 BITMAP -1700 -2880 -4540 -B520 -8A40 -B5A0 -4A20 -95A0 -5440 -2280 -1D00 +18 +18 +00 +D8 +D8 +00 +D8 +D8 +00 +D8 +D8 +ENDCHAR +STARTCHAR uni28FF +ENCODING 10495 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 5 11 1 0 +BITMAP +D8 +D8 +00 +D8 +D8 +00 +D8 +D8 +00 +D8 +D8 ENDCHAR STARTCHAR 3131 ENCODING 12593 @@ -129403,7 +149234,7 @@ 21 61 ENDCHAR -STARTCHAR 0xFB50 +STARTCHAR uniFB50 ENCODING 64336 SWIDTH 300 0 DWIDTH 5 0 @@ -129425,7 +149256,7 @@ 20 20 ENDCHAR -STARTCHAR 0xFB51 +STARTCHAR uniFB51 ENCODING 64337 SWIDTH 300 0 DWIDTH 5 0 @@ -129447,7 +149278,7 @@ 20 18 ENDCHAR -STARTCHAR 0048 +STARTCHAR uniFB52 ENCODING 64338 SWIDTH 840 0 DWIDTH 14 0 @@ -129466,7 +149297,7 @@ 0200 0200 ENDCHAR -STARTCHAR 0047 +STARTCHAR uniFB53 ENCODING 64339 SWIDTH 960 0 DWIDTH 16 0 @@ -129475,7 +149306,7 @@ 4000 8010 8010 -C06E +C07E 7F80 0000 0400 @@ -129484,7 +149315,7 @@ 0400 0400 ENDCHAR -STARTCHAR 0049 +STARTCHAR uniFB54 ENCODING 64340 SWIDTH 360 0 DWIDTH 6 0 @@ -129502,7 +149333,7 @@ 40 40 ENDCHAR -STARTCHAR 004A +STARTCHAR uniFB55 ENCODING 64341 SWIDTH 360 0 DWIDTH 6 0 @@ -129511,7 +149342,7 @@ 10 10 10 -EC +FC 00 10 10 @@ -129519,7 +149350,7 @@ 10 10 ENDCHAR -STARTCHAR 004C +STARTCHAR uniFB56 ENCODING 64342 SWIDTH 840 0 DWIDTH 14 0 @@ -129537,7 +149368,7 @@ 0400 0400 ENDCHAR -STARTCHAR 004B +STARTCHAR uniFB57 ENCODING 64343 SWIDTH 900 0 DWIDTH 15 0 @@ -129546,7 +149377,7 @@ 4000 8010 8010 -C06E +C07E 7F80 0000 0A00 @@ -129554,7 +149385,7 @@ 0400 0400 ENDCHAR -STARTCHAR 0049 +STARTCHAR uniFB58 ENCODING 64344 SWIDTH 360 0 DWIDTH 6 0 @@ -129571,7 +149402,7 @@ 20 20 ENDCHAR -STARTCHAR 004A +STARTCHAR uniFB59 ENCODING 64345 SWIDTH 360 0 DWIDTH 6 0 @@ -129580,14 +149411,14 @@ 10 10 10 -EC +FC 00 28 28 10 10 ENDCHAR -STARTCHAR 0048 +STARTCHAR uniFB5A ENCODING 64346 SWIDTH 840 0 DWIDTH 14 0 @@ -129606,7 +149437,7 @@ 0500 0500 ENDCHAR -STARTCHAR 0047 +STARTCHAR uniFB5B ENCODING 64347 SWIDTH 960 0 DWIDTH 16 0 @@ -129615,7 +149446,7 @@ 4000 8010 8010 -C06E +C07E 7F80 0000 0500 @@ -129624,7 +149455,7 @@ 0500 0500 ENDCHAR -STARTCHAR 0049 +STARTCHAR uniFB5C ENCODING 64348 SWIDTH 360 0 DWIDTH 6 0 @@ -129642,7 +149473,7 @@ 50 50 ENDCHAR -STARTCHAR 004A +STARTCHAR uniFB5D ENCODING 64349 SWIDTH 360 0 DWIDTH 6 0 @@ -129651,7 +149482,7 @@ 10 10 10 -EC +FC 00 28 28 @@ -129659,7 +149490,7 @@ 28 28 ENDCHAR -STARTCHAR 0050 +STARTCHAR uniFB5E ENCODING 64350 SWIDTH 780 0 DWIDTH 13 0 @@ -129677,7 +149508,7 @@ C030 7FC0 ENDCHAR -STARTCHAR 004F +STARTCHAR uniFB5F ENCODING 64351 SWIDTH 900 0 DWIDTH 15 0 @@ -129692,10 +149523,10 @@ 4000 8010 8010 -C06E +C07E 7F80 ENDCHAR -STARTCHAR 004D +STARTCHAR uniFB60 ENCODING 64352 SWIDTH 360 0 DWIDTH 6 0 @@ -129713,7 +149544,7 @@ 08 F0 ENDCHAR -STARTCHAR 004E +STARTCHAR uniFB61 ENCODING 64353 SWIDTH 360 0 DWIDTH 6 0 @@ -129729,9 +149560,9 @@ 10 10 10 -EC +FC ENDCHAR -STARTCHAR 0050 +STARTCHAR uniFB62 ENCODING 64354 SWIDTH 840 0 DWIDTH 14 0 @@ -129749,7 +149580,7 @@ C030 7FC0 ENDCHAR -STARTCHAR 004F +STARTCHAR uniFB63 ENCODING 64355 SWIDTH 900 0 DWIDTH 15 0 @@ -129764,10 +149595,10 @@ 4000 8010 8010 -C06E +C07E 7F80 ENDCHAR -STARTCHAR 004D +STARTCHAR uniFB64 ENCODING 64356 SWIDTH 360 0 DWIDTH 6 0 @@ -129785,7 +149616,7 @@ 08 F0 ENDCHAR -STARTCHAR 004E +STARTCHAR uniFB65 ENCODING 64357 SWIDTH 360 0 DWIDTH 6 0 @@ -129801,9 +149632,9 @@ 10 10 10 -EC +FC ENDCHAR -STARTCHAR 0050 +STARTCHAR uniFB66 ENCODING 64358 SWIDTH 840 0 DWIDTH 14 0 @@ -129819,7 +149650,7 @@ C030 7FC0 ENDCHAR -STARTCHAR 004F +STARTCHAR uniFB67 ENCODING 64359 SWIDTH 900 0 DWIDTH 15 0 @@ -129832,10 +149663,10 @@ 4000 8010 8010 -C06E +C07E 7F80 ENDCHAR -STARTCHAR 004D +STARTCHAR uniFB68 ENCODING 64360 SWIDTH 360 0 DWIDTH 6 0 @@ -129853,7 +149684,7 @@ 08 F0 ENDCHAR -STARTCHAR 004E +STARTCHAR uniFB69 ENCODING 64361 SWIDTH 360 0 DWIDTH 6 0 @@ -129869,9 +149700,9 @@ 10 10 10 -EC +FC ENDCHAR -STARTCHAR 00CF +STARTCHAR uniFB6A ENCODING 64362 SWIDTH 900 0 DWIDTH 15 0 @@ -129892,7 +149723,7 @@ 4038 3FC0 ENDCHAR -STARTCHAR 00CF +STARTCHAR uniFB6B ENCODING 64363 SWIDTH 960 0 DWIDTH 16 0 @@ -129913,7 +149744,7 @@ 403B 3FC0 ENDCHAR -STARTCHAR 00CC +STARTCHAR uniFB6C ENCODING 64364 SWIDTH 360 0 DWIDTH 6 0 @@ -129933,7 +149764,7 @@ 08 F0 ENDCHAR -STARTCHAR 00CC +STARTCHAR uniFB6D ENCODING 64365 SWIDTH 480 0 DWIDTH 8 0 @@ -129948,11 +149779,11 @@ 18 24 24 -28 -10 -EF +18 +18 +E7 ENDCHAR -STARTCHAR 00CF +STARTCHAR uniFB6E ENCODING 64366 SWIDTH 900 0 DWIDTH 15 0 @@ -129974,7 +149805,7 @@ 4038 3FC0 ENDCHAR -STARTCHAR 00CF +STARTCHAR uniFB6F ENCODING 64367 SWIDTH 960 0 DWIDTH 16 0 @@ -129996,7 +149827,7 @@ 403B 3FC0 ENDCHAR -STARTCHAR 00CC +STARTCHAR uniFB70 ENCODING 64368 SWIDTH 360 0 DWIDTH 6 0 @@ -130017,7 +149848,7 @@ 08 F0 ENDCHAR -STARTCHAR 00CC +STARTCHAR uniFB71 ENCODING 64369 SWIDTH 480 0 DWIDTH 8 0 @@ -130034,11 +149865,11 @@ 18 24 24 -28 -10 -EF +18 +18 +E7 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFB72 ENCODING 64370 SWIDTH 660 0 DWIDTH 11 0 @@ -130056,7 +149887,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFB73 ENCODING 64371 SWIDTH 600 0 DWIDTH 10 0 @@ -130074,41 +149905,41 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0055 +STARTCHAR uniFB80 ENCODING 64372 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 10 0 -5 +BBX 9 10 0 -6 BITMAP 3800 -4780 -0C00 -1000 -E000 -0400 -0400 +4600 +0100 +FF80 0000 -0400 -0400 +0800 +0800 +0000 +0800 +0800 ENDCHAR -STARTCHAR 0056 +STARTCHAR uni0016 ENCODING 64373 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 10 10 0 -5 +SWIDTH 1200 0 +DWIDTH 20 0 +BBX 10 10 0 -6 BITMAP 3800 -4780 -0D00 -1100 -E0C0 -0400 -0400 +4600 +0100 +FFC0 0000 -0400 -0400 +0800 +0800 +0000 +0800 +0800 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFB76 ENCODING 64374 SWIDTH 660 0 DWIDTH 11 0 @@ -130126,7 +149957,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFB77 ENCODING 64375 SWIDTH 600 0 DWIDTH 10 0 @@ -130144,35 +149975,35 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0055 +STARTCHAR uniFB80 ENCODING 64376 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 7 0 -2 +BBX 9 7 0 -3 BITMAP 3800 -4780 -0C00 -1000 -E000 -0A00 -0A00 +4600 +0100 +FF80 +0000 +1400 +1400 ENDCHAR -STARTCHAR 0056 +STARTCHAR uni0016 ENCODING 64377 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 10 7 0 -2 +SWIDTH 1200 0 +DWIDTH 20 0 +BBX 10 7 0 -3 BITMAP 3800 -4780 -0D00 -1100 -E0C0 -0A00 -0A00 +4600 +0100 +FFC0 +0000 +1400 +1400 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFB7A ENCODING 64378 SWIDTH 660 0 DWIDTH 11 0 @@ -130190,7 +150021,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFB7B ENCODING 64379 SWIDTH 600 0 DWIDTH 10 0 @@ -130208,39 +150039,39 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0055 +STARTCHAR uniFB80 ENCODING 64380 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 9 0 -4 +BBX 9 9 0 -5 BITMAP 3800 -4780 -0C00 -1000 -E000 -0A00 -0A00 -0400 -0400 +4600 +0100 +FF80 +0000 +1400 +1400 +0800 +0800 ENDCHAR -STARTCHAR 0056 +STARTCHAR uni0016 ENCODING 64381 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 10 9 0 -4 +SWIDTH 1200 0 +DWIDTH 20 0 +BBX 10 9 0 -5 BITMAP 3800 -4780 -0D00 -1100 -E0C0 -0A00 -0A00 -0400 -0400 +4600 +0100 +FFC0 +0000 +1400 +1400 +0800 +0800 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFB7E ENCODING 64382 SWIDTH 660 0 DWIDTH 11 0 @@ -130258,7 +150089,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFB7F ENCODING 64383 SWIDTH 600 0 DWIDTH 10 0 @@ -130276,57 +150107,57 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0055 +STARTCHAR uniFB80 ENCODING 64384 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 10 0 -5 +BBX 9 10 0 -6 BITMAP 3800 -4780 -0C00 -1000 -E000 -0A00 -0A00 +4600 +0100 +FF80 0000 -0A00 -0A00 +1400 +1400 +0000 +1400 +1400 ENDCHAR -STARTCHAR 0056 +STARTCHAR uni0016 ENCODING 64385 -SWIDTH 600 0 -DWIDTH 10 0 -BBX 10 10 0 -5 +SWIDTH 1200 0 +DWIDTH 20 0 +BBX 10 10 0 -6 BITMAP 3800 -4780 -0D00 -1100 -E0C0 -0A00 -0A00 +4600 +0100 +FFC0 0000 -0A00 -0A00 +1400 +1400 +0000 +1400 +1400 ENDCHAR -STARTCHAR 0065 +STARTCHAR uniFB82 ENCODING 64386 SWIDTH 360 0 DWIDTH 6 0 BBX 5 9 1 -3 BITMAP -20 10 -08 +10 08 08 -F0 +98 +60 00 50 50 ENDCHAR -STARTCHAR 0066 +STARTCHAR uniFB83 ENCODING 64387 SWIDTH 420 0 DWIDTH 7 0 @@ -130340,10 +150171,10 @@ 98 66 00 -14 -14 +50 +50 ENDCHAR -STARTCHAR 0065 +STARTCHAR uniFB84 ENCODING 64388 SWIDTH 360 0 DWIDTH 6 0 @@ -130353,14 +150184,14 @@ 50 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR -STARTCHAR 0066 +STARTCHAR uniFB85 ENCODING 64389 SWIDTH 420 0 DWIDTH 7 0 @@ -130378,7 +150209,7 @@ 98 66 ENDCHAR -STARTCHAR 0065 +STARTCHAR uniFB86 ENCODING 64390 SWIDTH 360 0 DWIDTH 6 0 @@ -130390,14 +150221,14 @@ 50 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR -STARTCHAR 0066 +STARTCHAR uniFB87 ENCODING 64391 SWIDTH 420 0 DWIDTH 7 0 @@ -130417,7 +150248,7 @@ 98 66 ENDCHAR -STARTCHAR 0065 +STARTCHAR uniFB88 ENCODING 64392 SWIDTH 360 0 DWIDTH 6 0 @@ -130429,14 +150260,14 @@ E0 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR -STARTCHAR 0066 +STARTCHAR uniFB89 ENCODING 64393 SWIDTH 420 0 DWIDTH 7 0 @@ -130456,7 +150287,7 @@ 98 66 ENDCHAR -STARTCHAR 0069 +STARTCHAR uniFB8A ENCODING 64394 SWIDTH 420 0 DWIDTH 7 0 @@ -130477,7 +150308,7 @@ 18 F0 ENDCHAR -STARTCHAR 0069 +STARTCHAR uniFB8B ENCODING 64395 SWIDTH 540 0 DWIDTH 9 0 @@ -130498,7 +150329,7 @@ 18 F0 ENDCHAR -STARTCHAR 0069 +STARTCHAR uniFB8C ENCODING 64396 SWIDTH 420 0 DWIDTH 7 0 @@ -130519,7 +150350,7 @@ 18 F0 ENDCHAR -STARTCHAR 0069 +STARTCHAR uniFB8D ENCODING 64397 SWIDTH 540 0 DWIDTH 9 0 @@ -130540,197 +150371,176 @@ 18 F0 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uniFB8E ENCODING 64398 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 14 1 -1 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 11 1 -1 BITMAP -0006 -0018 -0060 -0180 -0200 -0200 -0100 +0008 +0030 00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +0100 +0100 +0080 +4060 +8010 +8010 +8060 +7F80 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uniFB8F ENCODING 64399 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 14 1 -1 +SWIDTH 900 0 +DWIDTH 15 0 +BBX 15 10 1 0 BITMAP -0006 -0018 -0060 -0180 -0200 -0200 -0100 +0008 +0030 00C0 -0020 -4010 -8008 -8008 -C037 -7FC0 +0100 +0100 +4080 +8060 +8010 +8010 +7FFE ENDCHAR -STARTCHAR 00D4 +STARTCHAR uniFEDB ENCODING 64400 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 11 0 0 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 10 0 0 BITMAP -00C0 -0300 -0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0400 -F800 +01 +06 +18 +20 +20 +10 +0C +02 +02 +FC ENDCHAR -STARTCHAR 00D5 +STARTCHAR uniFEDC ENCODING 64401 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 11 0 0 +BBX 11 10 0 0 BITMAP -00C0 +0080 0300 0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0700 -F8E0 +1000 +1000 +0800 +0600 +0100 +0100 +FFE0 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uniFB92 ENCODING 64402 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 17 1 -1 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 14 1 -1 BITMAP -0004 -0018 -0060 -0186 -0218 -0060 -0180 -0200 -0200 -0100 +0008 +0030 00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +0108 +0030 +00C0 +0100 +0100 +0080 +4060 +8010 +8010 +8060 +7F80 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uniFB93 ENCODING 64403 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 17 1 -1 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 13 1 0 BITMAP -0004 -0018 -0060 -0186 -0218 -0060 -0180 -0200 -0200 -0100 +0008 +0030 00C0 -0020 -4010 -8008 -8008 -C037 -7FC0 +0108 +0030 +00C0 +0100 +0100 +4080 +8060 +8010 +8010 +7FFE ENDCHAR -STARTCHAR 00D4 +STARTCHAR uniFB94 ENCODING 64404 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 14 0 0 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 13 0 0 BITMAP -0080 -0300 -0C00 -30C0 -4300 -0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0400 -F800 +01 +06 +18 +21 +06 +18 +20 +20 +10 +0C +02 +02 +FC ENDCHAR -STARTCHAR 00D5 +STARTCHAR uniFB95 ENCODING 64405 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 14 0 0 +BBX 11 13 0 0 BITMAP 0080 0300 0C00 -30C0 -4300 +1080 +0300 0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0700 -F8E0 +1000 +1000 +0800 +0600 +0100 +0100 +FFE0 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uniFB96 ENCODING 64406 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 23 1 -7 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 20 1 -7 BITMAP -0004 -0018 -0060 -0186 -0218 -0060 -0180 -0200 -0200 -0100 +0008 +0030 00C0 -0020 -4010 -8008 -8008 -C030 -7FC0 +0108 +0030 +00C0 +0100 +0100 +0080 +4060 +8010 +8010 +8060 +7F80 0000 0400 0400 @@ -130738,185 +150548,175 @@ 0400 0400 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uniFB97 ENCODING 64407 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 23 1 -7 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 20 1 -7 BITMAP -0004 -0018 -0060 -0186 -0218 -0060 -0180 -0200 -0200 -0100 +0008 +0030 00C0 -0020 -4010 -8008 -8008 -C037 -7FC0 +0108 +0030 +00C0 +0100 +0100 +4080 +8060 +8010 +8010 +7FFE 0000 -0400 -0400 0000 -0400 -0400 +0080 +0080 +0000 +0080 +0080 ENDCHAR -STARTCHAR 00D4 +STARTCHAR uniFB98 ENCODING 64408 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 20 0 -6 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 19 0 -6 BITMAP -0080 -0300 -0C00 -30C0 -4300 -0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0400 -F800 -0000 -2000 -2000 -0000 -2000 -2000 +01 +06 +18 +21 +06 +18 +20 +20 +10 +0C +02 +02 +FC +00 +10 +10 +00 +10 +10 ENDCHAR -STARTCHAR 00D5 +STARTCHAR uniFB99 ENCODING 64409 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 20 0 -6 +BBX 11 19 0 -6 BITMAP 0080 0300 0C00 -30C0 -4300 +1080 +0300 0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0700 -F8E0 +1000 +1000 +0800 +0600 +0100 +0100 +FFE0 0000 -2000 -2000 +0800 +0800 0000 -2000 -2000 +0800 +0800 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uniFB9A ENCODING 64410 -SWIDTH 960 0 -DWIDTH 16 0 -BBX 15 18 1 -1 +SWIDTH 840 0 +DWIDTH 14 0 +BBX 13 16 1 -1 BITMAP -0040 -0144 -0118 -0060 -0186 -0218 -0060 -0180 -0200 -0200 -0100 -00C0 0020 -4010 -8008 -8008 -C030 -7FC0 +00A0 +0088 +0030 +00C0 +0108 +0030 +00C0 +0100 +0100 +0080 +4060 +8010 +8010 +8060 +7F80 ENDCHAR -STARTCHAR 00D7 +STARTCHAR uniFB9B ENCODING 64411 -SWIDTH 1020 0 -DWIDTH 17 0 -BBX 16 18 1 -1 +SWIDTH 960 0 +DWIDTH 16 0 +BBX 15 15 1 0 BITMAP -0040 -0144 -0118 -0060 -0186 -0218 -0060 -0180 -0200 -0200 -0100 -00C0 0020 -4010 -8008 -8008 -C037 -7FC0 +00A0 +0088 +0030 +00C0 +0108 +0030 +00C0 +0100 +0100 +4080 +8060 +8010 +8010 +7FFE ENDCHAR -STARTCHAR 00D4 +STARTCHAR uniFB9C ENCODING 64412 -SWIDTH 660 0 -DWIDTH 11 0 -BBX 10 15 0 0 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 15 0 0 BITMAP -0800 -2880 -2300 -0C00 -30C0 -4300 -0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0400 -F800 +04 +14 +11 +06 +18 +21 +06 +18 +20 +20 +10 +0C +02 +02 +FC ENDCHAR -STARTCHAR 00D5 +STARTCHAR uniFB9D ENCODING 64413 SWIDTH 660 0 DWIDTH 11 0 BBX 11 15 0 0 BITMAP -0800 -2880 -2300 +0200 +0A00 +0880 +0300 0C00 -30C0 -4300 +1080 +0300 0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0700 -F8E0 +1000 +1000 +0800 +0600 +0100 +0100 +FFE0 ENDCHAR -STARTCHAR 00E7 +STARTCHAR uniFB9E ENCODING 64414 SWIDTH 600 0 DWIDTH 10 0 @@ -130930,7 +150730,7 @@ 82 7C ENDCHAR -STARTCHAR 00E7 +STARTCHAR uniFB9F ENCODING 64415 SWIDTH 540 0 DWIDTH 9 0 @@ -130944,7 +150744,7 @@ 8200 7C00 ENDCHAR -STARTCHAR 00E7 +STARTCHAR uniFBA0 ENCODING 64416 SWIDTH 600 0 DWIDTH 10 0 @@ -130964,7 +150764,7 @@ 82 7C ENDCHAR -STARTCHAR 00E7 +STARTCHAR uniFBA1 ENCODING 64417 SWIDTH 540 0 DWIDTH 9 0 @@ -130985,7 +150785,7 @@ 8200 7C00 ENDCHAR -STARTCHAR 00E4 +STARTCHAR uniFBA2 ENCODING 64418 SWIDTH 300 0 DWIDTH 5 0 @@ -131003,7 +150803,7 @@ 08 F0 ENDCHAR -STARTCHAR 00E5 +STARTCHAR uniFBA3 ENCODING 64419 SWIDTH 360 0 DWIDTH 6 0 @@ -131019,7 +150819,7 @@ 10 10 10 -EC +FC ENDCHAR STARTCHAR 0xFEE9 ENCODING 64420 @@ -131230,46 +151030,51 @@ 8000 7FE0 ENDCHAR -STARTCHAR 0xFED9 +STARTCHAR uni0075 ENCODING 64467 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 12 1 0 +BBX 10 15 1 0 BITMAP -1000 -1000 -2900 -2980 -0100 -0900 -1900 -0900 -1900 -0100 -0100 -FE00 +0400 +0400 +0A00 +0A00 +0000 +0080 +00C0 +0080 +0480 +0C80 +0480 +8C80 +8080 +C080 +7F00 ENDCHAR -STARTCHAR 0xFEDA +STARTCHAR uniFBD4 ENCODING 64468 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 13 1 -1 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 15 1 0 BITMAP -0400 -0400 -0A10 -0A18 -0010 -0210 -0610 -0210 -4610 -8010 -8010 -C06C -7F80 +0800 +0800 +1400 +1400 +0000 +0080 +00C0 +0080 +0480 +0C80 +0480 +8C80 +8080 +C080 +7FE0 ENDCHAR -STARTCHAR 00D4 +STARTCHAR uniFBD5 ENCODING 64469 SWIDTH 660 0 DWIDTH 11 0 @@ -131285,13 +151090,13 @@ 3000 4000 4000 -2000 -1800 -0400 -0400 -F800 +3000 +0C00 +0200 +0100 +FE00 ENDCHAR -STARTCHAR 00D5 +STARTCHAR uniFBD6 ENCODING 64470 SWIDTH 660 0 DWIDTH 11 0 @@ -131310,10 +151115,10 @@ 2000 1800 0400 -0700 -F8E0 +0200 +FFE0 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uniFBD7 ENCODING 64471 SWIDTH 540 0 DWIDTH 9 0 @@ -131334,7 +151139,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE86 +STARTCHAR uniFBD8 ENCODING 64472 SWIDTH 600 0 DWIDTH 10 0 @@ -131355,7 +151160,7 @@ 8400 7800 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uniFBD9 ENCODING 64473 SWIDTH 480 0 DWIDTH 8 0 @@ -131375,7 +151180,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE86 +STARTCHAR uniFBDA ENCODING 64474 SWIDTH 600 0 DWIDTH 10 0 @@ -131395,7 +151200,7 @@ 8400 7800 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uniFBDB ENCODING 64475 SWIDTH 540 0 DWIDTH 9 0 @@ -131416,7 +151221,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE86 +STARTCHAR uniFBDC ENCODING 64476 SWIDTH 600 0 DWIDTH 10 0 @@ -131437,7 +151242,7 @@ 8400 7800 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uniFBDD ENCODING 64477 SWIDTH 540 0 DWIDTH 9 0 @@ -131458,7 +151263,7 @@ 8400 7800 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uniFBDE ENCODING 64478 SWIDTH 540 0 DWIDTH 9 0 @@ -131479,7 +151284,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE86 +STARTCHAR uniFBDF ENCODING 64479 SWIDTH 600 0 DWIDTH 10 0 @@ -131500,7 +151305,7 @@ 8400 7800 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uniFBE0 ENCODING 64480 SWIDTH 540 0 DWIDTH 9 0 @@ -131515,7 +151320,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE86 +STARTCHAR uniFBE1 ENCODING 64481 SWIDTH 600 0 DWIDTH 10 0 @@ -131530,7 +151335,7 @@ 8400 7800 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uniFBE2 ENCODING 64482 SWIDTH 480 0 DWIDTH 8 0 @@ -131550,7 +151355,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE86 +STARTCHAR uniFBE3 ENCODING 64483 SWIDTH 600 0 DWIDTH 10 0 @@ -131570,7 +151375,7 @@ 8400 7800 ENDCHAR -STARTCHAR 00F0 +STARTCHAR uniFBE4 ENCODING 64484 SWIDTH 720 0 DWIDTH 12 0 @@ -131591,7 +151396,7 @@ 0800 0800 ENDCHAR -STARTCHAR 00F0 +STARTCHAR uniFBE5 ENCODING 64485 SWIDTH 660 0 DWIDTH 11 0 @@ -131608,7 +151413,7 @@ 0000 0C00 ENDCHAR -STARTCHAR 00E4 +STARTCHAR uniFBE6 ENCODING 64486 SWIDTH 360 0 DWIDTH 6 0 @@ -131626,7 +151431,7 @@ 10 10 ENDCHAR -STARTCHAR 00E5 +STARTCHAR uniFBE7 ENCODING 64487 SWIDTH 360 0 DWIDTH 6 0 @@ -131635,7 +151440,7 @@ 10 10 10 -EC +FC 00 10 10 @@ -131643,7 +151448,7 @@ 10 10 ENDCHAR -STARTCHAR 00E4 +STARTCHAR uniFBE8 ENCODING 64488 SWIDTH 360 0 DWIDTH 6 0 @@ -131655,7 +151460,7 @@ 08 F0 ENDCHAR -STARTCHAR 00E5 +STARTCHAR uniFBE9 ENCODING 64489 SWIDTH 360 0 DWIDTH 6 0 @@ -131664,9 +151469,9 @@ 10 10 10 -EC +FC ENDCHAR -STARTCHAR 00F0 +STARTCHAR uniFBFC ENCODING 64508 SWIDTH 720 0 DWIDTH 12 0 @@ -131681,7 +151486,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 00F0 +STARTCHAR uniFBFD ENCODING 64509 SWIDTH 660 0 DWIDTH 11 0 @@ -131694,7 +151499,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 00E4 +STARTCHAR uniFBFE ENCODING 64510 SWIDTH 360 0 DWIDTH 6 0 @@ -131709,7 +151514,7 @@ 50 50 ENDCHAR -STARTCHAR 00E5 +STARTCHAR uniFBFF ENCODING 64511 SWIDTH 360 0 DWIDTH 6 0 @@ -131718,7 +151523,7 @@ 10 10 10 -EC +FC 00 28 28 @@ -132267,7 +152072,7 @@ 0000 FF80 ENDCHAR -STARTCHAR 0xFE80 +STARTCHAR uniFE80 ENCODING 65152 SWIDTH 300 0 DWIDTH 5 0 @@ -132280,7 +152085,7 @@ C0 80 ENDCHAR -STARTCHAR 0xFE81 +STARTCHAR uniFE81 ENCODING 65153 SWIDTH 300 0 DWIDTH 5 0 @@ -132301,7 +152106,7 @@ 20 20 ENDCHAR -STARTCHAR 0xFE82 +STARTCHAR uniFE82 ENCODING 65154 SWIDTH 360 0 DWIDTH 6 0 @@ -132322,7 +152127,7 @@ 20 18 ENDCHAR -STARTCHAR 0xFE83 +STARTCHAR uniFE83 ENCODING 65155 SWIDTH 240 0 DWIDTH 4 0 @@ -132345,7 +152150,7 @@ 40 40 ENDCHAR -STARTCHAR 0xFE84 +STARTCHAR uniFE84 ENCODING 65156 SWIDTH 300 0 DWIDTH 5 0 @@ -132368,7 +152173,7 @@ 40 30 ENDCHAR -STARTCHAR 0xFE85 +STARTCHAR uniFE85 ENCODING 65157 SWIDTH 540 0 DWIDTH 9 0 @@ -132389,7 +152194,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFE86 +STARTCHAR uniFE86 ENCODING 65158 SWIDTH 600 0 DWIDTH 10 0 @@ -132410,7 +152215,7 @@ 8400 7800 ENDCHAR -STARTCHAR 0xFE87 +STARTCHAR uniFE87 ENCODING 65159 SWIDTH 300 0 DWIDTH 5 0 @@ -132433,7 +152238,7 @@ 60 80 ENDCHAR -STARTCHAR 0xFE88 +STARTCHAR uniFE88 ENCODING 65160 SWIDTH 300 0 DWIDTH 5 0 @@ -132456,7 +152261,7 @@ 60 80 ENDCHAR -STARTCHAR 00F0 +STARTCHAR uniFE89 ENCODING 65161 SWIDTH 660 0 DWIDTH 11 0 @@ -132476,7 +152281,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 00F0 +STARTCHAR uniFE8A ENCODING 65162 SWIDTH 720 0 DWIDTH 12 0 @@ -132495,7 +152300,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 0xFE8B +STARTCHAR uniFE8B ENCODING 65163 SWIDTH 300 0 DWIDTH 5 0 @@ -132513,7 +152318,7 @@ 10 E0 ENDCHAR -STARTCHAR 0xFE8C +STARTCHAR uniFE8C ENCODING 65164 SWIDTH 360 0 DWIDTH 6 0 @@ -132528,9 +152333,9 @@ 10 10 10 -EC +FC ENDCHAR -STARTCHAR 0xFE8D +STARTCHAR uniFE8D ENCODING 65165 SWIDTH 300 0 DWIDTH 5 0 @@ -132547,7 +152352,7 @@ 80 80 ENDCHAR -STARTCHAR 0xFE8E +STARTCHAR uniFE8E ENCODING 65166 SWIDTH 300 0 DWIDTH 5 0 @@ -132564,7 +152369,7 @@ 80 60 ENDCHAR -STARTCHAR 0048 +STARTCHAR uniFE8F ENCODING 65167 SWIDTH 780 0 DWIDTH 13 0 @@ -132580,7 +152385,7 @@ 0200 0200 ENDCHAR -STARTCHAR 0047 +STARTCHAR uniFE90 ENCODING 65168 SWIDTH 960 0 DWIDTH 16 0 @@ -132589,13 +152394,13 @@ 4000 8010 8010 -C06E +C07E 7F80 0000 0400 0400 ENDCHAR -STARTCHAR 0045 +STARTCHAR uniFE91 ENCODING 65169 SWIDTH 360 0 DWIDTH 6 0 @@ -132610,7 +152415,7 @@ 20 20 ENDCHAR -STARTCHAR 0046 +STARTCHAR uniFE92 ENCODING 65170 SWIDTH 360 0 DWIDTH 6 0 @@ -132619,12 +152424,12 @@ 10 10 10 -EC +FC 00 10 10 ENDCHAR -STARTCHAR 0xFE93 +STARTCHAR uniFE93 ENCODING 65171 SWIDTH 420 0 DWIDTH 7 0 @@ -132641,7 +152446,7 @@ 88 78 ENDCHAR -STARTCHAR 0xFE94 +STARTCHAR uniFE94 ENCODING 65172 SWIDTH 420 0 DWIDTH 7 0 @@ -132659,7 +152464,7 @@ 10 0C ENDCHAR -STARTCHAR 0050 +STARTCHAR uniFE95 ENCODING 65173 SWIDTH 780 0 DWIDTH 13 0 @@ -132674,7 +152479,7 @@ C030 7FC0 ENDCHAR -STARTCHAR 004F +STARTCHAR uniFE96 ENCODING 65174 SWIDTH 900 0 DWIDTH 15 0 @@ -132686,10 +152491,10 @@ 4000 8010 8010 -C06E +C07E 7F80 ENDCHAR -STARTCHAR 004D +STARTCHAR uniFE97 ENCODING 65175 SWIDTH 360 0 DWIDTH 6 0 @@ -132704,7 +152509,7 @@ 08 F0 ENDCHAR -STARTCHAR 004E +STARTCHAR uniFE98 ENCODING 65176 SWIDTH 360 0 DWIDTH 6 0 @@ -132717,9 +152522,9 @@ 10 10 10 -EC +FC ENDCHAR -STARTCHAR 0050 +STARTCHAR uniFE99 ENCODING 65177 SWIDTH 840 0 DWIDTH 14 0 @@ -132736,7 +152541,7 @@ C030 7FC0 ENDCHAR -STARTCHAR 004F +STARTCHAR uniFE9A ENCODING 65178 SWIDTH 900 0 DWIDTH 15 0 @@ -132750,10 +152555,10 @@ 4000 8010 8010 -C06E +C07E 7F80 ENDCHAR -STARTCHAR 004D +STARTCHAR uniFE9B ENCODING 65179 SWIDTH 360 0 DWIDTH 6 0 @@ -132770,7 +152575,7 @@ 08 F0 ENDCHAR -STARTCHAR 004E +STARTCHAR uniFE9C ENCODING 65180 SWIDTH 360 0 DWIDTH 6 0 @@ -132785,9 +152590,9 @@ 10 10 10 -EC +FC ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFE9D ENCODING 65181 SWIDTH 660 0 DWIDTH 11 0 @@ -132805,7 +152610,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFE9E ENCODING 65182 SWIDTH 600 0 DWIDTH 10 0 @@ -132823,35 +152628,37 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0055 +STARTCHAR uni0016 ENCODING 65183 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 7 0 -2 +BBX 9 8 0 -4 BITMAP 3800 -4780 -0C00 -1000 -E000 -0400 -0400 +4600 +0100 +FF80 +0000 +0000 +0800 +0800 ENDCHAR -STARTCHAR 0056 +STARTCHAR uni0016 ENCODING 65184 SWIDTH 600 0 DWIDTH 10 0 -BBX 10 7 0 -2 +BBX 10 8 0 -4 BITMAP 3800 -4780 -0D00 -1100 -E0C0 -0400 -0400 +4600 +0100 +FFC0 +0000 +0000 +0800 +0800 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFEA1 ENCODING 65185 SWIDTH 660 0 DWIDTH 11 0 @@ -132869,7 +152676,7 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFEA2 ENCODING 65186 SWIDTH 600 0 DWIDTH 10 0 @@ -132887,39 +152694,38 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0055 +STARTCHAR uni0016 ENCODING 65187 SWIDTH 600 0 DWIDTH 10 0 -BBX 9 5 0 0 +BBX 9 4 0 0 BITMAP 3800 -4780 -0C00 -1000 -E000 +4600 +0100 +FF80 ENDCHAR -STARTCHAR 0056 +STARTCHAR uni0016 ENCODING 65188 SWIDTH 600 0 DWIDTH 10 0 -BBX 10 5 0 0 +BBX 10 4 0 0 BITMAP 3800 -4780 -0D00 -1100 -E0C0 +4600 +0100 +FFC0 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFEA5 ENCODING 65189 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 14 1 -6 +BBX 10 15 1 -6 BITMAP 0800 0800 0000 +0000 7000 8F00 3800 @@ -132932,15 +152738,16 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0057 +STARTCHAR uniFEA6 ENCODING 65190 SWIDTH 600 0 DWIDTH 10 0 -BBX 10 14 1 -6 +BBX 10 15 1 -6 BITMAP 0800 0800 0000 +0000 7000 8F00 3A00 @@ -132953,50 +152760,50 @@ 60C0 1F00 ENDCHAR -STARTCHAR 0055 +STARTCHAR uni0016 ENCODING 65191 SWIDTH 600 0 DWIDTH 10 0 BBX 9 8 0 0 BITMAP -0400 -0400 +0800 +0800 0000 +0000 3800 -4780 -0C00 -1000 -E000 +4600 +0100 +FF80 ENDCHAR -STARTCHAR 0056 +STARTCHAR uni0016 ENCODING 65192 SWIDTH 600 0 DWIDTH 10 0 -BBX 10 8 0 0 +BBX 10 8 1 0 BITMAP -0400 -0400 +0800 +0800 +0000 0000 3800 -4780 -0D00 -1100 -E0C0 +4600 +0100 +FFC0 ENDCHAR -STARTCHAR 0065 +STARTCHAR uniFEA9 ENCODING 65193 SWIDTH 360 0 DWIDTH 6 0 BBX 5 6 1 0 BITMAP -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR -STARTCHAR 0066 +STARTCHAR uniFEAA ENCODING 65194 SWIDTH 420 0 DWIDTH 7 0 @@ -133010,7 +152817,7 @@ 98 66 ENDCHAR -STARTCHAR 0065 +STARTCHAR uniFEAB ENCODING 65195 SWIDTH 360 0 DWIDTH 6 0 @@ -133020,14 +152827,14 @@ 20 00 00 -20 10 -08 +10 08 08 -F0 +98 +60 ENDCHAR -STARTCHAR 0066 +STARTCHAR uniFEAC ENCODING 65196 SWIDTH 420 0 DWIDTH 7 0 @@ -133045,7 +152852,7 @@ 98 66 ENDCHAR -STARTCHAR 0069 +STARTCHAR uniFEAD ENCODING 65197 SWIDTH 420 0 DWIDTH 7 0 @@ -133060,7 +152867,7 @@ 18 F0 ENDCHAR -STARTCHAR 0069 +STARTCHAR uniFEAE ENCODING 65198 SWIDTH 540 0 DWIDTH 9 0 @@ -133075,7 +152882,7 @@ 18 F0 ENDCHAR -STARTCHAR 0069 +STARTCHAR uniFEAF ENCODING 65199 SWIDTH 420 0 DWIDTH 7 0 @@ -133094,7 +152901,7 @@ 18 F0 ENDCHAR -STARTCHAR 0069 +STARTCHAR uniFEB0 ENCODING 65200 SWIDTH 540 0 DWIDTH 9 0 @@ -133113,15 +152920,13 @@ 18 F0 ENDCHAR -STARTCHAR 0072 +STARTCHAR uniFEB1 ENCODING 65201 SWIDTH 960 0 DWIDTH 16 0 -BBX 15 10 1 -5 +BBX 15 8 1 -5 BITMAP -0002 -0002 -0012 +0112 0112 40EC 8080 @@ -133130,43 +152935,42 @@ 4300 3C00 ENDCHAR -STARTCHAR 0071 +STARTCHAR uniFEB2 ENCODING 65202 SWIDTH 1020 0 DWIDTH 17 0 BBX 17 8 1 -5 BITMAP -000200 011200 -40ED80 +011200 +40FF80 808000 808000 808000 430000 3C0000 ENDCHAR -STARTCHAR 006F +STARTCHAR uniFEB3 ENCODING 65203 -SWIDTH 720 0 -DWIDTH 12 0 -BBX 11 4 0 0 +SWIDTH 660 0 +DWIDTH 11 0 +BBX 11 3 0 0 BITMAP -0020 -0120 1120 -EEC0 +1120 +FFE0 ENDCHAR -STARTCHAR 0070 +STARTCHAR uniFEB4 ENCODING 65204 SWIDTH 780 0 DWIDTH 13 0 BBX 13 3 0 0 BITMAP -0100 1120 -EED8 +1120 +FFF8 ENDCHAR -STARTCHAR 0072 +STARTCHAR uniFEB5 ENCODING 65205 SWIDTH 960 0 DWIDTH 16 0 @@ -133177,8 +152981,8 @@ 0028 0028 0000 -0002 -0012 +0000 +0112 0112 40EC 8080 @@ -133187,27 +152991,28 @@ 4300 3C00 ENDCHAR -STARTCHAR 0071 +STARTCHAR uniFEB6 ENCODING 65206 SWIDTH 1020 0 DWIDTH 17 0 -BBX 17 13 1 -5 +BBX 17 14 1 -5 BITMAP 001000 001000 002800 002800 000000 -000200 +000000 011200 -40ED80 +011200 +40FF80 808000 808000 808000 430000 3C0000 ENDCHAR -STARTCHAR 006F +STARTCHAR uniFEB7 ENCODING 65207 SWIDTH 720 0 DWIDTH 12 0 @@ -133218,12 +153023,12 @@ 0280 0280 0000 -0020 -0120 +0000 1120 -EEC0 +1120 +FFE0 ENDCHAR -STARTCHAR 0070 +STARTCHAR uniFEB8 ENCODING 65208 SWIDTH 780 0 DWIDTH 13 0 @@ -133235,37 +153040,35 @@ 0280 0000 0000 -0100 1120 -EED8 +1120 +FFF8 ENDCHAR -STARTCHAR 0079 +STARTCHAR uniFEB9 ENCODING 65209 SWIDTH 1080 0 DWIDTH 18 0 -BBX 17 10 1 -5 +BBX 17 9 1 -5 BITMAP 000700 -000880 -001080 -012700 -40F800 +001880 +012080 +40FF00 80C000 808000 808000 430000 3C0000 ENDCHAR -STARTCHAR 0079 +STARTCHAR uniFEBA ENCODING 65210 SWIDTH 1080 0 DWIDTH 18 0 -BBX 18 10 1 -5 +BBX 18 9 1 -5 BITMAP 000700 -000880 -001080 -012100 +001880 +012080 40FFC0 80C000 808000 @@ -133273,63 +153076,59 @@ 430000 3C0000 ENDCHAR -STARTCHAR 0077 +STARTCHAR uniFEBB ENCODING 65211 SWIDTH 840 0 DWIDTH 14 0 -BBX 13 6 0 -1 +BBX 13 4 0 0 BITMAP 0070 -0088 -0108 -2270 -DF80 -0400 +2188 +2208 +FFF0 ENDCHAR -STARTCHAR 0078 +STARTCHAR uniFEBC ENCODING 65212 SWIDTH 780 0 DWIDTH 13 0 -BBX 13 6 0 -1 +BBX 13 4 0 0 BITMAP 00E0 -0110 -0210 -2420 -DFF8 -0800 +2310 +2410 +FFF8 ENDCHAR -STARTCHAR 0079 +STARTCHAR uniFEB9 ENCODING 65213 SWIDTH 1080 0 DWIDTH 18 0 BBX 17 12 1 -5 BITMAP -002000 -002000 +000800 +000800 +000000 000700 -000880 -001080 -012700 -40F800 +001880 +012080 +40FF00 80C000 808000 808000 430000 3C0000 ENDCHAR -STARTCHAR 0079 +STARTCHAR uniFEBA ENCODING 65214 SWIDTH 1080 0 DWIDTH 18 0 BBX 18 12 1 -5 BITMAP -002000 -002000 +000800 +000800 +000000 000700 -000880 -001080 -012100 +001880 +012080 40FFC0 80C000 808000 @@ -133337,37 +153136,35 @@ 430000 3C0000 ENDCHAR -STARTCHAR 0077 +STARTCHAR uniFEBB ENCODING 65215 SWIDTH 840 0 DWIDTH 14 0 -BBX 13 8 0 -1 +BBX 13 7 0 0 BITMAP -0200 -0200 +0080 +0080 +0000 0070 -0088 -0108 -2270 -DF80 -0400 +2188 +2208 +FFF0 ENDCHAR -STARTCHAR 0078 +STARTCHAR uniFEBC ENCODING 65216 SWIDTH 780 0 DWIDTH 13 0 -BBX 13 8 0 -1 +BBX 13 7 0 0 BITMAP -0400 -0400 +0100 +0100 +0000 00E0 -0110 -0210 -2420 -DFF8 -0800 +2310 +2410 +FFF8 ENDCHAR -STARTCHAR 00BC +STARTCHAR uniFEC1 ENCODING 65217 SWIDTH 540 0 DWIDTH 9 0 @@ -133378,13 +153175,13 @@ 20 20 20 -26 -29 +20 +2E 31 -26 -F8 +21 +FE ENDCHAR -STARTCHAR 00BD +STARTCHAR uniFEC2 ENCODING 65218 SWIDTH 540 0 DWIDTH 9 0 @@ -133395,13 +153192,13 @@ 2000 2000 2000 -2600 -2900 +2000 +2E00 3100 -2200 +2100 FF80 ENDCHAR -STARTCHAR 00BC +STARTCHAR uniFEC3 ENCODING 65219 SWIDTH 480 0 DWIDTH 8 0 @@ -133412,13 +153209,13 @@ 40 40 40 -4C -52 +40 +5C 62 -4C -F0 +42 +FC ENDCHAR -STARTCHAR 00BD +STARTCHAR uniFEC4 ENCODING 65220 SWIDTH 600 0 DWIDTH 10 0 @@ -133429,13 +153226,13 @@ 2000 2000 2000 -2600 -2900 +2000 +2E00 3100 -2200 +2100 FFC0 ENDCHAR -STARTCHAR 00BC +STARTCHAR uniFEC5 ENCODING 65221 SWIDTH 540 0 DWIDTH 9 0 @@ -133443,16 +153240,16 @@ BITMAP 20 30 +20 26 20 20 -26 -29 +2E 31 -26 -F8 +21 +FE ENDCHAR -STARTCHAR 00BD +STARTCHAR uniFEC6 ENCODING 65222 SWIDTH 600 0 DWIDTH 10 0 @@ -133460,16 +153257,16 @@ BITMAP 2000 3000 +2000 2600 2000 2000 -2600 -2900 +2E00 3100 -2200 +2100 FFC0 ENDCHAR -STARTCHAR 00BC +STARTCHAR uniFEC7 ENCODING 65223 SWIDTH 540 0 DWIDTH 9 0 @@ -133477,16 +153274,16 @@ BITMAP 20 30 +20 26 20 20 -26 -29 +2E 31 -26 -F8 +21 +FE ENDCHAR -STARTCHAR 00BD +STARTCHAR uniFEC8 ENCODING 65224 SWIDTH 600 0 DWIDTH 10 0 @@ -133494,16 +153291,16 @@ BITMAP 2000 3000 +2000 2600 2000 2000 -2600 -2900 +2E00 3100 -2200 +2100 FFC0 ENDCHAR -STARTCHAR 00CB +STARTCHAR uniFEC9 ENCODING 65225 SWIDTH 600 0 DWIDTH 10 0 @@ -133522,7 +153319,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 00CA +STARTCHAR uniFECA ENCODING 65226 SWIDTH 540 0 DWIDTH 9 0 @@ -133540,7 +153337,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 00C8 +STARTCHAR uniFECB ENCODING 65227 SWIDTH 420 0 DWIDTH 7 0 @@ -133549,10 +153346,10 @@ 1C 20 40 -26 -F8 +22 +FC ENDCHAR -STARTCHAR 00C5 +STARTCHAR uniFECC ENCODING 65228 SWIDTH 420 0 DWIDTH 7 0 @@ -133564,7 +153361,7 @@ 38 C6 ENDCHAR -STARTCHAR 00CB +STARTCHAR uniFECD ENCODING 65229 SWIDTH 600 0 DWIDTH 10 0 @@ -133587,7 +153384,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 00CA +STARTCHAR uniFECE ENCODING 65230 SWIDTH 540 0 DWIDTH 9 0 @@ -133609,7 +153406,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 00C8 +STARTCHAR uniFECF ENCODING 65231 SWIDTH 420 0 DWIDTH 7 0 @@ -133622,10 +153419,10 @@ 1C 20 40 -26 -F8 +22 +FC ENDCHAR -STARTCHAR 00C5 +STARTCHAR uniFED0 ENCODING 65232 SWIDTH 480 0 DWIDTH 8 0 @@ -133641,7 +153438,7 @@ 1C E3 ENDCHAR -STARTCHAR 00CF +STARTCHAR uniFED1 ENCODING 65233 SWIDTH 900 0 DWIDTH 15 0 @@ -133660,7 +153457,7 @@ 4038 3FC0 ENDCHAR -STARTCHAR 00CF +STARTCHAR uniFED2 ENCODING 65234 SWIDTH 960 0 DWIDTH 16 0 @@ -133679,10 +153476,10 @@ 403B 3FC0 ENDCHAR -STARTCHAR 00CC +STARTCHAR uniFED3 ENCODING 65235 -SWIDTH 360 0 -DWIDTH 6 0 +SWIDTH 240 0 +DWIDTH 4 0 BBX 5 11 0 0 BITMAP 20 @@ -133697,24 +153494,24 @@ 08 F0 ENDCHAR -STARTCHAR 00CC +STARTCHAR uniFED4 ENCODING 65236 SWIDTH 480 0 DWIDTH 8 0 BBX 8 10 0 0 BITMAP -08 -08 +10 +10 00 00 18 24 24 -28 -10 -EF +18 +18 +E7 ENDCHAR -STARTCHAR 00D2 +STARTCHAR uniFED5 ENCODING 65237 SWIDTH 600 0 DWIDTH 10 0 @@ -133735,7 +153532,7 @@ 4200 3C00 ENDCHAR -STARTCHAR 00D2 +STARTCHAR uniFED6 ENCODING 65238 SWIDTH 720 0 DWIDTH 12 0 @@ -133756,7 +153553,7 @@ 4200 3C00 ENDCHAR -STARTCHAR 00CC +STARTCHAR uniFED7 ENCODING 65239 SWIDTH 240 0 DWIDTH 4 0 @@ -133774,7 +153571,7 @@ 08 F0 ENDCHAR -STARTCHAR 00CC +STARTCHAR uniFED8 ENCODING 65240 SWIDTH 480 0 DWIDTH 8 0 @@ -133787,82 +153584,79 @@ 18 24 24 -28 -10 -EF +18 +18 +E7 ENDCHAR -STARTCHAR 0xFED9 +STARTCHAR uni0075 ENCODING 65241 SWIDTH 660 0 DWIDTH 11 0 -BBX 9 10 1 0 +BBX 10 10 1 0 BITMAP -0100 -0180 -0100 -0900 -1900 -0900 -1900 -0100 -0100 -FE00 +0080 +00C0 +0080 +0480 +0C80 +0480 +8C80 +8080 +C080 +7F00 ENDCHAR -STARTCHAR 0xFEDA +STARTCHAR uni0075 ENCODING 65242 -SWIDTH 900 0 -DWIDTH 15 0 -BBX 14 11 1 -1 -BITMAP -0010 -0018 -0010 -0210 -0610 -0210 -4610 -8010 -8010 -C06C -7F80 -ENDCHAR -STARTCHAR 00D4 -ENCODING 65243 SWIDTH 660 0 DWIDTH 11 0 -BBX 10 11 0 0 +BBX 11 10 1 0 BITMAP +0080 00C0 -0300 -0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0400 -F800 +0080 +0480 +0C80 +0480 +8C80 +8080 +C080 +7FE0 ENDCHAR -STARTCHAR 00D5 +STARTCHAR uniFEDB +ENCODING 65243 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 10 0 0 +BITMAP +01 +06 +18 +20 +20 +10 +0C +02 +02 +FC +ENDCHAR +STARTCHAR uniFEDC ENCODING 65244 SWIDTH 660 0 DWIDTH 11 0 -BBX 11 11 0 0 +BBX 11 10 0 0 BITMAP -00C0 +0080 0300 0C00 -3000 -4000 -4000 -2000 -1800 -0400 -0700 -F8E0 +1000 +1000 +0800 +0600 +0100 +0100 +FFE0 ENDCHAR -STARTCHAR 00DE +STARTCHAR uniFEDD ENCODING 65245 SWIDTH 540 0 DWIDTH 9 0 @@ -133881,13 +153675,14 @@ 84 78 ENDCHAR -STARTCHAR 00DE +STARTCHAR uniFEDE ENCODING 65246 SWIDTH 540 0 DWIDTH 9 0 BBX 9 14 1 -4 BITMAP 0200 +0300 0200 0200 0200 @@ -133895,17 +153690,16 @@ 0200 0200 0200 -0300 -4280 +4380 8200 8200 8400 7800 ENDCHAR -STARTCHAR 00DC +STARTCHAR uniFEDF ENCODING 65247 -SWIDTH 300 0 -DWIDTH 5 0 +SWIDTH 240 0 +DWIDTH 4 0 BBX 4 10 0 0 BITMAP 20 @@ -133919,14 +153713,14 @@ 20 C0 ENDCHAR -STARTCHAR 00DC +STARTCHAR uniFEE0 ENCODING 65248 SWIDTH 240 0 DWIDTH 4 0 BBX 4 10 0 0 BITMAP 20 -20 +30 20 20 20 @@ -133934,9 +153728,9 @@ 20 20 20 -D0 +F0 ENDCHAR -STARTCHAR 00E3 +STARTCHAR uniFEE1 ENCODING 65249 SWIDTH 420 0 DWIDTH 7 0 @@ -133956,7 +153750,7 @@ 80 80 ENDCHAR -STARTCHAR 00E3 +STARTCHAR uniFEE2 ENCODING 65250 SWIDTH 420 0 DWIDTH 7 0 @@ -133976,7 +153770,7 @@ 80 80 ENDCHAR -STARTCHAR 00E0 +STARTCHAR uniFEE3 ENCODING 65251 SWIDTH 480 0 DWIDTH 8 0 @@ -133987,7 +153781,7 @@ 32 EC ENDCHAR -STARTCHAR 00E0 +STARTCHAR uniFEE4 ENCODING 65252 SWIDTH 540 0 DWIDTH 9 0 @@ -133998,7 +153792,7 @@ 3300 ED80 ENDCHAR -STARTCHAR 00E7 +STARTCHAR uniFEE5 ENCODING 65253 SWIDTH 600 0 DWIDTH 10 0 @@ -134015,7 +153809,7 @@ 82 7C ENDCHAR -STARTCHAR 00E7 +STARTCHAR uniFEE6 ENCODING 65254 SWIDTH 540 0 DWIDTH 9 0 @@ -134032,7 +153826,7 @@ 8200 7C00 ENDCHAR -STARTCHAR 00E4 +STARTCHAR uniFEE7 ENCODING 65255 SWIDTH 360 0 DWIDTH 6 0 @@ -134048,7 +153842,7 @@ 08 F0 ENDCHAR -STARTCHAR 00E5 +STARTCHAR uniFEE8 ENCODING 65256 SWIDTH 360 0 DWIDTH 6 0 @@ -134061,9 +153855,9 @@ 10 10 10 -EC +FC ENDCHAR -STARTCHAR 0xFEE9 +STARTCHAR uniFEE9 ENCODING 65257 SWIDTH 360 0 DWIDTH 6 0 @@ -134076,7 +153870,7 @@ 90 60 ENDCHAR -STARTCHAR 0xFEEA +STARTCHAR uniFEEA ENCODING 65258 SWIDTH 420 0 DWIDTH 7 0 @@ -134090,7 +153884,7 @@ 70 0C ENDCHAR -STARTCHAR 00EA +STARTCHAR uniFEEB ENCODING 65259 SWIDTH 480 0 DWIDTH 8 0 @@ -134104,7 +153898,7 @@ 31 CE ENDCHAR -STARTCHAR 00EB +STARTCHAR uniFEEC ENCODING 65260 SWIDTH 360 0 DWIDTH 6 0 @@ -134122,7 +153916,7 @@ 28 18 ENDCHAR -STARTCHAR 0xFEED +STARTCHAR uniFEED ENCODING 65261 SWIDTH 540 0 DWIDTH 9 0 @@ -134137,7 +153931,7 @@ 84 78 ENDCHAR -STARTCHAR 0xFEEE +STARTCHAR uniFEEE ENCODING 65262 SWIDTH 600 0 DWIDTH 10 0 @@ -134152,7 +153946,7 @@ 8400 7800 ENDCHAR -STARTCHAR 00F0 +STARTCHAR uniFEEF ENCODING 65263 SWIDTH 660 0 DWIDTH 11 0 @@ -134167,7 +153961,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 00F0 +STARTCHAR uniFEF0 ENCODING 65264 SWIDTH 720 0 DWIDTH 12 0 @@ -134180,7 +153974,7 @@ 4180 3E00 ENDCHAR -STARTCHAR 00F0 +STARTCHAR uniFEF1 ENCODING 65265 SWIDTH 720 0 DWIDTH 12 0 @@ -134198,7 +153992,7 @@ 2800 2800 ENDCHAR -STARTCHAR 00F0 +STARTCHAR uniFEF2 ENCODING 65266 SWIDTH 660 0 DWIDTH 11 0 @@ -134214,7 +154008,7 @@ 2800 2800 ENDCHAR -STARTCHAR 00E4 +STARTCHAR uniFEF3 ENCODING 65267 SWIDTH 360 0 DWIDTH 6 0 @@ -134229,7 +154023,7 @@ 50 50 ENDCHAR -STARTCHAR 00E5 +STARTCHAR uniFEF4 ENCODING 65268 SWIDTH 360 0 DWIDTH 6 0 @@ -134238,12 +154032,12 @@ 10 10 10 -EC +FC 00 28 28 ENDCHAR -STARTCHAR 00FA +STARTCHAR uniFEF5 ENCODING 65269 SWIDTH 540 0 DWIDTH 9 0 @@ -134264,7 +154058,7 @@ 24 38 ENDCHAR -STARTCHAR 00FB +STARTCHAR uniFEF6 ENCODING 65270 SWIDTH 660 0 DWIDTH 11 0 @@ -134286,7 +154080,7 @@ 30C0 E000 ENDCHAR -STARTCHAR 00FA +STARTCHAR uniFEF7 ENCODING 65271 SWIDTH 540 0 DWIDTH 9 0 @@ -134308,7 +154102,7 @@ 24 38 ENDCHAR -STARTCHAR 00FB +STARTCHAR uniFEF8 ENCODING 65272 SWIDTH 660 0 DWIDTH 11 0 @@ -134331,7 +154125,7 @@ 30C0 E000 ENDCHAR -STARTCHAR 00FA +STARTCHAR uniFEF9 ENCODING 65273 SWIDTH 540 0 DWIDTH 9 0 @@ -134354,7 +154148,7 @@ 60 80 ENDCHAR -STARTCHAR 00FB +STARTCHAR uniFEFA ENCODING 65274 SWIDTH 660 0 DWIDTH 11 0 @@ -134378,7 +154172,7 @@ 6000 8000 ENDCHAR -STARTCHAR 00FA +STARTCHAR uniFEFB ENCODING 65275 SWIDTH 540 0 DWIDTH 9 0 @@ -134395,7 +154189,7 @@ 24 38 ENDCHAR -STARTCHAR 00FB +STARTCHAR uniFEFC ENCODING 65276 SWIDTH 660 0 DWIDTH 11 0 Index: xc/extras/freetype2/CHANGES diff -u xc/extras/freetype2/CHANGES:1.1.1.2 xc/extras/freetype2/CHANGES:removed --- xc/extras/freetype2/CHANGES:1.1.1.2 Tue May 15 23:45:32 2001 +++ xc/extras/freetype2/CHANGES Fri Jan 18 15:21:39 2002 @@ -1,1134 +0,0 @@ -LATEST CHANGES BETWEEN 2.0.2 and 2.0.1 - - - I. CHANGES TO THE MODULES / FONT DRIVERS: - - - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to - avoid legal problems with the Apple patents. It seems that we - mistakenly turned this option on in previous releases of the build. - - note that if you want to use the bytecode interpreter, in order to - get high-quality TrueType rendering, you'll need to toggle by hand - the definition of the TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro - in the file "include/freetype/config/ftoption.h" - - - The CFF driver has been improved by Tom Kacvinsky and Sander van der Wal: - - * support for "seac" emulation - * support for "dotsection" - * support for retrieving glyph names through "FT_Get_Glyph_Name" - - The first two items are necessary to correctly a large number of - Type 1 fonts converted to the CFF formats by Adobe Acrobat. - - - - the Type 1 driver was also improved by Tom & others: - - * better EM size computation - - * better support for synthetic (transformed) fonts - - * the Type 1 driver returns the charstrings corresponding to - each glyph in the "glyph->control_data" field after a call to - "FT_Load_Glyph" (thanks Ha Shao) - - - - various other bugfixes, including the following: - - * fixed a nasty memory leak in the Type 1 driver - - * the autohinter and the pcf driver used static writable data - when they shouldn't - - * many casts were added to make the code more 64-bits safe. - it also now compiles on Windows XP 64-bits without warnings - - * some incorrect writable statics were removed in the "autohint" - and "pcf" drivers. FT2 now compiles on Epoc again.. - - - II. CHANGES TO THE HIGH-LEVEL API - - - the library header files inclusion scheme has been changed. The old - scheme looked like: - - #include - #include - #include - #include - - use: - - #include - #include FT_FREETYPE_H - #include FT_GLYPH_H - #include FT_CACHE_H - #include FT_CACHE_IMAGE_H - - NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS RELEASE. - HOWEVER, WE DON'T GUARANTEE THAT THIS WILL STILL BE TRUE IN THE NEXT - ONE (A.K.A. FREETYPE 2.1) - - the file is used to define the header filename macros. - The complete and commented list of macros is available in the API - reference under the section name "Header File Macros" in Chapter I. - - For more information, see section I of the following document: - - http://www.freetype.org/freetype2/docs/tutorial/step1.html - or http://freetype.sourceforge.net/freetype2/docs/tutorial/step1.html - - - - many, many comments have been added to the public source file in - order to automatically generate the API Reference through the - "docmaker.py" Python script. - - The latter has been updated to support the grouping of sections - in chapters, and better index sort. See: - - http://www.freetype.org/freetype2/docs/reference/ft2-toc.html - - - III. CHANGES TO THE BUILD PROCESS - - - - if you're not building FreeType 2 with our own build system (i.e. with - your own Makefiles or project files), you'll need to be aware that the - build process as changed a little bit. Namely: - - - you don't need to put the "src" directory in the include path - when compiling any FT2 component - - - instead, simply put the component's directory in the current - include path. - - So, if you were doing something like: - - cc -c -Iinclude -Isrc src/base/ftbase.c - - change the line to: - - cc -c -Iinclude -Isrc/base src/base/ftbase.c - - - If you were doing something like: - - cd src/base - cc -c -I../../include -I.. ftbase.c - - change it to: - - cd src/base - cc -c -I../../include ftbase.c - - - - the build system has changed slightly when compiling by hand (either - from the command line or from an IDE). You don't need to put the "src" - directory in the include path anymore. Rather, place each component's - path.. See INSTALL and "docs/BUILD" for details.. - - - -========================================================================= -LATEST CHANGES BETWEEN 2.0.1 and 2.0: - - 2.0.1 introduces a few changes: - - - fixed many bugs related to the support of CFF / OpenType fonts. - These formats are now much better supported though there is still - work planned to deal with Charset tables and PDF-embedded CFF - files that use the old "seac" command. - - - the library could not be compiled in debug mode with a very small - number of C compilers whose pre-processors didn't implement the - "##" directive correctly (i.e. per se the ANSI C specification!) - An elegant fix was found. - - - added support for the free Borland command-line C++ Builder compiler - use "make setup bcc32" to use it. Also fixed a few source lines that - generated new warnings with BCC32. - - - fixed a bug in FT_Outline_Get_BBox when computing the extrema of - a conic Bezier arc. - - - updated the INSTALL file to add IDE compilation. - - - other minor bug fixes, from invalid Type 1 style flags to correct - support of synthetic (obliqued) fonts in the auto-hinter, better - support for embedded bitmaps in a SFNT font. - - - fixed some problems with "freetype-config" - - - Finally, the "standard" scheme for including FreeType headers is now - gradually changing, but this will be explained in a later release - (probably 2.0.2) ... - - And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi for - their contributions! - -========================================================================= -CHANGES BETWEEN beta8 and 2.0 - - - changed the default installation path for public headers from - "include/freetype" to "include/freetype2". - - Also added a new "freetype-config" that is automatically - generated and installed on Unix and Cygwin systems. The - script itself is used to retrieve the current install path, - C compilation flags as well as linker flags.. - - - fixed several small bugs: - - - incorrect max advance width for fixed-pitch Type 1 fonts - - - incorrect glyph names for certain TrueType fonts - - - the glyph advance was not copied when FT_Glyph_To_Bitmap was called - - - the linearHoriAdvance and linerVertAdvance fields were not - correctly returned for glyphs processed by the auto-hinter - - - "type1z" renamed back to "type1"; the old "type1" module has been - removed - - - revamped the build system to make it a lot more generic. This will - allow us to re-use nearly un-modified in lots of other projects - (including FreeType Layout) - - - changed "cid" to use "psaux" too.. - - - added the cache sub-system. See as well as the - sources in "src/cache". Note that it compiles but is still untested - for now .. - - - updated "docs/docmaker.py", a draft API reference is available at - http://www.freetype.org/ft2api.html - - - changed "type1" to use "psaux" - - - created a new module named "psaux" to hold the Type 1 & Type 2 parsing - routines. It should be used by "type1", "cid" and "cff" in the future - - - fixed an important bug in "FT_Glyph_Get_CBox" - - - fixed some compiler warnings that happened since the TrueType - bytecode decoder was deactivated by default.. - - - fixed two memory leaks: - - the memory manager (16 bytes) isn't released in FT_Done_FreeType !! - - - using custom input streams, the copy of the original stream - was never released - - - fixed the auto-hinter by performing automatic computation of the - "filling direction" of each glyph. This is done through a simple and - fast approximation, and seems to work (problems spotted by Werner - though). The Arphic fonts are a lot nicer though there are still a - lot of things to do to handle Asian fonts correctly.. - -=========================================================================== -BETA-8 (RELEASE CANDIDATE) CHANGES - - - deactivated the trueType bytecode interpreter by default - - - deactivated the "src/type1" font driver. Now "src/type1z" is - used by default.. - - - updates to the build system. We now compile the library correctly - under Unix system through "configure" which is automatically called - on the first "make" invocation. - - - added the auto-hinting module !!. Fixing some bugs here and there.. - - - found some bugs in the composite loader (seac) of the Type1-based - font drivers.. - - - renamed the directory "freetype2/config" to "freetype2/builds" and - updated all relevant files.. - - - found a memory leak in the "type1" driver - - - incorporated Tom's patches to support flex operators correctly - in OpenType/CFF fonts.. Now all I need is to support pure CFF - and CEF fonts to be done with this driver.. :-) - - - added the Windows FNT/FON driver in "src/winfonts". For now, - it always "simulates" a Unicode charmap, so it shouldn't be - considered completed right now.. - - It's there to be more a proof of concept than anything else - anyway. The driver is a single C source file, that compiles - to 3 Kb of code.. - - I'm still working on the PCF/BDF drivers.. but I'm too lazy - to finish them now.. - - - - CHANGES TO THE HIGH-LEVEL API - - o FT_Get_Kerning has a new parameter that allows you to select - the coordinates of the kerning vector ( font units, scaled, - scaled + grid-fitted ). - - o the outline functions are now in and not - part of anymore - - o now contains declarations for - FT_New_Library, FT_Done_Library, FT_Add_Default_Modules - - o the so-called convenience functions have moved from "ftoutln.c" - to "ftglyph.c", and are thus available with this optional component - of the library. They are declared in now.. - - o anti-aliased rendering is now the default for FT_Render_Glyph - (i.e. corresponds to render_mode == 0 == ft_render_mode_normal). - To generate a monochrome bitmap, use ft_render_mode_mono, or the - FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char. - - FT_LOAD_ANTI_ALIAS is still defined, but values to 0. - - o now include , - solving a few headaches :-) - - o the type FT_GlyphSlotRec has now a "library" field. - - - - - CHANGES TO THE "ftglyph.h" API - - This API has been severely modified in order to make it simpler, - clearer, and more efficient. It certainly now looks like a real - "glyph factory" object, and allows client applications to manage - (i.e. transform, bbox and render) glyph images without ever knowing - their original format. - - - added support for CID-keyed fonts to the CFF driver. - maybe support for pure CFF + CEF fonts should come in ?? - - - - cleaned up source code in order to avoid two functions with the - same name. Also changed the names of the files in "type1z" from - "t1XXXX" to "z1XXXX" in order to avoid any conflicts. - - "make multi" now works well :-) - - Also removed the use of "cidafm" for now, even if the source files - are still there. This functionality will certainly go into a specific - module.. - - - - - ADDED SUPPORT FOR THE AUTO-HINTER - - It works :-) I have a demo program which simply is a copy of "ftview" - that does a FT_Add_Module( library, &autohinter_module_class ) after - library initialisation, and Type 1 & OpenType/CFF fonts are now hinted. - - CID fonts are not hinted, as they include no charmap and the auto-hinter - doesn't include "generic" global metrics computations yet.. - - Now, I need to release this thing to the FreeType 2 source.. - - - - - - - CHANGES TO THE RENDERER MODULES - - the monochrome and smooth renderers are now in two distinct directories, - namely "src/raster1" and "src/smooth". Note that the old "src/renderer" - is now gone.. - - I ditched the 5-gray-levels renderers. Basically, it involved a simple - #define toggle in 'src/raster1/ftraster.c' - - FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now select - the best renderer available, depending on render mode. If the current - renderer for a given glyph image format isn't capable of supporting - the render mode, another one will be found in the library's list. - - This means that client applications do not need to switch or set the - renderers themselves (as in the latest change), they'll get what they - want automatically... At last.. - - Changed the demo programs accordingly.. - - - - - MAJOR INTERNAL REDESIGN: - - A lot of internal modifications have been performed lately on the - source in order to provide the following enhancements: - - - more generic module support: - - The FT_Module type is now defined to represent a handle to a given - module. The file contains the FT_Module_Class - definition, as well as the module-loading public API - - The FT_Driver type is still defined, and still represents a pointer - to a font driver. Note that FT_Add_Driver is replaced by FT_Add_Module, - FT_Get_Driver by FT_Get_Module, etc.. - - - - support for generic glyph image types: - - The FT_Renderer type is a pointer to a module used to perform various - operations on glyph image. - - Each renderer is capable of handling images in a single format - (e.g. ft_glyph_format_outline). Its functions are used to: - - - transform an glyph image - - render a glyph image into a bitmap - - return the control box (dimensions) of a given glyph image - - - The scan converters "ftraster.c" and "ftgrays.c" have been moved - to the new directory "src/renderer", and are used to provide two - default renderer modules. - - One corresponds to the "standard" scan-converter, the other to the - "smooth" one. - - The current renderer can be set through the new function - FT_Set_Renderer. - - The old raster-related function FT_Set_Raster, FT_Get_Raster and - FT_Set_Raster_Mode have now disappeared, in favor of the new: - - FT_Get_Renderer - FT_Set_Renderer - - see the file for more details.. - - These changes were necessary to properly support different scalable - formats in the future, like bi-color glyphs, etc.. - - - - glyph loader object: - - A new internal object, called a 'glyph loader' has been introduced - in the base layer. It is used by all scalable format font drivers - to load glyphs and composites. - - This object has been created to reduce the code size of each driver, - as each one of them basically re-implemented its functionality. - - See and the FT_GlyphLoader type for - more information.. - - - - - FT_GlyphSlot had new fields: - - In order to support extended features (see below), the FT_GlyphSlot - structure has a few new fields: - - linearHoriAdvance: this field gives the linearly scaled (i.e. - scaled but unhinted) advance width for the glyph, - expressed as a 16.16 fixed pixel value. This - is useful to perform WYSIWYG text. - - linearVertAdvance: this field gives the linearly scaled advance - height for the glyph (relevant in vertical glyph - layouts only). This is useful to perform - WYSIWYG text. - - Note that the two above field replace the removed "metrics2" field - in the glyph slot. - - advance: this field is a vector that gives the transformed - advance for the glyph. By default, it corresponds - to the advance width, unless FT_LOAD_VERTICAL_LAYOUT - was specified when calling FT_Load_Glyph or FT_Load_Char - - bitmap_left: this field gives the distance in integer pixels from - the current pen position to the left-most pixel of - a glyph image WHEN IT IS A BITMAP. It is only valid - when the "format" field is set to - "ft_glyph_format_bitmap", for example, after calling - the new function FT_Render_Glyph. - - bitmap_top: this field gives the distance in integer pixels from - the current pen position (located on the baseline) to - the top-most pixel of the glyph image WHEN IT IS A - BITMAP. Positive values correspond to upwards Y. - - loader: this is a new private field for the glyph slot. Client - applications should not touch it.. - - - - support for transforms and direct rendering in FT_Load_Glyph: - - Most of the functionality found in has been - moved to the core library. Hence, the following: - - - a transform can be specified for a face through FT_Set_Transform. - this transform is applied by FT_Load_Glyph to scalable glyph images - (i.e. NOT TO BITMAPS) before the function returns, unless the - bit flag FT_LOAD_IGNORE_TRANSFORM was set in the load flags.. - - - - once a glyph image has been loaded, it can be directly converted to - a bitmap by using the new FT_Render_Glyph function. Note that this - function takes the glyph image from the glyph slot, and converts - it to a bitmap whose properties are returned in "face.glyph.bitmap", - "face.glyph.bitmap_left" and "face.glyph.bitmap_top". The original - native image might be lost after the conversion. - - - - when using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph - and FT_Load_Char functions will call FT_Render_Glyph automatically - when needed. - - - - - - reformated all modules source code in order to get rid of the basic - data types redifinitions (i.e. "TT_Int" instead of "FT_Int", "T1_Fixed" - instead of "FT_Fixed"). Hence the format-specific prefixes like "TT_", - "T1_", "T2_" and "CID_" are only used for relevant structures.. - -============================================================================ -OLD CHANGES FOR BETA 7 - - - bug-fixed the OpenType/CFF parser. It now loads and displays my two - fonts nicely, but I'm pretty certain that more testing is needed :-) - - - fixed the crummy Type 1 hinter, it now handles accented characters - correctly (well, the accent is not always well placed, but that's - another problem..) - - - added the CID-keyed Type 1 driver in "src/cid". Works pretty well for - only 13 Kb of code ;-) Doesn't read AFM files though, nor the really - useful CMAP files.. - - - fixed two bugs in the smooth renderer (src/base/ftgrays.c). Thanks to - Boris Letocha for spotting them and providing a fix.. - - - fixed potential "divide by zero" bugs in ftcalc.c.. my god.. - - - added source code for the OpenType/CFF driver (still incomplete though..) - - - modified the SFNT driver slightly to perform more robust header - checks in TT_Load_SFNT_Header. This prevents certain font files - (e.g. some Type 1 Multiple Masters) from being incorrectly "recognized" - as TrueType font files.. - - - moved a lot of stuff from the TrueType driver to the SFNT module, - this allows greater code re-use between font drivers (e.g. TrueType, - OpenType, Compact-TrueType, etc..) - - - added a tiny segment cache to the SFNT Charmap 4 decoder, in order - to minimally speed it up.. - - - added support for Multiple Master fonts in "type1z". There is also - a new file named which defines functions to - manage them from client applications. - - The new file "src/base/ftmm.c" is also optional to the engine.. - - - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) + - small bug fixes in FT_Load_Glyph, the "type1" driver, etc.. - - - a minor fix to the Type 1 driver to let them apply the font matrix - correctly (used for many oblique fonts..) - - - some fixes for 64-bit systems (mainly changing some FT_TRACE calls - to use %p instead of %lx).. Thanks to Karl Robillard - - - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) + added - a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be cropped when - loaded from a file (maybe I should move the bitmap cropper to the - base layer ??). - - - changed the default number of gray levels of the smooth renderer to - 256 (instead of the previous 128). Of course, the human eye can't - see any difference ;-) - - - removed TT_MAX_SUBGLYPHS, there is no static limit on the number of - subglyphs in a TrueType font now.. - -============================================================================= -OLD CHANGES 16 May 2000 - - - tagged "BETA-6" in the CVS tree. This one is a serious release candidate - even though it doesn't incorporate the auto-hinter yet.. - - - various obsolete files were removed, and copyright header updated - - - finally updated the standard raster to fix the monochrome rendering bug - + re-enable support for 5-gray levels anti-aliasing (suck, suck..) - - - created new header files, and modified sources accordingly: - - - simple FreeType types, without the API - - definition of memory-management macros - - - added the "DSIG" (OpenType Digital Signature) tag to - - - light update/cleaning of the build system + changes to the sources in - order to get rid of _all_ compiler warnings with three compilers, i.e: - - gcc with "-ansi -pedantic -Wall -W", Visual C++ with "/W3 /WX" - and LCC - - IMPORTANT NOTE FOR WIN32-LCC USERS: - | - | It seems the C pre-processor that comes with LCC is broken, it - | doesn't recognize the ANSI standard directives # and ## correctly - | when one of the argument is a macro. Also, something like: - | - | #define F(x) print##x - | - | F(("hello")) - | - | will get incorrectly translated to: - | - | print "hello") - | - | by its pre-processor. For this reason, you simply cannot build - | FreeType 2 in debug mode with this compiler.. - - - - yet another massive grunt work. I've changed the definition of the - EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These now take - an argument, which is the function's return value type. - - This is necessary to compile FreeType as a DLL on Windows and OS/2. - Depending on the compiler used, a compiler-specific keyword like __export - or __system must be placed before (VisualC++) or after (BorlandC++) - the type.. - - Of course, this needed a lot of changes throughout the source code - to make it compile again... All cleaned up now, apparently.. - - Note also that there is a new EXPORT_VAR macro defined to allow the - _declaration_ of an exportable public (constant) variable. This is the - case of the raster interfaces (see ftraster.h and ftgrays.h), as well - as each module's interface (see sfdriver.h, psdriver.h, etc..) - - - new feature: it is now possible to pass extra parameters to font - drivers when creating a new face object. For now, this - capability is unused. It could however prove to be useful - in a near future.. - - the FT_Open_Args structure was changes, as well as the internal - driver interface (the specific "init_face" module function has now - a different signature). - - - updated the tutorial (not finished though). - - updated the top-level BUILD document - - - fixed a potential memory leak that could occur when loading embedded - bitmaps. - - - added the declaration of FT_New_Memory_Face in , as - it was missing from the public header (the implementation was already - in "ftobjs.c"). - - - the file has been seriously updated in order to - allow the automatic generation of error message tables. See the comments - within it for more information. - - - major directory hierarchy re-organisation. This was done for two things: - - * first, to ease the "manual" compilation of the library by requiring - at lot less include paths :-) - - * second, to allow external programs to effectively access internal - data fields. For example, this can be extremely useful if someone - wants to write a font producer or a font manager on top of FreeType. - - Basically, you should now use the 'freetype/' prefix for header inclusion, - as in: - - #include - #include - - Some new include sub-directories are available: - - a. the "freetype/config" directory, contains two files used to - configure the build of the library. Client applications should - not need to look at these normally, but they can if they want. - - #include - #include - - b. the "freetype/internal" directory, contains header files that - describes library internals. These are the header files that were - previously found in the "src/base" and "src/shared" directories. - - - As usual, the build system and the demos have been updated to reflect - the change.. - - Here's a layout of the new directory hierarchy: - - TOP - include/ - freetype/ - freetype.h - ... - config/ - ftoption.h - ftconfig.h - ftmodule.h - - internal/ - ftobjs.h - ftstream.h - ftcalc.h - ... - - src/ - base/ - ... - - sfnt/ - psnames/ - truetype/ - type1/ - type1z/ - - - Compiling a module is now much easier, for example, the following should - work when in the TOP directory on an ANSI build: - - gcc -c -I./include -I./src/base src/base/ftbase.c - gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c - etc.. - - (of course, using -Iconfig/ if you provide system-specific - configuration files). - - - - updated the structure of FT_Outline_Funcs in order to allow - direct coordinate scaling within the outline decomposition routine - (this is important for virtual "on" points with TrueType outlines) - + updates to the rasters to support this.. - - - updated the OS/2 table loading code in "src/sfnt/ttload.c" in order - to support version 2 of the table (see OpenType 1.2 spec) - - - created "include/tttables.h" and "include/t1tables.h" to allow - client applications to access some of the SFNT and T1 tables of a - face with a procedural interface (see FT_Get_Sfnt_Table()) - + updates to internal source files to reflect the change.. - - - some cleanups in the source code to get rid of warnings when compiling - with the "-Wall -W -ansi -pedantic" options in gcc. - - - debugged and moved the smooth renderer to "src/base/ftgrays.c" and - its header to "include/ftgrays.h" - - - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites with - up to 80 sub-glyphs !! Thanks to Werner - -================================================================================ -OLD CHANGES - 14-apr-2000 - - - fixed a bug in the TrueType glyph loader that prevented the correct - loading of some CJK glyphs in mingli.ttf - - - improved the standard Type 1 hinter in "src/type1" - - - fixed two bugs in the experimental Type 1 driver in "src/type1z" - to handle the new XFree86 4.0 fonts (and a few other ones..) - - - the smooth renderer is now complete and supports sub-banding - to render large glyphs at high speed. However, it is still located - in "demos/src/ftgrays.c" and should move to the library itself - in the next beta.. NOTE: The smooth renderer doesn't compile in - stand-alone mode anymore, but this should be fixed RSN.. - - - introduced convenience functions to more easily deal with glyph - images, see "include/ftglyph.h" for more details, as well as the - new demo program named "demos/src/ftstring.c" that demonstrates - its use - - - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1 - drivers (this is required by the auto-hinter to improve its results). - - - changed the raster interface, in order to allow client applications - to provide their own span-drawing callbacks. However, only the - smooth renderer supports this. See "FT_Raster_Params" in the - file "include/ftimage.h" - - - fixed a small bug in FT_MulFix that caused incorrect transform - computation !! - - - Note: The tutorial is out-of-date, grumpf.. :-( - -================================================================================ -OLD CHANGES - 12-mar-2000 - - - changed the layout of configuration files : now, all ANSI configuration - files are located in "freetype2/config". System-specific over-rides - can be placed in "freetype2/config/". - - - moved all configuration macros to "config/ftoption.h" - - - improvements in the Type 1 driver with AFM support - - - changed the fields in the FT_Outline structure : the old "flags" - array is re-named "tags", while all ancient flags are encoded into - a single unsigned int named "flags". - - - introduced new flags in FT_Outline.flags (see ft_outline_.... enums in - "ftimage.h"). - - - changed outline functions to "FT_Outline_" syntax - - - added a smooth anti-alias renderer to the demonstration programs - - added Mac graphics driver (thanks Just) - - - FT_Open_Face changed in order to received a pointer to a FT_Open_Args - descriptor.. - - - various cleanups, a few more API functions implemented (see FT_Attach_File) - - - updated some docs - -================================================================================ -OLD CHANGES - 22-feb-2000 - - - introduced the "psnames" module. It is used to: - - o convert a Postscript glyph name into the equivalent Unicode - character code (used by the Type 1 driver(s) to synthetize - on the fly a Unicode charmap). - - o provide an interface to retrieve the Postscript names of - the Macintosh, Adobe Standard & Adobe Expert character codes. - (the Macintosh names are used by the SFNT-module postscript - names support routines, while the other two tables are used - by the Type 1 driver(s)). - - - introduced the "type1z" alternate Type 1 driver. This is a (still - experimental) driver for the Type 1 format that will ultimately - replace the one in "src/type1". It uses pattern matching to load - data from the font, instead of a finite state analyzer. It works - much better than the "old" driver with "broken" fonts. It is also - much smaller (under 15 Kb). - - - the Type 1 drivers (both in "src/type1" and "src/type1z") are - nearly complete. They both provide automatic Unicode charmap - synthesis through the "psnames" module. No re-encoding vector - is needed. (note that they still leak memory due to some code - missing, and I'm getting lazy). - - Trivial AFM support has been added to read kerning information - but wasn't exactly tested as it should ;-) - - - The TrueType glyph loader has been seriously rewritten (see the - file "src/truetype/ttgload.c". It is now much, much simpler as - well as easier to read, maintain and understand :-) Preliminary - versions introduced a memory leak that has been reported by Jack - Davis, and is now fixed.. - - - introduced the new "ft_glyph_format_plotter", used to represent - stroked outlines like Windows "Vector" fonts, and certain Type 1 - fonts like "Hershey". The corresponding raster will be written - soon. - - - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new - interface that uses a structure to describe the input stream, - the driver (if required), etc.. - -TODO - - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap - - - Add a function like FT_Load_Character( face, char_code, load_flags ) - that would really embbed a call to FT_Get_Char_Index then FT_Load_Glyph - to ease developer's work. - - - Update the tutorial !! - - consider adding support for Multiple Master fonts in the Type 1 - drivers. - - - Test the AFM routines of the Type 1 drivers to check that kerning - information is returned correctly. - - - write a decent auto-gridding component !! We need this to release - FreeType 2.0 gold ! - - ------ less urgent needs : ---------- - - add a CFF/Type2 driver - - add a BDF driver - - add a FNT/PCF/HBF driver - - add a Speedo driver from the X11 sources - - -============================================================================== -OLDER CHANGES - 27-jan-2000 - - - updated the "sfnt" module interface to allow several SFNT-based - drivers to co-exist peacefully - - - updated the "T1_Face" type to better separate Postscript font content - from the rest of the FT_Face structure. Might be used later by the - CFF/Type2 driver.. - - - added an experimental replacement Type 1 driver featuring advanced - (and speedy) pattern matching to retrieve the data from postscript - fonts. - - - very minor changes in the implementation of FT_Set_Char_Size and - FT_Set_Pixel_Sizes (they now implement default to ligthen the - font driver's code). - - -============================================================================= -OLD MESSAGE - -This file summarizes the changes that occured since the last "beta" of FreeType 2. -Because the list is important, it has been divided into separate sections: - -Table Of Contents: - - I High-Level Interface (easier !) - II Directory Structure - III Glyph Image Formats - IV Build System - V Portability - VI Font Drivers - ------------------------------------------------------------------------------------------ -High-Level Interface : - - The high-level API has been considerably simplified. Here is how : - - - resource objects have disappeared. this means that face objects can - now be created with a single function call (see FT_New_Face and - FT_Open_Face) - - - when calling either FT_New_Face & FT_Open_Face, a size object and a - glyph slot object are automatically created for the face, and can be - accessed through "face->glyph" and "face->size" if one really needs to. - In most cases, there's no need to call FT_New_Size or FT_New_Glyph. - - - similarly, FT_Load_Glyph now only takes a "face" argument (instead of - a glyph slot and a size). Also, it's "result" parameter is gone, as - the glyph image type is returned in the field "face->glyph.format" - - - the list of available charmaps is directly accessible through - "face->charmaps", counting "face->num_charmaps" elements. Each - charmap has an 'encoding' field which specifies which known encoding - it deals with. Valid values are, for example : - - ft_encoding_unicode (for ASCII, Latin-1 and Unicode) - ft_encoding_apple_roman - ft_encoding_sjis - ft_encoding_adobe_standard - ft_encoding_adobe_expert - - other values may be added in the future. Each charmap still holds its - "platform_id" and "encoding_id" values in case the encoding is too - exotic for the current library - - ------------------------------------------------------------------------------------------ -Directory Structure: - - Should seem obvious to most of you: - - freetype/ - config/ -- configuration sub-makefiles - ansi/ - unix/ -- platform-specific configuration files - win32/ - os2/ - msdos/ - - include/ -- public header files, those to be included directly - by client apps - - src/ -- sources of the library - base/ -- the base layer - sfnt/ -- the sfnt "driver" (see the drivers section below) - truetype/ -- the truetype driver - type1/ -- the type1 driver - shared/ -- some header files shared between drivers - - demos/ -- demos/tools - - docs/ -- documentation (a bit empty for now) - ------------------------------------------------------------------------------------------ -Glyph Image Formats : - - Drivers are now able to register new glyph image formats within the library. - For now, the base layer supports of course bitmaps and vector outlines, but - one could imagine something different like colored bitmaps, bi-color - vectors or wathever else (Metafonts anyone ??). - - See the file `include/ftimage.h'. Note also that the type FT_Raster_Map is - gone, and is now replaced by FT_Bitmap, which should encompass all known - bitmap types. - - Each new image format must provide at least one "raster", i.e. a module - capable of transforming the glyph image into a bitmap. It's also possible - to change the default raster used for a given glyph image format. - - The default outline scan-converter now uses 128 levels of grays by default, - which tends to smooth many things. Note that the demo programs have been - updated significantly in order to display these.. - - ------------------------------------------------------------------------------------------ -Build system : - - You still need GNU Make to build the library. The build system has been - very seriously re-vamped in order to provide things like : - - - automatic host platform detection (reverting to 'config/ansi' - if it is not detected, with pseudo-standard compilation flags) - - - the ability to compile from the Makefiles with very different and - exotic compilers. Note that linking the library can be difficult for - some platforms. - - For example, the file `config/win32/lcclib.bat' is invoked by the - build system to create the ".lib" file with LCC-Win32 because its - librarian has too many flaws to be invoked directly from the Makefile. - - Here's how it works : - - - the first time you type `make', the build system runs a series of - sub-makefiles in order to detect your host platform. It then dumps - what it found, and creates a file called `config.mk' in the current - directory. This is a sub-Makefile used to define many important Make - variables used to build the library. - - - the second time, the build system detects the `config.mk' then use it - to build the library. All object files go into 'obj' by default, as - well as the library file, but this can easily be changed. - - Note that you can run "make setup" to force another host platform detection - even if a `config.mk' is present in the current directory. Another solution - is simply to delete the file, then re-run make. - - Finally, the default compiler for all platforms is gcc (for now, this will - hopefully changed in the future). You can however specify a different - compiler by specifying it after the 'setup' target as in : - - gnumake setup lcc on Win32 to use the LCC compiler - gnumake setup visualc on Win32 to use Visual C++ - - See the file `config//detect.mk' for a list of supported compilers - for your platforms. - - It should be relatively easy to write new detection rules files and - config.mk.. - - Finally, to build the demo programs, go to `demos' and launch GNU Make, - it will use the `config.mk' in the top directory to build the test - programs.. - ------------------------------------------------------------------------------------------ -Portability : - - In the previous beta, a single FT_System object was used to encompass - all low-level operations like thread synchronisation, memory management - and i/o access. This has been greatly simplified : - - - thread synchronisation has been dropped, for the simple reason that - the library is already re-entrant, and that if you really need two - threads accessing the same FT_Library, you should really synchronize - access to it yourself with a simple mutex. - - - memory management is performed through a very simple object called - "FT_Memory", which really is a table containing a table of pointers - to functions like malloc, realloc and free as well as some user data - (closure). - - - resources have disappeared (they created more problems than they - solved), and i/o management have been simplified greatly as a - result. Streams are defined through FT_Stream objects, which can - be either memory-based or disk-based. - - Note that each face has its own stream, which is closed only when - the face object is destroyed. Hence, a function like TT_Flush_Face - in 1.x cannot be directly supported. However, if you really need - something like this, you can easily tailor your own streams to achieve - the same feature at a lower level (and use FT_Open_Face instead of - FT_New_Face to create the face). - - See the file "include/ftsystem.h" for more details, as well as the - implementations found in "config/unix" and "config/ansi". - - ------------------------------------------------------------------------------------------ -Font Drivers : - - - The Font Driver interface has been modified in order to support - extensions & versioning. - - - The list of the font drivers that are statically linked to the - library at compile time is managed through a new configuration file - called `config//ftmodule.h'. - - This file is autogenerated when invoking `make modules'. This target - will parse all sub-directories of 'src', looking for a "module.mk" - rules file, used to describe the driver to the build system. - - Hence, one should call `make modules' each time a font driver is added - or removed from the `src' directory. - - - Finally, this version provides a "pseudo-driver" in `src/sfnt'. This - driver doesn't support font files directly, but provides services used - by all TrueType-like font drivers. Hence, its code is shared between - the TrueType & OpenType font formats, and possibly more formats to - come if we're lucky.. - ------------------------------------------------------------------------------------------ -Extensions support : - - The extensions support is inspired by the one found in 1.x. - - Now, each font driver has its own "extension registry", which lists - which extensions are available for the font faces managed by the driver. - - Extension ids are now strings, rather than 4-byte tags, as this is - usually more readable.. - - Each extension has: - - some data, associated to each face object - - an interface (table of function pointers) - - An extension that is format-specific should simply register itself - to the correct font driver. Here is some example code: - - // Registering an extensions - // - FT_Error FT_Init_XXXX_Extension( FT_Library library ) - { - FT_DriverInterface* tt_driver; - - driver = FT_Get_Driver( library, "truetype" ); - if (!driver) return FT_Err_Unimplemented_Feature; - - return FT_Register_Extension( driver, &extension_class ); - } - - - // Implementing the extensions - // - FT_Error FT_Proceed_Extension_XXX( FT_Face face ) - { - FT_XXX_Extension ext; - FT_XXX_Extension_Interface ext_interface; - - ext = FT_Get_Extension( face, "extensionid", &ext_interface ); - if (!ext) return error; - - return ext_interface->do_it(ext); - } - Index: xc/extras/freetype2/ChangeLog diff -u xc/extras/freetype2/ChangeLog:1.1.1.2 xc/extras/freetype2/ChangeLog:1.1.1.5 --- xc/extras/freetype2/ChangeLog:1.1.1.2 Tue May 15 23:45:32 2001 +++ xc/extras/freetype2/ChangeLog Mon Jan 14 11:51:55 2002 @@ -1,3 +1,1511 @@ +2002-01-07 David Turner + + * docs/BUGS, docs/CHANGES: updating documentation for 2.0.6 release + + * src/tools/docmaker.py: fixed HTML quoting in sources + + * include/freetype/config/ftoption.h: setting default options for + a release build (debugging off, bytecode interpreter off) + + * src/base/ftobjs.c, src/base/ftoutln.c, src/cache/ftccmap.c, + src/cff/cffload.c, src/cff/cffobjs.c, src/pshinter/pshalgo2.c, + src/sfnt/ttload.c, src/sfnt/ttsbit.c: removing small compiler + warnings (in pedantic compilation modes) + + +2002-01-05 David Turner + + * src/autohint/ahhint.c (ah_align_linked_edge): Modified computation + of auto-hinted stem widths; this avoids color fringes in + "ClearType-like" rendering. + + * src/truetype/ttgload.c (TT_Load_Glyph_Header, + TT_Load_Simple_Glyph, TT_Load_Composite_Glyph, load_truetype_glyph): + Modified the TrueType loader to make it more paranoid; this avoids + nasty buffer overflows in the case of invalid glyph data (as + encountered in the output of some buggy font converters). + +2002-01-04 David Turner + + * README.UNX: Added special README file for Unix users. + + * builds/unix/ftsystem.c (FT_New_Stream): Fixed typo. + + * src/base/ftobjs.c: Added #include FT_OUTLINE_H to get rid + of compiler warnings. + + * src/base/ftoutln.c (FT_Outline_Check): Remove compiler warning. + +2002-01-03 Werner Lemberg + + * src/type1/t1objs.c (T1_Face_Init): Add cast to avoid compiler + warning. + +2002-01-03 Keith Packard + + * builds/unix/ftsystem.c (FT_New_Stream): Added a fix to ensure that + all FreeType input streams are closed in child processes of a "fork" + on Unix systems. This is important to avoid (potential) access + control issues. + +2002-01-03 David Turner + + * src/type1/t1objs.c (T1_Face_Init): Fixed a bug that crashed the + library when dealing with certain weird fonts like "Stalingrad", in + "sadn.pfb" (this font has no full font name entry). + + * src/base/ftoutln.c, include/freetype/ftoutln.h (FT_Outline_Check): + New function to check the consistency of outline data. + + * src/base/ftobjs.c (FT_Load_Glyph): Use `FT_Outline_Check' to + ensure that loaded glyphs are valid. This allows certain fonts like + "tt1095m_.ttf" to be loaded even though it appears they contain + really funky glyphs. + + There still is a bug there, though. + + * src/truetype/ttgload.c (load_truetype_glyph): Fix error condition. + +2001-12-30 David Turner + + * src/autohint/ahhint.c (ah_hinter_load): Fix advance width + computation of auto-hinted glyphs. This noticeably improves the + spacing of letters in KDE and Gnome. + +2001-12-25 Antoine Leca + + * builds/dos/detect.mk: Correcting the order for Borland compilers: + 16-bit bcc was never selected, always overridden by 32-bit bcc32. + +2001-12-22 Francesco Zappa Nardelli + + * src/pfc/pcfread.c (pcf_load_font): Handle property `POINT_SIZE' + and fix incorrect computation of `available_sizes'. + +2001-12-22 David Turner + + * src/autohint/ahhint.c (ah_hinter_load): Auto-hinted glyphs had an + incorrect glyph advance in the case of mono-width fonts (like + Courier, Andale Mono, and others). + +2001-12-22 Detlef Würkner + + * builds/amiga/*: Adaptations to latest changes. + Support added for MorphOS. + +2001-12-22 Werner Lemberg + + * src/pshinter/pshrec.c (FT_COMPONENT): Redefine to `trace_pshrec'. + (ps_mask_table_merge, ps_hints_open, ps_hints_stem, + ps_hints_t1stem3, ps_hints_t2mask, ps_hints_t2counter): Fix + FT_ERROR messages. + * src/pshinter/pshalgo1.c (FT_COMPONENT): Define as + `trace_pshalgo1'. + * src/pshinter/pshalgo2.c (FT_COMPONENT): Define as + `trace_pshalgo2'. + * include/freetype/internal/ftdebug.h (FT_Trace): Updated. + + * docs/modules.txt: New file. + +2001-12-21 David Turner + + * src/pshinter/pshrec.c (ps_hints_t2mask, ps_hints_t2counter): + Ignore invalid "hintmask" and "cntrmask" operators (instead of + returning an error). Glyph 2028 of the CFF font "MSung-Light-Acro" + couldn't be rendered otherwise (it seems its charstring is buggy, + though this requires more analysis). + (FT_COMPONENT): Define. + + * src/cff/cffgload.c (CFF_Parse_CharStrings), src/psaux/t1decode.c + (T1_Decoder_Parse_Charstrings), src/pshinter/pshalgo2.c (*), Fixed a + bug where the X and Y axis where inversed in the postscript hinter. + This caused problem when displaying on non-square surfaces. + + * src/pshinter/pshalgo2.c: s/vertical/dimension/. + + * src/pshinter/pshglob.c (psh_globals_new): Replaced a floating + point constant with a fixed-float equivalent. For some reasons not + all compilers are capable of directly computing a floating pointer + constant casted to FT_Fixed, and will link a math library instead. + +2001-12-20 Werner Lemberg + + * src/cache/ftccache.c (ftc_node_destroy, ftc_cache_lookup): Fix + tracing strings. + * src/cache/ftccmap.c (ftc_cmap_family_init): Ditto. + * src/cache/ftcmanag.c (ftc_family_table_alloc, + ftc_family_table_free, FTC_Manager_Check): Ditto. + * src/cache/ftcsbits.c (ftc_sbit_node_load): Ditto. + + * src/base/ftobjs.c (FT_Done_Library): Remove compiler warning. + +2001-12-20 David Turner + + Added PostScript hinter support to the CFF and CID drivers. + + * include/freetype/internal/cfftypes.h (CFF_Font): New member + `pshinter'. + * src/cff/cffload.c (CFF_Get_Standard_Encoding): New function. + * src/cff/cffload.h: Updated. + * src/cff/cffgload.c (CFF_Init_Builder): Renamed to ... + (CFF_Builder_Init): This. + Added new argument `hinting'. + (CFF_Done_Builder): Renamed to ... + (CFF_Builder_Done): This. + (CFF_Init_Decoder): Added new argument `hinting'. + (CFF_Parse_CharStrings): Implement vstem support. + (CFF_Load_Glyph): Updated. + Add hinting support. + (cff_lookup_glyph_by_stdcharcode): Use CFF_Get_Standard_Encoding(). + (cff_argument_counts): Updated. + * src/cff/cffgload.h: Updated. + * src/cff/cffobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CFF_Size_Get_Globals_Funcs, CFF_Size_Done, CFF_Size_Init, + CFF_Size_Reset, CFF_GlyphSlot_Done, CFF_GLyphSlot_Init): New + functions. + (CFF_Init_Face): Renamed to ... + (CFF_Face_Init): This. + Add hinter support. + (CFF_Done_Face): Renamed to ... + (CFF_Face_Done): This. + (CFF_Init_Driver): Renamed to ... + (CFF_Driver_Init): This. + (CFF_Done_Driver): Renamed to ... + (CFF_Driver_Done): This. + * src/cff/cffobjs.h: Updated. + * src/cff/cffdrivr.c (cff_driver_class): Updated. + + * include/freetype/internal/t1types.h (CID_FaceRec): New member + `pshinter'. + * src/cid/cidgload.c (CID_Load_Glyph): Add hinter support. + * src/cid/cidobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CID_GlyphSlot_Done, CID_GlyphSlot_Init, CID_Size_Get_Globals_Funcs, + CID_Size_Done, CID_Size_Init, CID_Size_Reset): New functions. + (CID_Done_Face): Renamed to ... + (CID_Face_Done): This. + (CID_Init_Face): Renamed to ... + (CID_Face_Init): This. + Add hinting support. + (CID_Init_Driver): Renamed to ... + (CID_Driver_Init): This. + (CID_Done_Driver): Renamed to ... + (CID_Driver_Done): This. + * src/cid/cidobjs.h: Updated. + * src/cidriver.c: Updated. + + * src/pshinter/pshrec.c (t2_hint_stems): Fixed. + + * src/base/ftobjs.c (FT_Done_Library): Fixed a stupid bug that + crashed the library on exit. + + * src/type1/t1gload.c (T1_Load_Glyph): Enable font matrix + transformation of hinted glyphs. + + * src/cid/cidload.c (cid_read_subrs): Fix error condition. + + * src/cid/cidobjs.c (CID_Face_Done): Fixed a memory leak; the subrs + routines were never released when CID faces were destroyed. + + * src/cff/cffload.h, src/cff/cffload.c, src/cff/cffgload.c: Updated + to move the definition of encoding tables back within "cffload.c" + instead of making them part of a shared header (causing problems in + "multi" builds). This reverts change 2001-08-08. + + * docs/CHANGES: Updated for 2.0.6 release. + * docs/TODO: Added "stem3 and counter hints support" to the TODO + list for the Postscript hinter. + * docs/BUGS: Closed the AUTOHINT-NO-SBITS bug. + +2001-12-19 David Turner + + * include/freetype/cache/ftcache.h: Added comments to indicate that + some of the exported functions should only be used by applications + that need to implement custom cache types. + + * src/truetype/ttgload.c (cur_to_org, org_to_cur): Fixed a nasty bug + that prevented composites from loading correctly, due to missing + parentheses around macro parameters. + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Make the "post" and "name" + tables optional to load PCL fonts properly. + + * src/truetype/ttgload.c (TT_Load_Glyph), src/base/ftobjs.c + (FT_Load_Glyph), include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): + "Fixed" the bug that prevented embedded bitmaps to be loaded when + the auto-hinter is used. This actually is a hack but will be enough + until the internal re-design scheduled for FreeType 2.1. + + * src/raster/ftrend1.c (ft_raster1_render): Fixed a nasty outline + shifting bug in the monochrome renderer. + + * README: Updated version numbers to 2.0.6. + +2001-12-17 Werner Lemberg + + * src/truetype/ttgload.c (load_truetype_glyph): Fix test for invalid + glyph header. + +2001-12-15 Werner Lemberg + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Remove compiler warning. + * include/freetype/ftcache.h (FTC_Node_Unref): Removed. It is + already in ftcmanag.h. + * src/cache/ftcsbits.c (ftc_sbit_node_load): Remove unused variable + `gfam'. + * src/cache/ftcmanag.c (ftc_family_table_alloc, + * ftc_family_table_free): Use FT_EXPORT_DEF. + * include/freetype/cache/ftcmanag.h: Updated. + * src/cache/ftccache.c (ftc_node_destroy): Use FT_EXPORT_DEF. + * src/cache/ftccmap.c (ftc_cmap_node_init): Remove unused variable + `cfam'. + Remove compiler warning. + (FTC_CMapCache_Lookup): Remove compiler warnings. + (ftc_cmap_family_init): Ditto. + (FTC_CMapCache_Lookup): Ditto. + + * builds/unix/configure.ac: Increase `version_info' to 8:0:2. + * builds/unix/configure: Regenerated. + +2001-12-14 Werner Lemberg + + * builds/mac/README: Updated. + +2001-12-14 Scott Long + + * src/truetype/ttgload.c (load_truetype_glyph): Fixing crash when + dealing with invalid fonts (i.e. glyph size < 10 bytes). + +2001-12-14 Sam Latinga + + * builds/mac/freetype.make: A new Makefile to build with MPW on + MacOS classic. + +2001-12-14 David Turner + + * src/truetype/ttgload.c (TT_Load_Glyph), src/type1/t1gload.c + (T1_Load_Glyph), src/cid/cidgload.c (CID_Load_Glyph), + src/cff/cffgload.c (CFF_Load_Glyph): Fixed a serious bug common to + all font drivers (the advance width was never hinted when it + should). + + * include/freetype/freetype.h (FREETYPE_PATCH): New macro. + * src/base/ftdbgmem.c (debug_mem_dummy) [!FT_DEBUG_MEMORY]: Don't + use `extern' keyword. + +2001-12-12 David Turner + + * src/pshint/pshglob.c (psh_blues_scale_zones, psh_blues_snap_stem + psh_globals_new): Adding correct BlueScale/BlueShift support, plus + family blues processing. + * src/pshint/pshglob.h (PSH_BluesRec): Updated. + + Started adding support for the Postscript hinter in the CFF module. + + * src/cff/cffgload.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CFF_Parse_CharStrings): Implement it. + * src/cff/cffgload.h: Updated. + +2001-12-12 Werner Lemberg + + * builds/unix/freetype2.m4: Some portability fixes. + +2001-12-11 Jouk Jansen + + * src/base/descrip.mms (OBJS): Add ftdebug.obj. + +2001-12-11 Werner Lemberg + + * src/sfnt/ttload.c (TT_Load_Generic_Header): Typos. + +2001-12-11 David Turner + + * builds/unix/freetype-config.in: Modified the script to prevent + passing "-L/usr/lib" to gcc. + + * docs/FTL.TXT: Simple fix (change "LICENSE.TXT" to "FTL.TXT"). + + * builds/unix/freetype2.m4: New file for checking configure paths. + We need to install it in $(prefix)/share/aclocal/freetype2.m4 but I + didn't modify builds/unix/install.mk yet. + + * INSTALL: Updated the instructions to build shared libraries with + Jam. They were simply wrong. + + * src/base/fttrigon.c (FT_Cos): Fixed a small bug that caused + slightly improper results for `FT_Cos' and `FT_Sin' (example: + FT_Sin(0) == -1!). + +2001-12-11 Detlef Würkner + + * include/freetype/internal/ftstream.h (GET_LongLE, GET_ULongLE): + Fixed incorrect argument types. + +2001-12-10 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Init_Face): Allow Xft to use PCF fonts + by setting the "face->metrics.max_advance" correctly. + +2001-12-07 David Turner + + * include/freetype/cache/ftccmap.h, src/cache/ftccmap.c: Added new + charmap cache. + * src/cache/ftcache.c: Updated. + + * src/autohint/ahhint.c (ah_hinter_hint_edges): s/UNUSED/FT_UNUSED/. + +2001-12-06 Leonard Rosenthol + + Added support for reading .dfont files on Mac OS X. Also added a + new routine which looks up a given font by name in the Mac OS and + returns the disk file where it resides. + + * src/base/ftmac.c: Include and . + (is_dfont): New auxiliary function. + (FT_New_Face_From_dfont): New function. + (FT_GetFile_From_Mac_Name): New exported function. + (FT_New_Face): Updated. + * include/freetype/ftmac.h: Updated. + +2001-12-06 David Turner + + * src/cache/Jamfile, src/cache/rules.mk: Updated. + +2001-12-06 Werner Lemberg + + * INSTALL: Small update. + +2001-12-05 David Turner + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Re-ordered code for + debugging purposes. + Comment out use of `origin'. + + * src/smooth/ftsmooth.c (ft_smooth_render): Fixed a nasty hidden bug + where outline shifting wasn't correctly undone after bitmap + rasterization. This created problems with certain glyphs (like '"' + of certain fonts) and the cache system. + + * src/pshinter/pshalgo1.c (psh1_hint_table_init): Fix typo. + * src/pshinter/pshalgo2.c (psh2_hint_table_init): Fix typo. + (ps2_hints_apply): Small fix. + +2001-12-05 David Turner + + * src/pshinter/pshalgo2.c (psh2_hint_table_init), + src/pshinter/pshalgo1.c (psh1_hint_table_init): Removed compiler + warnings. + + * include/freetype/ftcache.h, include/freetype/cache/*, src/cache/*: + Yet another massive rewrite of the caching sub-system in order to + both increase performance and allow simpler cache sub-classing. As + an example, the code for the image and sbit caches is now much + simpler. + + I still need to update the documentation in + www/freetype2/docs/cache.html to reflect the new design though. + + * include/freetype/config/ftheader.h (FT_CACHE_CHARMAP_H): New + macro. + (FT_CACHE_INTERNAL_CACHE_H): Updated. + +2001-12-05 David Krause + + * docs/license.txt: s/X Windows/X Window System/. + +2001-12-04 Werner Lemberg + + * src/raster/ftraster.c: Fix definition condition of MEM_Set(). + * src/smooth/ftgrays.c (M_Y): Change value to 192. + * src/base/ftdbgmem.c (ft_mem_table_destroy): Fix printf() parameter. + Remove unused variable. + * src/cache/ftcimage.c (ftc_image_node_init, + ftc_image_node_compare): Remove unused variables. + * src/cache/ftcsbits.c (ftc_sbit_node_weight): Remove unused + variable. + * src/raster/ftraster.c (MEM_Set): Move definition down to avoid + compiler warning. + * src/autohint/ahhint.c (ah_hinter_hint_edges): Use UNUSED() to + avoid compiler warnings. + * src/pcf/pcfread.c (tableNames): Use `const'. + (pcf_read_TOC): Change counter name to avoid compiler warning. + Use `const'. + * src/pshinter/pshrec.c (ps_hints_close): Remove redundant + declaration. + * src/pshinter/pshalgo1.c (psh1_hint_table_init): Rename variables + to avoid shadowing. + * src/pshinter/pshalgo2.c (psh2_hint_table_activate_mask): Ditto. + * src/type1/t1objs.h: Remove double declarations of `T1_Size_Init()' + and `T1_Size_Done()'. + +2001-11-20 Antoine Leca + + * include/freetype/ttnameid.h: Added some new Microsoft language + codes and LCIDs as found in MSDN (Passport SDK). Also added + comments about the meaning of bit 57 of the `OS/2' table + (TT_UCR_SURROGATES) which (with OpenType v.1.3) now means "there is + a character beyond 0xFFFF in this font". Thanks to Detlef Würkner + for noticing this. + +2001-11-20 David Turner + + * src/pshinter/{pshalgo2.c, pshalgo1.c}: Fixed stupid bug in sorting + routine that created nasty alignment artefacts. + + * src/pshinter/pshrec.c, tests/gview.c: Debugging updates. + + * src/smooth/ftgrays.c: De-activated experimental gamma support. + Apparently, `optimal' gamma tables depend on the monitor type, + resolution and general karma, so it's better to compute them outside + of the rasterizer itself. + (gray_convert_glyph): Use `volatile' keyword. + +2001-10-29 David Turner + + Adding experimental `gamma' support. This produces smoother glyphs + at small sizes for very little cost. + + * src/smooth/ftgrays.c (grays_init_gamma): New function. + (gray_raster_new): Use it. + + Various fixes to the auto-hinter. They merely improve the output of + sans-serif fonts. Note that there are still problems with serifed + fonts and composites (accented characters). + + * src/autohint/ahglyph.c (ah_outline_load, + ah_outline_link_segments): Implement it. + Fix typos. + (ah_outline_save, ah_outline_compute_segments): Fix typos. + * src/autohint/ahhint.c (ah_align_serif_edge): New argument + `vertical'. Implement improvement. + (ah_hint_edges_3, ah_hinter_hint_edges): Implement it. + Fix typos. + (ah_hinter_align_strong_points, ah_hinter_align_weak_points): Fix + typos. + (ah_hinter_load): Set `ah_debug_hinter' if DEBUG_HINTER is defined. + * src/autohint/ahmodule.c: Implement support for DEBUG_HINTER macro. + * src/autohint/ahtypes.h: Ditto. + (AH_Hinter): Remove `disable_horz_edges' and `disable_vert_edges' + (making them global as `ah_debug_disable_horz' and + `ah_debug_disable_vert'). + Fix typos. + + * tests/gview.c: Updated the debugging glyph viewer to show the + hints generated by the "autohint" module. + +2001-10-27 David Turner + + * src/cache/ftcchunk.c (ftc_chunk_cache_lookup): Fixed a bug that + considerably lowered the performance of the abstract chunk cache. + +2001-10-26 David Turner + + * include/freetype/ftcache.h, include/freetype/cache/*.h, + src/cache/*.c: Major re-design of the cache sub-system to provide + better performance as well as an "Acquire"/"Release" API. Seems to + work well here, but probably needs a bit more testing. + +2001-10-26 Leonard Rosenthol + + * builds/mac/README: Updated to reflect my taking over the project + and that is now being actively maintained. + + * src/base/ftmac.c (parse_fond): Applied patches from Paul Miller + to support loading a face other than the + first from a FOND resource. + (FT_New_Face_From_FOND): Updated. + +2001-10-25 Leonard Rosenthol + + * builds/mac/ftlib.prj: Update of CodeWarrior project file for Mac + OS for latest version (7) of CWPro and for recent changes to the FT + source tree. + +2001-10-25 David Turner + + * include/freetype/config/ftoption.h: Updated comments to explain + precisely how to use project-specific macro definitions without + modifying this file manually. + + (FT_CONFIG_FORCE_INT64): Define. + + (FT_DEBUG_MEMORY): New macro. + +2001-10-24 Tom Kacvinsky + + * builds/unix/ftsystem.c (FT_New_Memory): Added a missing `{'. + +2001-10-23 David Turner + + * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: + Improvements to the memory debugger to report more information in + case of errors. Also, some allocations that occured through REALLOC + couldn't be previously catched correctly. + + * src/autohint/ahglyph.c (ah_outline_compute_segments, + ah_outline_compute_edges), src/raster/ftraster.c (ft_black_new), + src/smooth/ftgrays.c (gray_render_span, gray_raster_new): Replaced + liberal uses of memset() by the MEM_Set() macro. + +2001-10-23 David Turner + + * src/raster/ftraster.c (Update): Removed to be inlined in ... + (Sort): Updated. + +2001-10-22 David Turner + + * builds/unix/ftsystem.c (FT_New_Memory, FT_Done_Memory), + builds/vms/ftsystem.c (FT_New_Memory, FT_Done_Memory), + builds/amiga/ftsystem.c (FT_New_Memory, FT_Done_Memory), + src/base/ftdbgmem.c: Updated the memory debugger and + platform-specific implementations of `ftsystem' in order to be able + to debug memory allocations on Unix, VMS and Amiga too! + + * src/pshinter/pshalgo2.c (psh2_hint_table_record_mask): Removed + some bogus warnings. + + * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: + Modified the debugging memory manager to report the location (source + file name + line number) where leaked memory blocks are allocated in + the source file. + + * src/base/ftdbgmem.c: New debugging memory manager. You must + define the FT_DEBUG_MEMORY macro in "ftoption.h" to enable it. It + will record every memory block allocated and report simple errors + like memory leaks and double deletes. + + * src/base/Jamfile: Include ftdbgmem. + * src/base/rules.mk: Ditto. + * src/base/ftbase.c: Include ftdbgmem.c. + + * include/freetype/config/ftoption.h: Added the FT_DEBUG_MEMORY + macro definition. + + * src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory): Modified the + base component to use the debugging memory manager when the macro + FT_DEBUG_MEMORY is defined. + +2001-10-21 Tom Kacvinsky + + * src/cff/cffload.c (CFF_Done_Font): Free subfonts array only if + we are working with a CID keyed CFF font. Otherwise, a variable + that was never allocated memory might freed. This is a correction + to the previous patch for freeing subfonts. + +2001-10-21 Tom Kacvinsky + + * src/cff/cffload.c (CFF_Done_Font): Free the subfonts array to + avoid a memory leak. + +2001-10-21 David Turner + + * src/pshinter/pshalgo2.c, src/pshinter/pshalgo1.c, + src/pshinter/pshglob.c: Removing compiler warnings in pedantic modes + (in multi-object compilation mode, mainly). + +2001-10-20 Tom Kacvinsky + + * src/type1/t1load.c (parse_encoding): Add a test to make sure + that custom encodings (i.e., neither StandardEncoding nor + ExpertEncoding) are not loaded twice when the Type 1 font is + synthetic. + + * src/type1/t1load.c (parse_font_name, parse_subrs): Added a test + for when loading synthetic fonts to make sure that the font name + and subrotuines are not loaded twice. This is to remove a memory + leak that occured because the original memory blocks for these + objects were not deallocated when the objects were parsed the + second time. + +2001-10-19 David Turner + + * src/smooth/ftgrays.c, src/pshinter/pshglob.h, + src/pshinter/pshrec.c, src/pshinter/pshalgo2.c: Getting rid of + compiler warnings. + + * src/pshinter/module.mk, src/pshinter/rules.mk: Adding control + files to build the PostScript hinter with the "old" build system. + +2001-10-19 Jacob Jansen + + * descrip.mms, src/pshinter/descrip.mms: Updates to the VMS build + files. + +2001-10-18 David Turner + + * src/psnames/pstables.h, src/tools/glnames.py: Rewrote the + "glnames.py" script used to generate the "pstables.h" header file. + The old one contained a serious bug that made FreeType return + incorrect glyph names for certain glyphs. + + * src/truetype/ttdriver.c (Set_Char_Sizes): Changing computation of + pixel size from character size to use rounding. This is an + experiment to see whether this gives values similar to Windows for + scaled ascent/descent/etc. + + * src/base/ftcalc.c (FT_Div64by32): Changed the implementation + slightly since the original code was mis-compiled on Mac machines + using the MPW C compiler. + + * src/base/ftobjs.c (FT_Realloc): When a memory block was grown + through FT_Realloc(), the new bytes were not set to 0, which created + some strange bugs in the PostScript hinter. + (destroy_face): Don't deallocate unconditionally. + + * src/cid/cidgload.c (CID_Compute_Max_Advance, CID_Load_Glyph): + Adding support to new PostScript hinter. + + * include/freetype/internal/psglobal.h, + include/freetype/internal/pshints.h, + include/freetype/config/ftmodule.h, src/pshinter/Jamfile, + src/pshinter/pshalgo.h, src/pshinter/pshalgo1.h, + src/pshinter/pshalgo1.c, src/pshinter/pshalgo2.h, + src/pshinter/pshalgo2.c, src/pshinter/pshglob.h, + src/pshinter/pshglob.c, src/pshinter/pshinter.c, + src/pshinter/pshmod.c, src/pshinter/pshmod.h, src/pshinter/pshrec.c, + src/pshinter/pshrec.h: Adding new PostScript hinter module. + + * include/freetype/internal/ftobjs.h, + include/freetype/internal/internal.h, + include/freetype/internal/psaux.h, + include/freetype/internal/t1types.h, src/psaux/psobjs.c, + src/psaux/psobjs.h, src/psaux/t1decode.h, src/psaux/t1decode.c, + src/type1/t1driver.c, src/type1/t1gload.c, src/type1/t1objs.c, + src/type1/t1objs.h: Updates to use the new PostScript hinter. + + * tests/Jamfile, tests/gview.c: Adding a new glyph hinting + viewer/debugger to the source tree. Note that you will _not_ be + able to compile it since it depends on an unavailable graphics + library named "Nirvana" to render vector images. + +2001-10-17 David Turner + + + * Version 2.0.5 released. + ========================= + + + * include/freetype/freetype.h, include/internal/ftobjs.h, + src/base/ftobjs.c, src/type1/t1driver.c: Adding a new function named + 'FT_Get_Postscript_Name' to retrieve the PostScript name of a given + font. Should work with all formats except pure CFF/CEF fonts (this + will be added soon). + + * src/cid/cidriver (cid_get_postscript_name): New function. + (CID_Get_Interface): Handle `postscript_name' interface. + + * src/sfnt/sfdriver.c (get_sfnt_postscript_name): New function. + (SFNT_Get_Interface): Handle `postscript_name' interface. + + * src/type1/t1driver.c (t1_get_ps_name): New function. + (Get_Interface): Handle `postscript_name' interface. + + * README, docs/CHANGES: Updated for 2.0.5 release. + +2001-10-08 David Turner + + Fixed a bug in `glnames.py' that prevented it from generating + correct glyph names tables. This resulted in the unavailability of + certain glyphs like `Cacute', `cacute' and `lslash' in Unicode + charmaps, even if these were present in the font (causing problems + for Polish users). + + * src/tools/glnames.py (mac_standard_names): Fixed. + (t1_standard_strings): Some fixes and renamed to ... + (sid_standard_names): This. + (t1_expert_encoding): Fixed. + (the_adobe_glyph_list): Renamed to ... + (adobe_glyph_names): This. + (the_adobe_glyphs): Renamed to ... + (adobe_glyph_values): This. + (dump_mac_indices, dump_glyph_list, dump_unicode_values, main): + Updated. + * src/psnames/pstables.h: Regenerated. + * src/psnames/psmodule.c (PS_Unicode_Value): Fix offset. + Fix return value. + Use `sid_standard_table' and `ps_names_to_unicode' instead of + `t1_standard_glyphs' and `names_to_unicode'. + (PS_Macintosh_Name): Use `ps_glyph_names' instead of + `standard_glyph_names'. + (PS_Standard_Strings): Use `sid_standard_names' instead of + `t1_standard_glyphs'. + + * doc/BUGS, doc/TODO: New documents. + +2001-10-07 Richard Barber + + * src/cache/ftlru.c (FT_Lru_Lookup_Node): Fixed a bug that prevented + correct LRU behaviour. + +2001-10-07 David Turner + + setjmp() and longjmp() are now used for rollback (i.e. when memory + pool overflow occurs). + + Function names are now all uniformly prefixed with `gray_'. + + * src/smooth/ftgrays.c: Include . + (ErrRaster_MemoryOverflow): New macro. + (TArea): New type to store area values in each cell (using `int' was + too small on 16-bit systems). is included to properly + get the needed data type. + (TCell, TRaster): Use it. + (TRaster): New element `jump_buffer'. + (gray_compute_cbox): Use `RAS_ARG' as the only parameter and get + `outline' from it. + (gray_record_cell): Use longjmp(). + (gray_set_cell): Use gray_record_cell() for error handling. + (gray_render_line, gray_render_conic, gray_render_cubic): Simplify. + (gray_convert_glyph_inner): New function, using setjmp(). + (gray_convert_glyph): Use it. + +2001-10-07 David Turner + + Provide a public API to manage multiple size objects for a given + FT_Face in the new header file `ftsizes.h'. + + * include/freetype/ftsizes.h: New header file, + * include/freetype/internal/ftobjs.h: Use it. + Remove declarations of FT_New_Size and FT_Done_Size (moved to + ftsizes.h). + * include/freetype/config/ftheader.h (FT_SIZES_H): New macro. + * src/base/ftobjs.c (FT_Activate_Size): New function. + * src/cache/ftcmanag.c: Include ftsizes.h. + (ftc_manager_init_size, ftc_manager_flush_size): Use + FT_Activate_Size. + +2001-09-20 Detlef Würkner + + * builds/amiga/*: Added port to Amiga with the SAS/C compiler. + +2001-09-15 Detlef Würkner + + * src/type1/t1afm.c (T1_Done_AFM): Free `afm'. + +2001-09-10 Yao Zhang + + * src/sfnt/ttcmap.c (code_to_index2): Handle code values with + hi-byte == 0 correctly. + +2001-09-10 Werner Lemberg + + * builds/link-std.mk ($(PROJECT_LIBRARY)): Fix typo. + +2001-08-30 Martin Muskens + + * src/type1/t1load.c (parse_font_matrix): A new way to compute the + units per EM with greater accuracy (important for embedded T1 fonts + in PDF documents that were automatically generated from TrueType + ones). + + * src/type1/t1load.c (is_alpha): Now supports "+" in font names; + this is used in embedded fonts. + + * src/psaux/psobjs.c (PS_Table_Add): Fixed a reallocation bug that + generated a dangling pointer reference. + +2001-08-30 Anthony Feik + + * src/type1/t1afm.c (T1_Read_Afm): Now correctly sets the flag + FT_FACE_FLAG_KERNING when appropriate for Type1 + AFM files. + +2001-08-25 Werner Lemberg + + * src/sfnt/ttload.c (TT_Load_CMap): Fix frame length of + `cmap_rec_fields'. + + * include/freetype/fterrors.h [!FT_CONFIG_OPTION_USE_MODULE_ERRORS]: + Undefine FT_ERR_BASE before defining again. + +2001-08-22 Werner Lemberg + + * src/truetype/ttinterp.h: Fix prototype of TT_Move_Func. + +2001-08-21 Werner Lemberg + + * builds/dos/dos-def.mk (NO_OUTPUT): Don't use `&>' but `>'. + +2001-08-21 David Turner + + * include/freetype/config/ftoption.h: Changed the default setting + for FT_CONFIG_OPTION_USE_MODULE_ERRORS to undefined, since it breaks + source compatibility in a few cases. Updated the comment to explain + that too. + +2001-08-17 Martin Muskens + + * src/base/ftcalc.c (FT_MulDiv): Fixed serious typo. + +2001-08-12 Werner Lemberg + + Updating to OpenType 1.3. + + * include/freetype/internal/tttypes.h (TT_CMap0, TT_CMap2, TT_CMap4, + TT_CMap6): Adding field `language'. + (TT_CMapTable): Removing field `language'. + Type of `length' field changed to FT_ULong. + Adding fields for cmaps format 8, 10, and 12. + (TT_CMapGroup): New auxiliary structure. + (TT_CMap8_12, TT_CMap10): New structures. + * include/freetype/tttables.h (TT_HoriHeader, TT_VertHeader): + Removed last element of `Reserved' array. + * include/freetype/ttnameid.h (TT_PLATFORM_CUSTOM, TT_MS_ID_UCS_4, + TT_NAME_ID_CID_FINDFONT_NAME): New macros. + + * src/sfnt/ttcmap.c (TT_CharMap_Load): Updated loading of `language' + field to the new structures. + Fixed freeing of arrays in case of unsuccessful loads. + Added support for loading format 8, 10, and 12 cmaps. + (TT_CharMap_Free): Added support for freeing format 8, 10, and 12 + cmaps. + (code_to_index4): Small improvement. + (code_to_index6): Ditto. + (code_to_index8_12, code_to_index10): New functions. + * src/sfnt/ttload.c (TT_Load_Metrics_Header): Updated to new + structure. + (TT_Load_CMap): Ditto. + + * src/sfnt/sfobjs.c (tt_encodings): Add MS UCS4 table (before MS + Unicode). + +2001-08-11 Werner Lemberg + + * src/type1/t1driver.c (t1_get_name_index): Fix compiler warning. + +2001-08-09 Tom Kacvinsky + + * src/cff/cffdrivr.c (get_cff_glyph_name): Renamed to + cff_get_glyph_name for consistency. + + (cff_get_glyph_index): Minor documentation change. + + * src/type1/t1driver.c (t1_get_name_index): New function used in + Get_Interface as the function returned when the "name_index" + function is requested. + + (get_t1_glyph_name): Renamed to t1_get_glyph_name for consistency. + +2001-08-08 Tom Kacvinsky + + * src/cff/cffload.c: Removed definitions of cff_isoadobe_charset, + cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, + and cff_expert_encoding arrays to cffload.h. + + * src/cff/cffload.h: Added definitions of cff_isoadobe_charset, + cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, + and cff_expert_encoding arrays. + + * src/cff/cffdrivr.c (cff_get_name_index): New function, returned + when `cff_get_interface' is called with a request for the + "name_index" function. + + (cff_get_interface): Modified so that it returns the function + `cff_get_name_index' when the "name_index" function is requested. + + * src/base/ftobjs.c (FT_Get_Name_Index): New function, used to + return a glyph index for a given glyph name only if the driver + supports glyph names. + + * include/freetype/internal/ftobjs.h (FT_Name_Index_Requester): + New function pointer type defintion used in the function + FT_Get_Name_Index. + + * include/freetype/freetype.h (FT_Get_Name_Index): Added + documentation and prototype. + +2001-07-26 Werner Lemberg + + * builds/cygwin/*: Removed. Use the unix stuff instead. + +2001-07-26 Jouk Jansen + + * builds/vms/ftconfig.h (FT_CALLBACK_DEF): Updated to change dated + 2001-06-27. + +2001-07-17 Werner Lemberg + + * include/freetype/internal/psaux.h (PS_Table): Use FT_Offset for + `cursor' and `capacity'. + * src/psaux/psobjc.c (reallocate_t1_table): Use FT_Long for second + parameter. + (PS_Table_Add): Use FT_Offset for `new_size'. + + Add support for version 0.5 maxp tables. + + * src/sfnt/ttload.c (TT_Load_MaxProfile): Implement it. + (TT_Load_OS2): Initialize some values. + +2001-07-13 Werner Lemberg + + * src/base/ftsynth.c: Include ftcalc.h unconditionally. + +2001-07-07 David Turner + + * src/truetype/ttgload.c, src/truetype/ttinterp.c, src/pcf/pcfread: + Removed pedantic compiler warnings when the bytecode interpreter is + compiled in. + +2001-07-03 Werner Lemberg + + * src/autohint/ahhint.c (ah_hinter_align_weak_points): Remove + unused variable `edges'. + (ah_hinter_load): Remove unused variables `old_width' and + `new_width'. + * src/cid/cidload.c (cid_decrypt): Use `U' for constant (again). + * src/psaux/psobjs.c (T1_Decrypt): Ditto. + * src/type1/t1parse.c (T1_Get_Private_Dict): Ditto. + +2001-06-28 David Turner + + * include/internal/ftstream.h: Modified the definitions + of the FT_GET_XXXX and NEXT_XXXX macros for 16-bit correctness. + +2001-06-26 Werner Lemberg + + * src/cid/cidload.c, src/cid/cidload.h (cid_decrypt): Use FT_Offset + instead of FT_Int as type for `length' parameter. + * include/freetype/internal/psaux.h (PSAux_Interface): Updated. + +2001-06-27 Wolfgang Domröse + + * src/psaux/psobjs.c, src/psaux/psobjs.h (T1_Decrypt): Use FT_Offset + instead of FT_Int as type for `length' parameter. + + + * Version 2.0.4 released. + ========================= + + +2001-06-27 David Turner + + * builds/unix/ftconfig.in: Changed the definition of the + FT_CALLBACK_DEF macro. + + * include/freetype/ftconfig.h, src/*/*.c: Changed the definition and + use of the FT_CALLBACK_DEF macro in order to support 16-bit + compilers. + + * builds/unix/ftconfig.in: Changed the definition of the + FT_CALLBACK_DEF macro. + + * src/sfnt/ttload.c (TT_Load_Kern): The kern table loader now ensures + that the kerning table is correctly sorted (some problem fonts don't + have a correct kern table). + +2001-06-26 Wolfgang Domröse + + * include/freetype/internal/ftstream.h (FT_GET_OFF3_LE): Fix typo. + +2001-06-24 David Turner + + * src/base/ftcalc.c (ft_div64by32): Fixed the source to work + correctly on 16-bit systems. + +2001-06-23 Anthony Fok + + * debian/*: Added Debian package build directory for 2.0.4. + +2001-06-22 David Turner + + * docs/PATENTS: Added patents disclaimer. This one was missing! + + * docs/CHANGES, docs/todo: Updated for the upcoming 2.0.4 release. + +2001-06-20 Werner Lemberg + + * include/freetype/config/ftconfig.h: Add two more `L's to + constants. + Add missing semicolons. + + * builds/toplevel.mk: Do similar change as for + builds/unix/detect.mk. + + * include/freetype/freetype.h (FT_ENC_TAG): New version to make it + easier to redefine. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. + + * src/pcf/pcfread.c (pcf_get_encodings): Add cast. + +2001-06-19 David Turner + + * builds/win32/visualc/freetype.dsp, builds/win32/visualc/index.html: + Updated the Visual C++ project (for the 2.0.4 release). + + * builds/unix/detect.mk: Added rule for AIX detection (which uses + /usr/sbin/init instead of /sbin/init). + + * include/freetype/fterrors.h, src/*/*err*.h: Updated some of the + error macros to simplify handling of new error scheme. + +2001-06-19 Werner Lemberg + + * include/freetype/fttypes.h (FT_ERROR_MODULE): New macro. + +2001-06-19 David Turner + + Removing _lots_ of compiler warnings when the most pedantic warning + levels of Visual C++ and Borland C++ are used. Too many files to be + listed here, but FT2 now compiles without warnings with VC++ and the + "/W4" warning level (lint-style). + + * include/freetype/freetype.h (FT_New_Memory_Face): Updated + documentation. + * include/freetype/fttypes.h (FT_BOOL): New macro. + * include/freetype/internal/ftdebug.h: Add #pragma for Visual C++ + to suppress warning. + * include/freetype/internal/ftstream.h (FT_GET_SHORT_{BE,LE}, + FT_GET_OFF3_{BE,LE}, FT_GET_LONG_{BE,LE}): New macros. + (NEXT_*): Use them. + * src/autohint/ahglobal.c: Include FT_INTERNAL_DEBUG_H. + (FT_New_Memory_Face): Add `const' to function declaration. + +2001-06-18 Werner Lemberg + + Minor cleanups to remove compiler warnings. + + * include/freetype/cache/ftcmanag.h (FTC_MAX_BYTES_DEFAULT): Use + `L' for constant. + * include/freetype/config/ftoption.h (FT_RENDER_POOL_SIZE): Ditto. + * src/base/ftcalc.c (FT_MulDiv): Use `L' for constant. + * src/base/ftglyph.c (FT_Glyph_Get_CBox): Remove `error' variable. + * src/base/fttrigon.c (ft_trig_arctan_table): Use `L' for constants. + * src/base/ftobjs.c (FT_Done_Size): Fix return value. + (FT_Set_Char_Size, FT_Set_Pixel_Sizes, FT_Get_Kerning): Remove + unused `memory' variable. + * src/autohint/ahglyph.c (ah_get_orientation): Use `L' for constant. + * src/autohint/ahhint.c (ah_hint_edges_3, + ah_hinter_align_edge_points): Remove unused `before' and `after' + variables. + (ah_hinter_align_weak_points): Remove unused `edge_limit' variable. + (ah_hinter_load): Remove unused `new_advance', `start_contour', + and `metrics' variables. + * src/cff/cffload.c (CFF_Load_Encoding): Remove dead code to avoid + compiler warning. + * src/cff/cffobjs.c (CFF_Init_Face): Remove unused `base_offset' + variable. + * src/cff/cffgload.c (CFF_Parse_CharStrings): Remove unused + `outline' variable. + (cff_compute_bias): Use `U' for constant. + * src/cid/cidload.c (cid_decrypt): Ditto. + * src/psaux/psobjs.c (T1_Decrypt): Ditto. + * src/psaux/t1decode.c (T1_Decoder_Parse_CharStrings): Ditto. + * src/sfnt/ttload.c (TT_Load_Kern): Remove unused `version' + variable. + * src/sfnt/ttsbit.c (TT_Load_SBit_Image): Remove unused `top' + variable. + * src/truetype/ttgload.c (load_truetype_glyph): Remove unused + `num_contours' and `ins_offset' variables. + (compute_glyph_metrics): Remove unused `Top' and `x_scale' + variables. + (TT_Load_Glyph): Remove unused `memory' variable. + * src/smooth/ftgrays.c (grays_raster_render): Use `L' for constants. + +2001-06-18 Werner Lemberg + + Make the new error scheme source compatible with older FT versions + by introducing another layer. + + * include/freetype/fterrors.h (FT_ERRORDEF_, FT_NOERRORDEF_): New + macros. + (FT_NOERRORDEF): Removed. + * include/*/*err*.h: Use FT_ERRORDEF_ and FT_NOERRORDEF_. + +2001-06-16 Werner Lemberg + + * include/freetype/freetype.h (FT_ENC_TAG): New macro. + (FT_Encoding_): Use it. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Define it + conditionally. + +2001-06-14 David Turner + + Modified the TrueType interpreter to let it use the new + trigonometric functions provided in "fttrigon.h". This gets rid of + some old 64-bit computation routines, as well as many warnings when + compiling the library with the "long long" 64-bit integer type. + + * include/freetype/config/ftoption.h: Undefine + FT_CONFIG_OPTION_OLD_CALCS. + * include/freetype/internal/ftcalc.h: Rearrange use of + FT_CONFIG_OPTION_OLD_CALCS. + * src/base/ftcalc.c: Add declaration of FT_Int64 if + FT_CONFIG_OPTION_OLD_CALCS isn't defined. + * src/truetype/ttinterp.c: Use FT_TRIGONOMETRY_H. + (Norm): Add a special version if FT_CONFIG_OPTION_OLD_CALCS isn't + defined. + (Current_Ratio, Normalize): Simplify code. + +2001-06-11 Mike Owens + + * src/base/ftcalc.c (FT_MulDiv, FT_DivFix, FT_Sqrt64): Remove + compiler warnings. + +2001-06-08 Werner Lemberg + + * builds/unix/configure.in: Renamed to ... + * builds/unix/configure.ac: This to make sure that autoconf 2.50 is + needed. + Run `autoupdate' on it. + Increase `version_info' to 7:0:1. + * builds/unix/configure: Regenerated. + +2001-06-08 David Turner + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Fixed a bug that + corrupted transformed glyphs that were auto-hinted (the transform + was applied twice). + + Fixed a bug that returned an invalid linear width for composite + TrueType glyphs. + + * include/internal/tttypes.h (TT_Loader_): Two new elements `linear' + and `linear_def'. + * src/truetype/ttgload.c (load_truetype_glyph, + compute_glyph_metrics): Use it. + + * include/fttypes.h (FT_ERROR_BASE): New macro. + * src/base/ftobjs.c (FT_Open_Face, FT_Render_Glyph_Internal): Use it + to make source code work with the new error scheme implemented by + Werner. + * src/base/ftoutln.c (FT_Outline_Render): Ditto. + +2001-06-07 Werner Lemberg + + Updating to libtool 1.4.0 and autoconf 2.50. + + * builds/unix/ltconfig: Removed. + * builds/unix/ltmain.sh, builds/unix/configure.in, + builds/unix/aclocal.m4: Updated. + * builds/unix/configure: Regenerated. + +2001-06-06 Werner Lemberg + + Complete redesign of error codes. Please check ftmoderr.h for more + details. + + * include/freetype/internal/cfferrs.h, + include/freetype/internal/tterrors.h, + include/freetype/internal/t1errors.h: Removed. Replaced with files + local to the module. All extra error codes have been moved to + `fterrors.h'. + + * src/sfnt/ttpost.h: Move error codes to `fterrors.h'. + + * src/autohint/aherrors.h, src/cache/ftcerror.h, src/cff/cfferrs.h, + src/cid/ciderrs.h, src/pcf/pcferror.h, src/psaux/psauxerr.h, + src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h, + src/smooth/ftsmerrs.h, src/truetype/tterrors.h, + src/type1/t1errors.h, src/winfonts/fnterrs.h: New files defining the + error names for the module it belongs to. + + * include/freetype/ftmoderr.h: New file, defining the module error + offsets. Its structure is similar to `fterrors.h'. + + * include/freetype/fterrors.h (FT_NOERRORDEF): New macro. + (FT_ERRORDEF): Redefined to use module error offsets. + All internal error codes are now public; unused error codes have + been removed, some are new. + + * include/freetype/config/ftheader.h (FT_MODULE_ERRORS_H): New + macro. + * include/freetype/config/ftoption.h + (FT_CONFIG_OPTION_USE_MODULE_ERRORS): New macro. + + All other source files have been updated to use the new error codes; + some already existing (internal) error codes local to a module have + been renamed to give them the same name as in the base module. + + All make files have been updated to include the local error files. + +2001-06-06 Werner Lemberg + + * src/cid/cidtokens.h: Replaced with... + * src/cid/cidtoken.h: This file for 8+3 consistency. + + * src/raster/ftraster.c: Use macros for header file names. + + * src/include/freetype/tttables.h (TT_HoriHeader_, TT_VertHeader_): + Fix length of `Reserved' array. Note that this isn't the real fix + since recent OpenType specs have introduced a `CaretOffset' field + instead of the first reserved byte. + +2001-05-29 Werner Lemberg + + * INSTALL: Minor fixes. + + + * Version 2.0.3 released. + ========================= + + +2001-05-29 David Turner + + * INSTALL, docs/CHANGES: Updated. + +2001-05-25 David Turner + + Moved several documents from the top-level to the "docs" directory. + + * src/base/ftcalc.c (FT_DivFix): Small fix to return value. + +2001-05-16 David Turner + + * src/truetype/ttgload.c (load_truetype_glyph): Fixed a bug in the + composite loader. Spotted by Keith Packard. + * src/base/ftobjs.c (FT_GlyphLoader_Check_Points, + FT_GlyphLoader_Check_Subglyphs): Ditto. + +2001-05-14 David Turner + + Fixed the incorrect blue zone computations, and improved the + composite support. Note that these changes result in improved + rendering, while sometimes introducing their own artefacts. This is + probably the last big change to the autohinter before the + introduction of a complete replacement. + + * src/autohint/ahglobal.c (sort_values): Fix loop. + * src/autohint/ahglyph.c: Removed some obsolete code. + (ah_outline_compute_edges): Modify code to set the ah_edge_round + flag. + (ah_outline_compute_blue_edges): Add code to compute active blue + zones. + * src/autohint/ahhint.c (ah_hinter_glyph_load): Change load_flags + value. + + * src/base/ftcalc.c (FT_DivFix): Fixed a bug in the 64-bit code that + created incorrect scale factors! + (FT_Round_Fix, FT_CeilFix, FT_FloorFix): Minor improvements. + +2001-05-12 Werner Lemberg + + * include/freetype/ftbbox.h: FTBBOX_H -> __FTBBOX_H__. + * include/freetype/fttrigon.h: __FT_TRIGONOMETRY_H__ -> + __FTTRIGON_H__. + Include FT_FREETYPE_H. + Beautified; added copyright. + * src/base/fttrigon.c: Beautified; added copyright. + +2001-05-11 David Turner + + * src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c + (parse_font_matrix), src/type1/t1load.c (parse_font_matrix): Fixed + the incorrect EM size computation. + + * include/freetype/fttrigon.h, src/base/fttrigon.c: New files, + adding trigonometric functions to the core API (using Cordic + algorithms). + * src/base/ftbase.c, src/base/Jamfile, src/base/rules.mk: Use them. + + * builds/newline: New file. + * builds/top_level.mk, builds/detect.mk: Use it. This fixes + problems with Make on Windows 2000, as well as problems when "make + distclean" is invoked on a non-Unix platform when there is no + "config.mk" in the current directory. + + * builds/freetype.mk: Fixed a problem with object deletions under + Dos/Windows/OS/2 systems. + + Added new directory to hold tools and test programs. + + * docs/docmaker.py, docs/glnames.py: Moved to... + * src/tools/docmaker.py, src/tools/glnames.py: This place. + * src/tools/cordic.py: New file used to compute arctangent table + needed by fttrigon.c. + * src/tools/test_bbox.c, src/tools/test_trig.c: New test files. + + * src/tools/docmaker.py: Improved the script to add the current date + at the footer of each web page (useful to distinguish between + versions). + + * Jamfile: Fixed incorrect HDRMACRO argument. + + * TODO: Removed the cubic arc bbox computation note, since it has been + fixed recently. + * src/base/ftbbox.c (test_cubic_zero): Renamed to... + (test_cubic_extrema): This function. Use `UL' for unsigned long + constants. + + * include/freetype/t1tables.h, include/freetype/config/ftoption.h: + Formatting. + +2001-05-10 David Turner + + * src/base/ftobjs.c (FT_Open_Face): Fixed a small memory leak + which happened when trying to open 0-size font files! + +2001-05-09 Werner Lemberg + + * include/freetype/internal/ftcalc.h: Move declaration of + FT_SqrtFixed() out of `#ifdef FT_LONG64'. + +2001-05-08 Francesco Zappa Nardelli + + * src/pcfdriver.c (PCF_Load_Glyph): Fixed incorrect bitmap width + computation. + +2001-05-08 David Turner + + * docs/docmaker.py: Updated the DocMaker script in order to add + command line options (--output,--prefix,--title), fix the erroneous + line numbers reported during errors and warnings, and other + formatting issues. + + * src/base/ftcalc.c (FT_MulDiv, FT_MulFix, FT_DivFix): Various tiny + fixes related to rounding in 64-bits routines and + pseudo-"optimizations". + +2001-04-27 David Turner + + * src/base/ftbbox.c (BBox_Cubic_Check): Fixed the coefficient + normalization algorithm (invalid final bit position, and invalid + shift computation). + +2001-04-26 Werner Lemberg + + * builds/unix/config.guess, builds/unix/config.sub: Updated to + latest versions from gnu.org. + + * builds/compiler/gcc-dev.mk: Add `-Wno-long-long' flag. + + * include/freetype/internal/ftcalc.h: Define FT_SqrtFixed() + uncoditionally. + * src/base/ftbbox.c: Include FT_INTERNAL_CALC_H. + Fix compiler warnings. + * src/base/ftcalc.c: Fix (potential) compiler warnings. + +2001-04-26 David Turner + + * src/base/ftcalc.c (FT_SqrtFixed): Corrected/optimized the 32-bit + fixed-point square root computation. It is now used even with + 64-bits integers, as it is _much_ faster than calling FT_Sqrt64 :-) + + * src/base/ftbbox.c: Removed invalid "#include FT_BEZIER_H" line. + +2001-04-25 David Turner + + * src/base/ftbbox.c (BBox_Cubic_Check): Rewrote function to use + direct computations with 16.16 values instead of sub-divisions. It + is now slower, but proves a point :-) + + * src/raster/ftraster.c, src/smooth/ftgrays.c, src/base/ftbbox.c: + Fixed the bezier stack depths. + + * src/base/ftcalc.c (FT_MulFix): Minor rounding fix. + + * builds/beos: Added BeOS-specific files to the old build system + (no changes were necessary to support BeOS in the Jamfile though). + +2001-04-20 David Turner + + * ftconfig.h, ftoption.h: Updated "ftconfig.h" to detect 64-bit int + types on platforms where Autoconf is not available). Also removed + FTCALC_USE_LONG_LONG and replaced it with + FT_CONFIG_OPTION_FORCE_INT64. + + * builds/win32/freetype.dsp: Updated the Visual C++ project file. + Doesn't create a DLL yet. + + * cffgload.c: Removed a compilation warning. + +2001-04-10 Tom Kacvinsky + + * t1load.c (parse_charstrings): Changed code for placing .notdef + glyph into slot 0 so that we no longer have a memory access + violation. + + * t1load.h: In structure T1_Loader, added swap_table (of type + PS_Table) to facilitate placing the .notdef glyph into slot 0. + +2001-04-10 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Get_Char_Index): Fix return value. + +2001-04-09 Laurence Withers + + * builds/dos/detect.mk: Add support for bash. + +2001-04-05 Werner Lemberg + + * builds/os2/*.mk: These files have been forgotten to update to + the structure of similar makefiles. + * builds/dos/*.mk: Ditto. + * builds/ansi/*.mk: Ditto. + + * builds/win32/win32-def.mk (BUILD): Fix typo. + + * builds/compiler/*.mk (CLEAN_LIBRARY): Don't use NO_OUTPUT. + This is already used in the link_*.mk files. + +2001-04-03 Werner Lemberg + + * src/*/Jamfile: Slight changes to make files more cryptic. + +2001-04-03 Werner Lemberg + + * Jamfile, src/Jamfile, src/*/Jamfile: Formatted. Slight changes + to give files identical structure. + +2001-04-02 Werner Lemberg + + * CHANGES: Reformatted, minor fixes. + * TODO: Updated. + * README: Formatting. + * include/freetype/freetype.h: Formatting. + + * Jamfile: Fix typo. + + * src/cff/cffparse.c: Move error code #defines to... + * include/freetype/internal/cfferrs.h: This file. + * src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffload.c: Replaced + `FT_Err_*' with `CFF_Err_*'. + * src/cid/cidparse.c: Replaced `FT_Err_*' with `T1_Err_*'. + * src/psaux/psobjs.c, src/psaux/t1decode.c: Ditto. + * src/sfnt/sfobcs.c, src/sfnt/ttload.c: Replaced `FT_Err_*' with + `TT_Err_*'. + * src/truetype/ttgload.c, src/truetype/ttobjs.c: Ditto. + * src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1objs.c, + src/type1/t1parse.c: Replaced `FT_Err_*' with `T1_Err_*'. + + * include/freetype/internal/cfferrs.h: Add + `CFF_Err_Unknown_File_Format'. + * include/freetype/internal/t1errors.h: Add + `T1_Err_Unknown_File_Format'. + * include/freetype/internal/tterrors.h: Add + `TT_Err_Unknown_File_Format'. + + * src/cff/cffload.h: Add `cff_*_encoding' and `cff_*_charset' + references. + * src/psaux/psobjs.c: Include `FT_INTERNAL_TYPE1_ERRORS_H'. + + * src/cff/cffobjs.c (CFF_Init_Face, CFF_Done_Face): Use + FT_LOCAL_DEF. + * src/cid/cidobjs.c (CID_Done_Driver): Ditto. + * src/trutype/ttobjs.c (TT_Init_Face, TT_Done_Face, TT_Init_Size): + Ditto. + * src/type1/t1objs.c (T1_Done_Driver): Ditto. + * src/pcf/pcfdriver.c (PCF_Done_Face): Ditto. + * src/pcf/pcf.h: Use FT_LOCAL for `PCF_Done_Face'. + +2001-04-02 Tom Kacvinsky + + * src/sfnt/ttload.c (TT_Load_Metrics): Fix an improper pointer + dereference. Submitted by Herbert Duerr + +2001-03-26 Tom Kacvinsky + + * include/freetype/config/ftconfig.h: Changed hexadecimal + constants to use suffix U to avoid problems with HP-UX's c89 + compiler. Submitted by G.W. Lucas + +2001-03-24 David Turner + + * Jamrules, Jamfile, src/Jamfile, src/*/Jamfile: Adding jamfiles to + the source tree. See www.freetype.org/jam/index.html for details. + + + * Version 2.0.2 released. + ========================= + + 2001-03-20 Werner Lemberg * builds/win32/detekt.mk: Fix .PHONY target for Intel compiler. @@ -34,7 +1542,7 @@ * builds/unix/freetype-config.in: Use it. * builds/unix/configure: Updated. -2001-03-19 Tom Kacvinsky +2001-03-19 Tom Kacvinsky * src/type1/t1load.c (parse_font_matrix): Assign the units per em value an unsigned short value, first by shifting right 16 bits, @@ -44,7 +1552,7 @@ value an unsigned short value, first by shifting right 16 bits, then by casting the results to FT_UShort. -2001-03-17 David Turner +2001-03-17 David Turner * src/cid/cidobjs.c, src/cid/cidload.c, src/pcf/pcfread.c, src/type1/t1load.c, src/type1/t1objs.c: Added a few casts to remove @@ -57,7 +1565,7 @@ * include/config/ftheader.h: Added new section describing the #include macros. -2001-03-17 Tom Kacvinsky +2001-03-17 Tom Kacvinsky * src/cff/cffparse.c (cff_parse_font_bbox): Obtain rounded FT_Fixed values for the bounding box numbers. @@ -66,7 +1574,7 @@ set `root->ascender' (`root->descender') to the integer part of `root->bbox.yMax' (`root->bbox.yMin', respectively). -2001-03-16 Tom Kacvinsky +2001-03-16 Tom Kacvinsky * src/cff/cffdrivr.c (get_cff_glyph_name): New function. Used in cff_get_interface to facilitate getting a glyph name for glyph index @@ -94,7 +1602,7 @@ * INSTALL, docs/BUILD: We need GNU make 3.78.1 or newer. -2001-03-12 Tom Kacvinsky +2001-03-12 Tom Kacvinsky * include/freetype/internal/psaux.h: Changed the lenIV member of the T1_Decoder_ struct to be an FT_Int instead of an FT_UInt. @@ -115,7 +1623,7 @@ * src/pcf/pcfread.c: Put READ_Fields() always in a conditional to avoid compiler warnings. -2001-03-10 Tom Kacvinsky +2001-03-10 Tom Kacvinsky * TODO: New file. @@ -144,7 +1652,7 @@ * INSTALL, docs/BUILD: We need GNU make 3.78 or newer. -2001-03-07 Tom Kacvinsky +2001-03-07 Tom Kacvinsky * src/type1/t1objs.c (T1_Init_Face): Minor correction: We must wait until parse_font_bbox is changed before we use logical shift rights @@ -154,7 +1662,7 @@ (T1_Done_Face): Free `char_name' table to avoid a memory leak. Submitted by Sander van der Wal . -2001-03-05 Tom Kacvinsky +2001-03-05 Tom Kacvinsky * src/cff/cffgload.c (CFF_Load_Glyph): Set glyph control data to the the Type 2 glyph charstring (used by conversion programs). @@ -227,12 +1735,12 @@ * src/base/ftglyph.c (FT_Glyph_Copy): Advance width and glyph format were not correctly copied. -2001-02-08 Tom Kacvinsky +2001-02-08 Tom Kacvinsky * src/cff/cffparse.c (cff_parse_font_matrix): Removed an unnecessary fprintf( stderr, ... ). -2001-02-07 Tom Kacvinsky +2001-02-07 Tom Kacvinsky * src/type1/t1objs.c (T1_Init_Face): Added code to get the units_per_EM from the value assigned in parse_font_matrix, if @@ -278,7 +1786,7 @@ * include/freetype/ttnameid.h: Latest updates to Microsoft language ID codes. -2001-01-24 Tom Kacvinsky +2001-01-24 Tom Kacvinsky * src/cff/t1load.c (parse_font_matrix): Added heuristic to get units_per_EM from the font matrix. @@ -336,7 +1844,7 @@ * include/freetype/ttnameid.h: Updated Unicode code range comments. -2001-01-03 Tom Kacvinsky +2001-01-03 Tom Kacvinsky * src/cff/rules.mk: Use cffgload.{c,h} instead of t2gload.{c,h}. @@ -375,7 +1883,7 @@ 2001-01-01 Francesco Zappa Nardelli * src/pcf/*: New driver module for PCF font format (used in - X Windows). + X Window System). * include/freetype/internal/ftdebug.h (FT_Trace): Added values for PCF driver. * include/freetype/internal/pcftypes.h: New file. @@ -396,7 +1904,7 @@ (CFF_Load_Charset, CFF_Load_Encoding): Remove unnecessary variable definition. -2000-12-30 Tom Kacvinsky +2000-12-30 Tom Kacvinsky * include/freetype/internal/t2types.h, include/freetype/internal/cfftypes.h: Changed the structures for @@ -423,7 +1931,7 @@ so that the encoding/charset parser can handle predefined encodings and charsets. -2000-12-24 Tom Kacvinsky +2000-12-24 Tom Kacvinsky * src/cff/t2gload.c (T2_Load_Glyph): Added code so that the font transform is applied. @@ -433,7 +1941,7 @@ offset vector now contains integer values instead of 16.16 fixed numbers. -2000-12-22 Tom Kacvinsky +2000-12-22 Tom Kacvinsky * src/autohint/ahhint.c (ah_hinter_load_glyph): Removed unnecessary comments and commented-out code. @@ -443,7 +1951,7 @@ * src/cid/cidafm.c, src/cid/cidafm.h: removed un-needed files, we'll work on supporting CID AFM files later I guess :-) -2000-12-21 Tom Kacvinsky +2000-12-21 Tom Kacvinsky * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): Changed so that fonts with a non-standard FontMatrix render @@ -622,9 +2130,11 @@ 2000-12-01 David Turner + * Version 2.0.1 released. ========================= + * builds/unix/configure.in, builds/unix/configure, builds/cygwin/configure.in, builds/cygwin/configure: Setting "version_info" to 6:1:0 for the 2.0.1 release. @@ -677,7 +2187,7 @@ is compared to FT_UShort (apparently, it promotes `UShort' to `Int' in these cases). -2000-11-30 Tom Kacvinsky +2000-11-30 Tom Kacvinsky * t2objs.c (T2_Init_Face): Added calculation of `face->height' for pure CFF fonts. @@ -731,7 +2241,7 @@ * src/base/ftnames.c (FT_Get_Sfnt_Name_Count): Fix incorrect parentheses. -2000-11-26 Tom Kacvinsky +2000-11-26 Tom Kacvinsky * src/cff/t2gload.c (T2_Parse_CharStrings): Added logic to glyph width setting code to take into account even/odd argument counts @@ -764,7 +2274,7 @@ * src/type1/t1parse.h: Adapted. -2000-11-22 Tom Kacvinsky +2000-11-22 Tom Kacvinsky * src/cff/t2objs.c (T2_Init_Face): For pure CFF fonts, set `root->num_faces' to `cff->num_faces' and set `units_per_EM' @@ -784,7 +2294,7 @@ * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): Added auto-hinting support of synthetic Type 1 fonts. -2000-11-12 Tom Kacvinsky +2000-11-12 Tom Kacvinsky * src/sfnt/ttload.c (TT_LookUp_Table, TT_Load_Generic_Table): Change tracing output. @@ -797,7 +2307,7 @@ * builds/win32/visualc/freetype.dsp: Fix raster1->raster and type1z->type1. -2000-11-11 Tom Kacvinsky +2000-11-11 Tom Kacvinsky * builds/unix/freetype-config.in, builds/cygwin/freetype-config.in: Added a --libtool option. When freetype-config --libtool is @@ -808,7 +2318,7 @@ * builds/cygwin/cygwin-def.in: Same fix as previous. -2000-11-10 Tom Kacvinsky +2000-11-10 Tom Kacvinsky * builds/unix/unix-def.in: Add @@ -829,6 +2339,7 @@ * builds/cygwin/install.mk: Fix clean target names. 2000-11-09 David Turner + * Version 2.0 released. ======================= Index: xc/extras/freetype2/INSTALL diff -u xc/extras/freetype2/INSTALL:1.1.1.2 xc/extras/freetype2/INSTALL:1.1.1.4 --- xc/extras/freetype2/INSTALL:1.1.1.2 Tue May 15 23:45:31 2001 +++ xc/extras/freetype2/INSTALL Mon Jan 14 11:51:55 2002 @@ -5,6 +5,47 @@ I. From the command line ------------------------ + There are two ways to quickly build FreeType 2 from the command + line. + + The first, and favorite one, is to use the "Jam" build tool. Jam is + a highly portable replacement for Make whose control files do not + depend on the current platform or compiler toolset. + + For more information, please see: + + http://www.freetype.org/jam/index.html + + The second one is to use "GNU Make" (and NO OTHER MAKE TOOL). + + + 1. Building FT2 with "Jam" + -------------------------- + + Once you've got *our version* of the Jam tool installed on your + system, simply go to the top-level FT2 directory, then type + + "jam" + + on the command line. This will build the library and place it in + the "objs" directory. + + By default, a static library is built. On Unix systems, it is + possible to build a shared library through the "libtool" script. + You need to have libtool installed on your system, then re-define + a few environment variables before invoking Jam, as in + + export CC="libtool --mode=compile cc" + export LINK="libtool --mode=link cc" + jam + + In later releases of FT2, building shared libraries with Jam + should become automatic. + + + 2. Building FT2 with "GNU Make" + ------------------------------- + You need to have GNU Make (version 3.78.1 or newer) installed on your system to compile the library from the command line. This will _NOT_ work with other make tools (including BSD make)! @@ -13,7 +54,7 @@ of make called `makepp' has appeared which can also build FreeType 2 successfully on Unix platforms. See http://LNC.usc.edu/~holt/makepp for more details.] - + - Go to the `freetype2' directory. - Unix (any C compiler should work): @@ -29,48 +70,51 @@ - make - make install + If the configure script isn't run, try to add `unix' as a target + on the command line, e.g.: + + - make setup unix CFG="--prefix=/opt/experimental" + + - Windows: We provide a version of GNU Make for Win32 on the FreeType site. See http://www.freetype.org/download.html for details. - gcc (Mingw, _not_ CygWin): - + - make setup - make - Visual C++: - + - make setup visualc - make - other compilers: - - - make setup xxxx - - make - - where "xxxx" is a special target corresponding to your compiler. - To see a list of supported compilers in this release, type: - - make setup list - + - make setup bcc32 -> Borland C++ 32 bits + - make setup intelc -> Intel C++ + - make setup watcom -> Watcom C++ + - make setup lcc -> Win32-LCC + + II. In your own environment (IDE) --------------------------------- You need to add the directories "freetype2/include" to your include path when compiling the library. - + FreeType 2 is made of several components; each one of them is located in a subdirectory of "freetype2/src". For example, `freetype2/src/truetype/' contains the TrueType font driver. - + DO NOT COMPILE ALL C FILES! Rather, compile the following ones: - + -- base components (required) - + src/base/ftsystem.c src/base/ftinit.c src/base/ftdebug.c @@ -78,14 +122,15 @@ src/base/ftglyph.c src/base/ftbbox.c src/base/ftmm.c - + src/base/ftmac.c -- only on the Macintosh -- other components are optional src/autohint/autohint.c -- auto hinting module src/cache/ftcache.c -- cache sub-system (in beta) - src/sfnt/sfnt.c -- SFNT files support (TrueType & OpenType) + src/sfnt/sfnt.c -- SFNT files support + (TrueType & OpenType) src/cff/cff.c -- CFF/OpenType font driver src/psnames/psnames.c -- Postscript glyph names support src/psaux/psaux.c -- Postscript Type 1 parsing @@ -95,7 +140,7 @@ src/winfonts/winfonts.c -- Windows FONT / FNT font driver Note: - + `truetype.c' needs `sfnt.c' and `psnames.c' `type1.c' needs `psaux.c' and `psnames.c' `type1cid.c' needs `psaux.c' and `psnames.c' @@ -103,5 +148,6 @@ etc. +For more information, please consult "docs/BUILD". --- end of INSTALL -- Index: xc/extras/freetype2/Imakefile diff -u xc/extras/freetype2/Imakefile:1.1 xc/extras/freetype2/Imakefile:removed --- xc/extras/freetype2/Imakefile:1.1 Fri Jan 26 21:16:40 2001 +++ xc/extras/freetype2/Imakefile Fri Jan 18 15:21:39 2002 @@ -1,106 +0,0 @@ -#ifndef SharedFreetypeRev -#define SharedFreetypeRev 6.0 -#endif - -FREETYPELIBSRC=$(TOP)/extras/freetype2 -SharedLibReferences(FREETYPE,freetype,$(FREETYPELIBSRC),SOFREETYPEREV,SharedFreetypeRev) - -#define DoNormalLib NO -#define DoSharedLib YES -#define DoExtraLib NO -#define DoDebugLib NO -#define DoProfileLib NO -#define HasSharedData YES -#define LibName freetype -#define SoRev SOFREETYPEREV -#define IncSubdir freetype -#define IncSubSubdir freetype2 - -#include - -INCLUDES=-Iinclude -Isrc - -BASE = src/base - -SRCS_BASE = ftsystem.c ftinit.c ftdebug.c ftbase.c ftglyph.c ftbbox.c ftmm.c -OBJS_BASE = ftsystem.o ftinit.o ftdebug.o ftbase.o ftglyph.o ftbbox.o ftmm.o - -SRCS_AUTOHINT = autohint.c -OBJS_AUTOHINT = autohint.o - -SRCS_SFNT = sfnt.c -OBJS_SFNT = sfnt.o - -SRCS_CFF = cff.c -OBJS_CFF = cff.o - -SRCS_PSNAMES = psnames.c -OBJS_PSNAMES = psnames.o - -SRCS_PSAUX = psaux.c -OBJS_PSAUX = psaux.o - -SRCS_TRUETYPE = truetype.c -OBJS_TRUETYPE = truetype.o - -SRCS_TYPE1 = type1.c -OBJS_TYPE1 = type1.o - -SRCS_CID = type1cid.c -OBJS_CID = type1cid.o - -SRCS_RASTER = raster.c -OBJS_RASTER = raster.o - -SRCS_SMOOTH = smooth.c -OBJS_SMOOTH = smooth.o - -SRCS_WINFONTS = winfnt.c -OBJS_WINFONTS = winfnt.o - - -SRCS = $(SRCS_BASE) $(SRCS_AUTOHINT) $(SRCS_SFNT) $(SRCS_CFF) \ - $(SRCS_PSNAMES) $(SRCS_PSAUX) $(SRCS_TRUETYPE) $(SRCS_TYPE1) \ - $(SRCS_CID) $(SRCS_RASTER) $(SRCS_SMOOTH) $(SRCS_WINFONTS) - -OBJS = $(OBJS_BASE) $(OBJS_AUTOHINT) $(OBJS_SFNT) $(OBJS_CFF) \ - $(OBJS_PSNAMES) $(OBJS_PSAUX) $(OBJS_TRUETYPE) $(OBJS_TYPE1) \ - $(OBJS_CID) $(OBJS_RASTER) $(OBJS_SMOOTH) $(OBJS_WINFONTS) - -#include - -#if DoSharedLib && SharedDataSeparation -SpecialCObjectRule(sharedlib,NullParameter,$(SHLIBDEF)) -#endif - -#if 0 -MANSUFFIX = $(LIBMANSUFFIX) -InstallManPage(Freetype,$(LIBMANDIR)) -#endif - -LinkSourceFile(ftsystem.c,$(BASE)) -LinkSourceFile(ftinit.c,$(BASE)) -LinkSourceFile(ftdebug.c,$(BASE)) -LinkSourceFile(ftbase.c,$(BASE)) -LinkSourceFile(ftglyph.c,$(BASE)) -LinkSourceFile(ftbbox.c,$(BASE)) -LinkSourceFile(ftmm.c,$(BASE)) -LinkSourceFile(autohint.c,src/autohint) -LinkSourceFile(sfnt.c,src/sfnt) -LinkSourceFile(cff.c,src/cff) -LinkSourceFile(psnames.c,src/psnames) -LinkSourceFile(psaux.c,src/psaux) -LinkSourceFile(truetype.c,src/truetype) -LinkSourceFile(type1.c,src/type1) -LinkSourceFile(type1cid.c,src/cid) -LinkSourceFile(raster.c,src/raster) -LinkSourceFile(smooth.c,src/smooth) -LinkSourceFile(winfnt.c,src/winfonts) - -DependTarget() - -depend:: include/freetype2 - -include/freetype2: - cd include && ln -s . freetype2 - Index: xc/extras/freetype2/Jamfile diff -u /dev/null xc/extras/freetype2/Jamfile:1.1.1.2 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/Jamfile Mon Jan 14 11:51:55 2002 @@ -0,0 +1,54 @@ +# FreeType 2 top Jamfile (c) 2001 David Turner +# + +# We need to invoke a SubDir rule if the FT2 source directory top is not the +# current directory. This allows us to build FreeType 2 as part of a larger +# project easily. +# +if $(FT2_TOP) != $(DOT) +{ + SubDir FT2_TOP ; +} + +FT2_INCLUDE = [ FT2_SubDir include ] ; +FT2_SRC = [ FT2_SubDir src ] ; + +FT2_LIB = $(LIBPREFIX)freetype ; + +if $(DEBUG_HINTER) +{ + CCFLAGS += -DDEBUG_HINTER ; +} + + +# We need "freetype2/include" in the current include path in order to +# compile any part of FreeType 2. +# +SubDirHdr += $(FT2_INCLUDE) ; + +# Uncomment the following line if you want to build individual source files +# for each FreeType 2 module. +# +# FT2_MULTI = true ; + +# The file is used to define macros that are +# later used in #include statements. It needs to be parsed in order to +# record these definitions. +# +HDRMACRO [ FT2_SubDir include freetype config ftheader.h ] ; +HDRMACRO [ FT2_SubDir include freetype internal internal.h ] ; + +# Now include the Jamfile in "freetype2/src", used to drive the compilation +# of each FreeType 2 component and/or module. +# +SubInclude FT2_TOP src ; + + +# tests files (hinter debugging) +# +if $(DEBUG_HINTER) +{ + SubInclude FT2_TOP tests ; +} + +# end of top Jamfile Index: xc/extras/freetype2/Jamrules diff -u /dev/null xc/extras/freetype2/Jamrules:1.1.1.1 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/Jamrules Sun Sep 9 22:55:41 2001 @@ -0,0 +1,53 @@ +# FreeType 2 JamRules (c) 2001 David Turner +# +# This file contains the Jam rules needed to build the FreeType 2 library. +# It is shared by all Jamfiles and is included only once in the build +# process. +# + + +# Determine prefix of library file. We must use "libxxxxx" on Unix systems, +# while all other simply use the real name. +# +if $(UNIX) +{ + LIBPREFIX ?= lib ; +} +else +{ + LIBPREFIX ?= "" ; +} + +# FT2_TOP contains the location of the FreeType source directory. You can +# set it to a specific value if you want to compile the library as part of a +# larger project. +# +FT2_TOP ?= $(DOT) ; + +# Define a new rule used to declare a sub directory of the Nirvana source +# tree. +# +rule FT2_SubDir +{ + if $(FT2_TOP) = $(DOT) + { + return [ FDirName $(<) ] ; + } + else + { + return [ FDirName $(FT2_TOP) $(<) ] ; + } +} + +# The directory "include" must be in the current include path when compiling +# any part of FreeType. We thus update the HDRS variable there. +# +HDRS += [ FT2_SubDir include ] ; + +# We also set ALL_LOCATE_TARGET in order to place all object and library +# files in "objs". +# +ALL_LOCATE_TARGET ?= [ FT2_SubDir objs ] ; + + +# end of Jamrules Index: xc/extras/freetype2/LICENSE.TXT diff -u xc/extras/freetype2/LICENSE.TXT:1.1.1.2 xc/extras/freetype2/LICENSE.TXT:removed --- xc/extras/freetype2/LICENSE.TXT:1.1.1.2 Tue May 15 23:45:31 2001 +++ xc/extras/freetype2/LICENSE.TXT Fri Jan 18 15:21:39 2002 @@ -1,10 +0,0 @@ - -FreeType comes with two licenses from which you can choose the one which -fits your needs best: - - . The FreeType License, in file `docs/FTL.txt'. - - . The GNU General Public License, in file `docs/GPL.txt'. - -The contributed PCF driver comes with a license similar to that of X Windows -which is compatible to the above two licenses (see file src/pcf/readme). Index: xc/extras/freetype2/README diff -u xc/extras/freetype2/README:1.1.1.1 xc/extras/freetype2/README:1.1.1.4 --- xc/extras/freetype2/README:1.1.1.1 Tue May 15 23:45:31 2001 +++ xc/extras/freetype2/README Mon Jan 14 11:51:55 2002 @@ -1,20 +1,29 @@ - FreeType 2.0.2 + Special note to Unix users + ========================== + + Please read the file "README.UNX", it contains important + information regarding the installation of FreeType on Unix + systems, especially GNU based operating systems like GNU/Linux. + + + FreeType 2.0.6 ============== - - Please read the CHANGES file, it contains IMPORTANT INFORMATION + + Please read the docs/CHANGES file, it contains IMPORTANT + INFORMATION. - Read the files "INSTALL" or "docs/BUILD" for installation instructions + Read the files "INSTALL" or "docs/BUILD" for installation + instructions. - Note that the FreeType 2 documentation is now available as a separate - package from our sites. See: - - ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.0.2.tar.bz2 - ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.0.2.tar.gz - ftp://ftp.freetype.org/pub/freetype2/ftdoc202.zip + Note that the FreeType 2 documentation is now available as a + separate package from our sites. See: - Enjoy.. :-) + ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.0.6.tar.bz2 + ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.0.6.tar.gz + ftp://ftp.freetype.org/pub/freetype2/ftdoc206.zip + Enjoy! - The FreeType Team + The FreeType Team Index: xc/extras/freetype2/README.UNX diff -u /dev/null xc/extras/freetype2/README.UNX:1.1.1.1 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/README.UNX Mon Jan 14 11:51:55 2002 @@ -0,0 +1,104 @@ + +SPECIAL NOTE FOR UNIX USERS +=========================== + + If you are installing this release of FreeType on a system that + already uses release 2.0.5 (or even an older version), you have to + perform a few special steps to ensure that everything goes well. + + + I. Enable the TrueType bytecode hinter if you need it + ----------------------------------------------------- + + The TrueType bytecode interpreter is disabled in all public + releases of the FreeType packages for patents reasons (see + http://www.freetype.org/patents.html for more details). + + However, many Linux distributions do enable the interpreter in the + FreeType packages (DEB/RPM/etc.) they produce for their platforms. + If you are using TrueType fonts on your system, you most probably + want to enable it manually by doing the following: + + - open the file "include/freetype/config/ftoption.h" + + - locate a line that says: + + #undef TT_CONFIG_OPTION_BYTECODE_ITNERPRETER + + - change it to: + + #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER + + of course, this must be done _before_ compiling the library + + + II. Determine the correct installation path + ------------------------------------------- + + By default, the source package will install the library in + "/usr/local". However, many Unix distributions now install the + library in "/usr", since FreeType is becoming a critical system + component. + + If FreeType is already installed on your system, type + + freetype-config --prefix + + on the command line. This should return the installation path to + use below (e.g. "/usr" or "/usr/local"). Otherwise, simply use + "/usr". + + Then, to build and install the library, type: + + make setup unix CFG="--prefix=" + make + make install (as root) + + where "" must be replaced by the prefix returned by + the "freetype-config" command. + + + III. Take care of XFree86 version 4 + ----------------------------------- + + Certain recent Linux distributions will install _several_ versions + of FreeType on your system. For example, on a fresh Mandrake 8.1 + system, you can find the following files: + + /usr/lib/libfreetype.so which links to + /usr/lib/libfreetype.6.1.0.so + + and + + /usr/X11R6/lib/libfreetype.so which links to + /usr/X11R6/lib/libfreetype.6.0.so + + Note that these files correspond to two distinct versions of the + library! It seems that this surprising issue is due to the + install scripts of recent XFree86 servers (from 4.1.0) which + irremediably install their own (dated) version of the library in + "/usr/X11R6/lib". + + In certain _rare_ cases you may experience minor problems if you + install this release of the library in "/usr" only, namely, that + certain applications will not benefit from the bug fixes and + rendering improvements you'd expect. + + There are two good ways to deal with this situation: + + - Install the library _twice_, in "/usr" and in "/usr/X11R6" + (you have to do that each time you install a new FreeType + release though). + + - Change the link in /usr/X11R6/lib/libfreetype.so to point to + + /usr/lib/libfreetype.so, + + and get rid of + + /usr/X11R6/lib/libfreetype.6.0.so + + The FreeType Team is not responsible for this problem, so please + contact either the XFree86 development team or your Linux + distributor to help clear this issue in case the information given + here doesn't help. Index: xc/extras/freetype2/README.VMS diff -u xc/extras/freetype2/README.VMS:1.1.1.1 xc/extras/freetype2/README.VMS:removed --- xc/extras/freetype2/README.VMS:1.1.1.1 Tue May 15 23:45:31 2001 +++ xc/extras/freetype2/README.VMS Fri Jan 18 15:21:39 2002 @@ -1,35 +0,0 @@ -How to build the freetype2 library on VMS ------------------------------------------ - -Just type one of the following depending on the type of external entries you -want: - - mms - -or - - mms/macro=("COMP_FLAGS=/name=(as_is,short)") - -The library is avalaible in the directory - - [.LIB] - -To compile applications using freetype2 you'll need to define the logical -FREETYPE pointing to the directory - - [.INCLUDE.FREETYPE] - -(i.e., if the directory in which this README.VMS file is located is -$disk:[freetype] then define the logical with - - define freetype $disk:[freetype.include.freetype] - -This version has been tested with Compaq C V6.2-006 on OpenVMS Alpha V7.2-1. - - - Any problems can be reported to - - joukj@hrem.stm.tudelft.nl - - - Jouk Jansen Index: xc/extras/freetype2/TODO diff -u xc/extras/freetype2/TODO:1.1.1.1 xc/extras/freetype2/TODO:removed --- xc/extras/freetype2/TODO:1.1.1.1 Tue May 15 23:45:31 2001 +++ xc/extras/freetype2/TODO Fri Jan 18 15:21:39 2002 @@ -1,12 +0,0 @@ -Here is a list of items that need to be addressed in FreeType 2: - -* Add synthesized Unicode charmap processing to the CFF driver. - -* Fix Visual C++ project file - -* Fix a bug in the TrueType driver: linear horizontal advances of composites - are not returned properly. - -* Change the build system to work with the "Jam" tool instead of the - terribly complex and error-prone GNU Makefiles we're currently using - Index: xc/extras/freetype2/descrip.mms diff -u xc/extras/freetype2/descrip.mms:1.1.1.1 xc/extras/freetype2/descrip.mms:1.1.1.2 --- xc/extras/freetype2/descrip.mms:1.1.1.1 Tue May 15 23:45:31 2001 +++ xc/extras/freetype2/descrip.mms Mon Jan 14 11:51:55 2002 @@ -1,5 +1,5 @@ # -# FreeType 2 build system -- top-level Makefile for VMS +# FreeType 2 build system -- top-level Makefile for OpenVMS # @@ -14,52 +14,54 @@ all : - define freetype [--.include.freetype] - define psaux [-.psaux] - define autohint [-.autohint] - define base [-.base] - define cache [-.cache] - define cff [-.cff] - define cid [-.cid] - define pcf [-.pcf] - define psnames [-.psnames] - define raster [-.raster] - define sfnt [-.sfnt] - define smooth [-.smooth] - define truetype [-.truetype] - define type1 [-.type1] - define winfonts [-.winfonts] - if f$search("lib.dir") .eqs. "" then create/directory [.lib] - set default [.builds.vms] - $(MMS)$(MMSQUALIFIERS) - set default [--.src.autohint] - $(MMS)$(MMSQUALIFIERS) - set default [-.base] - $(MMS)$(MMSQUALIFIERS) - set default [-.cache] - $(MMS)$(MMSQUALIFIERS) - set default [-.cff] - $(MMS)$(MMSQUALIFIERS) - set default [-.cid] - $(MMS)$(MMSQUALIFIERS) - set default [-.pcf] - $(MMS)$(MMSQUALIFIERS) - set default [-.psaux] - $(MMS)$(MMSQUALIFIERS) - set default [-.psnames] - $(MMS)$(MMSQUALIFIERS) - set default [-.raster] - $(MMS)$(MMSQUALIFIERS) - set default [-.sfnt] - $(MMS)$(MMSQUALIFIERS) - set default [-.smooth] - $(MMS)$(MMSQUALIFIERS) - set default [-.truetype] - $(MMS)$(MMSQUALIFIERS) - set default [-.type1] - $(MMS)$(MMSQUALIFIERS) - set default [-.winfonts] - $(MMS)$(MMSQUALIFIERS) - set default [--] + define freetype [--.include.freetype] + define psaux [-.psaux] + define autohint [-.autohint] + define base [-.base] + define cache [-.cache] + define cff [-.cff] + define cid [-.cid] + define pcf [-.pcf] + define psnames [-.psnames] + define raster [-.raster] + define sfnt [-.sfnt] + define smooth [-.smooth] + define truetype [-.truetype] + define type1 [-.type1] + define winfonts [-.winfonts] + if f$search("lib.dir") .eqs. "" then create/directory [.lib] + set default [.builds.vms] + $(MMS)$(MMSQUALIFIERS) + set default [--.src.autohint] + $(MMS)$(MMSQUALIFIERS) + set default [-.base] + $(MMS)$(MMSQUALIFIERS) + set default [-.cache] + $(MMS)$(MMSQUALIFIERS) + set default [-.cff] + $(MMS)$(MMSQUALIFIERS) + set default [-.cid] + $(MMS)$(MMSQUALIFIERS) + set default [-.pcf] + $(MMS)$(MMSQUALIFIERS) + set default [-.psaux] + $(MMS)$(MMSQUALIFIERS) + set default [-.pshinter] + $(MMS)$(MMSQUALIFIERS) + set default [-.psnames] + $(MMS)$(MMSQUALIFIERS) + set default [-.raster] + $(MMS)$(MMSQUALIFIERS) + set default [-.sfnt] + $(MMS)$(MMSQUALIFIERS) + set default [-.smooth] + $(MMS)$(MMSQUALIFIERS) + set default [-.truetype] + $(MMS)$(MMSQUALIFIERS) + set default [-.type1] + $(MMS)$(MMSQUALIFIERS) + set default [-.winfonts] + $(MMS)$(MMSQUALIFIERS) + set default [--] # EOF Index: xc/extras/freetype2/builds/detect.mk diff -u xc/extras/freetype2/builds/detect.mk:1.1.1.2 xc/extras/freetype2/builds/detect.mk:1.1.1.3 --- xc/extras/freetype2/builds/detect.mk:1.1.1.2 Tue May 15 23:45:45 2001 +++ xc/extras/freetype2/builds/detect.mk Sun Sep 9 22:55:42 2001 @@ -131,22 +131,25 @@ @echo "" @$(COPY) $(CONFIG_RULES) $(CONFIG_MK) + +# Special case for Dos, Windows, OS/2, where echo "" doesn't work correctly! +# dos_setup: - @echo ÿ + @type builds\newline @echo $(PROJECT_TITLE) build system -- automatic system detection - @echo ÿ + @type builds\newline @echo The following settings are used: - @echo ÿ - @echo ÿÿplatformÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$(PLATFORM) - @echo ÿÿcompilerÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$(CC) - @echo ÿÿconfiguration directoryÿÿÿÿÿÿ$(BUILD) - @echo ÿÿconfiguration rulesÿÿÿÿÿÿÿÿÿÿ$(CONFIG_RULES) - @echo ÿ + @type builds\newline + @echo platformÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$(PLATFORM) + @echo compilerÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$(CC) + @echo configuration directoryÿÿÿÿÿÿ$(BUILD) + @echo configuration rulesÿÿÿÿÿÿÿÿÿÿ$(CONFIG_RULES) + @type builds\newline @echo If this does not correspond to your system or settings please remove the file @echo '$(CONFIG_MK)' from this directory then read the INSTALL file for help. - @echo ÿ + @type builds\newline @echo Otherwise, simply type 'make' again to build the library. - @echo ÿ + @type builds\newline @$(COPY) $(subst /,\,$(CONFIG_RULES) $(CONFIG_MK)) > nul # EOF Index: xc/extras/freetype2/builds/freetype.mk diff -u xc/extras/freetype2/builds/freetype.mk:1.1.1.2 xc/extras/freetype2/builds/freetype.mk:1.1.1.3 --- xc/extras/freetype2/builds/freetype.mk:1.1.1.2 Tue May 15 23:45:45 2001 +++ xc/extras/freetype2/builds/freetype.mk Sun Sep 9 22:55:42 2001 @@ -273,13 +273,14 @@ # The Dos command shell does not support very long list of arguments, so # we are stuck with wildcards. # +# Don't break the command lines with; this prevents the "del" command from +# working correctly on Win9x. +# clean_project_dos: - -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(OBJ_))*.$O \ - $(CLEAN) $(NO_OUTPUT) + -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(OBJ_))*.$O $(CLEAN) $(NO_OUTPUT) distclean_project_dos: clean_project_dos - -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) \ - $(DISTCLEAN) $(NO_OUTPUT) + -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) $(DISTCLEAN) $(NO_OUTPUT) .PHONY: remove_config_mk Index: xc/extras/freetype2/builds/link_dos.mk diff -u xc/extras/freetype2/builds/link_dos.mk:1.1.1.2 xc/extras/freetype2/builds/link_dos.mk:1.1.1.3 --- xc/extras/freetype2/builds/link_dos.mk:1.1.1.2 Tue May 15 23:45:45 2001 +++ xc/extras/freetype2/builds/link_dos.mk Sun Dec 16 12:49:13 2001 @@ -34,7 +34,7 @@ ifdef CLEAN_LIBRARY -$(CLEAN_LIBRARY) $(NO_OUTPUT) endif - $(LINK_LIBRARY) + $(LINK_LIBRARY) endif Index: xc/extras/freetype2/builds/link_std.mk diff -u xc/extras/freetype2/builds/link_std.mk:1.1.1.2 xc/extras/freetype2/builds/link_std.mk:1.1.1.4 --- xc/extras/freetype2/builds/link_std.mk:1.1.1.2 Tue May 15 23:45:45 2001 +++ xc/extras/freetype2/builds/link_std.mk Sun Dec 16 12:49:13 2001 @@ -34,7 +34,7 @@ ifdef CLEAN_LIBRARY -$(CLEAN_LIBRARY) $(NO_OUTPUT) endif - $(LINK_LIBRARY) + $(LINK_LIBRARY) endif Index: xc/extras/freetype2/builds/newline diff -u /dev/null xc/extras/freetype2/builds/newline:1.1.1.1 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/builds/newline Sun Sep 9 22:55:42 2001 @@ -0,0 +1 @@ + Index: xc/extras/freetype2/builds/toplevel.mk diff -u xc/extras/freetype2/builds/toplevel.mk:1.1.1.2 xc/extras/freetype2/builds/toplevel.mk:1.1.1.3 --- xc/extras/freetype2/builds/toplevel.mk:1.1.1.2 Tue May 15 23:45:45 2001 +++ xc/extras/freetype2/builds/toplevel.mk Sun Sep 9 22:55:42 2001 @@ -97,13 +97,20 @@ # GNU make. Similarly, `nul' is created if e.g. `make setup win32' has # been erroneously used. # - distclean: + # note: This test is duplicated in "builds/toplevel.mk". + # + is_unix := $(strip $(wildcard /sbin/init) $(wildcard /usr/sbin/init) $(wildcard /hurd/auth)) + ifneq ($(is_unix),) + + distclean: $(RM) builds/unix/config.cache $(RM) builds/unix/config.log $(RM) builds/unix/config.status $(RM) builds/unix/unix-def.mk $(RM) builds/unix/unix-cc.mk $(RM) nul + + endif # test is_unix # IMPORTANT: # Index: xc/extras/freetype2/builds/amiga/README diff -u /dev/null xc/extras/freetype2/builds/amiga/README:1.1.1.2 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/builds/amiga/README Mon Jan 14 11:51:56 2002 @@ -0,0 +1,91 @@ +The makefile is for ppc-morphos-gcc-2.95.3-bin.tgz (gcc 2.95.3 hosted +on 68k-Amiga producing MorphOS-PPC-binaries from +http://www.morphos.de). To use it, type "make assign", then "make", +it produces a link library libft2_ppc.a. + + +The smakefile is a makefile for Amiga SAS/C 6.58 (no longer available, +latest sold version was 6.50, updates can be found in Aminet). It is +based on the version found in the sourcecode of ttf.library 0.83b for +FreeType 1.3.1 from Richard Griffith (ragriffi@sprynet.com, +http://ragriffi.home.sprynet.com). + +You will also need the latest include files and amiga.lib from the +Amiga Developer CD V2.1 (or newer, I hope...) for AmigaOS 3.5, the +generated code should work under AmigaOS 2.04 (V37) and up. + +To use it, call "smake assign" and then "smake" from the builds/amiga +directory. The results are: + +- A link library "ft2_680x0.lib" (where x depends on the setting of + the CPU entry in the smakefile) containing all FreeType2 parts + except of the init code, debugging code, and the system interface + code. + +- ftsystem.o, an object module containing the standard version of the + system interface code which uses fopen() fclose() fread() fseek() + ftell() malloc() realloc() and free() from lib:sc.lib (not pure). + +- ftsystempure.o, an object module containing the pure version of the + system interface code which uses Open() Close() Read() Seek() + ExamineFH() AsmAllocPooled() AsmFreePooled() etc. This version can + be used in both normal programs and in Amiga run-time shared system + librarys (can be linked with lib:libinit.o, no copying of DATA and + BSS hunks for each OpenLibrary() necessary). Source code is in + src/base/ftsystem.c. + +- ftdebug.o, an object module containing the standard version of the + debugging code which uses vprintf() and exit() (not pure). + Debugging can be turned on in FT:include/freetype/config/ftoption.h + and with FT_SetTraceLevel(). + +- ftdebugpure.o, an object module containing the pure version of the + debugging code which uses KVPrintf() from lib:debug.lib and no + exit(). For debugging of Amiga run-time shared system libraries. + Source code is in src/base/ftdebug.c. + +- NO ftinit.o. Since linking with a link library should result in + linking only the needed object modules in it, but standard + ftsystem.o would force ALL FreeType2 modules to be linked to your + program, I decided to use a different scheme: You must #include + FT:src/base/ftinit.c in your sourcecode and specify with #define + statements which modules you need. See + include/freetype/config/ftmodule.h. + + +To use in your own programs: + +- Insert the #define and #include statements from top of + include/freetype/config/ftmodule.h in your source code and uncomment + the #define statements for the FreeType2 modules you need. + +- You can use either PARAMETERS=REGISTER or PARAMETERS=STACK for + calling the FreeType2 functions, since the link library and the + object files are compiled with PARAMETERS=BOTH. + +- "smake assign" (assign "FT:" to the FreeType2 main directory). + +- Compile your program. + +- Link with either ftsystem.o or ftsystempure.o, if debugging enabled + with either ftdebug.o or (ftdebugpure.o and lib:debug.lib), and with + ft2_680x0.lib as link library. + + +To adopt to other compilers: + +- The standard ANSI C maximum length of 31 significant characters in + identifiers is not enough for FreeType2. Check if your compiler has + a minimum length of 40 significant characters or can be switched to + it. "idlen=40" is the option for SAS/C. Setting #define + HAVE_LIMIT_ON_IDENTS in an include file may also work (not tested). + +- Make sure that the include directory in builds/amiga is searched + before the normal FreeType2 include directory, so you are able to + replace problematic include files with your own version (same may be + useful for the src directory). + +- An example of how to replace/workaround a problematic include file + is include/config/ftconfig.h; it changes a #define that would + prevent SAS/C from generating XDEF's where it should do that and + then includes the standard FreeType2 include file. Index: xc/extras/freetype2/builds/amiga/makefile diff -u /dev/null xc/extras/freetype2/builds/amiga/makefile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/builds/amiga/makefile Mon Jan 14 11:51:55 2002 @@ -0,0 +1,185 @@ +# +# Makefile for FreeType2 link library using ppc-morphos-gcc-2.95.3-bin.tgz +# (gcc 2.95.3 hosted on 68k-Amiga producing MorphOS-PPC-binaries from +# http://www.morphos.de) +# +# to build from the builds/amiga directory call +# +# make assign +# make +# +# Your programs source code should start with this +# (uncomment the parts you do not need to keep the program small): +# ---8<--- +#define FT_USE_AUTOHINT // autohinter +#define FT_USE_RASTER // monochrome rasterizer +#define FT_USE_SMOOTH // anti-aliasing rasterizer +#define FT_USE_TT // truetype font driver +#define FT_USE_T1 // type1 font driver +#define FT_USE_T1CID // cid-keyed type1 font driver +#define FT_USE_CFF // opentype font driver +#define FT_USE_PCF // pcf bitmap font driver +#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver +#include "FT:src/base/ftinit.c" +# ---8<--- +# +# link your programs with libft2_ppc.a and either ftsystem.ppc.o or ftsystempure.ppc.o +# (and either ftdebug.ppc.o or ftdebugpure.ppc.o if you enabled FT_DEBUG_LEVEL_ERROR or +# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). + +all: libft2_ppc.a ftsystem.ppc.o ftsystempure.ppc.o + +assign: + assign FT: // + +FTSRC = /FT/src + +CC = ppc-morphos-gcc +AR = ppc-morphos-ar rc +RANLIB = ppc-morphos-ranlib +LD = ppc-morphos-ld +CFLAGS = -O2 -I/emu/emulinclude/includegcc -I/emu/include -Iinclude -I$(FTSRC) -I/FT/include + +# +# FreeType2 library base +# +ftbase.ppc.o: $(FTSRC)/base/ftbase.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftinit.ppc.o: $(FTSRC)/base/ftinit.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftsystem.ppc.o: $(FTSRC)/base/ftsystem.c + $(CC) -c $(CFLAGS) -o $@ $< + +# pure version for use in run-time library etc +ftsystempure.ppc.o: src/base/ftsystem.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftdebug.ppc.o: $(FTSRC)/base/ftdebug.c + $(CC) -c $(CFLAGS) -o $@ $< + +# pure version for use in run-time library etc +ftdebugpure.ppc.o: src/base/ftdebug.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library base extensions +# +ftglyph.ppc.o: $(FTSRC)/base/ftglyph.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftbbox.ppc.o: $(FTSRC)/base/ftbbox.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftmm.ppc.o: $(FTSRC)/base/ftmm.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftsynth.ppc.o: $(FTSRC)/base/ftsynth.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library autohinting module +# +autohint.ppc.o: $(FTSRC)/autohint/autohint.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library autohinting module extensions +# +ahoptim.ppc.o: $(FTSRC)/autohint/ahoptim.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library postscript hinting module +# +pshinter.ppc.o: $(FTSRC)/pshinter/pshinter.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library PS support module +# +psaux.ppc.o: $(FTSRC)/psaux/psaux.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library PS glyph names module +# +psnames.ppc.o: $(FTSRC)/psnames/psnames.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library monochrome raster module +# +raster.ppc.o: $(FTSRC)/raster/raster.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library anti-aliasing raster module +# +smooth.ppc.o: $(FTSRC)/smooth/smooth.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library 'sfnt' module +# +sfnt.ppc.o: $(FTSRC)/sfnt/sfnt.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library glyph and image caching system (still experimental) +# +ftcache.ppc.o: $(FTSRC)/cache/ftcache.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library OpenType font driver +# +cff.ppc.o: $(FTSRC)/cff/cff.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library TrueType font driver +# +truetype.ppc.o: $(FTSRC)/truetype/truetype.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library Type1 font driver +# +type1.ppc.o: $(FTSRC)/type1/type1.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library CID-keyed Type1 font driver +# +type1cid.ppc.o: $(FTSRC)/cid/type1cid.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library Windows FNT/FON bitmap font driver +# +winfnt.ppc.o: $(FTSRC)/winfonts/winfnt.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library PCF bitmap font driver +# +pcf.ppc.o: $(FTSRC)/pcf/pcf.c + $(CC) -c $(CFLAGS) -o $@ $< + +BASEPPC = ftbase.ppc.o ftglyph.ppc.o ftbbox.ppc.o ftmm.ppc.o ftsynth.ppc.o + +DEBUGPPC = ftdebug.ppc.o ftdebugpure.ppc.o + +AHINTPPC = autohint.ppc.o ahoptim.ppc.o + +PSPPC = psaux.ppc.o psnames.ppc.o pshinter.ppc.o + +RASTERPPC = raster.ppc.o smooth.ppc.o + +FONTDPPC = cff.ppc.o type1.ppc.o type1cid.ppc.o truetype.ppc.o winfnt.ppc.o pcf.ppc.o + +libft2_ppc.a: $(BASEPPC) $(AHINTPPC) $(PSPPC) $(RASTERPPC) sfnt.ppc.o ftcache.ppc.o $(FONTDPPC) + $(AR) $@ $(BASEPPC) $(AHINTPPC) $(PSPPC) $(RASTERPPC) sfnt.ppc.o ftcache.ppc.o $(FONTDPPC) + -@ ($(RANLIB) $@ || true) >/dev/null 2>&1 Index: xc/extras/freetype2/builds/amiga/smakefile diff -u /dev/null xc/extras/freetype2/builds/amiga/smakefile:1.1.1.2 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/builds/amiga/smakefile Mon Jan 14 11:51:56 2002 @@ -0,0 +1,226 @@ +# +# Makefile for FreeType2 link library using Amiga SAS/C 6.58 +# +# to build from the builds/amiga directory call +# +# smake assign +# smake +# +# Your programs source code should start with this +# (uncomment the parts you do not need to keep the program small): +# ---8<--- +#define FT_USE_AUTOHINT // autohinter +#define FT_USE_RASTER // monochrome rasterizer +#define FT_USE_SMOOTH // anti-aliasing rasterizer +#define FT_USE_TT // truetype font driver +#define FT_USE_T1 // type1 font driver +#define FT_USE_T1CID // cid-keyed type1 font driver +#define FT_USE_CFF // opentype font driver +#define FT_USE_PCF // pcf bitmap font driver +#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver +#include "FT:src/base/ftinit.c" +# ---8<--- +# +# link your programs with ft2_680x0.lib and either ftsystem.o or ftsystempure.o +# (and either ftdebug.o or ftdebugpure.o if you enabled FT_DEBUG_LEVEL_ERROR or +# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). + +OBJBASE = ftbase.o ftglyph.o ftbbox.o ftmm.o ftsynth.o + +OBJSYSTEM = ftsystem.o ftsystempure.o + +OBJDEBUG = ftdebug.o ftdebugpure.o + +OBJAHINT = autohint.o ahoptim.o + +OBJPSHINT = pshinter.o + +OBJPSAUX = psaux.o + +OBJPSNAM = psnames.o + +OBJRAST = raster.o + +OBJSMOOTH = smooth.o + +OBJSFNT = sfnt.o + +OBJCACHE = ftcache.o + +OBJOT = cff.o + +OBJT1 = type1.o + +OBJT1C = type1cid.o + +OBJTT = truetype.o + +OBJWINFNT = winfnt.o + +OBJPCF = pcf.o + +OBJPS = $(OBJPSAUX) $(OBJPSNAM) $(OBJPSHINT) + +OBJRASTER = $(OBJRAST) $(OBJSMOOTH) + +OBJFONTD = $(OBJOT) $(OBJT1) $(OBJT1C) $(OBJTT) $(OBJWINFNT) $(OBJPCF) + +CORE = FT:src/ + +CPU = 68000 +#CPU = 68020 +#CPU = 68030 +#CPU = 68040 +#CPU = 68060 + +OPTIMIZER = optinlocal + +SCFLAGS = optimize opttime optsched strmerge strsect=near idlen=40 cpu=$(CPU)\ + idir=include/ idir=$(CORE) idir=FT:include/ nostackcheck nochkabort\ + noicons ignore=79,85,110,306 parameters=both + +LIB = ft2_$(CPU).lib + +# sample linker options +OPTS = link lib=$(LIB),lib:sc.lib,lib:amiga.lib,lib:debug.lib\ + smallcode smalldata noicons utillib + +# sample program entry +#myprog: myprog.c ftsystem.o $(LIB) +# sc $< programname=$@ ftsystem.o $(SCFLAGS) $(OPTS) + +all: $(LIB) $(OBJSYSTEM) $(OBJDEBUG) + +assign: + assign FT: // + +# uses separate object modules in lib to make for easier debugging +# also, can make smaller programs if entire engine is not used +ft2_$(CPU).lib: $(OBJBASE) $(OBJAHINT) $(OBJPS) $(OBJRASTER) $(OBJSFNT) $(OBJCACHE) $(OBJFONTD) + oml $@ r $(OBJBASE) $(OBJAHINT) $(OBJPS) $(OBJRASTER) $(OBJSFNT) $(OBJCACHE) $(OBJFONTD) + +clean: + -delete \#?.o + +realclean: clean + -delete ft2$(CPU).lib + +# +# freetype library base +# +ftbase.o: $(CORE)base/ftbase.c + sc $(SCFLAGS) objname=$@ $< +ftinit.o: $(CORE)base/ftinit.c + sc $(SCFLAGS) objname=$@ $< +ftsystem.o: $(CORE)base/ftsystem.c + sc $(SCFLAGS) objname=$@ $< +ftsystempure.o: src/base/ftsystem.c ## pure version for use in run-time library etc + sc $(SCFLAGS) objname=$@ $< +ftdebug.o: $(CORE)base/ftdebug.c + sc $(SCFLAGS) objname=$@ $< +ftdebugpure.o: src/base/ftdebug.c ## pure version for use in run-time library etc + sc $(SCFLAGS) objname=$@ $< +# +# freetype library base extensions +# +ftglyph.o: $(CORE)base/ftglyph.c + sc $(SCFLAGS) objname=$@ $< +ftbbox.o: $(CORE)base/ftbbox.c + sc $(SCFLAGS) objname=$@ $< +ftmm.o: $(CORE)base/ftmm.c + sc $(SCFLAGS) objname=$@ $< +ftsynth.o: $(CORE)base/ftsynth.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library autohinting module +# +autohint.o: $(CORE)autohint/autohint.c + sc $(SCFLAGS) objname=$@ $< +# +# freetype library autohinting module extensions +# +ahoptim.o: $(CORE)autohint/ahoptim.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library PS hinting module +# +pshinter.o: $(CORE)pshinter/pshinter.c + sc $(SCFLAGS) objname=$@ $< +# +# freetype library PS support module +# +psaux.o: $(CORE)psaux/psaux.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library PS glyph names module +# +psnames.o: $(CORE)psnames/psnames.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library monochrome raster module +# +raster.o: $(CORE)raster/raster.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library anti-aliasing raster module +# +smooth.o: $(CORE)smooth/smooth.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library 'sfnt' module +# +sfnt.o: $(CORE)sfnt/sfnt.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library glyph and image caching system (still experimental) +# +ftcache.o: $(CORE)cache/ftcache.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library OpenType font driver +# +cff.o: $(CORE)cff/cff.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library TrueType font driver +# +truetype.o: $(CORE)truetype/truetype.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library Type1 font driver +# +type1.o: $(CORE)type1/type1.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library CID-keyed Type1 font driver +# +type1cid.o: $(CORE)cid/type1cid.c + sc $(SCFLAGS) objname=$@ $< +# +# freetype library CID-keyed Type1 font driver extensions +# +#cidafm.o: $(CORE)cid/cidafm.c +# sc $(SCFLAGS) objname=$@ $< + +# +# freetype library Windows FNT/FON bitmap font driver +# +winfnt.o: $(CORE)winfonts/winfnt.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library PCF bitmap font driver +# +pcf.o: $(CORE)pcf/pcf.c + sc $(SCFLAGS) objname=$@ $< Index: xc/extras/freetype2/builds/amiga/include/freetype/config/ftconfig.h diff -u /dev/null xc/extras/freetype2/builds/amiga/include/freetype/config/ftconfig.h:1.1.1.2 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/builds/amiga/include/freetype/config/ftconfig.h Mon Jan 14 11:51:56 2002 @@ -0,0 +1,20 @@ +// TetiSoft: We must change FT_BASE_DEF and FT_EXPORT_DEF + +//#define FT_BASE_DEF( x ) extern x // SAS/C wouldn't generate an XDEF +//#define FT_EXPORT_DEF( x ) extern x // SAS/C wouldn't generate an XDEF +#undef FT_BASE_DEF +#define FT_BASE_DEF( x ) x +#undef FT_EXPORT_DEF +#define FT_EXPORT_DEF( x ) x + +// TetiSoft: now include original file +#ifndef __MORPHOS__ +#include "FT:include/freetype/config/ftconfig.h" +#else +// We must define that, it seems that +// lib/gcc-lib/ppc-morphos/2.95.3/include/syslimits.h is missing in +// ppc-morphos-gcc-2.95.3-bin.tgz (gcc for 68k producing MorphOS PPC elf +// binaries from http://www.morphos.de) +#define _LIBC_LIMITS_H_ +#include "/FT/include/freetype/config/ftconfig.h" +#endif Index: xc/extras/freetype2/builds/amiga/include/freetype/config/ftmodule.h diff -u /dev/null xc/extras/freetype2/builds/amiga/include/freetype/config/ftmodule.h:1.1.1.2 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/builds/amiga/include/freetype/config/ftmodule.h Mon Jan 14 11:51:56 2002 @@ -0,0 +1,102 @@ +// TetiSoft: To specify which modules you need, +// insert the following in your source file and uncomment as needed: + +/* +//#define FT_USE_AUTOHINT // autohinter +//#define FT_USE_RASTER // monochrome rasterizer +//#define FT_USE_SMOOTH // anti-aliasing rasterizer +//#define FT_USE_TT // truetype font driver +//#define FT_USE_T1 // type1 font driver +//#define FT_USE_T1CID // cid-keyed type1 font driver // no cmap support, useless +//#define FT_USE_CFF // opentype font driver // does not work with TektonPro +//#define FT_USE_PCF // pcf bitmap font driver +//#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver +#include "FT:src/base/ftinit.c" +*/ + +// TetiSoft: make sure that needed support modules are built in. +// Dependencies can be found by searching for FT_Get_Module. + +#ifdef FT_USE_TT +#define FT_USE_SFNT +#endif + +#ifdef FT_USE_CFF +#define FT_USE_SFNT +#define FT_USE_PSHINT +#define FT_USE_PSNAMES +#endif + +#ifdef FT_USE_T1 +#define FT_USE_PSAUX +#define FT_USE_PSHINT +#define FT_USE_PSNAMES +#endif + +#ifdef FT_USE_T1CID +#define FT_USE_PSAUX +#define FT_USE_PSHINT +#define FT_USE_PSNAMES +#endif + +#ifdef FT_USE_PSAUX +#define FT_USE_PSNAMES +#endif + +#ifdef FT_USE_SFNT +#define FT_USE_PSNAMES +#endif + +// TetiSoft: Now include the modules + +#ifdef FT_USE_AUTOHINT +FT_USE_MODULE(autohint_module_class) +#endif + +#ifdef FT_USE_PSHINT +FT_USE_MODULE(pshinter_module_class) +#endif + +#ifdef FT_USE_CFF +FT_USE_MODULE(cff_driver_class) +#endif + +#ifdef FT_USE_T1CID +FT_USE_MODULE(t1cid_driver_class) +#endif + +#ifdef FT_USE_PCF +FT_USE_MODULE(pcf_driver_class) +#endif + +#ifdef FT_USE_PSAUX +FT_USE_MODULE(psaux_module_class) +#endif + +#ifdef FT_USE_PSNAMES +FT_USE_MODULE(psnames_module_class) +#endif + +#ifdef FT_USE_RASTER +FT_USE_MODULE(ft_raster1_renderer_class) +#endif + +#ifdef FT_USE_SFNT +FT_USE_MODULE(sfnt_module_class) +#endif + +#ifdef FT_USE_SMOOTH +FT_USE_MODULE(ft_smooth_renderer_class) +#endif + +#ifdef FT_USE_TT +FT_USE_MODULE(tt_driver_class) +#endif + +#ifdef FT_USE_T1 +FT_USE_MODULE(t1_driver_class) +#endif + +#ifdef FT_USE_WINFNT +FT_USE_MODULE(winfnt_driver_class) +#endif Index: xc/extras/freetype2/builds/amiga/src/base/ftdebug.c diff -u /dev/null xc/extras/freetype2/builds/amiga/src/base/ftdebug.c:1.1.1.1 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/builds/amiga/src/base/ftdebug.c Sun Dec 16 12:49:13 2001 @@ -0,0 +1,123 @@ +// TetiSoft: replaced vprintf() with KVPrintF() and commented out exit() +extern void __stdargs KVPrintF( const char *formatString, const void *values ); + +/***************************************************************************/ +/* */ +/* ftdebug.c */ +/* */ +/* Debugging and logging component (body). */ +/* */ +/* Copyright 1996-2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This component contains various macros and functions used to ease the */ + /* debugging of the FreeType engine. Its main purpose is in assertion */ + /* checking, tracing, and error detection. */ + /* */ + /* There are now three debugging modes: */ + /* */ + /* - trace mode */ + /* */ + /* Error and trace messages are sent to the log file (which can be the */ + /* standard error output). */ + /* */ + /* - error mode */ + /* */ + /* Only error messages are generated. */ + /* */ + /* - release mode: */ + /* */ + /* No error message is sent or generated. The code is free from any */ + /* debugging parts. */ + /* */ + /*************************************************************************/ + + +#include +#include FT_INTERNAL_DEBUG_H + + +#ifdef FT_DEBUG_LEVEL_TRACE + char ft_trace_levels[trace_max]; +#endif + + +#if defined( FT_DEBUG_LEVEL_ERROR ) || defined( FT_DEBUG_LEVEL_TRACE ) + + +#include +#include +#include + + + FT_EXPORT_DEF( void ) + FT_Message( const char* fmt, ... ) + { + va_list ap; + + + va_start( ap, fmt ); +// vprintf( fmt, ap ); + KVPrintF( fmt, ap ); + va_end( ap ); + } + + + FT_EXPORT_DEF( void ) + FT_Panic( const char* fmt, ... ) + { + va_list ap; + + + va_start( ap, fmt ); +// vprintf( fmt, ap ); + KVPrintF( fmt, ap ); + va_end( ap ); + +// exit( EXIT_FAILURE ); + } + + +#ifdef FT_DEBUG_LEVEL_TRACE + + FT_EXPORT_DEF( void ) + FT_SetTraceLevel( FT_Trace component, + char level ) + { + if ( component >= trace_max ) + return; + + /* if component is `trace_any', change _all_ levels at once */ + if ( component == trace_any ) + { + int n; + + + for ( n = trace_any; n < trace_max; n++ ) + ft_trace_levels[n] = level; + } + else /* otherwise, only change individual component */ + ft_trace_levels[component] = level; + } + +#endif /* FT_DEBUG_LEVEL_TRACE */ + +#endif /* FT_DEBUG_LEVEL_TRACE || FT_DEBUG_LEVEL_ERROR */ + + + /* ANSI C doesn't allow empty files, so we insert a dummy symbol */ + extern const int ft_debug_dummy; + + +/* END */ Index: xc/extras/freetype2/builds/amiga/src/base/ftsystem.c diff -u /dev/null xc/extras/freetype2/builds/amiga/src/base/ftsystem.c:1.1.1.2 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/builds/amiga/src/base/ftsystem.c Mon Jan 14 11:51:56 2002 @@ -0,0 +1,436 @@ +// TetiSoft: Modified to avoid fopen() fclose() fread() fseek() ftell() +// malloc() realloc() and free() which can't be used in an amiga +// shared run-time library linked with libinit.o + +#ifdef __GNUC__ +// Avoid warnings "struct X declared inside parameter list" +#include +#include +#include +#include +#include +#endif + +#include +#include + +#ifndef __GNUC__ +/* TetiSoft: Missing in alib_protos.h, see amiga.lib autodoc + * (These amiga.lib functions work under AmigaOS V33 and up) + */ +extern APTR __asm AsmCreatePool(register __d0 ULONG memFlags, + register __d1 ULONG puddleSize, + register __d2 ULONG threshSize, + register __a6 struct ExecBase *SysBase); + +extern VOID __asm AsmDeletePool(register __a0 APTR poolHeader, + register __a6 struct ExecBase *SysBase); + +extern APTR __asm AsmAllocPooled(register __a0 APTR poolHeader, + register __d0 ULONG memSize, + register __a6 struct ExecBase *SysBase); + +extern VOID __asm AsmFreePooled(register __a0 APTR poolHeader, + register __a1 APTR memory, + register __d0 ULONG memSize, + register __a6 struct ExecBase *SysBase); +#endif + + +// TetiSoft: C implementation of AllocVecPooled (see autodoc exec/AllocPooled) +APTR AllocVecPooled(APTR poolHeader, ULONG memSize) +{ + ULONG newSize = memSize + sizeof(ULONG); +#ifdef __GNUC__ + ULONG *mem = AllocPooled(poolHeader, newSize); +#else + ULONG *mem = AsmAllocPooled(poolHeader, newSize, SysBase); +#endif + + if (!mem) + return NULL; + *mem = newSize; + return mem + 1; +} + +// TetiSoft: C implementation of FreeVecPooled (see autodoc exec/AllocPooled) +void FreeVecPooled(APTR poolHeader, APTR memory) +{ + ULONG *realmem = (ULONG *)memory - 1; + +#ifdef __GNUC__ + FreePooled(poolHeader, realmem, *realmem); +#else + AsmFreePooled(poolHeader, realmem, *realmem, SysBase); +#endif +} + +/***************************************************************************/ +/* */ +/* ftsystem.c */ +/* */ +/* ANSI-specific FreeType low-level system interface (body). */ +/* */ +/* Copyright 1996-2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* This file contains the default interface used by FreeType to access */ + /* low-level, i.e. memory management, i/o access as well as thread */ + /* synchronisation. It can be replaced by user-specific routines if */ + /* necessary. */ + /* */ + /*************************************************************************/ + + +#include +#include FT_CONFIG_CONFIG_H +#include FT_INTERNAL_DEBUG_H +#include FT_SYSTEM_H +#include FT_ERRORS_H +#include FT_TYPES_H + +#include +#include +#include + + + /*************************************************************************/ + /* */ + /* MEMORY MANAGEMENT INTERFACE */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* It is not necessary to do any error checking for the */ + /* allocation-related functions. This will be done by the higher level */ + /* routines like FT_Alloc() or FT_Realloc(). */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* */ + /* ft_alloc */ + /* */ + /* */ + /* The memory allocation function. */ + /* */ + /* */ + /* memory :: A pointer to the memory object. */ + /* */ + /* size :: The requested size in bytes. */ + /* */ + /* */ + /* The address of newly allocated block. */ + /* */ + FT_CALLBACK_DEF( void* ) + ft_alloc( FT_Memory memory, + long size ) + { +// FT_UNUSED( memory ); + +// return malloc( size ); + return AllocVecPooled( memory->user, size ); + } + + + /*************************************************************************/ + /* */ + /* */ + /* ft_realloc */ + /* */ + /* */ + /* The memory reallocation function. */ + /* */ + /* */ + /* memory :: A pointer to the memory object. */ + /* */ + /* cur_size :: The current size of the allocated memory block. */ + /* */ + /* new_size :: The newly requested size in bytes. */ + /* */ + /* block :: The current address of the block in memory. */ + /* */ + /* */ + /* The address of the reallocated memory block. */ + /* */ + FT_CALLBACK_DEF( void* ) + ft_realloc( FT_Memory memory, + long cur_size, + long new_size, + void* block ) + { +// FT_UNUSED( memory ); +// FT_UNUSED( cur_size ); + +// return realloc( block, new_size ); + + void* new_block; + + new_block = AllocVecPooled ( memory->user, new_size ); + if ( new_block != NULL ) + { + CopyMem ( block, new_block, + ( new_size > cur_size ) ? cur_size : new_size ); + FreeVecPooled ( memory->user, block ); + } + return new_block; + } + + + /*************************************************************************/ + /* */ + /* */ + /* ft_free */ + /* */ + /* */ + /* The memory release function. */ + /* */ + /* */ + /* memory :: A pointer to the memory object. */ + /* */ + /* block :: The address of block in memory to be freed. */ + /* */ + FT_CALLBACK_DEF( void ) + ft_free( FT_Memory memory, + void* block ) + { +// FT_UNUSED( memory ); + +// free( block ); + + FreeVecPooled( memory->user, block ); + } + + + /*************************************************************************/ + /* */ + /* RESOURCE MANAGEMENT INTERFACE */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ + /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ + /* messages during execution. */ + /* */ +#undef FT_COMPONENT +#define FT_COMPONENT trace_io + + /* We use the macro STREAM_FILE for convenience to extract the */ + /* system-specific stream handle from a given FreeType stream object */ +//#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) +#define STREAM_FILE( stream ) ( (BPTR)stream->descriptor.pointer ) // TetiSoft + + + /*************************************************************************/ + /* */ + /* */ + /* ft_close_stream */ + /* */ + /* */ + /* The function to close a stream. */ + /* */ + /* */ + /* stream :: A pointer to the stream object. */ + /* */ + FT_CALLBACK_DEF( void ) + ft_close_stream( FT_Stream stream ) + { +// fclose( STREAM_FILE( stream ) ); + Close( STREAM_FILE( stream ) ); // TetiSoft + + stream->descriptor.pointer = NULL; + stream->size = 0; + stream->base = 0; + } + + + /*************************************************************************/ + /* */ + /* */ + /* ft_io_stream */ + /* */ + /* */ + /* The function to open a stream. */ + /* */ + /* */ + /* stream :: A pointer to the stream object. */ + /* */ + /* offset :: The position in the data stream to start reading. */ + /* */ + /* buffer :: The address of buffer to store the read data. */ + /* */ + /* count :: The number of bytes to read from the stream. */ + /* */ + /* */ + /* The number of bytes actually read. */ + /* */ + FT_CALLBACK_DEF( unsigned long ) + ft_io_stream( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ) + { +// FILE* file; + BPTR file; // TetiSoft + + + file = STREAM_FILE( stream ); + +// fseek( file, offset, SEEK_SET ); + Seek( file, offset, OFFSET_BEGINNING ); // TetiSoft + +// return (unsigned long)fread( buffer, 1, count, file ); + return (unsigned long)FRead( file, buffer, 1, count); + } + + + /* documentation is in ftobjs.h */ + + FT_EXPORT_DEF( FT_Error ) + FT_New_Stream( const char* filepathname, + FT_Stream astream ) + { +// FILE* file; + BPTR file; // TetiSoft + struct FileInfoBlock *fib; // TetiSoft + + + if ( !astream ) + return FT_Err_Invalid_Stream_Handle; + +// file = fopen( filepathname, "rb" ); + file = Open( filepathname, MODE_OLDFILE ); // TetiSoft + if ( !file ) + { + FT_ERROR(( "FT_New_Stream:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + + return FT_Err_Cannot_Open_Resource; + } + +// fseek( file, 0, SEEK_END ); +// astream->size = ftell( file ); +// fseek( file, 0, SEEK_SET ); + fib = AllocDosObject( DOS_FIB, NULL ); + if ( !fib ) + { + Close ( file ); + FT_ERROR(( "FT_New_Stream:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + + return FT_Err_Cannot_Open_Resource; + } + if (!( ExamineFH ( file, fib ))) + { + FreeDosObject(DOS_FIB, fib); + Close ( file ); + FT_ERROR(( "FT_New_Stream:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + + return FT_Err_Cannot_Open_Resource; + } + astream->size = fib->fib_Size; + FreeDosObject(DOS_FIB, fib); + +// astream->descriptor.pointer = file; + astream->descriptor.pointer = (void *)file; + + astream->pathname.pointer = (char*)filepathname; + astream->pos = 0; + + astream->read = ft_io_stream; + astream->close = ft_close_stream; + + FT_TRACE1(( "FT_New_Stream:" )); + FT_TRACE1(( " opened `%s' (%d bytes) successfully\n", + filepathname, astream->size )); + + return FT_Err_Ok; + } + + + +#ifdef FT_DEBUG_MEMORY + + extern FT_Int + ft_mem_debug_init( FT_Memory memory ); + + extern void + ft_mem_debug_done( FT_Memory memory ); + +#endif + + + /* documentation is in ftobjs.h */ + + FT_EXPORT_DEF( FT_Memory ) + FT_New_Memory( void ) + { + FT_Memory memory; + + +// memory = (FT_Memory)malloc( sizeof ( *memory ) ); + memory = (FT_Memory)AllocVec( sizeof ( *memory ), MEMF_PUBLIC ); + if ( memory ) + { +// memory->user = 0; +#ifdef __GNUC__ + memory->user = CreatePool ( MEMF_PUBLIC, 2048, 2048 ); +#else + memory->user = AsmCreatePool ( MEMF_PUBLIC, 2048, 2048, SysBase ); +#endif + if ( memory->user == NULL ) + { + FreeVec ( memory ); + memory = NULL; + } + else + { + memory->alloc = ft_alloc; + memory->realloc = ft_realloc; + memory->free = ft_free; +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_init( memory ); +#endif + } + } + + return memory; + } + + + /* documentation is in ftobjs.h */ + + FT_EXPORT_DEF( void ) + FT_Done_Memory( FT_Memory memory ) + { +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_done( memory ); +#endif + +#ifdef __GNUC__ + DeletePool( memory->user ); +#else + AsmDeletePool( memory->user, SysBase ); +#endif + FreeVec( memory ); + } + + +/* END */ Index: xc/extras/freetype2/builds/ansi/ansi-def.mk diff -u xc/extras/freetype2/builds/ansi/ansi-def.mk:1.1.1.2 xc/extras/freetype2/builds/ansi/ansi-def.mk:1.1.1.3 --- xc/extras/freetype2/builds/ansi/ansi-def.mk:1.1.1.2 Tue May 15 23:45:46 2001 +++ xc/extras/freetype2/builds/ansi/ansi-def.mk Sun Sep 9 22:55:42 2001 @@ -91,30 +91,4 @@ ANSIFLAGS := -ifdef BUILD_PROJECT - - .PHONY: clean_project distclean_project - - # Now include the main sub-makefile. It contains all the rules used to - # build the library with the previous variables defined. - # - include $(TOP)/builds/$(PROJECT).mk - - # The cleanup targets. - # - clean_project: clean_project_std - distclean_project: distclean_project_std - - # This final rule is used to link all object files into a single library. - # It is part of the system-specific sub-Makefile because not all - # librarians accept a simple syntax like - # - # librarian library_file {list of object files} - # - $(PROJECT_LIBRARY): $(OBJECTS_LIST) - -$(CLEAN_LIBRARY) $(NO_OUTPUT) - $(LINK_LIBRARY) - -endif - # EOF Index: xc/extras/freetype2/builds/ansi/ansi.mk diff -u xc/extras/freetype2/builds/ansi/ansi.mk:1.1.1.1 xc/extras/freetype2/builds/ansi/ansi.mk:1.1.1.2 --- xc/extras/freetype2/builds/ansi/ansi.mk:1.1.1.1 Fri Dec 8 16:26:05 2000 +++ xc/extras/freetype2/builds/ansi/ansi.mk Sun Sep 9 22:55:42 2001 @@ -13,7 +13,8 @@ # fully. -include $(TOP)/builds/compiler/ansi-cc.mk include $(TOP)/builds/ansi/ansi-def.mk +include $(TOP)/builds/compiler/ansi-cc.mk +include $(TOP)/builds/link_std.mk # EOF Index: xc/extras/freetype2/builds/beos/beos-def.mk diff -u /dev/null xc/extras/freetype2/builds/beos/beos-def.mk:1.1.1.1 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/builds/beos/beos-def.mk Sun Sep 9 22:55:42 2001 @@ -0,0 +1,96 @@ +# +# FreeType 2 configuration rules for a BeOS system +# +# this is similar to the "ansi-def.mk" file, except for BUILD and PLATFORM +# + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +ifndef TOP + TOP := . +endif + +DELETE := rm -f +SEP := / +HOSTSEP := $(SEP) +BUILD := $(TOP)/builds/neos +PLATFORM := beos + + +# The directory where all object files are placed. +# +# This lets you build the library in your own directory with something like +# +# set TOP=.../path/to/freetype2/top/dir... +# set OBJ_DIR=.../path/to/obj/dir +# make -f $TOP/Makefile setup [options] +# make -f $TOP/Makefile +# +ifndef OBJ_DIR + OBJ_DIR := $(TOP)$(SEP)objs +endif + + +# The directory where all library files are placed. +# +# By default, this is the same as $(OBJ_DIR); however, this can be changed +# to suit particular needs. +# +LIB_DIR := $(OBJ_DIR) + + +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. +# +LIBRARY := lib$(PROJECT) + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enfore +# ANSI compliance. +# +ifndef CFLAGS + CFLAGS := -c +endif + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS := + + +# EOF Index: xc/extras/freetype2/builds/beos/beos.mk diff -u /dev/null xc/extras/freetype2/builds/beos/beos.mk:1.1.1.1 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/builds/beos/beos.mk Sun Sep 9 22:55:42 2001 @@ -0,0 +1,18 @@ +# +# FreeType 2 configuration rules for a BeOS system +# + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +include $(TOP)/builds/compiler/ansi-cc.mk +include $(TOP)/builds/beos/beos-def.mk + +# EOF + Index: xc/extras/freetype2/builds/beos/detect.mk diff -u /dev/null xc/extras/freetype2/builds/beos/detect.mk:1.1.1.1 --- /dev/null Fri Jan 18 15:21:39 2002 +++ xc/extras/freetype2/builds/beos/detect.mk Sun Sep 9 22:55:42 2001 @@ -0,0 +1,41 @@ +# +# FreeType 2 configuration file to detect an BeOS host platform. +# + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +.PHONY: setup + + +ifeq ($(PLATFORM),ansi) + + ifdef BE_HOST_CPU + + PLATFORM := beos + + endif # test MACHTYPE beos +endif + +ifeq ($(PLATFORM),beos) + + DELETE := rm -f + SEP := / + HOSTSEP := $(SEP) + BUILD := $(TOP)/builds/beos + CONFIG_FILE := beos.mk + + setup: std_setup + +endif # test PLATFORM beos + +# EOF + Index: xc/extras/freetype2/builds/compiler/ansi-cc.mk diff -u xc/extras/freetype2/builds/compiler/ansi-cc.mk:1.1.1.1 xc/extras/freetype2/builds/compiler/ansi-cc.mk:1.1.1.2 --- xc/extras/freetype2/builds/compiler/ansi-cc.mk:1.1.1.1 Fri Dec 8 16:26:05 2000 +++ xc/extras/freetype2/builds/compiler/ansi-cc.mk Sun Sep 9 22:55:42 2001 @@ -74,8 +74,7 @@ # Library linking # ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) \ - $(NO_OUTPUT) + CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) endif LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) Index: xc/extras/freetype2/builds/compiler/bcc-dev.mk diff -u xc/extras/freetype2/builds/compiler/bcc-dev.mk:1.1.1.2 xc/extras/freetype2/builds/compiler/bcc-dev.mk:1.1.1.3 --- xc/extras/freetype2/builds/compiler/bcc-dev.mk:1.1.1.2 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/builds/compiler/bcc-dev.mk Sun Sep 9 22:55:42 2001 @@ -72,8 +72,7 @@ # Library linking # ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) \ - $(NO_OUTPUT) + CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) endif TARGET_OBJECTS = $(subst $(SEP),\\,$(OBJECTS_LIST)) LINK_LIBRARY = tlib /u $(subst $(SEP),\\,$@) $(TARGET_OBJECTS:%=+%) Index: xc/extras/freetype2/builds/compiler/bcc.mk diff -u xc/extras/freetype2/builds/compiler/bcc.mk:1.1.1.1 xc/extras/freetype2/builds/compiler/bcc.mk:1.1.1.2 --- xc/extras/freetype2/builds/compiler/bcc.mk:1.1.1.1 Fri Dec 8 16:26:05 2000 +++ xc/extras/freetype2/builds/compiler/bcc.mk Sun Sep 9 22:55:42 2001 @@ -72,8 +72,7 @@ # Library linking # ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) \ - $(NO_OUTPUT) + CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) endif TARGET_OBJECTS = $(subst $(SEP),\\,$(OBJECTS_LIST)) LINK_LIBRARY = tlib /u $(subst $(SEP),\\,$@) $(TARGET_OBJECTS:%=+%) Index: xc/extras/freetype2/builds/compiler/gcc-dev.mk diff -u xc/extras/freetype2/builds/compiler/gcc-dev.mk:1.1.1.1 xc/extras/freetype2/builds/compiler/gcc-dev.mk:1.1.1.2 --- xc/extras/freetype2/builds/compiler/gcc-dev.mk:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/compiler/gcc-dev.mk Sun Sep 9 22:55:42 2001 @@ -70,7 +70,8 @@ -Wwrite-strings \ -Wstrict-prototypes \ -Wredundant-decls \ - -Wnested-externs + -Wnested-externs \ + -Wno-long-long endif # ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. @@ -81,8 +82,7 @@ # Library linking # ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) \ - $(NO_OUTPUT) + CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) endif LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) Index: xc/extras/freetype2/builds/compiler/gcc.mk diff -u xc/extras/freetype2/builds/compiler/gcc.mk:1.1.1.1 xc/extras/freetype2/builds/compiler/gcc.mk:1.1.1.2 --- xc/extras/freetype2/builds/compiler/gcc.mk:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/compiler/gcc.mk Sun Sep 9 22:55:42 2001 @@ -52,7 +52,6 @@ # T := -o$(space) - # C flags # # These should concern: debug output, optimization & warnings. @@ -72,8 +71,7 @@ # Library linking # ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) \ - $(NO_OUTPUT) + CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) endif LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) Index: xc/extras/freetype2/builds/compiler/unix-lcc.mk diff -u xc/extras/freetype2/builds/compiler/unix-lcc.mk:1.1.1.1 xc/extras/freetype2/builds/compiler/unix-lcc.mk:1.1.1.2 --- xc/extras/freetype2/builds/compiler/unix-lcc.mk:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/compiler/unix-lcc.mk Sun Sep 9 22:55:42 2001 @@ -78,8 +78,7 @@ # library linking # ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) \ - $(NO_OUTPUT) + CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) endif LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) Index: xc/extras/freetype2/builds/compiler/watcom.mk diff -u xc/extras/freetype2/builds/compiler/watcom.mk:1.1.1.1 xc/extras/freetype2/builds/compiler/watcom.mk:1.1.1.2 --- xc/extras/freetype2/builds/compiler/watcom.mk:1.1.1.1 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/builds/compiler/watcom.mk Sun Sep 9 22:55:42 2001 @@ -74,8 +74,7 @@ # Library linking # ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) \ - $(NO_OUTPUT) + CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) endif LINK_LIBRARY = wlib -q -o = $@ $(OBJECTS_LIST) Index: xc/extras/freetype2/builds/cygwin/aclocal.m4 diff -u xc/extras/freetype2/builds/cygwin/aclocal.m4:1.1.1.1 xc/extras/freetype2/builds/cygwin/aclocal.m4:removed --- xc/extras/freetype2/builds/cygwin/aclocal.m4:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/cygwin/aclocal.m4 Fri Jan 18 15:21:40 2002 @@ -1,458 +0,0 @@ -## FreeType specific autoconf tests - -AC_DEFUN(FT_MUNMAP_DECL, -[AC_MSG_CHECKING([whether munmap must be declared]) -AC_CACHE_VAL(ft_cv_munmap_decl, -[AC_TRY_COMPILE([ -#ifdef HAVE_UNISTD_H -#include -#endif -#include ], -[char *(*pfn) = (char *(*))munmap], -ft_cv_munmap_decl=no, -ft_cv_munmap_decl=yes)]) -AC_MSG_RESULT($ft_cv_munmap_decl) -if test $ft_cv_munmap_decl = yes; then - AC_DEFINE(NEED_MUNMAP_DECL) -fi]) - -AC_DEFUN(FT_MUNMAP_PARAM, -[AC_MSG_CHECKING([for munmap's first parameter type]) -AC_TRY_COMPILE([ -#include -#include -int munmap(void *, size_t);],, - AC_MSG_RESULT([void *]);AC_DEFINE(MUNMAP_USES_VOIDP), - AC_MSG_RESULT([char *])) -]) - -## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*- -## Copyright (C) 1996-1999 Free Software Foundation, Inc. -## Originally by Gordon Matzigkeit , 1996 -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or -## (at your option) any later version. -## -## This program is distributed in the hope that it will be useful, but -## WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -## -## As a special exception to the GNU General Public License, if you -## distribute this file as part of a program that contains a -## configuration script generated by Autoconf, you may include it under -## the same distribution terms that you use for the rest of that program. - -# serial 40 AC_PROG_LIBTOOL -AC_DEFUN(AC_PROG_LIBTOOL, -[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl - -# Save cache, so that ltconfig can load it -AC_CACHE_SAVE - -# Actually configure libtool. ac_aux_dir is where install-sh is found. -CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ -LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ -LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ -DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ -${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ -$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \ -|| AC_MSG_ERROR([libtool configure failed]) - -# Reload cache, that may have been modified by ltconfig -AC_CACHE_LOAD - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -# Redirect the config.log output again, so that the ltconfig log is not -# clobbered by the next message. -exec 5>>./config.log -]) - -AC_DEFUN(AC_LIBTOOL_SETUP, -[AC_PREREQ(2.13)dnl -AC_REQUIRE([AC_ENABLE_SHARED])dnl -AC_REQUIRE([AC_ENABLE_STATIC])dnl -AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([AC_PROG_RANLIB])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_LD])dnl -AC_REQUIRE([AC_PROG_NM])dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -dnl - -case "$target" in -NONE) lt_target="$host" ;; -*) lt_target="$target" ;; -esac - -# Check for any special flags to pass to ltconfig. -libtool_flags="--cache-file=$cache_file" -test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" -test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" -test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" -test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" -ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], -[libtool_flags="$libtool_flags --enable-dlopen"]) -ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], -[libtool_flags="$libtool_flags --enable-win32-dll"]) -AC_ARG_ENABLE(libtool-lock, - [ --disable-libtool-lock avoid locking (might break parallel builds)]) -test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" -test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case "$lt_target" in -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; - -ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], -[*-*-cygwin* | *-*-mingw*) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -]) -esac -]) - -# AC_LIBTOOL_DLOPEN - enable checks for dlopen support -AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) - -# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's -AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) - -# AC_ENABLE_SHARED - implement the --enable-shared flag -# Usage: AC_ENABLE_SHARED[(DEFAULT)] -# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to -# `yes'. -AC_DEFUN(AC_ENABLE_SHARED, [dnl -define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE(shared, -changequote(<<, >>)dnl -<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], -changequote([, ])dnl -[p=${PACKAGE-default} -case "$enableval" in -yes) enable_shared=yes ;; -no) enable_shared=no ;; -*) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac], -enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl -]) - -# AC_DISABLE_SHARED - set the default shared flag to --disable-shared -AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_SHARED(no)]) - -# AC_ENABLE_STATIC - implement the --enable-static flag -# Usage: AC_ENABLE_STATIC[(DEFAULT)] -# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to -# `yes'. -AC_DEFUN(AC_ENABLE_STATIC, [dnl -define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE(static, -changequote(<<, >>)dnl -<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], -changequote([, ])dnl -[p=${PACKAGE-default} -case "$enableval" in -yes) enable_static=yes ;; -no) enable_static=no ;; -*) - enable_static=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac], -enable_static=AC_ENABLE_STATIC_DEFAULT)dnl -]) - -# AC_DISABLE_STATIC - set the default static flag to --disable-static -AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_STATIC(no)]) - - -# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag -# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] -# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to -# `yes'. -AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl -define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE(fast-install, -changequote(<<, >>)dnl -<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], -changequote([, ])dnl -[p=${PACKAGE-default} -case "$enableval" in -yes) enable_fast_install=yes ;; -no) enable_fast_install=no ;; -*) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac], -enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl -]) - -# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install -AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_FAST_INSTALL(no)]) - -# AC_PROG_LD - find the path to the GNU or non-GNU linker -AC_DEFUN(AC_PROG_LD, -[AC_ARG_WITH(gnu-ld, -[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -ac_prog=ld -if test "$ac_cv_prog_gcc" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in - # Accept absolute paths. -changequote(,)dnl - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' -changequote([,])dnl - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(ac_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - ac_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - ac_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$ac_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_PROG_LD_GNU -]) - -AC_DEFUN(AC_PROG_LD_GNU, -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - ac_cv_prog_gnu_ld=yes -else - ac_cv_prog_gnu_ld=no -fi]) -]) - -# AC_PROG_NM - find the path to a BSD-compatible name lister -AC_DEFUN(AC_PROG_NM, -[AC_MSG_CHECKING([for BSD-compatible nm]) -AC_CACHE_VAL(ac_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - ac_cv_path_NM="$NM" -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -B" - break - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -p" - break - else - ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm -fi]) -NM="$ac_cv_path_NM" -AC_MSG_RESULT([$NM]) -]) - -# AC_CHECK_LIBM - check for math library -AC_DEFUN(AC_CHECK_LIBM, -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case "$lt_target" in -*-*-beos* | *-*-cygwin*) - # These system don't have libm - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, main, LIBM="-lm") - ;; -esac -]) - -# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for -# the libltdl convenience library, adds --enable-ltdl-convenience to -# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor -# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed -# to be `${top_builddir}/libltdl'. Make sure you start DIR with -# '${top_builddir}/' (note the single quotes!) if your package is not -# flat, and, if you're not using automake, define top_builddir as -# appropriate in the Makefiles. -AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - case "$enable_ltdl_convenience" in - no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; - "") enable_ltdl_convenience=yes - ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; - esac - LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la - INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl']) -]) - -# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for -# the libltdl installable library, and adds --enable-ltdl-install to -# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor -# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed -# to be `${top_builddir}/libltdl'. Make sure you start DIR with -# '${top_builddir}/' (note the single quotes!) if your package is not -# flat, and, if you're not using automake, define top_builddir as -# appropriate in the Makefiles. -# In the future, this macro may have to be called after AC_PROG_LIBTOOL. -AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - AC_CHECK_LIB(ltdl, main, - [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], - [if test x"$enable_ltdl_install" = xno; then - AC_MSG_WARN([libltdl not installed, but installation disabled]) - else - enable_ltdl_install=yes - fi - ]) - if test x"$enable_ltdl_install" = x"yes"; then - ac_configure_args="$ac_configure_args --enable-ltdl-install" - LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la - INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl']) - else - ac_configure_args="$ac_configure_args --enable-ltdl-install=no" - LIBLTDL="-lltdl" - INCLTDL= - fi -]) - -dnl old names -AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl -AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl -AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl -AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl -AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl -AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl -AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl - -dnl This is just to silence aclocal about the macro not being used -ifelse([AC_DISABLE_FAST_INSTALL])dnl Index: xc/extras/freetype2/builds/cygwin/config.guess diff -u xc/extras/freetype2/builds/cygwin/config.guess:1.1.1.1 xc/extras/freetype2/builds/cygwin/config.guess:removed --- xc/extras/freetype2/builds/cygwin/config.guess:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/cygwin/config.guess Fri Jan 18 15:21:40 2002 @@ -1,1284 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 -# Free Software Foundation, Inc. - -version='2000-07-27' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Written by Per Bothner . -# Please send patches to . -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit system type (host/target name). -# -# Only a few systems have been added to this list; please add others -# (but try to keep the structure clean). -# - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of this system. - -Operation modes: - -h, --help print this help, then exit - -V, --version print version number, then exit" - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case "$1" in - --version | --vers* | -V ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - exec >&2 - echo "$me: invalid option $1" - echo "$help" - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -# Use $HOST_CC if defined. $CC may point to a cross-compiler -if test x"$CC_FOR_BUILD" = x; then - if test x"$HOST_CC" != x; then - CC_FOR_BUILD="$HOST_CC" - else - if test x"$CC" != x; then - CC_FOR_BUILD="$CC" - else - CC_FOR_BUILD=cc - fi - fi -fi - - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 8/24/94.) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # Netbsd (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # Determine the machine/vendor (is the vendor relevant). - case "${UNAME_MACHINE}" in - amiga) machine=m68k-unknown ;; - arm32) machine=arm-unknown ;; - atari*) machine=m68k-atari ;; - sun3*) machine=m68k-sun ;; - mac68k) machine=m68k-apple ;; - macppc) machine=powerpc-apple ;; - hp3[0-9][05]) machine=m68k-hp ;; - ibmrt|romp-ibm) machine=romp-ibm ;; - *) machine=${UNAME_MACHINE}-unknown ;; - esac - # The Operating System including object format. - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - # The OS release - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit 0 ;; - alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - cat <$dummy.s - .data -\$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main -main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `./$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - esac - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit 0;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; - arc64:OpenBSD:*:*) - echo mips64el-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hkmips:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - SR2?01:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit 0;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - atari*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; - sun3*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy \ - && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i?86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:4) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` - if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=4.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[34678]??:HP-UX:*:*) - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` - rm -f $dummy.c $dummy - esac - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - *9??*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i?86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - hppa*:OpenBSD:*:*) - echo hppa-unknown-openbsd - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3E:*:*:*) - echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; - F300:UNIX_System_V:*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - F301:UNIX_System_V:*:*) - echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - i?86:BSD/386:*:* | i?86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i386-pc-interix - exit 0 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; - *:Linux:*:*) - - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - ld_help_string=`cd /; ld --help 2>&1` - ld_supported_emulations=`echo $ld_help_string \ - | sed -ne '/supported emulations:/!d - s/[ ][ ]*/ /g - s/.*supported emulations: *// - s/ .*// - p'` - case "$ld_supported_emulations" in - *ia64) - echo "${UNAME_MACHINE}-unknown-linux" - exit 0 - ;; - i?86linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 - ;; - elf_i?86) - echo "${UNAME_MACHINE}-pc-linux" - exit 0 - ;; - i?86coff) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 - ;; - sparclinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - armlinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32arm*) - echo "${UNAME_MACHINE}-unknown-linux-gnuoldld" - exit 0 - ;; - armelf_linux*) - echo "${UNAME_MACHINE}-unknown-linux-gnu" - exit 0 - ;; - m68klinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32ppc | elf32ppclinux) - # Determine Lib Version - cat >$dummy.c < -#if defined(__GLIBC__) -extern char __libc_version[]; -extern char __libc_release[]; -#endif -main(argc, argv) - int argc; - char *argv[]; -{ -#if defined(__GLIBC__) - printf("%s %s\n", __libc_version, __libc_release); -#else - printf("unkown\n"); -#endif - return 0; -} -EOF - LIBC="" - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null - if test "$?" = 0 ; then - ./$dummy | grep 1\.99 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.c $dummy - echo powerpc-unknown-linux-gnu${LIBC} - exit 0 - ;; - shelf_linux) - echo "${UNAME_MACHINE}-unknown-linux-gnu" - exit 0 - ;; - esac - - if test "${UNAME_MACHINE}" = "alpha" ; then - cat <$dummy.s - .data - \$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main - main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - LIBC="" - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `./$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - esac - - objdump --private-headers $dummy | \ - grep ld.so.1 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 - elif test "${UNAME_MACHINE}" = "mips" ; then - cat >$dummy.c < /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __MIPSEB__ - printf ("%s-unknown-linux-gnu\n", argv[1]); -#endif -#ifdef __MIPSEL__ - printf ("%sel-unknown-linux-gnu\n", argv[1]); -#endif - return 0; -} -EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - elif test "${UNAME_MACHINE}" = "s390"; then - echo s390-ibm-linux && exit 0 - else - # Either a pre-BFD a.out linker (linux-gnuoldld) - # or one that does not give us useful --help. - # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. - # If ld does not provide *any* "supported emulations:" - # that means it is gnuoldld. - echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" - test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 - - case "${UNAME_MACHINE}" in - i?86) - VENDOR=pc; - ;; - *) - VENDOR=unknown; - ;; - esac - # Determine whether the default compiler is a.out or elf - cat >$dummy.c < -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __ELF__ -# ifdef __GLIBC__ -# if __GLIBC__ >= 2 - printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); -# else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); -# endif -# else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); -# endif -#else - printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); -#endif - return 0; -} -EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - fi ;; -# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions -# are messed up and put the nodename in both sysname and nodename. - i?86:DYNIX/ptx:4*:*) - echo i386-sequent-sysv4 - exit 0 ;; - i?86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; - i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit 0 ;; - i?86:*:5:7*) - # Fixed at (any) Pentium or better - UNAME_MACHINE=i586 - if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then - echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} - fi - exit 0 ;; - i?86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - i?86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - news*:NEWS-OS:*:6*) - echo mips-sony-newsos6 - exit 0 ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit 0 ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit 0 ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit 0 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Darwin:*:*) - echo `uname -p`-apple-darwin${UNAME_RELEASE} - exit 0 ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - if test "${UNAME_MACHINE}" = "x86pc"; then - UNAME_MACHINE=pc - fi - echo `uname -p`-${UNAME_MACHINE}-nto-qnx - exit 0 ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit 0 ;; - NSR-W:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit 0 ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -#if !defined (ultrix) - printf ("vax-dec-bsd\n"); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 -rm -f $dummy.c $dummy - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess version = $version - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "version='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: Index: xc/extras/freetype2/builds/cygwin/config.sub diff -u xc/extras/freetype2/builds/cygwin/config.sub:1.1.1.1 xc/extras/freetype2/builds/cygwin/config.sub:removed --- xc/extras/freetype2/builds/cygwin/config.sub:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/cygwin/config.sub Fri Jan 18 15:21:40 2002 @@ -1,1324 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script, version 1.1. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 -# Free Software Foundation, Inc. - -version='2000-07-27' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Please send patches to . -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -V, --version print version number, then exit" - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case "$1" in - --version | --vers* | -V ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - exec >&2 - echo "$me: invalid option $1" - echo "$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit 0;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ - | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ - | 580 | i960 | h8300 \ - | x86 | ppcbe | mipsbe | mipsle | shbe | shle | armbe | armle \ - | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ - | hppa64 \ - | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \ - | alphaev6[78] \ - | we32k | ns16k | clipper | i370 | sh | sh[34] \ - | powerpc | powerpcle \ - | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \ - | mips64orion | mips64orionel | mipstx39 | mipstx39el \ - | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ - | mips64vr5000 | miprs64vr5000el | mcore \ - | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ - | thumb | d10v | d30v | fr30 | avr) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i[234567]86) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - # FIXME: clean up the formatting here. - vax-* | tahoe-* | i[234567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ - | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ - | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ - | xmp-* | ymp-* \ - | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \ - | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \ - | hppa2.0n-* | hppa64-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \ - | alphaev6[78]-* \ - | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ - | clipper-* | orion-* \ - | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ - | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \ - | mips64el-* | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ - | mipstx39-* | mipstx39el-* | mcore-* \ - | f301-* | armv*-* | s390-* | sv1-* | t3e-* \ - | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ - | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \ - | bs2000-* | tic54x-* | c54x-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | ymp) - basic_machine=ymp-cray - os=-unicos - ;; - cray2) - basic_machine=cray2-cray - os=-unicos - ;; - [ctj]90-cray) - basic_machine=c90-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i[34567]86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i[34567]86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i[34567]86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i[34567]86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - i386-go32 | go32) - basic_machine=i386-unknown - os=-go32 - ;; - i386-mingw32 | mingw32) - basic_machine=i386-unknown - os=-mingw32 - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mipsel*-linux*) - basic_machine=mipsel-unknown - os=-linux-gnu - ;; - mips*-linux*) - basic_machine=mips-unknown - os=-linux-gnu - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - mmix*) - basic_machine=mmix-knuth - os=-mmixware - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - msdos) - basic_machine=i386-unknown - os=-msdos - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - np1) - basic_machine=np1-gould - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | k5 | k6 | nexen) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon) - basic_machine=i686-pc - ;; - pentiumii | pentium2) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexen-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=rs6000-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sparclite-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=t3e-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xmp) - basic_machine=xmp-cray - os=-unicos - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - mips) - if [ x$os = x-linux-gnu ]; then - basic_machine=mips-unknown - else - basic_machine=mips-mips - fi - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh3 | sh4) - base_machine=sh-unknown - ;; - sparc | sparcv9) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - c4x*) - basic_machine=c4x-none - os=-coff - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i[34567]86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto*) - os=-nto-qnx - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -*MiNT) - os=-mint - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-ibm) - os=-aix - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f301-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -vxsim* | -vxworks*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -*MiNT) - vendor=atari - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "version='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: Index: xc/extras/freetype2/builds/cygwin/configure diff -u xc/extras/freetype2/builds/cygwin/configure:1.1.1.1 xc/extras/freetype2/builds/cygwin/configure:removed --- xc/extras/freetype2/builds/cygwin/configure:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/cygwin/configure Fri Jan 18 15:21:40 2002 @@ -1,2585 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_help="$ac_help - --enable-shared[=PKGS] build shared libraries [default=yes]" -ac_help="$ac_help - --enable-static[=PKGS] build static libraries [default=yes]" -ac_help="$ac_help - --enable-fast-install[=PKGS] optimize for fast installation [default=yes]" -ac_help="$ac_help - --with-gnu-ld assume the C compiler uses GNU ld [default=no]" -ac_help="$ac_help - --disable-libtool-lock avoid locking (might break parallel builds)" - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=ftconfig.in - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - - - -version_info='6:1:0' - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - - -# Do some error checking and defaulting for the host and target type. -# The inputs are: -# configure --host=HOST --target=TARGET --build=BUILD NONOPT -# -# The rules are: -# 1. You are not allowed to specify --host, --target, and nonopt at the -# same time. -# 2. Host defaults to nonopt. -# 3. If nonopt is not specified, then host defaults to the current host, -# as determined by config.guess. -# 4. Target and build default to nonopt. -# 5. If nonopt is not specified, then target and build default to host. - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -case $host---$target---$nonopt in -NONE---*---* | *---NONE---* | *---*---NONE) ;; -*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;; -esac - - -# Make sure we can run config.sub. -if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : -else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } -fi - -echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:588: checking host system type" >&5 - -host_alias=$host -case "$host_alias" in -NONE) - case $nonopt in - NONE) - if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : - else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } - fi ;; - *) host_alias=$nonopt ;; - esac ;; -esac - -host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$host" 1>&6 - -echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:609: checking target system type" >&5 - -target_alias=$target -case "$target_alias" in -NONE) - case $nonopt in - NONE) target_alias=$host_alias ;; - *) target_alias=$nonopt ;; - esac ;; -esac - -target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias` -target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$target" 1>&6 - -echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:627: checking build system type" >&5 - -build_alias=$build -case "$build_alias" in -NONE) - case $nonopt in - NONE) build_alias=$host_alias ;; - *) build_alias=$nonopt ;; - esac ;; -esac - -build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias` -build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$build" 1>&6 - -test "$host_alias" != "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - - -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:653: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:683: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_prog_rejected=no - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_save_ifs" -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# -gt 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - set dummy "$ac_dir/$ac_word" "$@" - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - if test -z "$CC"; then - case "`uname -s`" in - *win32* | *WIN32*) - # Extract the first word of "cl", so it can be a program name with args. -set dummy cl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:734: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="cl" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - ;; - esac - fi - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } -fi - -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:766: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -cat > conftest.$ac_ext << EOF - -#line 777 "configure" -#include "confdefs.h" - -main(){return(0);} -EOF -if { (eval echo configure:782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no - else - ac_cv_prog_cc_cross=yes - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no -fi -rm -fr conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } -fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:808: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -cross_compiling=$ac_cv_prog_cc_cross - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:813: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 - -if test $ac_cv_prog_gcc = yes; then - GCC=yes -else - GCC= -fi - -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" -CFLAGS= -echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:841: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_cc_g=yes -else - ac_cv_prog_cc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi - -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:873: checking how to run the C preprocessor" >&5 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:894: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:911: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:928: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* -fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" -fi - CPP="$ac_cv_prog_CPP" -else - ac_cv_prog_CPP="$CPP" -fi -echo "$ac_t""$CPP" 1>&6 - - -if test "x$CC" = xgcc; then - XX_CFLAGS="-Wall" - XX_ANSIFLAGS="-pedantic -ansi" -else - case "$host" in - *-dec-osf*) - CFLAGS= - XX_CFLAGS="-std1 -g3" - XX_ANSIFLAGS= - ;; - *) - XX_CFLAGS= - XX_ANSIFLAGS= - ;; - esac -fi - - - -# Extract the first word of "rm", so it can be a program name with args. -set dummy rm; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:975: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RMF'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RMF"; then - ac_cv_prog_RMF="$RMF" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RMF="rm -f" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -RMF="$ac_cv_prog_RMF" -if test -n "$RMF"; then - echo "$ac_t""$RMF" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -# Extract the first word of "rmdir", so it can be a program name with args. -set dummy rmdir; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1004: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RMDIR'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RMDIR"; then - ac_cv_prog_RMDIR="$RMDIR" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RMDIR="rmdir" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -RMDIR="$ac_cv_prog_RMDIR" -if test -n "$RMDIR"; then - echo "$ac_t""$RMDIR" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1043: checking for a BSD compatible install" >&5 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_IFS" - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL="$ac_cv_path_install" - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL="$ac_install_sh" - fi -fi -echo "$ac_t""$INSTALL" 1>&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -case "$INSTALL" in - /*) - ;; - */*) - INSTALL="`pwd`/$INSTALL" ;; -esac - -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1103: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#include -#include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1116: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - ac_cv_header_stdc=yes -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -if test "$cross_compiling" = yes; then - : -else - cat > conftest.$ac_ext < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int main () { int i; for (i = 0; i < 256; i++) -if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -exit (0); } - -EOF -if { (eval echo configure:1183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - -fi -fi - -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - -for ac_hdr in fcntl.h unistd.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1210: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1220: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - - -echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:1248: checking for working const" >&5 -if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <j = 5; -} -{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; -} - -; return 0; } -EOF -if { (eval echo configure:1302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_const=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_c_const=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_c_const" 1>&6 -if test $ac_cv_c_const = no; then - cat >> confdefs.h <<\EOF -#define const -EOF - -fi - -echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:1323: checking size of int" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } -else - cat > conftest.$ac_ext < -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(int)); - exit(0); -} -EOF -if { (eval echo configure:1342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_int=`cat conftestval` -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_sizeof_int=0 -fi -rm -fr conftest* -fi - -fi -echo "$ac_t""$ac_cv_sizeof_int" 1>&6 -cat >> confdefs.h <&6 -echo "configure:1362: checking size of long" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } -else - cat > conftest.$ac_ext < -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(long)); - exit(0); -} -EOF -if { (eval echo configure:1381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_long=`cat conftestval` -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_sizeof_long=0 -fi -rm -fr conftest* -fi - -fi -echo "$ac_t""$ac_cv_sizeof_long" 1>&6 -cat >> confdefs.h <&6 -echo "configure:1406: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1416: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_func in getpagesize -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1445: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:1473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - -echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:1498: checking for working mmap" >&5 -if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_mmap_fixed_mapped=no -else - cat > conftest.$ac_ext < -#include -#include - -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -# ifdef HAVE_UNISTD_H -# include -# endif - -/* Assume that all systems that can run configure have sys/param.h. */ -# ifndef HAVE_SYS_PARAM_H -# define HAVE_SYS_PARAM_H 1 -# endif - -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H -# include -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -#ifdef __cplusplus -extern "C" { void *malloc(unsigned); } -#else -char *malloc(); -#endif - -int -main() -{ - char *data, *data2, *data3; - int i, pagesize; - int fd; - - pagesize = getpagesize(); - - /* - * First, make a file with some known garbage in it. - */ - data = malloc(pagesize); - if (!data) - exit(1); - for (i = 0; i < pagesize; ++i) - *(data + i) = rand(); - umask(0); - fd = creat("conftestmmap", 0600); - if (fd < 0) - exit(1); - if (write(fd, data, pagesize) != pagesize) - exit(1); - close(fd); - - /* - * Next, try to mmap the file at a fixed address which - * already has something else allocated at it. If we can, - * also make sure that we see the same garbage. - */ - fd = open("conftestmmap", O_RDWR); - if (fd < 0) - exit(1); - data2 = malloc(2 * pagesize); - if (!data2) - exit(1); - data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); - if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - exit(1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - exit(1); - - /* - * Finally, make sure that changes to the mapped area - * do not percolate back to the file as seen by read(). - * (This is a bug on some variants of i386 svr4.0.) - */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = malloc(pagesize); - if (!data3) - exit(1); - if (read(fd, data3, pagesize) != pagesize) - exit(1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - exit(1); - close(fd); - unlink("conftestmmap"); - exit(0); -} - -EOF -if { (eval echo configure:1646: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_func_mmap_fixed_mapped=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_func_mmap_fixed_mapped=no -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6 -if test $ac_cv_func_mmap_fixed_mapped = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_MMAP 1 -EOF - -fi - -if test "$ac_cv_func_mmap_fixed_mapped" != yes; then - FTSYS_SRC='$(BASE_)ftsystem.c' -else - FTSYS_SRC='$(BUILD)/ftsystem.c' - - echo $ac_n "checking whether munmap must be declared""... $ac_c" 1>&6 -echo "configure:1674: checking whether munmap must be declared" >&5 -if eval "test \"`echo '$''{'ft_cv_munmap_decl'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#endif -#include -int main() { -char *(*pfn) = (char *(*))munmap -; return 0; } -EOF -if { (eval echo configure:1690: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ft_cv_munmap_decl=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ft_cv_munmap_decl=yes -fi -rm -f conftest* -fi - -echo "$ac_t""$ft_cv_munmap_decl" 1>&6 -if test $ft_cv_munmap_decl = yes; then - cat >> confdefs.h <<\EOF -#define NEED_MUNMAP_DECL 1 -EOF - -fi - echo $ac_n "checking for munmap's first parameter type""... $ac_c" 1>&6 -echo "configure:1710: checking for munmap's first parameter type" >&5 -cat > conftest.$ac_ext < -#include -int munmap(void *, size_t); -int main() { - -; return 0; } -EOF -if { (eval echo configure:1722: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - echo "$ac_t""void *" 1>&6;cat >> confdefs.h <<\EOF -#define MUNMAP_USES_VOIDP 1 -EOF - -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - echo "$ac_t""char *" 1>&6 -fi -rm -f conftest* - -fi - - -for ac_func in memcpy memmove -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1742: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:1770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - -# Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - p=${PACKAGE-default} -case "$enableval" in -yes) enable_shared=yes ;; -no) enable_shared=no ;; -*) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac -else - enable_shared=yes -fi - -# Check whether --enable-static or --disable-static was given. -if test "${enable_static+set}" = set; then - enableval="$enable_static" - p=${PACKAGE-default} -case "$enableval" in -yes) enable_static=yes ;; -no) enable_static=no ;; -*) - enable_static=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac -else - enable_static=yes -fi - -# Check whether --enable-fast-install or --disable-fast-install was given. -if test "${enable_fast_install+set}" = set; then - enableval="$enable_fast_install" - p=${PACKAGE-default} -case "$enableval" in -yes) enable_fast_install=yes ;; -no) enable_fast_install=no ;; -*) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac -else - enable_fast_install=yes -fi - -# Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1867: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -# Check whether --with-gnu-ld or --without-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then - withval="$with_gnu_ld" - test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$ac_cv_prog_gcc" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:1906: checking for ld used by GCC" >&5 - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1930: checking for GNU ld" >&5 -else - echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1933: checking for non-GNU ld" >&5 -fi -if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - ac_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - ac_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$ac_cv_path_LD" -if test -n "$LD"; then - echo "$ac_t""$LD" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi -test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } -echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:1968: checking if the linker ($LD) is GNU ld" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - ac_cv_prog_gnu_ld=yes -else - ac_cv_prog_gnu_ld=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6 - - -echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1984: checking for BSD-compatible nm" >&5 -if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$NM"; then - # Let the user override the test. - ac_cv_path_NM="$NM" -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -B" - break - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -p" - break - else - ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm -fi -fi - -NM="$ac_cv_path_NM" -echo "$ac_t""$NM" 1>&6 - -echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:2020: checking whether ln -s works" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - rm -f conftestdata -if ln -s X conftestdata 2>/dev/null -then - rm -f conftestdata - ac_cv_prog_LN_S="ln -s" -else - ac_cv_prog_LN_S=ln -fi -fi -LN_S="$ac_cv_prog_LN_S" -if test "$ac_cv_prog_LN_S" = "ln -s"; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -case "$target" in -NONE) lt_target="$host" ;; -*) lt_target="$target" ;; -esac - -# Check for any special flags to pass to ltconfig. -libtool_flags="--cache-file=$cache_file" -test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" -test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" -test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" -test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" - - -# Check whether --enable-libtool-lock or --disable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then - enableval="$enable_libtool_lock" - : -fi - -test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" -test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case "$lt_target" in -*-*-irix6*) - # Find out which ABI we are using. - echo '#line 2069 "configure"' > conftest.$ac_ext - if { (eval echo configure:2070: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:2091: checking whether the C compiler needs -belf" >&5 -if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - lt_cv_cc_needs_belf=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - lt_cv_cc_needs_belf=no -fi -rm -f conftest* -fi - -echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6 - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; - - -esac - - -# Save cache, so that ltconfig can load it -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - - -# Actually configure libtool. ac_aux_dir is where install-sh is found. -CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ -LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ -LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ -DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ -${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ -$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \ -|| { echo "configure: error: libtool configure failed" 1>&2; exit 1; } - -# Reload cache, that may have been modified by ltconfig -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - -# Redirect the config.log output again, so that the ltconfig log is not -# clobbered by the next message. -exec 5>>./config.log - - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -DEFS=-DHAVE_CONFIG_H - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" - -trap 'rm -fr `echo "cygwin-cc.mk:cygwin-cc.in cygwin-def.mk:cygwin-def.in freetype-config ftconfig.h:ftconfig.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@version_info@%$version_info%g -s%@host@%$host%g -s%@host_alias@%$host_alias%g -s%@host_cpu@%$host_cpu%g -s%@host_vendor@%$host_vendor%g -s%@host_os@%$host_os%g -s%@target@%$target%g -s%@target_alias@%$target_alias%g -s%@target_cpu@%$target_cpu%g -s%@target_vendor@%$target_vendor%g -s%@target_os@%$target_os%g -s%@build@%$build%g -s%@build_alias@%$build_alias%g -s%@build_cpu@%$build_cpu%g -s%@build_vendor@%$build_vendor%g -s%@build_os@%$build_os%g -s%@CC@%$CC%g -s%@CPP@%$CPP%g -s%@XX_CFLAGS@%$XX_CFLAGS%g -s%@XX_ANSIFLAGS@%$XX_ANSIFLAGS%g -s%@RMF@%$RMF%g -s%@RMDIR@%$RMDIR%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@FTSYS_SRC@%$FTSYS_SRC%g -s%@RANLIB@%$RANLIB%g -s%@LN_S@%$LN_S%g -s%@LIBTOOL@%$LIBTOOL%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# Split the substitutions into bite-sized pieces for seds with -# small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. -ac_more_lines=: -ac_sed_cmds="" -while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' -ac_dC='\3' -ac_dD='%g' -# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='\([ ]\)%\1#\2define\3' -ac_uC=' ' -ac_uD='\4%g' -# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_eB='$%\1#\2define\3' -ac_eC=' ' -ac_eD='%g' - -if test "${CONFIG_HEADERS+set}" != set; then -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -fi -for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - echo creating $ac_file - - rm -f conftest.frag conftest.in conftest.out - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - cat $ac_file_inputs > conftest.in - -EOF - -# Transform confdefs.h into a sed script conftest.vals that substitutes -# the proper values into config.h.in to produce config.h. And first: -# Protect against being on the right side of a sed subst in config.status. -# Protect against being in an unquoted here document in config.status. -rm -f conftest.vals -cat > conftest.hdr <<\EOF -s/[\\&%]/\\&/g -s%[\\$`]%\\&%g -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp -s%ac_d%ac_u%gp -s%ac_u%ac_e%gp -EOF -sed -n -f conftest.hdr confdefs.h > conftest.vals -rm -f conftest.hdr - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >> conftest.vals <<\EOF -s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% -EOF - -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. - -rm -f conftest.tail -while : -do - ac_lines=`grep -c . conftest.vals` - # grep -c gives empty output for an empty file on some AIX systems. - if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi - # Write a limited-size here document to conftest.frag. - echo ' cat > conftest.frag <> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS - echo 'CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in -' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals -done -rm -f conftest.vals - -cat >> $CONFIG_STATUS <<\EOF - rm -f conftest.frag conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > conftest.h - cat conftest.in >> conftest.h - rm -f conftest.in - if cmp -s $ac_file conftest.h 2>/dev/null; then - echo "$ac_file is unchanged" - rm -f conftest.h - else - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - fi - rm -f $ac_file - mv conftest.h $ac_file - fi -fi; done - -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - - Index: xc/extras/freetype2/builds/cygwin/configure.in diff -u xc/extras/freetype2/builds/cygwin/configure.in:1.1.1.1 xc/extras/freetype2/builds/cygwin/configure.in:removed --- xc/extras/freetype2/builds/cygwin/configure.in:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/cygwin/configure.in Fri Jan 18 15:21:40 2002 @@ -1,87 +0,0 @@ -dnl This file is part of the FreeType project. -dnl -dnl Process this file with autoconf to produce a configure script. -dnl - -AC_INIT(ftconfig.in) - -dnl configuration file -- stay in 8.3 limit -AC_CONFIG_HEADER(ftconfig.h:ftconfig.in) - -version_info='6:1:0' -AC_SUBST(version_info) - -dnl checks for system type -AC_CANONICAL_SYSTEM - -dnl checks for programs -AC_PROG_CC -AC_PROG_CPP - -dnl get Compiler flags right. -if test "x$CC" = xgcc; then - XX_CFLAGS="-Wall" - XX_ANSIFLAGS="-pedantic -ansi" -else - case "$host" in - *-dec-osf*) - CFLAGS= - XX_CFLAGS="-std1 -g3" - XX_ANSIFLAGS= - ;; - *) - XX_CFLAGS= - XX_ANSIFLAGS= - ;; - esac -fi -AC_SUBST(XX_CFLAGS) -AC_SUBST(XX_ANSIFLAGS) - -AC_CHECK_PROG(RMF, rm, rm -f) -AC_CHECK_PROG(RMDIR, rmdir, rmdir) - -dnl Since this file will be finally moved to another directory we make -dnl the path of the install script absolute. This small code snippet has -dnl been taken from automake's `ylwrap' script. -AC_PROG_INSTALL -case "$INSTALL" in - /*) - ;; - */*) - INSTALL="`pwd`/$INSTALL" ;; -esac - -dnl checks for header files -AC_HEADER_STDC -AC_CHECK_HEADERS(fcntl.h unistd.h) - -dnl checks for typedefs, structures, and compiler characteristics -AC_C_CONST -AC_CHECK_SIZEOF(int) -AC_CHECK_SIZEOF(long) - -dnl checks for library functions - -dnl Here we check whether we can use our mmap file component. -AC_FUNC_MMAP -if test "$ac_cv_func_mmap_fixed_mapped" != yes; then - FTSYS_SRC='$(BASE_)ftsystem.c' -else - FTSYS_SRC='$(BUILD)/ftsystem.c' - - FT_MUNMAP_DECL - FT_MUNMAP_PARAM -fi -AC_SUBST(FTSYS_SRC) - -AC_CHECK_FUNCS(memcpy memmove) - -AM_PROG_LIBTOOL - -dnl create the CygWin-specific sub-Makefile `builds/cygwin/cygwin-def.mk' -dnl and 'builds/cygwin/cygwin-cc.mk' that will be used by the build system -dnl -AC_OUTPUT(cygwin-cc.mk:cygwin-cc.in cygwin-def.mk:cygwin-def.in freetype-config) - -dnl end of configure.in Index: xc/extras/freetype2/builds/cygwin/cygwin-cc.in diff -u xc/extras/freetype2/builds/cygwin/cygwin-cc.in:1.1.1.1 xc/extras/freetype2/builds/cygwin/cygwin-cc.in:removed --- xc/extras/freetype2/builds/cygwin/cygwin-cc.in:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/cygwin/cygwin-cc.in Fri Jan 18 15:21:40 2002 @@ -1,79 +0,0 @@ -# template for Unix-specific compiler definitions -# - -CC := @CC@ - -LIBTOOL := $(BUILD)/libtool - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := lo -SO := o - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := la -SA := a - - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := lib$(PROJECT) - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o # Don't remove this comment line! We need the space after `-o'. - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -CFLAGS := -c @XX_CFLAGS@ @CFLAGS@ - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := @XX_ANSIFLAGS@ - -# C compiler to use -- we use libtool! -# -# -CCraw := $(CC) -CC := $(LIBTOOL) --mode=compile $(CCraw) - -# Linker flags. -# -LDFLAGS := @LDFLAGS@ - - -# Library linking -# -LINK_LIBRARY = $(LIBTOOL) --mode=link $(CCraw) -o $@ $(OBJECTS_LIST) \ - -rpath $(libdir) -version-info $(version_info) - -# EOF Index: xc/extras/freetype2/builds/cygwin/cygwin-def.in diff -u xc/extras/freetype2/builds/cygwin/cygwin-def.in:1.1.1.2 xc/extras/freetype2/builds/cygwin/cygwin-def.in:removed --- xc/extras/freetype2/builds/cygwin/cygwin-def.in:1.1.1.2 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/builds/cygwin/cygwin-def.in Fri Jan 18 15:21:40 2002 @@ -1,86 +0,0 @@ -# -# FreeType 2 configuration rules templates for Unix + configure -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -ifndef TOP - TOP := . -endif -TOP := $(shell cd $(TOP); pwd) - -DELETE := @RMF@ -DELDIR := @RMDIR@ -SEP := / -HOSTSEP := $(SEP) -BUILD := $(TOP)/builds/cygwin -PLATFORM := cygwin - -# don't use `:=' here since the path stuff will be included after this file -# -FTSYS_SRC = @FTSYS_SRC@ - -INSTALL := @INSTALL@ -INSTALL_DATA := @INSTALL_DATA@ -INSTALL_PROGRAM := @INSTALL_PROGRAM@ -INSTALL_SCRIPT := @INSTALL_SCRIPT@ -MKINSTALLDIRS := $(BUILD)/mkinstalldirs - -DISTCLEAN += $(BUILD)/config.cache \ - $(BUILD)/config.log \ - $(BUILD)/config.status \ - $(BUILD)/cygwin-def.mk \ - $(BUILD)/cygwin-cc.mk \ - $(BUILD)/ftconfig.h \ - $(BUILD)/freetype-config \ - $(LIBTOOL) - - -# Standard installation variables. -# -prefix := @prefix@ -exec_prefix := @exec_prefix@ -libdir := @libdir@ -bindir := @bindir@ -includedir := @includedir@ - -version_info := @version_info@ - - -# The directory where all object files are placed. -# -# This lets you build the library in your own directory with something like -# -# set TOP=.../path/to/freetype2/top/dir... -# set OBJ_DIR=.../path/to/obj/dir -# make -f $TOP/Makefile setup [options] -# make -f $TOP/Makefile -# -ifndef OBJ_DIR - OBJ_DIR := $(shell cd $(TOP)/objs; pwd) -endif - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -# The NO_OUTPUT macro is appended to command lines in order to ignore -# the output of some programs. -# -NO_OUTPUT := 2> /dev/null - -# EOF Index: xc/extras/freetype2/builds/cygwin/cygwin-dev.mk diff -u xc/extras/freetype2/builds/cygwin/cygwin-dev.mk:1.1.1.2 xc/extras/freetype2/builds/cygwin/cygwin-dev.mk:removed --- xc/extras/freetype2/builds/cygwin/cygwin-dev.mk:1.1.1.2 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/builds/cygwin/cygwin-dev.mk Fri Jan 18 15:21:40 2002 @@ -1,25 +0,0 @@ -# -# FreeType 2 Configuration rules for Cygwin -# -# Development version without optimizations & libtool -# and no installation. -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP)/builds/cygwin/cygwinddef.mk -BUILD := $(TOP)/builds/devel - -include $(TOP)/builds/compiler/gcc-dev.mk -include $(TOP)/builds/link_std.mk - -# EOF Index: xc/extras/freetype2/builds/cygwin/cygwin.mk diff -u xc/extras/freetype2/builds/cygwin/cygwin.mk:1.1.1.1 xc/extras/freetype2/builds/cygwin/cygwin.mk:removed --- xc/extras/freetype2/builds/cygwin/cygwin.mk:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/cygwin/cygwin.mk Fri Jan 18 15:21:40 2002 @@ -1,46 +0,0 @@ -# -# FreeType 2 configuration file for CygWin host platform. -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP)/builds/cygwin/cygwin-def.mk -include $(TOP)/builds/cygwin/cygwin-cc.mk - -ifdef BUILD_PROJECT - - # Now include the main sub-makefile. It contains all the rules used to - # build the library with the previous variables defined. - # - include $(TOP)/builds/$(PROJECT).mk - - - # The cleanup targets. - # - clean_project: clean_project_cygwin - distclean_project: distclean_project_cygwin - - - # This final rule is used to link all object files into a single library. - # this is compiler-specific - # - $(PROJECT_LIBRARY): $(OBJECTS_LIST) - ifdef CLEAN_LIBRARY - -$(CLEAN_LIBRARY) $(NO_OUTPUT) - endif - $(LINK_LIBRARY) - -endif - -include $(TOP)/builds/cygwin/install.mk - -# EOF Index: xc/extras/freetype2/builds/cygwin/cygwinddef.mk diff -u xc/extras/freetype2/builds/cygwin/cygwinddef.mk:1.1.1.2 xc/extras/freetype2/builds/cygwin/cygwinddef.mk:removed --- xc/extras/freetype2/builds/cygwin/cygwinddef.mk:1.1.1.2 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/builds/cygwin/cygwinddef.mk Fri Jan 18 15:21:40 2002 @@ -1,56 +0,0 @@ -# -# FreeType 2 configuration rules templates for -# development under Unix with no configure script (gcc only) -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -ifndef TOP - TOP := . -endif -TOP := $(shell cd $(TOP); pwd) - -DELETE := rm -f -SEP := / -HOSTSEP := $(SEP) - -# we use a special devel ftoption.h -BUILD := $(TOP)/builds/devel - -# do not set the platform to `unix', or libtool will trick you -PLATFORM := unixdev - - -# The directory where all object files are placed. -# -ifndef OBJ_DIR - OBJ_DIR := $(shell cd $(TOP)/objs; pwd) -endif - - -# library file name -# -LIBRARY := lib$(PROJECT) - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -# -NO_OUTPUT := 2> /dev/null - -# EOF Index: xc/extras/freetype2/builds/cygwin/detect.mk diff -u xc/extras/freetype2/builds/cygwin/detect.mk:1.1.1.1 xc/extras/freetype2/builds/cygwin/detect.mk:removed --- xc/extras/freetype2/builds/cygwin/detect.mk:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/cygwin/detect.mk Fri Jan 18 15:21:40 2002 @@ -1,80 +0,0 @@ -# -# FreeType 2 configuration file to detect a CygWin host platform. -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -ifeq ($(PLATFORM),ansi) - - # Detecting Windows NT is easy, as the OS variable must be defined and - # contains `Windows_NT'. Untested with Windows 2K, but I guess it should - # work... - # - ifeq ($(OS),Windows_NT) - - # Check if we are running on a CygWin system by checking the OSTYPE - # variable. - ifeq ($(OSTYPE),cygwin) - is_cygwin := 1 - endif - - # We test for the COMSPEC environment variable, then run the `ver' - # command-line program to see if its output contains the word `Windows'. - # - # If this is true, we are running a win32 platform (or an emulation). - # - else - ifeq ($(OSTYPE),cygwin) - ifdef COMSPEC - is_cygwin := $(findstring Windows,$(strip $(shell ver))) - endif - endif # test CygWin - endif # test NT - - ifdef is_cygwin - - PLATFORM := cygwin - COPY := cp - DELETE := rm -f - - # If `devel' is the requested target, we use a special configuration - # file named `cygwin-dev.mk'. It disables optimization and libtool. - # - ifneq ($(findstring devel,$(MAKECMDGOALS)),) - CONFIG_FILE := cygwin-dev.mk - CC := gcc - devel: setup - else - # If a CygWin platform is detected, the configure script is called and - # `cygwin.mk' is created. - # - # Arguments to `configure' should be in the CFG variable. Example: - # - # make CFG="--prefix=/usr --disable-static" - # - # If you need to set CFLAGS or LDFLAGS, do it here also. - # - CONFIG_FILE := cygwin.mk - setup: cygwin-def.mk - cygwin: setup - endif - - setup: std_setup - - cygwin-def.mk: builds/cygwin/cygwin-def.in - cd builds/cygwin; \ - $(USE_CFLAGS) CONFIG_SHELL=/bin/bash ./configure $(CFG) - - endif # test CygWin -endif # test PLATFORM - -# EOF Index: xc/extras/freetype2/builds/cygwin/freetype-config.in diff -u xc/extras/freetype2/builds/cygwin/freetype-config.in:1.1.1.1 xc/extras/freetype2/builds/cygwin/freetype-config.in:removed --- xc/extras/freetype2/builds/cygwin/freetype-config.in:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/cygwin/freetype-config.in Fri Jan 18 15:21:40 2002 @@ -1,90 +0,0 @@ -#!/bin/sh - -prefix=@prefix@ -exec_prefix=@exec_prefix@ -exec_prefix_set=no - -usage() -{ - cat <&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 - ;; - --prefix) - echo_prefix=yes - ;; - --exec-prefix=*) - exec_prefix=$optarg - exec_prefix_set=yes - ;; - --exec-prefix) - echo_exec_prefix=yes - ;; - --version) - echo @version_info@ - exit 0 - ;; - --cflags) - echo_cflags=yes - ;; - --libs) - echo_libs=yes - ;; - --libtool) - echo_libtool=yes - ;; - *) - usage 1 1>&2 - ;; - esac - shift -done - -if test "$exec_prefix_set" = "no"; then - exec_prefix=$prefix -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@/freetype2" - echo $cflags $includes -fi -if test "$echo_libs" = "yes"; then - libs="-lfreetype" - echo -L@libdir@ $libs -fi -if test "$echo_libtool" = "yes"; then - convlib="libfreetype.la" - echo @libdir@/$convlib -fi - -# EOF Index: xc/extras/freetype2/builds/cygwin/ftconfig.in diff -u xc/extras/freetype2/builds/cygwin/ftconfig.in:1.1.1.2 xc/extras/freetype2/builds/cygwin/ftconfig.in:removed --- xc/extras/freetype2/builds/cygwin/ftconfig.in:1.1.1.2 Tue May 15 23:45:49 2001 +++ xc/extras/freetype2/builds/cygwin/ftconfig.in Fri Jan 18 15:21:40 2002 @@ -1,254 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftconfig.in */ -/* */ -/* UNIX-specific configuration file (specification only). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This header file contains a number of macro definitions that are used */ - /* by the rest of the engine. Most of the macros here are automatically */ - /* determined at compile time, and you should not need to change it to */ - /* port FreeType, except to compile the library with a non-ANSI */ - /* compiler. */ - /* */ - /* Note however that if some specific modifications are needed, we */ - /* advise you to place a modified copy in your build directory. */ - /* */ - /* The build directory is usually `freetype/builds/', and */ - /* contains system-specific files that are always included first when */ - /* building the library. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTCONFIG_H__ -#define __FTCONFIG_H__ - -#include -#include FT_CONFIG_OPTIONS_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ - /* */ - /* These macros can be toggled to suit a specific system. The current */ - /* ones are defaults used to compile FreeType in an ANSI C environment */ - /* (16bit compilers are also supported). Copy this file to your own */ - /* `freetype/builds/' directory, and edit it to port the engine. */ - /* */ - /*************************************************************************/ - - -#define HAVE_UNISTD_H 0 -#define HAVE_FCNTL_H 0 - -#define SIZEOF_INT 2 -#define SIZEOF_LONG 2 - - -#define FT_SIZEOF_INT SIZEOF_INT -#define FT_SIZEOF_LONG SIZEOF_LONG - - - /* Preferred alignment of data */ -#define FT_ALIGNMENT 8 - - - /* UNUSED is a macro used to indicate that a given parameter is not used */ - /* -- this is only used to get rid of unpleasant compiler warnings */ -#ifndef FT_UNUSED -#define FT_UNUSED( arg ) ( (arg) = (arg) ) -#endif - - - /*************************************************************************/ - /* */ - /* AUTOMATIC CONFIGURATION MACROS */ - /* */ - /* These macros are computed from the ones defined above. Don't touch */ - /* their definition, unless you know precisely what you are doing. No */ - /* porter should need to mess with them. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* IntN types */ - /* */ - /* Used to guarantee the size of some specific integers. */ - /* */ - typedef signed short FT_Int16; - typedef unsigned short FT_UInt16; - -#if FT_SIZEOF_INT == 4 - - typedef signed int FT_Int32; - typedef unsigned int FT_UInt32; - -#elif FT_SIZEOF_LONG == 4 - - typedef signed long FT_Int32; - typedef unsigned long FT_UInt32; - -#else -#error "no 32bit type found -- please check your configuration files" -#endif - -#if FT_SIZEOF_LONG == 8 - - /* FT_LONG64 must be defined if a 64-bit type is available */ -#define FT_LONG64 -#define FT_INT64 long - -#else - - /*************************************************************************/ - /* */ - /* Many compilers provide the non-ANSI `long long' 64-bit type. You can */ - /* activate it by defining the FTCALC_USE_LONG_LONG macro in */ - /* `ftoption.h'. */ - /* */ - /* Note that this will produce many -ansi warnings during library */ - /* compilation, and that in many cases, the generated code will be */ - /* neither smaller nor faster! */ - /* */ -#ifdef FTCALC_USE_LONG_LONG - -#define FT_LONG64 -#define FT_INT64 long long - -#endif /* FTCALC_USE_LONG_LONG */ -#endif /* FT_SIZEOF_LONG == 8 */ - - -#ifdef FT_MAKE_OPTION_SINGLE_OBJECT - -#define FT_LOCAL static -#define FT_LOCAL_DEF static - -#else - -#ifdef __cplusplus -#define FT_LOCAL extern "C" -#define FT_LOCAL_DEF extern "C" -#else -#define FT_LOCAL extern -#define FT_LOCAL_DEF extern -#endif - -#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ - - -#ifndef FT_BASE - -#ifdef __cplusplus -#define FT_BASE( x ) extern "C" x -#else -#define FT_BASE( x ) extern x -#endif - -#endif /* !FT_BASE */ - - -#ifndef FT_BASE_DEF - -#ifdef __cplusplus -#define FT_BASE_DEF( x ) extern "C" x -#else -#define FT_BASE_DEF( x ) extern x -#endif - -#endif /* !FT_BASE_DEF */ - - -#ifndef FT_EXPORT - -#ifdef __cplusplus -#define FT_EXPORT( x ) extern "C" x -#else -#define FT_EXPORT( x ) extern x -#endif - -#endif /* !FT_EXPORT */ - - -#ifndef FT_EXPORT_DEF - -#ifdef __cplusplus -#define FT_EXPORT_DEF( x ) extern "C" x -#else -#define FT_EXPORT_DEF( x ) extern x -#endif - -#endif /* !FT_EXPORT_DEF */ - - -#ifndef FT_EXPORT_VAR - -#ifdef __cplusplus -#define FT_EXPORT_VAR( x ) extern "C" x -#else -#define FT_EXPORT_VAR( x ) extern x -#endif - -#endif /* !FT_EXPORT_VAR */ - - /* The following macros are needed to compile the library with a */ - /* C++ compiler. Note that we do this for convenience -- please */ - /* don't ask for more C++ features. */ - /* */ - - /* This is special. Within C++, you must specify `extern "C"' for */ - /* functions which are used via function pointers, and you also */ - /* must do that for structures which contain function pointers to */ - /* assure C linkage -- it's not possible to have (local) anonymous */ - /* functions which are accessed by (global) function pointers. */ - /* */ - /* */ - /* FT_CALLBACK_DEF is used to _define_ a callback function. */ - /* */ - /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ - /* contains pointers to callback functions. */ - /* */ - /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ - /* that contains pointers to callback functions. */ - /* */ -#ifdef __cplusplus - -#define FT_CALLBACK_DEF extern "C" -#define FT_CALLBACK_TABLE extern "C" -#define FT_CALLBACK_TABLE_DEF extern "C" - -#else - -#define FT_CALLBACK_DEF static -#define FT_CALLBACK_TABLE extern -#define FT_CALLBACK_TABLE_DEF /* nothing */ - -#endif /* __cplusplus */ - - -FT_END_HEADER - -#endif /* __FTCONFIG_H__ */ - - -/* END */ Index: xc/extras/freetype2/builds/cygwin/ftsystem.c diff -u xc/extras/freetype2/builds/cygwin/ftsystem.c:1.1.1.1 xc/extras/freetype2/builds/cygwin/ftsystem.c:removed --- xc/extras/freetype2/builds/cygwin/ftsystem.c:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/cygwin/ftsystem.c Fri Jan 18 15:21:40 2002 @@ -1,334 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsystem.c */ -/* */ -/* Unix-specific FreeType low-level system interface (body). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - - - /* memory-mapping includes and definitions */ -#ifdef HAVE_UNISTD_H -#include -#endif - -#include -#ifndef MAP_FILE -#define MAP_FILE 0x00 -#endif - -#ifdef MUNMAP_USES_VOIDP -#define MUNMAP_ARG_CAST void * -#else -#define MUNMAP_ARG_CAST char * -#endif - -#ifdef NEED_MUNMAP_DECL - -#ifdef __cplusplus - extern "C" -#else - extern -#endif - int munmap( char* addr, - int len ); - -#define MUNMAP_ARG_CAST char * - -#endif /* NEED_DECLARATION_MUNMAP */ - - -#include - -#ifdef HAVE_FCNTL_H -#include -#endif - -#include -#include -#include - - - /*************************************************************************/ - /* */ - /* MEMORY MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* */ - /* ft_alloc */ - /* */ - /* */ - /* The memory allocation function. */ - /* */ - /* */ - /* memory :: A pointer to the memory object. */ - /* size :: The requested size in bytes. */ - /* */ - /* */ - /* block :: The address of newly allocated block. */ - /* */ - FT_CALLBACK_DEF - void* ft_alloc( FT_Memory memory, - long size ) - { - FT_UNUSED( memory ); - - return malloc( size ); - } - - - /*************************************************************************/ - /* */ - /* */ - /* ft_realloc */ - /* */ - /* */ - /* The memory reallocation function. */ - /* */ - /* */ - /* memory :: A pointer to the memory object. */ - /* */ - /* cur_size :: The current size of the allocated memory block. */ - /* */ - /* new_size :: The newly requested size in bytes. */ - /* */ - /* block :: The current address of the block in memory. */ - /* */ - /* */ - /* The address of the reallocated memory block. */ - /* */ - FT_CALLBACK_DEF - void* ft_realloc( FT_Memory memory, - long cur_size, - long new_size, - void* block ) - { - FT_UNUSED( memory ); - FT_UNUSED( cur_size ); - - return realloc( block, new_size ); - } - - - /*************************************************************************/ - /* */ - /* */ - /* ft_free */ - /* */ - /* */ - /* The memory release function. */ - /* */ - /* */ - /* memory :: A pointer to the memory object. */ - /* */ - /* block :: The address of block in memory to be freed. */ - /* */ - FT_CALLBACK_DEF - void ft_free( FT_Memory memory, - void* block ) - { - FT_UNUSED( memory ); - - free( block ); - } - - - /*************************************************************************/ - /* */ - /* RESOURCE MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_io - - /* We use the macro STREAM_FILE for convenience to extract the */ - /* system-specific stream handle from a given FreeType stream object */ -#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) - - - /*************************************************************************/ - /* */ - /* */ - /* ft_close_stream */ - /* */ - /* */ - /* The function to close a stream. */ - /* */ - /* */ - /* stream :: A pointer to the stream object. */ - /* */ - FT_CALLBACK_DEF - void ft_close_stream( FT_Stream stream ) - { - munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size ); - - stream->descriptor.pointer = NULL; - stream->size = 0; - stream->base = 0; - } - - - /*************************************************************************/ - /* */ - /* */ - /* FT_New_Stream */ - /* */ - /* */ - /* Creates a new stream object. */ - /* */ - /* */ - /* filepathname :: The name of the stream (usually a file) to be */ - /* opened. */ - /* */ - /* stream :: A pointer to the stream object. */ - /* */ - /* */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT_DEF( FT_Error ) FT_New_Stream( const char* filepathname, - FT_Stream stream ) - { - int file; - struct stat stat_buf; - - - if ( !stream ) - return FT_Err_Invalid_Stream_Handle; - - /* open the file */ - file = open( filepathname, O_RDONLY ); - if ( file < 0 ) - { - FT_ERROR(( "FT_New_Stream:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - return FT_Err_Cannot_Open_Resource; - } - - if ( fstat( file, &stat_buf ) < 0 ) - { - FT_ERROR(( "FT_New_Stream:" )); - FT_ERROR(( " could not `fstat' file `%s'\n", filepathname )); - goto Fail_Map; - } - - stream->size = stat_buf.st_size; - stream->pos = 0; - stream->base = (unsigned char *)mmap( NULL, - stream->size, - PROT_READ, - MAP_FILE | MAP_PRIVATE, - file, - 0 ); - - if ( (long)stream->base == -1 ) - { - FT_ERROR(( "FT_New_Stream:" )); - FT_ERROR(( " could not `mmap' file `%s'\n", filepathname )); - goto Fail_Map; - } - - close( file ); - - stream->descriptor.pointer = stream->base; - stream->pathname.pointer = (char*)filepathname; - - stream->close = ft_close_stream; - stream->read = 0; - - FT_TRACE1(( "FT_New_Stream:" )); - FT_TRACE1(( " opened `%s' (%d bytes) successfully\n", - filepathname, stream->size )); - - return FT_Err_Ok; - - Fail_Map: - close( file ); - - stream->base = NULL; - stream->size = 0; - stream->pos = 0; - - return FT_Err_Cannot_Open_Stream; - } - - - /*************************************************************************/ - /* */ - /* */ - /* FT_New_Memory */ - /* */ - /* */ - /* Creates a new memory object. */ - /* */ - /* */ - /* A pointer to the new memory object. 0 in case of error. */ - /* */ - FT_EXPORT_DEF( FT_Memory ) FT_New_Memory( void ) - { - FT_Memory memory; - - - memory = (FT_Memory)malloc( sizeof ( *memory ) ); - if ( memory ) - { - memory->user = 0; - memory->alloc = ft_alloc; - memory->realloc = ft_realloc; - memory->free = ft_free; - } - - return memory; - } - - - /*************************************************************************/ - /* */ - /* */ - /* FT_Done_Memory */ - /* */ - /* */ - /* Discards memory manager. */ - /* */ - /* */ - /* memory :: A handle to the memory manager. */ - /* */ - FT_EXPORT_DEF( void ) FT_Done_Memory( FT_Memory memory ) - { - free( memory ); - } - - -/* END */ Index: xc/extras/freetype2/builds/cygwin/install-sh diff -u xc/extras/freetype2/builds/cygwin/install-sh:1.1.1.1 xc/extras/freetype2/builds/cygwin/install-sh:removed --- xc/extras/freetype2/builds/cygwin/install-sh:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/cygwin/install-sh Fri Jan 18 15:21:40 2002 @@ -1,250 +0,0 @@ -#! /bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, 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 M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -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}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - 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;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - 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` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 Index: xc/extras/freetype2/builds/cygwin/install.mk diff -u xc/extras/freetype2/builds/cygwin/install.mk:1.1.1.2 xc/extras/freetype2/builds/cygwin/install.mk:removed --- xc/extras/freetype2/builds/cygwin/install.mk:1.1.1.2 Tue May 15 23:45:53 2001 +++ xc/extras/freetype2/builds/cygwin/install.mk Fri Jan 18 15:21:40 2002 @@ -1,68 +0,0 @@ -# -# FreeType 2 installation instructions for Unix systems -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Unix installation and deinstallation targets. -install: $(PROJECT_LIBRARY) - $(MKINSTALLDIRS) $(libdir) \ - $(includedir)/freetype2/freetype/config \ - $(includedir)/freetype2/freetype/internal \ - $(includedir)/freetype2/freetype/cache \ - $(bindir) - $(LIBTOOL) --mode=install $(INSTALL) $(PROJECT_LIBRARY) $(libdir) - -for P in $(PUBLIC_H) ; do \ - $(INSTALL_DATA) $$P $(includedir)/freetype2/freetype ; \ - done - -for P in $(BASE_H) ; do \ - $(INSTALL_DATA) $$P $(includedir)/freetype2/freetype/internal ; \ - done - -for P in $(CONFIG_H) ; do \ - $(INSTALL_DATA) $$P $(includedir)/freetype2/freetype/config ; \ - done - -for P in $(CACHE_H) ; do \ - $(INSTALL_DATA) $$P $(includedir)/freetype2/freetype/cache ; \ - done - $(INSTALL_DATA) $(BUILD)/ft2unix.h $(includedir)/ft2build.h - $(INSTALL_SCRIPT) -m 755 $(BUILD)/freetype-config \ - $(bindir)/freetype-config - - -uninstall: - -$(LIBTOOL) --mode=uninstall $(RM) $(libdir)/$(PROJECT_LIBRARY) - -$(DELETE) $(includedir)/freetype2/freetype/cache/* - -$(DELDIR) $(includedir)/freetype2/freetype/cache - -$(DELETE) $(includedir)/freetype2/freetype/config/* - -$(DELDIR) $(includedir)/freetype2/freetype/config - -$(DELETE) $(includedir)/freetype2/freetype/internal/* - -$(DELDIR) $(includedir)/freetype2/freetype/internal - -$(DELETE) $(includedir)/freetype2/freetype/* - -$(DELDIR) $(includedir)/freetype2/freetype - -$(DELDIR) $(includedir)/freetype2 - -$(DELETE) $(bindir)/freetype-config - - -# Unix cleaning and distclean rules. -# -clean_project_unix: - -$(DELETE) $(BASE_OBJECTS) $(OBJ_M) $(OBJ_S) - -$(DELETE) $(patsubst %.$O,%.$(SO),$(BASE_OBJECTS) $(OBJ_M) $(OBJ_S)) \ - $(CLEAN) - -distclean_project_unix: clean_project_unix - -$(DELETE) $(PROJECT_LIBRARY) - -$(DELETE) $(OBJ_DIR)/.libs/* - -$(DELDIR) $(OBJ_DIR)/.libs - -$(DELETE) *.orig *~ core *.core $(DISTCLEAN) - -# EOF Index: xc/extras/freetype2/builds/cygwin/libtool diff -u xc/extras/freetype2/builds/cygwin/libtool:1.1.1.1 xc/extras/freetype2/builds/cygwin/libtool:removed --- xc/extras/freetype2/builds/cygwin/libtool:1.1.1.1 Fri Dec 8 16:26:06 2000 +++ xc/extras/freetype2/builds/cygwin/libtool Fri Jan 18 15:21:40 2002 @@ -1,4303 +0,0 @@ -#! /bin/bash - -# libtool - Provide generalized library-building support services. -# Generated automatically by ltconfig (GNU libtool 1.3.5 (1.385.2.206 2000/05/27 11:12:27)) -# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. -# -# Copyright (C) 1996-1999 Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="sed -e s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -### BEGIN LIBTOOL CONFIG -# Libtool was configured as follows, on host MKPC5090: -# -# CC="gcc" CFLAGS="-g -O2" CPPFLAGS="" \ -# LD="/usr/bin/ld" LDFLAGS="" LIBS="" \ -# NM="/usr/bin/nm -B" RANLIB="ranlib" LN_S="ln -s" \ -# DLLTOOL="" OBJDUMP="" AS="" \ -# ./ltconfig --cache-file=./config.cache --with-gcc --with-gnu-ld --no-verify ./ltmain.sh i686-pc-cygwin -# -# Compiler and other test output produced by ltconfig, useful for -# debugging ltconfig, is in ./config.log if it exists. - -# The version of ltconfig that generated this script. -LTCONFIG_VERSION="1.3.5" - -# Shell to use when invoking shell scripts. -SHELL="/bin/bash" - -# Whether or not to build shared libraries. -build_libtool_libs=no - -# Whether or not to build static libraries. -build_old_libs=yes - -# Whether or not to optimize for fast installation. -fast_install=needless - -# The host system. -host_alias=i686-pc-cygwin -host=i686-pc-cygwin - -# An echo program that does not interpret backslashes. -echo="echo" - -# The archiver. -AR="ar" - -# The default C compiler. -CC="gcc" - -# The linker used to build libraries. -LD="/usr/bin/ld" - -# Whether we need hard or soft links. -LN_S="ln -s" - -# A BSD-compatible nm program. -NM="/usr/bin/nm -B" - -# Used on cygwin: DLL creation program. -DLLTOOL="dlltool" - -# Used on cygwin: object dumper. -OBJDUMP="objdump" - -# Used on cygwin: assembler. -AS="as" - -# The name of the directory that contains temporary libtool files. -objdir=.libs - -# How to create reloadable object files. -reload_flag=" -r" -reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" - -# How to pass a linker flag through the compiler. -wl="-Wl," - -# Object file suffix (normally "o"). -objext="o" - -# Old archive suffix (normally "a"). -libext="a" - -# Executable file suffix (normally ""). -exeext=".exe" - -# Additional compiler flags for building library objects. -pic_flag="" - -# Does compiler simultaneously support -c and -o options? -compiler_c_o="yes" - -# Can we write directly to a .lo ? -compiler_o_lo="yes" - -# Must we lock files when doing compilation ? -need_locks="no" - -# Do we need the lib prefix for modules? -need_lib_prefix=no - -# Do we need a version for libraries? -need_version=no - -# Whether dlopen is supported. -dlopen=unknown - -# Whether dlopen of programs is supported. -dlopen_self=unknown - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=unknown - -# Compiler flag to prevent dynamic linking. -link_static_flag="-static" - -# Compiler flag to turn off builtin functions. -no_builtin_flag=" -fno-builtin -fno-rtti -fno-exceptions" - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec="\${wl}--export-dynamic" - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec="" - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec="" - -# Library versioning type. -version_type=windows - -# Format of library name prefix. -libname_spec="lib\$name" - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec="\${libname}\`echo \${release} | sed -e s/[.]/-/g\`\${versuffix}.dll \$libname.a" - -# The coded name of the library, if different from the real name. -soname_spec="" - -# Commands used to build and install an old-style archive. -RANLIB="ranlib" -old_archive_cmds="\$AR cru \$oldlib\$oldobjs~\$RANLIB \$oldlib" -old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib" -old_postuninstall_cmds="" - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds="\$DLLTOOL --as=\$AS --dllname \$soname --def \$objdir/\$soname-def --output-lib \$objdir/\$libname.a" - -# Commands used to build and install a shared archive. -archive_cmds="" -archive_expsym_cmds="echo EXPORTS > \$objdir/\$soname-def~ - _lt_hint=1; - cat \$export_symbols | while read symbol; do - set dummy \\\$symbol; - case \\\$# in - 2) echo \\\" \\\$2 @ \\\$_lt_hint ; \\\" >> \$objdir/\$soname-def;; - *) echo \\\" \\\$2 @ \\\$_lt_hint \\\$3 ; \\\" >> \$objdir/\$soname-def;; - esac; - _lt_hint=\\\`expr 1 + \\\$_lt_hint\\\`; - done~ - test -f \$objdir/\$soname-ltdll.c || sed -e \\\"/^# \\\\/\\\\* ltdll\\\\.c starts here \\\\*\\\\//,/^# \\\\/\\\\* ltdll.c ends here \\\\*\\\\// { s/^# //; p; }\\\" -e d < \$0 > \$objdir/\$soname-ltdll.c~ - test -f \$objdir/\$soname-ltdll.\$objext || (cd \$objdir && \$CC -c \$soname-ltdll.c)~ - \$CC -Wl,--base-file,\$objdir/\$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o \$lib \$objdir/\$soname-ltdll.\$objext \$libobjs \$deplibs \$linkopts~ - \$DLLTOOL --as=\$AS --dllname \$soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def \$objdir/\$soname-def --base-file \$objdir/\$soname-base --output-exp \$objdir/\$soname-exp~ - \$CC -Wl,--base-file,\$objdir/\$soname-base \$objdir/\$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o \$lib \$objdir/\$soname-ltdll.\$objext \$libobjs \$deplibs \$linkopts~ - \$DLLTOOL --as=\$AS --dllname \$soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def \$objdir/\$soname-def --base-file \$objdir/\$soname-base --output-exp \$objdir/\$soname-exp~ - \$CC \$objdir/\$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o \$lib \$objdir/\$soname-ltdll.\$objext \$libobjs \$deplibs \$linkopts" -postinstall_cmds="" -postuninstall_cmds="" - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method="file_magic file format pei*-i386(.*architecture: i386)?" - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd="\${OBJDUMP} -f" - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag="unsupported" - -# Flag that forces no undefined symbols. -no_undefined_flag="" - -# Commands used to finish a libtool library installation in a directory. -finish_cmds="" - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval="" - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGISTW]\\)[ ][ ]*\\(_\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'" - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern char \\1;/p'" - -# This is the shared library runtime path variable. -runpath_var=LD_RUN_PATH - -# This is the shared library path variable. -shlibpath_var=PATH - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=unknown - -# How to hardcode a shared library path into an executable. -hardcode_action=immediate - -# Flag to hardcode $libdir into a binary during linking. -# This must work even if $libdir does not exist. -hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator="" - -# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=no - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=no - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=unsupported - -# Compile-time system search path for libraries -sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec="/lib /usr/lib" - -# Fix the shell variable $srcfile for the compiler. -fix_srcfile_path="" - -# Set to yes if exported symbols are required. -always_export_symbols=yes - -# The commands to list exported symbols. -export_symbols_cmds="test -f \$objdir/\$soname-ltdll.c || sed -e \\\"/^# \\\\/\\\\* ltdll\\\\.c starts here \\\\*\\\\//,/^# \\\\/\\\\* ltdll.c ends here \\\\*\\\\// { s/^# //; p; }\\\" -e d < \$0 > \$objdir/\$soname-ltdll.c~ - test -f \$objdir/\$soname-ltdll.\$objext || (cd \$objdir && \$CC -c \$soname-ltdll.c)~ - \$DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def \$objdir/\$soname-def \$objdir/\$soname-ltdll.\$objext \$libobjs \$convenience~ - sed -e \\\"1,/EXPORTS/d\\\" -e \\\"s/ @ [0-9]*//\\\" -e \\\"s/ *;.*\$//\\\" < \$objdir/\$soname-def > \$export_symbols" - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms="_GLOBAL_OFFSET_TABLE_" - -# Symbols that must always be exported. -include_expsyms="" - -### END LIBTOOL CONFIG - -# ltmain.sh - Provide generalized library-building support services. -# NOTE: Changing this file will not affect anything until you rerun ltconfig. -# -# Copyright (C) 1996-1999 Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Check that we have a working $echo. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -else - # Restart under the correct shell, and then maybe $echo will work. - exec $SHELL "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 -fi - -if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - echo "$modename: not configured to build any kind of library" 1>&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 -fi - -# Global variables. -mode=$default_mode -nonopt= -prev= -prevopt= -run= -show="$echo" -show_help= -execute_dlfiles= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" - -# Parse our command line options once, thoroughly. -while test $# -gt 0 -do - arg="$1" - shift - - case "$arg" in - -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case "$prev" in - execute_dlfiles) - eval "$prev=\"\$$prev \$arg\"" - ;; - *) - eval "$prev=\$arg" - ;; - esac - - prev= - prevopt= - continue - fi - - # Have we seen a non-optional argument yet? - case "$arg" in - --help) - show_help=yes - ;; - - --version) - echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" - exit 0 - ;; - - --config) - sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 - exit 0 - ;; - - --debug) - echo "$progname: enabling shell trace mode" - set -x - ;; - - --dry-run | -n) - run=: - ;; - - --features) - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - exit 0 - ;; - - --finish) mode="finish" ;; - - --mode) prevopt="--mode" prev=mode ;; - --mode=*) mode="$optarg" ;; - - --quiet | --silent) - show=: - ;; - - -dlopen) - prevopt="-dlopen" - prev=execute_dlfiles - ;; - - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - - *) - nonopt="$arg" - break - ;; - esac -done - -if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 -fi - -if test -z "$show_help"; then - - # Infer the operation mode. - if test -z "$mode"; then - case "$nonopt" in - *cc | *++ | gcc* | *-gcc*) - mode=link - for arg - do - case "$arg" in - -c) - mode=compile - break - ;; - esac - done - ;; - *db | *dbx | *strace | *truss) - mode=execute - ;; - *install*|cp|mv) - mode=install - ;; - *rm) - mode=uninstall - ;; - *) - # If we have no mode, but dlfiles were specified, then do execute mode. - test -n "$execute_dlfiles" && mode=execute - - # Just use the default operation mode. - if test -z "$mode"; then - if test -n "$nonopt"; then - $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 - else - $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 - fi - fi - ;; - esac - fi - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$modename --help --mode=$mode' for more information." - - # These modes are in order of execution frequency so that they run quickly. - case "$mode" in - # libtool compile mode - compile) - modename="$modename: compile" - # Get the compilation command and the source file. - base_compile= - lastarg= - srcfile="$nonopt" - suppress_output= - - user_target=no - for arg - do - # Accept any command-line options. - case "$arg" in - -o) - if test "$user_target" != "no"; then - $echo "$modename: you cannot specify \`-o' more than once" 1>&2 - exit 1 - fi - user_target=next - ;; - - -static) - build_old_libs=yes - continue - ;; - esac - - case "$user_target" in - next) - # The next one is the -o target name - user_target=yes - continue - ;; - yes) - # We got the output file - user_target=set - libobj="$arg" - continue - ;; - esac - - # Accept the current argument as the source file. - lastarg="$srcfile" - srcfile="$arg" - - # Aesthetically quote the previous argument. - - # Backslashify any backslashes, double quotes, and dollar signs. - # These are the only characters that are still specially - # interpreted inside of double-quoted scrings. - lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` - - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly in scan - # sets, so we specify it separately. - case "$lastarg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - lastarg="\"$lastarg\"" - ;; - esac - - # Add the previous argument to base_compile. - if test -z "$base_compile"; then - base_compile="$lastarg" - else - base_compile="$base_compile $lastarg" - fi - done - - case "$user_target" in - set) - ;; - no) - # Get the name of the library object. - libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` - ;; - *) - $echo "$modename: you must specify a target with \`-o'" 1>&2 - exit 1 - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - xform='[cCFSfmso]' - case "$libobj" in - *.ada) xform=ada ;; - *.adb) xform=adb ;; - *.ads) xform=ads ;; - *.asm) xform=asm ;; - *.c++) xform=c++ ;; - *.cc) xform=cc ;; - *.cpp) xform=cpp ;; - *.cxx) xform=cxx ;; - *.f90) xform=f90 ;; - *.for) xform=for ;; - esac - - libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` - - case "$libobj" in - *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; - *) - $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 - exit 1 - ;; - esac - - if test -z "$base_compile"; then - $echo "$modename: you must specify a compilation command" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $libobj" - else - removelist="$libobj" - fi - - $run $rm $removelist - trap "$run $rm $removelist; exit 1" 1 2 15 - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext} - lockfile="$output_obj.lock" - removelist="$removelist $output_obj $lockfile" - trap "$run $rm $removelist; exit 1" 1 2 15 - else - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until ln "$0" "$lockfile" 2>/dev/null; do - $show "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - echo "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit 1 - fi - echo $srcfile > "$lockfile" - fi - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - # All platforms use -DPIC, to notify preprocessed assembler code. - command="$base_compile $srcfile $pic_flag -DPIC" - if test "$build_old_libs" = yes; then - lo_libobj="$libobj" - dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$libobj"; then - dir="$objdir" - else - dir="$dir/$objdir" - fi - libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` - - if test -d "$dir"; then - $show "$rm $libobj" - $run $rm $libobj - else - $show "$mkdir $dir" - $run $mkdir $dir - status=$? - if test $status -ne 0 && test ! -d $dir; then - exit $status - fi - fi - fi - if test "$compiler_o_lo" = yes; then - output_obj="$libobj" - command="$command -o $output_obj" - elif test "$compiler_c_o" = yes; then - output_obj="$obj" - command="$command -o $output_obj" - fi - - $run $rm "$output_obj" - $show "$command" - if $run eval "$command"; then : - else - test -n "$output_obj" && $run $rm $removelist - exit 1 - fi - - if test "$need_locks" = warn && - test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then - echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit 1 - fi - - # Just move the object if needed, then go on to compile the next one - if test x"$output_obj" != x"$libobj"; then - $show "$mv $output_obj $libobj" - if $run $mv $output_obj $libobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # If we have no pic_flag, then copy the object into place and finish. - if test -z "$pic_flag" && test "$build_old_libs" = yes; then - # Rename the .lo from within objdir to obj - if test -f $obj; then - $show $rm $obj - $run $rm $obj - fi - - $show "$mv $libobj $obj" - if $run $mv $libobj $obj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - - xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$obj"; then - xdir="." - else - xdir="$xdir" - fi - baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` - libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` - # Now arrange that obj and lo_libobj become the same file - $show "(cd $xdir && $LN_S $baseobj $libobj)" - if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then - exit 0 - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Allow error messages only from the first compilation. - suppress_output=' >/dev/null 2>&1' - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - command="$base_compile $srcfile" - if test "$compiler_c_o" = yes; then - command="$command -o $obj" - output_obj="$obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - command="$command$suppress_output" - $run $rm "$output_obj" - $show "$command" - if $run eval "$command"; then : - else - $run $rm $removelist - exit 1 - fi - - if test "$need_locks" = warn && - test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then - echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit 1 - fi - - # Just move the object if needed - if test x"$output_obj" != x"$obj"; then - $show "$mv $output_obj $obj" - if $run $mv $output_obj $obj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Create an invalid libtool object if no PIC, so that we do not - # accidentally link it into a program. - if test "$build_libtool_libs" != yes; then - $show "echo timestamp > $libobj" - $run eval "echo timestamp > \$libobj" || exit $? - else - # Move the .lo from within objdir - $show "$mv $libobj $lo_libobj" - if $run $mv $libobj $lo_libobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - fi - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - $rm "$lockfile" - fi - - exit 0 - ;; - - # libtool link mode - link) - modename="$modename: link" - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invokation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - - # This is a source program that is used to create dlls on Windows - # Don't remove nor modify the starting and closing comments -# /* ltdll.c starts here */ -# #define WIN32_LEAN_AND_MEAN -# #include -# #undef WIN32_LEAN_AND_MEAN -# #include -# -# #ifndef __CYGWIN__ -# # ifdef __CYGWIN32__ -# # define __CYGWIN__ __CYGWIN32__ -# # endif -# #endif -# -# #ifdef __cplusplus -# extern "C" { -# #endif -# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -# #ifdef __cplusplus -# } -# #endif -# -# #ifdef __CYGWIN__ -# #include -# DECLARE_CYGWIN_DLL( DllMain ); -# #endif -# HINSTANCE __hDllInstance_base; -# -# BOOL APIENTRY -# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) -# { -# __hDllInstance_base = hInst; -# return TRUE; -# } -# /* ltdll.c ends here */ - # This is a source program that is used to create import libraries - # on Windows for dlls which lack them. Don't remove nor modify the - # starting and closing comments -# /* impgen.c starts here */ -# /* Copyright (C) 1999 Free Software Foundation, Inc. -# -# This file is part of GNU libtool. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# */ -# -# #include /* for printf() */ -# #include /* for open(), lseek(), read() */ -# #include /* for O_RDONLY, O_BINARY */ -# #include /* for strdup() */ -# -# static unsigned int -# pe_get16 (fd, offset) -# int fd; -# int offset; -# { -# unsigned char b[2]; -# lseek (fd, offset, SEEK_SET); -# read (fd, b, 2); -# return b[0] + (b[1]<<8); -# } -# -# static unsigned int -# pe_get32 (fd, offset) -# int fd; -# int offset; -# { -# unsigned char b[4]; -# lseek (fd, offset, SEEK_SET); -# read (fd, b, 4); -# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); -# } -# -# static unsigned int -# pe_as32 (ptr) -# void *ptr; -# { -# unsigned char *b = ptr; -# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); -# } -# -# int -# main (argc, argv) -# int argc; -# char *argv[]; -# { -# int dll; -# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; -# unsigned long export_rva, export_size, nsections, secptr, expptr; -# unsigned long name_rvas, nexp; -# unsigned char *expdata, *erva; -# char *filename, *dll_name; -# -# filename = argv[1]; -# -# dll = open(filename, O_RDONLY|O_BINARY); -# if (!dll) -# return 1; -# -# dll_name = filename; -# -# for (i=0; filename[i]; i++) -# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') -# dll_name = filename + i +1; -# -# pe_header_offset = pe_get32 (dll, 0x3c); -# opthdr_ofs = pe_header_offset + 4 + 20; -# num_entries = pe_get32 (dll, opthdr_ofs + 92); -# -# if (num_entries < 1) /* no exports */ -# return 1; -# -# export_rva = pe_get32 (dll, opthdr_ofs + 96); -# export_size = pe_get32 (dll, opthdr_ofs + 100); -# nsections = pe_get16 (dll, pe_header_offset + 4 +2); -# secptr = (pe_header_offset + 4 + 20 + -# pe_get16 (dll, pe_header_offset + 4 + 16)); -# -# expptr = 0; -# for (i = 0; i < nsections; i++) -# { -# char sname[8]; -# unsigned long secptr1 = secptr + 40 * i; -# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); -# unsigned long vsize = pe_get32 (dll, secptr1 + 16); -# unsigned long fptr = pe_get32 (dll, secptr1 + 20); -# lseek(dll, secptr1, SEEK_SET); -# read(dll, sname, 8); -# if (vaddr <= export_rva && vaddr+vsize > export_rva) -# { -# expptr = fptr + (export_rva - vaddr); -# if (export_rva + export_size > vaddr + vsize) -# export_size = vsize - (export_rva - vaddr); -# break; -# } -# } -# -# expdata = (unsigned char*)malloc(export_size); -# lseek (dll, expptr, SEEK_SET); -# read (dll, expdata, export_size); -# erva = expdata - export_rva; -# -# nexp = pe_as32 (expdata+24); -# name_rvas = pe_as32 (expdata+32); -# -# printf ("EXPORTS\n"); -# for (i = 0; i&2 - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - else - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - fi - build_libtool_libs=no - build_old_libs=yes - prefer_static_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test $# -gt 0; do - arg="$1" - shift - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case "$prev" in - output) - compile_command="$compile_command @OUTPUT@" - finalize_command="$finalize_command @OUTPUT@" - ;; - esac - - case "$prev" in - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - compile_command="$compile_command @SYMFILE@" - finalize_command="$finalize_command @SYMFILE@" - preload=yes - fi - case "$arg" in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - else - dlprefiles="$dlprefiles $arg" - fi - prev= - ;; - esac - ;; - expsyms) - export_symbols="$arg" - if test ! -f "$arg"; then - $echo "$modename: symbol file \`$arg' does not exist" - exit 1 - fi - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case "$arg" in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit 1 - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) rpath="$rpath $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; - esac - fi - prev= - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi - - prevarg="$arg" - - case "$arg" in - -all-static) - if test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 - continue - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: not more than one -exported-symbols argument allowed" - exit 1 - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -L*) - dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` - # We need an absolute path. - case "$dir" in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - absdir="$dir" - fi - dir="$absdir" - ;; - esac - case " $deplibs " in - *" $arg "*) ;; - *) deplibs="$deplibs $arg";; - esac - case " $lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir";; - esac - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2*) - dllsearchdir=`cd "$dir" && pwd || echo "$dir"` - case ":$dllsearchpath:" in - ::) dllsearchpath="$dllsearchdir";; - *":$dllsearchdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dllsearchdir";; - esac - ;; - esac - ;; - - -l*) - if test "$arg" = "-lc"; then - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) - # These systems don't actually have c library (as such) - continue - ;; - esac - elif test "$arg" = "-lm"; then - case "$host" in - *-*-cygwin* | *-*-beos*) - # These systems don't actually have math library (as such) - continue - ;; - esac - fi - deplibs="$deplibs $arg" - ;; - - -module) - module=yes - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -o) prev=output ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` - # We need an absolute path. - case "$dir" in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit 1 - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -static) - # If we have no pic_flag, then this is the same as -all-static. - if test -z "$pic_flag" && test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - # Some other compiler flag. - -* | +*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - ;; - - *.o | *.obj | *.a | *.lib) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A library object. - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` - prev= - fi - libobjs="$libobjs $arg" - ;; - - *.la) - # A libtool-controlled library. - - dlname= - libdir= - library_names= - old_library= - - # Check to see that this really is a libtool archive. - if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 - exit 1 - fi - - # If the library was installed with an old release of libtool, - # it will not redefine variable installed. - installed=yes - - # Read the .la file - # If there is no directory component, then add one. - case "$arg" in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 - exit 1 - fi - - # Find the relevant object directory and library name. - name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` - - if test "X$installed" = Xyes; then - dir="$libdir" - else - dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$arg"; then - dir="$objdir" - else - dir="$dir/$objdir" - fi - fi - - if test -n "$dependency_libs"; then - # Extract -R and -L from dependency_libs - temp_deplibs= - for deplib in $dependency_libs; do - case "$deplib" in - -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` - case " $rpath $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - -L*) case "$compile_command $temp_deplibs " in - *" $deplib "*) ;; - *) temp_deplibs="$temp_deplibs $deplib";; - esac - temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'` - case " $lib_search_path " in - *" $temp_dir "*) ;; - *) lib_search_path="$lib_search_path $temp_dir";; - esac - ;; - *) temp_deplibs="$temp_deplibs $deplib";; - esac - done - dependency_libs="$temp_deplibs" - fi - - if test -z "$libdir"; then - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $dir/$old_library" - old_convenience="$old_convenience $dir/$old_library" - deplibs="$deplibs$dependency_libs" - compile_command="$compile_command $dir/$old_library$dependency_libs" - finalize_command="$finalize_command $dir/$old_library$dependency_libs" - continue - fi - - # This library was specified with -dlopen. - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking statically, - # we need to preload. - prev=dlprefiles - else - # We should not create a dependency on this library, but we - # may need any libraries it requires. - compile_command="$compile_command$dependency_libs" - finalize_command="$finalize_command$dependency_libs" - prev= - continue - fi - fi - - # The library was specified with -dlpreopen. - if test "$prev" = dlprefiles; then - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - dlprefiles="$dlprefiles $dir/$old_library" - else - dlprefiles="$dlprefiles $dir/$linklib" - fi - prev= - fi - - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - link_against_libtool_libs="$link_against_libtool_libs $arg" - if test -n "$shlibpath_var"; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *) temp_rpath="$temp_rpath $dir" ;; - esac - fi - - # We need an absolute path. - case "$dir" in - [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - absdir="$dir" - fi - ;; - esac - - # This is the magic to use -rpath. - # Skip directories that are in the system default run-time - # search path, unless they have been requested with -R. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - - lib_linked=yes - case "$hardcode_action" in - immediate | unsupported) - if test "$hardcode_direct" = no; then - compile_command="$compile_command $dir/$linklib" - deplibs="$deplibs $dir/$linklib" - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2*) - dllsearchdir=`cd "$dir" && pwd || echo "$dir"` - if test -n "$dllsearchpath"; then - dllsearchpath="$dllsearchpath:$dllsearchdir" - else - dllsearchpath="$dllsearchdir" - fi - ;; - esac - elif test "$hardcode_minus_L" = no; then - case "$host" in - *-*-sunos*) - compile_shlibpath="$compile_shlibpath$dir:" - ;; - esac - case "$compile_command " in - *" -L$dir "*) ;; - *) compile_command="$compile_command -L$dir";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -L$dir -l$name" - elif test "$hardcode_shlibpath_var" = no; then - case ":$compile_shlibpath:" in - *":$dir:"*) ;; - *) compile_shlibpath="$compile_shlibpath$dir:";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -l$name" - else - lib_linked=no - fi - ;; - - relink) - if test "$hardcode_direct" = yes; then - compile_command="$compile_command $absdir/$linklib" - deplibs="$deplibs $absdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - case "$compile_command " in - *" -L$absdir "*) ;; - *) compile_command="$compile_command -L$absdir";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -L$absdir -l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case ":$compile_shlibpath:" in - *":$absdir:"*) ;; - *) compile_shlibpath="$compile_shlibpath$absdir:";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -l$name" - else - lib_linked=no - fi - ;; - - *) - lib_linked=no - ;; - esac - - if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" - exit 1 - fi - - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then - finalize_command="$finalize_command $libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - case "$finalize_command " in - *" -L$libdir "*) ;; - *) finalize_command="$finalize_command -L$libdir";; - esac - finalize_command="$finalize_command -l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case ":$finalize_shlibpath:" in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:";; - esac - finalize_command="$finalize_command -l$name" - else - # We cannot seem to hardcode it, guess we'll fake it. - case "$finalize_command " in - *" -L$dir "*) ;; - *) finalize_command="$finalize_command -L$libdir";; - esac - finalize_command="$finalize_command -l$name" - fi - else - # Transform directly to old archives if we don't build new libraries. - if test -n "$pic_flag" && test -z "$old_library"; then - $echo "$modename: cannot find static library for \`$arg'" 1>&2 - exit 1 - fi - - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_command="$compile_command $dir/$linklib" - finalize_command="$finalize_command $dir/$linklib" - else - case "$compile_command " in - *" -L$dir "*) ;; - *) compile_command="$compile_command -L$dir";; - esac - compile_command="$compile_command -l$name" - case "$finalize_command " in - *" -L$dir "*) ;; - *) finalize_command="$finalize_command -L$dir";; - esac - finalize_command="$finalize_command -l$name" - fi - fi - - # Add in any libraries that this one depends upon. - compile_command="$compile_command$dependency_libs" - finalize_command="$finalize_command$dependency_libs" - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - ;; - esac - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - done - - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` - libobjs_save="$libobjs" - - case "$output" in - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - - *.a | *.lib) - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 - exit 1 - fi - - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 - fi - - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 - fi - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - ;; - - *.la) - # Make sure we only generate libraries of the form `libNAME.la'. - case "$outputname" in - lib*) - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - eval libname=\"$libname_spec\" - ;; - *) - if test "$module" = no; then - $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - eval libname=\"$libname_spec\" - else - libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - fi - ;; - esac - - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi - - if test -n "$objs"; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 - exit 1 - fi - - # How the heck are we supposed to write a wrapper for a shared library? - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 - exit 1 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 - fi - - set dummy $rpath - if test $# -gt 2; then - $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 - fi - install_libdir="$2" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - libext=al - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - dependency_libs="$deplibs" - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 - fi - else - - # Parse the version information argument. - IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - IFS="$save_ifs" - - if test -n "$8"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - current="$2" - revision="$3" - age="$4" - - # Check that each of the things are valid numbers. - case "$current" in - 0 | [1-9] | [1-9][0-9]*) ;; - *) - $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - case "$revision" in - 0 | [1-9] | [1-9][0-9]*) ;; - *) - $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - case "$age" in - 0 | [1-9] | [1-9][0-9]*) ;; - *) - $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - if test $age -gt $current; then - $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case "$version_type" in - none) ;; - - irix) - major=`expr $current - $age + 1` - versuffix="$major.$revision" - verstring="sgi$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test $loop != 0; do - iface=`expr $revision - $loop` - loop=`expr $loop - 1` - verstring="sgi$major.$iface:$verstring" - done - ;; - - linux) - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - ;; - - osf) - major=`expr $current - $age` - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test $loop != 0; do - iface=`expr $current - $loop` - loop=`expr $loop - 1` - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current"; - ;; - - windows) - # Like Linux, but with '-' rather than '.', since we only - # want one extension on Windows 95. - major=`expr $current - $age` - versuffix="-$major-$age-$revision" - ;; - - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - verstring="0.0" - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - dependency_libs="$deplibs" - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody*) - # rhapsody is a little odd... - deplibs="$deplibs -framework System" - ;; - *) - # Add libc to deplibs on all other systems. - deplibs="$deplibs -lc" - ;; - esac - fi - - # Create the output directory, or remove our outputs if we need to. - if test -d $output_objdir; then - $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" - $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* - else - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test $status -ne 0 && test ! -d $output_objdir; then - exit $status - fi - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` - fi - - if test "$build_libtool_libs" = yes; then - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case "$deplibs_check_method" in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behaviour. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $rm conftest.c - cat > conftest.c </dev/null` - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null \ - | grep " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | sed 's/.* -> //'` - case "$potliblink" in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ - | sed 10q \ - | egrep "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - echo "*** Warning: This library needs some functionality provided by $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ - -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | - grep . >/dev/null; then - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - fi - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - echo "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - # Get the real and link names of the library. - eval library_names=\"$library_names_spec\" - set dummy $library_names - realname="$2" - shift; shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - lib="$output_objdir/$realname" - for link - do - linknames="$linknames $link" - done - - # Ensure that we have .o objects for linkers which dislike .lo - # (e.g. aix) in case we are running --disable-static - for obj in $libobjs; do - xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$obj"; then - xdir="." - else - xdir="$xdir" - fi - baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` - if test ! -f $xdir/$oldobj; then - $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" - $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? - fi - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - eval cmds=\"$export_symbols_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - if test -n "$export_symbols_regex"; then - $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" - $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - $show "$mv \"${export_symbols}T\" \"$export_symbols\"" - $run eval '$mv "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' - fi - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "mkdir $gentop" - $run mkdir "$gentop" - status=$? - if test $status -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - for xlib in $convenience; do - # Extract the objects. - case "$xlib" in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "mkdir $xdir" - $run mkdir "$xdir" - status=$? - if test $status -ne 0 && test ! -d "$xdir"; then - exit $status - fi - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - - libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` - done - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linkopts="$linkopts $flag" - fi - - # Do each of the archive commands. - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval cmds=\"$archive_expsym_cmds\" - else - eval cmds=\"$archive_cmds\" - fi - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - *.lo | *.o | *.obj) - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 - exit 1 - fi - - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 - fi - - case "$output" in - *.lo) - if test -n "$objs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit 1 - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $run $rm $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${obj}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "mkdir $gentop" - $run mkdir "$gentop" - status=$? - if test $status -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - for xlib in $convenience; do - # Extract the objects. - case "$xlib" in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "mkdir $xdir" - $run mkdir "$xdir" - status=$? - if test $status -ne 0 && test ! -d "$xdir"; then - exit $status - fi - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - - reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` - done - fi - fi - - # Create the old-style object. - reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" - - output="$obj" - eval cmds=\"$reload_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit 0 - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - $show "echo timestamp > $libobj" - $run eval "echo timestamp > $libobj" || exit $? - exit 0 - fi - - if test -n "$pic_flag"; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - eval cmds=\"$reload_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - else - # Just create a symlink. - $show $rm $libobj - $run $rm $libobj - xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$libobj"; then - xdir="." - else - xdir="$xdir" - fi - baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` - oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` - $show "(cd $xdir && $LN_S $oldobj $baseobj)" - $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? - fi - - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit 0 - ;; - - # Anything else should be a program. - *) - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 - fi - - if test "$preload" = yes; then - if test "$dlopen" = unknown && test "$dlopen_self" = unknown && - test "$dlopen_self_static" = unknown; then - $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." - fi - fi - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$compile_rpath " in - *" $libdir "*) ;; - *) compile_rpath="$compile_rpath $libdir" ;; - esac - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi - - # Create the binary in the object directory, then wrap it. - if test ! -d $output_objdir; then - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test $status -ne 0 && test ! -d $output_objdir; then - exit $status - fi - fi - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - fi - - dlsyms= - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - dlsyms="${outputname}S.c" - else - $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 - fi - fi - - if test -n "$dlsyms"; then - case "$dlsyms" in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${outputname}.nm" - - $show "$rm $nlist ${nlist}S ${nlist}T" - $run $rm "$nlist" "${nlist}S" "${nlist}T" - - # Parse the name list into a source file. - $show "creating $output_objdir/$dlsyms" - - test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ -/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ -/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -/* Prevent the only kind of declaration conflicts we can make. */ -#define lt_preloaded_symbols some_other_symbol - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - $show "generating symbol list for \`$output'" - - test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - for arg in $progfiles; do - $show "extracting global C symbols from \`$arg'" - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - if test -n "$export_symbols_regex"; then - $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$output.exp" - $run $rm $export_symbols - $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - else - $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' - $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' - $run eval 'mv "$nlist"T "$nlist"' - fi - fi - - for arg in $dlprefiles; do - $show "extracting global C symbols from \`$arg'" - name=`echo "$arg" | sed -e 's%^.*/%%'` - $run eval 'echo ": $name " >> "$nlist"' - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -z "$run"; then - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $mv "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then - : - else - grep -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$dlsyms" - fi - - $echo >> "$output_objdir/$dlsyms" "\ - -#undef lt_preloaded_symbols - -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[] = -{\ -" - - sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ - -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ - < "$nlist" >> "$output_objdir/$dlsyms" - - $echo >> "$output_objdir/$dlsyms" "\ - {0, (lt_ptr_t) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - fi - - pic_flag_for_symtable= - case "$host" in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; - esac;; - *-*-hpux*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag -DPIC";; - esac - esac - - # Now compile the dynamic symbol file. - $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" - $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? - - # Clean up the generated files. - $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" - $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" - - # Transform the symbol file into the correct name. - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit 1 - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" - status=$? - - # Delete the generated files. - if test -n "$dlsyms"; then - $show "$rm $output_objdir/${outputname}S.${objext}" - $run $rm "$output_objdir/${outputname}S.${objext}" - fi - - exit $status - fi - - if test -n "$shlibpath_var"; then - # We should set the shlibpath_var - rpath= - for dir in $temp_rpath; do - case "$dir" in - [\\/]* | [A-Za-z]:[\\/]*) - # Absolute path. - rpath="$rpath$dir:" - ;; - *) - # Relative path: add a thisdir entry. - rpath="$rpath\$thisdir/$dir:" - ;; - esac - done - temp_rpath="$rpath" - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 - $echo "$modename: \`$output' will be relinked during installation" 1>&2 - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname - - $show "$link_command" - $run eval "$link_command" || exit $? - - # Now create the wrapper script. - $show "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $echo for shipping. - if test "X$echo" = "X$SHELL $0 --fallback-echo"; then - case "$0" in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; - *) qecho="$SHELL `pwd`/$0 --fallback-echo";; - esac - qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` - fi - - # Only actually do things if our run command is non-null. - if test -z "$run"; then - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) output=`echo $output|sed 's,.exe$,,'` ;; - esac - $rm $output - trap "$rm $output; exit 1" 1 2 15 - - $echo > $output "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e 1s/^X//' -sed_quote_subst='$sed_quote_subst' - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variable: - link_against_libtool_libs='$link_against_libtool_libs' -else - # When we are sourced in execute mode, \$file and \$echo are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - echo=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$echo works! - : - else - # Restart under the correct shell, and then maybe \$echo will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ -" - $echo >> $output "\ - - # Find the directory that this script lives in. - thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` - done - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - echo >> $output "\ - program=lt-'$outputname' - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || \\ - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $mkdir \"\$progdir\" - else - $rm \"\$progdir/\$file\" - fi" - - echo >> $output "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if (cd \"\$thisdir\" && eval \$relink_command); then : - else - $rm \"\$progdir/\$file\" - exit 1 - fi - fi - - $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $rm \"\$progdir/\$program\"; - $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $rm \"\$progdir/\$file\" - fi" - else - echo >> $output "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - echo >> $output "\ - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $echo >> $output "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` - - export $shlibpath_var -" - fi - - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $echo >> $output "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - $echo >> $output "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. -" - case $host in - # win32 systems need to use the prog path for dll - # lookup to work - *-*-cygwin*) - $echo >> $output "\ - exec \$progdir/\$program \${1+\"\$@\"} -" - ;; - - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $echo >> $output "\ - exec \$progdir\\\\\$program \${1+\"\$@\"} -" - ;; - - *) - $echo >> $output "\ - # Export the path to the program. - PATH=\"\$progdir:\$PATH\" - export PATH - - exec \$program \${1+\"\$@\"} -" - ;; - esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" - exit 1 - fi - else - # The program doesn't exist. - \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 - \$echo \"This script is just a wrapper for \$program.\" 1>&2 - echo \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" - chmod +x $output - fi - exit 0 - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "mkdir $gentop" - $run mkdir "$gentop" - status=$? - if test $status -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - # Add in members from convenience archives. - for xlib in $addlibs; do - # Extract the objects. - case "$xlib" in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "mkdir $xdir" - $run mkdir "$xdir" - status=$? - if test $status -ne 0 && test ! -d "$xdir"; then - exit $status - fi - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - - oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` - done - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - eval cmds=\"$old_archive_from_new_cmds\" - else - # Ensure that we have .o objects in place in case we decided - # not to build a shared library, and have fallen back to building - # static libs even though --disable-static was passed! - for oldobj in $oldobjs; do - if test ! -f $oldobj; then - xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$oldobj"; then - xdir="." - else - xdir="$xdir" - fi - baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` - obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` - $show "(cd $xdir && ${LN_S} $obj $baseobj)" - $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? - fi - done - - eval cmds=\"$old_archive_cmds\" - fi - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$generated"; then - $show "${rm}r$generated" - $run ${rm}r$generated - fi - - # Now create the libtool archive. - case "$output" in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - $show "creating $output" - - if test -n "$xrpath"; then - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - done - dependency_libs="$temp_xrpath $dependency_libs" - fi - - # Only create the output if not a dry run. - if test -z "$run"; then - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - fi - $rm $output - $echo > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$dlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Directory that this library needs to be installed in: -libdir='$install_libdir'\ -" - done - fi - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" - $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? - ;; - esac - exit 0 - ;; - - # libtool install mode - install) - modename="$modename: install" - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then - # Aesthetically quote it. - arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$arg " - arg="$1" - shift - else - install_prog= - arg="$nonopt" - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog$arg" - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - for arg - do - if test -n "$dest"; then - files="$files $dest" - dest="$arg" - continue - fi - - case "$arg" in - -d) isdir=yes ;; - -f) prev="-f" ;; - -g) prev="-g" ;; - -m) prev="-m" ;; - -o) prev="-o" ;; - -s) - stripme=" -s" - continue - ;; - -*) ;; - - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else - dest="$arg" - continue - fi - ;; - esac - - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog $arg" - done - - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test -z "$files"; then - if test -z "$dest"; then - $echo "$modename: no file or destination specified" 1>&2 - else - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 - exit 1 - fi - - # Strip any trailing slash from the destination. - dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` - test "X$destdir" = "X$dest" && destdir=. - destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` - - # Not a directory, so check to see that there is only one file specified. - set dummy $files - if test $# -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - fi - case "$destdir" in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case "$file" in - *.lo) ;; - *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case "$file" in - *.a | *.lib) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - library_names= - old_library= - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" - test "X$dir" = "X$file/" && dir= - dir="$dir$objdir" - - # See the names of the shared library. - set dummy $library_names - if test -n "$2"; then - realname="$2" - shift - shift - - # Install the shared library and build the symlinks. - $show "$install_prog $dir/$realname $destdir/$realname" - $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? - - if test $# -gt 0; then - # Delete the old symlinks, and create new ones. - for linkname - do - if test "$linkname" != "$realname"; then - $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - fi - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - eval cmds=\"$postinstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - # Install the pseudo-library for information purposes. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - instname="$dir/$name"i - $show "$install_prog $instname $destdir/$name" - $run eval "$install_prog $instname $destdir/$name" || exit $? - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case "$destfile" in - *.lo) - staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` - ;; - *.o | *.obj) - staticdest="$destfile" - destfile= - ;; - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - esac - - # Install the libtool object if requested. - if test -n "$destfile"; then - $show "$install_prog $file $destfile" - $run eval "$install_prog $file $destfile" || exit $? - fi - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` - - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi - exit 0 - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # Do a test to see if this is really a libtool program. - if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - link_against_libtool_libs= - relink_command= - - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Check the variables that should have been set. - if test -z "$link_against_libtool_libs"; then - $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 - exit 1 - fi - - finalize=yes - for lib in $link_against_libtool_libs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - # If there is no directory component, then add one. - case "$lib" in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - fi - libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" - if test -n "$libdir" && test ! -f "$libfile"; then - $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 - finalize=no - fi - done - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - if test "$finalize" = yes && test -z "$run"; then - tmpdir="/tmp" - test -n "$TMPDIR" && tmpdir="$TMPDIR" - tmpdir="$tmpdir/libtool-$$" - if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : - else - $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 - continue - fi - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` - - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - ${rm}r "$tmpdir" - continue - fi - file="$outputname" - else - $echo "$modename: warning: cannot relink \`$file'" 1>&2 - fi - else - # Install the binary that we compiled earlier. - file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - $show "$install_prog$stripme $file $destfile" - $run eval "$install_prog\$stripme \$file \$destfile" || exit $? - test -n "$outputname" && ${rm}r "$tmpdir" - ;; - esac - done - - for file in $staticlibs; do - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? - - # Do each command in the postinstall commands. - eval cmds=\"$old_postinstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$future_libdirs"; then - $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 - fi - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" - exec $SHELL $0 --finish$current_libdirs - exit 1 - fi - - exit 0 - ;; - - # libtool finish mode - finish) - modename="$modename: finish" - libdirs="$nonopt" - admincmds= - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - eval cmds=\"$finish_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || admincmds="$admincmds - $cmd" - done - IFS="$save_ifs" - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $run eval "$cmds" || admincmds="$admincmds - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - test "$show" = : && exit 0 - - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - echo " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use \`-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - echo " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - echo " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - echo - echo "See any operating system documentation about shared libraries for" - echo "more information, such as the ld(1) and ld.so(8) manual pages." - echo "----------------------------------------------------------------------" - exit 0 - ;; - - # libtool execute mode - execute) - modename="$modename: execute" - - # The first argument is the command name. - cmd="$nonopt" - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" - exit 1 - fi - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - if test ! -f "$file"; then - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - dir= - case "$file" in - *.la) - # Check to see that this really is a libtool archive. - if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Read the libtool library. - dlname= - library_names= - - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" - continue - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit 1 - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - ;; - - *) - $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case "$file" in - -*) ;; - *) - # Do a test to see if this is really a libtool program. - if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` - args="$args \"$file\"" - done - - if test -z "$run"; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved enviroment variables - if test "${save_LC_ALL+set}" = set; then - LC_ALL="$save_LC_ALL"; export LC_ALL - fi - if test "${save_LANG+set}" = set; then - LANG="$save_LANG"; export LANG - fi - - # Now actually exec the command. - eval "exec \$cmd$args" - - $echo "$modename: cannot exec \$cmd$args" - exit 1 - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" - $echo "export $shlibpath_var" - fi - $echo "$cmd$args" - exit 0 - fi - ;; - - # libtool uninstall mode - uninstall) - modename="$modename: uninstall" - rm="$nonopt" - files= - - for arg - do - case "$arg" in - -*) rm="$rm $arg" ;; - *) files="$files $arg" ;; - esac - done - - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - for file in $files; do - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - rmfiles="$file" - - case "$name" in - *.la) - # Possibly a libtool archive, so verify it. - if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - . $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $dir/$n" - done - test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" - - $show "$rm $rmfiles" - $run $rm $rmfiles - - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - eval cmds=\"$postuninstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - done - IFS="$save_ifs" - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - eval cmds=\"$old_postuninstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - done - IFS="$save_ifs" - fi - - # FIXME: should reinstall the best remaining shared library. - fi - ;; - - *.lo) - if test "$build_old_libs" = yes; then - oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` - rmfiles="$rmfiles $dir/$oldobj" - fi - $show "$rm $rmfiles" - $run $rm $rmfiles - ;; - - *) - $show "$rm $rmfiles" - $run $rm $rmfiles - ;; - esac - done - exit 0 - ;; - - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 - exit 1 - ;; - esac - - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 - exit 1 -fi # test -z "$show_help" - -# We need to display help for each of the modes. -case "$mode" in -"") $echo \ -"Usage: $modename [OPTION]... [MODE-ARG]... - -Provide generalized library-building support services. - - --config show all configuration variables - --debug enable verbose shell tracing --n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --finish same as \`--mode=finish' - --help display this help message and exit - --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] - --quiet same as \`--silent' - --silent don't print informational messages - --version print version information - -MODE must be one of the following: - - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for -a more detailed description of MODE." - exit 0 - ;; - -compile) - $echo \ -"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -static always build a \`.o' file suitable for static linking - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - -execute) - $echo \ -"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - -finish) - $echo \ -"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - -install) - $echo \ -"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - -link) - $echo \ -"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -static do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - -uninstall) - $echo \ -"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - -*) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; -esac - -echo -$echo "Try \`$modename --help' for more information about other modes." - -exit 0 - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: Index: xc/extras/freetype2/builds/cygwin/ltconfig diff -u xc/extras/freetype2/builds/cygwin/ltconfig:1.1.1.1 xc/extras/freetype2/builds/cygwin/ltconfig:removed --- xc/extras/freetype2/builds/cygwin/ltconfig:1.1.1.1 Fri Dec 8 16:26:07 2000 +++ xc/extras/freetype2/builds/cygwin/ltconfig Fri Jan 18 15:21:41 2002 @@ -1,3114 +0,0 @@ -#! /bin/sh - -# ltconfig - Create a system-specific libtool. -# Copyright (C) 1996-1999 Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# A lot of this script is taken from autoconf-2.10. - -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} -echo=echo -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -else - # Restart under the correct shell. - exec "$SHELL" "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat </dev/null`} - case X$UNAME in - *-DOS) PATH_SEPARATOR=';' ;; - *) PATH_SEPARATOR=':' ;; - esac -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -if test "X${echo_test_string+set}" != Xset; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if (echo_test_string="`eval $cmd`") 2>/dev/null && - echo_test_string="`eval $cmd`" && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then - break - fi - done -fi - -if test "X`($echo '\t') 2>/dev/null`" != 'X\t' || - test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH /usr/ucb; do - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$save_ifs" - - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running ltconfig again with it. - ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} - else - # Try using printf. - echo='printf "%s\n"' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - # Cool, printf works - : - elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && - test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL" - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL $0 --fallback-echo" - elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && - test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - echo="$CONFIG_SHELL $0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "$0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' -sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# The name of this program. -progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` - -# Constants: -PROGRAM=ltconfig -PACKAGE=libtool -VERSION=1.3.5 -TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)" -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -rm="rm -f" - -help="Try \`$progname --help' for more information." - -# Global variables: -default_ofile=libtool -can_build_shared=yes -enable_shared=yes -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -enable_static=yes -enable_fast_install=yes -enable_dlopen=unknown -enable_win32_dll=no -ltmain= -silent= -srcdir= -ac_config_guess= -ac_config_sub= -host= -nonopt= -ofile="$default_ofile" -verify_host=yes -with_gcc=no -with_gnu_ld=no -need_locks=yes -ac_ext=c -objext=o -libext=a -exeext= -cache_file= - -old_AR="$AR" -old_CC="$CC" -old_CFLAGS="$CFLAGS" -old_CPPFLAGS="$CPPFLAGS" -old_LDFLAGS="$LDFLAGS" -old_LD="$LD" -old_LN_S="$LN_S" -old_LIBS="$LIBS" -old_NM="$NM" -old_RANLIB="$RANLIB" -old_DLLTOOL="$DLLTOOL" -old_OBJDUMP="$OBJDUMP" -old_AS="$AS" - -# Parse the command line options. -args= -prev= -for option -do - case "$option" in - -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - eval "$prev=\$option" - prev= - continue - fi - - case "$option" in - --help) cat <&2 - echo "$help" 1>&2 - exit 1 - ;; - - *) - if test -z "$ltmain"; then - ltmain="$option" - elif test -z "$host"; then -# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 -# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then -# echo "$progname: warning \`$option' is not a valid host type" 1>&2 -# fi - host="$option" - else - echo "$progname: too many arguments" 1>&2 - echo "$help" 1>&2 - exit 1 - fi ;; - esac -done - -if test -z "$ltmain"; then - echo "$progname: you must specify a LTMAIN file" 1>&2 - echo "$help" 1>&2 - exit 1 -fi - -if test ! -f "$ltmain"; then - echo "$progname: \`$ltmain' does not exist" 1>&2 - echo "$help" 1>&2 - exit 1 -fi - -# Quote any args containing shell metacharacters. -ltconfig_args= -for arg -do - case "$arg" in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ltconfig_args="$ltconfig_args '$arg'" ;; - *) ltconfig_args="$ltconfig_args $arg" ;; - esac -done - -# A relevant subset of AC_INIT. - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 5 compiler messages saved in config.log -# 6 checking for... messages and results -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>>./config.log - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi -if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi - -if test -n "$cache_file" && test -r "$cache_file"; then - echo "loading cache $cache_file within ltconfig" - . $cache_file -fi - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - -if test -z "$srcdir"; then - # Assume the source directory is the same one as the path to LTMAIN. - srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` - test "$srcdir" = "$ltmain" && srcdir=. -fi - -trap "$rm conftest*; exit 1" 1 2 15 -if test "$verify_host" = yes; then - # Check for config.guess and config.sub. - ac_aux_dir= - for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/config.guess; then - ac_aux_dir=$ac_dir - break - fi - done - if test -z "$ac_aux_dir"; then - echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 - echo "$help" 1>&2 - exit 1 - fi - ac_config_guess=$ac_aux_dir/config.guess - ac_config_sub=$ac_aux_dir/config.sub - - # Make sure we can run config.sub. - if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : - else - echo "$progname: cannot run $ac_config_sub" 1>&2 - echo "$help" 1>&2 - exit 1 - fi - - echo $ac_n "checking host system type""... $ac_c" 1>&6 - - host_alias=$host - case "$host_alias" in - "") - if host_alias=`$SHELL $ac_config_guess`; then : - else - echo "$progname: cannot guess host type; you must specify one" 1>&2 - echo "$help" 1>&2 - exit 1 - fi ;; - esac - host=`$SHELL $ac_config_sub $host_alias` - echo "$ac_t$host" 1>&6 - - # Make sure the host verified. - test -z "$host" && exit 1 - -elif test -z "$host"; then - echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 - echo "$help" 1>&2 - exit 1 -else - host_alias=$host -fi - -# Transform linux* to *-*-linux-gnu*, to support old configure scripts. -case "$host_os" in -linux-gnu*) ;; -linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` -esac - -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - -case "$host_os" in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR cru $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -# Set a sane default for `AR'. -test -z "$AR" && AR=ar - -# Set a sane default for `OBJDUMP'. -test -z "$OBJDUMP" && OBJDUMP=objdump - -# If RANLIB is not set, then run the test. -if test "${RANLIB+set}" != "set"; then - result=no - - echo $ac_n "checking for ranlib... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then - RANLIB="ranlib" - result="ranlib" - break - fi - done - IFS="$save_ifs" - - echo "$ac_t$result" 1>&6 -fi - -if test -n "$RANLIB"; then - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" -fi - -# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$AS" && AS=as - -# Check to see if we are using GCC. -if test "$with_gcc" != yes || test -z "$CC"; then - # If CC is not set, then try to find GCC or a usable CC. - if test -z "$CC"; then - echo $ac_n "checking for gcc... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then - CC="gcc" - break - fi - done - IFS="$save_ifs" - - if test -n "$CC"; then - echo "$ac_t$CC" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - fi - - # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". - if test -z "$CC"; then - echo $ac_n "checking for cc... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - cc_rejected=no - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/cc || test -f $dir/cc$ac_exeext; then - if test "$dir/cc" = "/usr/ucb/cc"; then - cc_rejected=yes - continue - fi - CC="cc" - break - fi - done - IFS="$save_ifs" - if test $cc_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $CC - shift - if test $# -gt 0; then - # We chose a different compiler from the bogus one. - # However, it has the same name, so the bogon will be chosen - # first if we set CC to just the name; use the full file name. - shift - set dummy "$dir/cc" "$@" - shift - CC="$@" - fi - fi - - if test -n "$CC"; then - echo "$ac_t$CC" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - - if test -z "$CC"; then - echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 - exit 1 - fi - fi - - # Now see if the compiler is really GCC. - with_gcc=no - echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 - echo "$progname:581: checking whether we are using GNU C" >&5 - - $rm conftest.c - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - with_gcc=yes - fi - $rm conftest.c - echo "$ac_t$with_gcc" 1>&6 -fi - -# Allow CC to be a program name with arguments. -set dummy $CC -compiler="$2" - -echo $ac_n "checking for object suffix... $ac_c" 1>&6 -$rm conftest* -echo 'int i = 1;' > conftest.c -echo "$progname:603: checking for object suffix" >& 5 -if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - - for ac_file in conftest.*; do - case $ac_file in - *.c) ;; - *) objext=`echo $ac_file | sed -e s/conftest.//` ;; - esac - done -else - cat conftest.err 1>&5 - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 -fi -$rm conftest* -echo "$ac_t$objext" 1>&6 - -echo $ac_n "checking for executable suffix... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_cv_exeext="no" - $rm conftest* - echo 'main () { return 0; }' > conftest.c - echo "$progname:629: checking for executable suffix" >& 5 - if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - - for ac_file in conftest.*; do - case $ac_file in - *.c | *.err | *.$objext ) ;; - *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; - esac - done - else - cat conftest.err 1>&5 - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 - fi - $rm conftest* -fi -if test "X$ac_cv_exeext" = Xno; then - exeext="" -else - exeext="$ac_cv_exeext" -fi -echo "$ac_t$ac_cv_exeext" 1>&6 - -echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 -pic_flag= -special_shlib_compile_flags= -wl= -link_static_flag= -no_builtin_flag= - -if test "$with_gcc" = yes; then - wl='-Wl,' - link_static_flag='-static' - - case "$host_os" in - beos* | irix5* | irix6* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - aix*) - # Below there is a dirty hack to force normal static linking with -ldl - # The problem is because libdl dynamically linked with both libc and - # libC (AIX C++ library), which obviously doesn't included in libraries - # list by gcc. This cause undefined symbols with -static flags. - # This hack allows C programs to be linked with "-static -ldl", but - # we not sure about C++ programs. - link_static_flag="$link_static_flag ${wl}-lC" - ;; - cygwin* | mingw* | os2*) - # We can build DLLs from non-PIC. - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - pic_flag='-m68020 -resident32 -malways-restore-a4' - ;; - sysv4*MP*) - if test -d /usr/nec; then - pic_flag=-Kconform_pic - fi - ;; - *) - pic_flag='-fPIC' - ;; - esac -else - # PORTME Check for PIC flags for the system compiler. - case "$host_os" in - aix3* | aix4*) - # All AIX code is PIC. - link_static_flag='-bnso -bI:/lib/syscalls.exp' - ;; - - hpux9* | hpux10* | hpux11*) - # Is there a better link_static_flag that works with the bundled CC? - wl='-Wl,' - link_static_flag="${wl}-a ${wl}archive" - pic_flag='+Z' - ;; - - irix5* | irix6*) - wl='-Wl,' - link_static_flag='-non_shared' - # PIC (with -KPIC) is the default. - ;; - - cygwin* | mingw* | os2*) - # We can build DLLs from non-PIC. - ;; - - osf3* | osf4* | osf5*) - # All OSF/1 code is PIC. - wl='-Wl,' - link_static_flag='-non_shared' - ;; - - sco3.2v5*) - pic_flag='-Kpic' - link_static_flag='-dn' - special_shlib_compile_flags='-belf' - ;; - - solaris*) - pic_flag='-KPIC' - link_static_flag='-Bstatic' - wl='-Wl,' - ;; - - sunos4*) - pic_flag='-PIC' - link_static_flag='-Bstatic' - wl='-Qoption ld ' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - pic_flag='-KPIC' - link_static_flag='-Bstatic' - wl='-Wl,' - ;; - - uts4*) - pic_flag='-pic' - link_static_flag='-Bstatic' - ;; - sysv4*MP*) - if test -d /usr/nec ;then - pic_flag='-Kconform_pic' - link_static_flag='-Bstatic' - fi - ;; - *) - can_build_shared=no - ;; - esac -fi - -if test -n "$pic_flag"; then - echo "$ac_t$pic_flag" 1>&6 - - # Check to make sure the pic_flag actually works. - echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 - $rm conftest* - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $pic_flag -DPIC" - echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 - if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - - case "$host_os" in - hpux9* | hpux10* | hpux11*) - # On HP-UX, both CC and GCC only warn that PIC is supported... then they - # create non-PIC objects. So, if there were any warnings, we assume that - # PIC is not supported. - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - can_build_shared=no - pic_flag= - else - echo "$ac_t"yes 1>&6 - pic_flag=" $pic_flag" - fi - ;; - *) - echo "$ac_t"yes 1>&6 - pic_flag=" $pic_flag" - ;; - esac - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - can_build_shared=no - pic_flag= - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* -else - echo "$ac_t"none 1>&6 -fi - -# Check to see if options -o and -c are simultaneously supported by compiler -echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 -$rm -r conftest 2>/dev/null -mkdir conftest -cd conftest -$rm conftest* -echo "int some_variable = 0;" > conftest.c -mkdir out -# According to Tom Tromey, Ian Lance Taylor reported there are C compilers -# that will create temporary files in the current directory regardless of -# the output directory. Thus, making CWD read-only will cause this test -# to fail, enabling locking or at least warning the user not to do parallel -# builds. -chmod -w . -save_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -o out/conftest2.o" -echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 -if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s out/conftest.err; then - echo "$ac_t"no 1>&6 - compiler_c_o=no - else - echo "$ac_t"yes 1>&6 - compiler_c_o=yes - fi -else - # Append any errors to the config.log. - cat out/conftest.err 1>&5 - compiler_c_o=no - echo "$ac_t"no 1>&6 -fi -CFLAGS="$save_CFLAGS" -chmod u+w . -$rm conftest* out/* -rmdir out -cd .. -rmdir conftest -$rm -r conftest 2>/dev/null - -if test x"$compiler_c_o" = x"yes"; then - # Check to see if we can write to a .lo - echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 - $rm conftest* - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -c -o conftest.lo" - echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 -if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - compiler_o_lo=no - else - echo "$ac_t"yes 1>&6 - compiler_o_lo=yes - fi - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - compiler_o_lo=no - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* -else - compiler_o_lo=no -fi - -# Check to see if we can do hard links to lock some files if needed -hard_links="nottested" -if test "$compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6 - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$ac_t$hard_links" 1>&6 - $rm conftest* - if test "$hard_links" = no; then - echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 - need_locks=warn - fi -else - need_locks=no -fi - -if test "$with_gcc" = yes; then - # Check to see if options -fno-rtti -fno-exceptions are supported by compiler - echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 - $rm conftest* - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" - echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 - if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - compiler_rtti_exceptions=no - else - echo "$ac_t"yes 1>&6 - compiler_rtti_exceptions=yes - fi - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - compiler_rtti_exceptions=no - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* - - if test "$compiler_rtti_exceptions" = "yes"; then - no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' - else - no_builtin_flag=' -fno-builtin' - fi - -fi - -# Check for any special shared library compilation flags. -if test -n "$special_shlib_compile_flags"; then - echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 - if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : - else - echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 - can_build_shared=no - fi -fi - -echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 -$rm conftest* -echo 'main(){return(0);}' > conftest.c -save_LDFLAGS="$LDFLAGS" -LDFLAGS="$LDFLAGS $link_static_flag" -echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 -if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - echo "$ac_t$link_static_flag" 1>&6 -else - echo "$ac_t"none 1>&6 - link_static_flag= -fi -LDFLAGS="$save_LDFLAGS" -$rm conftest* - -if test -z "$LN_S"; then - # Check to see if we can use ln -s, or we need hard links. - echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 - $rm conftest.dat - if ln -s X conftest.dat 2>/dev/null; then - $rm conftest.dat - LN_S="ln -s" - else - LN_S=ln - fi - if test "$LN_S" = "ln -s"; then - echo "$ac_t"yes 1>&6 - else - echo "$ac_t"no 1>&6 - fi -fi - -# Make sure LD is an absolute path. -if test -z "$LD"; then - ac_prog=ld - if test "$with_gcc" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 - echo "$progname:991: checking for ld used by GCC" >&5 - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we are not using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac - elif test "$with_gnu_ld" = yes; then - echo $ac_n "checking for GNU ld... $ac_c" 1>&6 - echo "$progname:1015: checking for GNU ld" >&5 - else - echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 - echo "$progname:1018: checking for non-GNU ld" >&5 - fi - - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" - fi - - if test -n "$LD"; then - echo "$ac_t$LD" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - - if test -z "$LD"; then - echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 - exit 1 - fi -fi - -# Check to see if it really is or is not GNU ld. -echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 -# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - with_gnu_ld=yes -else - with_gnu_ld=no -fi -echo "$ac_t$with_gnu_ld" 1>&6 - -# See if the linker supports building shared libraries. -echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 - -allow_undefined_flag= -no_undefined_flag= -need_lib_prefix=unknown -need_version=unknown -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -archive_cmds= -archive_expsym_cmds= -old_archive_from_new_cmds= -export_dynamic_flag_spec= -whole_archive_flag_spec= -thread_safe_flag_spec= -hardcode_libdir_flag_spec= -hardcode_libdir_separator= -hardcode_direct=no -hardcode_minus_L=no -hardcode_shlibpath_var=unsupported -runpath_var= -always_export_symbols=no -export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' -# include_expsyms should be a list of space-separated symbols to be *always* -# included in the symbol list -include_expsyms= -# exclude_expsyms can be an egrep regular expression of symbols to exclude -# it will be wrapped by ` (' and `)$', so one must not match beginning or -# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', -# as well as any symbol that contains `d'. -exclude_expsyms="_GLOBAL_OFFSET_TABLE_" -# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out -# platforms (ab)use it in PIC code, but their linkers get confused if -# the symbol is explicitly referenced. Since portable code cannot -# rely on this symbol name, it's probably fine to never include it in -# preloaded symbol tables. - -case "$host_os" in -cygwin* | mingw*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$with_gcc" != yes; then - with_gnu_ld=no - fi - ;; - -esac - -ld_shlibs=yes -if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case "$host_os" in - aix3* | aix4*) - # On AIX, the GNU linker is very broken - ld_shlibs=no - cat <&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - ;; - - amigaos*) - archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - - # Samuel A. Falvo II reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can use - # them. - ld_shlibs=no - ;; - - beos*) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw*) - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - allow_undefined_flag=unsupported - always_export_symbols=yes - - # Extract the symbol export list from an `--export-all' def file, - # then regenerate the def file from the symbol export list, so that - # the compiled dll only exports the symbol export list. - # Be careful not to strip the DATA tag left by newer dlltools. - export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ - test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ - $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ - sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols' - - # If DATA tags from a recent dlltool are present, honour them! - archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ - _lt_hint=1; - cat $export_symbols | while read symbol; do - set dummy \$symbol; - case \$# in - 2) echo " \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;; - *) echo " \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;; - esac; - _lt_hint=`expr 1 + \$_lt_hint`; - done~ - test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ - test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ - $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ - $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ - $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ - $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ - $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' - - old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' - # can we support soname and/or expsyms with a.out? -oliva - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - case $host_os in - cygwin* | mingw*) - # dlltool doesn't understand --whole-archive et. al. - whole_archive_flag_spec= - ;; - *) - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - ;; - esac - fi -else - # PORTME fill in a description of your system's linker (not GNU ld) - case "$host_os" in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$with_gcc" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix4*) - hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' - hardcode_libdir_separator=':' - if test "$with_gcc" = yes; then - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct=yes - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - shared_flag='-shared' - else - shared_flag='${wl}-bM:SRE' - hardcode_direct=yes - fi - allow_undefined_flag=' ${wl}-berok' - archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' - archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' - case "$host_os" in aix4.[01]|aix4.[01].*) - # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on - always_export_symbols=yes ;; - esac - ;; - - amigaos*) - archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # see comment about different semantics on the GNU ld section - ld_shlibs=no - ;; - - cygwin* | mingw*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib /OUT:$oldlib$oldobjs' - fix_srcfile_path='`cygpath -w $srcfile`' - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9* | hpux10* | hpux11*) - case "$host_os" in - hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; - *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; - esac - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_minus_L=yes # Not in the search PATH, but as the default - # location of the library. - export_dynamic_flag_spec='${wl}-E' - ;; - - irix5* | irix6*) - if test "$with_gcc" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF - fi - hardcode_libdir_flag_spec='${wl}-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - openbsd*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' - ;; - - osf3*) - if test "$with_gcc" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # As osf3* with the addition of the -msym flag - if test "$with_gcc" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - rhapsody*) - archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flags_spec='-L$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - sco3.2v5*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case "$host_os" in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $linkopts' - else - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv5*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' - hardcode_libdir_flag_spec= - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4.2uw2*) - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' - hardcode_direct=yes - hardcode_minus_L=no - hardcode_shlibpath_var=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - unixware7*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac -fi -echo "$ac_t$ld_shlibs" 1>&6 -test "$ld_shlibs" = no && can_build_shared=no - -if test -z "$NM"; then - echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 - case "$NM" in - [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - NM="$ac_dir/nm -B" - break - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - NM="$ac_dir/nm -p" - break - else - NM=${NM="$ac_dir/nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - fi - fi - done - IFS="$ac_save_ifs" - test -z "$NM" && NM=nm - ;; - esac - echo "$ac_t$NM" 1>&6 -fi - -# Check for command to grab the raw symbol name followed by C symbol from nm. -echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - -# Transform an extracted symbol line into a proper C declaration -global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" - -# Define system-specific variables. -case "$host_os" in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw*) - symcode='[ABCDGISTW]' - ;; -hpux*) # Its linker distinguishes data from code symbols - global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" - ;; -irix*) - symcode='[BCDEGRST]' - ;; -solaris*) - symcode='[BDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then - symcode='[ABCDGISTW]' -fi - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Write the raw and C identifiers. - global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - $rm conftest* - cat > conftest.c <&5 - if { (eval echo $progname:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then - # Now try to grab the symbols. - nlist=conftest.nm - if { echo "$progname:1657: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then - - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if egrep ' nm_test_var$' "$nlist" >/dev/null; then - if egrep ' nm_test_func$' "$nlist" >/dev/null; then - cat < conftest.c -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' - - cat <> conftest.c -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[] = -{ -EOF - sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c - cat <<\EOF >> conftest.c - {0, (lt_ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.$objext conftstm.$objext - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - LIBS="conftstm.$objext" - CFLAGS="$CFLAGS$no_builtin_flag" - if { (eval echo $progname:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - pipe_works=yes - else - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 - fi - LIBS="$save_LIBS" - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 - fi - $rm conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - global_symbol_pipe= - fi -done -if test "$pipe_works" = yes; then - echo "${ac_t}ok" 1>&6 -else - echo "${ac_t}failed" 1>&6 -fi - -if test -z "$global_symbol_pipe"; then - global_symbol_to_cdecl= -fi - -# Check hardcoding attributes. -echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || \ - test -n "$runpath_var"; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$hardcode_shlibpath_var" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -echo "$ac_t$hardcode_action" 1>&6 - - -reload_flag= -reload_cmds='$LD$reload_flag -o $output$reload_objs' -echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 -# PORTME Some linkers may need a different reload flag. -reload_flag='-r' -echo "$ac_t$reload_flag" 1>&6 -test -n "$reload_flag" && reload_flag=" $reload_flag" - -# PORTME Fill in your ld.so characteristics -library_names_spec= -libname_spec='lib$name' -soname_spec= -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -file_magic_cmd= -file_magic_test_file= -deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [regex]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given egrep regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. -echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 -case "$host_os" in -aix3*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}.so$major' - ;; - -aix4*) - version_type=linux - # AIX has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - # We preserve .a as extension for shared libraries though AIX4.2 - # and later linker supports .so - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' - shlibpath_var=LIBPATH - deplibs_check_method=pass_all - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}.so' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - deplibs_check_method=pass_all - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - -bsdi4*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - file_magic_cmd=/usr/bin/file - file_magic_test_file=/shlib/libc.so - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - export_dynamic_flag_spec=-rdynamic - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw*) - version_type=windows - need_version=no - need_lib_prefix=no - if test "$with_gcc" = yes; then - library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' - else - library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' - fi - dynamic_linker='Win32 ld.exe' - deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - file_magic_cmd='${OBJDUMP} -f' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case "$version_type" in - freebsd-elf*) - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /usr/lib/libc.so*` - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - deplibs_check_method=unknown - library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case "$host_os" in - freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - dynamic_linker="$host_os dld.sl" - version_type=sunos - need_lib_prefix=no - need_version=no - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' - soname_spec='${libname}${release}.sl$major' - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - case "$host_os" in - hpux10.20*) - # TODO: Does this work for hpux-11 too? - deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - file_magic_cmd=/usr/bin/file - file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -irix5* | irix6*) - version_type=irix - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}.so.$major' - library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' - case "$host_os" in - irix5*) - libsuff= shlibsuff= - # this will be overridden with pass_all, but let us keep it just in case - deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case "$LD" in # libtool.m4 will add one of these switches to LD - *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /lib${libsuff}/libc.so*` - deplibs_check_method='pass_all' - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux-gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - deplibs_check_method=pass_all - - if test -f /lib/ld.so.1; then - dynamic_linker='GNU ld.so' - else - # Only the GNU ld.so supports shared libraries on MkLinux. - case "$host_cpu" in - powerpc*) dynamic_linker=no ;; - *) dynamic_linker='Linux ld.so' ;; - esac - fi - ;; - -netbsd*) - version_type=sunos - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' - soname_spec='${libname}${release}.so$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - ;; - -openbsd*) - version_type=sunos - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - need_version=no - fi - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - ;; - -os2*) - libname_spec='$name' - need_lib_prefix=no - library_names_spec='$libname.dll $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_version=no - soname_spec='${libname}${release}.so' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' - shlibpath_var=LD_LIBRARY_PATH - # this will be overridden with pass_all, but let us keep it just in case - deplibs_check_method='file_magic COFF format alpha shared library' - file_magic_cmd=/usr/bin/file - file_magic_test_file=/shlib/libc.so - deplibs_check_method='pass_all' - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rhapsody*) - version_type=sunos - library_names_spec='${libname}.so' - soname_spec='${libname}.so' - shlibpath_var=DYLD_LIBRARY_PATH - deplibs_check_method=pass_all - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}.so$major' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" - file_magic_cmd=/usr/bin/file - file_magic_test_file=/lib/libc.so - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - case "$host_vendor" in - sequent) - file_magic_cmd='/bin/file' - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - ncr) - deplibs_check_method='pass_all' - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - esac - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' - soname_spec='$libname.so.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -*) - dynamic_linker=no - ;; -esac -echo "$ac_t$dynamic_linker" 1>&6 -test "$dynamic_linker" = no && can_build_shared=no - -# Report the final consequences. -echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 - -# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in -# configure.in, otherwise build static only libraries. -case "$host_os" in -cygwin* | mingw* | os2*) - if test x$can_build_shared = xyes; then - test x$enable_win32_dll = xno && can_build_shared=no - echo "checking if package supports dlls... $can_build_shared" 1>&6 - fi -;; -esac - -if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then - case "$deplibs_check_method" in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - egrep "$file_magic_regex" > /dev/null; then - : - else - cat <&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac -fi - -echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - -aix4*) - test "$enable_shared" = yes && enable_static=no - ;; -esac - -echo "$ac_t$enable_shared" 1>&6 - -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes - -echo "checking whether to build static libraries... $enable_static" 1>&6 - -if test "$hardcode_action" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -echo $ac_n "checking for objdir... $ac_c" 1>&6 -rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - objdir=_libs -fi -rmdir .libs 2>/dev/null -echo "$ac_t$objdir" 1>&6 - -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else -if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then - lt_cv_dlopen=no lt_cv_dlopen_libs= -echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "$progname:2248: checking for dlopen in -ldl" >&5 -ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldl $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for dlopen""... $ac_c" 1>&6 -echo "$progname:2288: checking for dlopen" >&5 -if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_dlopen) || defined (__stub___dlopen) -choke me -#else -dlopen(); -#endif - -; return 0; } -EOF -if { (eval echo $progname:2318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_dlopen=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_dlopen=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="dlopen" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 -echo "$progname:2335: checking for dld_link in -ldld" >&5 -ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for shl_load""... $ac_c" 1>&6 -echo "$progname:2375: checking for shl_load" >&5 -if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shl_load) || defined (__stub___shl_load) -choke me -#else -shl_load(); -#endif - -; return 0; } -EOF -if { (eval echo $progname:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_shl_load=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_shl_load=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="shl_load" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "$progname:2423: checking for shl_load in -ldld" >&5 -ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - echo "$ac_t""no" 1>&6 -fi - - -fi - - -fi - - -fi - - -fi - -fi - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - fi - - case "$lt_cv_dlopen" in - dlopen) -for ac_hdr in dlfcn.h; do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "$progname:2488: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int fnord = 0; -EOF -ac_try="$ac_compile >/dev/null 2>conftest.out" -{ (eval echo $progname:2498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi -done - - if test "x$ac_cv_header_dlfcn_h" = xyes; then - CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - fi - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - LIBS="$lt_cv_dlopen_libs $LIBS" - - echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 -echo "$progname:2526: checking whether a program can dlopen itself" >&5 -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - lt_cv_dlopen_self=cross - else - cat > conftest.c < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LTDL_GLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LTDL_GLOBAL DL_GLOBAL -# else -# define LTDL_GLOBAL 0 -# endif -#endif - -/* We may have to define LTDL_LAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LTDL_LAZY_OR_NOW -# ifdef RTLD_LAZY -# define LTDL_LAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LTDL_LAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LTDL_LAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LTDL_LAZY_OR_NOW DL_NOW -# else -# define LTDL_LAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -fnord() { int i=42;} -main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); - if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); - if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } - -EOF -if { (eval echo $progname:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - lt_cv_dlopen_self=yes -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - lt_cv_dlopen_self=no -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$lt_cv_dlopen_self" 1>&6 - - if test "$lt_cv_dlopen_self" = yes; then - LDFLAGS="$LDFLAGS $link_static_flag" - echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 -echo "$progname:2599: checking whether a statically linked program can dlopen itself" >&5 -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - lt_cv_dlopen_self_static=cross - else - cat > conftest.c < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LTDL_GLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LTDL_GLOBAL DL_GLOBAL -# else -# define LTDL_GLOBAL 0 -# endif -#endif - -/* We may have to define LTDL_LAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LTDL_LAZY_OR_NOW -# ifdef RTLD_LAZY -# define LTDL_LAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LTDL_LAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LTDL_LAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LTDL_LAZY_OR_NOW DL_NOW -# else -# define LTDL_LAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -fnord() { int i=42;} -main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); - if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); - if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } - -EOF -if { (eval echo $progname:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - lt_cv_dlopen_self_static=yes -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - lt_cv_dlopen_self_static=no -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 -fi - ;; - esac - - case "$lt_cv_dlopen_self" in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case "$lt_cv_dlopen_self_static" in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - -# Copy echo and quote the copy, instead of the original, because it is -# used later. -ltecho="$echo" -if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then - ltecho="$CONFIG_SHELL \$0 --fallback-echo" -fi -LTSHELL="$SHELL" - -LTCONFIG_VERSION="$VERSION" - -# Only quote variables if we're using ltmain.sh. -case "$ltmain" in -*.sh) - # Now quote all the things that may contain metacharacters. - for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ - old_LD old_LDFLAGS old_LIBS \ - old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ - AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ - reload_flag reload_cmds wl \ - pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ - thread_safe_flag_spec whole_archive_flag_spec libname_spec \ - library_names_spec soname_spec \ - RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ - old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ - file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ - finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ - hardcode_libdir_flag_spec hardcode_libdir_separator \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do - - case "$var" in - reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case "$ltecho" in - *'\$0 --fallback-echo"') - ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - - trap "$rm \"$ofile\"; exit 1" 1 2 15 - echo "creating $ofile" - $rm "$ofile" - cat < "$ofile" -#! $SHELL - -# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. -# -# Copyright (C) 1996-1999 Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="sed -e s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -### BEGIN LIBTOOL CONFIG -EOF - cfgfile="$ofile" - ;; - -*) - # Double-quote the variables that need it (for aesthetics). - for var in old_CC old_CFLAGS old_CPPFLAGS \ - old_LD old_LDFLAGS old_LIBS \ - old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do - eval "$var=\\\"\$var\\\"" - done - - # Just create a config file. - cfgfile="$ofile.cfg" - trap "$rm \"$cfgfile\"; exit 1" 1 2 15 - echo "creating $cfgfile" - $rm "$cfgfile" - cat < "$cfgfile" -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -EOF - ;; -esac - -cat <> "$cfgfile" -# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ -# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ -# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ -# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ -# $0$ltconfig_args -# -# Compiler and other test output produced by $progname, useful for -# debugging $progname, is in ./config.log if it exists. - -# The version of $progname that generated this script. -LTCONFIG_VERSION=$LTCONFIG_VERSION - -# Shell to use when invoking shell scripts. -SHELL=$LTSHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$ltecho - -# The archiver. -AR=$AR - -# The default C compiler. -CC=$CC - -# The linker used to build libraries. -LD=$LD - -# Whether we need hard or soft links. -LN_S=$LN_S - -# A BSD-compatible nm program. -NM=$NM - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$reload_flag -reload_cmds=$reload_cmds - -# How to pass a linker flag through the compiler. -wl=$wl - -# Object file suffix (normally "o"). -objext="$objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$pic_flag - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$compiler_c_o - -# Can we write directly to a .lo ? -compiler_o_lo=$compiler_o_lo - -# Must we lock files when doing compilation ? -need_locks=$need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$link_static_flag - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$no_builtin_flag - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$whole_archive_flag_spec - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$thread_safe_flag_spec - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$RANLIB -old_archive_cmds=$old_archive_cmds -old_postinstall_cmds=$old_postinstall_cmds -old_postuninstall_cmds=$old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$old_archive_from_new_cmds - -# Commands used to build and install a shared archive. -archive_cmds=$archive_cmds -archive_expsym_cmds=$archive_expsym_cmds -postinstall_cmds=$postinstall_cmds -postuninstall_cmds=$postuninstall_cmds - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$allow_undefined_flag - -# Flag that forces no undefined symbols. -no_undefined_flag=$no_undefined_flag - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$global_symbol_to_cdecl - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$hardcode_libdir_separator - -# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path" - -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$include_expsyms - -EOF - -case "$ltmain" in -*.sh) - echo '### END LIBTOOL CONFIG' >> "$ofile" - echo >> "$ofile" - case "$host_os" in - aix3*) - cat <<\EOF >> "$ofile" - -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -EOF - ;; - esac - - # Append the ltmain.sh script. - sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - - chmod +x "$ofile" - ;; - -*) - # Compile the libtool program. - echo "FIXME: would compile $ltmain" - ;; -esac - -test -n "$cache_file" || exit 0 - -# AC_CACHE_SAVE -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -exit 0 - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: Index: xc/extras/freetype2/builds/cygwin/ltmain.sh diff -u xc/extras/freetype2/builds/cygwin/ltmain.sh:1.1.1.1 xc/extras/freetype2/builds/cygwin/ltmain.sh:removed --- xc/extras/freetype2/builds/cygwin/ltmain.sh:1.1.1.1 Fri Dec 8 16:26:07 2000 +++ xc/extras/freetype2/builds/cygwin/ltmain.sh Fri Jan 18 15:21:41 2002 @@ -1,4024 +0,0 @@ -# ltmain.sh - Provide generalized library-building support services. -# NOTE: Changing this file will not affect anything until you rerun ltconfig. -# -# Copyright (C) 1996-1999 Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Check that we have a working $echo. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -else - # Restart under the correct shell, and then maybe $echo will work. - exec $SHELL "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 -fi - -if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - echo "$modename: not configured to build any kind of library" 1>&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 -fi - -# Global variables. -mode=$default_mode -nonopt= -prev= -prevopt= -run= -show="$echo" -show_help= -execute_dlfiles= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" - -# Parse our command line options once, thoroughly. -while test $# -gt 0 -do - arg="$1" - shift - - case "$arg" in - -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case "$prev" in - execute_dlfiles) - eval "$prev=\"\$$prev \$arg\"" - ;; - *) - eval "$prev=\$arg" - ;; - esac - - prev= - prevopt= - continue - fi - - # Have we seen a non-optional argument yet? - case "$arg" in - --help) - show_help=yes - ;; - - --version) - echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" - exit 0 - ;; - - --config) - sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 - exit 0 - ;; - - --debug) - echo "$progname: enabling shell trace mode" - set -x - ;; - - --dry-run | -n) - run=: - ;; - - --features) - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - exit 0 - ;; - - --finish) mode="finish" ;; - - --mode) prevopt="--mode" prev=mode ;; - --mode=*) mode="$optarg" ;; - - --quiet | --silent) - show=: - ;; - - -dlopen) - prevopt="-dlopen" - prev=execute_dlfiles - ;; - - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - - *) - nonopt="$arg" - break - ;; - esac -done - -if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 -fi - -if test -z "$show_help"; then - - # Infer the operation mode. - if test -z "$mode"; then - case "$nonopt" in - *cc | *++ | gcc* | *-gcc*) - mode=link - for arg - do - case "$arg" in - -c) - mode=compile - break - ;; - esac - done - ;; - *db | *dbx | *strace | *truss) - mode=execute - ;; - *install*|cp|mv) - mode=install - ;; - *rm) - mode=uninstall - ;; - *) - # If we have no mode, but dlfiles were specified, then do execute mode. - test -n "$execute_dlfiles" && mode=execute - - # Just use the default operation mode. - if test -z "$mode"; then - if test -n "$nonopt"; then - $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 - else - $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 - fi - fi - ;; - esac - fi - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$modename --help --mode=$mode' for more information." - - # These modes are in order of execution frequency so that they run quickly. - case "$mode" in - # libtool compile mode - compile) - modename="$modename: compile" - # Get the compilation command and the source file. - base_compile= - lastarg= - srcfile="$nonopt" - suppress_output= - - user_target=no - for arg - do - # Accept any command-line options. - case "$arg" in - -o) - if test "$user_target" != "no"; then - $echo "$modename: you cannot specify \`-o' more than once" 1>&2 - exit 1 - fi - user_target=next - ;; - - -static) - build_old_libs=yes - continue - ;; - esac - - case "$user_target" in - next) - # The next one is the -o target name - user_target=yes - continue - ;; - yes) - # We got the output file - user_target=set - libobj="$arg" - continue - ;; - esac - - # Accept the current argument as the source file. - lastarg="$srcfile" - srcfile="$arg" - - # Aesthetically quote the previous argument. - - # Backslashify any backslashes, double quotes, and dollar signs. - # These are the only characters that are still specially - # interpreted inside of double-quoted scrings. - lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` - - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly in scan - # sets, so we specify it separately. - case "$lastarg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - lastarg="\"$lastarg\"" - ;; - esac - - # Add the previous argument to base_compile. - if test -z "$base_compile"; then - base_compile="$lastarg" - else - base_compile="$base_compile $lastarg" - fi - done - - case "$user_target" in - set) - ;; - no) - # Get the name of the library object. - libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` - ;; - *) - $echo "$modename: you must specify a target with \`-o'" 1>&2 - exit 1 - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - xform='[cCFSfmso]' - case "$libobj" in - *.ada) xform=ada ;; - *.adb) xform=adb ;; - *.ads) xform=ads ;; - *.asm) xform=asm ;; - *.c++) xform=c++ ;; - *.cc) xform=cc ;; - *.cpp) xform=cpp ;; - *.cxx) xform=cxx ;; - *.f90) xform=f90 ;; - *.for) xform=for ;; - esac - - libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` - - case "$libobj" in - *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; - *) - $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 - exit 1 - ;; - esac - - if test -z "$base_compile"; then - $echo "$modename: you must specify a compilation command" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $libobj" - else - removelist="$libobj" - fi - - $run $rm $removelist - trap "$run $rm $removelist; exit 1" 1 2 15 - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext} - lockfile="$output_obj.lock" - removelist="$removelist $output_obj $lockfile" - trap "$run $rm $removelist; exit 1" 1 2 15 - else - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until ln "$0" "$lockfile" 2>/dev/null; do - $show "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - echo "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit 1 - fi - echo $srcfile > "$lockfile" - fi - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - # All platforms use -DPIC, to notify preprocessed assembler code. - command="$base_compile $srcfile $pic_flag -DPIC" - if test "$build_old_libs" = yes; then - lo_libobj="$libobj" - dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$libobj"; then - dir="$objdir" - else - dir="$dir/$objdir" - fi - libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` - - if test -d "$dir"; then - $show "$rm $libobj" - $run $rm $libobj - else - $show "$mkdir $dir" - $run $mkdir $dir - status=$? - if test $status -ne 0 && test ! -d $dir; then - exit $status - fi - fi - fi - if test "$compiler_o_lo" = yes; then - output_obj="$libobj" - command="$command -o $output_obj" - elif test "$compiler_c_o" = yes; then - output_obj="$obj" - command="$command -o $output_obj" - fi - - $run $rm "$output_obj" - $show "$command" - if $run eval "$command"; then : - else - test -n "$output_obj" && $run $rm $removelist - exit 1 - fi - - if test "$need_locks" = warn && - test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then - echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit 1 - fi - - # Just move the object if needed, then go on to compile the next one - if test x"$output_obj" != x"$libobj"; then - $show "$mv $output_obj $libobj" - if $run $mv $output_obj $libobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # If we have no pic_flag, then copy the object into place and finish. - if test -z "$pic_flag" && test "$build_old_libs" = yes; then - # Rename the .lo from within objdir to obj - if test -f $obj; then - $show $rm $obj - $run $rm $obj - fi - - $show "$mv $libobj $obj" - if $run $mv $libobj $obj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - - xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$obj"; then - xdir="." - else - xdir="$xdir" - fi - baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` - libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` - # Now arrange that obj and lo_libobj become the same file - $show "(cd $xdir && $LN_S $baseobj $libobj)" - if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then - exit 0 - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Allow error messages only from the first compilation. - suppress_output=' >/dev/null 2>&1' - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - command="$base_compile $srcfile" - if test "$compiler_c_o" = yes; then - command="$command -o $obj" - output_obj="$obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - command="$command$suppress_output" - $run $rm "$output_obj" - $show "$command" - if $run eval "$command"; then : - else - $run $rm $removelist - exit 1 - fi - - if test "$need_locks" = warn && - test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then - echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit 1 - fi - - # Just move the object if needed - if test x"$output_obj" != x"$obj"; then - $show "$mv $output_obj $obj" - if $run $mv $output_obj $obj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Create an invalid libtool object if no PIC, so that we do not - # accidentally link it into a program. - if test "$build_libtool_libs" != yes; then - $show "echo timestamp > $libobj" - $run eval "echo timestamp > \$libobj" || exit $? - else - # Move the .lo from within objdir - $show "$mv $libobj $lo_libobj" - if $run $mv $libobj $lo_libobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - fi - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - $rm "$lockfile" - fi - - exit 0 - ;; - - # libtool link mode - link) - modename="$modename: link" - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invokation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - - # This is a source program that is used to create dlls on Windows - # Don't remove nor modify the starting and closing comments -# /* ltdll.c starts here */ -# #define WIN32_LEAN_AND_MEAN -# #include -# #undef WIN32_LEAN_AND_MEAN -# #include -# -# #ifndef __CYGWIN__ -# # ifdef __CYGWIN32__ -# # define __CYGWIN__ __CYGWIN32__ -# # endif -# #endif -# -# #ifdef __cplusplus -# extern "C" { -# #endif -# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -# #ifdef __cplusplus -# } -# #endif -# -# #ifdef __CYGWIN__ -# #include -# DECLARE_CYGWIN_DLL( DllMain ); -# #endif -# HINSTANCE __hDllInstance_base; -# -# BOOL APIENTRY -# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) -# { -# __hDllInstance_base = hInst; -# return TRUE; -# } -# /* ltdll.c ends here */ - # This is a source program that is used to create import libraries - # on Windows for dlls which lack them. Don't remove nor modify the - # starting and closing comments -# /* impgen.c starts here */ -# /* Copyright (C) 1999 Free Software Foundation, Inc. -# -# This file is part of GNU libtool. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# */ -# -# #include /* for printf() */ -# #include /* for open(), lseek(), read() */ -# #include /* for O_RDONLY, O_BINARY */ -# #include /* for strdup() */ -# -# static unsigned int -# pe_get16 (fd, offset) -# int fd; -# int offset; -# { -# unsigned char b[2]; -# lseek (fd, offset, SEEK_SET); -# read (fd, b, 2); -# return b[0] + (b[1]<<8); -# } -# -# static unsigned int -# pe_get32 (fd, offset) -# int fd; -# int offset; -# { -# unsigned char b[4]; -# lseek (fd, offset, SEEK_SET); -# read (fd, b, 4); -# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); -# } -# -# static unsigned int -# pe_as32 (ptr) -# void *ptr; -# { -# unsigned char *b = ptr; -# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); -# } -# -# int -# main (argc, argv) -# int argc; -# char *argv[]; -# { -# int dll; -# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; -# unsigned long export_rva, export_size, nsections, secptr, expptr; -# unsigned long name_rvas, nexp; -# unsigned char *expdata, *erva; -# char *filename, *dll_name; -# -# filename = argv[1]; -# -# dll = open(filename, O_RDONLY|O_BINARY); -# if (!dll) -# return 1; -# -# dll_name = filename; -# -# for (i=0; filename[i]; i++) -# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') -# dll_name = filename + i +1; -# -# pe_header_offset = pe_get32 (dll, 0x3c); -# opthdr_ofs = pe_header_offset + 4 + 20; -# num_entries = pe_get32 (dll, opthdr_ofs + 92); -# -# if (num_entries < 1) /* no exports */ -# return 1; -# -# export_rva = pe_get32 (dll, opthdr_ofs + 96); -# export_size = pe_get32 (dll, opthdr_ofs + 100); -# nsections = pe_get16 (dll, pe_header_offset + 4 +2); -# secptr = (pe_header_offset + 4 + 20 + -# pe_get16 (dll, pe_header_offset + 4 + 16)); -# -# expptr = 0; -# for (i = 0; i < nsections; i++) -# { -# char sname[8]; -# unsigned long secptr1 = secptr + 40 * i; -# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); -# unsigned long vsize = pe_get32 (dll, secptr1 + 16); -# unsigned long fptr = pe_get32 (dll, secptr1 + 20); -# lseek(dll, secptr1, SEEK_SET); -# read(dll, sname, 8); -# if (vaddr <= export_rva && vaddr+vsize > export_rva) -# { -# expptr = fptr + (export_rva - vaddr); -# if (export_rva + export_size > vaddr + vsize) -# export_size = vsize - (export_rva - vaddr); -# break; -# } -# } -# -# expdata = (unsigned char*)malloc(export_size); -# lseek (dll, expptr, SEEK_SET); -# read (dll, expdata, export_size); -# erva = expdata - export_rva; -# -# nexp = pe_as32 (expdata+24); -# name_rvas = pe_as32 (expdata+32); -# -# printf ("EXPORTS\n"); -# for (i = 0; i&2 - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - else - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - fi - build_libtool_libs=no - build_old_libs=yes - prefer_static_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test $# -gt 0; do - arg="$1" - shift - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case "$prev" in - output) - compile_command="$compile_command @OUTPUT@" - finalize_command="$finalize_command @OUTPUT@" - ;; - esac - - case "$prev" in - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - compile_command="$compile_command @SYMFILE@" - finalize_command="$finalize_command @SYMFILE@" - preload=yes - fi - case "$arg" in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - else - dlprefiles="$dlprefiles $arg" - fi - prev= - ;; - esac - ;; - expsyms) - export_symbols="$arg" - if test ! -f "$arg"; then - $echo "$modename: symbol file \`$arg' does not exist" - exit 1 - fi - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case "$arg" in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit 1 - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) rpath="$rpath $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; - esac - fi - prev= - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi - - prevarg="$arg" - - case "$arg" in - -all-static) - if test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 - continue - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: not more than one -exported-symbols argument allowed" - exit 1 - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -L*) - dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` - # We need an absolute path. - case "$dir" in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - absdir="$dir" - fi - dir="$absdir" - ;; - esac - case " $deplibs " in - *" $arg "*) ;; - *) deplibs="$deplibs $arg";; - esac - case " $lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir";; - esac - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2*) - dllsearchdir=`cd "$dir" && pwd || echo "$dir"` - case ":$dllsearchpath:" in - ::) dllsearchpath="$dllsearchdir";; - *":$dllsearchdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dllsearchdir";; - esac - ;; - esac - ;; - - -l*) - if test "$arg" = "-lc"; then - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) - # These systems don't actually have c library (as such) - continue - ;; - esac - elif test "$arg" = "-lm"; then - case "$host" in - *-*-cygwin* | *-*-beos*) - # These systems don't actually have math library (as such) - continue - ;; - esac - fi - deplibs="$deplibs $arg" - ;; - - -module) - module=yes - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -o) prev=output ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` - # We need an absolute path. - case "$dir" in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit 1 - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -static) - # If we have no pic_flag, then this is the same as -all-static. - if test -z "$pic_flag" && test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - # Some other compiler flag. - -* | +*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - ;; - - *.o | *.obj | *.a | *.lib) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A library object. - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` - prev= - fi - libobjs="$libobjs $arg" - ;; - - *.la) - # A libtool-controlled library. - - dlname= - libdir= - library_names= - old_library= - - # Check to see that this really is a libtool archive. - if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 - exit 1 - fi - - # If the library was installed with an old release of libtool, - # it will not redefine variable installed. - installed=yes - - # Read the .la file - # If there is no directory component, then add one. - case "$arg" in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 - exit 1 - fi - - # Find the relevant object directory and library name. - name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` - - if test "X$installed" = Xyes; then - dir="$libdir" - else - dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$arg"; then - dir="$objdir" - else - dir="$dir/$objdir" - fi - fi - - if test -n "$dependency_libs"; then - # Extract -R and -L from dependency_libs - temp_deplibs= - for deplib in $dependency_libs; do - case "$deplib" in - -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` - case " $rpath $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - -L*) case "$compile_command $temp_deplibs " in - *" $deplib "*) ;; - *) temp_deplibs="$temp_deplibs $deplib";; - esac - temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'` - case " $lib_search_path " in - *" $temp_dir "*) ;; - *) lib_search_path="$lib_search_path $temp_dir";; - esac - ;; - *) temp_deplibs="$temp_deplibs $deplib";; - esac - done - dependency_libs="$temp_deplibs" - fi - - if test -z "$libdir"; then - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $dir/$old_library" - old_convenience="$old_convenience $dir/$old_library" - deplibs="$deplibs$dependency_libs" - compile_command="$compile_command $dir/$old_library$dependency_libs" - finalize_command="$finalize_command $dir/$old_library$dependency_libs" - continue - fi - - # This library was specified with -dlopen. - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking statically, - # we need to preload. - prev=dlprefiles - else - # We should not create a dependency on this library, but we - # may need any libraries it requires. - compile_command="$compile_command$dependency_libs" - finalize_command="$finalize_command$dependency_libs" - prev= - continue - fi - fi - - # The library was specified with -dlpreopen. - if test "$prev" = dlprefiles; then - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - dlprefiles="$dlprefiles $dir/$old_library" - else - dlprefiles="$dlprefiles $dir/$linklib" - fi - prev= - fi - - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - link_against_libtool_libs="$link_against_libtool_libs $arg" - if test -n "$shlibpath_var"; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *) temp_rpath="$temp_rpath $dir" ;; - esac - fi - - # We need an absolute path. - case "$dir" in - [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - absdir="$dir" - fi - ;; - esac - - # This is the magic to use -rpath. - # Skip directories that are in the system default run-time - # search path, unless they have been requested with -R. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - - lib_linked=yes - case "$hardcode_action" in - immediate | unsupported) - if test "$hardcode_direct" = no; then - compile_command="$compile_command $dir/$linklib" - deplibs="$deplibs $dir/$linklib" - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2*) - dllsearchdir=`cd "$dir" && pwd || echo "$dir"` - if test -n "$dllsearchpath"; then - dllsearchpath="$dllsearchpath:$dllsearchdir" - else - dllsearchpath="$dllsearchdir" - fi - ;; - esac - elif test "$hardcode_minus_L" = no; then - case "$host" in - *-*-sunos*) - compile_shlibpath="$compile_shlibpath$dir:" - ;; - esac - case "$compile_command " in - *" -L$dir "*) ;; - *) compile_command="$compile_command -L$dir";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -L$dir -l$name" - elif test "$hardcode_shlibpath_var" = no; then - case ":$compile_shlibpath:" in - *":$dir:"*) ;; - *) compile_shlibpath="$compile_shlibpath$dir:";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -l$name" - else - lib_linked=no - fi - ;; - - relink) - if test "$hardcode_direct" = yes; then - compile_command="$compile_command $absdir/$linklib" - deplibs="$deplibs $absdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - case "$compile_command " in - *" -L$absdir "*) ;; - *) compile_command="$compile_command -L$absdir";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -L$absdir -l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case ":$compile_shlibpath:" in - *":$absdir:"*) ;; - *) compile_shlibpath="$compile_shlibpath$absdir:";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -l$name" - else - lib_linked=no - fi - ;; - - *) - lib_linked=no - ;; - esac - - if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" - exit 1 - fi - - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then - finalize_command="$finalize_command $libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - case "$finalize_command " in - *" -L$libdir "*) ;; - *) finalize_command="$finalize_command -L$libdir";; - esac - finalize_command="$finalize_command -l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case ":$finalize_shlibpath:" in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:";; - esac - finalize_command="$finalize_command -l$name" - else - # We cannot seem to hardcode it, guess we'll fake it. - case "$finalize_command " in - *" -L$dir "*) ;; - *) finalize_command="$finalize_command -L$libdir";; - esac - finalize_command="$finalize_command -l$name" - fi - else - # Transform directly to old archives if we don't build new libraries. - if test -n "$pic_flag" && test -z "$old_library"; then - $echo "$modename: cannot find static library for \`$arg'" 1>&2 - exit 1 - fi - - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_command="$compile_command $dir/$linklib" - finalize_command="$finalize_command $dir/$linklib" - else - case "$compile_command " in - *" -L$dir "*) ;; - *) compile_command="$compile_command -L$dir";; - esac - compile_command="$compile_command -l$name" - case "$finalize_command " in - *" -L$dir "*) ;; - *) finalize_command="$finalize_command -L$dir";; - esac - finalize_command="$finalize_command -l$name" - fi - fi - - # Add in any libraries that this one depends upon. - compile_command="$compile_command$dependency_libs" - finalize_command="$finalize_command$dependency_libs" - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - ;; - esac - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - done - - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` - libobjs_save="$libobjs" - - case "$output" in - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - - *.a | *.lib) - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 - exit 1 - fi - - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 - fi - - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 - fi - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - ;; - - *.la) - # Make sure we only generate libraries of the form `libNAME.la'. - case "$outputname" in - lib*) - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - eval libname=\"$libname_spec\" - ;; - *) - if test "$module" = no; then - $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - eval libname=\"$libname_spec\" - else - libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - fi - ;; - esac - - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi - - if test -n "$objs"; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 - exit 1 - fi - - # How the heck are we supposed to write a wrapper for a shared library? - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 - exit 1 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 - fi - - set dummy $rpath - if test $# -gt 2; then - $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 - fi - install_libdir="$2" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - libext=al - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - dependency_libs="$deplibs" - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 - fi - else - - # Parse the version information argument. - IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - IFS="$save_ifs" - - if test -n "$8"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - current="$2" - revision="$3" - age="$4" - - # Check that each of the things are valid numbers. - case "$current" in - 0 | [1-9] | [1-9][0-9]*) ;; - *) - $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - case "$revision" in - 0 | [1-9] | [1-9][0-9]*) ;; - *) - $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - case "$age" in - 0 | [1-9] | [1-9][0-9]*) ;; - *) - $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - if test $age -gt $current; then - $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case "$version_type" in - none) ;; - - irix) - major=`expr $current - $age + 1` - versuffix="$major.$revision" - verstring="sgi$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test $loop != 0; do - iface=`expr $revision - $loop` - loop=`expr $loop - 1` - verstring="sgi$major.$iface:$verstring" - done - ;; - - linux) - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - ;; - - osf) - major=`expr $current - $age` - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test $loop != 0; do - iface=`expr $current - $loop` - loop=`expr $loop - 1` - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current"; - ;; - - windows) - # Like Linux, but with '-' rather than '.', since we only - # want one extension on Windows 95. - major=`expr $current - $age` - versuffix="-$major-$age-$revision" - ;; - - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - verstring="0.0" - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - dependency_libs="$deplibs" - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody*) - # rhapsody is a little odd... - deplibs="$deplibs -framework System" - ;; - *) - # Add libc to deplibs on all other systems. - deplibs="$deplibs -lc" - ;; - esac - fi - - # Create the output directory, or remove our outputs if we need to. - if test -d $output_objdir; then - $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" - $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* - else - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test $status -ne 0 && test ! -d $output_objdir; then - exit $status - fi - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` - fi - - if test "$build_libtool_libs" = yes; then - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case "$deplibs_check_method" in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behaviour. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $rm conftest.c - cat > conftest.c </dev/null` - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null \ - | grep " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | sed 's/.* -> //'` - case "$potliblink" in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ - | sed 10q \ - | egrep "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - echo "*** Warning: This library needs some functionality provided by $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ - -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | - grep . >/dev/null; then - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - fi - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - echo "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - # Get the real and link names of the library. - eval library_names=\"$library_names_spec\" - set dummy $library_names - realname="$2" - shift; shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - lib="$output_objdir/$realname" - for link - do - linknames="$linknames $link" - done - - # Ensure that we have .o objects for linkers which dislike .lo - # (e.g. aix) in case we are running --disable-static - for obj in $libobjs; do - xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$obj"; then - xdir="." - else - xdir="$xdir" - fi - baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` - if test ! -f $xdir/$oldobj; then - $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" - $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? - fi - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - eval cmds=\"$export_symbols_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - if test -n "$export_symbols_regex"; then - $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" - $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - $show "$mv \"${export_symbols}T\" \"$export_symbols\"" - $run eval '$mv "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' - fi - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "mkdir $gentop" - $run mkdir "$gentop" - status=$? - if test $status -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - for xlib in $convenience; do - # Extract the objects. - case "$xlib" in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "mkdir $xdir" - $run mkdir "$xdir" - status=$? - if test $status -ne 0 && test ! -d "$xdir"; then - exit $status - fi - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - - libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` - done - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linkopts="$linkopts $flag" - fi - - # Do each of the archive commands. - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval cmds=\"$archive_expsym_cmds\" - else - eval cmds=\"$archive_cmds\" - fi - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - *.lo | *.o | *.obj) - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 - exit 1 - fi - - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 - fi - - case "$output" in - *.lo) - if test -n "$objs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit 1 - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $run $rm $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${obj}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "mkdir $gentop" - $run mkdir "$gentop" - status=$? - if test $status -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - for xlib in $convenience; do - # Extract the objects. - case "$xlib" in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "mkdir $xdir" - $run mkdir "$xdir" - status=$? - if test $status -ne 0 && test ! -d "$xdir"; then - exit $status - fi - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - - reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` - done - fi - fi - - # Create the old-style object. - reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" - - output="$obj" - eval cmds=\"$reload_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit 0 - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - $show "echo timestamp > $libobj" - $run eval "echo timestamp > $libobj" || exit $? - exit 0 - fi - - if test -n "$pic_flag"; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - eval cmds=\"$reload_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - else - # Just create a symlink. - $show $rm $libobj - $run $rm $libobj - xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$libobj"; then - xdir="." - else - xdir="$xdir" - fi - baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` - oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` - $show "(cd $xdir && $LN_S $oldobj $baseobj)" - $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? - fi - - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit 0 - ;; - - # Anything else should be a program. - *) - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 - fi - - if test "$preload" = yes; then - if test "$dlopen" = unknown && test "$dlopen_self" = unknown && - test "$dlopen_self_static" = unknown; then - $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." - fi - fi - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$compile_rpath " in - *" $libdir "*) ;; - *) compile_rpath="$compile_rpath $libdir" ;; - esac - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi - - # Create the binary in the object directory, then wrap it. - if test ! -d $output_objdir; then - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test $status -ne 0 && test ! -d $output_objdir; then - exit $status - fi - fi - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - fi - - dlsyms= - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - dlsyms="${outputname}S.c" - else - $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 - fi - fi - - if test -n "$dlsyms"; then - case "$dlsyms" in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${outputname}.nm" - - $show "$rm $nlist ${nlist}S ${nlist}T" - $run $rm "$nlist" "${nlist}S" "${nlist}T" - - # Parse the name list into a source file. - $show "creating $output_objdir/$dlsyms" - - test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ -/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ -/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -/* Prevent the only kind of declaration conflicts we can make. */ -#define lt_preloaded_symbols some_other_symbol - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - $show "generating symbol list for \`$output'" - - test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - for arg in $progfiles; do - $show "extracting global C symbols from \`$arg'" - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - if test -n "$export_symbols_regex"; then - $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$output.exp" - $run $rm $export_symbols - $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - else - $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' - $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' - $run eval 'mv "$nlist"T "$nlist"' - fi - fi - - for arg in $dlprefiles; do - $show "extracting global C symbols from \`$arg'" - name=`echo "$arg" | sed -e 's%^.*/%%'` - $run eval 'echo ": $name " >> "$nlist"' - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -z "$run"; then - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $mv "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then - : - else - grep -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$dlsyms" - fi - - $echo >> "$output_objdir/$dlsyms" "\ - -#undef lt_preloaded_symbols - -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[] = -{\ -" - - sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ - -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ - < "$nlist" >> "$output_objdir/$dlsyms" - - $echo >> "$output_objdir/$dlsyms" "\ - {0, (lt_ptr_t) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - fi - - pic_flag_for_symtable= - case "$host" in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; - esac;; - *-*-hpux*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag -DPIC";; - esac - esac - - # Now compile the dynamic symbol file. - $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" - $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? - - # Clean up the generated files. - $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" - $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" - - # Transform the symbol file into the correct name. - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit 1 - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" - status=$? - - # Delete the generated files. - if test -n "$dlsyms"; then - $show "$rm $output_objdir/${outputname}S.${objext}" - $run $rm "$output_objdir/${outputname}S.${objext}" - fi - - exit $status - fi - - if test -n "$shlibpath_var"; then - # We should set the shlibpath_var - rpath= - for dir in $temp_rpath; do - case "$dir" in - [\\/]* | [A-Za-z]:[\\/]*) - # Absolute path. - rpath="$rpath$dir:" - ;; - *) - # Relative path: add a thisdir entry. - rpath="$rpath\$thisdir/$dir:" - ;; - esac - done - temp_rpath="$rpath" - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 - $echo "$modename: \`$output' will be relinked during installation" 1>&2 - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname - - $show "$link_command" - $run eval "$link_command" || exit $? - - # Now create the wrapper script. - $show "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $echo for shipping. - if test "X$echo" = "X$SHELL $0 --fallback-echo"; then - case "$0" in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; - *) qecho="$SHELL `pwd`/$0 --fallback-echo";; - esac - qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` - fi - - # Only actually do things if our run command is non-null. - if test -z "$run"; then - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) output=`echo $output|sed 's,.exe$,,'` ;; - esac - $rm $output - trap "$rm $output; exit 1" 1 2 15 - - $echo > $output "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e 1s/^X//' -sed_quote_subst='$sed_quote_subst' - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variable: - link_against_libtool_libs='$link_against_libtool_libs' -else - # When we are sourced in execute mode, \$file and \$echo are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - echo=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$echo works! - : - else - # Restart under the correct shell, and then maybe \$echo will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ -" - $echo >> $output "\ - - # Find the directory that this script lives in. - thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` - done - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - echo >> $output "\ - program=lt-'$outputname' - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || \\ - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $mkdir \"\$progdir\" - else - $rm \"\$progdir/\$file\" - fi" - - echo >> $output "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if (cd \"\$thisdir\" && eval \$relink_command); then : - else - $rm \"\$progdir/\$file\" - exit 1 - fi - fi - - $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $rm \"\$progdir/\$program\"; - $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $rm \"\$progdir/\$file\" - fi" - else - echo >> $output "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - echo >> $output "\ - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $echo >> $output "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` - - export $shlibpath_var -" - fi - - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $echo >> $output "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - $echo >> $output "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. -" - case $host in - # win32 systems need to use the prog path for dll - # lookup to work - *-*-cygwin*) - $echo >> $output "\ - exec \$progdir/\$program \${1+\"\$@\"} -" - ;; - - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $echo >> $output "\ - exec \$progdir\\\\\$program \${1+\"\$@\"} -" - ;; - - *) - $echo >> $output "\ - # Export the path to the program. - PATH=\"\$progdir:\$PATH\" - export PATH - - exec \$program \${1+\"\$@\"} -" - ;; - esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" - exit 1 - fi - else - # The program doesn't exist. - \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 - \$echo \"This script is just a wrapper for \$program.\" 1>&2 - echo \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" - chmod +x $output - fi - exit 0 - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "mkdir $gentop" - $run mkdir "$gentop" - status=$? - if test $status -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - # Add in members from convenience archives. - for xlib in $addlibs; do - # Extract the objects. - case "$xlib" in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "mkdir $xdir" - $run mkdir "$xdir" - status=$? - if test $status -ne 0 && test ! -d "$xdir"; then - exit $status - fi - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - - oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` - done - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - eval cmds=\"$old_archive_from_new_cmds\" - else - # Ensure that we have .o objects in place in case we decided - # not to build a shared library, and have fallen back to building - # static libs even though --disable-static was passed! - for oldobj in $oldobjs; do - if test ! -f $oldobj; then - xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$oldobj"; then - xdir="." - else - xdir="$xdir" - fi - baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` - obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` - $show "(cd $xdir && ${LN_S} $obj $baseobj)" - $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? - fi - done - - eval cmds=\"$old_archive_cmds\" - fi - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$generated"; then - $show "${rm}r$generated" - $run ${rm}r$generated - fi - - # Now create the libtool archive. - case "$output" in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - $show "creating $output" - - if test -n "$xrpath"; then - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - done - dependency_libs="$temp_xrpath $dependency_libs" - fi - - # Only create the output if not a dry run. - if test -z "$run"; then - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - fi - $rm $output - $echo > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$dlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Directory that this library needs to be installed in: -libdir='$install_libdir'\ -" - done - fi - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" - $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? - ;; - esac - exit 0 - ;; - - # libtool install mode - install) - modename="$modename: install" - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then - # Aesthetically quote it. - arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$arg " - arg="$1" - shift - else - install_prog= - arg="$nonopt" - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog$arg" - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - for arg - do - if test -n "$dest"; then - files="$files $dest" - dest="$arg" - continue - fi - - case "$arg" in - -d) isdir=yes ;; - -f) prev="-f" ;; - -g) prev="-g" ;; - -m) prev="-m" ;; - -o) prev="-o" ;; - -s) - stripme=" -s" - continue - ;; - -*) ;; - - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else - dest="$arg" - continue - fi - ;; - esac - - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog $arg" - done - - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test -z "$files"; then - if test -z "$dest"; then - $echo "$modename: no file or destination specified" 1>&2 - else - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 - exit 1 - fi - - # Strip any trailing slash from the destination. - dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` - test "X$destdir" = "X$dest" && destdir=. - destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` - - # Not a directory, so check to see that there is only one file specified. - set dummy $files - if test $# -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - fi - case "$destdir" in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case "$file" in - *.lo) ;; - *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case "$file" in - *.a | *.lib) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - library_names= - old_library= - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" - test "X$dir" = "X$file/" && dir= - dir="$dir$objdir" - - # See the names of the shared library. - set dummy $library_names - if test -n "$2"; then - realname="$2" - shift - shift - - # Install the shared library and build the symlinks. - $show "$install_prog $dir/$realname $destdir/$realname" - $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? - - if test $# -gt 0; then - # Delete the old symlinks, and create new ones. - for linkname - do - if test "$linkname" != "$realname"; then - $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - fi - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - eval cmds=\"$postinstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - # Install the pseudo-library for information purposes. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - instname="$dir/$name"i - $show "$install_prog $instname $destdir/$name" - $run eval "$install_prog $instname $destdir/$name" || exit $? - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case "$destfile" in - *.lo) - staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` - ;; - *.o | *.obj) - staticdest="$destfile" - destfile= - ;; - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - esac - - # Install the libtool object if requested. - if test -n "$destfile"; then - $show "$install_prog $file $destfile" - $run eval "$install_prog $file $destfile" || exit $? - fi - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` - - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi - exit 0 - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # Do a test to see if this is really a libtool program. - if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - link_against_libtool_libs= - relink_command= - - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Check the variables that should have been set. - if test -z "$link_against_libtool_libs"; then - $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 - exit 1 - fi - - finalize=yes - for lib in $link_against_libtool_libs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - # If there is no directory component, then add one. - case "$lib" in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - fi - libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" - if test -n "$libdir" && test ! -f "$libfile"; then - $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 - finalize=no - fi - done - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - if test "$finalize" = yes && test -z "$run"; then - tmpdir="/tmp" - test -n "$TMPDIR" && tmpdir="$TMPDIR" - tmpdir="$tmpdir/libtool-$$" - if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : - else - $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 - continue - fi - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` - - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - ${rm}r "$tmpdir" - continue - fi - file="$outputname" - else - $echo "$modename: warning: cannot relink \`$file'" 1>&2 - fi - else - # Install the binary that we compiled earlier. - file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - $show "$install_prog$stripme $file $destfile" - $run eval "$install_prog\$stripme \$file \$destfile" || exit $? - test -n "$outputname" && ${rm}r "$tmpdir" - ;; - esac - done - - for file in $staticlibs; do - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? - - # Do each command in the postinstall commands. - eval cmds=\"$old_postinstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$future_libdirs"; then - $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 - fi - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" - exec $SHELL $0 --finish$current_libdirs - exit 1 - fi - - exit 0 - ;; - - # libtool finish mode - finish) - modename="$modename: finish" - libdirs="$nonopt" - admincmds= - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - eval cmds=\"$finish_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || admincmds="$admincmds - $cmd" - done - IFS="$save_ifs" - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $run eval "$cmds" || admincmds="$admincmds - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - test "$show" = : && exit 0 - - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - echo " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use \`-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - echo " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - echo " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - echo - echo "See any operating system documentation about shared libraries for" - echo "more information, such as the ld(1) and ld.so(8) manual pages." - echo "----------------------------------------------------------------------" - exit 0 - ;; - - # libtool execute mode - execute) - modename="$modename: execute" - - # The first argument is the command name. - cmd="$nonopt" - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" - exit 1 - fi - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - if test ! -f "$file"; then - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - dir= - case "$file" in - *.la) - # Check to see that this really is a libtool archive. - if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Read the libtool library. - dlname= - library_names= - - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" - continue - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit 1 - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - ;; - - *) - $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case "$file" in - -*) ;; - *) - # Do a test to see if this is really a libtool program. - if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` - args="$args \"$file\"" - done - - if test -z "$run"; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved enviroment variables - if test "${save_LC_ALL+set}" = set; then - LC_ALL="$save_LC_ALL"; export LC_ALL - fi - if test "${save_LANG+set}" = set; then - LANG="$save_LANG"; export LANG - fi - - # Now actually exec the command. - eval "exec \$cmd$args" - - $echo "$modename: cannot exec \$cmd$args" - exit 1 - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" - $echo "export $shlibpath_var" - fi - $echo "$cmd$args" - exit 0 - fi - ;; - - # libtool uninstall mode - uninstall) - modename="$modename: uninstall" - rm="$nonopt" - files= - - for arg - do - case "$arg" in - -*) rm="$rm $arg" ;; - *) files="$files $arg" ;; - esac - done - - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - for file in $files; do - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - rmfiles="$file" - - case "$name" in - *.la) - # Possibly a libtool archive, so verify it. - if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - . $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $dir/$n" - done - test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" - - $show "$rm $rmfiles" - $run $rm $rmfiles - - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - eval cmds=\"$postuninstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - done - IFS="$save_ifs" - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - eval cmds=\"$old_postuninstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - done - IFS="$save_ifs" - fi - - # FIXME: should reinstall the best remaining shared library. - fi - ;; - - *.lo) - if test "$build_old_libs" = yes; then - oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` - rmfiles="$rmfiles $dir/$oldobj" - fi - $show "$rm $rmfiles" - $run $rm $rmfiles - ;; - - *) - $show "$rm $rmfiles" - $run $rm $rmfiles - ;; - esac - done - exit 0 - ;; - - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 - exit 1 - ;; - esac - - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 - exit 1 -fi # test -z "$show_help" - -# We need to display help for each of the modes. -case "$mode" in -"") $echo \ -"Usage: $modename [OPTION]... [MODE-ARG]... - -Provide generalized library-building support services. - - --config show all configuration variables - --debug enable verbose shell tracing --n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --finish same as \`--mode=finish' - --help display this help message and exit - --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] - --quiet same as \`--silent' - --silent don't print informational messages - --version print version information - -MODE must be one of the following: - - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for -a more detailed description of MODE." - exit 0 - ;; - -compile) - $echo \ -"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -static always build a \`.o' file suitable for static linking - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - -execute) - $echo \ -"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - -finish) - $echo \ -"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - -install) - $echo \ -"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - -link) - $echo \ -"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -static do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - -uninstall) - $echo \ -"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - -*) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; -esac - -echo -$echo "Try \`$modename --help' for more information about other modes." - -exit 0 - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: Index: xc/extras/freetype2/builds/cygwin/mkinstalldirs diff -u xc/extras/freetype2/builds/cygwin/mkinstalldirs:1.1.1.1 xc/extras/freetype2/builds/cygwin/mkinstalldirs:removed --- xc/extras/freetype2/builds/cygwin/mkinstalldirs:1.1.1.1 Fri Dec 8 16:26:07 2000 +++ xc/extras/freetype2/builds/cygwin/mkinstalldirs Fri Jan 18 15:21:41 2002 @@ -1,40 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -# $Id: mkinstalldirs,v 1.1 2000/10/03 17:51:29 davidT Exp $ - -errstatus=0 - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" 1>&2 - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# mkinstalldirs ends here Index: xc/extras/freetype2/builds/cygwin/devel/freetype/config/ftoption.h diff -u xc/extras/freetype2/builds/cygwin/devel/freetype/config/ftoption.h:1.1.1.1 xc/extras/freetype2/builds/cygwin/devel/freetype/config/ftoption.h:removed --- xc/extras/freetype2/builds/cygwin/devel/freetype/config/ftoption.h:1.1.1.1 Fri Dec 8 16:26:07 2000 +++ xc/extras/freetype2/builds/cygwin/devel/freetype/config/ftoption.h Fri Jan 18 15:21:41 2002 @@ -1,400 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftoption.h */ -/* */ -/* User-selectable configuration macros (specification only). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTOPTION_H__ -#define __FTOPTION_H__ - - -#ifdef __cplusplus - extern "C" { -#endif - - - /*************************************************************************/ - /* */ - /* USER-SELECTABLE CONFIGURATION MACROS */ - /* */ - /* These macros can be toggled by developers to enable or disable */ - /* certain aspects of FreeType. This is a default file, where all major */ - /* options are enabled. */ - /* */ - /* Note that if some modifications are required for your build, we */ - /* advise you to put a modified copy of this file in your build */ - /* directory, rather than modifying it in-place. */ - /* */ - /* The build directory is normally `freetype/builds/' and */ - /* contains build or system-specific files that are included in */ - /* priority when building the library. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Convenience functions support */ - /* */ - /* Some functions of the FreeType 2 API are provided as a convenience */ - /* for client applications and developers. However, they are not */ - /* required to build and run the library itself. */ - /* */ - /* By defining this configuration macro, you'll disable the */ - /* compilation of these functions at build time. This can be useful */ - /* to reduce the library's code size when you don't need any of */ - /* these functions. */ - /* */ - /* All convenience functions are declared as such in their */ - /* documentation. */ - /* */ -#undef FT_CONFIG_OPTION_NO_CONVENIENCE_FUNCS - - - /*************************************************************************/ - /* */ - /* Alternate Glyph Image Format support */ - /* */ - /* By default, the glyph images returned by the FreeType glyph loader */ - /* can either be a pixmap or a vectorial outline defined through */ - /* Bezier control points. When defining the following configuration */ - /* macro, some font drivers will be able to register alternate */ - /* glyph image formats. */ - /* */ - /* Unset this macro if you are sure that you will never use a font */ - /* driver with an alternate glyph format; this will reduce the size of */ - /* the base layer code. */ - /* */ - /* Note that a few Type 1 fonts, as well as Windows `vector' fonts */ - /* use a vector `plotter' format that isn't supported when this */ - /* macro is undefined. */ - /* */ -#define FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS - - - /*************************************************************************/ - /* */ - /* Glyph Postscript Names handling */ - /* */ - /* By default, FreeType 2 is compiled with the `PSNames' module. This */ - /* This module is in charge of converting a glyph name string into a */ - /* Unicode value, or return a Macintosh standard glyph name for the */ - /* use with the TrueType `post' table. */ - /* */ - /* Undefine this macro if you do not want `PSNames' compiled in your */ - /* build of FreeType. This has the following effects: */ - /* */ - /* - The TrueType driver will provide its own set of glyph names, */ - /* if you build it to support postscript names in the TrueType */ - /* `post' table. */ - /* */ - /* - The Type 1 driver will not be able to synthetize a Unicode */ - /* charmap out of the glyphs found in the fonts. */ - /* */ - /* You would normally undefine this configuration macro when building */ - /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ - /* */ -#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Postscript Names to Unicode Values support */ - /* */ - /* By default, FreeType 2 is built with the `PSNames' module compiled */ - /* in. Among other things, the module is used to convert a glyph name */ - /* into a Unicode value. This is especially useful in order to */ - /* synthetize on the fly a Unicode charmap from the CFF/Type 1 driver */ - /* through a big table named the `Adobe Glyph List' (AGL). */ - /* */ - /* Undefine this macro if you do not want the Adobe Glyph List */ - /* compiled in your `PSNames' module. The Type 1 driver will not be */ - /* able to synthetize a Unicode charmap out of the glyphs found in the */ - /* fonts. */ - /* */ -#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST - - - /*************************************************************************/ - /* */ - /* Many compilers provide the non-ANSI `long long' 64-bit type. You can */ - /* activate it by defining the FTCALC_USE_LONG_LONG macro. Note that */ - /* this will produce many -ansi warnings during library compilation, and */ - /* that in many cases the generated code will not be smaller or faster! */ - /* */ -#undef FTCALC_USE_LONG_LONG - - - /*************************************************************************/ - /* */ - /* DLL export compilation */ - /* */ - /* When compiling FreeType as a DLL, some systems/compilers need a */ - /* special keyword in front OR after the return type of function */ - /* declarations. */ - /* */ - /* Two macros are used within the FreeType source code to define */ - /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ - /* */ - /* FT_EXPORT( return_type ) */ - /* */ - /* is used in a function declaration, as in */ - /* */ - /* FT_EXPORT( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ); */ - /* */ - /* */ - /* FT_EXPORT_DEF( return_type ) */ - /* */ - /* is used in a function definition, as in */ - /* */ - /* FT_EXPORT_DEF( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ) */ - /* { */ - /* ... some code ... */ - /* return FT_Err_Ok; */ - /* } */ - /* */ - /* You can provide your own implementation of FT_EXPORT and */ - /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ - /* will be later automatically defined as `extern return_type' to */ - /* allow normal compilation. */ - /* */ -#undef FT_EXPORT -#undef FT_EXPORT_DEF - - - /*************************************************************************/ - /* */ - /* Debug level */ - /* */ - /* FreeType can be compiled in debug or trace mode. In debug mode, */ - /* errors are reported through the `ftdebug' component. In trace */ - /* mode, additional messages are sent to the standard output during */ - /* execution. */ - /* */ - /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ - /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ - /* */ - /* Don't define any of these macros to compile in `release' mode! */ - /* */ -#define FT_DEBUG_LEVEL_ERROR -#define FT_DEBUG_LEVEL_TRACE - - - /*************************************************************************/ - /* */ - /* Computation Algorithms */ - /* */ - /* Used for debugging, this configuration macro should disappear */ - /* soon. */ - /* */ -#define FT_CONFIG_OPTION_OLD_CALCS - - - /*************************************************************************/ - /* */ - /* The size in bytes of the render pool used by the scan-line converter */ - /* to do all of its work. */ - /* */ - /* This must be greater than 4kByte. */ - /* */ -#define FT_RENDER_POOL_SIZE 16384 - - - /*************************************************************************/ - /* */ - /* FT_MAX_MODULES */ - /* */ - /* The maximum number of modules that can be registered in a single */ - /* FreeType library object. 16 is the default. */ - /* */ -#define FT_MAX_MODULES 16 - - - /*************************************************************************/ - /* */ - /* FT_MAX_EXTENSIONS */ - /* */ - /* The maximum number of extensions that can be registered in a single */ - /* font driver. 8 is the default. */ - /* */ - /* If you don't know what this means, you certainly do not need to */ - /* change this value. */ - /* */ -#define FT_MAX_EXTENSIONS 8 - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ - /* embedded bitmaps in all formats using the SFNT module (namely */ - /* TrueType & OpenType). */ - /* */ -#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ - /* load and enumerate the glyph Postscript names in a TrueType or */ - /* OpenType file. */ - /* */ - /* Note that when you do not compile the `PSNames' module by undefining */ - /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ - /* contain additional code used to read the PS Names table from a font. */ - /* */ - /* (By default, the module uses `PSNames' to extract glyph names.) */ - /* */ -#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ - /* access the internal name table in a SFNT-based format like TrueType */ - /* or OpenType. The name table contains various strings used to */ - /* describe the font, like family name, copyright, version, etc. It */ - /* does not contain any glyph name though. */ - /* */ - /* Accessing SFNT names is done through the functions declared in */ - /* `freetype/ftnames.h'. */ - /* */ -#define TT_CONFIG_OPTION_SFNT_NAMES - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ - /* a bytecode interpreter in the TrueType driver. Note that there are */ - /* important patent issues related to the use of the interpreter. */ - /* */ - /* By undefining this, you will only compile the code necessary to load */ - /* TrueType glyphs without hinting. */ - /* */ -#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */ - /* bytecode interpreter with a huge switch statement, rather than a call */ - /* table. This results in smaller and faster code for a number of */ - /* architectures. */ - /* */ - /* Note however that on some compiler/processor combinations, undefining */ - /* this macro will generate faster, though larger, code. */ - /* */ -#define TT_CONFIG_OPTION_INTERPRETER_SWITCH - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */ - /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ - /* required. */ - /* */ -#define T1_MAX_DICT_DEPTH 5 - - - /*************************************************************************/ - /* */ - /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ - /* calls during glyph loading. */ - /* */ -#define T1_MAX_SUBRS_CALLS 16 - - - /*************************************************************************/ - /* */ - /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ - /* minimum of 16 is required. */ - /* */ - /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ - /* */ -#define T1_MAX_CHARSTRINGS_OPERANDS 256 - - - /*************************************************************************/ - /* */ - /* Define T1_CONFIG_OPTION_DISABLE_HINTER if you want to generate a */ - /* driver with no hinter. This can be useful to debug the parser. */ - /* */ -#undef T1_CONFIG_OPTION_DISABLE_HINTER - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ - /* files into an existing face. Note that if set, the T1 driver will be */ - /* unable to produce kerning distances. */ - /* */ -#undef T1_CONFIG_OPTION_NO_AFM - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of the Multiple Masters font support in the Type 1 */ - /* driver. */ - /* */ -#undef T1_CONFIG_OPTION_NO_MM_SUPPORT - - -#ifdef __cplusplus - } -#endif - - -#endif /* __FTOPTION_H__ */ - - -/* END */ Index: xc/extras/freetype2/builds/dos/detect.mk diff -u xc/extras/freetype2/builds/dos/detect.mk:1.1.1.2 xc/extras/freetype2/builds/dos/detect.mk:1.1.1.4 --- xc/extras/freetype2/builds/dos/detect.mk:1.1.1.2 Tue May 15 23:45:45 2001 +++ xc/extras/freetype2/builds/dos/detect.mk Mon Jan 14 11:51:56 2002 @@ -40,7 +40,7 @@ # substring `MDOS\COMMAND' # ifeq ($(is_dos),) - is_dos := $(findstring MDOS\COMMAND,$(COMSPEC)) + is_dos := $(findstring MDOS\COMMAND,$(COMSPEC)) endif endif # test COMSPEC @@ -53,8 +53,6 @@ endif # test PLATFORM ansi ifeq ($(PLATFORM),dos) - DELETE := del - COPY := copy # Use DJGPP (i.e. gcc) by default. # @@ -82,6 +80,14 @@ .PHONY: watcom endif + ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32-bit + CONFIG_FILE := dos-bcc.mk + SEP := $(BACKSLASH) + CC := bcc32 + borlandc: setup + .PHONY: borlandc + endif + ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16-bit CONFIG_FILE := dos-bcc.mk SEP := $(BACKSLASH) @@ -90,15 +96,15 @@ .PHONY: borlandc16 endif - ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32-bit - CONFIG_FILE := dos-bcc.mk - SEP := $(BACKSLASH) - CC := bcc32 - borlandc: setup - .PHONY: borlandc + ifneq ($(findstring bash,$(SHELL)),) # check for bash + DELETE := rm + COPY := cp + setup: std_setup + else + DELETE := del + COPY := copy + setup: dos_setup endif - - setup: dos_setup endif # test PLATFORM dos Index: xc/extras/freetype2/builds/dos/dos-def.mk diff -u xc/extras/freetype2/builds/dos/dos-def.mk:1.1.1.2 xc/extras/freetype2/builds/dos/dos-def.mk:1.1.1.4 --- xc/extras/freetype2/builds/dos/dos-def.mk:1.1.1.2 Tue May 15 23:45:45 2001 +++ xc/extras/freetype2/builds/dos/dos-def.mk Sun Dec 16 12:49:13 2001 @@ -53,33 +53,7 @@ # The NO_OUTPUT macro is used to ignore the output of commands. # -NO_OUTPUT = &> nul +NO_OUTPUT = > nul - -ifdef BUILD_PROJECT - - .PHONY: clean_project distclean_project - - # Now include the main sub-makefile. It contains all the rules used to - # build the library with the previous variables defined. - # - include $(TOP)/builds/$(PROJECT).mk - - # The cleanup targets. - # - clean_project: clean_project_dos - distclean_project: distclean_project_dos - - # This final rule is used to link all object files into a single library. - # It is part of the system-specific sub-Makefile because not all - # librarians accept a simple syntax like - # - # librarian library_file {list of object files} - # - $(PROJECT_LIBRARY): $(OBJECTS_LIST) - -$(CLEAN_LIBRARY) $(NO_OUTPUT) - $(LINK_LIBRARY) - -endif # EOF Index: xc/extras/freetype2/builds/dos/dos-gcc.mk diff -u xc/extras/freetype2/builds/dos/dos-gcc.mk:1.1.1.1 xc/extras/freetype2/builds/dos/dos-gcc.mk:1.1.1.2 --- xc/extras/freetype2/builds/dos/dos-gcc.mk:1.1.1.1 Fri Dec 8 16:26:07 2000 +++ xc/extras/freetype2/builds/dos/dos-gcc.mk Sun Sep 9 22:55:47 2001 @@ -14,9 +14,9 @@ SEP := / -CLEAN_LIBRARY := $(DELETE) $@ -include $(TOP)/builds/compiler/gcc.mk include $(TOP)/builds/dos/dos-def.mk +include $(TOP)/builds/compiler/gcc.mk +include $(TOP)/builds/link_dos.mk # EOF Index: xc/extras/freetype2/builds/mac/README diff -u xc/extras/freetype2/builds/mac/README:1.1.1.1 xc/extras/freetype2/builds/mac/README:1.1.1.2 --- xc/extras/freetype2/builds/mac/README:1.1.1.1 Fri Dec 8 16:26:07 2000 +++ xc/extras/freetype2/builds/mac/README Mon Jan 14 11:51:56 2002 @@ -1,11 +1,14 @@ -This folder contains supporting code and CodeWarrior Pro 4 project -files to build the FreeType library. +This folder contains + . a Makefile for Apple MPW build environment (currently PPC only) + + . supporting code and CodeWarrior Pro 7 project files to build the + FreeType library. + Notes: The library will be built as a static lib in the obj/ folder. -Just van Rossum, +Current maintainer: Leonard Rosenthol, +Originally prepared by Just van Rossum, -DISCLAIMER: this subdirectory is *not* being maintained by the -FreeType team, but by Just van Rossum. It's being released under -the same terms as FreeType (see LICENSE.TXT). +This directory is now actively maintained as part of the FreeType Project. Index: xc/extras/freetype2/builds/mac/freetype.make diff -u /dev/null xc/extras/freetype2/builds/mac/freetype.make:1.1.1.1 --- /dev/null Fri Jan 18 15:21:41 2002 +++ xc/extras/freetype2/builds/mac/freetype.make Mon Jan 14 11:51:56 2002 @@ -0,0 +1,109 @@ +# Makefile for Apple MPW build environment (currently PPC only) + +MAKEFILE = Makefile +ÿMondoBuildÿ = #{MAKEFILE} # Make blank to avoid rebuilds when makefile is modified +SymÿPPC = #-sym on +ObjDirÿPPC = :obj: + +CFLAGS = -i :include -i :src -includes unix {SymÿPPC} + +OBJS = ÿ + "{ObjDirÿPPC}ftsystem.c.x" ÿ + "{ObjDirÿPPC}ftdebug.c.x" ÿ + "{ObjDirÿPPC}ftinit.c.x" ÿ + "{ObjDirÿPPC}ftbase.c.x" ÿ + "{ObjDirÿPPC}ftglyph.c.x" ÿ + "{ObjDirÿPPC}ftmm.c.x" ÿ + "{ObjDirÿPPC}ftbbox.c.x" ÿ + "{ObjDirÿPPC}autohint.c.x" ÿ + "{ObjDirÿPPC}ftcache.c.x" ÿ + "{ObjDirÿPPC}cff.c.x" ÿ + "{ObjDirÿPPC}type1cid.c.x" ÿ + "{ObjDirÿPPC}pcf.c.x" ÿ + "{ObjDirÿPPC}psaux.c.x" ÿ + "{ObjDirÿPPC}psmodule.c.x" ÿ + "{ObjDirÿPPC}raster.c.x" ÿ + "{ObjDirÿPPC}sfnt.c.x" ÿ + "{ObjDirÿPPC}smooth.c.x" ÿ + "{ObjDirÿPPC}truetype.c.x" ÿ + "{ObjDirÿPPC}type1.c.x" ÿ + "{ObjDirÿPPC}winfnt.c.x" ÿ + "{ObjDirÿPPC}ftmac.c.x" ÿ + +# Main target - build a library +freetype ÿÿ {ÿMondoBuildÿ} directories freetype.o + +# This is used to build the library +freetype.o ÿÿ {ÿMondoBuildÿ} {OBJS} + PPCLink ÿ + -o :lib:{Targ} {SymÿPPC} ÿ + {OBJS} -c '????' -xm l + +# This is used to create the directories needed for build +directories ÿ + if !`Exists obj` ; NewFolder obj ; end + if !`Exists lib` ; NewFolder lib ; end + + +"{ObjDirÿPPC}ftsystem.c.x" ÿ {ÿMondoBuildÿ} ":src:base:ftsystem.c" + {PPCC} ":src:base:ftsystem.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}ftdebug.c.x" ÿ {ÿMondoBuildÿ} ":src:base:ftdebug.c" + {PPCC} ":src:base:ftdebug.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}ftinit.c.x" ÿ {ÿMondoBuildÿ} ":src:base:ftinit.c" + {PPCC} ":src:base:ftinit.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}ftbase.c.x" ÿ {ÿMondoBuildÿ} ":src:base:ftbase.c" + {PPCC} ":src:base:ftbase.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}ftglyph.c.x" ÿ {ÿMondoBuildÿ} ":src:base:ftglyph.c" + {PPCC} ":src:base:ftglyph.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}ftmm.c.x" ÿ {ÿMondoBuildÿ} ":src:base:ftmm.c" + {PPCC} ":src:base:ftmm.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}ftbbox.c.x" ÿ {ÿMondoBuildÿ} ":src:base:ftbbox.c" + {PPCC} ":src:base:ftbbox.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}autohint.c.x" ÿ {ÿMondoBuildÿ} ":src:autohint:autohint.c" + {PPCC} ":src:autohint:autohint.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}ftcache.c.x" ÿ {ÿMondoBuildÿ} ":src:cache:ftcache.c" + {PPCC} ":src:cache:ftcache.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}cff.c.x" ÿ {ÿMondoBuildÿ} ":src:cff:cff.c" + {PPCC} ":src:cff:cff.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}type1cid.c.x" ÿ {ÿMondoBuildÿ} ":src:cid:type1cid.c" + {PPCC} ":src:cid:type1cid.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}pcf.c.x" ÿ {ÿMondoBuildÿ} ":src:pcf:pcf.c" + {PPCC} ":src:pcf:pcf.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}psaux.c.x" ÿ {ÿMondoBuildÿ} ":src:psaux:psaux.c" + {PPCC} ":src:psaux:psaux.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}psmodule.c.x" ÿ {ÿMondoBuildÿ} ":src:psnames:psmodule.c" + {PPCC} ":src:psnames:psmodule.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}raster.c.x" ÿ {ÿMondoBuildÿ} ":src:raster:raster.c" + {PPCC} ":src:raster:raster.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}sfnt.c.x" ÿ {ÿMondoBuildÿ} ":src:sfnt:sfnt.c" + {PPCC} ":src:sfnt:sfnt.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}smooth.c.x" ÿ {ÿMondoBuildÿ} ":src:smooth:smooth.c" + {PPCC} ":src:smooth:smooth.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}truetype.c.x" ÿ {ÿMondoBuildÿ} ":src:truetype:truetype.c" + {PPCC} ":src:truetype:truetype.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}type1.c.x" ÿ {ÿMondoBuildÿ} ":src:type1:type1.c" + {PPCC} ":src:type1:type1.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}winfnt.c.x" ÿ {ÿMondoBuildÿ} ":src:winfonts:winfnt.c" + {PPCC} ":src:winfonts:winfnt.c" -o {Targ} {CFLAGS} + +"{ObjDirÿPPC}ftmac.c.x" ÿ {ÿMondoBuildÿ} ":src:base:ftmac.c" + {PPCC} ":src:base:ftmac.c" -o {Targ} {CFLAGS} \ No newline at end of file Index: xc/extras/freetype2/builds/os2/os2-def.mk diff -u xc/extras/freetype2/builds/os2/os2-def.mk:1.1.1.2 xc/extras/freetype2/builds/os2/os2-def.mk:1.1.1.3 --- xc/extras/freetype2/builds/os2/os2-def.mk:1.1.1.2 Tue May 15 23:45:45 2001 +++ xc/extras/freetype2/builds/os2/os2-def.mk Sun Sep 9 22:55:47 2001 @@ -55,31 +55,4 @@ # NO_OUTPUT = 2> nul - -ifdef BUILD_LIBRARY - - .PHONY: clean_project distclean_project - - # Now include the main sub-makefile. It contains all the rules used to - # build the library with the previous variables defined. - # - include $(TOP)/builds/$(PROJECT).mk - - # The cleanup targets. - # - clean_project: clean_project_dos - distclean_project: distclean_project_dos - - # This final rule is used to link all object files into a single library. - # It is part of the system-specific sub-Makefile because not all - # librarians accept a simple syntax like - # - # librarian library_file {list of object files} - # - $(PROJECT_LIBRARY): $(OBJECTS_LIST) - -$(CLEAN_LIBRARY) $(NO_OUTPUT) - $(LINK_LIBRARY) - -endif - # EOF Index: xc/extras/freetype2/builds/os2/os2-dev.mk diff -u xc/extras/freetype2/builds/os2/os2-dev.mk:1.1.1.2 xc/extras/freetype2/builds/os2/os2-dev.mk:1.1.1.3 --- xc/extras/freetype2/builds/os2/os2-dev.mk:1.1.1.2 Tue May 15 23:45:45 2001 +++ xc/extras/freetype2/builds/os2/os2-dev.mk Sun Sep 9 22:55:47 2001 @@ -1,5 +1,5 @@ # -# FreeType 2 configuration rules for OS/2 + gcc +# FreeType 2 configuration rules for OS/2 + GCC # # Development version without optimizations. # @@ -19,123 +19,15 @@ TOP := . endif -DELETE := del -SEP := / -HOSTSEP := $(strip \ ) -BUILD := $(TOP)/builds/os2 -PLATFORM := os2 -CC := gcc +SEP := / +include $(TOP)/builds/os2/os2-def.mk +BUILD := $(TOP)/builds/devel -# The directory where all object files are placed. -# -# This lets you build the library in your own directory with something like -# -# set TOP=.../path/to/freetype2/top/dir... -# set OBJ_DIR=.../path/to/obj/dir -# make -f %TOP%/Makefile setup [options] -# make -f %TOP%/Makefile -# -ifndef OBJ_DIR - OBJ_DIR := $(TOP)$(SEP)obj -endif - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := o -SO := o - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := a -SA := a - - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := lib$(PROJECT) - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D +include $(TOP)/builds/compiler/gcc-dev.mk +# include linking instructions +include $(TOP)/builds/link_dos.mk -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -c -g -O0 -Wall -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := -ansi -pedantic - - -ifdef BUILD_FREETYPE - - .PHONY: clean_freetype distclean_freetype - - # Now include the main sub-makefile. It contains all the rules used to - # build the library with the previous variables defined. - # - include $(TOP)/builds/freetype.mk - - # The cleanup targets. - # - clean_freetype: clean_freetype_dos - distclean_freetype: distclean_freetype_dos - - # Librarian to use to build the static library - # - FT_LIBRARIAN := $(AR) -r - - - # This final rule is used to link all object files into a single library. - # It is part of the system-specific sub-Makefile because not all - # librarians accept a simple syntax like - # - # librarian library_file {list of object files} - # - $(FT_LIBRARY): $(OBJECTS_LIST) - -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul - $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) - -endif # EOF Index: xc/extras/freetype2/builds/os2/os2-gcc.mk diff -u xc/extras/freetype2/builds/os2/os2-gcc.mk:1.1.1.2 xc/extras/freetype2/builds/os2/os2-gcc.mk:1.1.1.3 --- xc/extras/freetype2/builds/os2/os2-gcc.mk:1.1.1.2 Tue May 15 23:45:45 2001 +++ xc/extras/freetype2/builds/os2/os2-gcc.mk Sun Sep 9 22:55:47 2001 @@ -1,5 +1,5 @@ # -# FreeType 2 configuration rules for OS/2 + gcc +# FreeType 2 configuration rules for the OS/2 + gcc # @@ -13,128 +13,15 @@ # fully. -ifndef TOP - TOP := . -endif - -DELETE := del -SEP := / -HOSTSEP := $(strip \ ) -BUILD := $(TOP)/builds/os2 -PLATFORM := os2 -CC := gcc +SEP := / +# include OS/2-specific definitions +include $(TOP)/builds/os2/os2-def.mk -# The directory where all object files are placed. -# -# This lets you build the library in your own directory with something like -# -# set TOP=.../path/to/freetype2/top/dir... -# set OBJ_DIR=.../path/to/obj/dir -# make -f %TOP%Makefile setup [options] -# make -f %TOP%Makefile -# -ifndef OBJ_DIR - OBJ_DIR := $(TOP)$(SEP)obj -endif - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := o -SO := o - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := a -SA := a - - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := lib$(PROJECT) - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -c -g -O6 -Wall -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := -ansi -pedantic - - -ifdef BUILD_FREETYPE - - .PHONY: clean_freetype distclean_freetype - - # Now include the main sub-makefile. It contains all the rules used to - # build the library with the previous variables defined. - # - include $(TOP)/builds/freetype.mk - - # The cleanup targets. - # - clean_freetype: clean_freetype_dos - distclean_freetype: distclean_freetype_dos - - # Librarian to use to build the static library - # - FT_LIBRARIAN := $(AR) -r - - - # This final rule is used to link all object files into a single library. - # It is part of the system-specific sub-Makefile because not all - # librarians accept a simple syntax like - # - # librarian library_file {list of object files} - # - $(FT_LIBRARY): $(OBJECTS_LIST) - -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul - $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) +# include gcc-specific definitions +include $(TOP)/builds/compiler/gcc.mk -endif +# include linking instructions +include $(TOP)/builds/link_dos.mk # EOF Index: xc/extras/freetype2/builds/unix/aclocal.m4 diff -u xc/extras/freetype2/builds/unix/aclocal.m4:1.1.1.1 xc/extras/freetype2/builds/unix/aclocal.m4:1.1.1.2 --- xc/extras/freetype2/builds/unix/aclocal.m4:1.1.1.1 Fri Dec 8 16:26:08 2000 +++ xc/extras/freetype2/builds/unix/aclocal.m4 Sun Sep 9 22:55:48 2001 @@ -26,8 +26,9 @@ AC_MSG_RESULT([char *])) ]) -## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*- -## Copyright (C) 1996-1999 Free Software Foundation, Inc. +# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- +## Copyright 1996, 1997, 1998, 1999, 2000, 2001 +## Free Software Foundation, Inc. ## Originally by Gordon Matzigkeit , 1996 ## ## This program is free software; you can redistribute it and/or modify @@ -49,134 +50,2817 @@ ## configuration script generated by Autoconf, you may include it under ## the same distribution terms that you use for the rest of that program. -# serial 40 AC_PROG_LIBTOOL -AC_DEFUN(AC_PROG_LIBTOOL, +# serial 46 AC_PROG_LIBTOOL +AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl -# Save cache, so that ltconfig can load it -AC_CACHE_SAVE +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +]) + +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.13)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +_LT_AC_PROG_ECHO_BACKSLASH +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE(libtool-lock, + [ --disable-libtool-lock avoid locking (might break parallel builds)]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_SAVE + AC_LANG_C + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_RESTORE]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one + AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, + [AC_TRY_LINK([], + [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); + DllMain (0, 0, 0);], + [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) + + case $host/$CC in + *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) + # old mingw systems require "-dll" to link a DLL, while more recent ones + # require "-mdll" + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -mdll" + AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, + [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) + CFLAGS="$SAVE_CFLAGS" ;; + *-*-cygwin* | *-*-pw32*) + # cygwin systems need to pass --dll to the linker, and not link + # crt.o which will require a WinMain@16 definition. + lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; + esac + ;; + ]) +esac + +_LT_AC_LTCONFIG_HACK + +]) + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN(_LT_AC_CHECK_DLFCN, +[AC_CHECK_HEADERS(dlfcn.h) +])# _LT_AC_CHECK_DLFCN + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +[symcode='[BCDEGRST]'] + +# Regexp to match symbols that can be accessed directly from C. +[sympat='\([_A-Za-z][_A-Za-z0-9]*\)'] + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Define system-specific variables. +case $host_os in +aix*) + [symcode='[BCDT]'] + ;; +cygwin* | mingw* | pw32*) + [symcode='[ABCDGISTW]'] + ;; +hpux*) # Its linker distinguishes data from code symbols + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + ;; +irix*) + [symcode='[BCDEGRST]'] + ;; +solaris* | sysv5*) + [symcode='[BDT]'] + ;; +sysv4) + [symcode='[DFNSTU]'] + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $host_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + [symcode='[ABCDGISTW]'] +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. +[lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"] + + # Check to see that the pipe works correctly. + pipe_works=no + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +[lt_preloaded_symbols[] =] +{ +EOF + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if AC_TRY_EVAL(ac_link) && test -s conftest; then + pipe_works=yes + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AC_FD_CC + fi + else + echo "cannot find nm_test_var in $nlist" >&AC_FD_CC + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC + fi + else + echo "$progname: failed program was:" >&AC_FD_CC + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +if test -z "$lt_cv_sys_global_symbol_pipe"; then + global_symbol_to_cdecl= +else + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" +fi +if test -z "$global_symbol_pipe$global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + +# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR +# --------------------------------- +AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], +[# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac +fi +])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn;t interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +AC_DIVERT_POP +])# _LT_AC_PROG_ECHO_BACKSLASH + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN(_LT_AC_TRY_DLOPEN_SELF, +[if test "$cross_compiling" = yes; then : + [$4] +else + AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN(AC_LIBTOOL_DLOPEN_SELF, +[if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + cygwin* | mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + *) + AC_CHECK_LIB(dl, dlopen, [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_FUNC(dlopen, lt_cv_dlopen="dlopen", + [AC_CHECK_FUNC(shl_load, lt_cv_dlopen="shl_load", + [AC_CHECK_LIB(svld, dlopen, + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB(dld, shl_load, + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + +AC_DEFUN([_LT_AC_LTCONFIG_HACK], +[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" +need_locks="$enable_libtool_lock" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +if test x"$host" != x"$build"; then + ac_tool_prefix=${host_alias}- +else + ac_tool_prefix= +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case $host_os in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="[$]2" + +## FIXME: this should be a separate macro +## +AC_MSG_CHECKING([for objdir]) +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +AC_MSG_RESULT($objdir) +## +## END FIXME + + +## FIXME: this should be a separate macro +## +AC_ARG_WITH(pic, +[ --with-pic try to use only PIC/non-PIC objects [default=use both]], +pic_mode="$withval", pic_mode=default) +test -z "$pic_mode" && pic_mode=default + +# We assume here that the value for lt_cv_prog_cc_pic will not be cached +# in isolation, and that seeing it set (from the cache) indicates that +# the associated values are set (in the cache) correctly too. +AC_MSG_CHECKING([for $compiler option to produce PIC]) +AC_CACHE_VAL(lt_cv_prog_cc_pic, +[ lt_cv_prog_cc_pic= + lt_cv_prog_cc_shlib= + lt_cv_prog_cc_wl= + lt_cv_prog_cc_static= + lt_cv_prog_cc_no_builtin= + lt_cv_prog_cc_can_build_shared=$can_build_shared + + if test "$GCC" = yes; then + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-static' + + case $host_os in + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # we not sure about C++ programs. + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_cv_prog_cc_pic=-Kconform_pic + fi + ;; + *) + lt_cv_prog_cc_pic='-fPIC' + ;; + esac + else + # PORTME Check for PIC flags for the system compiler. + case $host_os in + aix3* | aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + else + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better lt_cv_prog_cc_static that works with the bundled CC? + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" + lt_cv_prog_cc_pic='+Z' + ;; + + irix5* | irix6*) + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + + newsos6) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + ;; + + sco3.2v5*) + lt_cv_prog_cc_pic='-Kpic' + lt_cv_prog_cc_static='-dn' + lt_cv_prog_cc_shlib='-belf' + ;; + + solaris*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + sunos4*) + lt_cv_prog_cc_pic='-PIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + if test "x$host_vendor" = xsni; then + lt_cv_prog_cc_wl='-LD' + else + lt_cv_prog_cc_wl='-Wl,' + fi + ;; + + uts4*) + lt_cv_prog_cc_pic='-pic' + lt_cv_prog_cc_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_cv_prog_cc_pic='-Kconform_pic' + lt_cv_prog_cc_static='-Bstatic' + fi + ;; + + *) + lt_cv_prog_cc_can_build_shared=no + ;; + esac + fi +]) +if test -z "$lt_cv_prog_cc_pic"; then + AC_MSG_RESULT([none]) +else + AC_MSG_RESULT([$lt_cv_prog_cc_pic]) + + # Check to make sure the pic_flag actually works. + AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) + AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + AC_TRY_COMPILE([], [], [dnl + case $host_os in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then + # they create non-PIC objects. So, if there were any warnings, we + # assume that PIC is not supported. + if test -s conftest.err; then + lt_cv_prog_cc_pic_works=no + else + lt_cv_prog_cc_pic_works=yes + fi + ;; + *) + lt_cv_prog_cc_pic_works=yes + ;; + esac + ], [dnl + lt_cv_prog_cc_pic_works=no + ]) + CFLAGS="$save_CFLAGS" + ]) + + if test "X$lt_cv_prog_cc_pic_works" = Xno; then + lt_cv_prog_cc_pic= + lt_cv_prog_cc_can_build_shared=no + else + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" + fi + + AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) +fi +## +## END FIXME + +# Check for any special shared library compilation flags. +if test -n "$lt_cv_prog_cc_shlib"; then + AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | [egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]"] >/dev/null; then : + else + AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) + lt_cv_prog_cc_can_build_shared=no + fi +fi + +## FIXME: this should be a separate macro +## +AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) +AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl + lt_cv_prog_cc_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) + LDFLAGS="$save_LDFLAGS" +]) + +# Belt *and* braces to stop my trousers falling down: +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) + +pic_flag="$lt_cv_prog_cc_pic" +special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +wl="$lt_cv_prog_cc_wl" +link_static_flag="$lt_cv_prog_cc_static" +no_builtin_flag="$lt_cv_prog_cc_no_builtin" +can_build_shared="$lt_cv_prog_cc_can_build_shared" +## +## END FIXME + + +## FIXME: this should be a separate macro +## +# Check to see if options -o and -c are simultaneously supported by compiler +AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) +AC_CACHE_VAL([lt_cv_compiler_c_o], [ +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +echo "int some_variable = 0;" > conftest.$ac_ext +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +compiler_c_o=no +if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + lt_cv_compiler_c_o=no + else + lt_cv_compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&AC_FD_CC + lt_cv_compiler_c_o=no +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null +]) +compiler_c_o=$lt_cv_compiler_c_o +AC_MSG_RESULT([$compiler_c_o]) + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) + AC_CACHE_VAL([lt_cv_compiler_o_lo], [ + lt_cv_compiler_o_lo=no + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + AC_TRY_COMPILE([], [int some_variable = 0;], [dnl + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + lt_cv_compiler_o_lo=no + else + lt_cv_compiler_o_lo=yes + fi + ]) + CFLAGS="$save_CFLAGS" + ]) + compiler_o_lo=$lt_cv_compiler_o_lo + AC_MSG_RESULT([$compiler_c_lo]) +else + compiler_o_lo=no +fi +## +## END FIXME + +## FIXME: this should be a separate macro +## +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +## +## END FIXME + +## FIXME: this should be a separate macro +## +if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + AC_TRY_COMPILE([], [int some_variable = 0;], [dnl + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + compiler_rtti_exceptions=no + else + compiler_rtti_exceptions=yes + fi + ]) + CFLAGS="$save_CFLAGS" + AC_MSG_RESULT([$compiler_rtti_exceptions]) + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi +fi +## +## END FIXME + +## FIXME: this should be a separate macro +## +# See if the linker supports building shared libraries. +AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +old_archive_from_expsyms_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_into_libs=no +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +link_all_deplibs=unknown +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. +extract_expsyms_cmds= + +case $host_os in +cygwin* | mingw* | pw32* ) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ + test -f $output_objdir/impgen.exe || (cd $output_objdir && \ + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ + else $CC -o impgen impgen.c ; fi)~ + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' + + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' + + # cygwin and mingw dlls have different entry points and sets of symbols + # to exclude. + # FIXME: what about values for MSVC? + dll_entry=__cygwin_dll_entry@12 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ + case $host_os in + mingw*) + # mingw values + dll_entry=_DllMainCRTStartup@12 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ + ;; + esac + + # mingw and cygwin differ, and it's simplest to just exclude the union + # of the two symbol sets. + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one (in ltdll.c) + if test "x$lt_cv_need_dllmain" = "xyes"; then + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " + ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < [$]0 > $output_objdir/$soname-ltdll.c~ + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' + else + ltdll_obj= + ltdll_cmds= + fi + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left be newer dlltools. + export_symbols_cmds="$ltdll_cmds"' + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ + [sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//"] < $output_objdir/$soname-def > $export_symbols' + + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is. + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname-def; + else + echo EXPORTS > $output_objdir/$soname-def; + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \[$]# in + 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; + *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done; + fi~ + '"$ltdll_cmds"' + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw* | pw32*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + shared_flag='-shared' + else + if test "$host_cpu" = ia64; then + shared_flag='-G' + else + shared_flag='${wl}-bM:SRE' + fi + hardcode_direct=yes + fi + + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # Test if we are trying to use run time linking, or normal AIX style linking. + # If -brtl is somewhere in LDFLAGS, we need to do run time linking. + aix_use_runtimelinking=no + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then + aix_use_runtimelinking=yes + break + fi + done + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + # It seems that -bexpall can do strange things, so it is better to + # generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + allow_undefined_flag=' -Wl,-G' + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-znodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + # Warning - without using the other run time loading flags, -berok will + # link without error, but may produce a broken library. + allow_undefined_flag='${wl}-berok" + # This is a bit strange, but is similar to how AIX traditionally builds + # it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + ;; + + darwin* | rhapsody*) + allow_undefined_flag='-undefined suppress' + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + archive_cmds='$CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linkopts -install_name $rpath/$soname $(test -n "$verstring" -a x$verstring != x0.0 && echo $verstring)' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + hardcode_direct=yes + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load $convenience' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case $host_os in + hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + #Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z defs' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + [solaris2.[0-5] | solaris2.[0-5].*]) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + if test "x$host_vendor" = xsno; then + archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes # is this really true??? + else + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5uw7* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +AC_MSG_RESULT([$ld_shlibs]) +test "$ld_shlibs" = no && can_build_shared=no +## +## END FIXME + +## FIXME: this should be a separate macro +## +# Check hardcoding attributes. +AC_MSG_CHECKING([how to hardcode library paths into programs]) +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +AC_MSG_RESULT([$hardcode_action]) +## +## END FIXME + +## FIXME: this should be a separate macro +## +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +## +## END FIXME + +reload_cmds='$LD$reload_flag -o $output$reload_objs' +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +## FIXME: this should be a separate macro +## +# PORTME Fill in your ld.so characteristics +AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4* | aix5*) + version_type=linux + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + [ aix4 | aix4.[01] | aix4.[01].*)] + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so instead of + # lib.a to let people know that these are not typical AIX shared libraries. + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}.so$major' + fi + shlibpath_var=LIBPATH + deplibs_check_method=pass_all + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | [$Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\'']`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + need_version=no + need_lib_prefix=no + case $GCC,$host_os in + yes,cygwin*) + library_names_spec='$libname.dll.a' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll' + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog .libs/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + ;; + yes,mingw*) + library_names_spec='${libname}`echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` + ;; + yes,pw32*) + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + ;; + *) + library_names_spec='${libname}`echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + *) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6*) + version_type=irix + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' + case $host_os in + irix5*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + need_version=no + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; -# Actually configure libtool. ac_aux_dir is where install-sh is found. -CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ -LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ -LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ -DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ -${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ -$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \ -|| AC_MSG_ERROR([libtool configure failed]) +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; -# Reload cache, that may have been modified by ltconfig -AC_CACHE_LOAD +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no +## +## END FIXME -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" +## FIXME: this should be a separate macro +## +# Report the final consequences. +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) +## +## END FIXME -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi -# Redirect the config.log output again, so that the ltconfig log is not -# clobbered by the next message. -exec 5>>./config.log -]) +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi -AC_DEFUN(AC_LIBTOOL_SETUP, -[AC_PREREQ(2.13)dnl -AC_REQUIRE([AC_ENABLE_SHARED])dnl -AC_REQUIRE([AC_ENABLE_STATIC])dnl -AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([AC_PROG_RANLIB])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_LD])dnl -AC_REQUIRE([AC_PROG_NM])dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -dnl +AC_LIBTOOL_DLOPEN_SELF -case "$target" in -NONE) lt_target="$host" ;; -*) lt_target="$target" ;; -esac +## FIXME: this should be a separate macro +## +if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], + [$rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile); then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_cv_prog_cc_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi]) + AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) + ;; + esac +fi +need_lc=${lt_cv_archive_cmds_need_lc-yes} +## +## END FIXME -# Check for any special flags to pass to ltconfig. -libtool_flags="--cache-file=$cache_file" -test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" -test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" -test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" -test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" -ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], -[libtool_flags="$libtool_flags --enable-dlopen"]) -ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], -[libtool_flags="$libtool_flags --enable-win32-dll"]) -AC_ARG_ENABLE(libtool-lock, - [ --disable-libtool-lock avoid locking (might break parallel builds)]) -test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" -test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" +## FIXME: this should be a separate macro +## +# The second clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + : +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case "$lt_target" in -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" +if test -f "$ltmain"; then + trap "$rm \"${ofile}T\"; exit 1" 1 2 15 + $rm -f "${ofile}T" + + echo creating $ofile + + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS \ + AR AR_FLAGS CC LD LN_S NM SHELL \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ + old_striplib striplib file_magic_cmd export_symbols_cmds \ + deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case $var in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; - *64-bit*) - LD="${LD-ld} -64" + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac - fi - rm -rf conftest* - ;; + done -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; + cat <<__EOF__ > "${ofile}T" +#! $SHELL -ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], -[*-*-cygwin* | *-*-mingw*) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -]) -esac -]) +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996-2000 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="sed -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$need_lc + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# The default C compiler. +CC=$lt_CC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_pic_flag +pic_mode=$pic_mode + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$lt_compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + case $host_os in + aix3*) + cat <<\EOF >> "${ofile}T" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + case $host_os in + cygwin* | mingw* | pw32* | os2*) + cat <<'EOF' >> "${ofile}T" + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# */ +# +# #include /* for printf() */ +# #include /* for open(), lseek(), read() */ +# #include /* for O_RDONLY, O_BINARY */ +# #include /* for strdup() */ +# +# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +# #ifndef O_BINARY +# #define O_BINARY 0 +# #endif +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (dll < 1) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + + mv -f "${ofile}T" "$ofile" || \ + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") + chmod +x "$ofile" +fi +## +## END FIXME + +])# _LT_AC_LTCONFIG_HACK + # AC_LIBTOOL_DLOPEN - enable checks for dlopen support -AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) +AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's -AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) # AC_ENABLE_SHARED - implement the --enable-shared flag # Usage: AC_ENABLE_SHARED[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. -AC_DEFUN(AC_ENABLE_SHARED, [dnl -define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(shared, changequote(<<, >>)dnl << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} -case "$enableval" in +case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) @@ -195,21 +2879,22 @@ ]) # AC_DISABLE_SHARED - set the default shared flag to --disable-shared -AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no)]) # AC_ENABLE_STATIC - implement the --enable-static flag # Usage: AC_ENABLE_STATIC[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. -AC_DEFUN(AC_ENABLE_STATIC, [dnl -define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(static, changequote(<<, >>)dnl << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} -case "$enableval" in +case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) @@ -228,7 +2913,8 @@ ]) # AC_DISABLE_STATIC - set the default static flag to --disable-static -AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no)]) @@ -236,14 +2922,14 @@ # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. -AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl -define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(fast-install, changequote(<<, >>)dnl << --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} -case "$enableval" in +case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) @@ -261,12 +2947,98 @@ enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl ]) -# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install -AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no)]) +# AC_LIBTOOL_PICMODE - implement the --with-pic flag +# Usage: AC_LIBTOOL_PICMODE[(MODE)] +# Where MODE is either `yes' or `no'. If omitted, it defaults to +# `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default)]) + + +# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +]) + + +# AC_PATH_MAGIC - find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl +AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) + else + MAGIC_CMD=: + fi +fi +]) + + # AC_PROG_LD - find the path to the GNU or non-GNU linker -AC_DEFUN(AC_PROG_LD, +AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) @@ -274,16 +3046,20 @@ AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld -if test "$ac_cv_prog_gcc" = yes; then +if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in # Accept absolute paths. -changequote(,)dnl - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' -changequote([,])dnl + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do @@ -305,17 +3081,17 @@ else AC_MSG_CHECKING([for non-GNU ld]) fi -AC_CACHE_VAL(ac_cv_path_LD, +AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - ac_cv_path_LD="$ac_dir/$ac_prog" + lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. - if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break @@ -324,9 +3100,9 @@ done IFS="$ac_save_ifs" else - ac_cv_path_LD="$LD" # Let the user override the test with a path. + lt_cv_path_LD="$LD" # Let the user override the test with a path. fi]) -LD="$ac_cv_path_LD" +LD="$lt_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else @@ -336,56 +3112,241 @@ AC_PROG_LD_GNU ]) -AC_DEFUN(AC_PROG_LD_GNU, -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, +# AC_PROG_LD_GNU - +AC_DEFUN([AC_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then - ac_cv_prog_gnu_ld=yes + lt_cv_prog_gnu_ld=yes else - ac_cv_prog_gnu_ld=no + lt_cv_prog_gnu_ld=no fi]) +with_gnu_ld=$lt_cv_prog_gnu_ld +]) + +# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], +[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, +[lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +test -n "$reload_flag" && reload_flag=" $reload_flag" +]) + +# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], +[AC_CACHE_CHECK([how to recognise dependant libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# ['file_magic [regex]'] -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'] + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin* | mingw* | pw32*) + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[012]) + lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + ;; + +freebsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + [lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'] + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20*|hpux11*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'] + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + +irix5* | irix6*) + case $host_os in + irix5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + [lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"] + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux-gnu*) + case $host_cpu in + alpha* | i*86 | powerpc* | sparc* | ia64* ) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;] + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] + else + [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'] + fi + ;; + +newos6*) + [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'] + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +[sysv5uw[78]* | sysv4*uw2*)] + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'] + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'] + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + [lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"] + lt_cv_file_magic_test_file=/lib/libc.so + ;; + esac + ;; +esac ]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +]) + # AC_PROG_NM - find the path to a BSD-compatible name lister -AC_DEFUN(AC_PROG_NM, +AC_DEFUN([AC_PROG_NM], [AC_MSG_CHECKING([for BSD-compatible nm]) -AC_CACHE_VAL(ac_cv_path_NM, +AC_CACHE_VAL(lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. - ac_cv_path_NM="$NM" + lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then + tmp_nm=$ac_dir/${ac_tool_prefix}nm + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -B" + # Tru64's nm complains that /dev/null is an invalid object file + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then + lt_cv_path_NM="$tmp_nm -B" break - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -p" + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + lt_cv_path_NM="$tmp_nm -p" break else - ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" - test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) -NM="$ac_cv_path_NM" +NM="$lt_cv_path_NM" AC_MSG_RESULT([$NM]) ]) # AC_CHECK_LIBM - check for math library -AC_DEFUN(AC_CHECK_LIBM, +AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= -case "$lt_target" in -*-*-beos* | *-*-cygwin*) +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32*) # These system don't have libm ;; *-ncr-sysv4.3*) @@ -399,33 +3360,39 @@ ]) # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for -# the libltdl convenience library, adds --enable-ltdl-convenience to -# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor -# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed -# to be `${top_builddir}/libltdl'. Make sure you start DIR with -# '${top_builddir}/' (note the single quotes!) if your package is not -# flat, and, if you're not using automake, define top_builddir as -# appropriate in the Makefiles. -AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - case "$enable_ltdl_convenience" in +# the libltdl convenience library and INCLTDL to the include flags for +# the libltdl header and adds --enable-ltdl-convenience to the +# configure arguments. Note that LIBLTDL and INCLTDL are not +# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not +# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed +# with '${top_builddir}/' and INCLTDL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac - LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la - INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl']) + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) ]) # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for -# the libltdl installable library, and adds --enable-ltdl-install to -# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor -# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed -# to be `${top_builddir}/libltdl'. Make sure you start DIR with -# '${top_builddir}/' (note the single quotes!) if your package is not -# flat, and, if you're not using automake, define top_builddir as -# appropriate in the Makefiles. +# the libltdl installable library and INCLTDL to the include flags for +# the libltdl header and adds --enable-ltdl-install to the configure +# arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is +# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed +# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and INCLTDL will be prefixed +# with '${top_srcdir}/' (note the single quotes!). If your package is +# not flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. -AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, main, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then @@ -436,8 +3403,8 @@ ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" - LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la - INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl']) + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" @@ -445,14 +3412,14 @@ fi ]) -dnl old names -AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl -AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl -AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl -AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl -AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl -AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl -AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) -dnl This is just to silence aclocal about the macro not being used -ifelse([AC_DISABLE_FAST_INSTALL])dnl +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) Index: xc/extras/freetype2/builds/unix/config.guess diff -u xc/extras/freetype2/builds/unix/config.guess:1.1.1.2 xc/extras/freetype2/builds/unix/config.guess:1.1.1.3 --- xc/extras/freetype2/builds/unix/config.guess:1.1.1.2 Tue May 15 23:45:48 2001 +++ xc/extras/freetype2/builds/unix/config.guess Sun Sep 9 22:55:49 2001 @@ -3,7 +3,7 @@ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. -timestamp='2001-02-13' +timestamp='2001-04-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -408,10 +408,13 @@ EOF $CC_FOR_BUILD $dummy.c -o $dummy \ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm $dummy.c $dummy && exit 0 + && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; @@ -459,7 +462,7 @@ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i?86:AIX:*:*) + i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) @@ -483,7 +486,7 @@ exit(0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then @@ -620,7 +623,7 @@ exit (0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo unknown-hitachi-hiuxwe2 exit 0 ;; @@ -639,7 +642,7 @@ hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; - i?86:OSF1:*:*) + i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else @@ -705,7 +708,7 @@ hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; - i?86:BSD/386:*:* | i?86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) @@ -750,11 +753,14 @@ i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux exit 0 ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) cat >$dummy.c </dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu + ppc:Linux:*:*) + # Determine Lib Version + cat >$dummy.c < +#if defined(__GLIBC__) +extern char __libc_version[]; +extern char __libc_release[]; +#endif +main(argc, argv) + int argc; + char *argv[]; +{ +#if defined(__GLIBC__) + printf("%s %s\n", __libc_version, __libc_release); +#else + printf("unknown\n"); +#endif + return 0; +} +EOF + LIBC="" + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null + if test "$?" = 0 ; then + ./$dummy | grep 1\.99 > /dev/null + if test "$?" = 0 ; then LIBC="libc1" ; fi + fi + rm -f $dummy.c $dummy + echo powerpc-unknown-linux-gnu${LIBC} exit 0 ;; + alpha:Linux:*:*) + cat <$dummy.s + .data + \$Lformat: + .byte 37,100,45,37,120,10,0 # "%d-%x\n" + .text + .globl main + .align 4 + .ent main + main: + .frame \$30,16,\$26,0 + ldgp \$29,0(\$27) + .prologue 1 + .long 0x47e03d80 # implver \$0 + lda \$2,-1 + .long 0x47e20c21 # amask \$2,\$1 + lda \$16,\$Lformat + mov \$0,\$17 + not \$1,\$18 + jsr \$26,printf + ldgp \$29,0(\$26) + mov 0,\$16 + jsr \$26,exit + .end main +EOF + LIBC="" + $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null + if test "$?" = 0 ; then + case `./$dummy` in + 0-0) UNAME_MACHINE="alpha" ;; + 1-0) UNAME_MACHINE="alphaev5" ;; + 1-1) UNAME_MACHINE="alphaev56" ;; + 1-101) UNAME_MACHINE="alphapca56" ;; + 2-303) UNAME_MACHINE="alphaev6" ;; + 2-307) UNAME_MACHINE="alphaev67" ;; + esac + objdump --private-headers $dummy | \ + grep ld.so.1 > /dev/null + if test "$?" = 0 ; then + LIBC="libc1" + fi + fi + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in @@ -790,10 +867,19 @@ parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; - *:Linux:*:*) + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. @@ -804,140 +890,34 @@ s/ .*// p'` case "$ld_supported_emulations" in - i?86linux) + i*86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; - elf_i?86) + elf_i*86) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; - i?86coff) + i*86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; - sparclinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32_sparc) - echo "${UNAME_MACHINE}-unknown-linux-gnu" - exit 0 - ;; - armlinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32arm*) - echo "${UNAME_MACHINE}-unknown-linux-gnuoldld" - exit 0 - ;; - armelf_linux*) - echo "${UNAME_MACHINE}-unknown-linux-gnu" - exit 0 - ;; - m68klinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32ppc | elf32ppclinux) - # Determine Lib Version - cat >$dummy.c < -#if defined(__GLIBC__) -extern char __libc_version[]; -extern char __libc_release[]; -#endif -main(argc, argv) - int argc; - char *argv[]; -{ -#if defined(__GLIBC__) - printf("%s %s\n", __libc_version, __libc_release); -#else - printf("unkown\n"); -#endif - return 0; -} -EOF - LIBC="" - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null - if test "$?" = 0 ; then - ./$dummy | grep 1\.99 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.c $dummy - echo powerpc-unknown-linux-gnu${LIBC} - exit 0 - ;; esac - - if test "${UNAME_MACHINE}" = "alpha" ; then - cat <$dummy.s - .data - \$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main - main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - LIBC="" - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `./$dummy` in - 0-0) UNAME_MACHINE="alpha" ;; - 1-0) UNAME_MACHINE="alphaev5" ;; - 1-1) UNAME_MACHINE="alphaev56" ;; - 1-101) UNAME_MACHINE="alphapca56" ;; - 2-303) UNAME_MACHINE="alphaev6" ;; - 2-307) UNAME_MACHINE="alphaev67" ;; - esac - - objdump --private-headers $dummy | \ - grep ld.so.1 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 - else - # Either a pre-BFD a.out linker (linux-gnuoldld) - # or one that does not give us useful --help. - # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. - # If ld does not provide *any* "supported emulations:" - # that means it is gnuoldld. - test -z "$ld_supported_emulations" \ - && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 - - case "${UNAME_MACHINE}" in - i?86) - VENDOR=pc; - ;; - *) - VENDOR=unknown; - ;; - esac - # Determine whether the default compiler is a.out or elf - cat >$dummy.c <$dummy.c < #ifdef __cplusplus #include /* for printf() prototype */ @@ -961,16 +941,16 @@ return 0; } EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 - fi ;; + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions # are messed up and put the nodename in both sysname and nodename. - i?86:DYNIX/ptx:4*:*) + i*86:DYNIX/ptx:4*:*) echo i386-sequent-sysv4 exit 0 ;; - i?86:UNIX_SV:4.2MP:2.*) + i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, @@ -978,7 +958,7 @@ # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; - i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} @@ -986,7 +966,7 @@ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; - i?86:*:5:7*) + i*86:*:5:7*) # Fixed at (any) Pentium or better UNAME_MACHINE=i586 if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then @@ -995,7 +975,7 @@ echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} fi exit 0 ;; - i?86:*:3.2:*) + i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:*) + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; - i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*) + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; TSUNAMI:LynxOS:2.*:*) @@ -1067,7 +1047,7 @@ rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:*) + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) @@ -1169,7 +1149,7 @@ fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; - i?86:OS/2:*:*) + i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx @@ -1311,7 +1291,7 @@ } EOF -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 +$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy # Apollos put the system type in the environment. Index: xc/extras/freetype2/builds/unix/config.sub diff -u xc/extras/freetype2/builds/unix/config.sub:1.1.1.2 xc/extras/freetype2/builds/unix/config.sub:1.1.1.3 --- xc/extras/freetype2/builds/unix/config.sub:1.1.1.2 Tue May 15 23:45:48 2001 +++ xc/extras/freetype2/builds/unix/config.sub Sun Sep 9 22:55:49 2001 @@ -3,7 +3,7 @@ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. -timestamp='2001-02-13' +timestamp='2001-04-20' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -230,9 +230,11 @@ | mips16 | mips64 | mipsel | mips64el \ | mips64orion | mips64orionel | mipstx39 | mipstx39el \ | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ - | mips64vr5000 | miprs64vr5000el | mcore \ - | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ - | thumb | d10v | d30v | fr30 | avr | openrisc) + | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \ + | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \ + | v850 | c4x \ + | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \ + | pj | pjl | h8500) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) @@ -240,13 +242,13 @@ basic_machine=$basic_machine-unknown os=-none ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl) + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | w65) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. - i[234567]86 | x86_64) + i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. @@ -256,7 +258,7 @@ ;; # Recognize the basic CPU types with company name. # FIXME: clean up the formatting here. - vax-* | tahoe-* | i[234567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ + vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \ | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \ | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ @@ -270,14 +272,16 @@ | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ | clipper-* | orion-* \ | sparclite-* | pdp10-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ - | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \ + | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \ + | mips16-* | mips64-* | mipsel-* \ | mips64el-* | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ | mipstx39-* | mipstx39el-* | mcore-* \ | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \ + | [cjt]90-* \ | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ - | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \ - | bs2000-* | tic54x-* | c54x-* | x86_64-*) + | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \ + | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. @@ -504,19 +508,19 @@ basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? - i[34567]86v32) + i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; - i[34567]86v4*) + i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; - i[34567]86v) + i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; - i[34567]86sol2) + i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; @@ -933,7 +937,7 @@ sh3 | sh4) basic_machine=sh-unknown ;; - sparc | sparcv9) + sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) @@ -955,6 +959,9 @@ basic_machine=c4x-none os=-coff ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 @@ -1020,7 +1027,7 @@ ;; -qnx*) case $basic_machine in - x86-* | i[34567]86-*) + x86-* | i*86-*) ;; *) os=-nto$os Index: xc/extras/freetype2/builds/unix/configure diff -u xc/extras/freetype2/builds/unix/configure:1.1.1.2 xc/extras/freetype2/builds/unix/configure:1.1.1.4 --- xc/extras/freetype2/builds/unix/configure:1.1.1.2 Tue May 15 23:45:47 2001 +++ xc/extras/freetype2/builds/unix/configure Mon Jan 14 11:52:00 2002 @@ -1,36 +1,310 @@ #! /bin/sh - # Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# Generated by Autoconf 2.52. # +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. + +# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac +fi + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" -# Defaults: -ac_help= + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_help="$ac_help - --enable-shared[=PKGS] build shared libraries [default=yes]" -ac_help="$ac_help - --enable-static[=PKGS] build static libraries [default=yes]" -ac_help="$ac_help - --enable-fast-install[=PKGS] optimize for fast installation [default=yes]" -ac_help="$ac_help - --with-gnu-ld assume the C compiler uses GNU ld [default=no]" -ac_help="$ac_help - --disable-libtool-lock avoid locking (might break parallel builds)" +cross_compiling=no +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +ac_unique_file="ftconfig.in" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" # Initialize some variables set by options. +ac_init_help= +ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. -build=NONE -cache_file=./config.cache +cache_file=/dev/null exec_prefix=NONE -host=NONE no_create= -nonopt=NONE no_recursion= prefix=NONE program_prefix=NONE @@ -39,10 +313,15 @@ silent= site= srcdir= -target=NONE verbose= x_includes=NONE x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' @@ -56,17 +335,16 @@ infodir='${prefix}/info' mandir='${prefix}/man' -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= ac_prev= for ac_option do - # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" @@ -74,59 +352,59 @@ continue fi - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. - case "$ac_option" in + case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; + bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) - ac_prev=build ;; + ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; + build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; + cache_file=$ac_optarg ;; + --config-cache | -C) + cache_file=config.cache ;; + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) - datadir="$ac_optarg" ;; + datadir=$ac_optarg ;; -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac - eval "enable_${ac_feature}='$ac_optarg'" ;; + eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -135,95 +413,47 @@ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; + exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; -host | --host | --hos | --ho) - ac_prev=host ;; + ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; + host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; + includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; + infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; + libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; + libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ @@ -232,12 +462,12 @@ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; + localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; + mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. @@ -258,26 +488,26 @@ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; + oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; + prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; + program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; + program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ @@ -294,7 +524,7 @@ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; + program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) @@ -304,7 +534,7 @@ ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; + sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ @@ -315,58 +545,57 @@ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; + sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; + site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; + srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; + sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; + ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; + target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" - exit 0 ;; + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac - eval "with_${ac_package}='$ac_optarg'" ;; + eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. @@ -377,98 +606,98 @@ ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; + x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; + x_libraries=$ac_optarg ;; - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } fi -exec 5>./config.log -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; esac done -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: should be removed in autoconf 3.0. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=ftconfig.in +test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then @@ -479,13 +708,314 @@ fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + { echo "$as_me: error: cannot find sources in $srcdir" >&2 + { (exit 1); exit 1; }; } fi +fi +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat < if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +EOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue + cd $ac_subdir + # A "../" for each directory in /$ac_subdir. + ac_dots=`echo $ac_subdir | + sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` + + case $srcdir in + .) # No --srcdir option. We are building in place. + ac_sub_srcdir=$srcdir ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_sub_srcdir=$srcdir/$ac_subdir ;; + *) # Relative path. + ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;; + esac + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_sub_srcdir/configure.gnu; then + echo + $SHELL $ac_sub_srcdir/configure.gnu --help=recursive + elif test -f $ac_sub_srcdir/configure; then + echo + $SHELL $ac_sub_srcdir/configure --help=recursive + elif test -f $ac_sub_srcdir/configure.ac || + test -f $ac_sub_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\EOF + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +EOF + exit 0 fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` +exec 5>config.log +cat >&5 </dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +PATH = $PATH + +_ASUNAME +} >&5 + +cat >&5 <\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + ac_sep=" " ;; + *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" + ac_sep=" " ;; + esac + # Get rid of the leading space. +done + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + echo >&5 + echo "## ----------------- ##" >&5 + echo "## Cache variables. ##" >&5 + echo "## ----------------- ##" >&5 + echo >&5 + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} >&5 + sed "/^$/d" confdefs.h >conftest.log + if test -s conftest.log; then + echo >&5 + echo "## ------------ ##" >&5 + echo "## confdefs.h. ##" >&5 + echo "## ------------ ##" >&5 + echo >&5 + cat conftest.log >&5 + fi + (echo; echo) >&5 + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" >&5 + echo "$as_me: exit $exit_status" >&5 + rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h +# Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then @@ -496,49 +1026,114 @@ fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" + { echo "$as_me:1029: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + cat "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:1040: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi else - echo "creating cache $cache_file" - > $cache_file + { echo "$as_me:1048: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:1064: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:1068: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:1074: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:1076: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:1078: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. It doesn't matter if + # we pass some twice (in addition to the command line arguments). + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" + ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:1097: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:1099: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } fi ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac +echo "#! $SHELL" >conftest.sh +echo "exit 0" >>conftest.sh +chmod +x conftest.sh +if { (echo "$as_me:1119: PATH=\".;.\"; conftest.sh") >&5 + (PATH=".;."; conftest.sh) 2>&5 + ac_status=$? + echo "$as_me:1122: \$? = $ac_status" >&5 + (exit $ac_status); }; then + ac_path_separator=';' else - ac_n= ac_c='\c' ac_t= + ac_path_separator=: fi - - - +PATH_SEPARATOR="$ac_path_separator" +rm -f conftest.sh +ac_config_headers="$ac_config_headers ftconfig.h:ftconfig.in" -version_info='6:1:0' +version_info='8:0:2' ft_version=`echo $version_info | tr : .` - ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then @@ -549,313 +1144,681 @@ ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break fi done if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - - -# Do some error checking and defaulting for the host and target type. -# The inputs are: -# configure --host=HOST --target=TARGET --build=BUILD NONOPT -# -# The rules are: -# 1. You are not allowed to specify --host, --target, and nonopt at the -# same time. -# 2. Host defaults to nonopt. -# 3. If nonopt is not specified, then host defaults to the current host, -# as determined by config.guess. -# 4. Target and build default to nonopt. -# 5. If nonopt is not specified, then target and build default to host. + { { echo "$as_me:1154: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -case $host---$target---$nonopt in -NONE---*---* | *---NONE---* | *---*---NONE) ;; -*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;; -esac - - # Make sure we can run config.sub. -if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : -else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } -fi - -echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:590: checking host system type" >&5 - -host_alias=$host -case "$host_alias" in -NONE) - case $nonopt in - NONE) - if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : - else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } - fi ;; - *) host_alias=$nonopt ;; - esac ;; -esac - -host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$host" 1>&6 - -echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:611: checking target system type" >&5 - -target_alias=$target -case "$target_alias" in -NONE) - case $nonopt in - NONE) target_alias=$host_alias ;; - *) target_alias=$nonopt ;; - esac ;; -esac - -target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias` -target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$target" 1>&6 - -echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:629: checking build system type" >&5 - -build_alias=$build -case "$build_alias" in -NONE) - case $nonopt in - NONE) build_alias=$host_alias ;; - *) build_alias=$nonopt ;; - esac ;; -esac - -build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias` -build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$build" 1>&6 +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:1164: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:1168: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:1177: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:1181: error: $ac_config_sub $ac_cv_build_alias failed." >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:1186: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +test -z "$build_alias" && + build_alias=$ac_cv_build + +echo "$as_me:1196: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:1205: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:1210: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +test -z "$host_alias" && + host_alias=$ac_cv_host + +echo "$as_me:1220: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6 +if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_target_alias=$target_alias +test "x$ac_cv_target_alias" = "x" && + ac_cv_target_alias=$ac_cv_host_alias +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || + { { echo "$as_me:1229: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:1234: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6 +target=$ac_cv_target +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -test "$host_alias" != "$target_alias" && +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- +test -z "$target_alias" && + target_alias=$ac_cv_target - -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:655: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:1258: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CC="${ac_tool_prefix}gcc" +echo "$as_me:1273: found $ac_dir/$ac_word" >&5 +break +done + fi fi -CC="$ac_cv_prog_CC" +CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 + echo "$as_me:1281: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:1284: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:685: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:1293: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CC="gcc" +echo "$as_me:1308: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1316: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1319: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:1332: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CC="${ac_tool_prefix}cc" +echo "$as_me:1347: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1355: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1358: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:1367: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CC="cc" +echo "$as_me:1382: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1390: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1393: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:1406: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_prog_rejected=no - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_save_ifs" + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue +fi +ac_cv_prog_CC="cc" +echo "$as_me:1426: found $ac_dir/$ac_word" >&5 +break +done + if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift - if test $# -gt 0; then + if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - set dummy "$ac_dir/$ac_word" "$@" + set dummy "$ac_dir/$ac_word" ${1+"$@"} shift ac_cv_prog_CC="$@" fi fi fi fi -CC="$ac_cv_prog_CC" +CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 + echo "$as_me:1448: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:1451: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test -z "$CC"; then - case "`uname -s`" in - *win32* | *WIN32*) - # Extract the first word of "cl", so it can be a program name with args. -set dummy cl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:736: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:1462: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="cl" - break - fi - done - IFS="$ac_save_ifs" + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +echo "$as_me:1477: found $ac_dir/$ac_word" >&5 +break +done + fi fi -CC="$ac_cv_prog_CC" +CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 + echo "$as_me:1485: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:1488: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - ;; - esac - fi - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:1501: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CC="$ac_prog" +echo "$as_me:1516: found $ac_dir/$ac_word" >&5 +break +done + +fi fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1524: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1527: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:768: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + test -n "$ac_ct_CC" && break +done -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross + CC=$ac_ct_CC +fi + +fi -cat > conftest.$ac_ext << EOF +test -z "$CC" && { { echo "$as_me:1539: error: no acceptable cc found in \$PATH" >&5 +echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:1544:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:1547: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:1550: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:1552: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:1555: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:1557: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:1560: \$? = $ac_status" >&5 + (exit $ac_status); } -#line 779 "configure" +cat >conftest.$ac_ext <<_ACEOF +#line 1564 "configure" #include "confdefs.h" -main(){return(0);} -EOF -if { (eval echo configure:784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:1580: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:1583: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:1586: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. +for ac_file in `ls a.exe conftest.exe 2>/dev/null; + ls a.out conftest 2>/dev/null; + ls a.* conftest.* 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:1609: error: C compiler cannot create executables" >&5 +echo "$as_me: error: C compiler cannot create executables" >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:1615: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:1620: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:1626: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1629: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no else - ac_cv_prog_cc_cross=yes + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:1636: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&2;} + { (exit 1); exit 1; }; } + fi fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no -fi -rm -fr conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:810: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -cross_compiling=$ac_cv_prog_cc_cross +echo "$as_me:1644: result: yes" >&5 +echo "${ECHO_T}yes" >&6 -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:815: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +rm -f a.out a.exe conftest$ac_cv_exeext +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:1651: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:1653: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:1656: checking for executable suffix" >&5 +echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 +if { (eval echo "$as_me:1658: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1661: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes + { { echo "$as_me:1677: error: cannot compute EXEEXT: cannot compile and link" >&5 +echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:1683: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:1689: checking for object suffix" >&5 +echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_prog_gcc=no -fi -fi + cat >conftest.$ac_ext <<_ACEOF +#line 1695 "configure" +#include "confdefs.h" -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 +int +main () +{ -if test $ac_cv_prog_gcc = yes; then - GCC=yes + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:1707: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1710: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done else - GCC= -fi + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:1722: error: cannot compute OBJEXT: cannot compile" >&5 +echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:1729: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:1733: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 1739 "configure" +#include "confdefs.h" -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" -CFLAGS= -echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:843: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1754: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1757: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1760: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1763: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:1775: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:1781: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + cat >conftest.$ac_ext <<_ACEOF +#line 1787 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1799: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1802: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1805: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1808: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else - ac_cv_prog_cc_g=no + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_prog_cc_g=no fi -rm -f conftest* - +rm -f conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 +echo "$as_me:1818: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" + CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" @@ -869,87 +1832,316 @@ CFLAGS= fi fi +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1845: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1848: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1851: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1854: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line 1866 "configure" +#include "confdefs.h" +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1879: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1882: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1885: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1888: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line 1898 "configure" +#include "confdefs.h" +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1910: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1913: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1916: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1919: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:875: checking how to run the C preprocessor" >&5 +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:1951: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 1972 "configure" #include "confdefs.h" #include -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:896: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then + Syntax error +_ACEOF +if { (eval echo "$as_me:1977: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:1983: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 + echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 2006 "configure" #include "confdefs.h" -#include -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:913: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : +#include +_ACEOF +if { (eval echo "$as_me:2010: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:2016: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 + echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext <&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line 2063 "configure" #include "confdefs.h" #include -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:930: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then + Syntax error +_ACEOF +if { (eval echo "$as_me:2068: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:2074: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 + echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP=/lib/cpp + # Broken: fails on valid input. +continue fi -rm -f conftest* -fi -rm -f conftest* +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line 2097 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:2101: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:2107: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break fi - CPP="$ac_cv_prog_CPP" +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : else - ac_cv_prog_CPP="$CPP" + { { echo "$as_me:2135: error: C preprocessor \"$CPP\" fails sanity check" >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} + { (exit 1); exit 1; }; } fi -echo "$ac_t""$CPP" 1>&6 +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "x$CC" = xgcc; then XX_CFLAGS="-Wall" @@ -968,67 +2160,70 @@ esac fi - - # Extract the first word of "rm", so it can be a program name with args. set dummy rm; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:977: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RMF'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:2165: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RMF+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RMF"; then ac_cv_prog_RMF="$RMF" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RMF="rm -f" - break - fi - done - IFS="$ac_save_ifs" + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_RMF="rm -f" +echo "$as_me:2180: found $ac_dir/$ac_word" >&5 +break +done + fi fi -RMF="$ac_cv_prog_RMF" +RMF=$ac_cv_prog_RMF if test -n "$RMF"; then - echo "$ac_t""$RMF" 1>&6 + echo "$as_me:2188: result: $RMF" >&5 +echo "${ECHO_T}$RMF" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:2191: result: no" >&5 +echo "${ECHO_T}no" >&6 fi # Extract the first word of "rmdir", so it can be a program name with args. set dummy rmdir; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1006: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RMDIR'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:2197: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RMDIR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RMDIR"; then ac_cv_prog_RMDIR="$RMDIR" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RMDIR="rmdir" - break - fi - done - IFS="$ac_save_ifs" + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_RMDIR="rmdir" +echo "$as_me:2212: found $ac_dir/$ac_word" >&5 +break +done + fi fi -RMDIR="$ac_cv_prog_RMDIR" +RMDIR=$ac_cv_prog_RMDIR if test -n "$RMDIR"; then - echo "$ac_t""$RMDIR" 1>&6 + echo "$as_me:2220: result: $RMDIR" >&5 +echo "${ECHO_T}$RMDIR" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:2223: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: @@ -1036,31 +2231,39 @@ # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1045: checking for a BSD compatible install" >&5 +echo "$as_me:2239: checking for a BSD compatible install" >&5 +echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + ac_save_IFS=$IFS; IFS=$ac_path_separator for ac_dir in $PATH; do + IFS=$ac_save_IFS # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + case $ac_dir/ in + / | ./ | .// | /cC/* \ + | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ + | /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do - if test -f $ac_dir/$ac_prog; then + if $as_executable_p "$ac_dir/$ac_prog"; then if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : + elif test $ac_prog = install && + grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : else ac_cv_path_install="$ac_dir/$ac_prog -c" break 2 @@ -1070,26 +2273,26 @@ ;; esac done - IFS="$ac_save_IFS" fi if test "${ac_cv_path_install+set}" = set; then - INSTALL="$ac_cv_path_install" + INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. - INSTALL="$ac_install_sh" + INSTALL=$ac_install_sh fi fi -echo "$ac_t""$INSTALL" 1>&6 +echo "$as_me:2288: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' @@ -1100,46 +2303,57 @@ INSTALL="`pwd`/$INSTALL" ;; esac -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1105: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:2306: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 2312 "configure" #include "confdefs.h" #include #include #include #include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1118: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* + +_ACEOF +if { (eval echo "$as_me:2320: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:2326: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_cv_header_stdc=yes else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 + echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* ac_cv_header_stdc=no fi -rm -f conftest* +rm -f conftest.err conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 2348 "configure" #include "confdefs.h" #include -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else - rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* @@ -1148,16 +2362,16 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 2366 "configure" #include "confdefs.h" #include -EOF + +_ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else - rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* @@ -1166,347 +2380,949 @@ if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 2387 "configure" #include "confdefs.h" #include -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int main () { int i; for (i = 0; i < 256; i++) -if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -exit (0); } +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif -EOF -if { (eval echo configure:1185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:2413: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:2416: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:2418: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2421: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then : else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_header_stdc=no fi -rm -fr conftest* +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - fi fi - -echo "$ac_t""$ac_cv_header_stdc" 1>&6 +echo "$as_me:2434: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF + +cat >>confdefs.h <<\EOF #define STDC_HEADERS 1 EOF fi -for ac_hdr in fcntl.h unistd.h +for ac_header in fcntl.h unistd.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1212: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:2447: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 2453 "configure" #include "confdefs.h" -#include <$ac_hdr> -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1222: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:2457: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:2463: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 + echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "$as_ac_Header=no" fi -rm -f conftest* +rm -f conftest.err conftest.$ac_ext fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line 2500 "configure" +#include "confdefs.h" +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:2549: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2552: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2555: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2558: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break else - echo "$ac_t""no" 1>&6 + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 fi +rm -f conftest.$ac_objext done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:2575: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:2578: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac -echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:1250: checking for working const" >&5 -if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:2583: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 2589 "configure" #include "confdefs.h" -int main() { +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif -/* Ultrix mips cc rejects this. */ -typedef int charset[2]; const charset x; -/* SunOS 4.1.1 cc rejects this. */ -char const *const *ccp; -char **p; -/* NEC SVR4.0.2 mips cc rejects this. */ -struct point {int x, y;}; -static struct point const zero = {0,0}; -/* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in an arm - of an if-expression whose if-part is not a constant expression */ -const char *g = "string"; -ccp = &g + (g ? g-g : 0); -/* HPUX 7.0 cc rejects these. */ -++ccp; -p = (char**) ccp; -ccp = (char const *const *) p; -{ /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; -} -{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; -} -{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; -} -{ /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; -} -{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; + ; + return 0; } - -; return 0; } -EOF -if { (eval echo configure:1304: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2647: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2650: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2653: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2656: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_c_const=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_c_const=no + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_c_const=no fi -rm -f conftest* +rm -f conftest.$ac_objext conftest.$ac_ext fi - -echo "$ac_t""$ac_cv_c_const" 1>&6 +echo "$as_me:2666: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then - cat >> confdefs.h <<\EOF -#define const + +cat >>confdefs.h <<\EOF +#define const +EOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:2682: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 2688 "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2694: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2697: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2700: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2703: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:2713: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&6 -echo "configure:1325: checking size of int" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:2723: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6 +if test "${ac_cv_type_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 2729 "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +if ((int *) 0) + return 0; +if (sizeof (int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2744: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2747: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2750: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2753: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_int=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:2763: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6 + +echo "$as_me:2766: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_int" = yes; then + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +#line 2775 "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +int _array_ [1 - 2 * !((sizeof (int)) >= 0)] + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2787: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2790: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2793: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2796: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line 2801 "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +int _array_ [1 - 2 * !((sizeof (int)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2813: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2816: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2819: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2822: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line 2838 "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +int _array_ [1 - 2 * !((sizeof (int)) >= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2850: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2853: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2856: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2859: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done +fi +rm -f conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +#line 2875 "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +int _array_ [1 - 2 * !((sizeof (int)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2887: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2890: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2893: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2896: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr $ac_mid + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +ac_cv_sizeof_int=$ac_lo else if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + { { echo "$as_me:2909: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 2914 "configure" #include "confdefs.h" -#include -main() +$ac_includes_default +int +main () { - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(int)); - exit(0); +FILE *f = fopen ("conftest.val", "w"); +if (!f) + exit (1); +fprintf (f, "%d", (sizeof (int))); +fclose (f); + ; + return 0; } -EOF -if { (eval echo configure:1344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_int=`cat conftestval` +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:2930: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:2933: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:2935: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2938: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_int=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* ac_cv_sizeof_int=0 fi -rm -fr conftest* -fi - fi -echo "$ac_t""$ac_cv_sizeof_int" 1>&6 -cat >> confdefs.h <&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6 +cat >>confdefs.h <&6 -echo "configure:1364: checking size of long" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:2960: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6 +if test "${ac_cv_type_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 2966 "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +if ((long *) 0) + return 0; +if (sizeof (long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2981: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2984: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2987: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2990: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_long=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:3000: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6 + +echo "$as_me:3003: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else + if test "$ac_cv_type_long" = yes; then if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +#line 3012 "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +int _array_ [1 - 2 * !((sizeof (long)) >= 0)] + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3024: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3027: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3030: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3033: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line 3038 "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +int _array_ [1 - 2 * !((sizeof (long)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3050: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3053: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3056: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3059: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done else - cat > conftest.$ac_ext <&5 +cat conftest.$ac_ext >&5 +ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line 3075 "configure" #include "confdefs.h" -#include -main() +$ac_includes_default +int +main () { - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(long)); - exit(0); +int _array_ [1 - 2 * !((sizeof (long)) >= $ac_mid)] + ; + return 0; } -EOF -if { (eval echo configure:1383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_long=`cat conftestval` +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3087: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3090: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3093: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3096: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done +fi +rm -f conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +#line 3112 "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +int _array_ [1 - 2 * !((sizeof (long)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3124: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3127: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3130: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3133: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr $ac_mid + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +ac_cv_sizeof_long=$ac_lo else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_sizeof_long=0 + if test "$cross_compiling" = yes; then + { { echo "$as_me:3146: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line 3151 "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +FILE *f = fopen ("conftest.val", "w"); +if (!f) + exit (1); +fprintf (f, "%d", (sizeof (long))); +fclose (f); + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:3167: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:3170: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:3172: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3175: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 fi -rm -fr conftest* +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - +fi +rm -f conftest.val +else + ac_cv_sizeof_long=0 +fi fi -echo "$ac_t""$ac_cv_sizeof_long" 1>&6 -cat >> confdefs.h <&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6 +cat >>confdefs.h <&6 -echo "configure:1408: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:3200: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 3206 "configure" #include "confdefs.h" -#include <$ac_hdr> -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1418: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:3210: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:3216: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "$as_ac_Header=no" fi -rm -f conftest* +rm -f conftest.err conftest.$ac_ext fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&6 + fi done for ac_func in getpagesize do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1447: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:3248: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 3254 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); below. */ + which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); +int +main () +{ /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -$ac_func(); +f = $ac_func; #endif -; return 0; } + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:3285: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:3288: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:3291: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3294: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:3304: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 fi done -echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:1500: checking for working mmap" >&5 -if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:3314: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_mmap_fixed_mapped=no else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 3323 "configure" #include "confdefs.h" - +$ac_includes_default /* Thanks to Mike Haertel and Jim Avera for this test. Here is a matrix of mmap possibilities: mmap private not fixed @@ -1519,7 +3335,7 @@ back from the file, nor mmap's back from the file at a different address. (There have been systems where private was not correctly implemented like the infamous i386 svr4.0, and systems where the - VM page cache was not coherent with the filesystem buffer cache + VM page cache was not coherent with the file system buffer cache like early versions of FreeBSD and possibly contemporary NetBSD.) For shared mappings, we should conversely verify that changes get propogated back to all the places they're supposed to be. @@ -1528,25 +3344,25 @@ The main things grep needs to know about mmap are: * does it exist and is it safe to write into the mmap'd area * how to use it (BSD variants) */ -#include + #include #include -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -# ifdef HAVE_UNISTD_H -# include -# endif +#if !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE /* Assume that all systems that can run configure have sys/param.h. */ -# ifndef HAVE_SYS_PARAM_H +# if !HAVE_SYS_PARAM_H # define HAVE_SYS_PARAM_H 1 # endif # ifdef _SC_PAGESIZE # define getpagesize() sysconf(_SC_PAGESIZE) # else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H +# if HAVE_SYS_PARAM_H # include # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE @@ -1573,231 +3389,268 @@ #endif /* no HAVE_GETPAGESIZE */ -#ifdef __cplusplus -extern "C" { void *malloc(unsigned); } -#else -char *malloc(); -#endif - int -main() +main () { - char *data, *data2, *data3; - int i, pagesize; - int fd; - - pagesize = getpagesize(); - - /* - * First, make a file with some known garbage in it. - */ - data = malloc(pagesize); - if (!data) - exit(1); - for (i = 0; i < pagesize; ++i) - *(data + i) = rand(); - umask(0); - fd = creat("conftestmmap", 0600); - if (fd < 0) - exit(1); - if (write(fd, data, pagesize) != pagesize) - exit(1); - close(fd); - - /* - * Next, try to mmap the file at a fixed address which - * already has something else allocated at it. If we can, - * also make sure that we see the same garbage. - */ - fd = open("conftestmmap", O_RDWR); - if (fd < 0) - exit(1); - data2 = malloc(2 * pagesize); - if (!data2) - exit(1); - data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); - if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - exit(1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - exit(1); - - /* - * Finally, make sure that changes to the mapped area - * do not percolate back to the file as seen by read(). - * (This is a bug on some variants of i386 svr4.0.) - */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = malloc(pagesize); - if (!data3) - exit(1); - if (read(fd, data3, pagesize) != pagesize) - exit(1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - exit(1); - close(fd); - unlink("conftestmmap"); - exit(0); + char *data, *data2, *data3; + int i, pagesize; + int fd; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (1); + close (fd); + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (1); + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + exit (0); } - -EOF -if { (eval echo configure:1648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:3450: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:3453: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:3455: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3458: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_mmap_fixed_mapped=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_func_mmap_fixed_mapped=no + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_mmap_fixed_mapped=no fi -rm -fr conftest* +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - fi - -echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6 +echo "$as_me:3470: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 if test $ac_cv_func_mmap_fixed_mapped = yes; then - cat >> confdefs.h <<\EOF + +cat >>confdefs.h <<\EOF #define HAVE_MMAP 1 EOF fi +rm -f conftest.mmap if test "$ac_cv_func_mmap_fixed_mapped" != yes; then FTSYS_SRC='$(BASE_)ftsystem.c' else FTSYS_SRC='$(BUILD)/ftsystem.c' - echo $ac_n "checking whether munmap must be declared""... $ac_c" 1>&6 -echo "configure:1676: checking whether munmap must be declared" >&5 -if eval "test \"`echo '$''{'ft_cv_munmap_decl'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo "$as_me:3486: checking whether munmap must be declared" >&5 +echo $ECHO_N "checking whether munmap must be declared... $ECHO_C" >&6 +if test "${ft_cv_munmap_decl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 3492 "configure" #include "confdefs.h" #ifdef HAVE_UNISTD_H #include #endif #include -int main() { +int +main () +{ char *(*pfn) = (char *(*))munmap -; return 0; } -EOF -if { (eval echo configure:1692: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3508: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3511: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3514: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3517: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ft_cv_munmap_decl=no else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ft_cv_munmap_decl=yes + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ft_cv_munmap_decl=yes fi -rm -f conftest* +rm -f conftest.$ac_objext conftest.$ac_ext fi -echo "$ac_t""$ft_cv_munmap_decl" 1>&6 +echo "$as_me:3528: result: $ft_cv_munmap_decl" >&5 +echo "${ECHO_T}$ft_cv_munmap_decl" >&6 if test $ft_cv_munmap_decl = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define NEED_MUNMAP_DECL 1 EOF fi - echo $ac_n "checking for munmap's first parameter type""... $ac_c" 1>&6 -echo "configure:1712: checking for munmap's first parameter type" >&5 -cat > conftest.$ac_ext <&5 +echo $ECHO_N "checking for munmap's first parameter type... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line 3539 "configure" #include "confdefs.h" #include #include int munmap(void *, size_t); -int main() { +int +main () +{ -; return 0; } -EOF -if { (eval echo configure:1724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - echo "$ac_t""void *" 1>&6;cat >> confdefs.h <<\EOF + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3554: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3557: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3560: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3563: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:3565: result: void *" >&5 +echo "${ECHO_T}void *" >&6;cat >>confdefs.h <<\EOF #define MUNMAP_USES_VOIDP 1 EOF else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - echo "$ac_t""char *" 1>&6 + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +echo "$as_me:3573: result: char *" >&5 +echo "${ECHO_T}char *" >&6 fi -rm -f conftest* +rm -f conftest.$ac_objext conftest.$ac_ext fi - for ac_func in memcpy memmove do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1744: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:3583: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <<_ACEOF +#line 3589 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); below. */ + which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); +int +main () +{ /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -$ac_func(); +f = $ac_func; #endif -; return 0; } + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:3620: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:3623: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:3626: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3629: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:3639: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 fi done - # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} -case "$enableval" in +case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) @@ -1814,13 +3667,12 @@ esac else enable_shared=yes -fi - +fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} -case "$enableval" in +case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) @@ -1837,13 +3689,12 @@ esac else enable_static=yes -fi - +fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} -case "$enableval" in +case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) @@ -1860,37 +3711,7 @@ esac else enable_fast_install=yes -fi - -# Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1869: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi +fi; # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then @@ -1898,15 +3719,20 @@ test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no -fi - +fi; ac_prog=ld -if test "$ac_cv_prog_gcc" = yes; then +if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:1908: checking for ld used by GCC" >&5 - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in + echo "$as_me:3726: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' @@ -1927,25 +3753,25 @@ ;; esac elif test "$with_gnu_ld" = yes; then - echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1932: checking for GNU ld" >&5 + echo "$as_me:3756: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else - echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1935: checking for non-GNU ld" >&5 + echo "$as_me:3759: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi -if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - ac_cv_path_LD="$ac_dir/$ac_prog" + lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. - if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break @@ -1954,635 +3780,4591 @@ done IFS="$ac_save_ifs" else - ac_cv_path_LD="$LD" # Let the user override the test with a path. + lt_cv_path_LD="$LD" # Let the user override the test with a path. fi fi -LD="$ac_cv_path_LD" +LD="$lt_cv_path_LD" if test -n "$LD"; then - echo "$ac_t""$LD" 1>&6 + echo "$as_me:3789: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:3792: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } -echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:1970: checking if the linker ($LD) is GNU ld" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +test -z "$LD" && { { echo "$as_me:3795: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:3798: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then - ac_cv_prog_gnu_ld=yes + lt_cv_prog_gnu_ld=yes else - ac_cv_prog_gnu_ld=no + lt_cv_prog_gnu_ld=no fi fi - -echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6 +echo "$as_me:3810: result: $lt_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld +echo "$as_me:3814: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:3821: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +test -n "$reload_flag" && reload_flag=" $reload_flag" -echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1986: checking for BSD-compatible nm" >&5 -if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:3826: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. - ac_cv_path_NM="$NM" + lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then + tmp_nm=$ac_dir/${ac_tool_prefix}nm + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -B" + # Tru64's nm complains that /dev/null is an invalid object file + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then + lt_cv_path_NM="$tmp_nm -B" break - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -p" + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + lt_cv_path_NM="$tmp_nm -p" break else - ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" - test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi -NM="$ac_cv_path_NM" -echo "$ac_t""$NM" 1>&6 +NM="$lt_cv_path_NM" +echo "$as_me:3862: result: $NM" >&5 +echo "${ECHO_T}$NM" >&6 + +echo "$as_me:3865: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:3869: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:3872: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:3876: checking how to recognise dependant libraries" >&5 +echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# ['file_magic [regex]'] -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; -echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:2022: checking whether ln -s works" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - rm -f conftestdata -if ln -s X conftestdata 2>/dev/null -then - rm -f conftestdata - ac_cv_prog_LN_S="ln -s" -else - ac_cv_prog_LN_S=ln -fi -fi -LN_S="$ac_cv_prog_LN_S" -if test "$ac_cv_prog_LN_S" = "ln -s"; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin* | mingw* | pw32*) + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.012) + lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + ;; + +freebsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20*|hpux11*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + +irix5* | irix6*) + case $host_os in + irix5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux-gnu*) + case $host_cpu in + alpha* | i*86 | powerpc* | sparc* | ia64* ) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv5uw[78]* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + esac + ;; +esac + +fi +echo "$as_me:4044: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:4050: checking command to parse $NM output" >&5 +echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + ;; +irix*) + symcode='[BCDEGRST]' + ;; +solaris* | sysv5*) + symcode='[BDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $host_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTW]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. +lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4130: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:4134: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:4137: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo "$as_me:4189: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:4192: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest; then + pipe_works=yes + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +if test -z "$lt_cv_sys_global_symbol_pipe"; then + global_symbol_to_cdecl= +else + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" +fi +if test -z "$global_symbol_pipe$global_symbol_to_cdecl"; then + echo "$as_me:4230: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:4233: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:4240: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 4246 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:4250: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:4256: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:4275: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="/usr/bin:$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:4344: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:4347: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:4353: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="/usr/bin:$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:4408: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:4411: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:4427: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +echo "$as_me:4442: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:4450: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:4453: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:4462: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_RANLIB="ranlib" +echo "$as_me:4477: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:4486: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:4489: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:4501: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_STRIP="${ac_tool_prefix}strip" +echo "$as_me:4516: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:4524: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:4527: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:4536: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_STRIP="strip" +echo "$as_me:4551: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:4560: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:4563: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 4587 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:4588: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4591: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:4612: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +#line 4625 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:4637: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:4640: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:4643: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4646: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +lt_cv_cc_needs_belf=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +echo "$as_me:4662: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" +need_locks="$enable_libtool_lock" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +if test x"$host" != x"$build"; then + ac_tool_prefix=${host_alias}- +else + ac_tool_prefix= +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case $host_os in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="$2" + +## FIXME: this should be a separate macro +## +echo "$as_me:4757: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$as_me:4768: result: $objdir" >&5 +echo "${ECHO_T}$objdir" >&6 +## +## END FIXME + +## FIXME: this should be a separate macro +## + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test -z "$pic_mode" && pic_mode=default + +# We assume here that the value for lt_cv_prog_cc_pic will not be cached +# in isolation, and that seeing it set (from the cache) indicates that +# the associated values are set (in the cache) correctly too. +echo "$as_me:4788: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +if test "${lt_cv_prog_cc_pic+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_cc_pic= + lt_cv_prog_cc_shlib= + lt_cv_prog_cc_wl= + lt_cv_prog_cc_static= + lt_cv_prog_cc_no_builtin= + lt_cv_prog_cc_can_build_shared=$can_build_shared + + if test "$GCC" = yes; then + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-static' + + case $host_os in + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # we not sure about C++ programs. + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_cv_prog_cc_pic=-Kconform_pic + fi + ;; + *) + lt_cv_prog_cc_pic='-fPIC' + ;; + esac + else + # PORTME Check for PIC flags for the system compiler. + case $host_os in + aix3* | aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + else + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better lt_cv_prog_cc_static that works with the bundled CC? + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" + lt_cv_prog_cc_pic='+Z' + ;; + + irix5* | irix6*) + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + + newsos6) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + ;; + + sco3.2v5*) + lt_cv_prog_cc_pic='-Kpic' + lt_cv_prog_cc_static='-dn' + lt_cv_prog_cc_shlib='-belf' + ;; + + solaris*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + sunos4*) + lt_cv_prog_cc_pic='-PIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + if test "x$host_vendor" = xsni; then + lt_cv_prog_cc_wl='-LD' + else + lt_cv_prog_cc_wl='-Wl,' + fi + ;; + + uts4*) + lt_cv_prog_cc_pic='-pic' + lt_cv_prog_cc_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_cv_prog_cc_pic='-Kconform_pic' + lt_cv_prog_cc_static='-Bstatic' + fi + ;; + + *) + lt_cv_prog_cc_can_build_shared=no + ;; + esac + fi + +fi + +if test -z "$lt_cv_prog_cc_pic"; then + echo "$as_me:4935: result: none" >&5 +echo "${ECHO_T}none" >&6 +else + echo "$as_me:4938: result: $lt_cv_prog_cc_pic" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 + + # Check to make sure the pic_flag actually works. + echo "$as_me:4942: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 + if test "${lt_cv_prog_cc_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + cat >conftest.$ac_ext <<_ACEOF +#line 4950 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4962: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4965: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4968: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4971: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + case $host_os in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then + # they create non-PIC objects. So, if there were any warnings, we + # assume that PIC is not supported. + if test -s conftest.err; then + lt_cv_prog_cc_pic_works=no + else + lt_cv_prog_cc_pic_works=yes + fi + ;; + *) + lt_cv_prog_cc_pic_works=yes + ;; + esac + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + lt_cv_prog_cc_pic_works=no + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + +fi + + if test "X$lt_cv_prog_cc_pic_works" = Xno; then + lt_cv_prog_cc_pic= + lt_cv_prog_cc_can_build_shared=no + else + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" + fi + + echo "$as_me:5007: result: $lt_cv_prog_cc_pic_works" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 +fi +## +## END FIXME + +# Check for any special shared library compilation flags. +if test -n "$lt_cv_prog_cc_shlib"; then + { echo "$as_me:5015: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:5019: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + +## FIXME: this should be a separate macro +## +echo "$as_me:5027: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 +if test "${lt_cv_prog_cc_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_cc_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + cat >conftest.$ac_ext <<_ACEOF +#line 5036 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:5048: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:5051: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:5054: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5057: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_prog_cc_static_works=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi + +# Belt *and* braces to stop my trousers falling down: +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +echo "$as_me:5071: result: $lt_cv_prog_cc_static_works" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 + +pic_flag="$lt_cv_prog_cc_pic" +special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +wl="$lt_cv_prog_cc_wl" +link_static_flag="$lt_cv_prog_cc_static" +no_builtin_flag="$lt_cv_prog_cc_no_builtin" +can_build_shared="$lt_cv_prog_cc_can_build_shared" +## +## END FIXME + +## FIXME: this should be a separate macro +## +# Check to see if options -o and -c are simultaneously supported by compiler +echo "$as_me:5086: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +echo "int some_variable = 0;" > conftest.$ac_ext +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +compiler_c_o=no +if { (eval echo configure:5106: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + lt_cv_compiler_c_o=no + else + lt_cv_compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&5 + lt_cv_compiler_c_o=no +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null + +fi + +compiler_c_o=$lt_cv_compiler_c_o +echo "$as_me:5130: result: $compiler_c_o" >&5 +echo "${ECHO_T}$compiler_c_o" >&6 + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo "$as_me:5135: checking if $compiler supports -c -o file.lo" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 + if test "${lt_cv_compiler_o_lo+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + lt_cv_compiler_o_lo=no + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + cat >conftest.$ac_ext <<_ACEOF +#line 5145 "configure" +#include "confdefs.h" + +int +main () +{ +int some_variable = 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:5157: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5160: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:5163: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5166: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + lt_cv_compiler_o_lo=no + else + lt_cv_compiler_o_lo=yes + fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + +fi + + compiler_o_lo=$lt_cv_compiler_o_lo + echo "$as_me:5186: result: $compiler_c_lo" >&5 +echo "${ECHO_T}$compiler_c_lo" >&6 +else + compiler_o_lo=no +fi +## +## END FIXME + +## FIXME: this should be a separate macro +## +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:5200: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:5208: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:5211: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi +## +## END FIXME + +## FIXME: this should be a separate macro +## +if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo "$as_me:5225: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + cat >conftest.$ac_ext <<_ACEOF +#line 5232 "configure" +#include "confdefs.h" + +int +main () +{ +int some_variable = 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:5244: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5247: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:5250: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5253: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + compiler_rtti_exceptions=no + else + compiler_rtti_exceptions=yes + fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + echo "$as_me:5269: result: $compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$compiler_rtti_exceptions" >&6 + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi +fi +## +## END FIXME + +## FIXME: this should be a separate macro +## +# See if the linker supports building shared libraries. +echo "$as_me:5284: checking whether the linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +old_archive_from_expsyms_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_into_libs=no +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +link_all_deplibs=unknown +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. +extract_expsyms_cmds= + +case $host_os in +cygwin* | mingw* | pw32* ) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ + test -f $output_objdir/impgen.exe || (cd $output_objdir && \ + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ + else $CC -o impgen impgen.c ; fi)~ + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' + + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' + + # cygwin and mingw dlls have different entry points and sets of symbols + # to exclude. + # FIXME: what about values for MSVC? + dll_entry=__cygwin_dll_entry@12 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ + case $host_os in + mingw*) + # mingw values + dll_entry=_DllMainCRTStartup@12 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ + ;; + esac + + # mingw and cygwin differ, and it's simplest to just exclude the union + # of the two symbol sets. + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one (in ltdll.c) + if test "x$lt_cv_need_dllmain" = "xyes"; then + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " + ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < [$]0 > $output_objdir/$soname-ltdll.c~ + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' + else + ltdll_obj= + ltdll_cmds= + fi + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left be newer dlltools. + export_symbols_cmds="$ltdll_cmds"' + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' + + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is. + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname-def; + else + echo EXPORTS > $output_objdir/$soname-def; + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \$# in + 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; + *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done; + fi~ + '"$ltdll_cmds"' + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw* | pw32*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + shared_flag='-shared' + else + if test "$host_cpu" = ia64; then + shared_flag='-G' + else + shared_flag='${wl}-bM:SRE' + fi + hardcode_direct=yes + fi + + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # Test if we are trying to use run time linking, or normal AIX style linking. + # If -brtl is somewhere in LDFLAGS, we need to do run time linking. + aix_use_runtimelinking=no + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then + aix_use_runtimelinking=yes + break + fi + done + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + # It seems that -bexpall can do strange things, so it is better to + # generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + allow_undefined_flag=' -Wl,-G' + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-znodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + # Warning - without using the other run time loading flags, -berok will + # link without error, but may produce a broken library. + allow_undefined_flag='${wl}-berok" + # This is a bit strange, but is similar to how AIX traditionally builds + # it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + ;; + + darwin* | rhapsody*) + allow_undefined_flag='-undefined suppress' + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + archive_cmds='$CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linkopts -install_name $rpath/$soname $(test -n "$verstring" -a x$verstring != x0.0 && echo $verstring)' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + hardcode_direct=yes + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load $convenience' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case $host_os in + hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + #Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z defs' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + if test "x$host_vendor" = xsno; then + archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes # is this really true??? + else + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5uw7* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +echo "$as_me:5896: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no +## +## END FIXME + +## FIXME: this should be a separate macro +## +# Check hardcoding attributes. +echo "$as_me:5905: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:5929: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 +## +## END FIXME + +## FIXME: this should be a separate macro +## +striplib= +old_striplib= +echo "$as_me:5938: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:5943: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:5946: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +## +## END FIXME + +reload_cmds='$LD$reload_flag -o $output$reload_objs' +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +## FIXME: this should be a separate macro +## +# PORTME Fill in your ld.so characteristics +echo "$as_me:5958: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4* | aix5*) + version_type=linux + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so instead of + # lib.a to let people know that these are not typical AIX shared libraries. + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}.so$major' + fi + shlibpath_var=LIBPATH + deplibs_check_method=pass_all + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + need_version=no + need_lib_prefix=no + case $GCC,$host_os in + yes,cygwin*) + library_names_spec='$libname.dll.a' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog .libs/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + ;; + yes,mingw*) + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` + ;; + yes,pw32*) + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' + ;; + *) + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + *) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6*) + version_type=irix + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' + case $host_os in + irix5*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + need_version=no + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:6340: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no +## +## END FIXME + +## FIXME: this should be a separate macro +## +# Report the final consequences. +echo "$as_me:6349: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:6351: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 +## +## END FIXME + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + cygwin* | mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + *) + echo "$as_me:6391: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 6399 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:6418: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6421: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:6424: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6427: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:6438: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:6443: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6449 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +char (*f) (); + +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +f = dlopen; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:6480: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6483: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:6486: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6489: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:6499: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:6504: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 6510 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +char (*f) (); + +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +f = shl_load; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:6541: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6544: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:6547: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6550: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:6560: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:6565: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 6573 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:6592: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6595: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:6598: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6601: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:6612: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:6617: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 6625 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:6644: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6647: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:6650: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6653: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:6664: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + +fi + +fi + +fi + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:6698: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:6770: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6773: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + +fi +echo "$as_me:6790: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:6795: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:6867: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6870: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + +fi +echo "$as_me:6887: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + +## FIXME: this should be a separate macro +## +if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:6919: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + if test "${lt_cv_archive_cmds_need_lc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + $rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + + if { (eval echo "$as_me:6927: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6930: \$? = $ac_status" >&5 + (exit $ac_status); }; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_cv_prog_cc_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:6944: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:6947: \$? = $ac_status" >&5 + (exit $ac_status); } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi +fi + + echo "$as_me:6960: result: $lt_cv_archive_cmds_need_lc" >&5 +echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 + ;; + esac fi +need_lc=${lt_cv_archive_cmds_need_lc-yes} +## +## END FIXME + +## FIXME: this should be a separate macro +## +# The second clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + : +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi + +if test -f "$ltmain"; then + trap "$rm \"${ofile}T\"; exit 1" 1 2 15 + $rm -f "${ofile}T" + + echo creating $ofile + + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS \ + AR AR_FLAGS CC LD LN_S NM SHELL \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ + old_striplib striplib file_magic_cmd export_symbols_cmds \ + deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case $var in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + cat <<__EOF__ > "${ofile}T" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996-2000 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="sed -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$need_lc + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# The default C compiler. +CC=$lt_CC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_pic_flag +pic_mode=$pic_mode + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$lt_compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L -case "$target" in -NONE) lt_target="$host" ;; -*) lt_target="$target" ;; -esac +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var -# Check for any special flags to pass to ltconfig. -libtool_flags="--cache-file=$cache_file" -test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" -test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" -test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" -test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs -# Check whether --enable-libtool-lock or --disable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then - enableval="$enable_libtool_lock" - : -fi +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" -test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case "$lt_target" in -*-*-irix6*) - # Find out which ABI we are using. - echo '#line 2071 "configure"' > conftest.$ac_ext - if { (eval echo configure:2072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - rm -rf conftest* - ;; +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:2093: checking whether the C compiler needs -belf" >&5 -if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - lt_cv_cc_needs_belf=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - lt_cv_cc_needs_belf=no -fi -rm -f conftest* -fi +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds -echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6 - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms -esac +# ### END LIBTOOL CONFIG +__EOF__ -# Save cache, so that ltconfig can load it -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# + case $host_os in + aix3*) + cat <<\EOF >> "${ofile}T" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache + esac + case $host_os in + cygwin* | mingw* | pw32* | os2*) + cat <<'EOF' >> "${ofile}T" + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# */ +# +# #include /* for printf() */ +# #include /* for open(), lseek(), read() */ +# #include /* for O_RDONLY, O_BINARY */ +# #include /* for strdup() */ +# +# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +# #ifndef O_BINARY +# #define O_BINARY 0 +# #endif +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (dll < 1) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i&2; exit 1; } +EOF + ;; + esac -# Reload cache, that may have been modified by ltconfig -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + + mv -f "${ofile}T" "$ofile" || \ + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") + chmod +x "$ofile" fi +## +## END FIXME - # This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' -# Redirect the config.log output again, so that the ltconfig log is not -# clobbered by the next message. -exec 5>>./config.log +# Prevent multiple expansion +ac_config_files="$ac_config_files unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config" -trap '' 1 2 15 -cat > confcache <<\EOF +cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. # -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. # -EOF +# `ac_cv_env_foo' variables (set or unset) will be overriden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if cmp -s $cache_file confcache; then :; else if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' fi -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - DEFS=-DHAVE_CONFIG_H -# Without the "./", some shells look in PATH for config.status. : ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS <&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL # Generated automatically by configure. # Run this file to recreate the current configuration. -# This directory was configured as follows, -# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# $0 $ac_configure_args -# # Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. +# configure, is in config.log if it exists. -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option +debug=false +SHELL=\${CONFIG_SHELL-$SHELL} +ac_cs_invocation="\$0 \$@" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +exec 6>&1 + +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\EOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to ." +EOF + +cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 do - case "\$ac_option" in + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + shift + set dummy "$ac_option" "$ac_optarg" ${1+"$@"} + shift + ;; + -*);; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_need_defaults=false;; + esac + + case $1 in + # Handling of the options. +EOF +cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:7781: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + shift + CONFIG_FILES="$CONFIG_FILES $1" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + shift + CONFIG_HEADERS="$CONFIG_HEADERS $1" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:7800: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + esac + shift done -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" +exec 5>>config.log +cat >&5 << _ACEOF -trap 'rm -fr `echo "unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config ftconfig.h:ftconfig.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +## ----------------------- ## +## Running config.status. ## +## ----------------------- ## + +This file was extended by $as_me 2.52, executed with + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + > $ac_cs_invocation +on `(hostname || uname -n) 2>/dev/null | sed 1q` + +_ACEOF EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@version_info@%$version_info%g -s%@ft_version@%$ft_version%g -s%@host@%$host%g -s%@host_alias@%$host_alias%g -s%@host_cpu@%$host_cpu%g -s%@host_vendor@%$host_vendor%g -s%@host_os@%$host_os%g -s%@target@%$target%g -s%@target_alias@%$target_alias%g -s%@target_cpu@%$target_cpu%g -s%@target_vendor@%$target_vendor%g -s%@target_os@%$target_os%g -s%@build@%$build%g -s%@build_alias@%$build_alias%g -s%@build_cpu@%$build_cpu%g -s%@build_vendor@%$build_vendor%g -s%@build_os@%$build_os%g -s%@CC@%$CC%g -s%@CPP@%$CPP%g -s%@XX_CFLAGS@%$XX_CFLAGS%g -s%@XX_ANSIFLAGS@%$XX_ANSIFLAGS%g -s%@RMF@%$RMF%g -s%@RMDIR@%$RMDIR%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@FTSYS_SRC@%$FTSYS_SRC%g -s%@RANLIB@%$RANLIB%g -s%@LN_S@%$LN_S%g -s%@LIBTOOL@%$LIBTOOL%g +cat >>$CONFIG_STATUS <<\EOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "unix-cc.mk" ) CONFIG_FILES="$CONFIG_FILES unix-cc.mk:unix-cc.in" ;; + "unix-def.mk" ) CONFIG_FILES="$CONFIG_FILES unix-def.mk:unix-def.in" ;; + "freetype-config" ) CONFIG_FILES="$CONFIG_FILES freetype-config" ;; + "ftconfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS ftconfig.h:ftconfig.in" ;; + *) { { echo "$as_me:7839: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done -CEOF +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + EOF -cat >> $CONFIG_STATUS <<\EOF +cat >>$CONFIG_STATUS < conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@DEFS@,$DEFS,;t t +s,@LIBS@,$LIBS,;t t +s,@version_info@,$version_info,;t t +s,@ft_version@,$ft_version,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@target@,$target,;t t +s,@target_cpu@,$target_cpu,;t t +s,@target_vendor@,$target_vendor,;t t +s,@target_os@,$target_os,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@XX_CFLAGS@,$XX_CFLAGS,;t t +s,@XX_ANSIFLAGS@,$XX_ANSIFLAGS,;t t +s,@RMF@,$RMF,;t t +s,@RMDIR@,$RMDIR,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@FTSYS_SRC@,$FTSYS_SRC,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +CEOF + +EOF + + cat >>$CONFIG_STATUS <<\EOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF +fi # test -n "$CONFIG_FILES" -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then +cat >>$CONFIG_STATUS <<\EOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || mkdir "$as_incr_dir" + ;; + esac +done; } + + ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` else ac_dir_suffix= ac_dots= fi - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + case $srcdir in + .) ac_srcdir=. + if test -z "$ac_dots"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; + ac_srcdir=$ac_dots$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_dots$srcdir ;; + esac + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_dots$INSTALL ;; esac + + if test x"$ac_file" != x-; then + { echo "$as_me:8071: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated automatically by config.status. */ + configure_input="Generated automatically from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:8089: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:8102: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +EOF +cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +EOF +cat >>$CONFIG_STATUS <<\EOF - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* +# +# CONFIG_HEADER section. +# # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' -ac_dC='\3' -ac_dD='%g' -# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='\([ ]\)%\1#\2define\3' +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' ac_uC=' ' -ac_uD='\4%g' -# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_eB='$%\1#\2define\3' -ac_eC=' ' -ac_eD='%g' +ac_uD=',;t' -if test "${CONFIG_HEADERS+set}" != set; then -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -fi -for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - echo creating $ac_file - - rm -f conftest.frag conftest.in conftest.out - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - cat $ac_file_inputs > conftest.in + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac -EOF + test x"$ac_file" != x- && { echo "$as_me:8163: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:8174: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:8187: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in -# Transform confdefs.h into a sed script conftest.vals that substitutes -# the proper values into config.h.in to produce config.h. And first: -# Protect against being on the right side of a sed subst in config.status. -# Protect against being in an unquoted here document in config.status. -rm -f conftest.vals -cat > conftest.hdr <<\EOF -s/[\\&%]/\\&/g -s%[\\$`]%\\&%g -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp -s%ac_d%ac_u%gp -s%ac_u%ac_e%gp EOF -sed -n -f conftest.hdr confdefs.h > conftest.vals -rm -f conftest.hdr + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\EOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\(\([^ (][^ (]*\)([^)]*)\)[ ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +EOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. -cat >> conftest.vals <<\EOF -s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% +cat >>conftest.undefs <<\EOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, EOF -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. - +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # egrep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail -while : +while grep . conftest.undefs >/dev/null do - ac_lines=`grep -c . conftest.vals` - # grep -c gives empty output for an empty file on some AIX systems. - if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi - # Write a limited-size here document to conftest.frag. - echo ' cat > conftest.frag <> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in -' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals -done -rm -f conftest.vals - -cat >> $CONFIG_STATUS <<\EOF - rm -f conftest.frag conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > conftest.h - cat conftest.in >> conftest.h - rm -f conftest.in - if cmp -s $ac_file conftest.h 2>/dev/null; then - echo "$ac_file is unchanged" - rm -f conftest.h + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\EOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated automatically by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated automatically by configure. */" >$tmp/config.h else - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if cmp -s $ac_file $tmp/config.h 2>/dev/null; then + { echo "$as_me:8304: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || mkdir "$as_incr_dir" + ;; + esac +done; } + + fi + rm -f $ac_file + mv $tmp/config.h $ac_file fi - rm -f $ac_file - mv conftest.h $ac_file + else + cat $tmp/config.h + rm -f $tmp/config.h fi -fi; done - +done EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +cat >>$CONFIG_STATUS <<\EOF -exit 0 +{ (exit 0); exit 0; } EOF chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 +ac_clean_files=$ac_clean_files_save +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + exec 5>/dev/null + $SHELL $CONFIG_STATUS || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi Index: xc/extras/freetype2/builds/unix/configure.ac diff -u /dev/null xc/extras/freetype2/builds/unix/configure.ac:1.1.1.2 --- /dev/null Fri Jan 18 15:21:42 2002 +++ xc/extras/freetype2/builds/unix/configure.ac Mon Jan 14 11:52:00 2002 @@ -0,0 +1,91 @@ +dnl This file is part of the FreeType project. +dnl +dnl Process this file with autoconf to produce a configure script. +dnl + +AC_INIT +AC_CONFIG_SRCDIR([ftconfig.in]) + +dnl configuration file -- stay in 8.3 limit +AC_CONFIG_HEADER(ftconfig.h:ftconfig.in) + +version_info='8:0:2' +AC_SUBST(version_info) +ft_version=`echo $version_info | tr : .` +AC_SUBST(ft_version) + +dnl checks for system type +AC_CANONICAL_TARGET([]) + +dnl checks for programs +AC_PROG_CC +AC_PROG_CPP + +dnl get Compiler flags right. +if test "x$CC" = xgcc; then + XX_CFLAGS="-Wall" + XX_ANSIFLAGS="-pedantic -ansi" +else + case "$host" in + *-dec-osf*) + CFLAGS= + XX_CFLAGS="-std1 -g3" + XX_ANSIFLAGS= + ;; + *) + XX_CFLAGS= + XX_ANSIFLAGS= + ;; + esac +fi +AC_SUBST(XX_CFLAGS) +AC_SUBST(XX_ANSIFLAGS) + +AC_CHECK_PROG(RMF, rm, rm -f) +AC_CHECK_PROG(RMDIR, rmdir, rmdir) + +dnl Since this file will be finally moved to another directory we make +dnl the path of the install script absolute. This small code snippet has +dnl been taken from automake's `ylwrap' script. +AC_PROG_INSTALL +case "$INSTALL" in + /*) + ;; + */*) + INSTALL="`pwd`/$INSTALL" ;; +esac + +dnl checks for header files +AC_HEADER_STDC +AC_CHECK_HEADERS(fcntl.h unistd.h) + +dnl checks for typedefs, structures, and compiler characteristics +AC_C_CONST +AC_CHECK_SIZEOF(int) +AC_CHECK_SIZEOF(long) + +dnl checks for library functions + +dnl Here we check whether we can use our mmap file component. +AC_FUNC_MMAP +if test "$ac_cv_func_mmap_fixed_mapped" != yes; then + FTSYS_SRC='$(BASE_)ftsystem.c' +else + FTSYS_SRC='$(BUILD)/ftsystem.c' + + FT_MUNMAP_DECL + FT_MUNMAP_PARAM +fi +AC_SUBST(FTSYS_SRC) + +AC_CHECK_FUNCS(memcpy memmove) + +AC_PROG_LIBTOOL + +dnl create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' +dnl and 'builds/unix/unix-cc.mk' that will be used by the build system +dnl +AC_CONFIG_FILES([unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config]) +AC_OUTPUT + +dnl end of configure.ac Index: xc/extras/freetype2/builds/unix/configure.in diff -u xc/extras/freetype2/builds/unix/configure.in:1.1.1.2 xc/extras/freetype2/builds/unix/configure.in:removed --- xc/extras/freetype2/builds/unix/configure.in:1.1.1.2 Tue May 15 23:45:47 2001 +++ xc/extras/freetype2/builds/unix/configure.in Fri Jan 18 15:21:42 2002 @@ -1,89 +0,0 @@ -dnl This file is part of the FreeType project. -dnl -dnl Process this file with autoconf to produce a configure script. -dnl - -AC_INIT(ftconfig.in) - -dnl configuration file -- stay in 8.3 limit -AC_CONFIG_HEADER(ftconfig.h:ftconfig.in) - -version_info='6:1:0' -AC_SUBST(version_info) -ft_version=`echo $version_info | tr : .` -AC_SUBST(ft_version) - -dnl checks for system type -AC_CANONICAL_SYSTEM - -dnl checks for programs -AC_PROG_CC -AC_PROG_CPP - -dnl get Compiler flags right. -if test "x$CC" = xgcc; then - XX_CFLAGS="-Wall" - XX_ANSIFLAGS="-pedantic -ansi" -else - case "$host" in - *-dec-osf*) - CFLAGS= - XX_CFLAGS="-std1 -g3" - XX_ANSIFLAGS= - ;; - *) - XX_CFLAGS= - XX_ANSIFLAGS= - ;; - esac -fi -AC_SUBST(XX_CFLAGS) -AC_SUBST(XX_ANSIFLAGS) - -AC_CHECK_PROG(RMF, rm, rm -f) -AC_CHECK_PROG(RMDIR, rmdir, rmdir) - -dnl Since this file will be finally moved to another directory we make -dnl the path of the install script absolute. This small code snippet has -dnl been taken from automake's `ylwrap' script. -AC_PROG_INSTALL -case "$INSTALL" in - /*) - ;; - */*) - INSTALL="`pwd`/$INSTALL" ;; -esac - -dnl checks for header files -AC_HEADER_STDC -AC_CHECK_HEADERS(fcntl.h unistd.h) - -dnl checks for typedefs, structures, and compiler characteristics -AC_C_CONST -AC_CHECK_SIZEOF(int) -AC_CHECK_SIZEOF(long) - -dnl checks for library functions - -dnl Here we check whether we can use our mmap file component. -AC_FUNC_MMAP -if test "$ac_cv_func_mmap_fixed_mapped" != yes; then - FTSYS_SRC='$(BASE_)ftsystem.c' -else - FTSYS_SRC='$(BUILD)/ftsystem.c' - - FT_MUNMAP_DECL - FT_MUNMAP_PARAM -fi -AC_SUBST(FTSYS_SRC) - -AC_CHECK_FUNCS(memcpy memmove) - -AM_PROG_LIBTOOL - -dnl create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' -dnl and 'builds/unix/unix-cc.mk' that will be used by the build system -dnl -AC_OUTPUT(unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config) - -dnl end of configure.in Index: xc/extras/freetype2/builds/unix/detect.mk diff -u xc/extras/freetype2/builds/unix/detect.mk:1.1.1.2 xc/extras/freetype2/builds/unix/detect.mk:1.1.1.3 --- xc/extras/freetype2/builds/unix/detect.mk:1.1.1.2 Tue May 15 23:45:49 2001 +++ xc/extras/freetype2/builds/unix/detect.mk Sun Sep 9 22:55:51 2001 @@ -16,7 +16,9 @@ ifeq ($(PLATFORM),ansi) - is_unix := $(strip $(wildcard /sbin/init) $(wildcard /hurd/auth)) + # Note: this test is duplicated in "builds/toplevel.mk". + # + is_unix := $(strip $(wildcard /sbin/init) $(wildcard /usr/sbin/init) $(wildcard /hurd/auth)) ifneq ($(is_unix),) PLATFORM := unix Index: xc/extras/freetype2/builds/unix/freetype-config.in diff -u xc/extras/freetype2/builds/unix/freetype-config.in:1.1.1.2 xc/extras/freetype2/builds/unix/freetype-config.in:1.1.1.3 --- xc/extras/freetype2/builds/unix/freetype-config.in:1.1.1.2 Tue May 15 23:45:49 2001 +++ xc/extras/freetype2/builds/unix/freetype-config.in Mon Jan 14 11:52:00 2002 @@ -1,4 +1,4 @@ -#!/bin/sh +#! /bin/sh prefix=@prefix@ exec_prefix=@exec_prefix@ @@ -73,17 +73,25 @@ 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@/freetype2" echo $cflags $includes fi + if test "$echo_libs" = "yes"; then libs="-lfreetype" - echo -L@libdir@ $libs + if test "@libdir@" != "/usr/lib" ; then + echo -L@libdir@ $libs + else + echo $libs + fi fi + if test "$echo_libtool" = "yes"; then convlib="libfreetype.la" echo @libdir@/$convlib Index: xc/extras/freetype2/builds/unix/freetype2.m4 diff -u /dev/null xc/extras/freetype2/builds/unix/freetype2.m4:1.1.1.1 --- /dev/null Fri Jan 18 15:21:42 2002 +++ xc/extras/freetype2/builds/unix/freetype2.m4 Mon Jan 14 11:52:00 2002 @@ -0,0 +1,133 @@ +# Configure paths for FreeType2 +# Marcelo Magallon 2001-10-26, based on gtk.m4 by Owen Taylor + +dnl AM_CHECK_FT2([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for FreeType2, and define FT2_CFLAGS and FT2_LIBS +dnl +AC_DEFUN(AC_CHECK_FT2, +[dnl +dnl Get the cflags and libraries from the freetype-config script +dnl +AC_ARG_WITH(freetype-prefix, +[ --with-ft-prefix=PFX Prefix where FreeType is installed (optional)], + ft_config_prefix="$withval", ft_config_prefix="") +AC_ARG_WITH(freetype-exec-prefix, +[ --with-ft-exec-prefix=PFX Exec prefix where FreeType is installed (optional)], + ft_config_exec_prefix="$withval", ft_config_exec_prefix="") +AC_ARG_ENABLE(freetypetest, +[ --disable-freetypetest Do not try to compile and run + a test FreeType program], + [], enable_fttest=yes) + +if test x$ft_config_exec_prefix != x ; then + ft_config_args="$ft_config_args --exec-prefix=$ft_config_exec_prefix" + if test x${FT2_CONFIG+set} != xset ; then + FT2_CONFIG=$ft_config_exec_prefix/bin/freetype-config + fi +fi +if test x$ft_config_prefix != x ; then + ft_config_args="$ft_config_args --prefix=$ft_config_prefix" + if test x${FT2_CONFIG+set} != xset ; then + FT2_CONFIG=$ft_config_prefix/bin/freetype-config + fi +fi +AC_PATH_PROG(FT2_CONFIG, freetype-config, no) + +min_ft_version=ifelse([$1], ,6.1.0,$1) +AC_MSG_CHECKING(for FreeType - version >= $min_ft_version) +no_ft="" +if test "$FT2_CONFIG" = "no" ; then + no_ft=yes +else + FT2_CFLAGS=`$FT2_CONFIG $ft_config_args --cflags` + FT2_LIBS=`$FT2_CONFIG $ft_config_args --libs` + ft_config_major_version=`$FT2_CONFIG $ft_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + ft_config_minor_version=`$FT2_CONFIG $ft_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + ft_config_micro_version=`$FT2_CONFIG $ft_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + ft_min_major_version=`echo $min_ft_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + ft_min_minor_version=`echo $min_ft_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + ft_min_micro_version=`echo $min_ft_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_fttest" = "xyes" ; then + ft_config_is_lt=no + if test $ft_config_major_version -lt $ft_min_major_version ; then + ft_config_is_lt=yes + else + if test $ft_config_major_version -eq $ft_min_major_version ; then + if test $ft_config_minor_version -lt $ft_min_minor_version ; then + ft_config_is_lt=yes + else + if test $ft_config_minor_version -eq $ft_min_minor_version ; then + if test $ft_config_micro_version -lt $ft_min_micro_version ; then + ft_config_is_lt=yes + fi + fi + fi + fi + fi + if test "x$ft_config_is_lt" = "xyes" ; then + ifelse([$3], , :, [$3]) + else + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $FT2_CFLAGS" + LIBS="$FT2_LIBS $LIBS" +dnl +dnl Sanity checks for the results of freetype-config to some extent +dnl + AC_TRY_RUN([ +#include +#include FT_FREETYPE_H +#include +#include + +int +main() +{ + FT_Library library; + FT_Error error; + + error = FT_Init_FreeType(&library); + + if (error) + return 1; + else + { + FT_Done_FreeType(library); + return 0; + } +} +],, no_ft=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi # test $ft_config_version -lt $ft_min_version + fi # test "x$enable_fttest" = "xyes" +fi # test "$FT2_CONFIG" = "no" +if test "x$no_ft" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) +else + AC_MSG_RESULT(no) + if test "$FT2_CONFIG" = "no" ; then + echo "*** The freetype-config script installed by FreeType 2 could not be found." + echo "*** If FreeType 2 was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the FT2_CONFIG environment variable to the" + echo "*** full path to freetype-config." + else + echo "*** The FreeType test program failed to run. If your system uses" + echo "*** shared libraries and they are installed outside the normal" + echo "*** system library path, make sure the variable LD_LIBRARY_PATH" + echo "*** (or whatever is appropiate for your system) is correctly set." + fi + FT2_CFLAGS="" + FT2_LIBS="" + ifelse([$3], , :, [$3]) +fi +AC_SUBST(FT2_CFLAGS) +AC_SUBST(FT2_LIBS) +]) Index: xc/extras/freetype2/builds/unix/ft2unix.h diff -u xc/extras/freetype2/builds/unix/ft2unix.h:1.1.1.1 xc/extras/freetype2/builds/unix/ft2unix.h:1.1.1.3 --- xc/extras/freetype2/builds/unix/ft2unix.h:1.1.1.1 Tue May 15 23:45:49 2001 +++ xc/extras/freetype2/builds/unix/ft2unix.h Sun Dec 16 12:49:17 2001 @@ -4,7 +4,7 @@ /* */ /* Build macros of the FreeType 2 library. */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -21,36 +21,37 @@ /* This is a Unix-specific version of that should be used */ /* exclusively *after* installation of the library. */ /* */ - /* it assumes that "/usr/local/include/freetype2", or wathever is */ - /* returned by the "freetype-config --cflags" command is in your */ - /* compilation include path.. */ + /* It assumes that "/usr/local/include/freetype2" (or wathever is */ + /* returned by the "freetype-config --cflags" command) is in your */ + /* compilation include path. */ /* */ - /* We don't need to do anything special in this release. However, for */ + /* We don't need to do anything special in this release. However, for */ /* FreeType 2.1, the following installation changes will be performed: */ /* */ - /* - the content of "freetype-2.1/include/freetype" will be */ - /* installed to "/usr/local/include/freetype2" instead of */ - /* "/usr/local/include/freetype2/freetype" */ - /* */ - /* - this file will #include , instead */ - /* of */ - /* */ - /* - the content of "ftheader.h" will be processed through sed to */ - /* replace all "" with "" */ - /* */ - /* - adding "/usr/local/include/freetype2" to your compilation */ - /* include path will not be necessary anymore. The command */ - /* "freetype-config --cflags" will return an empty string */ + /* - The contents of "freetype-2.1/include/freetype" will be installed */ + /* to "/usr/local/include/freetype2" instead of */ + /* "/usr/local/include/freetype2/freetype". */ + /* */ + /* - This file will #include , instead */ + /* of . */ + /* */ + /* - The contents of "ftheader.h" will be processed with `sed' to */ + /* replace all "" with "". */ + /* */ + /* - Adding "/usr/local/include/freetype2" to your compilation include */ + /* path will not be necessary anymore. The command */ + /* "freetype-config --cflags" will return an empty string. */ /* */ - /* - client applications who adhere to the new inclusion scheme */ - /* WILL NOT NEED TO BE MODIFIED to compile with FT 2.1 !! */ + /* - Client applications which adhere to the new inclusion scheme */ + /* WILL NOT NEED TO BE MODIFIED to compile with FT 2.1! */ /* */ /*************************************************************************/ + #ifndef __FT2_BUILD_UNIX_H__ #define __FT2_BUILD_UNIX_H__ -/* "/usr/local/include/freetype2" must be in your current inclusion path */ + /* "/usr/local/include/freetype2" must be in your current inclusion path */ #include #endif /* __FT2_BUILD_UNIX_H__ */ Index: xc/extras/freetype2/builds/unix/ftconfig.in diff -u xc/extras/freetype2/builds/unix/ftconfig.in:1.1.1.2 xc/extras/freetype2/builds/unix/ftconfig.in:1.1.1.4 --- xc/extras/freetype2/builds/unix/ftconfig.in:1.1.1.2 Tue May 15 23:45:46 2001 +++ xc/extras/freetype2/builds/unix/ftconfig.in Sun Dec 16 12:49:17 2001 @@ -212,8 +212,7 @@ #endif /* !FT_EXPORT_VAR */ /* The following macros are needed to compile the library with a */ - /* C++ compiler. Note that we do this for convenience -- please */ - /* don't ask for more C++ features. */ + /* C++ compiler and with 16bit compilers. */ /* */ /* This is special. Within C++, you must specify `extern "C"' for */ @@ -231,19 +230,27 @@ /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ /* that contains pointers to callback functions. */ /* */ + /* */ + /* Some 16bit compilers have to redefine these macros to insert */ + /* the infamous `_cdecl' or `__fastcall' declarations. */ + /* */ +#ifndef FT_CALLBACK_DEF #ifdef __cplusplus +#define FT_CALLBACK_DEF( x ) extern "C" x +#else +#define FT_CALLBACK_DEF( x ) static x +#endif +#endif /* FT_CALLBACK_DEF */ -#define FT_CALLBACK_DEF extern "C" +#ifndef FT_CALLBACK_TABLE +#ifdef __cplusplus #define FT_CALLBACK_TABLE extern "C" #define FT_CALLBACK_TABLE_DEF extern "C" - #else - -#define FT_CALLBACK_DEF static #define FT_CALLBACK_TABLE extern #define FT_CALLBACK_TABLE_DEF /* nothing */ - -#endif /* __cplusplus */ +#endif +#endif /* FT_CALLBACK_TABLE */ FT_END_HEADER Index: xc/extras/freetype2/builds/unix/ftsystem.c diff -u xc/extras/freetype2/builds/unix/ftsystem.c:1.1.1.2 xc/extras/freetype2/builds/unix/ftsystem.c:1.1.1.5 --- xc/extras/freetype2/builds/unix/ftsystem.c:1.1.1.2 Tue May 15 23:45:46 2001 +++ xc/extras/freetype2/builds/unix/ftsystem.c Mon Jan 14 11:52:00 2002 @@ -4,7 +4,7 @@ /* */ /* Unix-specific FreeType low-level system interface (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -17,7 +17,7 @@ #include -/* we use our special ftconfig.h file, not the standard one */ + /* we use our special ftconfig.h file, not the standard one */ #include #include FT_INTERNAL_DEBUG_H #include FT_SYSTEM_H @@ -48,8 +48,9 @@ #else extern #endif - int munmap( char* addr, - int len ); + int + munmap( char* addr, + int len ); #define MUNMAP_ARG_CAST char * @@ -91,9 +92,9 @@ /* */ /* The address of newly allocated block. */ /* */ - FT_CALLBACK_DEF - void* ft_alloc( FT_Memory memory, - long size ) + FT_CALLBACK_DEF( void* ) + ft_alloc( FT_Memory memory, + long size ) { FT_UNUSED( memory ); @@ -121,11 +122,11 @@ /* */ /* The address of the reallocated memory block. */ /* */ - FT_CALLBACK_DEF - void* ft_realloc( FT_Memory memory, - long cur_size, - long new_size, - void* block ) + FT_CALLBACK_DEF( void* ) + ft_realloc( FT_Memory memory, + long cur_size, + long new_size, + void* block ) { FT_UNUSED( memory ); FT_UNUSED( cur_size ); @@ -147,9 +148,9 @@ /* */ /* block :: The address of block in memory to be freed. */ /* */ - FT_CALLBACK_DEF - void ft_free( FT_Memory memory, - void* block ) + FT_CALLBACK_DEF( void ) + ft_free( FT_Memory memory, + void* block ) { FT_UNUSED( memory ); @@ -189,8 +190,8 @@ /* */ /* stream :: A pointer to the stream object. */ /* */ - FT_CALLBACK_DEF - void ft_close_stream( FT_Stream stream ) + FT_CALLBACK_DEF( void ) + ft_close_stream( FT_Stream stream ) { munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size ); @@ -202,8 +203,9 @@ /* documentation is in ftobjs.h */ - FT_EXPORT_DEF( FT_Error ) FT_New_Stream( const char* filepathname, - FT_Stream stream ) + FT_EXPORT_DEF( FT_Error ) + FT_New_Stream( const char* filepathname, + FT_Stream stream ) { int file; struct stat stat_buf; @@ -221,6 +223,19 @@ return FT_Err_Cannot_Open_Resource; } + /* Here we ensure that a "fork" will _not_ duplicate */ + /* our opened input streams on Unix. This is critical */ + /* since it avoids some (possible) access control */ + /* issues and cleans up the kernel file table a bit. */ + /* */ +#ifdef F_SETFD +#ifdef FD_CLOEXEC + (void) fcntl( file, F_SETFD, FD_CLOEXEC ); +#else + (void) fcntl( file, F_SETFD, 1 ); +#endif /* FD_CLOEXEC */ +#endif /* F_SETFD */ + if ( fstat( file, &stat_buf ) < 0 ) { FT_ERROR(( "FT_New_Stream:" )); @@ -269,9 +284,21 @@ } +#ifdef FT_DEBUG_MEMORY + + extern FT_Int + ft_mem_debug_init( FT_Memory memory ); + + extern void + ft_mem_debug_done( FT_Memory memory ); + +#endif + + /* documentation is in ftobjs.h */ - FT_EXPORT_DEF( FT_Memory ) FT_New_Memory( void ) + FT_EXPORT_DEF( FT_Memory ) + FT_New_Memory( void ) { FT_Memory memory; @@ -283,6 +310,9 @@ memory->alloc = ft_alloc; memory->realloc = ft_realloc; memory->free = ft_free; +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_init( memory ); +#endif } return memory; @@ -291,8 +321,12 @@ /* documentation is in ftobjs.h */ - FT_EXPORT_DEF( void ) FT_Done_Memory( FT_Memory memory ) + FT_EXPORT_DEF( void ) + FT_Done_Memory( FT_Memory memory ) { +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_done( memory ); +#endif memory->free( memory, memory ); } Index: xc/extras/freetype2/builds/unix/ltconfig diff -u xc/extras/freetype2/builds/unix/ltconfig:1.1.1.1 xc/extras/freetype2/builds/unix/ltconfig:removed --- xc/extras/freetype2/builds/unix/ltconfig:1.1.1.1 Fri Dec 8 16:26:08 2000 +++ xc/extras/freetype2/builds/unix/ltconfig Fri Jan 18 15:21:42 2002 @@ -1,3114 +0,0 @@ -#! /bin/sh - -# ltconfig - Create a system-specific libtool. -# Copyright (C) 1996-1999 Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# A lot of this script is taken from autoconf-2.10. - -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} -echo=echo -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -else - # Restart under the correct shell. - exec "$SHELL" "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat </dev/null`} - case X$UNAME in - *-DOS) PATH_SEPARATOR=';' ;; - *) PATH_SEPARATOR=':' ;; - esac -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -if test "X${echo_test_string+set}" != Xset; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if (echo_test_string="`eval $cmd`") 2>/dev/null && - echo_test_string="`eval $cmd`" && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then - break - fi - done -fi - -if test "X`($echo '\t') 2>/dev/null`" != 'X\t' || - test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH /usr/ucb; do - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$save_ifs" - - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running ltconfig again with it. - ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} - else - # Try using printf. - echo='printf "%s\n"' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - # Cool, printf works - : - elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && - test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL" - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL $0 --fallback-echo" - elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && - test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - echo="$CONFIG_SHELL $0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "$0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' -sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# The name of this program. -progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` - -# Constants: -PROGRAM=ltconfig -PACKAGE=libtool -VERSION=1.3.5 -TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)" -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -rm="rm -f" - -help="Try \`$progname --help' for more information." - -# Global variables: -default_ofile=libtool -can_build_shared=yes -enable_shared=yes -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -enable_static=yes -enable_fast_install=yes -enable_dlopen=unknown -enable_win32_dll=no -ltmain= -silent= -srcdir= -ac_config_guess= -ac_config_sub= -host= -nonopt= -ofile="$default_ofile" -verify_host=yes -with_gcc=no -with_gnu_ld=no -need_locks=yes -ac_ext=c -objext=o -libext=a -exeext= -cache_file= - -old_AR="$AR" -old_CC="$CC" -old_CFLAGS="$CFLAGS" -old_CPPFLAGS="$CPPFLAGS" -old_LDFLAGS="$LDFLAGS" -old_LD="$LD" -old_LN_S="$LN_S" -old_LIBS="$LIBS" -old_NM="$NM" -old_RANLIB="$RANLIB" -old_DLLTOOL="$DLLTOOL" -old_OBJDUMP="$OBJDUMP" -old_AS="$AS" - -# Parse the command line options. -args= -prev= -for option -do - case "$option" in - -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - eval "$prev=\$option" - prev= - continue - fi - - case "$option" in - --help) cat <&2 - echo "$help" 1>&2 - exit 1 - ;; - - *) - if test -z "$ltmain"; then - ltmain="$option" - elif test -z "$host"; then -# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 -# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then -# echo "$progname: warning \`$option' is not a valid host type" 1>&2 -# fi - host="$option" - else - echo "$progname: too many arguments" 1>&2 - echo "$help" 1>&2 - exit 1 - fi ;; - esac -done - -if test -z "$ltmain"; then - echo "$progname: you must specify a LTMAIN file" 1>&2 - echo "$help" 1>&2 - exit 1 -fi - -if test ! -f "$ltmain"; then - echo "$progname: \`$ltmain' does not exist" 1>&2 - echo "$help" 1>&2 - exit 1 -fi - -# Quote any args containing shell metacharacters. -ltconfig_args= -for arg -do - case "$arg" in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ltconfig_args="$ltconfig_args '$arg'" ;; - *) ltconfig_args="$ltconfig_args $arg" ;; - esac -done - -# A relevant subset of AC_INIT. - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 5 compiler messages saved in config.log -# 6 checking for... messages and results -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>>./config.log - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi -if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi - -if test -n "$cache_file" && test -r "$cache_file"; then - echo "loading cache $cache_file within ltconfig" - . $cache_file -fi - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - -if test -z "$srcdir"; then - # Assume the source directory is the same one as the path to LTMAIN. - srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` - test "$srcdir" = "$ltmain" && srcdir=. -fi - -trap "$rm conftest*; exit 1" 1 2 15 -if test "$verify_host" = yes; then - # Check for config.guess and config.sub. - ac_aux_dir= - for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/config.guess; then - ac_aux_dir=$ac_dir - break - fi - done - if test -z "$ac_aux_dir"; then - echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 - echo "$help" 1>&2 - exit 1 - fi - ac_config_guess=$ac_aux_dir/config.guess - ac_config_sub=$ac_aux_dir/config.sub - - # Make sure we can run config.sub. - if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : - else - echo "$progname: cannot run $ac_config_sub" 1>&2 - echo "$help" 1>&2 - exit 1 - fi - - echo $ac_n "checking host system type""... $ac_c" 1>&6 - - host_alias=$host - case "$host_alias" in - "") - if host_alias=`$SHELL $ac_config_guess`; then : - else - echo "$progname: cannot guess host type; you must specify one" 1>&2 - echo "$help" 1>&2 - exit 1 - fi ;; - esac - host=`$SHELL $ac_config_sub $host_alias` - echo "$ac_t$host" 1>&6 - - # Make sure the host verified. - test -z "$host" && exit 1 - -elif test -z "$host"; then - echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 - echo "$help" 1>&2 - exit 1 -else - host_alias=$host -fi - -# Transform linux* to *-*-linux-gnu*, to support old configure scripts. -case "$host_os" in -linux-gnu*) ;; -linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` -esac - -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - -case "$host_os" in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR cru $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -# Set a sane default for `AR'. -test -z "$AR" && AR=ar - -# Set a sane default for `OBJDUMP'. -test -z "$OBJDUMP" && OBJDUMP=objdump - -# If RANLIB is not set, then run the test. -if test "${RANLIB+set}" != "set"; then - result=no - - echo $ac_n "checking for ranlib... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then - RANLIB="ranlib" - result="ranlib" - break - fi - done - IFS="$save_ifs" - - echo "$ac_t$result" 1>&6 -fi - -if test -n "$RANLIB"; then - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" -fi - -# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$AS" && AS=as - -# Check to see if we are using GCC. -if test "$with_gcc" != yes || test -z "$CC"; then - # If CC is not set, then try to find GCC or a usable CC. - if test -z "$CC"; then - echo $ac_n "checking for gcc... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then - CC="gcc" - break - fi - done - IFS="$save_ifs" - - if test -n "$CC"; then - echo "$ac_t$CC" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - fi - - # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". - if test -z "$CC"; then - echo $ac_n "checking for cc... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - cc_rejected=no - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/cc || test -f $dir/cc$ac_exeext; then - if test "$dir/cc" = "/usr/ucb/cc"; then - cc_rejected=yes - continue - fi - CC="cc" - break - fi - done - IFS="$save_ifs" - if test $cc_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $CC - shift - if test $# -gt 0; then - # We chose a different compiler from the bogus one. - # However, it has the same name, so the bogon will be chosen - # first if we set CC to just the name; use the full file name. - shift - set dummy "$dir/cc" "$@" - shift - CC="$@" - fi - fi - - if test -n "$CC"; then - echo "$ac_t$CC" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - - if test -z "$CC"; then - echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 - exit 1 - fi - fi - - # Now see if the compiler is really GCC. - with_gcc=no - echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 - echo "$progname:581: checking whether we are using GNU C" >&5 - - $rm conftest.c - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - with_gcc=yes - fi - $rm conftest.c - echo "$ac_t$with_gcc" 1>&6 -fi - -# Allow CC to be a program name with arguments. -set dummy $CC -compiler="$2" - -echo $ac_n "checking for object suffix... $ac_c" 1>&6 -$rm conftest* -echo 'int i = 1;' > conftest.c -echo "$progname:603: checking for object suffix" >& 5 -if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - - for ac_file in conftest.*; do - case $ac_file in - *.c) ;; - *) objext=`echo $ac_file | sed -e s/conftest.//` ;; - esac - done -else - cat conftest.err 1>&5 - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 -fi -$rm conftest* -echo "$ac_t$objext" 1>&6 - -echo $ac_n "checking for executable suffix... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_cv_exeext="no" - $rm conftest* - echo 'main () { return 0; }' > conftest.c - echo "$progname:629: checking for executable suffix" >& 5 - if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - - for ac_file in conftest.*; do - case $ac_file in - *.c | *.err | *.$objext ) ;; - *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; - esac - done - else - cat conftest.err 1>&5 - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 - fi - $rm conftest* -fi -if test "X$ac_cv_exeext" = Xno; then - exeext="" -else - exeext="$ac_cv_exeext" -fi -echo "$ac_t$ac_cv_exeext" 1>&6 - -echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 -pic_flag= -special_shlib_compile_flags= -wl= -link_static_flag= -no_builtin_flag= - -if test "$with_gcc" = yes; then - wl='-Wl,' - link_static_flag='-static' - - case "$host_os" in - beos* | irix5* | irix6* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - aix*) - # Below there is a dirty hack to force normal static linking with -ldl - # The problem is because libdl dynamically linked with both libc and - # libC (AIX C++ library), which obviously doesn't included in libraries - # list by gcc. This cause undefined symbols with -static flags. - # This hack allows C programs to be linked with "-static -ldl", but - # we not sure about C++ programs. - link_static_flag="$link_static_flag ${wl}-lC" - ;; - cygwin* | mingw* | os2*) - # We can build DLLs from non-PIC. - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - pic_flag='-m68020 -resident32 -malways-restore-a4' - ;; - sysv4*MP*) - if test -d /usr/nec; then - pic_flag=-Kconform_pic - fi - ;; - *) - pic_flag='-fPIC' - ;; - esac -else - # PORTME Check for PIC flags for the system compiler. - case "$host_os" in - aix3* | aix4*) - # All AIX code is PIC. - link_static_flag='-bnso -bI:/lib/syscalls.exp' - ;; - - hpux9* | hpux10* | hpux11*) - # Is there a better link_static_flag that works with the bundled CC? - wl='-Wl,' - link_static_flag="${wl}-a ${wl}archive" - pic_flag='+Z' - ;; - - irix5* | irix6*) - wl='-Wl,' - link_static_flag='-non_shared' - # PIC (with -KPIC) is the default. - ;; - - cygwin* | mingw* | os2*) - # We can build DLLs from non-PIC. - ;; - - osf3* | osf4* | osf5*) - # All OSF/1 code is PIC. - wl='-Wl,' - link_static_flag='-non_shared' - ;; - - sco3.2v5*) - pic_flag='-Kpic' - link_static_flag='-dn' - special_shlib_compile_flags='-belf' - ;; - - solaris*) - pic_flag='-KPIC' - link_static_flag='-Bstatic' - wl='-Wl,' - ;; - - sunos4*) - pic_flag='-PIC' - link_static_flag='-Bstatic' - wl='-Qoption ld ' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - pic_flag='-KPIC' - link_static_flag='-Bstatic' - wl='-Wl,' - ;; - - uts4*) - pic_flag='-pic' - link_static_flag='-Bstatic' - ;; - sysv4*MP*) - if test -d /usr/nec ;then - pic_flag='-Kconform_pic' - link_static_flag='-Bstatic' - fi - ;; - *) - can_build_shared=no - ;; - esac -fi - -if test -n "$pic_flag"; then - echo "$ac_t$pic_flag" 1>&6 - - # Check to make sure the pic_flag actually works. - echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 - $rm conftest* - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $pic_flag -DPIC" - echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 - if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - - case "$host_os" in - hpux9* | hpux10* | hpux11*) - # On HP-UX, both CC and GCC only warn that PIC is supported... then they - # create non-PIC objects. So, if there were any warnings, we assume that - # PIC is not supported. - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - can_build_shared=no - pic_flag= - else - echo "$ac_t"yes 1>&6 - pic_flag=" $pic_flag" - fi - ;; - *) - echo "$ac_t"yes 1>&6 - pic_flag=" $pic_flag" - ;; - esac - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - can_build_shared=no - pic_flag= - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* -else - echo "$ac_t"none 1>&6 -fi - -# Check to see if options -o and -c are simultaneously supported by compiler -echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 -$rm -r conftest 2>/dev/null -mkdir conftest -cd conftest -$rm conftest* -echo "int some_variable = 0;" > conftest.c -mkdir out -# According to Tom Tromey, Ian Lance Taylor reported there are C compilers -# that will create temporary files in the current directory regardless of -# the output directory. Thus, making CWD read-only will cause this test -# to fail, enabling locking or at least warning the user not to do parallel -# builds. -chmod -w . -save_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -o out/conftest2.o" -echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 -if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s out/conftest.err; then - echo "$ac_t"no 1>&6 - compiler_c_o=no - else - echo "$ac_t"yes 1>&6 - compiler_c_o=yes - fi -else - # Append any errors to the config.log. - cat out/conftest.err 1>&5 - compiler_c_o=no - echo "$ac_t"no 1>&6 -fi -CFLAGS="$save_CFLAGS" -chmod u+w . -$rm conftest* out/* -rmdir out -cd .. -rmdir conftest -$rm -r conftest 2>/dev/null - -if test x"$compiler_c_o" = x"yes"; then - # Check to see if we can write to a .lo - echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 - $rm conftest* - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -c -o conftest.lo" - echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 -if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - compiler_o_lo=no - else - echo "$ac_t"yes 1>&6 - compiler_o_lo=yes - fi - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - compiler_o_lo=no - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* -else - compiler_o_lo=no -fi - -# Check to see if we can do hard links to lock some files if needed -hard_links="nottested" -if test "$compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6 - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$ac_t$hard_links" 1>&6 - $rm conftest* - if test "$hard_links" = no; then - echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 - need_locks=warn - fi -else - need_locks=no -fi - -if test "$with_gcc" = yes; then - # Check to see if options -fno-rtti -fno-exceptions are supported by compiler - echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 - $rm conftest* - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" - echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 - if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - compiler_rtti_exceptions=no - else - echo "$ac_t"yes 1>&6 - compiler_rtti_exceptions=yes - fi - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - compiler_rtti_exceptions=no - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* - - if test "$compiler_rtti_exceptions" = "yes"; then - no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' - else - no_builtin_flag=' -fno-builtin' - fi - -fi - -# Check for any special shared library compilation flags. -if test -n "$special_shlib_compile_flags"; then - echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 - if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : - else - echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 - can_build_shared=no - fi -fi - -echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 -$rm conftest* -echo 'main(){return(0);}' > conftest.c -save_LDFLAGS="$LDFLAGS" -LDFLAGS="$LDFLAGS $link_static_flag" -echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 -if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - echo "$ac_t$link_static_flag" 1>&6 -else - echo "$ac_t"none 1>&6 - link_static_flag= -fi -LDFLAGS="$save_LDFLAGS" -$rm conftest* - -if test -z "$LN_S"; then - # Check to see if we can use ln -s, or we need hard links. - echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 - $rm conftest.dat - if ln -s X conftest.dat 2>/dev/null; then - $rm conftest.dat - LN_S="ln -s" - else - LN_S=ln - fi - if test "$LN_S" = "ln -s"; then - echo "$ac_t"yes 1>&6 - else - echo "$ac_t"no 1>&6 - fi -fi - -# Make sure LD is an absolute path. -if test -z "$LD"; then - ac_prog=ld - if test "$with_gcc" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 - echo "$progname:991: checking for ld used by GCC" >&5 - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we are not using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac - elif test "$with_gnu_ld" = yes; then - echo $ac_n "checking for GNU ld... $ac_c" 1>&6 - echo "$progname:1015: checking for GNU ld" >&5 - else - echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 - echo "$progname:1018: checking for non-GNU ld" >&5 - fi - - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" - fi - - if test -n "$LD"; then - echo "$ac_t$LD" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - - if test -z "$LD"; then - echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 - exit 1 - fi -fi - -# Check to see if it really is or is not GNU ld. -echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 -# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - with_gnu_ld=yes -else - with_gnu_ld=no -fi -echo "$ac_t$with_gnu_ld" 1>&6 - -# See if the linker supports building shared libraries. -echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 - -allow_undefined_flag= -no_undefined_flag= -need_lib_prefix=unknown -need_version=unknown -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -archive_cmds= -archive_expsym_cmds= -old_archive_from_new_cmds= -export_dynamic_flag_spec= -whole_archive_flag_spec= -thread_safe_flag_spec= -hardcode_libdir_flag_spec= -hardcode_libdir_separator= -hardcode_direct=no -hardcode_minus_L=no -hardcode_shlibpath_var=unsupported -runpath_var= -always_export_symbols=no -export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' -# include_expsyms should be a list of space-separated symbols to be *always* -# included in the symbol list -include_expsyms= -# exclude_expsyms can be an egrep regular expression of symbols to exclude -# it will be wrapped by ` (' and `)$', so one must not match beginning or -# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', -# as well as any symbol that contains `d'. -exclude_expsyms="_GLOBAL_OFFSET_TABLE_" -# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out -# platforms (ab)use it in PIC code, but their linkers get confused if -# the symbol is explicitly referenced. Since portable code cannot -# rely on this symbol name, it's probably fine to never include it in -# preloaded symbol tables. - -case "$host_os" in -cygwin* | mingw*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$with_gcc" != yes; then - with_gnu_ld=no - fi - ;; - -esac - -ld_shlibs=yes -if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case "$host_os" in - aix3* | aix4*) - # On AIX, the GNU linker is very broken - ld_shlibs=no - cat <&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - ;; - - amigaos*) - archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - - # Samuel A. Falvo II reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can use - # them. - ld_shlibs=no - ;; - - beos*) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw*) - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - allow_undefined_flag=unsupported - always_export_symbols=yes - - # Extract the symbol export list from an `--export-all' def file, - # then regenerate the def file from the symbol export list, so that - # the compiled dll only exports the symbol export list. - # Be careful not to strip the DATA tag left by newer dlltools. - export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ - test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ - $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ - sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols' - - # If DATA tags from a recent dlltool are present, honour them! - archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ - _lt_hint=1; - cat $export_symbols | while read symbol; do - set dummy \$symbol; - case \$# in - 2) echo " \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;; - *) echo " \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;; - esac; - _lt_hint=`expr 1 + \$_lt_hint`; - done~ - test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ - test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ - $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ - $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ - $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ - $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ - $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' - - old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' - # can we support soname and/or expsyms with a.out? -oliva - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - case $host_os in - cygwin* | mingw*) - # dlltool doesn't understand --whole-archive et. al. - whole_archive_flag_spec= - ;; - *) - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - ;; - esac - fi -else - # PORTME fill in a description of your system's linker (not GNU ld) - case "$host_os" in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$with_gcc" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix4*) - hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' - hardcode_libdir_separator=':' - if test "$with_gcc" = yes; then - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct=yes - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - shared_flag='-shared' - else - shared_flag='${wl}-bM:SRE' - hardcode_direct=yes - fi - allow_undefined_flag=' ${wl}-berok' - archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' - archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' - case "$host_os" in aix4.[01]|aix4.[01].*) - # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on - always_export_symbols=yes ;; - esac - ;; - - amigaos*) - archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # see comment about different semantics on the GNU ld section - ld_shlibs=no - ;; - - cygwin* | mingw*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib /OUT:$oldlib$oldobjs' - fix_srcfile_path='`cygpath -w $srcfile`' - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9* | hpux10* | hpux11*) - case "$host_os" in - hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; - *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; - esac - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_minus_L=yes # Not in the search PATH, but as the default - # location of the library. - export_dynamic_flag_spec='${wl}-E' - ;; - - irix5* | irix6*) - if test "$with_gcc" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF - fi - hardcode_libdir_flag_spec='${wl}-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - openbsd*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' - ;; - - osf3*) - if test "$with_gcc" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # As osf3* with the addition of the -msym flag - if test "$with_gcc" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - rhapsody*) - archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flags_spec='-L$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - sco3.2v5*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case "$host_os" in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $linkopts' - else - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv5*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' - hardcode_libdir_flag_spec= - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4.2uw2*) - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' - hardcode_direct=yes - hardcode_minus_L=no - hardcode_shlibpath_var=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - unixware7*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac -fi -echo "$ac_t$ld_shlibs" 1>&6 -test "$ld_shlibs" = no && can_build_shared=no - -if test -z "$NM"; then - echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 - case "$NM" in - [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - NM="$ac_dir/nm -B" - break - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - NM="$ac_dir/nm -p" - break - else - NM=${NM="$ac_dir/nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - fi - fi - done - IFS="$ac_save_ifs" - test -z "$NM" && NM=nm - ;; - esac - echo "$ac_t$NM" 1>&6 -fi - -# Check for command to grab the raw symbol name followed by C symbol from nm. -echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - -# Transform an extracted symbol line into a proper C declaration -global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" - -# Define system-specific variables. -case "$host_os" in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw*) - symcode='[ABCDGISTW]' - ;; -hpux*) # Its linker distinguishes data from code symbols - global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" - ;; -irix*) - symcode='[BCDEGRST]' - ;; -solaris*) - symcode='[BDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then - symcode='[ABCDGISTW]' -fi - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Write the raw and C identifiers. - global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - $rm conftest* - cat > conftest.c <&5 - if { (eval echo $progname:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then - # Now try to grab the symbols. - nlist=conftest.nm - if { echo "$progname:1657: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then - - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if egrep ' nm_test_var$' "$nlist" >/dev/null; then - if egrep ' nm_test_func$' "$nlist" >/dev/null; then - cat < conftest.c -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' - - cat <> conftest.c -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[] = -{ -EOF - sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c - cat <<\EOF >> conftest.c - {0, (lt_ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.$objext conftstm.$objext - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - LIBS="conftstm.$objext" - CFLAGS="$CFLAGS$no_builtin_flag" - if { (eval echo $progname:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - pipe_works=yes - else - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 - fi - LIBS="$save_LIBS" - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 - fi - $rm conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - global_symbol_pipe= - fi -done -if test "$pipe_works" = yes; then - echo "${ac_t}ok" 1>&6 -else - echo "${ac_t}failed" 1>&6 -fi - -if test -z "$global_symbol_pipe"; then - global_symbol_to_cdecl= -fi - -# Check hardcoding attributes. -echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || \ - test -n "$runpath_var"; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$hardcode_shlibpath_var" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -echo "$ac_t$hardcode_action" 1>&6 - - -reload_flag= -reload_cmds='$LD$reload_flag -o $output$reload_objs' -echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 -# PORTME Some linkers may need a different reload flag. -reload_flag='-r' -echo "$ac_t$reload_flag" 1>&6 -test -n "$reload_flag" && reload_flag=" $reload_flag" - -# PORTME Fill in your ld.so characteristics -library_names_spec= -libname_spec='lib$name' -soname_spec= -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -file_magic_cmd= -file_magic_test_file= -deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [regex]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given egrep regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. -echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 -case "$host_os" in -aix3*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}.so$major' - ;; - -aix4*) - version_type=linux - # AIX has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - # We preserve .a as extension for shared libraries though AIX4.2 - # and later linker supports .so - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' - shlibpath_var=LIBPATH - deplibs_check_method=pass_all - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}.so' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - deplibs_check_method=pass_all - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - -bsdi4*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - file_magic_cmd=/usr/bin/file - file_magic_test_file=/shlib/libc.so - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - export_dynamic_flag_spec=-rdynamic - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw*) - version_type=windows - need_version=no - need_lib_prefix=no - if test "$with_gcc" = yes; then - library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' - else - library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' - fi - dynamic_linker='Win32 ld.exe' - deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - file_magic_cmd='${OBJDUMP} -f' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case "$version_type" in - freebsd-elf*) - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /usr/lib/libc.so*` - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - deplibs_check_method=unknown - library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case "$host_os" in - freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - dynamic_linker="$host_os dld.sl" - version_type=sunos - need_lib_prefix=no - need_version=no - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' - soname_spec='${libname}${release}.sl$major' - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - case "$host_os" in - hpux10.20*) - # TODO: Does this work for hpux-11 too? - deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - file_magic_cmd=/usr/bin/file - file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -irix5* | irix6*) - version_type=irix - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}.so.$major' - library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' - case "$host_os" in - irix5*) - libsuff= shlibsuff= - # this will be overridden with pass_all, but let us keep it just in case - deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case "$LD" in # libtool.m4 will add one of these switches to LD - *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /lib${libsuff}/libc.so*` - deplibs_check_method='pass_all' - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux-gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - deplibs_check_method=pass_all - - if test -f /lib/ld.so.1; then - dynamic_linker='GNU ld.so' - else - # Only the GNU ld.so supports shared libraries on MkLinux. - case "$host_cpu" in - powerpc*) dynamic_linker=no ;; - *) dynamic_linker='Linux ld.so' ;; - esac - fi - ;; - -netbsd*) - version_type=sunos - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' - soname_spec='${libname}${release}.so$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - ;; - -openbsd*) - version_type=sunos - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - need_version=no - fi - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - ;; - -os2*) - libname_spec='$name' - need_lib_prefix=no - library_names_spec='$libname.dll $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_version=no - soname_spec='${libname}${release}.so' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' - shlibpath_var=LD_LIBRARY_PATH - # this will be overridden with pass_all, but let us keep it just in case - deplibs_check_method='file_magic COFF format alpha shared library' - file_magic_cmd=/usr/bin/file - file_magic_test_file=/shlib/libc.so - deplibs_check_method='pass_all' - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rhapsody*) - version_type=sunos - library_names_spec='${libname}.so' - soname_spec='${libname}.so' - shlibpath_var=DYLD_LIBRARY_PATH - deplibs_check_method=pass_all - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}.so$major' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" - file_magic_cmd=/usr/bin/file - file_magic_test_file=/lib/libc.so - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - case "$host_vendor" in - sequent) - file_magic_cmd='/bin/file' - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - ncr) - deplibs_check_method='pass_all' - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - esac - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' - soname_spec='$libname.so.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -*) - dynamic_linker=no - ;; -esac -echo "$ac_t$dynamic_linker" 1>&6 -test "$dynamic_linker" = no && can_build_shared=no - -# Report the final consequences. -echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 - -# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in -# configure.in, otherwise build static only libraries. -case "$host_os" in -cygwin* | mingw* | os2*) - if test x$can_build_shared = xyes; then - test x$enable_win32_dll = xno && can_build_shared=no - echo "checking if package supports dlls... $can_build_shared" 1>&6 - fi -;; -esac - -if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then - case "$deplibs_check_method" in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - egrep "$file_magic_regex" > /dev/null; then - : - else - cat <&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac -fi - -echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - -aix4*) - test "$enable_shared" = yes && enable_static=no - ;; -esac - -echo "$ac_t$enable_shared" 1>&6 - -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes - -echo "checking whether to build static libraries... $enable_static" 1>&6 - -if test "$hardcode_action" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -echo $ac_n "checking for objdir... $ac_c" 1>&6 -rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - objdir=_libs -fi -rmdir .libs 2>/dev/null -echo "$ac_t$objdir" 1>&6 - -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else -if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then - lt_cv_dlopen=no lt_cv_dlopen_libs= -echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "$progname:2248: checking for dlopen in -ldl" >&5 -ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldl $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for dlopen""... $ac_c" 1>&6 -echo "$progname:2288: checking for dlopen" >&5 -if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_dlopen) || defined (__stub___dlopen) -choke me -#else -dlopen(); -#endif - -; return 0; } -EOF -if { (eval echo $progname:2318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_dlopen=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_dlopen=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="dlopen" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 -echo "$progname:2335: checking for dld_link in -ldld" >&5 -ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for shl_load""... $ac_c" 1>&6 -echo "$progname:2375: checking for shl_load" >&5 -if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shl_load) || defined (__stub___shl_load) -choke me -#else -shl_load(); -#endif - -; return 0; } -EOF -if { (eval echo $progname:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_shl_load=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_shl_load=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="shl_load" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "$progname:2423: checking for shl_load in -ldld" >&5 -ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - echo "$ac_t""no" 1>&6 -fi - - -fi - - -fi - - -fi - - -fi - -fi - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - fi - - case "$lt_cv_dlopen" in - dlopen) -for ac_hdr in dlfcn.h; do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "$progname:2488: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int fnord = 0; -EOF -ac_try="$ac_compile >/dev/null 2>conftest.out" -{ (eval echo $progname:2498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi -done - - if test "x$ac_cv_header_dlfcn_h" = xyes; then - CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - fi - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - LIBS="$lt_cv_dlopen_libs $LIBS" - - echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 -echo "$progname:2526: checking whether a program can dlopen itself" >&5 -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - lt_cv_dlopen_self=cross - else - cat > conftest.c < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LTDL_GLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LTDL_GLOBAL DL_GLOBAL -# else -# define LTDL_GLOBAL 0 -# endif -#endif - -/* We may have to define LTDL_LAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LTDL_LAZY_OR_NOW -# ifdef RTLD_LAZY -# define LTDL_LAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LTDL_LAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LTDL_LAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LTDL_LAZY_OR_NOW DL_NOW -# else -# define LTDL_LAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -fnord() { int i=42;} -main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); - if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); - if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } - -EOF -if { (eval echo $progname:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - lt_cv_dlopen_self=yes -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - lt_cv_dlopen_self=no -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$lt_cv_dlopen_self" 1>&6 - - if test "$lt_cv_dlopen_self" = yes; then - LDFLAGS="$LDFLAGS $link_static_flag" - echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 -echo "$progname:2599: checking whether a statically linked program can dlopen itself" >&5 -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - lt_cv_dlopen_self_static=cross - else - cat > conftest.c < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LTDL_GLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LTDL_GLOBAL DL_GLOBAL -# else -# define LTDL_GLOBAL 0 -# endif -#endif - -/* We may have to define LTDL_LAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LTDL_LAZY_OR_NOW -# ifdef RTLD_LAZY -# define LTDL_LAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LTDL_LAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LTDL_LAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LTDL_LAZY_OR_NOW DL_NOW -# else -# define LTDL_LAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -fnord() { int i=42;} -main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); - if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); - if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } - -EOF -if { (eval echo $progname:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - lt_cv_dlopen_self_static=yes -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - lt_cv_dlopen_self_static=no -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 -fi - ;; - esac - - case "$lt_cv_dlopen_self" in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case "$lt_cv_dlopen_self_static" in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - -# Copy echo and quote the copy, instead of the original, because it is -# used later. -ltecho="$echo" -if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then - ltecho="$CONFIG_SHELL \$0 --fallback-echo" -fi -LTSHELL="$SHELL" - -LTCONFIG_VERSION="$VERSION" - -# Only quote variables if we're using ltmain.sh. -case "$ltmain" in -*.sh) - # Now quote all the things that may contain metacharacters. - for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ - old_LD old_LDFLAGS old_LIBS \ - old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ - AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ - reload_flag reload_cmds wl \ - pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ - thread_safe_flag_spec whole_archive_flag_spec libname_spec \ - library_names_spec soname_spec \ - RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ - old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ - file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ - finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ - hardcode_libdir_flag_spec hardcode_libdir_separator \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do - - case "$var" in - reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case "$ltecho" in - *'\$0 --fallback-echo"') - ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - - trap "$rm \"$ofile\"; exit 1" 1 2 15 - echo "creating $ofile" - $rm "$ofile" - cat < "$ofile" -#! $SHELL - -# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. -# -# Copyright (C) 1996-1999 Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="sed -e s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -### BEGIN LIBTOOL CONFIG -EOF - cfgfile="$ofile" - ;; - -*) - # Double-quote the variables that need it (for aesthetics). - for var in old_CC old_CFLAGS old_CPPFLAGS \ - old_LD old_LDFLAGS old_LIBS \ - old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do - eval "$var=\\\"\$var\\\"" - done - - # Just create a config file. - cfgfile="$ofile.cfg" - trap "$rm \"$cfgfile\"; exit 1" 1 2 15 - echo "creating $cfgfile" - $rm "$cfgfile" - cat < "$cfgfile" -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -EOF - ;; -esac - -cat <> "$cfgfile" -# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ -# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ -# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ -# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ -# $0$ltconfig_args -# -# Compiler and other test output produced by $progname, useful for -# debugging $progname, is in ./config.log if it exists. - -# The version of $progname that generated this script. -LTCONFIG_VERSION=$LTCONFIG_VERSION - -# Shell to use when invoking shell scripts. -SHELL=$LTSHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$ltecho - -# The archiver. -AR=$AR - -# The default C compiler. -CC=$CC - -# The linker used to build libraries. -LD=$LD - -# Whether we need hard or soft links. -LN_S=$LN_S - -# A BSD-compatible nm program. -NM=$NM - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$reload_flag -reload_cmds=$reload_cmds - -# How to pass a linker flag through the compiler. -wl=$wl - -# Object file suffix (normally "o"). -objext="$objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$pic_flag - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$compiler_c_o - -# Can we write directly to a .lo ? -compiler_o_lo=$compiler_o_lo - -# Must we lock files when doing compilation ? -need_locks=$need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$link_static_flag - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$no_builtin_flag - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$whole_archive_flag_spec - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$thread_safe_flag_spec - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$RANLIB -old_archive_cmds=$old_archive_cmds -old_postinstall_cmds=$old_postinstall_cmds -old_postuninstall_cmds=$old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$old_archive_from_new_cmds - -# Commands used to build and install a shared archive. -archive_cmds=$archive_cmds -archive_expsym_cmds=$archive_expsym_cmds -postinstall_cmds=$postinstall_cmds -postuninstall_cmds=$postuninstall_cmds - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$allow_undefined_flag - -# Flag that forces no undefined symbols. -no_undefined_flag=$no_undefined_flag - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$global_symbol_to_cdecl - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$hardcode_libdir_separator - -# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path" - -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$include_expsyms - -EOF - -case "$ltmain" in -*.sh) - echo '### END LIBTOOL CONFIG' >> "$ofile" - echo >> "$ofile" - case "$host_os" in - aix3*) - cat <<\EOF >> "$ofile" - -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -EOF - ;; - esac - - # Append the ltmain.sh script. - sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - - chmod +x "$ofile" - ;; - -*) - # Compile the libtool program. - echo "FIXME: would compile $ltmain" - ;; -esac - -test -n "$cache_file" || exit 0 - -# AC_CACHE_SAVE -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -exit 0 - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: Index: xc/extras/freetype2/builds/unix/ltmain.sh diff -u xc/extras/freetype2/builds/unix/ltmain.sh:1.1.1.1 xc/extras/freetype2/builds/unix/ltmain.sh:1.1.1.2 --- xc/extras/freetype2/builds/unix/ltmain.sh:1.1.1.1 Fri Dec 8 16:26:09 2000 +++ xc/extras/freetype2/builds/unix/ltmain.sh Sun Sep 9 22:55:53 2001 @@ -1,7 +1,8 @@ # ltmain.sh - Provide generalized library-building support services. -# NOTE: Changing this file will not affect anything until you rerun ltconfig. +# NOTE: Changing this file will not affect anything until you rerun configure. # -# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify @@ -54,8 +55,8 @@ # Constants. PROGRAM=ltmain.sh PACKAGE=libtool -VERSION=1.3.5 -TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)" +VERSION=1.4 +TIMESTAMP=" (1.920 2001/04/24 23:26:18)" default_mode= help="Try \`$progname --help' for more information." @@ -83,12 +84,6 @@ save_LANG="$LANG"; LANG=C; export LANG fi -if test "$LTCONFIG_VERSION" != "$VERSION"; then - echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 -fi - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then echo "$modename: not configured to build any kind of library" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 @@ -113,16 +108,16 @@ arg="$1" shift - case "$arg" in + case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then - case "$prev" in + case $prev in execute_dlfiles) - eval "$prev=\"\$$prev \$arg\"" + execute_dlfiles="$execute_dlfiles $arg" ;; *) eval "$prev=\$arg" @@ -135,7 +130,7 @@ fi # Have we seen a non-optional argument yet? - case "$arg" in + case $arg in --help) show_help=yes ;; @@ -146,7 +141,7 @@ ;; --config) - sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 + sed -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 exit 0 ;; @@ -211,12 +206,12 @@ # Infer the operation mode. if test -z "$mode"; then - case "$nonopt" in + case $nonopt in *cc | *++ | gcc* | *-gcc*) mode=link for arg do - case "$arg" in + case $arg in -c) mode=compile break @@ -261,12 +256,13 @@ help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. - case "$mode" in + case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= + prev= lastarg= srcfile="$nonopt" suppress_output= @@ -274,8 +270,34 @@ user_target=no for arg do + case $prev in + "") ;; + xcompiler) + # Aesthetically quote the previous argument. + prev= + lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + + case $arg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + + # Add the previous argument to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + continue + ;; + esac + # Accept any command-line options. - case "$arg" in + case $arg in -o) if test "$user_target" != "no"; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 @@ -288,9 +310,53 @@ build_old_libs=yes continue ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + IFS="${IFS= }"; save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + continue + ;; esac - case "$user_target" in + case $user_target in next) # The next one is the -o target name user_target=yes @@ -316,10 +382,10 @@ lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly in scan - # sets, so we specify it separately. - case "$lastarg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $lastarg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac @@ -332,7 +398,7 @@ fi done - case "$user_target" in + case $user_target in set) ;; no) @@ -348,7 +414,7 @@ # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSfmso]' - case "$libobj" in + case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; @@ -363,7 +429,7 @@ libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` - case "$libobj" in + case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 @@ -387,10 +453,21 @@ $run $rm $removelist trap "$run $rm $removelist; exit 1" 1 2 15 + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then - output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext} + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit 1" 1 2 15 @@ -402,7 +479,7 @@ # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then - until ln "$0" "$lockfile" 2>/dev/null; do + until $run ln "$0" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done @@ -434,8 +511,13 @@ # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile - # All platforms use -DPIC, to notify preprocessed assembler code. - command="$base_compile $srcfile $pic_flag -DPIC" + if test "$pic_mode" != no; then + # All platforms use -DPIC, to notify preprocessed assembler code. + command="$base_compile $srcfile $pic_flag -DPIC" + else + # Don't build PIC code + command="$base_compile $srcfile" + fi if test "$build_old_libs" = yes; then lo_libobj="$libobj" dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` @@ -506,7 +588,8 @@ fi # If we have no pic_flag, then copy the object into place and finish. - if test -z "$pic_flag" && test "$build_old_libs" = yes; then + if (test -z "$pic_flag" || test "$pic_mode" != default) && + test "$build_old_libs" = yes; then # Rename the .lo from within objdir to obj if test -f $obj; then $show $rm $obj @@ -546,7 +629,13 @@ # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then - command="$base_compile $srcfile" + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $srcfile" + else + # All platforms use -DPIC, to notify preprocessed assembler code. + command="$base_compile $srcfile $pic_flag -DPIC" + fi if test "$compiler_c_o" = yes; then command="$command -o $obj" output_obj="$obj" @@ -612,17 +701,17 @@ # Unlock the critical section if it was locked if test "$need_locks" != no; then - $rm "$lockfile" + $run $rm "$lockfile" fi exit 0 ;; # libtool link mode - link) + link | relink) modename="$modename: link" - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2*) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra @@ -635,179 +724,12 @@ # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes - - # This is a source program that is used to create dlls on Windows - # Don't remove nor modify the starting and closing comments -# /* ltdll.c starts here */ -# #define WIN32_LEAN_AND_MEAN -# #include -# #undef WIN32_LEAN_AND_MEAN -# #include -# -# #ifndef __CYGWIN__ -# # ifdef __CYGWIN32__ -# # define __CYGWIN__ __CYGWIN32__ -# # endif -# #endif -# -# #ifdef __cplusplus -# extern "C" { -# #endif -# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -# #ifdef __cplusplus -# } -# #endif -# -# #ifdef __CYGWIN__ -# #include -# DECLARE_CYGWIN_DLL( DllMain ); -# #endif -# HINSTANCE __hDllInstance_base; -# -# BOOL APIENTRY -# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) -# { -# __hDllInstance_base = hInst; -# return TRUE; -# } -# /* ltdll.c ends here */ - # This is a source program that is used to create import libraries - # on Windows for dlls which lack them. Don't remove nor modify the - # starting and closing comments -# /* impgen.c starts here */ -# /* Copyright (C) 1999 Free Software Foundation, Inc. -# -# This file is part of GNU libtool. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# */ -# -# #include /* for printf() */ -# #include /* for open(), lseek(), read() */ -# #include /* for O_RDONLY, O_BINARY */ -# #include /* for strdup() */ -# -# static unsigned int -# pe_get16 (fd, offset) -# int fd; -# int offset; -# { -# unsigned char b[2]; -# lseek (fd, offset, SEEK_SET); -# read (fd, b, 2); -# return b[0] + (b[1]<<8); -# } -# -# static unsigned int -# pe_get32 (fd, offset) -# int fd; -# int offset; -# { -# unsigned char b[4]; -# lseek (fd, offset, SEEK_SET); -# read (fd, b, 4); -# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); -# } -# -# static unsigned int -# pe_as32 (ptr) -# void *ptr; -# { -# unsigned char *b = ptr; -# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); -# } -# -# int -# main (argc, argv) -# int argc; -# char *argv[]; -# { -# int dll; -# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; -# unsigned long export_rva, export_size, nsections, secptr, expptr; -# unsigned long name_rvas, nexp; -# unsigned char *expdata, *erva; -# char *filename, *dll_name; -# -# filename = argv[1]; -# -# dll = open(filename, O_RDONLY|O_BINARY); -# if (!dll) -# return 1; -# -# dll_name = filename; -# -# for (i=0; filename[i]; i++) -# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') -# dll_name = filename + i +1; -# -# pe_header_offset = pe_get32 (dll, 0x3c); -# opthdr_ofs = pe_header_offset + 4 + 20; -# num_entries = pe_get32 (dll, opthdr_ofs + 92); -# -# if (num_entries < 1) /* no exports */ -# return 1; -# -# export_rva = pe_get32 (dll, opthdr_ofs + 96); -# export_size = pe_get32 (dll, opthdr_ofs + 100); -# nsections = pe_get16 (dll, pe_header_offset + 4 +2); -# secptr = (pe_header_offset + 4 + 20 + -# pe_get16 (dll, pe_header_offset + 4 + 16)); -# -# expptr = 0; -# for (i = 0; i < nsections; i++) -# { -# char sname[8]; -# unsigned long secptr1 = secptr + 40 * i; -# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); -# unsigned long vsize = pe_get32 (dll, secptr1 + 16); -# unsigned long fptr = pe_get32 (dll, secptr1 + 20); -# lseek(dll, secptr1, SEEK_SET); -# read(dll, sname, 8); -# if (vaddr <= export_rva && vaddr+vsize > export_rva) -# { -# expptr = fptr + (export_rva - vaddr); -# if (export_rva + export_size > vaddr + vsize) -# export_size = vsize - (export_rva - vaddr); -# break; -# } -# } -# -# expdata = (unsigned char*)malloc(export_size); -# lseek (dll, expptr, SEEK_SET); -# read (dll, expdata, export_size); -# erva = expdata - export_rva; -# -# nexp = pe_as32 (expdata+24); -# name_rvas = pe_as32 (expdata+32); -# -# printf ("EXPORTS\n"); -# for (i = 0; i\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then - case "$prev" in + case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac - case "$prev" in + case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. @@ -905,7 +828,7 @@ finalize_command="$finalize_command @SYMFILE@" preload=yes fi - case "$arg" in + case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then @@ -934,6 +857,7 @@ dlprefiles="$dlprefiles $arg" fi prev= + continue ;; esac ;; @@ -958,7 +882,7 @@ ;; rpath | xrpath) # We need an absolute path. - case "$arg" in + case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 @@ -979,17 +903,32 @@ prev= continue ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac - fi + fi # test -n $prev prevarg="$arg" - case "$arg" in + case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" @@ -1026,7 +965,7 @@ -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: not more than one -exported-symbols argument allowed" + $echo "$modename: more than one -exported-symbols argument is not allowed" exit 1 fi if test "X$arg" = "X-export-symbols"; then @@ -1037,58 +976,65 @@ continue ;; + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. - case "$dir" in + case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - absdir="$dir" + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + exit 1 fi dir="$absdir" ;; - esac - case " $deplibs " in - *" $arg "*) ;; - *) deplibs="$deplibs $arg";; esac - case " $lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir";; + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; esac - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2*) - dllsearchdir=`cd "$dir" && pwd || echo "$dir"` - case ":$dllsearchpath:" in - ::) dllsearchpath="$dllsearchdir";; - *":$dllsearchdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dllsearchdir";; + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; esac ;; esac + continue ;; -l*) - if test "$arg" = "-lc"; then - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) - # These systems don't actually have c library (as such) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) continue ;; - esac - elif test "$arg" = "-lm"; then - case "$host" in - *-*-cygwin* | *-*-beos*) - # These systems don't actually have math library (as such) - continue + *-*-mingw* | *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue ;; esac fi deplibs="$deplibs $arg" + continue ;; -module) @@ -1096,6 +1042,25 @@ continue ;; + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + -no-undefined) allow_undefined=no continue @@ -1121,7 +1086,7 @@ -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. - case "$dir" in + case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 @@ -1136,11 +1101,11 @@ ;; -static) - # If we have no pic_flag, then this is the same as -all-static. - if test -z "$pic_flag" && test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. continue ;; @@ -1154,28 +1119,71 @@ continue ;; + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + IFS="${IFS= }"; save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + IFS="${IFS= }"; save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; - *.o | *.obj | *.a | *.lib) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A library object. + *.lo | *.$objext) + # A library or standard object. if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then + # This file was specified with -dlopen. + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $arg" prev= continue else @@ -1188,357 +1196,890 @@ # Preload the old-style object. dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` prev= + else + case $arg in + *.lo) libobjs="$libobjs $arg" ;; + *) objs="$objs $arg" ;; + esac fi - libobjs="$libobjs $arg" ;; + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + *.la) # A libtool-controlled library. - dlname= - libdir= - library_names= - old_library= + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d $output_objdir; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test $status -ne 0 && test ! -d $output_objdir; then + exit $status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + specialdeplibs= + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + libs="$libs $deplib" + done + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit 1 + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test $linkmode = prog; then + # Determine which files to process + case $pass in + dlopen) + libs="$dlfiles" + save_deplibs="$deplibs" # Collect dlpreopened libraries + deplibs= + ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -l*) + if test $linkmode = oldlib && test $linkmode = obj; then + $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 + continue + fi + if test $pass = conv; then + deplibs="$deplib $deplibs" + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + # Search the libtool library + lib="$searchdir/lib${name}.la" + if test -f "$lib"; then + found=yes + break + fi + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test $pass = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test $pass = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test $pass = scan; then + deplibs="$deplib $deplibs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test $pass = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test $pass = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + if test "$deplibs_check_method" != pass_all; then + echo + echo "*** Warning: This library needs some functionality provided by $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + else + echo + echo "*** Warning: Linking the shared library $output against the" + echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test $pass != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test $found = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib'" 1>&2 + exit 1 + fi + # Check to see that this really is a libtool archive. - if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else - $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= # If the library was installed with an old release of libtool, # it will not redefine variable installed. installed=yes # Read the .la file - # If there is no directory component, then add one. - case "$arg" in - */* | *\\*) . $arg ;; - *) . ./$arg ;; + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; esac + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test $linkmode = oldlib && test $linkmode = obj; }; then + # Add dl[pre]opened files of deplib + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test $pass = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit 1 + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + tmp_libs="$tmp_libs $deplib" + done + elif test $linkmode != prog && test $linkmode != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit 1 + fi + continue + fi # $pass = conv + # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit 1 fi - # Find the relevant object directory and library name. - name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` - - if test "X$installed" = Xyes; then - dir="$libdir" - else - dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$arg"; then - dir="$objdir" + # This library was specified with -dlopen. + if test $pass = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit 1 + fi + if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. + dlprefiles="$dlprefiles $lib" else - dir="$dir/$objdir" + newdlfiles="$newdlfiles $lib" fi - fi - - if test -n "$dependency_libs"; then - # Extract -R and -L from dependency_libs - temp_deplibs= - for deplib in $dependency_libs; do - case "$deplib" in - -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` - case " $rpath $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - -L*) case "$compile_command $temp_deplibs " in - *" $deplib "*) ;; - *) temp_deplibs="$temp_deplibs $deplib";; - esac - temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'` - case " $lib_search_path " in - *" $temp_dir "*) ;; - *) lib_search_path="$lib_search_path $temp_dir";; - esac - ;; - *) temp_deplibs="$temp_deplibs $deplib";; - esac - done - dependency_libs="$temp_deplibs" - fi - - if test -z "$libdir"; then - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $dir/$old_library" - old_convenience="$old_convenience $dir/$old_library" - deplibs="$deplibs$dependency_libs" - compile_command="$compile_command $dir/$old_library$dependency_libs" - finalize_command="$finalize_command $dir/$old_library$dependency_libs" continue - fi + fi # $pass = dlopen - # This library was specified with -dlopen. - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking statically, - # we need to preload. - prev=dlprefiles - else - # We should not create a dependency on this library, but we - # may need any libraries it requires. - compile_command="$compile_command$dependency_libs" - finalize_command="$finalize_command$dependency_libs" - prev= - continue + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" fi - fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - # The library was specified with -dlpreopen. - if test "$prev" = dlprefiles; then + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test $pass = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit 1 + fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then - dlprefiles="$dlprefiles $dir/$old_library" + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" else - dlprefiles="$dlprefiles $dir/$linklib" + newdlprefiles="$newdlprefiles $dir/$linklib" fi - prev= + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test $linkmode = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" + fi + continue fi - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - link_against_libtool_libs="$link_against_libtool_libs $arg" - if test -n "$shlibpath_var"; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *) temp_rpath="$temp_rpath $dir" ;; - esac + if test $linkmode = prog && test $pass != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes fi - # We need an absolute path. - case "$dir" in - [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - absdir="$dir" + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test $linkalldeplibs = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" fi - ;; - esac - - # This is the magic to use -rpath. - # Skip directories that are in the system default run-time - # search path, unless they have been requested with -R. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac - ;; - esac + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in + link_static=no # Whether the deplib will be linked statically + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # Link against this shared library + + if test "$linkmode,$pass" = "prog,link" || + { test $linkmode = lib && test $hardcode_into_libs = yes; }; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; esac - ;; - esac + if test $linkmode = prog; then + # We need to hardcode the library path + if test -n "$shlibpath_var"; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + fi + fi # $linkmode,$pass = prog,link... - lib_linked=yes - case "$hardcode_action" in - immediate | unsupported) - if test "$hardcode_direct" = no; then - compile_command="$compile_command $dir/$linklib" - deplibs="$deplibs $dir/$linklib" - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2*) - dllsearchdir=`cd "$dir" && pwd || echo "$dir"` - if test -n "$dllsearchpath"; then - dllsearchpath="$dllsearchpath:$dllsearchdir" - else - dllsearchpath="$dllsearchdir" - fi - ;; - esac - elif test "$hardcode_minus_L" = no; then - case "$host" in - *-*-sunos*) - compile_shlibpath="$compile_shlibpath$dir:" + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin*) + major=`expr $current - $age` + versuffix="-$major" ;; - esac - case "$compile_command " in - *" -L$dir "*) ;; - *) compile_command="$compile_command -L$dir";; esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -L$dir -l$name" - elif test "$hardcode_shlibpath_var" = no; then - case ":$compile_shlibpath:" in - *":$dir:"*) ;; - *) compile_shlibpath="$compile_shlibpath$dir:";; + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`echo $soroot | sed -e 's/^.*\///'` + newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + eval cmds=\"$extract_expsyms_cmds\" + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + eval cmds=\"$old_archive_from_expsyms_cmds\" + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n $old_archive_from_expsyms_cmds + + if test $linkmode = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit 1 + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -l$name" + fi + if test $linkmode = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" else - lib_linked=no + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi fi - ;; + fi - relink) + if test $linkmode = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then - compile_command="$compile_command $absdir/$linklib" - deplibs="$deplibs $absdir/$linklib" + add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then - case "$compile_command " in - *" -L$absdir "*) ;; - *) compile_command="$compile_command -L$absdir";; - esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -L$absdir -l$name" + add_dir="-L$libdir" + add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then - case ":$compile_shlibpath:" in - *":$absdir:"*) ;; - *) compile_shlibpath="$compile_shlibpath$absdir:";; + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac - compile_command="$compile_command -l$name" - deplibs="$deplibs -l$name" + add="-l$name" else - lib_linked=no + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + add="-l$name" fi - ;; - *) - lib_linked=no - ;; - esac - - if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" - exit 1 - fi - - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then - finalize_command="$finalize_command $libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - case "$finalize_command " in - *" -L$libdir "*) ;; - *) finalize_command="$finalize_command -L$libdir";; - esac - finalize_command="$finalize_command -l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case ":$finalize_shlibpath:" in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:";; - esac - finalize_command="$finalize_command -l$name" - else - # We cannot seem to hardcode it, guess we'll fake it. - case "$finalize_command " in - *" -L$dir "*) ;; - *) finalize_command="$finalize_command -L$libdir";; - esac - finalize_command="$finalize_command -l$name" + if test $linkmode = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi fi - else - # Transform directly to old archives if we don't build new libraries. - if test -n "$pic_flag" && test -z "$old_library"; then - $echo "$modename: cannot find static library for \`$arg'" 1>&2 - exit 1 + elif test $linkmode = prog; then + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue fi + # Try to link the static library # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" - compile_command="$compile_command $dir/$linklib" - finalize_command="$finalize_command $dir/$linklib" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" else - case "$compile_command " in - *" -L$dir "*) ;; - *) compile_command="$compile_command -L$dir";; - esac - compile_command="$compile_command -l$name" - case "$finalize_command " in - *" -L$dir "*) ;; - *) finalize_command="$finalize_command -L$dir";; - esac - finalize_command="$finalize_command -l$name" + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi - fi - - # Add in any libraries that this one depends upon. - compile_command="$compile_command$dependency_libs" - finalize_command="$finalize_command$dependency_libs" - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - ;; - esac - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - done - - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. - oldlibs= - # calculate the name of the file, without its directory - outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` - libobjs_save="$libobjs" + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + echo "*** Warning: This library needs some functionality provided by $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** Therefore, libtool will create a static module, that should work " + echo "*** as long as the dlopening application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test $linkmode = lib; then + if test -n "$dependency_libs" && + { test $hardcode_into_libs != yes || test $build_old_libs = yes || + test $link_static = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi - case "$output" in - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + tmp_libs="$tmp_libs $deplib" + done - *.a | *.lib) - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 - exit 1 + if test $link_all_deplibs != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="-L$absdir/$objdir" + else + eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit 1 + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="-L$absdir" + fi + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$deplibs $path" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test $pass = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done fi + if test $pass != dlopen; then + test $pass != scan && dependency_libs="$newdependency_libs" + if test $pass != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + *) + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var fi + if test "$pass" = "conv" && + { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then + libs="$deplibs" # reset libs + deplibs= + fi + done # for pass + if test $linkmode = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + case $linkmode in + oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi @@ -1566,11 +2107,12 @@ # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" + objs="$objs$old_deplibs" ;; - *.la) + lib) # Make sure we only generate libraries of the form `libNAME.la'. - case "$outputname" in + case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval libname=\"$libname_spec\" @@ -1589,28 +2131,22 @@ libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; - esac - - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi + esac if test -n "$objs"; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 - exit 1 - fi - - # How the heck are we supposed to write a wrapper for a shared library? - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 - exit 1 + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit 1 + else + echo + echo "*** Warning: Linking the shared library $output against the non-libtool" + echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi fi - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath @@ -1628,7 +2164,6 @@ build_libtool_libs=convenience build_old_libs=yes fi - dependency_libs="$deplibs" if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 @@ -1655,8 +2190,8 @@ age="$4" # Check that each of the things are valid numbers. - case "$current" in - 0 | [1-9] | [1-9][0-9]*) ;; + case $current in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 @@ -1664,8 +2199,8 @@ ;; esac - case "$revision" in - 0 | [1-9] | [1-9][0-9]*) ;; + case $revision in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 @@ -1673,8 +2208,8 @@ ;; esac - case "$age" in - 0 | [1-9] | [1-9][0-9]*) ;; + case $age in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 @@ -1692,12 +2227,31 @@ major= versuffix= verstring= - case "$version_type" in + case $version_type in none) ;; + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + irix) major=`expr $current - $age + 1` - versuffix="$major.$revision" verstring="sgi$major.$revision" # Add in all the interfaces that we are compatible with. @@ -1707,6 +2261,10 @@ loop=`expr $loop - 1` verstring="sgi$major.$iface:$verstring" done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" ;; linux) @@ -1736,21 +2294,11 @@ versuffix=".$current.$revision" ;; - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current"; - ;; - windows) - # Like Linux, but with '-' rather than '.', since we only - # want one extension on Windows 95. + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. major=`expr $current - $age` - versuffix="-$major-$age-$revision" + versuffix="-$major" ;; *) @@ -1777,7 +2325,7 @@ versuffix= verstring="" fi - + # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then @@ -1789,34 +2337,12 @@ # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi - - dependency_libs="$deplibs" - case "$host" in - *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody*) - # rhapsody is a little odd... - deplibs="$deplibs -framework System" - ;; - *) - # Add libc to deplibs on all other systems. - deplibs="$deplibs -lc" - ;; - esac fi - # Create the output directory, or remove our outputs if we need to. - if test -d $output_objdir; then + if test "$mode" != relink; then + # Remove our outputs. $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* - else - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test $status -ne 0 && test ! -d $output_objdir; then - exit $status - fi fi # Now set the variables for building old libraries. @@ -1827,7 +2353,70 @@ oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'` + deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'` + dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test $hardcode_into_libs != yes || test $build_old_libs = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test $build_libtool_need_lc = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname @@ -1842,7 +2431,7 @@ major="" newdeplibs= droppeddeps=no - case "$deplibs_check_method" in + case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check @@ -1867,7 +2456,7 @@ for i in $deplibs; do name="`expr $i : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. - if test "$name" != "" ; then + if test -n "$name" && test "$name" != "0"; then libname=`eval \\$echo \"$libname_spec\"` deplib_matches=`eval \\$echo \"$library_names_spec\"` set dummy $deplib_matches @@ -1892,7 +2481,7 @@ for i in $deplibs; do name="`expr $i : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. - if test "$name" != "" ; then + if test -n "$name" && test "$name" != "0"; then $rm conftest $CC -o conftest conftest.c $i # Did it work? @@ -1928,19 +2517,19 @@ ;; file_magic*) set dummy $deplibs_check_method - file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`" + file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name="`expr $a_deplib : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. - if test "$name" != "" ; then + if test -n "$name" && test "$name" != "0"; then libname=`eval \\$echo \"$libname_spec\"` - for i in $lib_search_path; do + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then - continue + continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. @@ -1950,7 +2539,7 @@ potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | sed 's/.* -> //'` - case "$potliblink" in + case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac @@ -1978,6 +2567,40 @@ fi done # Gone through all deplibs. ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name="`expr $a_deplib : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + if eval echo \"$potent_lib\" 2>/dev/null \ + | sed 10q \ + | egrep "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + echo "*** Warning: This library needs some functionality provided by $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; none | unknown | *) newdeplibs="" if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ @@ -2000,6 +2623,13 @@ libname=$libname_save name=$name_save + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + if test "$droppeddeps" = yes; then if test "$module" = yes; then echo @@ -2025,6 +2655,21 @@ echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." + + if test $allow_undefined = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi fi fi # Done checking deplibs! @@ -2035,9 +2680,64 @@ library_names= old_library= dlname= - + # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then + if test $hardcode_into_libs = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + # Get the real and link names of the library. eval library_names=\"$library_names_spec\" set dummy $library_names @@ -2049,6 +2749,7 @@ else soname="$realname" fi + test -z "$dlname" && dlname=$soname lib="$output_objdir/$realname" for link @@ -2120,7 +2821,7 @@ for xlib in $convenience; do # Extract the objects. - case "$xlib" in + case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac @@ -2145,7 +2846,12 @@ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" - linkopts="$linkopts $flag" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. @@ -2162,6 +2868,12 @@ done IFS="$save_ifs" + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + exit 0 + fi + # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then @@ -2178,12 +2890,7 @@ fi ;; - *.lo | *.o | *.obj) - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 - exit 1 - fi - + obj) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi @@ -2208,9 +2915,9 @@ $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi - case "$output" in + case $output in *.lo) - if test -n "$objs"; then + if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit 1 fi @@ -2234,7 +2941,7 @@ gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec - wl= + wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then @@ -2253,7 +2960,7 @@ for xlib in $convenience; do # Extract the objects. - case "$xlib" in + case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac @@ -2277,7 +2984,7 @@ fi # Create the old-style object. - reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" eval cmds=\"$reload_cmds\" @@ -2312,7 +3019,7 @@ exit 0 fi - if test -n "$pic_flag"; then + if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" @@ -2348,8 +3055,10 @@ exit 0 ;; - # Anything else should be a program. - *) + prog) + case $host in + *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;; + esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi @@ -2359,20 +3068,27 @@ fi if test "$preload" = yes; then - if test "$dlopen" = unknown && test "$dlopen_self" = unknown && + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." - fi + fi fi - + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. - case "$compile_rpath " in - *" $libdir "*) ;; - *) compile_rpath="$compile_rpath $libdir" ;; - esac case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; @@ -2390,7 +3106,7 @@ hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. - case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) @@ -2408,6 +3124,14 @@ *) perm_rpath="$perm_rpath $libdir" ;; esac fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + ;; + esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && @@ -2426,7 +3150,7 @@ hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. - case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) @@ -2453,23 +3177,6 @@ fi finalize_rpath="$rpath" - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi - - # Create the binary in the object directory, then wrap it. - if test ! -d $output_objdir; then - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test $status -ne 0 && test ! -d $output_objdir; then - exit $status - fi - fi - if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` @@ -2486,7 +3193,7 @@ fi if test -n "$dlsyms"; then - case "$dlsyms" in + case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. @@ -2518,7 +3225,7 @@ test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. - progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" @@ -2528,7 +3235,7 @@ $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi - + if test -n "$export_symbols_regex"; then $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' @@ -2617,13 +3324,13 @@ fi pic_flag_for_symtable= - case "$host" in + case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; @@ -2662,7 +3369,7 @@ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi - if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then + if test $need_relink = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" @@ -2671,7 +3378,7 @@ $show "$link_command" $run eval "$link_command" status=$? - + # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" @@ -2685,7 +3392,7 @@ # We should set the shlibpath_var rpath= for dir in $temp_rpath; do - case "$dir" in + case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" @@ -2727,11 +3434,24 @@ fi fi + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit 0 + fi + if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" - + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else @@ -2751,7 +3471,7 @@ # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - + # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname @@ -2763,12 +3483,24 @@ # Quote the relink command for shipping. if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="cd `pwd`; $relink_command" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $0 --fallback-echo"; then - case "$0" in + case $0 in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; *) qecho="$SHELL `pwd`/$0 --fallback-echo";; esac @@ -2784,6 +3516,11 @@ case $output in *.exe) output=`echo $output|sed 's,.exe$,,'` ;; esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) exeext=.exe ;; + *) exeext= ;; + esac $rm $output trap "$rm $output; exit 1" 1 2 15 @@ -2813,7 +3550,7 @@ # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: - link_against_libtool_libs='$link_against_libtool_libs' + notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then @@ -2846,7 +3583,7 @@ # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in - [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;; + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi @@ -2862,9 +3599,9 @@ if test "$fast_install" = yes; then echo >> $output "\ - program=lt-'$outputname' + program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" - + if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then @@ -2881,7 +3618,7 @@ # relink executable if necessary if test -n \"\$relink_command\"; then - if (cd \"\$thisdir\" && eval \$relink_command); then : + if (eval \$relink_command); then : else $rm \"\$progdir/\$file\" exit 1 @@ -2931,9 +3668,9 @@ # Run the actual program with our arguments. " case $host in - # win32 systems need to use the prog path for dll - # lookup to work - *-*-cygwin*) + # win32 systems need to use the prog path for dll + # lookup to work + *-*-cygwin* | *-*-pw32*) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " @@ -2987,7 +3724,7 @@ oldobjs="$libobjs_save" build_libtool_libs=no else - oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` + oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` fi addlibs="$old_convenience" fi @@ -3003,11 +3740,11 @@ exit $status fi generated="$generated $gentop" - + # Add in members from convenience archives. for xlib in $addlibs; do # Extract the objects. - case "$xlib" in + case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac @@ -3068,19 +3805,26 @@ fi # Now create the libtool archive. - case "$output" in + case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" - if test -n "$xrpath"; then - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - done - dependency_libs="$temp_xrpath $dependency_libs" - fi + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` # Only create the output if not a dry run. if test -z "$run"; then @@ -3090,8 +3834,52 @@ break fi output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit 1 + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit 1 + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit 1 + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" fi $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP @@ -3100,7 +3888,7 @@ # It is necessary for linking the library. # The name that we can dlopen(3). -dlname='$dlname' +dlname='$tdlname' # Names of this library. library_names='$library_names' @@ -3119,16 +3907,23 @@ # Is this an already installed library? installed=$installed +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + # Directory that this library needs to be installed in: -libdir='$install_libdir'\ -" +libdir='$install_libdir'" + if test "$installed" = no && test $need_relink = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" - $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit 0 @@ -3140,10 +3935,12 @@ # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` - case "$arg" in + case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; @@ -3159,7 +3956,7 @@ # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in + case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; @@ -3182,7 +3979,7 @@ continue fi - case "$arg" in + case $arg in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; @@ -3207,7 +4004,7 @@ # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in + case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; @@ -3258,11 +4055,11 @@ exit 1 fi fi - case "$destdir" in + case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do - case "$file" in + case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 @@ -3284,8 +4081,8 @@ for file in $files; do # Do each installation. - case "$file" in - *.a | *.lib) + case $file in + *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; @@ -3301,8 +4098,9 @@ library_names= old_library= + relink_command= # If there is no directory component, then add one. - case "$file" in + case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac @@ -3321,10 +4119,20 @@ esac fi - dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" + if test -n "$relink_command"; then + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + continue + fi + fi + # See the names of the shared library. set dummy $library_names if test -n "$2"; then @@ -3332,9 +4140,16 @@ shift shift + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + # Install the shared library and build the symlinks. - $show "$install_prog $dir/$realname $destdir/$realname" - $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi if test $# -gt 0; then # Delete the old symlinks, and create new ones. @@ -3381,11 +4196,11 @@ fi # Deduce the name of the destination old-style object file. - case "$destfile" in + case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; - *.o | *.obj) + *.$objext) staticdest="$destfile" destfile= ;; @@ -3424,39 +4239,46 @@ # Do a test to see if this is really a libtool program. if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - link_against_libtool_libs= + notinst_deplibs= relink_command= # If there is no directory component, then add one. - case "$file" in + case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Check the variables that should have been set. - if test -z "$link_against_libtool_libs"; then + if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 exit 1 fi finalize=yes - for lib in $link_against_libtool_libs; do + for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. - case "$lib" in + case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi - libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then @@ -3468,6 +4290,7 @@ $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi + file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` @@ -3489,6 +4312,23 @@ fi fi + # remove .exe since cygwin /usr/bin/install will append another + # one anyways + case $install_prog,$host in + /usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`echo $destfile | sed -e 's,.exe$,,'` + ;; + esac + ;; + esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" @@ -3505,6 +4345,11 @@ $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + # Do each command in the postinstall commands. eval cmds=\"$old_postinstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' @@ -3565,7 +4410,7 @@ fi # Exit here if they wanted silent mode. - test "$show" = : && exit 0 + test "$show" = ":" && exit 0 echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" @@ -3575,7 +4420,7 @@ echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use \`-LLIBDIR'" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" @@ -3625,7 +4470,7 @@ fi dir= - case "$file" in + case $file in *.la) # Check to see that this really is a libtool archive. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : @@ -3640,7 +4485,7 @@ library_names= # If there is no directory component, then add one. - case "$file" in + case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac @@ -3695,13 +4540,13 @@ args= for file do - case "$file" in + case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. - case "$file" in + case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac @@ -3718,8 +4563,8 @@ if test -z "$run"; then if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" + # Export the shlibpath_var. + eval "export $shlibpath_var" fi # Restore saved enviroment variables @@ -3738,23 +4583,30 @@ else # Display what would be done. if test -n "$shlibpath_var"; then - eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" - $echo "export $shlibpath_var" + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" fi $echo "$cmd$args" exit 0 fi ;; - # libtool uninstall mode - uninstall) - modename="$modename: uninstall" + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" rm="$nonopt" files= + rmforce= + exit_status=0 + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + for arg do - case "$arg" in + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac @@ -3766,14 +4618,42 @@ exit 1 fi + rmdirs= + for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. + if test "X$dir" = "X$file"; then + dir=. + objdir="$objdir" + else + objdir="$dir/$objdir" + fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test $mode = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test $mode = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi rmfiles="$file" - case "$name" in + case $name in *.la) # Possibly a libtool archive, so verify it. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then @@ -3781,38 +4661,43 @@ # Delete the libtool libraries and symlinks. for n in $library_names; do - rmfiles="$rmfiles $dir/$n" + rmfiles="$rmfiles $objdir/$n" done - test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" - - $show "$rm $rmfiles" - $run $rm $rmfiles + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - eval cmds=\"$postuninstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do + if test $mode = uninstall; then + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + eval cmds=\"$postuninstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + if test $? != 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - done - IFS="$save_ifs" - fi + fi - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - eval cmds=\"$old_postuninstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + eval cmds=\"$old_postuninstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + if test $? != 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - done - IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. fi - - # FIXME: should reinstall the best remaining shared library. fi ;; @@ -3821,17 +4706,35 @@ oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` rmfiles="$rmfiles $dir/$oldobj" fi - $show "$rm $rmfiles" - $run $rm $rmfiles ;; *) - $show "$rm $rmfiles" - $run $rm $rmfiles + # Do a test to see if this is a libtool program. + if test $mode = clean && + (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$file + + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + fi ;; esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 done - exit 0 + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status ;; "") @@ -3847,7 +4750,7 @@ fi # test -z "$show_help" # We need to display help for each of the modes. -case "$mode" in +case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... @@ -3866,6 +4769,7 @@ MODE must be one of the following: + clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries @@ -3878,6 +4782,20 @@ exit 0 ;; +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE @@ -3887,6 +4805,8 @@ This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file @@ -3966,6 +4886,8 @@ -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -release RELEASE specify package release information Index: xc/extras/freetype2/builds/unix/devel/freetype/config/ftoption.h diff -u xc/extras/freetype2/builds/unix/devel/freetype/config/ftoption.h:1.1.1.1 xc/extras/freetype2/builds/unix/devel/freetype/config/ftoption.h:removed --- xc/extras/freetype2/builds/unix/devel/freetype/config/ftoption.h:1.1.1.1 Fri Dec 8 16:26:09 2000 +++ xc/extras/freetype2/builds/unix/devel/freetype/config/ftoption.h Fri Jan 18 15:21:43 2002 @@ -1,400 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftoption.h */ -/* */ -/* User-selectable configuration macros (specification only). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTOPTION_H__ -#define __FTOPTION_H__ - - -#ifdef __cplusplus - extern "C" { -#endif - - - /*************************************************************************/ - /* */ - /* USER-SELECTABLE CONFIGURATION MACROS */ - /* */ - /* These macros can be toggled by developers to enable or disable */ - /* certain aspects of FreeType. This is a default file, where all major */ - /* options are enabled. */ - /* */ - /* Note that if some modifications are required for your build, we */ - /* advise you to put a modified copy of this file in your build */ - /* directory, rather than modifying it in-place. */ - /* */ - /* The build directory is normally `freetype/builds/' and */ - /* contains build or system-specific files that are included in */ - /* priority when building the library. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Convenience functions support */ - /* */ - /* Some functions of the FreeType 2 API are provided as a convenience */ - /* for client applications and developers. However, they are not */ - /* required to build and run the library itself. */ - /* */ - /* By defining this configuration macro, you'll disable the */ - /* compilation of these functions at build time. This can be useful */ - /* to reduce the library's code size when you don't need any of */ - /* these functions. */ - /* */ - /* All convenience functions are declared as such in their */ - /* documentation. */ - /* */ -#undef FT_CONFIG_OPTION_NO_CONVENIENCE_FUNCS - - - /*************************************************************************/ - /* */ - /* Alternate Glyph Image Format support */ - /* */ - /* By default, the glyph images returned by the FreeType glyph loader */ - /* can either be a pixmap or a vectorial outline defined through */ - /* Bezier control points. When defining the following configuration */ - /* macro, some font drivers will be able to register alternate */ - /* glyph image formats. */ - /* */ - /* Unset this macro if you are sure that you will never use a font */ - /* driver with an alternate glyph format; this will reduce the size of */ - /* the base layer code. */ - /* */ - /* Note that a few Type 1 fonts, as well as Windows `vector' fonts */ - /* use a vector `plotter' format that isn't supported when this */ - /* macro is undefined. */ - /* */ -#define FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS - - - /*************************************************************************/ - /* */ - /* Glyph Postscript Names handling */ - /* */ - /* By default, FreeType 2 is compiled with the `PSNames' module. This */ - /* This module is in charge of converting a glyph name string into a */ - /* Unicode value, or return a Macintosh standard glyph name for the */ - /* use with the TrueType `post' table. */ - /* */ - /* Undefine this macro if you do not want `PSNames' compiled in your */ - /* build of FreeType. This has the following effects: */ - /* */ - /* - The TrueType driver will provide its own set of glyph names, */ - /* if you build it to support postscript names in the TrueType */ - /* `post' table. */ - /* */ - /* - The Type 1 driver will not be able to synthetize a Unicode */ - /* charmap out of the glyphs found in the fonts. */ - /* */ - /* You would normally undefine this configuration macro when building */ - /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ - /* */ -#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Postscript Names to Unicode Values support */ - /* */ - /* By default, FreeType 2 is built with the `PSNames' module compiled */ - /* in. Among other things, the module is used to convert a glyph name */ - /* into a Unicode value. This is especially useful in order to */ - /* synthetize on the fly a Unicode charmap from the CFF/Type 1 driver */ - /* through a big table named the `Adobe Glyph List' (AGL). */ - /* */ - /* Undefine this macro if you do not want the Adobe Glyph List */ - /* compiled in your `PSNames' module. The Type 1 driver will not be */ - /* able to synthetize a Unicode charmap out of the glyphs found in the */ - /* fonts. */ - /* */ -#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST - - - /*************************************************************************/ - /* */ - /* Many compilers provide the non-ANSI `long long' 64-bit type. You can */ - /* activate it by defining the FTCALC_USE_LONG_LONG macro. Note that */ - /* this will produce many -ansi warnings during library compilation, and */ - /* that in many cases the generated code will not be smaller or faster! */ - /* */ -#undef FTCALC_USE_LONG_LONG - - - /*************************************************************************/ - /* */ - /* DLL export compilation */ - /* */ - /* When compiling FreeType as a DLL, some systems/compilers need a */ - /* special keyword in front OR after the return type of function */ - /* declarations. */ - /* */ - /* Two macros are used within the FreeType source code to define */ - /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ - /* */ - /* FT_EXPORT( return_type ) */ - /* */ - /* is used in a function declaration, as in */ - /* */ - /* FT_EXPORT( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ); */ - /* */ - /* */ - /* FT_EXPORT_DEF( return_type ) */ - /* */ - /* is used in a function definition, as in */ - /* */ - /* FT_EXPORT_DEF( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ) */ - /* { */ - /* ... some code ... */ - /* return FT_Err_Ok; */ - /* } */ - /* */ - /* You can provide your own implementation of FT_EXPORT and */ - /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ - /* will be later automatically defined as `extern return_type' to */ - /* allow normal compilation. */ - /* */ -#undef FT_EXPORT -#undef FT_EXPORT_DEF - - - /*************************************************************************/ - /* */ - /* Debug level */ - /* */ - /* FreeType can be compiled in debug or trace mode. In debug mode, */ - /* errors are reported through the `ftdebug' component. In trace */ - /* mode, additional messages are sent to the standard output during */ - /* execution. */ - /* */ - /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ - /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ - /* */ - /* Don't define any of these macros to compile in `release' mode! */ - /* */ -#define FT_DEBUG_LEVEL_ERROR -#define FT_DEBUG_LEVEL_TRACE - - - /*************************************************************************/ - /* */ - /* Computation Algorithms */ - /* */ - /* Used for debugging, this configuration macro should disappear */ - /* soon. */ - /* */ -#define FT_CONFIG_OPTION_OLD_CALCS - - - /*************************************************************************/ - /* */ - /* The size in bytes of the render pool used by the scan-line converter */ - /* to do all of its work. */ - /* */ - /* This must be greater than 4kByte. */ - /* */ -#define FT_RENDER_POOL_SIZE 16384 - - - /*************************************************************************/ - /* */ - /* FT_MAX_MODULES */ - /* */ - /* The maximum number of modules that can be registered in a single */ - /* FreeType library object. 16 is the default. */ - /* */ -#define FT_MAX_MODULES 16 - - - /*************************************************************************/ - /* */ - /* FT_MAX_EXTENSIONS */ - /* */ - /* The maximum number of extensions that can be registered in a single */ - /* font driver. 8 is the default. */ - /* */ - /* If you don't know what this means, you certainly do not need to */ - /* change this value. */ - /* */ -#define FT_MAX_EXTENSIONS 8 - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ - /* embedded bitmaps in all formats using the SFNT module (namely */ - /* TrueType & OpenType). */ - /* */ -#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ - /* load and enumerate the glyph Postscript names in a TrueType or */ - /* OpenType file. */ - /* */ - /* Note that when you do not compile the `PSNames' module by undefining */ - /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ - /* contain additional code used to read the PS Names table from a font. */ - /* */ - /* (By default, the module uses `PSNames' to extract glyph names.) */ - /* */ -#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ - /* access the internal name table in a SFNT-based format like TrueType */ - /* or OpenType. The name table contains various strings used to */ - /* describe the font, like family name, copyright, version, etc. It */ - /* does not contain any glyph name though. */ - /* */ - /* Accessing SFNT names is done through the functions declared in */ - /* `freetype/ftnames.h'. */ - /* */ -#define TT_CONFIG_OPTION_SFNT_NAMES - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ - /* a bytecode interpreter in the TrueType driver. Note that there are */ - /* important patent issues related to the use of the interpreter. */ - /* */ - /* By undefining this, you will only compile the code necessary to load */ - /* TrueType glyphs without hinting. */ - /* */ -#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */ - /* bytecode interpreter with a huge switch statement, rather than a call */ - /* table. This results in smaller and faster code for a number of */ - /* architectures. */ - /* */ - /* Note however that on some compiler/processor combinations, undefining */ - /* this macro will generate faster, though larger, code. */ - /* */ -#define TT_CONFIG_OPTION_INTERPRETER_SWITCH - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */ - /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ - /* required. */ - /* */ -#define T1_MAX_DICT_DEPTH 5 - - - /*************************************************************************/ - /* */ - /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ - /* calls during glyph loading. */ - /* */ -#define T1_MAX_SUBRS_CALLS 16 - - - /*************************************************************************/ - /* */ - /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ - /* minimum of 16 is required. */ - /* */ - /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ - /* */ -#define T1_MAX_CHARSTRINGS_OPERANDS 256 - - - /*************************************************************************/ - /* */ - /* Define T1_CONFIG_OPTION_DISABLE_HINTER if you want to generate a */ - /* driver with no hinter. This can be useful to debug the parser. */ - /* */ -#undef T1_CONFIG_OPTION_DISABLE_HINTER - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ - /* files into an existing face. Note that if set, the T1 driver will be */ - /* unable to produce kerning distances. */ - /* */ -#undef T1_CONFIG_OPTION_NO_AFM - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of the Multiple Masters font support in the Type 1 */ - /* driver. */ - /* */ -#undef T1_CONFIG_OPTION_NO_MM_SUPPORT - - -#ifdef __cplusplus - } -#endif - - -#endif /* __FTOPTION_H__ */ - - -/* END */ Index: xc/extras/freetype2/builds/vms/ftconfig.h diff -u xc/extras/freetype2/builds/vms/ftconfig.h:1.1.1.1 xc/extras/freetype2/builds/vms/ftconfig.h:1.1.1.2 --- xc/extras/freetype2/builds/vms/ftconfig.h:1.1.1.1 Tue May 15 23:45:46 2001 +++ xc/extras/freetype2/builds/vms/ftconfig.h Sun Dec 16 12:49:19 2001 @@ -4,7 +4,7 @@ /* */ /* VMS-specific configuration file (specification only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -218,13 +218,13 @@ /* */ #ifdef __cplusplus -#define FT_CALLBACK_DEF extern "C" +#define FT_CALLBACK_DEF( x ) extern "C" x #define FT_CALLBACK_TABLE extern "C" #define FT_CALLBACK_TABLE_DEF extern "C" #else -#define FT_CALLBACK_DEF static +#define FT_CALLBACK_DEF( x ) static x #define FT_CALLBACK_TABLE extern #define FT_CALLBACK_TABLE_DEF Index: xc/extras/freetype2/builds/vms/ftsystem.c diff -u xc/extras/freetype2/builds/vms/ftsystem.c:1.1.1.1 xc/extras/freetype2/builds/vms/ftsystem.c:1.1.1.4 --- xc/extras/freetype2/builds/vms/ftsystem.c:1.1.1.1 Tue May 15 23:45:46 2001 +++ xc/extras/freetype2/builds/vms/ftsystem.c Mon Jan 14 11:52:01 2002 @@ -4,7 +4,7 @@ /* */ /* Unix-specific FreeType low-level system interface (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -17,7 +17,7 @@ #include -/* we use our special ftconfig.h file, not the standard one */ + /* we use our special ftconfig.h file, not the standard one */ #include #include FT_INTERNAL_DEBUG_H #include FT_SYSTEM_H @@ -48,8 +48,9 @@ #else extern #endif - int munmap( char* addr, - int len ); + int + munmap( char* addr, + int len ); #define MUNMAP_ARG_CAST char * @@ -91,9 +92,9 @@ /* */ /* The address of newly allocated block. */ /* */ - FT_CALLBACK_DEF - void* ft_alloc( FT_Memory memory, - long size ) + FT_CALLBACK_DEF( void* ) + ft_alloc( FT_Memory memory, + long size ) { FT_UNUSED( memory ); @@ -121,11 +122,11 @@ /* */ /* The address of the reallocated memory block. */ /* */ - FT_CALLBACK_DEF - void* ft_realloc( FT_Memory memory, - long cur_size, - long new_size, - void* block ) + FT_CALLBACK_DEF( void* ) + ft_realloc( FT_Memory memory, + long cur_size, + long new_size, + void* block ) { FT_UNUSED( memory ); FT_UNUSED( cur_size ); @@ -147,9 +148,9 @@ /* */ /* block :: The address of block in memory to be freed. */ /* */ - FT_CALLBACK_DEF - void ft_free( FT_Memory memory, - void* block ) + FT_CALLBACK_DEF( void ) + ft_free( FT_Memory memory, + void* block ) { FT_UNUSED( memory ); @@ -189,8 +190,8 @@ /* */ /* stream :: A pointer to the stream object. */ /* */ - FT_CALLBACK_DEF - void ft_close_stream( FT_Stream stream ) + FT_CALLBACK_DEF( void ) + ft_close_stream( FT_Stream stream ) { munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size ); @@ -202,8 +203,9 @@ /* documentation is in ftobjs.h */ - FT_EXPORT_DEF( FT_Error ) FT_New_Stream( const char* filepathname, - FT_Stream stream ) + FT_EXPORT_DEF( FT_Error ) + FT_New_Stream( const char* filepathname, + FT_Stream stream ) { int file; struct stat stat_buf; @@ -269,9 +271,21 @@ } +#ifdef FT_DEBUG_MEMORY + + extern FT_Int + ft_mem_debug_init( FT_Memory memory ); + + extern void + ft_mem_debug_done( FT_Memory memory ); + +#endif + + /* documentation is in ftobjs.h */ - FT_EXPORT_DEF( FT_Memory ) FT_New_Memory( void ) + FT_EXPORT_DEF( FT_Memory ) + FT_New_Memory( void ) { FT_Memory memory; @@ -283,6 +297,9 @@ memory->alloc = ft_alloc; memory->realloc = ft_realloc; memory->free = ft_free; +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_init( memory ); +#endif } return memory; @@ -291,8 +308,12 @@ /* documentation is in ftobjs.h */ - FT_EXPORT_DEF( void ) FT_Done_Memory( FT_Memory memory ) + FT_EXPORT_DEF( void ) + FT_Done_Memory( FT_Memory memory ) { +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_done( memory ); +#endif memory->free( memory, memory ); } Index: xc/extras/freetype2/builds/win32/win32-def.mk diff -u xc/extras/freetype2/builds/win32/win32-def.mk:1.1.1.2 xc/extras/freetype2/builds/win32/win32-def.mk:1.1.1.3 --- xc/extras/freetype2/builds/win32/win32-def.mk:1.1.1.2 Tue May 15 23:45:49 2001 +++ xc/extras/freetype2/builds/win32/win32-def.mk Sun Sep 9 22:55:53 2001 @@ -15,7 +15,7 @@ DELETE := del HOSTSEP := $(strip \ ) -BUILD := $(TOP)$(SEP)config$(SEP)win32 +BUILD := $(TOP)$(SEP)builds$(SEP)win32 PLATFORM := win32 # by default, we use "\" as a separator on Win32 Index: xc/extras/freetype2/builds/win32/devel/freetype/config/ftoption.h diff -u xc/extras/freetype2/builds/win32/devel/freetype/config/ftoption.h:1.1.1.1 xc/extras/freetype2/builds/win32/devel/freetype/config/ftoption.h:removed --- xc/extras/freetype2/builds/win32/devel/freetype/config/ftoption.h:1.1.1.1 Fri Dec 8 16:26:10 2000 +++ xc/extras/freetype2/builds/win32/devel/freetype/config/ftoption.h Fri Jan 18 15:21:44 2002 @@ -1,400 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftoption.h */ -/* */ -/* User-selectable configuration macros (specification only). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTOPTION_H__ -#define __FTOPTION_H__ - - -#ifdef __cplusplus - extern "C" { -#endif - - - /*************************************************************************/ - /* */ - /* USER-SELECTABLE CONFIGURATION MACROS */ - /* */ - /* These macros can be toggled by developers to enable or disable */ - /* certain aspects of FreeType. This is a default file, where all major */ - /* options are enabled. */ - /* */ - /* Note that if some modifications are required for your build, we */ - /* advise you to put a modified copy of this file in your build */ - /* directory, rather than modifying it in-place. */ - /* */ - /* The build directory is normally `freetype/builds/' and */ - /* contains build or system-specific files that are included in */ - /* priority when building the library. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Convenience functions support */ - /* */ - /* Some functions of the FreeType 2 API are provided as a convenience */ - /* for client applications and developers. However, they are not */ - /* required to build and run the library itself. */ - /* */ - /* By defining this configuration macro, you'll disable the */ - /* compilation of these functions at build time. This can be useful */ - /* to reduce the library's code size when you don't need any of */ - /* these functions. */ - /* */ - /* All convenience functions are declared as such in their */ - /* documentation. */ - /* */ -#undef FT_CONFIG_OPTION_NO_CONVENIENCE_FUNCS - - - /*************************************************************************/ - /* */ - /* Alternate Glyph Image Format support */ - /* */ - /* By default, the glyph images returned by the FreeType glyph loader */ - /* can either be a pixmap or a vectorial outline defined through */ - /* Bezier control points. When defining the following configuration */ - /* macro, some font drivers will be able to register alternate */ - /* glyph image formats. */ - /* */ - /* Unset this macro if you are sure that you will never use a font */ - /* driver with an alternate glyph format; this will reduce the size of */ - /* the base layer code. */ - /* */ - /* Note that a few Type 1 fonts, as well as Windows `vector' fonts */ - /* use a vector `plotter' format that isn't supported when this */ - /* macro is undefined. */ - /* */ -#define FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS - - - /*************************************************************************/ - /* */ - /* Glyph Postscript Names handling */ - /* */ - /* By default, FreeType 2 is compiled with the `PSNames' module. This */ - /* This module is in charge of converting a glyph name string into a */ - /* Unicode value, or return a Macintosh standard glyph name for the */ - /* use with the TrueType `post' table. */ - /* */ - /* Undefine this macro if you do not want `PSNames' compiled in your */ - /* build of FreeType. This has the following effects: */ - /* */ - /* - The TrueType driver will provide its own set of glyph names, */ - /* if you build it to support postscript names in the TrueType */ - /* `post' table. */ - /* */ - /* - The Type 1 driver will not be able to synthetize a Unicode */ - /* charmap out of the glyphs found in the fonts. */ - /* */ - /* You would normally undefine this configuration macro when building */ - /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ - /* */ -#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Postscript Names to Unicode Values support */ - /* */ - /* By default, FreeType 2 is built with the `PSNames' module compiled */ - /* in. Among other things, the module is used to convert a glyph name */ - /* into a Unicode value. This is especially useful in order to */ - /* synthetize on the fly a Unicode charmap from the CFF/Type 1 driver */ - /* through a big table named the `Adobe Glyph List' (AGL). */ - /* */ - /* Undefine this macro if you do not want the Adobe Glyph List */ - /* compiled in your `PSNames' module. The Type 1 driver will not be */ - /* able to synthetize a Unicode charmap out of the glyphs found in the */ - /* fonts. */ - /* */ -#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST - - - /*************************************************************************/ - /* */ - /* Many compilers provide the non-ANSI `long long' 64-bit type. You can */ - /* activate it by defining the FTCALC_USE_LONG_LONG macro. Note that */ - /* this will produce many -ansi warnings during library compilation, and */ - /* that in many cases the generated code will not be smaller or faster! */ - /* */ -#undef FTCALC_USE_LONG_LONG - - - /*************************************************************************/ - /* */ - /* DLL export compilation */ - /* */ - /* When compiling FreeType as a DLL, some systems/compilers need a */ - /* special keyword in front OR after the return type of function */ - /* declarations. */ - /* */ - /* Two macros are used within the FreeType source code to define */ - /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ - /* */ - /* FT_EXPORT( return_type ) */ - /* */ - /* is used in a function declaration, as in */ - /* */ - /* FT_EXPORT( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ); */ - /* */ - /* */ - /* FT_EXPORT_DEF( return_type ) */ - /* */ - /* is used in a function definition, as in */ - /* */ - /* FT_EXPORT_DEF( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ) */ - /* { */ - /* ... some code ... */ - /* return FT_Err_Ok; */ - /* } */ - /* */ - /* You can provide your own implementation of FT_EXPORT and */ - /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ - /* will be later automatically defined as `extern return_type' to */ - /* allow normal compilation. */ - /* */ -#undef FT_EXPORT -#undef FT_EXPORT_DEF - - - /*************************************************************************/ - /* */ - /* Debug level */ - /* */ - /* FreeType can be compiled in debug or trace mode. In debug mode, */ - /* errors are reported through the `ftdebug' component. In trace */ - /* mode, additional messages are sent to the standard output during */ - /* execution. */ - /* */ - /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ - /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ - /* */ - /* Don't define any of these macros to compile in `release' mode! */ - /* */ -#define FT_DEBUG_LEVEL_ERROR -#define FT_DEBUG_LEVEL_TRACE - - - /*************************************************************************/ - /* */ - /* Computation Algorithms */ - /* */ - /* Used for debugging, this configuration macro should disappear */ - /* soon. */ - /* */ -#define FT_CONFIG_OPTION_OLD_CALCS - - - /*************************************************************************/ - /* */ - /* The size in bytes of the render pool used by the scan-line converter */ - /* to do all of its work. */ - /* */ - /* This must be greater than 4kByte. */ - /* */ -#define FT_RENDER_POOL_SIZE 16384 - - - /*************************************************************************/ - /* */ - /* FT_MAX_MODULES */ - /* */ - /* The maximum number of modules that can be registered in a single */ - /* FreeType library object. 16 is the default. */ - /* */ -#define FT_MAX_MODULES 16 - - - /*************************************************************************/ - /* */ - /* FT_MAX_EXTENSIONS */ - /* */ - /* The maximum number of extensions that can be registered in a single */ - /* font driver. 8 is the default. */ - /* */ - /* If you don't know what this means, you certainly do not need to */ - /* change this value. */ - /* */ -#define FT_MAX_EXTENSIONS 8 - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ - /* embedded bitmaps in all formats using the SFNT module (namely */ - /* TrueType & OpenType). */ - /* */ -#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ - /* load and enumerate the glyph Postscript names in a TrueType or */ - /* OpenType file. */ - /* */ - /* Note that when you do not compile the `PSNames' module by undefining */ - /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ - /* contain additional code used to read the PS Names table from a font. */ - /* */ - /* (By default, the module uses `PSNames' to extract glyph names.) */ - /* */ -#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ - /* access the internal name table in a SFNT-based format like TrueType */ - /* or OpenType. The name table contains various strings used to */ - /* describe the font, like family name, copyright, version, etc. It */ - /* does not contain any glyph name though. */ - /* */ - /* Accessing SFNT names is done through the functions declared in */ - /* `freetype/ftnames.h'. */ - /* */ -#define TT_CONFIG_OPTION_SFNT_NAMES - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ - /* a bytecode interpreter in the TrueType driver. Note that there are */ - /* important patent issues related to the use of the interpreter. */ - /* */ - /* By undefining this, you will only compile the code necessary to load */ - /* TrueType glyphs without hinting. */ - /* */ -#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */ - /* bytecode interpreter with a huge switch statement, rather than a call */ - /* table. This results in smaller and faster code for a number of */ - /* architectures. */ - /* */ - /* Note however that on some compiler/processor combinations, undefining */ - /* this macro will generate faster, though larger, code. */ - /* */ -#define TT_CONFIG_OPTION_INTERPRETER_SWITCH - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */ - /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ - /* required. */ - /* */ -#define T1_MAX_DICT_DEPTH 5 - - - /*************************************************************************/ - /* */ - /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ - /* calls during glyph loading. */ - /* */ -#define T1_MAX_SUBRS_CALLS 16 - - - /*************************************************************************/ - /* */ - /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ - /* minimum of 16 is required. */ - /* */ - /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ - /* */ -#define T1_MAX_CHARSTRINGS_OPERANDS 256 - - - /*************************************************************************/ - /* */ - /* Define T1_CONFIG_OPTION_DISABLE_HINTER if you want to generate a */ - /* driver with no hinter. This can be useful to debug the parser. */ - /* */ -#undef T1_CONFIG_OPTION_DISABLE_HINTER - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ - /* files into an existing face. Note that if set, the T1 driver will be */ - /* unable to produce kerning distances. */ - /* */ -#undef T1_CONFIG_OPTION_NO_AFM - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of the Multiple Masters font support in the Type 1 */ - /* driver. */ - /* */ -#undef T1_CONFIG_OPTION_NO_MM_SUPPORT - - -#ifdef __cplusplus - } -#endif - - -#endif /* __FTOPTION_H__ */ - - -/* END */ Index: xc/extras/freetype2/builds/win32/visualc/freetype.dsp diff -u xc/extras/freetype2/builds/win32/visualc/freetype.dsp:1.1.1.1 xc/extras/freetype2/builds/win32/visualc/freetype.dsp:1.1.1.2 --- xc/extras/freetype2/builds/win32/visualc/freetype.dsp:1.1.1.1 Fri Dec 8 16:26:10 2000 +++ xc/extras/freetype2/builds/win32/visualc/freetype.dsp Sun Sep 9 22:55:53 2001 @@ -39,11 +39,12 @@ # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "obj/release" -# PROP Intermediate_Dir "obj/release" +# PROP Output_Dir "..\..\..\objs\release" +# PROP Intermediate_Dir "..\..\..\objs\release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /Za /W3 /GX /O2 /I "..\freetype\include\\" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /c +# ADD CPP /nologo /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FD /c +# SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -51,7 +52,7 @@ # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"lib\freetype200b8.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype204.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Debug" @@ -62,12 +63,12 @@ # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "obj/debug" -# PROP Intermediate_Dir "obj/debug" +# PROP Output_Dir "..\..\..\objs\debug" +# PROP Intermediate_Dir "..\..\..\objs\debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /Za /W3 /Gm /GX /ZI /Od /I "..\freetype\include\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /GZ /c -# SUBTRACT CPP /X +# ADD CPP /nologo /Za /W4 /Gm /GX /ZI /Od /I "..\..\..\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /FD /GZ /c +# SUBTRACT CPP /X /YX # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -75,7 +76,7 @@ # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"lib\freetype200b8_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype204_D.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded" @@ -86,13 +87,13 @@ # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "obj/debug_mt" -# PROP Intermediate_Dir "obj/debug_mt" +# PROP Output_Dir "..\..\..\objs\debug_mt" +# PROP Intermediate_Dir "..\..\..\objs\debug_mt" # PROP Target_Dir "" # ADD BASE CPP /nologo /Za /W3 /Gm /GX /ZI /Od /I "..\freetype\include\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /GZ /c # SUBTRACT BASE CPP /X -# ADD CPP /nologo /MTd /Za /W3 /Gm /GX /ZI /Od /I "..\freetype\include\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /GZ /c -# SUBTRACT CPP /X +# ADD CPP /nologo /MTd /Za /W4 /Gm /GX /ZI /Od /I "..\..\..\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /FD /GZ /c +# SUBTRACT CPP /X /YX # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -100,7 +101,7 @@ # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo /out:"lib\freetype200b8_D.lib" -# ADD LIB32 /nologo /out:"lib\freetype200b8MT_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype204MT_D.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded" @@ -111,11 +112,12 @@ # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "obj/release_mt" -# PROP Intermediate_Dir "obj/release_mt" +# PROP Output_Dir "..\..\..\objs\release_mt" +# PROP Intermediate_Dir "..\..\..\objs\release_mt" # PROP Target_Dir "" # ADD BASE CPP /nologo /Za /W3 /GX /O2 /I "..\freetype\include\\" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /c -# ADD CPP /nologo /MT /Za /W3 /GX /O2 /I "..\freetype\include\\" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /c +# ADD CPP /nologo /MT /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FD /c +# SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -123,7 +125,7 @@ # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo /out:"lib\freetype200b8.lib" -# ADD LIB32 /nologo /out:"lib\freetype200b8MT.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype204MT.lib" !ENDIF @@ -138,67 +140,75 @@ # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File -SOURCE=.\src\autohint\autohint.c +SOURCE=..\..\..\src\autohint\autohint.c # End Source File # Begin Source File -SOURCE=.\src\cff\cff.c +SOURCE=..\..\..\src\cff\cff.c # End Source File # Begin Source File -SOURCE=.\src\base\ftbase.c +SOURCE=..\..\..\src\base\ftbase.c # End Source File # Begin Source File -SOURCE=.\src\base\ftdebug.c +SOURCE=..\..\..\src\base\ftdebug.c # End Source File # Begin Source File -SOURCE=.\src\base\ftglyph.c +SOURCE=..\..\..\src\base\ftglyph.c # End Source File # Begin Source File -SOURCE=.\src\base\ftinit.c +SOURCE=..\..\..\src\base\ftinit.c # End Source File # Begin Source File -SOURCE=.\src\base\ftmm.c +SOURCE=..\..\..\src\base\ftmm.c # End Source File # Begin Source File -SOURCE=.\src\base\ftsystem.c +SOURCE=..\..\..\src\base\ftsystem.c # End Source File # Begin Source File -SOURCE=.\src\psnames\psmodule.c +SOURCE=..\..\..\src\pcf\pcf.c # End Source File # Begin Source File -SOURCE=.\src\raster\raster.c +SOURCE=..\..\..\src\psaux\psaux.c # End Source File # Begin Source File -SOURCE=.\src\sfnt\sfnt.c +SOURCE=..\..\..\src\psnames\psmodule.c # End Source File # Begin Source File -SOURCE=.\src\smooth\smooth.c +SOURCE=..\..\..\src\raster\raster.c # End Source File # Begin Source File -SOURCE=.\src\truetype\truetype.c +SOURCE=..\..\..\src\sfnt\sfnt.c # End Source File # Begin Source File -SOURCE=.\src\cid\type1cid.c +SOURCE=..\..\..\src\smooth\smooth.c # End Source File # Begin Source File -SOURCE=.\src\type1\type1.c +SOURCE=..\..\..\src\truetype\truetype.c # End Source File # Begin Source File -SOURCE=.\src\winfonts\winfnt.c +SOURCE=..\..\..\src\type1\type1.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\cid\type1cid.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\winfonts\winfnt.c # End Source File # End Group # Begin Group "Header Files" Index: xc/extras/freetype2/builds/win32/visualc/freetype.dsw diff -u xc/extras/freetype2/builds/win32/visualc/freetype.dsw:1.1.1.1 xc/extras/freetype2/builds/win32/visualc/freetype.dsw:1.1.1.2 --- xc/extras/freetype2/builds/win32/visualc/freetype.dsw:1.1.1.1 Fri Dec 8 16:26:10 2000 +++ xc/extras/freetype2/builds/win32/visualc/freetype.dsw Sun Sep 9 22:55:53 2001 @@ -7,10 +7,6 @@ Package=<5> {{{ - begin source code control - "$/DEV/freetype", KAOAAAAA - . - end source code control }}} Package=<4> @@ -19,71 +15,10 @@ ############################################################################### -Project: "ftdump"=.\ftdump.dsp - Package Owner=<4> - -Package=<5> -{{{ - begin source code control - "$/DEV/freetype", KAOAAAAA - . - end source code control -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name freetype - End Project Dependency -}}} - -############################################################################### - -Project: "ftstring"=.\ftstring.dsp - Package Owner=<4> - -Package=<5> -{{{ - begin source code control - "$/DEV/freetype", KAOAAAAA - . - end source code control -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name freetype - End Project Dependency -}}} - -############################################################################### - -Project: "ftview"=.\ftview.dsp - Package Owner=<4> - -Package=<5> -{{{ - begin source code control - "$/DEV/freetype", KAOAAAAA - . - end source code control -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name freetype - End Project Dependency -}}} - -############################################################################### - Global: Package=<5> {{{ - begin source code control - "$/DEV/freetype", KAOAAAAA - . - end source code control }}} Package=<3> Index: xc/extras/freetype2/builds/win32/visualc/ftdump.dsp diff -u xc/extras/freetype2/builds/win32/visualc/ftdump.dsp:1.1.1.1 xc/extras/freetype2/builds/win32/visualc/ftdump.dsp:removed --- xc/extras/freetype2/builds/win32/visualc/ftdump.dsp:1.1.1.1 Fri Dec 8 16:26:10 2000 +++ xc/extras/freetype2/builds/win32/visualc/ftdump.dsp Fri Jan 18 15:21:44 2002 @@ -1,118 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ftdump" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ftdump - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ftdump.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ftdump.mak" CFG="ftdump - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ftdump - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "ftdump - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName ""$/DEV/freetype", KAOAAAAA" -# PROP Scc_LocalPath "." -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ftdump - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "demos/obj/ftdump/release" -# PROP Intermediate_Dir "demos/obj/ftdump/release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\freetype\include\\" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib lib\freetype200b8.lib /nologo /subsystem:console /machine:I386 -# Begin Special Build Tool -TargetPath=.\demos\obj\ftdump\release\ftdump.exe -TargetName=ftdump -SOURCE="$(InputPath)" -PostBuild_Cmds=echo copy $(TargetPath) .\demos\bin\$(TargetName).exe copy $(TargetPath) .\demos\bin\$(TargetName).exe -# End Special Build Tool - -!ELSEIF "$(CFG)" == "ftdump - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "ftdump___Win32_Debug" -# PROP BASE Intermediate_Dir "ftdump___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "demos/obj/ftdump/debug" -# PROP Intermediate_Dir "demos/obj/ftdump/debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\freetype\include\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib lib\freetype200b8_D.lib /nologo /subsystem:console /debug /machine:I386 /out:"demos/obj/ftdump/debug/ftdump_D.exe" /pdbtype:sept -# Begin Special Build Tool -TargetPath=.\demos\obj\ftdump\debug\ftdump_D.exe -TargetName=ftdump_D -SOURCE="$(InputPath)" -PostBuild_Cmds=echo copy $(TargetPath) .\demos\bin\$(TargetName).exe copy $(TargetPath) .\demos\bin\$(TargetName).exe -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "ftdump - Win32 Release" -# Name "ftdump - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\demos\src\common.c -# End Source File -# Begin Source File - -SOURCE=.\demos\src\ftdump.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project Index: xc/extras/freetype2/builds/win32/visualc/ftstring.dsp diff -u xc/extras/freetype2/builds/win32/visualc/ftstring.dsp:1.1.1.1 xc/extras/freetype2/builds/win32/visualc/ftstring.dsp:removed --- xc/extras/freetype2/builds/win32/visualc/ftstring.dsp:1.1.1.1 Fri Dec 8 16:26:10 2000 +++ xc/extras/freetype2/builds/win32/visualc/ftstring.dsp Fri Jan 18 15:21:44 2002 @@ -1,142 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ftstring" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ftstring - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ftstring.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ftstring.mak" CFG="ftstring - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ftstring - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "ftstring - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName ""$/DEV/freetype", KAOAAAAA" -# PROP Scc_LocalPath "." -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ftstring - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "demos/obj/ftstring/release" -# PROP Intermediate_Dir "demos/obj/ftstring/release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\freetype\include\\" /I "demos\graph" /I "demos\graph\win32" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "FT_FLAT_COMPILE" /D "DEVICE_WIN32" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib lib\freetype200b8.lib /nologo /subsystem:console /machine:I386 -# Begin Special Build Tool -TargetPath=.\demos\obj\ftstring\release\ftstring.exe -TargetName=ftstring -SOURCE="$(InputPath)" -PostBuild_Cmds=echo copy $(TargetPath) .\demos\bin\$(TargetName).exe copy $(TargetPath) .\demos\bin\$(TargetName).exe -# End Special Build Tool - -!ELSEIF "$(CFG)" == "ftstring - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "ftstring___Win32_Debug" -# PROP BASE Intermediate_Dir "ftstring___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "demos/obj/ftstring/debug" -# PROP Intermediate_Dir "demos/obj/ftstring/debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\freetype\include\\" /I "demos\graph" /I "demos\graph\win32" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "FT_FLAT_COMPILE" /D "DEVICE_WIN32" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib lib\freetype200b8_D.lib /nologo /subsystem:console /debug /machine:I386 /out:"demos/obj/ftstring/debug/ftstring_D.exe" /pdbtype:sept -# Begin Special Build Tool -TargetPath=.\demos\obj\ftstring\debug\ftstring_D.exe -TargetName=ftstring_D -SOURCE="$(InputPath)" -PostBuild_Cmds=echo copy $(TargetPath) .\demos\bin\$(TargetName).exe copy $(TargetPath) .\demos\bin\$(TargetName).exe -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "ftstring - Win32 Release" -# Name "ftstring - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\demos\src\common.c -# End Source File -# Begin Source File - -SOURCE=.\demos\src\ftstring.c -# End Source File -# Begin Source File - -SOURCE=.\demos\graph\grblit.c -# End Source File -# Begin Source File - -SOURCE=.\demos\graph\grdevice.c -# End Source File -# Begin Source File - -SOURCE=.\demos\graph\grfont.c -# End Source File -# Begin Source File - -SOURCE=.\demos\graph\grinit.c -# End Source File -# Begin Source File - -SOURCE=.\demos\graph\grobjs.c -# End Source File -# Begin Source File - -SOURCE=.\demos\graph\win32\grwin32.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project Index: xc/extras/freetype2/builds/win32/visualc/ftview.dsp diff -u xc/extras/freetype2/builds/win32/visualc/ftview.dsp:1.1.1.1 xc/extras/freetype2/builds/win32/visualc/ftview.dsp:removed --- xc/extras/freetype2/builds/win32/visualc/ftview.dsp:1.1.1.1 Fri Dec 8 16:26:11 2000 +++ xc/extras/freetype2/builds/win32/visualc/ftview.dsp Fri Jan 18 15:21:44 2002 @@ -1,142 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ftview" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ftview - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ftview.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ftview.mak" CFG="ftview - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ftview - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "ftview - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName ""$/DEV/freetype", KAOAAAAA" -# PROP Scc_LocalPath "." -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ftview - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "demos/obj/ftview/release" -# PROP Intermediate_Dir "demos/obj/ftview/release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\freetype\include\\" /I "demos\graph" /I "demos\graph\win32" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "FT_FLAT_COMPILE" /D "DEVICE_WIN32" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib lib\freetype200b8.lib /nologo /subsystem:console /machine:I386 -# Begin Special Build Tool -TargetPath=.\demos\obj\ftview\release\ftview.exe -TargetName=ftview -SOURCE="$(InputPath)" -PostBuild_Cmds=echo copy $(TargetPath) .\demos\bin\$(TargetName).exe copy $(TargetPath) .\demos\bin\$(TargetName).exe -# End Special Build Tool - -!ELSEIF "$(CFG)" == "ftview - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "ftview___Win32_Debug" -# PROP BASE Intermediate_Dir "ftview___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "demos/obj/ftview/debug" -# PROP Intermediate_Dir "demos/obj/ftview/debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\freetype\include\\" /I "demos\graph" /I "demos\graph\win32" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "FT_FLAT_COMPILE" /D "DEVICE_WIN32" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib lib\freetype200b8_D.lib /nologo /subsystem:console /debug /machine:I386 /out:"demos/obj/ftview/debug/ftview_D.exe" /pdbtype:sept -# Begin Special Build Tool -TargetPath=.\demos\obj\ftview\debug\ftview_D.exe -TargetName=ftview_D -SOURCE="$(InputPath)" -PostBuild_Cmds=echo copy $(TargetPath) .\demos\bin\$(TargetName).exe copy $(TargetPath) .\demos\bin\$(TargetName).exe -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "ftview - Win32 Release" -# Name "ftview - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\demos\src\common.c -# End Source File -# Begin Source File - -SOURCE=.\demos\src\ftview.c -# End Source File -# Begin Source File - -SOURCE=.\demos\graph\grblit.c -# End Source File -# Begin Source File - -SOURCE=.\demos\graph\grdevice.c -# End Source File -# Begin Source File - -SOURCE=.\demos\graph\grfont.c -# End Source File -# Begin Source File - -SOURCE=.\demos\graph\grinit.c -# End Source File -# Begin Source File - -SOURCE=.\demos\graph\grobjs.c -# End Source File -# Begin Source File - -SOURCE=.\demos\graph\win32\grwin32.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project Index: xc/extras/freetype2/builds/win32/visualc/index.html diff -u xc/extras/freetype2/builds/win32/visualc/index.html:1.1.1.1 xc/extras/freetype2/builds/win32/visualc/index.html:1.1.1.2 --- xc/extras/freetype2/builds/win32/visualc/index.html:1.1.1.1 Fri Dec 8 16:26:11 2000 +++ xc/extras/freetype2/builds/win32/visualc/index.html Sun Sep 9 22:55:53 2001 @@ -1,91 +1,27 @@ - - -Freetype2 (for Windows) - - - - - - - - - -
    welcomepersonalzeberdeefreetype
    - - - - - - -
    welcomepersonalzeberdeefor - Windows

    -
    + +
    +FreeType 2 Project Files for Visual C++ +
    + -

    Freetype (for Windows)

    -
    +

    FreeType 2 Project Files for Visual C++

    -

    Information

    -

    To learn all about Freetype, visit here.

    -
    +

    This directory contains a project file for Visual C++, named + freetype.dsp. It will compile the following libraries + from the FreeType 2.0.4 sources:

    + +
      +
      +    freetype204.lib     - release build; single threaded
      +    freetype204_D.lib   - debug build;   single threaded
      +    freetype204MT.lib   - release build; multi-threaded
      +    freetype204MT_D.lib - debug build;   multi-threaded
      +  
      +
    -

    Freetype for Windows

    -

    One of the problems with The Freetype Project is that it doesn’t come with -any nice workspace and project files for use with MS Visual C++.

    -

    So, as I’ve been using Freetype within some of my own software, I’ve had to -create these file for myself, and I herewith provide them back to the open -source community.

    -

    The usual rules apply:

    -
      -
    • These files should be considered to be under the same licence agreement as - The FreeType Project itself. -
    • Don’t blame me if they don’t work on your system... but please do contact me and I’ll - try to sort things out. -
    • YMMV
    -
    +

    Build directories are placed in the top-level "objs" directory

    -

    Download

    -

    You can download: -

    -

    -
    +

    Enjoy :-)

    -

    How to use the Workspace and Project Files

    -

    These are some quick note that I’ve put together to help you get started. I -hope they make sense ;-)

    -

    The project files have been set up in such a manner than no changes are -necessary to either the Freetype2 source code, or any environment or VC settings -for things like include folders, etc... in other words, this is a very clean -implementation.

    -

    Note the following:

    -
      -
    • The workspace and project files should be put in your ‘freetype’ - directory. -
    • It is assumed that the sample applications are in a directory called - ‘demos’ in your ‘freetype’ directory.
    -

    When you open up the workspace, and perhaps also the project files within, -you might get some error message to do with Visual Source Safe... do not panic, -and simply ignore these warnings, choose not to use VSS in future, save the -workspace/project files, and all should be well.

    -

    The ‘freetype’ project build a static library. There are four build -options, which will result in the following being generated into the ‘lib’ -directory in your ‘freetype’ directory):

    -
      -
    • freetype200b8.lib - release build; single-threaded -
    • freetype200b8_D.lib - debug build; single-threaded -
    • freetype200b8MT.lib - release build; multi-threaded -
    • freetype200b8MT_D.lib - debug build; multi-threaded
    -

    The ‘ftdump’, ‘ftstring’, and ‘ftview’ projects build the respective sample -applications. The binaries are placed into the ‘bin’ directory in the ‘demos’ -directory. Note that if you build the debug versions, the filenames have a ‘_D’ -suffix.

    -
    -
    - + + \ No newline at end of file Index: xc/extras/freetype2/docs/BUGS diff -u /dev/null xc/extras/freetype2/docs/BUGS:1.1.1.2 --- /dev/null Fri Jan 18 15:21:44 2002 +++ xc/extras/freetype2/docs/BUGS Mon Jan 14 11:52:02 2002 @@ -0,0 +1,269 @@ +List of known FreeType 2 Bugs +----------------------------- + +"Identifier" is a string to uniquely identify the bug. A more detailed +description of the bug is found below the table of opened bugs. + +"Date" is the date when the bug was first reported or entered in this +document. Dates are in _European_ format, i.e day/month/year. + +"Opened By" is the name of the person who first spotted the bug. Note that +we can use abbreviations here, like: + + "David" for David Turner + "Werner" for Werner Lemberg + etc. + +"Reproduceable" indicates whether the bug could be reproduced by the +development team or not (it can be specific to a given platform), whether it +always happens, or only sporadically, etc. + + + +I. Opened bugs +============== + + +Identifier Date Opened by Reproduceable +------------------------------------------------------------------------------ +NO-CID-CMAPS 13-09-2001 David always +BAD-TT-RENDERING 12-09-2001 Paul Pedriana ? +BAD-THIN-LINES 13-09-2001 David ? +NOT-WINDOWS-METRICS 07-10-2001 David always +ADVANCED-COMPOSITES 25-10-2001 George Williams always + +--------------------END-OF-OPENED-BUGS-TABLE---------------------------------- + + + +II. Table of closed bugs +======================== + + +Identifier Date Closed by Closure date +------------------------------------------------------------------------------ +BAD-TTNAMEID.H 12-09-2001 Antoine N/A +BAD-T1-CHARMAP 15-06-2001 David 2.0.5 +BAD-UNIXXXX-NAMES 30-07-2001 David 2.0.5 +GLYPH_TO_BITMAP-BUG 05-12-2001 David 05-12-2001 +AUTOHINT-NO-SBITS 13-09-2001 David 2.0.6 +TT-GLYPH-CRASH 01-01-2002 David 2.0.6 +T1-FONT-CRASH 01-01-2002 David 2.0.6 +BAD-ADVANCES 30-11-2001 David 2.0.6 +GLYPH-TO-BITMAP-BUG 15-12-2001 David 2.0.6 +--------------------END-OF-CLOSED-BUGS-TABLE---------------------------------- + + + +III. Bug descriptions +===================== + +--- START OF OPENED BUGS --- + + +NO-CID-CMAPS + + Not exactly a bug, but the CFF font driver doesn't build a Unicode charmap + from the contents of font files, which prevents efficiently using fonts in + this format. + + + +BAD-TT-RENDERING + + According to Paul Pedriana , there is a rather + important difference between the rendering of TrueType-hinted glyphs of + current FT2 and old betas. + + Tests and comparisons show a _major_ discrepancy of monochrome truetype + bytecode-hinted glyphs! Something seems to be really broken here! + + Some of this has been fixed in 2.0.6; there was a bug in the TrueType + loader that prevented it from loading composites correctly. However, + there are still _subtle_ differences between FT1 and FT2 when it comes to + monochrome TrueType-hinted glyphs (the major differences are gone though !!) + + + +BAD-THIN-LINES + + It seems that the anti-aliased renderer in FreeType has problems rendering + extremely thin straight lines correctly, at least when using the + FT_Outline_Render() function. + + + +NOT-WINDOWS-METRICS + + FreeType doesn't always return the same metrics as Windows for ascender, + descender, and text height, depending on character pixel sizes. A lot of + testing on Windows is needed to debug this properly. It might be due to a + rounding bug when computing the "x_scale" and "y_scale" values. + + + +ADVANCED-COMPOSITES + + Provided by George Williams : + + I notice that truetype/ttgload.c only supports Apple's definition of + offsets for composite glyphs. Apple and Microsoft behave differently if + there is a scale factor. OpenType defines some bits to disambiguate. + + (A problem in both 2.0.4 and 2.0.5.) + + Apple says (http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html) that if + flags&ARGS_ARE_XY is set then the offsets should be scaled by the scale + factors (as you have done), but they also say something very cryptic + about what happens when the component is rotated at 45° (which you do + not support) -- See the "Important" note at the bottom. + + The old truetype spec from Microsoft did not mention this. The OpenType + spec (http://www.microsoft.com/typography/otspec/glyf.htm, + http://partners.adobe.com/asn/developer/opentype/glyf.html) defines two + new bits to disambiguate: + + SCALED_COMPONENT_OFFSET 11 + Composite designed to have the component offset scaled (designed for + Apple rasterizer) + + UNSCALED_COMPONENT_OFFSET 12 + Composite designed not to have the component offset scaled (designed + for the Microsoft TrueType rasterizer) + + Perhaps you could add a load_flag to allow the user to define the + default setting? + + David says: + + Wow, I was not even aware of this, it will probably take a little time + to implement since I don't have any font that implement these + "features", and also because I believe that we're running out of bits + for "load_flag", some other way to set preferences is probably needed. + + + +--- END OF OPENED BUGS --- + + +BAD-TTNAMEID.H + + The file "ttnameid.h" contains various constant macro definitions + corresponding to important values defined by the TrueType specification. + + Joe Man reports that: + + According to the information from TrueType v1.66: + + Platform ID = 3 (Microsoft) + the Encoding ID of GB2312 = 4 + the Encoding ID of big5 = 3 + + However, I have found that in ttnameid.h: + + TT_MS_ID_GB2312 = 3 + TT_MS_ID_BIG_5 = 4 + + Which one is correct? + + Antoine replied that this was a bug in the TT 1.66 specification, and that + FreeType followed the most recent TrueType/OpenType specification here. + + +AUTOHINT-SBITS + + When trying to load a glyph, with the auto-hinter activated (i.e., when + using FT_LOAD_FORCE_AUTOHINT, or when the font driver doesn't provide its + own hinter), embedded bitmaps are _never_ loaded, unlike the default + behaviour described by the API specification. + + This seems to be a bug in FT_Load_Glyph(), but there is no way to solve it + efficiently without making a few important internal changes to the + library's design (more importantly, to the font driver interface). + + This has been corrected with a hack in FT_Load_Glyph(). More important + internal changes should help get rid of it with a clean solution in a + further release like FreeType 2.1. + + +BAD-T1-CHARMAP + + Type1 driver doesn't read "cacute" and "lslash" characters from iso8859-2 + charset. Those characters are mapped as MAC-one in glnames.py, so they + cannot be shown in Adobe Type1 fonts. + + (This was due to a bug in the "glnames.py" script used to generate the + table of glyph names in 'src/psaux/pstables.h'.) + + +BAD-UNIXXXX-NAMES + + Glyph names like uniXXXX are not recognized as they should be. It seems + that code in psmodule.c for uniXXXX glyph names was never tested. The + patch is very simple. + + (A simple bug that was left un-noticed due to the fact that I don't have + any Postscript font that use this convention, unfortunately.) + + +GLYPH_TO_BITMAP-BUG + + Calling FT_Glyph_To_Bitmap() sometimes modifies the original glyph + outline, creating weird alignment artefacts. + + This subtle bug was really in the file `src/smooth/ftsmooth.c'. + Basically, the outline was shifted before rendering it into a new bitmap + buffer. However, it wasn't properly un-shifted after that operation. + + This was only noticeable with certain glyphs or certain fonts; it crept in + a long time ago. + + The same bug has been fixed in src/raster/ftrender1.c also. + + + +TT-GLYPH-CRASH + + The library crashed when trying to load certain glyphs from an + automatically generated TrueType file (tt1095m_.ttf submitted by + Scott Long). + + It turned out that the font contained invalid glyph data (i.e. was broken), + but the TrueType glyph loader in FreeType wasn't paranoid enough, which + resulted in nasty memory overwrites all over the place. + + + +T1-FONT-CRASH + + The library crashed when trying to load the "Stalingrad Regular" face + from the "sadn.pfb" font file provided by Anthony Fok (and the Gnome-Print + team I believe). + + This was due to the fact that the font missed a full font name entry, + though boasted a family name and postscript name. The Type 1 face loader + didn't check for these pathetic cases and seg-faulted.. + + + +BAD-ADVANCES + + All scalable font drivers returned un-fitted glyph advances when + FT_LOAD_DEFAULT was used, which was incorrect. This problem was pretty + old but hadn't been spotted because all test programs actually + explicitely or implicitely (i.e. through the cache) rounded the advance + widths of glyphs.. + + This resulted in poor rendering of a number of client applications + however (it's strange to see they took so long to notice the devel team ?) + + + +GLYPH-TO-BITMAP-BUG + + the FT_Glyph_ToBitmap did incorrectly modify the source glyph in certain + cases, which resulted in random behaviour and bad text rendering. This was + spotted to bugs in both the monochrome and smooth rasterizer.. + + +=== end of file === Index: xc/extras/freetype2/docs/CHANGES diff -u /dev/null xc/extras/freetype2/docs/CHANGES:1.1.1.3 --- /dev/null Fri Jan 18 15:21:44 2002 +++ xc/extras/freetype2/docs/CHANGES Mon Jan 14 11:52:02 2002 @@ -0,0 +1,1449 @@ +LATEST CHANGES BETWEEN 2.0.6 and 2.0.5 + + I. IMPORTANT BUG FIXES + + - It wasn't possible to load embedded bitmaps when the auto-hinter was + used. This is now fixed. + + - The TrueType font driver didn't load some composites properly (the + sub-glyphs were slightly shifted, and this was only noticeable when + using monochrome rendering). + + - Various fixes to the auto-hinter. They merely improve the output of + sans-serif fonts. Note that there are still problems with serifed + fonts and composites (accented characters). + + - All scalable font drivers erroneously returned un-fitted glyph + advances when hinting was requested. This created problems for a + number of layout applications. This is a very old bug that got + undetected mainly because most test/demo program perform rounding + explicitly or implicitly (through the cache). + + - FT_Glyph_To_Bitmap() did erroneously modify the source glyph in + certain cases. + + - "glnames.py" still contained a bug that made FreeType return invalid + names for certain glyphs. + + + - the library crashed when loading certain Type 1 fonts like "sadn.pfb" + ("Stalingrad Normal"), which appear to contain pathetic font info + dictionaries.. + + - the TrueType glyph loader is now much more paranoid and checks everything + when loading a given glyph image. This was necessary to avoid problems + (crashes and/or memory overwrites) with broken fonts that came from a + really buggy automatic font converter.. + + + II. IMPORTANT UPDATES AND NEW FEATURES + + - Important updates to the Mac-specific parts of the library. + + - The caching sub-system has been completely re-designed, and its API + has evolved (the old one is still supported for backwards + compatibility). + + The documentation for it is not yet completed, sorry. For now, you + are encouraged to continue using the old API. However, the ftview + demo program in the ft2demos package has already been updated to use + the new caching functions. + + - A new charmap cache is provided too. See FTC_CMapCache(). This is + useful to perform character code -> glyph index translations quickly, + without the need for an opened FT_Face. + + - A NEW POSTSCRIPT HINTER module has been added to support native hints + in the following formats: PostScript Type 1, PostScript CID, and + CFF/CEF. + + Please test! Note that the auto-hinter produces better results for a + number of badly-hinted fonts (mostly auto-generated ones) though. + + - A memory debugger is now part of the standard FreeType sources. To + enable it, define FT_DEBUG_MEMORY in , and + recompile the library. + + Additionally, define the _environment_ variable FT_DEBUG_MEMORY and + run any program using FreeType. When the library is exited, a summary + of memory footprints and possible leaks will be displayed. + + This works transparently with _any_ program that uses FreeType. + However, you will need a lot of memory to use this (allocated blocks + are never released to the heap to detect double deletes easily). + + + III. MISCELLANEOUS + + - We are aware of subtle differences between the output of FreeType + versions 1 and 2 when it comes to monochrome TrueType-hinted glyphs. + These are most probably due to small differences in the monochrome + rasterizers and will be worked out in an upcoming release. + + + - We have decided to fork the sources in a "stable" branch, and an + "unstable" one, since FreeType is becoming a critical component of + many Unix systems. + + The next bug-fix releases of the library will be named 2.0.7, + 2.0.8, etc.. while the "2.1" branch will contain a version of the + sources where we'll start major reworking of the library's internals, + in order to produce FreeType 2.2.0 (or even 3.0) in a more distant + future. + + We also hope that this scheme will allow much more frequent releases + than in the past + + +============================================================================ + +LATEST CHANGES BETWEEN 2.0.5 and 2.0.4 + + NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE WILL + BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1) + + - Fixed a bug that made certain glyphs, like "Cacute", "cacute" and + "lslash" unavailable from Unicode charmaps of Postscript fonts. This + prevented the correct display of Polish text, for example. + + - The kerning table of Type 1 fonts was loaded by FreeType, when its AFM + file was attached to its face, but the FT_FACE_FLAG_HAS_KERNING bit + flags was not set correctly, preventing FT_Get_Kerning to return + meaningful values. + + - Improved SFNT (TrueType & OpenType) charmap support. Slightly better + performance, as well as support for the new formats defined by the + OpenType 1.3 specification (8, 10, and 12) + + - Fixed a serious typo in "src/base/ftcalc.c" which caused invalid + computations in certain rare cases, producing ugly artefacts. + + - The size of the EM square is computed with a more accurate algorithm + for Postscript fonts. The old one caused slight errors with embedded + fonts found in PDF documents. + + - Fixed a bug in the cache manager that prevented normal LRU behaviour + within the cache manager, causing unnecessary reloads (for FT_Face and + FT_Size objects only). + + - Added a new function named "FT_Get_Name_Index" to retrieve the glyph + index of a given glyph name, when found in a face. + + - Added a new function named "FT_Get_Postscript_Name" to retrieve the + "unique" Postscript font name of a given face. + + - Added a new public header size named FT_SIZES_H (or + ) providing new FT_Size-management functions: + FT_New_Size, FT_Activate_Size, FT_Done_Size. + + - Fixed a reallocation bug that generated a dangling pointer (and possibly + memory leaks) with Postscript fonts (in src/psaux/psobjs.c). + + - Many fixes for 16-bit correctness. + + - Removed many pedantic compiler warnings from the sources. + + - Added an Amiga build directory in "builds/amiga". + +============================================================================ + +LATEST CHANGES BETWEEN 2.0.4 and 2.0.3 + + - Fixed a rather annoying bug that was introduced in 2.0.3. Namely, the + font transformation set through FT_Set_Transform was applied twice to + auto-hinted glyphs, resulting in incorrectly rotated text output. + + - Fixed _many_ compiler warnings. FT2 should now compile cleanly with + Visual C++'s most pedantic warning level (/W4). It already compiled + fine with GCC and a few other compilers. + + - Fixed a bug that prevented the linear advance width of composite + TrueType glyphs to be correctly returned. + + - Fixed the Visual C++ project files located in "builds/win32/visualc" + (previous versions used older names of the library). + + - Many 32-bit constants have an "L" appended to their value, in order + to improve the 16-bitness of the code. Someone is actually trying to + use FT2 on an Atari ST machine! + + - Updated the "builds/detect.mk" file in order to automatically build + FT2 on AIX systems. AIX uses "/usr/sbin/init" instead of "/sbin/init" + and wasn't previously detected as a Unix platform by the FreeType build + system. + + - Updated the Unix-specific portions of the build system (new libtool + version, etc.). + + - The SFNT kerning lodaer now ensures that the table is sorted (since some + problem fonts do not meet this requirement). + +============================================================================ + +LATEST CHANGES BETWEEN 2.0.3 and 2.0.2 + + I. CHANGES TO THE MODULES / FONT DRIVERS + + - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix several + annoying artefacts, mainly: + + - Blue zone alignement of horizontal stems wasn't performed + correctly, resulting in artefacts like the "d" being placed one + pixel below the "b" in some fonts like Time New Roman. + + - Overshoot thresholding wasn't performed correctly, creating + unpleasant artefacts at large character pixel sizes. + + - Composite glyph loading has been simplified. This gets rid + of various artefacts where the components of a composite glyphs + were not correctly spaced. + + These are the last changes to the current auto-hinting module. A new + hinting sub-system is currently in the work in order to support native + hints in Type 1 / CFF / OpenType fonts, as well as globally improve + rendering. + + - The PCF driver has been fixed. It reported invalid glyph dimensions + for the fonts available on Solaris. + + - The Type 1, CID and CFF drivers have been modified to fix the + computation of the EM size. + + - The Type 1 driver has been fixed to avoid a dangerous bug that + crashed the library with non-conforming fonts (i.e. ones that do not + place the .notdef glyph at position 0). + + - The TrueType driver had a rather subtle bug (dangling pointer when + loading composite glyphs) that could crash the library in rare + occasions! + + + II. HIGH-LEVEL API CHANGES + + - The error code enumeration values have been changed. An error value + is decomposed in a generic error code, and a module number. see + for details. + + - A new public header file has been introduced, named FT_TRIGONOMETRY_H + (include/freetype/fttrig.h), providing trigonometric functions to + compute sines, cosines, arctangents, etc. with 16.16 fixed precision. + The implementation is based on the CORDIC algorithm and is very fast + while being sufficiently accurate. + + + III. INTERNALS + + - Added BeOS-specific files in the old build sub-system. Note that + no changes were required to compile the library with Jam. + + - The configuration is now capable of automatically detecting 64-bit + integers on a set of predefined compilers (GCC, Visual C++, Borland + C++) and will use them by default. This provides a small performance + boost. + + - A small memory leak that happened when opening 0-sized files (duh!) + have been fixed. + + - Fixed bezier stack depth bug in the routines provided by the + FT_BBOX_H header file. Also fixed similar bugs in the rasterizers. + + - The outline bounding box code has been rewritten to use direct + computations, instead of bezier sub-division, to compute the exact + bounding box of glyphs. This is slightly slower but more accurate. + + - The build system has been improved and fixed, mainly to support "make" + on Windows 2000 correctly, avoid problems with "make distclean" on non + Unix systems, etc. + + - Hexadecimal constants have been suffixed with "U" to avoid problems + with certain compilers on 64-bit platforms. + + - A new directory named "src/tools" has been created. It contains + Python scripts and simple unit test programs used to develop the + library. + + - The DocMaker tool has been moved from "docs" to "src/tools" and + has been updated with the following: + + - Now accepts the "--title=XXXX" or "-t XXXX" option from the + command line to set the project's name in the generated API + reference. + + - Now accepts the "--output=DIR" or "-o DIR" option from the + command line to set the output directory for all generated HTML + files. + + - Now accepts the "--prefix=XXXX" or "-p XXX" option from the + command line to set the file prefix to use for all generated HTML + files. + + - Now generates the current time/data on each generated page + in order to distinguish between versions. + + DocMaker can be used with other projects now, not only FT2 (e.g. MLib, + FTLayout, etc.). + +=========================================================================== + +LATEST CHANGES BETWEEN 2.0.2 and 2.0.1 + + + I. CHANGES TO THE MODULES / FONT DRIVERS + + - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to + avoid legal problems with the Apple patents. It seems that we + mistakenly turned this option on in previous releases of the + build. + + Note that if you want to use the bytecode interpreter in order + to get high-quality TrueType rendering, you will need to toggle + by hand the definition of the + TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro in the file + "include/freetype/config/ftoption.h". + + - The CFF driver has been improved by Tom Kacvinsky and Sander van + der Wal: + + * Support for "seac" emulation. + * Support for "dotsection". + * Support for retrieving glyph names through + "FT_Get_Glyph_Name". + + The first two items are necessary to correctly a large number of + Type 1 fonts converted to the CFF formats by Adobe Acrobat. + + - The Type 1 driver was also improved by Tom & others: + + * Better EM size computation. + * Better support for synthetic (transformed) fonts. + * The Type 1 driver returns the charstrings corresponding to + each glyph in the "glyph->control_data" field after a call to + "FT_Load_Glyph" (thanks Ha Shao). + + - Various other bugfixes, including the following: + + * Fixed a nasty memory leak in the Type 1 driver. + * The autohinter and the pcf driver used static writable data + when they shouldn't. + * Many casts were added to make the code more 64-bits safe. It + also now compiles on Windows XP 64-bits without warnings. + * Some incorrect writable statics were removed in the "autohint" + and "pcf" drivers. FreeType 2 now compiles on Epoc again. + + + II. CHANGES TO THE HIGH-LEVEL API + + - The library header files inclusion scheme has been changed. The + old scheme looked like: + + #include + #include + #include + #include + + Now you should use: + + #include + #include FT_FREETYPE_H + #include FT_GLYPH_H + #include FT_CACHE_H + #include FT_CACHE_IMAGE_H + + NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS + RELEASE. HOWEVER, WE DO NOT GUARANTEE THAT THIS WILL STILL BE + TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1). + + The file is used to define the header filename + macros. The complete and commented list of macros is available + in the API reference under the section name "Header File Macros" + in Chapter I. + + For more information, see section I of the following document: + + http://www.freetype.org/ + freetype2/docs/tutorial/step1.html + + or + + http://freetype.sourceforge.net/ + freetype2/docs/tutorial/step1.html + + - Many, many comments have been added to the public source file in + order to automatically generate the API Reference through the + "docmaker.py" Python script. + + The latter has been updated to support the grouping of sections + in chapters and better index sort. See: + + http://www.freetype.org/freetype2/docs/reference/ft2-toc.html + + + III. CHANGES TO THE BUILD PROCESS + + - If you are not building FreeType 2 with its own build system + (but with your own Makefiles or project files), you will need to + be aware that the build process has changed a little bit. + + You don't need to put the "src" directory in the include path + when compiling any FT2 component. Instead, simply put the + component's directory in the current include path. + + So, if you were doing something like: + + cc -c -Iinclude -Isrc src/base/ftbase.c + + change the line to: + + cc -c -Iinclude -Isrc/base src/base/ftbase.c + + If you were doing something like: + + cd src/base + cc -c -I../../include -I.. ftbase.c + + change it to: + + cd src/base + cc -c -I../../include ftbase.c + + +====================================================================== + +LATEST CHANGES BETWEEN 2.0.1 and 2.0 + + 2.0.1 introduces a few changes: + + - Fixed many bugs related to the support of CFF / OpenType fonts. + These formats are now much better supported though there is + still work planned to deal with charset tables and PDF-embedded + CFF files that use the old "seac" command. + + - The library could not be compiled in debug mode with a very + small number of C compilers whose pre-processors didn't + implement the "##" directive correctly (i.e. per se the ANSI C + specification!) An elegant fix was found. + + - Added support for the free Borland command-line C++ Builder + compiler. Use "make setup bcc32". Also fixed a few source + lines that generated new warnings with BCC32. + + - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of + a conic Bezier arc. + + - Updated the INSTALL file to add IDE compilation. + + - Other minor bug fixes, from invalid Type 1 style flags to + correct support of synthetic (obliqued) fonts in the + auto-hinter, better support for embedded bitmaps in a SFNT font. + + - Fixed some problems with "freetype-config". + + Finally, the "standard" scheme for including FreeType headers is now + gradually changing, but this will be explained in a later release + (probably 2.0.2). + + And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi + for their contributions! + + +====================================================================== + +CHANGES BETWEEN beta8 and 2.0 + + - Changed the default installation path for public headers from + "include/freetype" to "include/freetype2". + + Also added a new "freetype-config" that is automatically generated + and installed on Unix and Cygwin systems. The script itself is + used to retrieve the current install path, C compilation flags as + well as linker flags. + + - Fixed several small bugs: + + * Incorrect max advance width for fixed-pitch Type 1 fonts. + * Incorrect glyph names for certain TrueType fonts. + * The glyph advance was not copied when FT_Glyph_To_Bitmap was + called. + * The linearHoriAdvance and linerVertAdvance fields were not + correctly returned for glyphs processed by the auto-hinter. + * "type1z" renamed back to "type1"; the old "type1" module has + been removed. + + - Revamped the build system to make it a lot more generic. This + will allow us to re-use nearly un-modified in lots of other + projects (including FreeType Layout). + + - Changed "cid" to use "psaux" too. + + - Added the cache sub-system. See as well as + the sources in "src/cache". Note that it compiles but is still + untested for now. + + - Updated "docs/docmaker.py", a draft API reference is available at + http://www.freetype.org/ft2api.html. + + - Changed "type1" to use "psaux". + + - Created a new module named "psaux" to hold the Type 1 & Type 2 + parsing routines. It should be used by "type1", "cid", and "cff" + in the future. + + - Fixed an important bug in "FT_Glyph_Get_CBox". + + - Fixed some compiler warnings that happened since the TrueType + bytecode decoder was deactivated by default. + + - Fixed two memory leaks: + + * The memory manager (16 bytes) isn't released in + FT_Done_FreeType! + * Using custom input streams, the copy of the original stream was + never released. + + - Fixed the auto-hinter by performing automatic computation of the + "filling direction" of each glyph. This is done through a simple + and fast approximation, and seems to work (problems spotted by + Werner though). The Arphic fonts are a lot nicer though there are + still a lot of things to do to handle Asian fonts correctly. + + +====================================================================== + +BETA-8 (RELEASE CANDIDATE) CHANGES + + - Deactivated the TrueType bytecode interpreter by default. + + - Deactivated the "src/type1" font driver. Now "src/type1z" is used + by default. + + - Updates to the build system. We now compile the library correctly + under Unix system through "configure" which is automatically + called on the first "make" invocation. + + - Added the auto-hinting module! Fixing some bugs here and there. + + - Found some bugs in the composite loader (seac) of the Type1-based + font drivers. + + - Renamed the directory "freetype2/config" to "freetype2/builds" and + updated all relevant files. + + - Found a memory leak in the "type1" driver. + + - Incorporated Tom's patches to support flex operators correctly in + OpenType/CFF fonts. Now all I need is to support pure CFF and CEF + fonts to be done with this driver :-) + + - Added the Windows FNT/FON driver in "src/winfonts". For now, it + always "simulates" a Unicode charmap, so it shouldn't be + considered completed right now. + + It is there to be more a proof of concept than anything else + anyway. The driver is a single C source file, that compiles to 3 + Kb of code. + + I'm still working on the PCF/BDF drivers, but I'm too lazy to + finish them now. + + - CHANGES TO THE HIGH-LEVEL API + + * FT_Get_Kerning has a new parameter that allows you to select the + coordinates of the kerning vector (font units, scaled, scaled + + grid-fitted). + * The outline functions are now in and not + part of anymore. + * now contains declarations for + FT_New_Library, FT_Done_Library, FT_Add_Default_Modules. + * The so-called convenience functions have moved from "ftoutln.c" + to "ftglyph.c", and are thus available with this optional + component of the library. They are declared in + now. + * Anti-aliased rendering is now the default for FT_Render_Glyph + (i.e. corresponds to render_mode == 0 == ft_render_mode_normal). + To generate a monochrome bitmap, use ft_render_mode_mono, or the + FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char. + FT_LOAD_ANTI_ALIAS is still defined, but values to 0. + * now include , + solving a few headaches :-) + * The type FT_GlyphSlotRec has now a "library" field. + + - CHANGES TO THE "ftglyph.h" API + + This API has been severely modified in order to make it simpler, + clearer, and more efficient. It certainly now looks like a real + "glyph factory" object, and allows client applications to manage + (i.e. transform, bbox and render) glyph images without ever + knowing their original format. + + - Added support for CID-keyed fonts to the CFF driver. Maybe + support for pure CFF + CEF fonts should come in? + + - Cleaned up source code in order to avoid two functions with the + same name. Also changed the names of the files in "type1z" from + "t1XXXX" to "z1XXXX" in order to avoid any conflicts. + + "make multi" now works well :-) + + Also removed the use of "cidafm" for now, even if the source files + are still there. This functionality will certainly go into a + specific module. + + - ADDED SUPPORT FOR THE AUTO-HINTER + + It works :-) I have a demo program which simply is a copy of + "ftview" that does a `FT_Add_Module(library, + &autohinter_module_class)' after library initialization, and Type + 1 & OpenType/CFF fonts are now hinted. + + CID fonts are not hinted, as they include no charmap and the + auto-hinter doesn't include "generic" global metrics computations + yet. + + Now, I need to release this thing to the FreeType 2 source. + + - CHANGES TO THE RENDERER MODULES + + The monochrome and smooth renderers are now in two distinct + directories, namely "src/raster1" and "src/smooth". Note that the + old "src/renderer" is now gone. + + I ditched the 5-gray-levels renderers. Basically, it involved a + simple #define toggle in 'src/raster1/ftraster.c'. + + FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now + select the best renderer available, depending on render mode. If + the current renderer for a given glyph image format isn't capable + of supporting the render mode, another one will be found in the + library's list. This means that client applications do not need + to switch or set the renderers themselves (as in the latest + change), they'll get what they want automatically. At last. + + Changed the demo programs accordingly. + + - MAJOR INTERNAL REDESIGN: + + A lot of internal modifications have been performed lately on the + source in order to provide the following enhancements: + + * More generic module support: + + The FT_Module type is now defined to represent a handle to a + given module. The file contains the + FT_Module_Class definition, as well as the module-loading public + API. + + The FT_Driver type is still defined, and still represents a + pointer to a font driver. Note that FT_Add_Driver is replaced + by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc. + + * Support for generic glyph image types: + + The FT_Renderer type is a pointer to a module used to perform + various operations on glyph image. + + Each renderer is capable of handling images in a single format + (e.g. ft_glyph_format_outline). Its functions are used to: + + - transform an glyph image + - render a glyph image into a bitmap + - return the control box (dimensions) of a given glyph image + + The scan converters "ftraster.c" and "ftgrays.c" have been moved + to the new directory "src/renderer", and are used to provide two + default renderer modules. + + One corresponds to the "standard" scan-converter, the other to + the "smooth" one. + + he current renderer can be set through the new function + FT_Set_Renderer. + + The old raster-related function FT_Set_Raster, FT_Get_Raster and + FT_Set_Raster_Mode have now disappeared, in favor of the new: + + FT_Get_Renderer + FT_Set_Renderer + + See the file for more details. + + These changes were necessary to properly support different + scalable formats in the future, like bi-color glyphs, etc. + + * Glyph loader object: + + A new internal object, called a 'glyph loader' has been + introduced in the base layer. It is used by all scalable format + font drivers to load glyphs and composites. + + This object has been created to reduce the code size of each + driver, as each one of them basically re-implemented its + functionality. + + See and the FT_GlyphLoader type for + more information. + + * FT_GlyphSlot has new fields: + + In order to support extended features (see below), the + FT_GlyphSlot structure has a few new fields: + + linearHoriAdvance: + + This field gives the linearly scaled (i.e. scaled but + unhinted) advance width for the glyph, expressed as a 16.16 + fixed pixel value. This is useful to perform WYSIWYG text. + + linearVertAdvance: + This field gives the linearly scaled advance height for the + glyph (relevant in vertical glyph layouts only). This is + useful to perform WYSIWYG text. + + Note that the two above field replace the removed "metrics2" + field in the glyph slot. + + advance: + This field is a vector that gives the transformed advance for + the glyph. By default, it corresponds to the advance width, + unless FT_LOAD_VERTICAL_LAYOUT was specified when calling + FT_Load_Glyph or FT_Load_Char. + + bitmap_left: + This field gives the distance in integer pixels from the + current pen position to the left-most pixel of a glyph image + IF IT IS A BITMAP. It is only valid when the "format" field + is set to "ft_glyph_format_bitmap", for example, after calling + the new function FT_Render_Glyph. + + bitmap_top: + This field gives the distance in integer pixels from the + current pen position (located on the baseline) to the top-most + pixel of the glyph image IF IT IS A BITMAP. Positive values + correspond to upwards Y. + + loader: + This is a new private field for the glyph slot. Client + applications should not touch it. + + + * Support for transforms and direct rendering in FT_Load_Glyph: + + Most of the functionality found in has been + moved to the core library. Hence, the following: + + - A transform can be specified for a face through + FT_Set_Transform. this transform is applied by FT_Load_Glyph + to scalable glyph images (i.e. NOT TO BITMAPS) before the + function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM + was set in the load flags. + + - Once a glyph image has been loaded, it can be directly + converted to a bitmap by using the new FT_Render_Glyph + function. Note that this function takes the glyph image from + the glyph slot, and converts it to a bitmap whose properties + are returned in "face.glyph.bitmap", "face.glyph.bitmap_left" + and "face.glyph.bitmap_top". The original native image might + be lost after the conversion. + + - When using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph + and FT_Load_Char functions will call FT_Render_Glyph + automatically when needed. + + - Reformatted all modules source code in order to get rid of the + basic data types redifinitions (i.e. "TT_Int" instead of "FT_Int", + "T1_Fixed" instead of "FT_Fixed"). Hence the format-specific + prefixes like "TT_", "T1_", "T2_" and "CID_" are only used for + relevant structures. + + +====================================================================== + +OLD CHANGES FOR BETA 7 + + - bug-fixed the OpenType/CFF parser. It now loads and displays my + two fonts nicely, but I'm pretty certain that more testing is + needed :-) + + - fixed the crummy Type 1 hinter, it now handles accented characters + correctly (well, the accent is not always well placed, but that's + another problem..) + + - added the CID-keyed Type 1 driver in "src/cid". Works pretty well + for only 13 Kb of code ;-) Doesn't read AFM files though, nor the + really useful CMAP files.. + + - fixed two bugs in the smooth renderer (src/base/ftgrays.c). Thanks + to Boris Letocha for spotting them and providing a fix.. + + - fixed potential "divide by zero" bugs in ftcalc.c.. my god.. + + - added source code for the OpenType/CFF driver (still incomplete + though..) + + - modified the SFNT driver slightly to perform more robust header + checks in TT_Load_SFNT_Header. This prevents certain font files + (e.g. some Type 1 Multiple Masters) from being incorrectly + "recognized" as TrueType font files.. + + - moved a lot of stuff from the TrueType driver to the SFNT module, + this allows greater code re-use between font drivers + (e.g. TrueType, OpenType, Compact-TrueType, etc..) + + - added a tiny segment cache to the SFNT Charmap 4 decoder, in order + to minimally speed it up.. + + - added support for Multiple Master fonts in "type1z". There is also + a new file named which defines functions to + manage them from client applications. + + The new file "src/base/ftmm.c" is also optional to the engine.. + + - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) + + small bug fixes in FT_Load_Glyph, the "type1" driver, etc.. + + - a minor fix to the Type 1 driver to let them apply the font matrix + correctly (used for many oblique fonts..) + + - some fixes for 64-bit systems (mainly changing some FT_TRACE calls + to use %p instead of %lx).. Thanks to Karl Robillard + + - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) + + added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be + cropped when loaded from a file (maybe I should move the bitmap + cropper to the base layer ??). + + - changed the default number of gray levels of the smooth renderer + to 256 (instead of the previous 128). Of course, the human eye + can't see any difference ;-) + + - removed TT_MAX_SUBGLYPHS, there is no static limit on the number + of subglyphs in a TrueType font now.. + + +====================================================================== + +OLD CHANGES 16 May 2000 + + - tagged "BETA-6" in the CVS tree. This one is a serious release + candidate even though it doesn't incorporate the auto-hinter yet.. + + - various obsolete files were removed, and copyright header updated + + - finally updated the standard raster to fix the monochrome + rendering bug + re-enable support for 5-gray levels anti-aliasing + (suck, suck..) + + - created new header files, and modified sources accordingly: + + + - simple FreeType types, without the API + + - definition of memory-management macros + + - added the "DSIG" (OpenType Digital Signature) tag to + + + - light update/cleaning of the build system + changes to the sources + in order to get rid of _all_ compiler warnings with three + compilers, i.e: + + gcc with "-ansi -pedantic -Wall -W", Visual C++ with "/W3 /WX" and + LCC + + IMPORTANT NOTE FOR WIN32-LCC USERS: + | + | It seems the C pre-processor that comes with LCC is broken, it + | doesn't recognize the ANSI standard directives # and ## + | correctly when one of the argument is a macro. Also, something + | like: + | + | #define F(x) print##x + | + | F(("hello")) + | + | will get incorrectly translated to: + | + | print "hello") + | + | by its pre-processor. For this reason, you simply cannot build + | FreeType 2 in debug mode with this compiler.. + + - yet another massive grunt work. I've changed the definition of the + EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These now + take an argument, which is the function's return value type. + + This is necessary to compile FreeType as a DLL on Windows and + OS/2. Depending on the compiler used, a compiler-specific keyword + like __export or __system must be placed before (VisualC++) or + after (BorlandC++) the type.. + + Of course, this needed a lot of changes throughout the source code + to make it compile again... All cleaned up now, apparently.. + + Note also that there is a new EXPORT_VAR macro defined to allow + the _declaration_ of an exportable public (constant) + variable. This is the case of the raster interfaces (see + ftraster.h and ftgrays.h), as well as each module's interface (see + sfdriver.h, psdriver.h, etc..) + + - new feature: it is now possible to pass extra parameters to font + drivers when creating a new face object. For now, + this capability is unused. It could however prove to + be useful in a near future.. + + the FT_Open_Args structure was changes, as well as the internal + driver interface (the specific "init_face" module function has + now a different signature). + + - updated the tutorial (not finished though). + + - updated the top-level BUILD document + + - fixed a potential memory leak that could occur when loading + embedded bitmaps. + + - added the declaration of FT_New_Memory_Face in + , as it was missing from the public header + (the implementation was already in "ftobjs.c"). + + - the file has been seriously updated in order + to allow the automatic generation of error message tables. See the + comments within it for more information. + + - major directory hierarchy re-organisation. This was done for two + things: + + * first, to ease the "manual" compilation of the library by + requiring at lot less include paths :-) + + * second, to allow external programs to effectively access + internal data fields. For example, this can be extremely + useful if someone wants to write a font producer or a font + manager on top of FreeType. + + Basically, you should now use the 'freetype/' prefix for header + inclusion, as in: + + #include + #include + + Some new include sub-directories are available: + + a. the "freetype/config" directory, contains two files used to + configure the build of the library. Client applications should + not need to look at these normally, but they can if they want. + + #include + #include + + b. the "freetype/internal" directory, contains header files that + describes library internals. These are the header files that + were previously found in the "src/base" and "src/shared" + directories. + + + As usual, the build system and the demos have been updated to + reflect the change.. + + Here's a layout of the new directory hierarchy: + + TOP + include/ + freetype/ + freetype.h + ... + config/ + ftoption.h + ftconfig.h + ftmodule.h + + internal/ + ftobjs.h + ftstream.h + ftcalc.h + ... + + src/ + base/ + ... + + sfnt/ + psnames/ + truetype/ + type1/ + type1z/ + + + Compiling a module is now much easier, for example, the following + should work when in the TOP directory on an ANSI build: + + gcc -c -I./include -I./src/base src/base/ftbase.c + gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c + etc.. + + (of course, using -Iconfig/ if you provide system-specific + configuration files). + + - updated the structure of FT_Outline_Funcs in order to allow direct + coordinate scaling within the outline decomposition routine (this + is important for virtual "on" points with TrueType outlines) + + updates to the rasters to support this.. + + - updated the OS/2 table loading code in "src/sfnt/ttload.c" in + order to support version 2 of the table (see OpenType 1.2 spec) + + - created "include/tttables.h" and "include/t1tables.h" to allow + client applications to access some of the SFNT and T1 tables of a + face with a procedural interface (see FT_Get_Sfnt_Table()) + + updates to internal source files to reflect the change.. + + - some cleanups in the source code to get rid of warnings when + compiling with the "-Wall -W -ansi -pedantic" options in gcc. + + - debugged and moved the smooth renderer to "src/base/ftgrays.c" and + its header to "include/ftgrays.h" + + - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites + with up to 80 sub-glyphs !! Thanks to Werner + + +====================================================================== + +OLD CHANGES - 14-apr-2000 + + - fixed a bug in the TrueType glyph loader that prevented the + correct loading of some CJK glyphs in mingli.ttf + + - improved the standard Type 1 hinter in "src/type1" + + - fixed two bugs in the experimental Type 1 driver in "src/type1z" + to handle the new XFree86 4.0 fonts (and a few other ones..) + + - the smooth renderer is now complete and supports sub-banding to + render large glyphs at high speed. However, it is still located in + "demos/src/ftgrays.c" and should move to the library itself in the + next beta.. NOTE: The smooth renderer doesn't compile in + stand-alone mode anymore, but this should be fixed RSN.. + + - introduced convenience functions to more easily deal with glyph + images, see "include/ftglyph.h" for more details, as well as the + new demo program named "demos/src/ftstring.c" that demonstrates + its use + + - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1 + drivers (this is required by the auto-hinter to improve its + results). + + - changed the raster interface, in order to allow client + applications to provide their own span-drawing callbacks. However, + only the smooth renderer supports this. See "FT_Raster_Params" in + the file "include/ftimage.h" + + - fixed a small bug in FT_MulFix that caused incorrect transform + computation! + + - Note: The tutorial is out-of-date, grumpf.. :-( + + +====================================================================== + +OLD CHANGES - 12-mar-2000 + + - changed the layout of configuration files : now, all ANSI + configuration files are located in + "freetype2/config". System-specific over-rides can be placed in + "freetype2/config/". + + - moved all configuration macros to "config/ftoption.h" + + - improvements in the Type 1 driver with AFM support + + - changed the fields in the FT_Outline structure : the old "flags" + array is re-named "tags", while all ancient flags are encoded into + a single unsigned int named "flags". + + - introduced new flags in FT_Outline.flags (see + ft_outline_.... enums in "ftimage.h"). + + - changed outline functions to "FT_Outline_" syntax + + - added a smooth anti-alias renderer to the demonstration programs + + - added Mac graphics driver (thanks Just) + + - FT_Open_Face changed in order to received a pointer to a + FT_Open_Args descriptor.. + + - various cleanups, a few more API functions implemented (see + FT_Attach_File) + + - updated some docs + + +====================================================================== + +OLD CHANGES - 22-feb-2000 + + - introduced the "psnames" module. It is used to: + + o convert a Postscript glyph name into the equivalent Unicode + character code (used by the Type 1 driver(s) to synthetize on + the fly a Unicode charmap). + + o provide an interface to retrieve the Postscript names of the + Macintosh, Adobe Standard & Adobe Expert character codes. + (the Macintosh names are used by the SFNT-module postscript + names support routines, while the other two tables are used by + the Type 1 driver(s)). + + - introduced the "type1z" alternate Type 1 driver. This is a (still + experimental) driver for the Type 1 format that will ultimately + replace the one in "src/type1". It uses pattern matching to load + data from the font, instead of a finite state analyzer. It works + much better than the "old" driver with "broken" fonts. It is also + much smaller (under 15 Kb). + + - the Type 1 drivers (both in "src/type1" and "src/type1z") are + nearly complete. They both provide automatic Unicode charmap + synthesis through the "psnames" module. No re-encoding vector is + needed. (note that they still leak memory due to some code + missing, and I'm getting lazy). + + Trivial AFM support has been added to read kerning information but + wasn't exactly tested as it should ;-) + + - The TrueType glyph loader has been seriously rewritten (see the + file "src/truetype/ttgload.c". It is now much, much simpler as + well as easier to read, maintain and understand :-) Preliminary + versions introduced a memory leak that has been reported by Jack + Davis, and is now fixed.. + + - introduced the new "ft_glyph_format_plotter", used to represent + stroked outlines like Windows "Vector" fonts, and certain Type 1 + fonts like "Hershey". The corresponding raster will be written + soon. + + - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new + interface that uses a structure to describe the input stream, the + driver (if required), etc.. + + +TODO + + - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap + + - Add a function like FT_Load_Character( face, char_code, load_flags + ) that would really embbed a call to FT_Get_Char_Index then + FT_Load_Glyph to ease developer's work. + + - Update the tutorial! + + - consider adding support for Multiple Master fonts in the Type 1 + drivers. + + - Test the AFM routines of the Type 1 drivers to check that kerning + information is returned correctly. + + - write a decent auto-gridding component !! We need this to release + FreeType 2.0 gold ! + + +less urgent needs: + + - add a CFF/Type2 driver + - add a BDF driver + - add a FNT/PCF/HBF driver + - add a Speedo driver from the X11 sources + + +====================================================================== + +OLDER CHANGES - 27-jan-2000 + + - updated the "sfnt" module interface to allow several SFNT-based + drivers to co-exist peacefully + + - updated the "T1_Face" type to better separate Postscript font + content from the rest of the FT_Face structure. Might be used + later by the CFF/Type2 driver.. + + - added an experimental replacement Type 1 driver featuring advanced + (and speedy) pattern matching to retrieve the data from postscript + fonts. + + - very minor changes in the implementation of FT_Set_Char_Size and + FT_Set_Pixel_Sizes (they now implement default to ligthen the font + driver's code). + + +====================================================================== + +OLD MESSAGE + +This file summarizes the changes that occured since the last "beta" of +FreeType 2. Because the list is important, it has been divided into +separate sections: + +Table Of Contents: + + I High-Level Interface (easier !) + II Directory Structure + III Glyph Image Formats + IV Build System + V Portability + VI Font Drivers + + +---------------------------------------------------------------------- + +High-Level Interface: + + The high-level API has been considerably simplified. Here is how: + + - resource objects have disappeared. this means that face objects + can now be created with a single function call (see FT_New_Face + and FT_Open_Face) + + - when calling either FT_New_Face & FT_Open_Face, a size object + and a glyph slot object are automatically created for the face, + and can be accessed through "face->glyph" and "face->size" if + one really needs to. In most cases, there's no need to call + FT_New_Size or FT_New_Glyph. + + - similarly, FT_Load_Glyph now only takes a "face" argument + (instead of a glyph slot and a size). Also, it's "result" + parameter is gone, as the glyph image type is returned in the + field "face->glyph.format" + + - the list of available charmaps is directly accessible through + "face->charmaps", counting "face->num_charmaps" elements. Each + charmap has an 'encoding' field which specifies which known + encoding it deals with. Valid values are, for example : + + ft_encoding_unicode (for ASCII, Latin-1 and Unicode) + ft_encoding_apple_roman + ft_encoding_sjis + ft_encoding_adobe_standard + ft_encoding_adobe_expert + + other values may be added in the future. Each charmap still + holds its "platform_id" and "encoding_id" values in case the + encoding is too exotic for the current library + + +---------------------------------------------------------------------- + +Directory Structure: + + Should seem obvious to most of you: + + freetype/ + config/ -- configuration sub-makefiles + ansi/ + unix/ -- platform-specific configuration files + win32/ + os2/ + msdos/ + + include/ -- public header files, those to be included + directly by client apps + + src/ -- sources of the library + base/ -- the base layer + sfnt/ -- the sfnt "driver" (see the drivers section + below) + truetype/ -- the truetype driver + type1/ -- the type1 driver + shared/ -- some header files shared between drivers + + demos/ -- demos/tools + + docs/ -- documentation (a bit empty for now) + + +---------------------------------------------------------------------- + +Glyph Image Formats: + + Drivers are now able to register new glyph image formats within the + library. For now, the base layer supports of course bitmaps and + vector outlines, but one could imagine something different like + colored bitmaps, bi-color vectors or wathever else (Metafonts anyone + ??). + + See the file `include/ftimage.h'. Note also that the type + FT_Raster_Map is gone, and is now replaced by FT_Bitmap, which + should encompass all known bitmap types. + + Each new image format must provide at least one "raster", i.e. a + module capable of transforming the glyph image into a bitmap. It's + also possible to change the default raster used for a given glyph + image format. + + The default outline scan-converter now uses 128 levels of grays by + default, which tends to smooth many things. Note that the demo + programs have been updated significantly in order to display these.. + + +---------------------------------------------------------------------- + +Build system: + + You still need GNU Make to build the library. The build system has + been very seriously re-vamped in order to provide things like : + + - automatic host platform detection (reverting to 'config/ansi' if + it is not detected, with pseudo-standard compilation flags) + + - the ability to compile from the Makefiles with very different and + exotic compilers. Note that linking the library can be difficult + for some platforms. + + For example, the file `config/win32/lcclib.bat' is invoked by the + build system to create the ".lib" file with LCC-Win32 because its + librarian has too many flaws to be invoked directly from the + Makefile. + + Here's how it works: + + - the first time you type `make', the build system runs a series of + sub-makefiles in order to detect your host platform. It then dumps + what it found, and creates a file called `config.mk' in the + current directory. This is a sub-Makefile used to define many + important Make variables used to build the library. + + - the second time, the build system detects the `config.mk' then use + it to build the library. All object files go into 'obj' by + default, as well as the library file, but this can easily be + changed. + + Note that you can run "make setup" to force another host platform + detection even if a `config.mk' is present in the current + directory. Another solution is simply to delete the file, then + re-run make. + + Finally, the default compiler for all platforms is gcc (for now, + this will hopefully changed in the future). You can however specify + a different compiler by specifying it after the 'setup' target as + in: + + gnumake setup lcc on Win32 to use the LCC compiler + gnumake setup visualc on Win32 to use Visual C++ + + See the file `config//detect.mk' for a list of supported + compilers for your platforms. + + It should be relatively easy to write new detection rules files and + config.mk.. + + Finally, to build the demo programs, go to `demos' and launch GNU + Make, it will use the `config.mk' in the top directory to build the + test programs.. + + +---------------------------------------------------------------------- + +Portability: + + In the previous beta, a single FT_System object was used to + encompass all low-level operations like thread synchronisation, + memory management and i/o access. This has been greatly simplified: + + - thread synchronisation has been dropped, for the simple reason + that the library is already re-entrant, and that if you really + need two threads accessing the same FT_Library, you should + really synchronize access to it yourself with a simple mutex. + + - memory management is performed through a very simple object + called "FT_Memory", which really is a table containing a table + of pointers to functions like malloc, realloc and free as well + as some user data (closure). + + - resources have disappeared (they created more problems than they + solved), and i/o management have been simplified greatly as a + result. Streams are defined through FT_Stream objects, which can + be either memory-based or disk-based. + + Note that each face has its own stream, which is closed only + when the face object is destroyed. Hence, a function like + TT_Flush_Face in 1.x cannot be directly supported. However, if + you really need something like this, you can easily tailor your + own streams to achieve the same feature at a lower level (and + use FT_Open_Face instead of FT_New_Face to create the face). + + See the file "include/ftsystem.h" for more details, as well as the + implementations found in "config/unix" and "config/ansi". + + +---------------------------------------------------------------------- + +Font Drivers: + + The Font Driver interface has been modified in order to support + extensions & versioning. + + + The list of the font drivers that are statically linked to the + library at compile time is managed through a new configuration file + called `config//ftmodule.h'. + + This file is autogenerated when invoking `make modules'. This target + will parse all sub-directories of 'src', looking for a "module.mk" + rules file, used to describe the driver to the build system. + + Hence, one should call `make modules' each time a font driver is + added or removed from the `src' directory. + + Finally, this version provides a "pseudo-driver" in `src/sfnt'. This + driver doesn't support font files directly, but provides services + used by all TrueType-like font drivers. Hence, its code is shared + between the TrueType & OpenType font formats, and possibly more + formats to come if we're lucky.. + + +---------------------------------------------------------------------- + +Extensions support: + + The extensions support is inspired by the one found in 1.x. + + Now, each font driver has its own "extension registry", which lists + which extensions are available for the font faces managed by the + driver. + + Extension ids are now strings, rather than 4-byte tags, as this is + usually more readable.. + + Each extension has: + - some data, associated to each face object + - an interface (table of function pointers) + + An extension that is format-specific should simply register itself + to the correct font driver. Here is some example code: + + // Registering an extensions + // + FT_Error FT_Init_XXXX_Extension( FT_Library library ) + { + FT_DriverInterface* tt_driver; + + driver = FT_Get_Driver( library, "truetype" ); + if (!driver) return FT_Err_Unimplemented_Feature; + + return FT_Register_Extension( driver, &extension_class ); + } + + + // Implementing the extensions + // + FT_Error FT_Proceed_Extension_XXX( FT_Face face ) + { + FT_XXX_Extension ext; + FT_XXX_Extension_Interface ext_interface; + + ext = FT_Get_Extension( face, "extensionid", &ext_interface ); + if (!ext) return error; + + return ext_interface->do_it(ext); + } + +--- end of CHANGES --- Index: xc/extras/freetype2/docs/FTL.txt diff -u xc/extras/freetype2/docs/FTL.txt:1.1.1.1 xc/extras/freetype2/docs/FTL.txt:1.1.1.2 --- xc/extras/freetype2/docs/FTL.txt:1.1.1.1 Fri Dec 8 16:26:11 2000 +++ xc/extras/freetype2/docs/FTL.txt Mon Jan 14 11:52:03 2002 @@ -93,12 +93,12 @@ authorize others to exercise some or all of the rights granted herein, subject to the following conditions: - o Redistribution of source code must retain this license file - (`LICENSE.TXT') unaltered; any additions, deletions or changes - to the original files must be clearly indicated in - accompanying documentation. The copyright notices of the - unaltered, original files must be preserved in all copies of - source files. + o Redistribution of source code must retain this license file + (`FTL.TXT') unaltered; any additions, deletions or changes to + the original files must be clearly indicated in accompanying + documentation. The copyright notices of the unaltered, + original files must be preserved in all copies of source + files. o Redistribution in binary form must provide a disclaimer that states that the software is based in part of the work of the Index: xc/extras/freetype2/docs/PATENTS diff -u /dev/null xc/extras/freetype2/docs/PATENTS:1.1.1.1 --- /dev/null Fri Jan 18 15:21:45 2002 +++ xc/extras/freetype2/docs/PATENTS Sun Sep 9 22:55:42 2001 @@ -0,0 +1,27 @@ + + FreeType Patents Disclaimer + August 1999 + + + +WE HAVE DISCOVERED THAT APPLE OWNS SEVERAL PATENTS RELATED TO THE +RENDERING OF TRUETYPE FONTS. THIS COULD MEAN THAT THE FREE USE OF +FREETYPE MIGHT BE ILLEGAL IN THE USA, JAPAN, AND POSSIBLY OTHER +COUNTRIES, BE IT IN COMMERCIAL OR OPEN SOURCE PRODUCTS. + +FOR MORE DETAILS, WE STRONGLY ADVISE YOU TO GO TO THE FREETYPE +PATENTS PAGE AT THE FOLLOWING WEB ADDRESS: + + http://www.freetype.org/patents.htm + +WE WILL NOT PLACE INFORMATION IN THIS FILE AS THE SITUATION IS STILL +UNDETERMINED FOR NOW. AT THE TIME THESE LINES ARE WRITTEN, WE HAVE +CONTACTED APPLE'S LEGAL DEPARTMENT AND ARE STILL WAITING FOR THEIR +ANSWER ON THE SUBJECT. + +PLEASE READ THE `INSTALL' FILE TO SEE HOW TO DISABLE THE ENGINE'S +BYTECODE INTERPRETER IN ORDER TO BUILD A PATENT-FREE ENGINE, AT THE +COST OF RENDERING QUALITY. + + +--- end of PATENTS --- Index: xc/extras/freetype2/docs/TODO diff -u /dev/null xc/extras/freetype2/docs/TODO:1.1.1.1 --- /dev/null Fri Jan 18 15:21:45 2002 +++ xc/extras/freetype2/docs/TODO Mon Jan 14 11:52:03 2002 @@ -0,0 +1,9 @@ +Note that the list of known bugs for FreeType 2 is now located in the +document "docs/BUGS". + +Here is a list of items that need to be addressed in FreeType 2; they are +not exactly bugs, but should be considered though: + +* Add synthesized Unicode charmap processing to the CFF driver. + +* Implement stem3/counter hints properly in the Postscript hinter. Index: xc/extras/freetype2/docs/convntns.txt diff -u xc/extras/freetype2/docs/convntns.txt:1.1.1.1 xc/extras/freetype2/docs/convntns.txt:removed --- xc/extras/freetype2/docs/convntns.txt:1.1.1.1 Fri Dec 8 16:26:11 2000 +++ xc/extras/freetype2/docs/convntns.txt Fri Jan 18 15:21:45 2002 @@ -1,710 +0,0 @@ - - Conventions and Design in the FreeType 2 library - ------------------------------------------------ - - -Table of Contents - -Introduction - -I. Style and Formatting - - 1. Naming - 2. Declarations & Statements - 3. Blocks - 4. Macros - 5. Conventions - -II. Design conventions - - 1. Modularity and Components Layout - 2. Configuration and Debugging - -III. Usage conventions - - 1. Error handling - 2. Font File I/O - 3. Memory management - 4. Support for threaded environments - 5. Object Management - - - -Introduction -============ - -This text introduces the many conventions used within the FreeType 2 -library code. Please read it before trying any modifications or -extensions of the source code. - - - -I. Style and Formatting -======================= - -The following coding rules are extremely important to keep the -library's source code homogeneously. Keep in mind the following -points: - - - `Humans read source code, not machines' (Donald Knuth) - - The library source code should be as readable as possible, even - by non-C experts. With `readable', two things are meant: First, - the source code should be pleasant to the eye, with sufficient - whitespace and newlines, to not look like a boring stack of - characters stuck to each other. Second, the source should be - _expressive_ enough about its goals. This convention contains - rules that can help the source focus on its purpose, not on a - particular implementation. - - - `Paper is the _ultimate_ debugger' (David Turner :-) - - There is nothing like sheets of paper (and a large floor) to - help you understand the design of a library you're new to, or to - debug it. The formatting style presented here is targeted at - printing. For example, it is more than highly recommended to - never produce a source line that is wider than 78 columns. More - on this below. - - -1. Naming ---------- - - a. Long and expressive labels - - Never hesitate to use long labels for your types, variables, - etc.! Except maybe for things like very trivial types, the - longest is the best, as it increases the source's - _expressiveness_. Never forget that the role of a label is to - express the `function' of the entity it represents, not its - implementation! - - NOTE: Hungarian notation is NOT expressive, as it sticks the - `type' of a variable to its name. A label like `usFoo' - rarely tells the use of the variable it represents. - - And the state of a variable (global, static, dynamic) - isn't helpful anymore. - - Conclusion: Avoid Hungarian Notation in FreeType 2. - - - When forging a name with several nouns - (e.g. `number-of-points'), use an uppercase letter for the first - letter of each word (except the first), like: - - numberOfPoints - - You are also welcome to introduce underscores `_' in your - labels, especially when sticking large nouns together, as it - `airs' the code greatly. E.g.: - - `numberOfPoints' or `number_Of_Points' - - `IncredibleFunction' or `Incredible_Function' - - And finally, always put a capital letter after an underscore, - except in variable labels that are all lowercase: - - `number_of_points' is OK for a variable (_all_ lowercase label) - - `incredible_function' is NOT for a function! - ^ ^ - - `Microsoft_windows' is a *shame*! - ^ ^ - - `Microsoft_Windows' isn't really better, but at least its a - ^ ^ correct function label within this - convention ;-) - - b. Data types - - Try to use C types to the very least! Rely on internally - defined equivalent types instead. For example, not all - compilers agree on the sign of `char'; the size of `int' is - platform-specific, etc. - - There are equivalents to the most common types in the - `fttypes.h' public header file, like `FT_Short', `FT_UShort', - etc. Using the internal types will guarantee that you won't - need to replace every occurence of `short' or whatever when - compiling on a weird platform or with a weird compiler, and - there are many more than you could think of... - - c. Functions - - The name of a function should always begin with a capital - letter, as lowercase first letters are reserved for variables. - The name of a function should be, again, _expressive_! Never - hesitate to put long function names in your code: It will make - the code much more readable. - - Expressiveness doesn't necessarily imply lengthiness though; for - instance, reading various data types from a file stream is - performed using the following functions defined in the - `ftstream.c' file of the `base' module: - - FT_Get_Char(), FT_Get_Short(), FT_Get_Long(), etc. - - Which is somewhat more readable than: - - cget, sget, usget, lget, etc. - - d. Variables - - Variable names (at least meant for the public interface) should - always begin with a lowercase letter. Lowercase first letters - are reserved for variables in this convention, as it has been - already explained above. You are still welcome to use long and - expressive variable names. - - Something like `numP' can express a number of pixels, porks, - pancakes, and much more... Something like `num_points' won't. - - Unfortunately (mostly due to the lazyness of the developers), - short variable names are still used in many parts of the - library. Volunteers are highly welcome to improve this... - - As a side note, a field name of a structure counts as a variable - name too. - - -2. Declarations & Statements ----------------------------- - - Try to align declarations and assignments in columns, if it proves - logically. For example (taken from `ttraster.c'): - - struct TProfile_ - { - FT_F26Dot6 X; /* current coordinate during sweep */ - PProfile link; /* link to next profile - various purpose */ - PLong offset; /* start of profile's data in render pool */ - Int flow; /* profile orientation: asc/descending */ - Long height; /* profile's height in scanlines */ - Long start; /* profile's starting scanline */ - - UShort countL; /* number of lines to step before this */ - /* profile becomes drawable */ - - PProfile next; /* next profile in same contour, used */ - /* during drop-out control */ - }; - - instead of - - struct TProfile_ - { - FT_F26Dot6 X; /* current coordinate during sweep */ - PProfile link; /* link to next profile - various purpose */ - PLong offset; /* start of profile's data in render pool */ - Int flow; /* profile orientation: asc/descending */ - Long height; /* profile's height in scanlines */ - Long start; /* profile's starting scanline */ - UShort countL; /* number of lines to step before this */ - /* profile becomes drawable */ - PProfile next; /* next profile in same contour, used */ - /* during drop-out control */ - }; - - This comes from the fact that you are more interested in the field - and its function than in its type. - - Or: - - x = i + 1; - y += j; - min = 100; - - instead of - - x=i+1; - y+=j; - min=100; - - And don't hesitate to separate blocks of declarations with - newlines to `distinguish' logical sections. - - E.g., taken from an old source file, in the declarations of the - CMap loader: - - long n, num_SH; - unsigned short u; - long off; - unsigned short l; - long num_Seg; - unsigned short* glArray; - long table_start; - int limit, i; - - TCMapDir cmap_dir; - TCMapDirEntry entry_; - PCMapTable Plcmt; - PCMap2SubHeader Plcmsub; - PCMap4 Plcm4; - PCMap4Segment segments; - - instead of - - long n, num_SH; - unsigned short u; - long off; - unsigned short l; - long num_Seg; - unsigned short *glArray; - long table_start; - int limit, i; - TCMapDir cmap_dir; - TCMapDirEntry entry_; - PCMapTable Plcmt; - PCMap2SubHeader Plcmsub; - PCMap4 Plcm4; - PCMap4Segment segments; - - -3. Blocks ---------- - - Block separation is done with `{' and `}'. We do not use the K&R - convention which becomes only useful with an extensive use of - tabs. The `{' and its corresponding `}' should always be on the - same column. It makes it easier to separate a block from the rest - of the source, and it helps your _brain_ associate the accolades - easily (ask any Lisp programmer on the topic!). - - Use two spaces for the next indentation level. - - Never use tabs in FreeType 2 code; their widths may vary with - editors and systems. - - Example: - - if (condition_test) { - waow mamma; - I'm doing K&R format; - just like the Linux kernel; - } else { - This test failed poorly; - } - - should be rather formatted as - - if ( condition_test ) - { - This code isn't stuck to the condition; - read it on paper, you will find it more; - pleasant to the eye; - } - else - { - Of course, this is a matter of taste; - This is just the way it is in this convention; - and you should follow it to be homogenuous with; - the rest of the FreeType code; - } - - -4. Macros ---------- - - Macros should be made of uppercase letters. If a macro label is - forged from several words, it is possible to only uppercasify the - first word, using an underscore to separate the nouns. This is - used in in some files for macros like - - GET_UShort(), USE_Stream(), etc. - - The role of macros used throughout the engine is explained later - in this document. - - -5. Conventions --------------- - - Currently, FreeType 2 source code uses the following formatting - rules: - - . The data type is separated with two spaces from the variable, - structure, or function name: - - const char foo; - - Usually, the `*' operator is concatenated to the data type: - - FT_Int* pointer; - - However, when declaring resp. defining an `output' parameter - (i.e. a pointer which will be assigned by the function), the - last `*' must be placed on the right in order to denote this, as - in: - - FT_New_Face( FT_Library library, - FT_Face *aface ); - - where the `*' is used to indicate that `aface' is returned. In - most cases, the name of such an output variable starts with `a' - or `an' (`aface' instead of `face', `anlru' instead of `lru', - etc.), following the English rules of the indefinite article. - - . As mentioned above, multiple declarations are vertically - aligned: - - FT_Short foo; - FT_Long bar; - FT_GlyphSlot slot; - - . Declarations are separated with two blank lines from the - following code. This intentionally disturbs the code flow to - make variable definitions more visible. - - { - char x, y; - - - x = 3; - y = 5; - } - - . An opening parenthesis follows a function directly without - space; after a built-in C keyword, one space is used: - - x = sin( y ); - y = sizeof ( long ); - - Except for casts, empty parameters, and the closing semicolon, - parentheses are surrounded with space: - - x = (char*)( foo + bar ); - y = rand(); - - . Binary operators are surrounded by spaces; unary operators have - no space after it: - - x = ( 3 + 4 ) / ( 7 - 2 ); - y = -( 3 + 4 ) * 7; - - . Array arguments are not surrounded by spaces: - - array[3] = array[1] + array[2]; - array[4] = array[1 + 3]; - - . Comma and semicolon have only space at the right side: - - if ( x = 0; x < y; x++, y-- ) - do_something(); - - Exception: - - for (;;) - { - ... - - . Don't use - - if ( x == y ) a = b; - - but - - if ( x == y ) - a = b; - - in general. - - . Preprocessor directives are never indented and always start in - the first column. - - . All function/structure/variable definitions start at column - three. - - . All full-line comments (except the header of a file) start at - column three (even comments for preprocessor directives). - - . Labels are sticking out two positions to the left: - - switch ( x ) - { - case 1: - do_something(); - break; - default: - do_nothing(); - break; - } - - - -II. Design Conventions -====================== - - -1. Modularity and Components Layout ------------------------------------ - - The FreeType 2 engine has been designed with portability in mind. - This implies the ability to compile and run it on a great variety - of systems and weird environments, unlike many packages where the - word strictly means `runs on a bunch of Unix-like systems'. We - have thus decided to stick to the following restrictions: - - - The C version is written entirely in ANSI C. - - - The library, if compiled with gcc, doesn't produce any warning - with the `-ansi -pedantic' flags. Other compilers with better - checks may produce ANSI warnings -- please report. - - (NOTE: It can of course be compiled by an `average' C compiler, - and even by a C++ one.) - - - It only requires in its simplest form an ANSI libc to compile, - and no utilities other than a C preprocessor, compiler, and - linker. - - - It consists of modules, starting with a `base' module which - provides the API, some auxiliary modules used by the font - drivers, the font driver modules itself, and the rasterizer - modules. - - - The very low-level components can be easily replaced by - system-specific ones that do not rely on the standard libc. - These components deal mainly with i/o, memory, and mutex - operations. - - - A client application only needs to include one header file named - `freetype.h' to use the engine. Other public header files like - `ftglyph.h' or `ftimage.h' provide functional extensions. - - - All configuration options are gathered in two files, - `ftconfig.h' and `ftoption.h'. The former contains the - processor and OS specific configuration options, while the - latter treats options that may be enabled or disabled by the - user to enable and disable various features. - - -2. Configuration and Debugging ------------------------------- - - Configuration is covered by the `BUILD' documentation file. - - Debugging is controlled by two macros in `ftoption.h', - FT_DEBUG_LEVEL_ERROR and FT_DEBUG_LEVEL_TRACE; don't use them in - code to be released. Check the source code of the `ftview.c' - demonstration program (in the `ft2demos' package) how tracing can - be used and activated. - - - -III. Usage conventions -====================== - - -1. Error Handling ------------------ - - Most functions directly return an error code. A return value of 0 - (FT_Err_Ok) means that no error occured, while a non-zero other - value indicates a failure of any kind. - - We use code like this in FreeType 2: - - if ( ( rc = Perform_Action_1( parms_of_1 ) ) || - ( rc = Perform_Action_2( parms_of_2 ) ) || - ( rc = Perform_Action_3( parms_of_3 ) ) ) - goto Fail; - - which is better but uses assignments within expressions, which are - always delicate to manipulate in C (the risk of writing `==' - exists, and would go unnoticed by a compiler). Moreover, the - assignments are a bit redundant and don't express much things - about the actions performed (they only speak of the error - management issue). - - That is why some macros have been defined for the most frequently - used functions. They relate to low-level routines that are called - very often (mainly i/o and memory handling functions). Each macro - produces an implicit assignment to a variable called `error' and - can be used instead as a simple function call. Example: - - if ( PERFORM_Action_1( parms_of_1 ) || - PERFORM_Action_2( parms_of_2 ) || - PERFORM_Action_3( parms_of_3 ) ) - goto Fail; - - with - - #define PERFORM_Action_1( parms_1 ) \ - ( error = Perform_Action_1( parms_1 ) ) - #define PERFORM_Action_2( parms_1 ) \ - ( error = Perform_Action_2( parms_1 ) ) - #define PERFORM_Action_3( parms_1 ) \ - ( error = Perform_Action_3( parms_1 ) ) - - defined in some header file. - - There, the developer only needs to define a local `error' variable - and use the macros directly in the code, without caring about the - actual error handling performed. Another advantage is that the - structure of source files remain very similar, even though the - error handling may be different. - - This convention is very close to the use of exceptions in - languages like C++, Pascal, Java, etc. where the developer - focuses on the actions to perform, and not on every little error - checking. - - -2. Font File I/O ----------------- - - a. Streams - - The engine uses `streams' to access the font files. A stream is - a structure containing information used to access files through - a system-specific i/o library. - - The default implementation of streams uses the ANSI libc i/o - functions. However, for the sake of embedding in light systems - and independence of a complete C library, it is possible to - re-implement the component for a specific system or OS, letting - it use system calls. - - b. Frames - - TrueType is tied to the big-endian format, which implies that - reading shorts or longs from the font file may need conversions - depending on the target processor. To be able to easily detect - read errors and allow simple conversion calls or macros, the - engine is able to access a font file using `frames'. - - A frame is simply a sequence of successive bytes taken from the - input file at the current position. A frame is pre-loaded into - memory by a call to the `ACCESS_Frame()' macro. - - It is then possible to read all sizes of data through the - `GET_xxx()' macros described above. - - When all important data is read, the frame can be released by a - call to `FORGET_Frame()'. - - The benefits of frames are various. Consider these two - approaches at extracting values: - - if ( ( error = Read_Short( &var1 ) ) || - ( error = Read_Long ( &var2 ) ) || - ( error = Read_Long ( &var3 ) ) || - ( error = Read_Short( &var4 ) ) ) - - return FAILURE; - - and - - /* Read the next 16 bytes */ - if ( ACCESS_Frame( 16L ) ) - return error; /* The Frame could not be read */ - - var1 = GET_Short(); /* extract values from the frame */ - var2 = GET_Long(); - var3 = GET_Long(); - var4 = GET_Short(); - - FORGET_Frame(); /* release the frame */ - - In the first case, there are four error assignments with four - checks of the file read. This unnecessarily increases the size - of the generated code. Moreover, you must be sure that `var1' - and `var4' are short variables, `var2' and `var3' long ones, if - you want to avoid bugs and/or compiler warnings. - - In the second case, you perform only one check for the read, and - exit immediately on failure. Then the values are extracted from - the frame, as the result of function calls. This means that you - can use automatic type conversion; there is no problem if - e.g. `var1' and `var4' are longs, unlike previously. - - Finally, frames are ideal when you are using memory-mapped - files, as the frame is not really `pre-loaded' and never uses - any `heap' space. - - IMPORTANT: You CANNOT nest several frame accesses. There is - only one frame available at a time for a specific - instance. - - It is also the programmer's responsibility to never - extract more data than was pre-loaded in the frame! - (But you usually know how many values you want to - extract from the file before doing so). - - -3. Memory Management --------------------- - - The library now has a component which uses an interface similar to - malloc()/free(). - - * FT_Alloc() - - To be used like malloc(), except that it returns an error code, - not an address. Its arguments are the size of the requested - block and the address of the target pointer to the `fresh' - block. An error code is returned in case of failure (and this - will also set the target pointer to NULL), 0 in case of success. - - FT_Alloc() internally calls the ft_alloc() function defined in - an FT_Memory object. All error checking is done by FT_Alloc() - itself so that ft_alloc() directly calls malloc(). - - * FT_Realloc() - - Similar to FT_Alloc(); it calls realloc() by default. - - * FT_Free() - - As you may have already guessed, FT_Free() is FT_Alloc()'s - counterpart. It takes as argument the _target pointer's - address_! You should _never_ pass the block's address directly, - i.e. the pointer, to FT_Free(). - - Similar to FT_Alloc(), FT_Free() does the necessary error - checking and calls free() by default. - - As the pointers addresses needed as arguments are typed `void**', - ftmemory.h provides some macros to help use the above functions - more easily, these are: - - MEM_Alloc() A version of FT_Alloc() that casts the argument - pointer to (void**). Similar functions are - MEM_Alloc_Array(), MEM_Realloc(), and - MEM_Realloc_Array() - - ALLOC() Same as MEM_Alloc(), but with an assignment to a - variable called `error'. See the section `error - handling' above for more info on this. Similar - functions are REALLOC(), ALLOC_ARRAY(), and - REALLOC_ARRAY(). - - FREE() A version of FT_Free() that casts the argument - pointer to (void**). - - MEM_Set() An alias for `memset()', which can be easily - changed to anything else if you wish to use a - different memory manager than the functions - provided by the ANSI libc. - - MEM_Copy() An alias of `memcpy()' or `bcopy()' used to move - blocks of memory. You may change it to something - different if necessary (e.g. not using libc). - - MEM_Move() An alias of `memmove().' Change its definition if - necessary. - - -4. Support for threaded environments ------------------------------------- - - Thread synchronisation has been dropped in FreeType 2. The - library is already re-entrant, and if you really need two threads - accessing the same FT_Library object, you should synchronize - access to it yourself with a simple mutex. - - ---- end of convntns.txt --- Index: xc/extras/freetype2/docs/docmaker.py diff -u xc/extras/freetype2/docs/docmaker.py:1.1.1.2 xc/extras/freetype2/docs/docmaker.py:removed --- xc/extras/freetype2/docs/docmaker.py:1.1.1.2 Tue May 15 23:45:45 2001 +++ xc/extras/freetype2/docs/docmaker.py Fri Jan 18 15:21:45 2002 @@ -1,1507 +0,0 @@ -#!/usr/bin/env python -# -# DocMaker is a very simple program used to generate HTML documentation -# from the source files of the FreeType packages. -# -# I should really be using regular expressions to do this, but hey, -# i'm too lazy right now, and the damn thing seems to work :-) -# - David -# - -import fileinput, sys, string, glob - -html_header = """\ - -
    -FreeType 2 API Reference - - -
    - -

    FreeType 2 API Reference

    -""" - -html_footer = """\ - -""" - -section_title_header = "

    " -section_title_footer = "

    " - -code_header = "
    "
    -code_footer = "
    " - -para_header = "

    " -para_footer = "

    " - -block_header = "
    " -block_footer = "

    " - -description_header = "
    " -description_footer = "

    " - -marker_header = "
    " -marker_inter = "
    " -marker_footer = "
    " - -source_header = "
    "
    -source_footer = "

    " - -chapter_header = "

    " -chapter_inter = "

      " -chapter_footer = "
    " - -current_section = None - - -# This function is used to sort the index. It's a simple lexicographical -# sort, except that it places capital letters before small ones. -# -def index_sort( s1, s2 ): - if not s1: - return -1 - - if not s2: - return 1 - - l1 = len( s1 ) - l2 = len( s2 ) - m1 = string.lower( s1 ) - m2 = string.lower( s2 ) - - for i in range( l1 ): - if i >= l2 or m1[i] > m2[i]: - return 1 - - if m1[i] < m2[i]: - return -1 - - if s1[i] < s2[i]: - return -1 - - if s1[i] > s2[i]: - return 1 - - if l2 > l1: - return -1 - - return 0 - - -# sort input_list, placing the elements of order_list in front -# -def sort_order_list( input_list, order_list ): - new_list = order_list[:] - for id in input_list: - if not id in order_list: - new_list.append( id ) - return new_list - - -# The FreeType 2 reference is extracted from the source files. These contain -# various comment blocks that follow one of the following formats: -# -# /************************** -# * -# * FORMAT1 -# * -# * -# * -# * -# *************************/ -# -# /**************************/ -# /* */ -# /* FORMAT2 */ -# /* */ -# /* */ -# /* */ -# /* */ -# -# /**************************/ -# /* */ -# /* FORMAT3 */ -# /* */ -# /* */ -# /* */ -# /* */ -# /**************************/ -# -# Each block contains a list of markers; each one can be followed by -# some arbitrary text or a list of fields. Here's an example: -# -# -# MyStruct -# -# -# this structure holds some data -# -# -# x :: horizontal coordinate -# y :: vertical coordinate -# -# -# This example defines three markers: 'Struct', 'Description' & 'Fields'. -# The first two markers contain arbitrary text, while the last one contains -# a list of fields. -# -# Each field is simple of the format: WORD :: TEXT... -# -# Note that typically each comment block is followed by some source -# code declaration that may need to be kept in the reference. -# -# Note that markers can alternatively be written as "@MARKER:" -# instead of "". All marker identifiers are converted to -# lower case during parsing in order to simply sorting. -# -# We associate with each block the following source lines that do not -# begin with a comment. For example, the following: -# -# /********************************** -# * -# * blabla -# * -# */ -# -# bla_bla_bla -# bilip_bilip -# -# /* - this comment acts as a separator - */ -# -# blo_blo_blo -# -# -# will only keep the first two lines of sources with -# the "blabla" block. -# -# However, the comment will be kept, with following source lines -# if it contains a starting '#' or '@' as in: -# -# /*@.....*/ -# /*#.....*/ -# /* @.....*/ -# /* #.....*/ -# - - - -############################################################################# -# -# The DocCode class is used to store source code lines -# -# 'self.lines' contains a set of source code lines that will -# be dumped as HTML in a
     tag.
    -#
    -#   The object is filled line by line by the parser; it strips the
    -#   leading "margin" space from each input line before storing it
    -#   in 'self.lines'.
    -#
    -class DocCode:
    -
    -    def __init__( self, margin = 0 ):
    -        self.lines  = []
    -        self.margin = margin
    -
    -
    -    def add( self, line ):
    -        # remove margin whitespace
    -        #
    -        if string.strip( line[: self.margin] ) == "":
    -            line = line[self.margin :]
    -        self.lines.append( line )
    -
    -
    -    def dump( self ):
    -        for line in self.lines:
    -            print "--" + line
    -        print ""
    -
    -
    -    def get_identifier( self ):
    -        # this function should never be called
    -        #
    -        return "UNKNOWN_CODE_IDENTIFIER!"
    -
    -
    -    def dump_html( self, identifiers = None ):
    -        # clean the last empty lines
    -        #
    -        l = len( self.lines ) - 1
    -        while l > 0 and string.strip( self.lines[l - 1] ) == "":
    -            l = l - 1
    -
    -        # the code footer should be directly appended to the last code
    -        # line to avoid an additional blank line
    -        #
    -        sys.stdout.write( code_header )
    -        for line in self.lines[0 : l+1]:
    -            sys.stdout.write( '\n' + line )
    -        sys.stdout.write( code_footer )
    -
    -
    -
    -#############################################################################
    -#
    -# The DocParagraph is used to store text paragraphs.
    -# 'self.words' is simply a list of words for the paragraph.
    -#
    -# The paragraph is filled line by line by the parser.
    -#
    -class DocParagraph:
    -
    -    def __init__( self ):
    -        self.words = []
    -
    -
    -    def add( self, line ):
    -        # Get rid of unwanted spaces in the paragraph.
    -        #
    -        # The following two lines are the same as
    -        #
    -        #   self.words.extend( string.split( line ) )
    -        #
    -        # but older Python versions don't have the `extend' attribute.
    -        #
    -        last = len( self.words )
    -        self.words[last : last] = string.split( line )
    -
    -
    -    # This function is used to retrieve the first word of a given
    -    # paragraph.
    -    #
    -    def get_identifier( self ):
    -        if self.words:
    -            return self.words[0]
    -
    -        # should never happen
    -        #
    -        return "UNKNOWN_PARA_IDENTIFIER!"
    -
    -
    -    def get_words( self ):
    -        return self.words[:]
    -
    -
    -    def dump( self, identifiers = None ):
    -        max_width = 50
    -        cursor    = 0
    -        line      = ""
    -        extra     = None
    -        alphanum  = string.lowercase + string.uppercase + string.digits + '_'
    -
    -        for word in self.words:
    -            # process cross references if needed
    -            #
    -            if identifiers and word and word[0] == '@':
    -                word = word[1 :]
    -
    -                # we need to find non-alphanumeric characters
    -                #
    -                i = len( word )
    -                while i > 0 and not word[i - 1] in alphanum:
    -                    i = i - 1
    -
    -                if i > 0:
    -                    extra = word[i :]
    -                    word  = word[0 : i]
    -
    -                block = identifiers.get( word )
    -                if block:
    -                    word = '' + word + ''
    -                else:
    -                    word = '?' + word
    -
    -            if cursor + len( word ) + 1 > max_width:
    -                print line
    -                cursor = 0
    -                line = ""
    -
    -            line = line + word
    -            if not extra:
    -                line = line + " "
    -
    -            cursor = cursor + len( word ) + 1
    -
    -            # handle trailing periods, commas, etc. at the end of
    -            # cross references.
    -            #
    -            if extra:
    -                if cursor + len( extra ) + 1 > max_width:
    -                    print line
    -                    cursor = 0
    -                    line   = ""
    -
    -                line   = line + extra + " "
    -                cursor = cursor + len( extra ) + 1
    -                extra  = None
    -
    -        if cursor > 0:
    -            print line
    -
    -        # print "§" # for debugging only
    -
    -
    -    def dump_string( self ):
    -        s     = ""
    -        space = ""
    -        for word in self.words:
    -            s     = s + space + word
    -            space = " "
    -
    -        return s
    -
    -
    -    def dump_html( self, identifiers = None ):
    -        print para_header
    -        self.dump( identifiers )
    -        print para_footer
    -
    -
    -
    -#############################################################################
    -#
    -# DocContent is used to store the content of a given marker.
    -#
    -# The "self.items" list contains (field,elements) records, where
    -# "field" corresponds to a given structure fields or function
    -# parameter (indicated by a "::"), or NULL for a normal section
    -# of text/code.
    -#
    -# Hence, the following example:
    -#
    -#   
    -#      This is an example of what can be put in a content section,
    -#
    -#      A second line of example text.
    -#
    -#      x :: A simple test field, with some contents.
    -#      y :: Even before, this field has some code contents.
    -#           {
    -#             y = x+2;
    -#           }
    -#
    -# should be stored as
    -#
    -#     [ ( None, [ DocParagraph, DocParagraph] ),
    -#       ( "x",  [ DocParagraph ] ),
    -#       ( "y",  [ DocParagraph, DocCode ] ) ]
    -#
    -# in 'self.items'.
    -#
    -# The DocContent object is entirely built at creation time; you must
    -# pass a list of input text lines in the "lines_list" parameter.
    -#
    -class DocContent:
    -
    -    def __init__( self, lines_list ):
    -        self.items  = []
    -        code_mode   = 0
    -        code_margin = 0
    -        text        = []
    -        paragraph   = None   # represents the current DocParagraph
    -        code        = None   # represents the current DocCode
    -
    -        elements    = []     # the list of elements for the current field,
    -                             # contains DocParagraph or DocCode objects
    -
    -        field       = None   # the current field
    -
    -        for aline in lines_list:
    -            if code_mode == 0:
    -                line   = string.lstrip( aline )
    -                l      = len( line )
    -                margin = len( aline ) - l
    -
    -                # if the line is empty, this is the end of the current
    -                # paragraph
    -                #
    -                if l == 0 or line == '{':
    -                    if paragraph:
    -                        elements.append( paragraph )
    -                        paragraph = None
    -
    -                    if line == "":
    -                        continue
    -
    -                    code_mode   = 1
    -                    code_margin = margin
    -                    code        = None
    -                    continue
    -
    -                words = string.split( line )
    -
    -                # test for a field delimiter on the start of the line, i.e.
    -                # the token `::'
    -                #
    -                if len( words ) >= 2 and words[1] == "::":
    -                    # start a new field - complete current paragraph if any
    -                    #
    -                    if paragraph:
    -                        elements.append( paragraph )
    -                        paragraph = None
    -
    -                    # append previous "field" to self.items
    -                    #
    -                    self.items.append( ( field, elements ) )
    -
    -                    # start new field and elements list
    -                    #
    -                    field    = words[0]
    -                    elements = []
    -                    words    = words[2 :]
    -
    -                # append remaining words to current paragraph
    -                #
    -                if len( words ) > 0:
    -                    line = string.join( words )
    -                    if not paragraph:
    -                        paragraph = DocParagraph()
    -                    paragraph.add( line )
    -
    -            else:
    -                # we are in code mode...
    -                #
    -                line = aline
    -
    -                # the code block ends with a line that has a single '}' on
    -                # it that is located at the same column that the opening
    -                # accolade...
    -                #
    -                if line == " " * code_margin + '}':
    -                    if code:
    -                        elements.append( code )
    -                        code = None
    -
    -                    code_mode   = 0
    -                    code_margin = 0
    -
    -                # otherwise, add the line to the current paragraph
    -                #
    -                else:
    -                    if not code:
    -                        code = DocCode()
    -                    code.add( line )
    -
    -        if paragraph:
    -            elements.append( paragraph )
    -
    -        if code:
    -            elements.append( code )
    -
    -        self.items.append( ( field, elements ) )
    -
    -
    -    def get_identifier( self ):
    -        if self.items:
    -            item = self.items[0]
    -            for element in item[1]:
    -                return element.get_identifier()
    -
    -        # should never happen
    -        #
    -        return "UNKNOWN_CONTENT_IDENTIFIER!"
    -
    -
    -    def get_title( self ):
    -        if self.items:
    -            item = self.items[0]
    -            for element in item[1]:
    -                return element.dump_string()
    -
    -        # should never happen
    -        #
    -        return "UNKNOWN_CONTENT_TITLE!"
    -
    -
    -    def dump( self ):
    -        for item in self.items:
    -            field = item[0]
    -            if field:
    -                print ""
    -
    -            for element in item[1]:
    -                element.dump()
    -
    -            if field:
    -                print ""
    -
    -
    -    def dump_html( self, identifiers = None ):
    -        n        = len( self.items )
    -        in_table = 0
    -
    -        for i in range( n ):
    -            item  = self.items[i]
    -            field = item[0]
    -
    -            if not field:
    -                if in_table:
    -                    print ""
    -                    in_table = 0
    -
    -                for element in item[1]:
    -                    element.dump_html( identifiers )
    -
    -            else:
    -                if not in_table:
    -                    print "
    " - in_table = 1 - else: - print "
    " - - print "" + field + "" - - for element in item[1]: - element.dump_html( identifiers ) - - if in_table: - print "
    " - - - def dump_html_in_table( self, identifiers = None ): - n = len( self.items ) - in_table = 0 - - for i in range( n ): - item = self.items[i] - field = item[0] - - if not field: - if item[1]: - print "" - for element in item[1]: - element.dump_html( identifiers ) - print "" - - else: - print "" + field + "" - - for element in item[1]: - element.dump_html( identifiers ) - - print "" - - - -############################################################################# -# -# -# The DocBlock class is used to store a given comment block. It contains -# a list of markers, as well as a list of contents for each marker. -# -# "self.items" is a list of (marker, contents) elements, where -# 'marker' is a lowercase marker string, and 'contents' is a DocContent -# object. -# -# "self.source" is simply a list of text lines taken from the -# uncommented source itself. -# -# Finally, "self.name" is a simple identifier used to uniquely identify -# the block. It is taken from the first word of the first -# paragraph of the first marker of a given block, i.e: -# -# Goo -# Bla bla bla -# -# will have a name of "Goo" -# -class DocBlock: - - def __init__( self, block_line_list = [], source_line_list = [] ): - self.items = [] # current ( marker, contents ) list - self.section = None # section this block belongs to - self.filename = "unknown" # filename defining this block - self.lineno = 0 # line number in filename - - marker = None # current marker - content = [] # current content lines list - alphanum = string.letters + string.digits + "_" - self.name = None - - for line in block_line_list: - line2 = string.lstrip( line ) - l = len( line2 ) - margin = len( line ) - l - - if l > 3: - ender = None - if line2[0] == '<': - ender = '>' - elif line2[0] == '@': - ender = ':' - - if ender: - i = 1 - while i < l and line2[i] in alphanum: - i = i + 1 - if i < l and line2[i] == ender: - if marker and content: - self.add( marker, content ) - marker = line2[1 : i] - content = [] - line2 = string.lstrip( line2[i+1 :] ) - l = len( line2 ) - line = " " * margin + line2 - - content.append( line ) - - if marker and content: - self.add( marker, content ) - - self.source = [] - if self.items: - self.source = source_line_list - - # now retrieve block name when possible - # - if self.items: - first = self.items[0] - self.name = first[1].get_identifier() - - - # This function adds a new element to 'self.items'. - # 'marker' is a marker string, or None. - # 'lines' is a list of text lines used to compute a list of - # DocContent objects. - # - def add( self, marker, lines ): - # remove the first and last empty lines from the content list - # - l = len( lines ) - if l > 0: - i = 0 - while l > 0 and string.strip( lines[l - 1] ) == "": - l = l - 1 - while i < l and string.strip( lines[i] ) == "": - i = i + 1 - lines = lines[i : l] - l = len( lines ) - - # add a new marker only if its marker and its content list - # aren't empty - # - if l > 0 and marker: - content = DocContent( lines ) - self.items.append( ( string.lower( marker ), content ) ) - - - def find_content( self, marker ): - for item in self.items: - if ( item[0] == marker ): - return item[1] - return None - - - def html_address( self ): - section = self.section - if section and section.filename: - return section.filename + '#' + self.name - - return "" # this block is not in a section? - - - def location( self ): - return self.filename + ':' + str( self.lineno ) - - - def print_warning( self, message ): - sys.stderr.write( "WARNING:" + - self.location() + ": " + message + '\n' ) - - - def print_error( self, message ): - sys.stderr.write( "ERROR:" + - self.location() + ": " + message + '\n' ) - sys.exit() - - - def dump( self ): - for i in range( len( self.items ) ): - print "[" + self.items[i][0] + "]" - content = self.items[i][1] - content.dump() - - - def dump_html( self, identifiers = None ): - types = ['type', 'struct', 'functype', 'function', - 'constant', 'enum', 'macro', 'structure', 'also'] - - parameters = ['input', 'inout', 'output', 'return'] - - if not self.items: - return - - # start of a block - # - print block_header - - # place html anchor if needed - # - if self.name: - print '' - print "

    " + self.name + "

    " - print "
    " - - # print source code - # - if not self.source: - print block_footer - return - - lines = self.source - l = len( lines ) - 1 - while l >= 0 and string.strip( lines[l] ) == "": - l = l - 1 - print source_header - print "" - for line in lines[0 : l+1]: - print line - print source_footer - - in_table = 0 - - # dump each (marker,content) element - # - for element in self.items: - marker = element[0] - content = element[1] - - if marker == "description": - print description_header - content.dump_html( identifiers ) - print description_footer - - elif not ( marker in types ): - sys.stdout.write( marker_header ) - sys.stdout.write( marker ) - sys.stdout.write( marker_inter + '\n' ) - content.dump_html( identifiers ) - print marker_footer - - print "" - - print block_footer - - - -############################################################################# -# -# The DocSection class is used to store a given documentation section. -# -# Each section is made of an identifier, an abstract and a description. -# -# For example, look at: -# -#
    Basic_Data_Types -# -# FreeType 2 Basic Data Types -# -# <Abstract> -# Definitions of basic FreeType data types -# -# <Description> -# FreeType defines several basic data types for all its -# operations... -# -class DocSection: - - def __init__( self, block ): - self.block = block - self.name = string.lower( block.name ) - self.abstract = block.find_content( "abstract" ) - self.description = block.find_content( "description" ) - self.elements = {} - self.list = [] - self.filename = self.name + ".html" - self.chapter = None - - # sys.stderr.write( "new section '" + self.name + "'" ) - - - def add_element( self, block ): - # check that we don't have a duplicate element in this - # section - # - if self.elements.has_key( block.name ): - self.print_error( "duplicate element definition for " + - "'" + block.name + "' " + - "in section " + - "'" + self.name + "'\n" + - "previous definition in " + - "'" + self.elements[block.name].location() + "'" ) - - self.elements[block.name] = block - self.list.append( block ) - - - def print_warning( self, message ): - self.block.print_warning( message ) - - - def print_error( self, message ): - self.block.print_error( message ) - - - def dump_html( self, identifiers = None ): - """make an HTML page from a given DocSection""" - - # print HTML header - # - print html_header - - # print title - # - print section_title_header - print self.title - print section_title_footer - - # print description - # - print block_header - self.description.dump_html( identifiers ) - print block_footer - - # print elements - # - for element in self.list: - element.dump_html( identifiers ) - - print html_footer - - -class DocSectionList: - - def __init__( self ): - self.sections = {} # map section names to section objects - self.list = [] # list of sections (in creation order) - self.current_section = None # current section - self.identifiers = {} # map identifiers to blocks - - - def append_section( self, block ): - name = string.lower( block.name ) - abstract = block.find_content( "abstract" ) - - if self.sections.has_key( name ): - # There is already a section with this name in our - # list. We will try to complete it. - # - section = self.sections[name] - if section.abstract: - # This section already has an abstract defined; - # simply check that the new section doesn't - # provide a new one. - # - if abstract: - section.block.print_error( - "duplicate section definition for " + - "'" + name + "'\n" + - "previous definition in " + - "'" + section.block.location() + "'\n" + - "second definition in " + - "'" + block.location() + "'" ) - else: - # The old section didn't contain an abstract; we are - # now going to replace it. - # - section.abstract = abstract - section.description = block.find_content( "description" ) - section.block = block - - else: - # a new section - # - section = DocSection( block ) - self.sections[name] = section - self.list.append( section ) - - self.current_section = section - - - def append_block( self, block ): - if block.name: - section = block.find_content( "section" ) - if section: - self.append_section( block ) - - elif self.current_section: - self.current_section.add_element( block ) - block.section = self.current_section - self.identifiers[block.name] = block - - - def prepare_files( self, file_prefix = None ): - # prepare the section list, by computing section filenames - # and the index - # - if file_prefix: - prefix = file_prefix + "-" - else: - prefix = "" - - # compute section names - # - for section in self.sections.values(): - title_content = section.block.find_content( "title" ) - if title_content: - section.title = title_content.get_title() - else: - section.title = "UNKNOWN_SECTION_TITLE!" - - # sort section elements according to the <order> marker if - # available - # - for section in self.sections.values(): - order = section.block.find_content( "order" ) - if order: - # sys.stderr.write( "<order> found at " - # + section.block.location() + '\n' ) - order_list = [] - for item in order.items: - for element in item[1]: - words = None - try: - words = element.get_words() - except: - section.block.print_warning( - "invalid content in <order> marker\n" ) - if words: - for word in words: - block = self.identifiers.get( word ) - if block: - if block.section == section: - order_list.append( block ) - else: - section.block.print_warning( - "invalid reference to " + - "'" + word + "' " + - "defined in other section" ) - else: - section.block.print_warning( - "invalid reference to " + - "'" + word + "'" ) - - # now sort the list of blocks according to the order list - # - new_list = order_list[:] - for block in section.list: - if not block in order_list: - new_list.append( block ) - - section.list = new_list - - # compute section filenames - # - for section in self.sections.values(): - section.filename = prefix + section.name + ".html" - - self.toc_filename = prefix + "toc.html" - self.index_filename = prefix + "index.html" - - # compute the sorted list of identifiers for the index - # - self.index = self.identifiers.keys() - self.index.sort( index_sort ) - - - def dump_html_sections( self ): - old_stdout = sys.stdout - - for section in self.sections.values(): - if section.filename: - new_file = open( section.filename, "w" ) - sys.stdout = new_file - section.dump_html( self.identifiers ) - new_file.close() - - sys.stdout = old_stdout - - - def dump_html_index( self ): - old_stdout = sys.stdout - new_file = open( self.index_filename, "w" ) - sys.stdout = new_file - - num_columns = 3 - total = len( self.index ) - line = 0 - - print html_header - print "<center><h1>General Index</h1></center>" - print "<center><table cellpadding=5><tr valign=top><td>" - - for ident in self.index: - block = self.identifiers[ident] - if block: - sys.stdout.write( '<a href="' + block.html_address() + '">' ) - sys.stdout.write( block.name ) - sys.stdout.write( '</a><br>' + '\n' ) - - if line * num_columns >= total: - print "</td><td>" - line = 0 - else: - line = line + 1 - else: - sys.stderr.write( "identifier '" + ident + - "' has no definition" + '\n' ) - - print "</tr></table></center>" - print html_footer - - sys.stdout = old_stdout - - - -# Filter a given list of DocBlocks. Returns a new list of DocBlock objects -# that only contains element whose "type" (i.e. first marker) is in the -# "types" parameter. -# -class DocChapter: - - def __init__( self, block ): - self.sections_names = [] # ordered list of section names - self.sections = [] # ordered list of DocSection objects - # for this chapter - self.block = block - - # look for chapter title - content = block.find_content( "title" ) - if content: - self.title = content.get_title() - else: - self.title = "UNKNOWN CHAPTER TITLE" - - # look for section list - content = block.find_content( "sections" ) - if not content: - block.print_error( "chapter has no <sections> content" ) - - # compute list of section names - slist = [] - for item in content.items: - for element in item[1]: - try: - words = element.get_words() - l = len( slist ) - slist[l : l] = words - except: - block.print_warning( - "invalid content in <sections> marker" ) - - self.section_names = slist - - -class DocDocument: - - def __init__( self ): - self.section_list = DocSectionList() # section list object - self.chapters = [] # list of chapters - self.lost_sections = [] # list of sections with - # no chapter - - def append_block( self, block ): - if block.name: - content = block.find_content( "chapter" ) - if content: - # it's a chapter definition -- add it to our list - chapter = DocChapter( block ) - self.chapters.append( chapter ) - else: - self.section_list.append_block( block ) - - - def prepare_chapters( self ): - # check section names - # - for chapter in self.chapters: - slist = [] - for name in chapter.section_names: - section = self.section_list.sections.get( name ) - if not section: - chapter.block.print_warning( - "invalid reference to unknown section '" + name + "'" ) - else: - section.chapter = chapter - slist.append( section ) - - chapter.sections = slist - - for section in self.section_list.list: - if not section.chapter: - section.block.print_warning( - "section '" + section.name + "' is not in any chapter" ) - self.lost_sections.append( section ) - - - def prepare_files( self, file_prefix = None ): - self.section_list.prepare_files( file_prefix ) - self.prepare_chapters() - - - def dump_toc_html( self ): - # dump an html table of contents - # - old_stdout = sys.stdout - new_file = open( self.section_list.toc_filename, "w" ) - sys.stdout = new_file - - print html_header - - print "<center><h1>Table of Contents</h1></center>" - - for chapter in self.chapters: - print chapter_header + chapter.title + chapter_inter - - print "<table cellpadding=5>" - for section in chapter.sections: - if section.abstract: - print "<tr valign=top><td>" - sys.stdout.write( '<a href="' + section.filename + '">' ) - sys.stdout.write( section.title ) - sys.stdout.write( "</a></td><td>" + '\n' ) - section.abstract.dump_html( self.section_list.identifiers ) - print "</td></tr>" - - print "</table>" - - print chapter_footer - - # list lost sections - if self.lost_sections: - print chapter_header + "OTHER SECTIONS:" + chapter_inter - - print "<table cellpadding=5>" - for section in self.lost_sections: - if section.abstract: - print "<tr valign=top><td>" - sys.stdout.write( '<a href="' + section.filename + '">' ) - sys.stdout.write( section.title ) - sys.stdout.write( "</a></td><td>" + '\n' ) - section.abstract.dump_html( self.section_list.identifiers ) - print "</td></tr>" - - print "</table>" - - print chapter_footer - - # index - print chapter_header + '<a href="' + self.section_list.index_filename + '">Index</a>' + chapter_footer - - print html_footer - - sys.stdout = old_stdout - - - def dump_index_html( self ): - self.section_list.dump_html_index() - - - def dump_sections_html( self ): - self.section_list.dump_html_sections() - - -def filter_blocks_by_type( block_list, types ): - new_list = [] - for block in block_list: - if block.items: - element = block.items[0] - marker = element[0] - if marker in types: - new_list.append( block ) - - return new_list - - -def filter_section_blocks( block ): - return block.section != None - - -# Perform a lexicographical comparison of two DocBlock -# objects. Returns -1, 0 or 1. -# -def block_lexicographical_compare( b1, b2 ): - if not b1.name: - return -1 - if not b2.name: - return 1 - - id1 = string.lower( b1.name ) - id2 = string.lower( b2.name ) - - if id1 < id2: - return -1 - elif id1 == id2: - return 0 - else: - return 1 - - -# dump a list block as a single HTML page -# -def dump_html_1( block_list ): - print html_header - - for block in block_list: - block.dump_html() - - print html_footer - - -def file_exists( pathname ): - result = 1 - try: - file = open( pathname, "r" ) - file.close() - except: - result = None - - return result - - -def add_new_block( list, filename, lineno, block_lines, source_lines ): - """add a new block to the list""" - block = DocBlock( block_lines, source_lines ) - block.filename = filename - block.lineno = lineno - list.append( block ) - - -def make_block_list(): - """parse a file and extract comments blocks from it""" - - file_list = [] - # sys.stderr.write( repr( sys.argv[1 :] ) + '\n' ) - - for pathname in sys.argv[1 :]: - if string.find( pathname, '*' ) >= 0: - newpath = glob.glob( pathname ) - newpath.sort() # sort files -- this is important because - # of the order of files - else: - newpath = [pathname] - - last = len( file_list ) - file_list[last : last] = newpath - - if len( file_list ) == 0: - file_list = None - else: - # now filter the file list to remove non-existing ones - file_list = filter( file_exists, file_list ) - - list = [] - block = [] - format = 0 - lineno = 0 - - # We use "format" to store the state of our parser: - # - # 0 - wait for beginning of comment - # 1 - parse comment format 1 - # 2 - parse comment format 2 - # - # 4 - wait for beginning of source (or comment ??) - # 5 - process source - # - comment = [] - source = [] - state = 0 - - for line in fileinput.input( file_list ): - l = len( line ) - if l > 0 and line[l - 1] == '\012': - line = line[0 : l-1] - - # stripped version of the line - # - line2 = string.strip( line ) - l = len( line2 ) - - # if this line begins with a comment and we are processing some - # source, exit to state 0 - # - # unless we encounter something like: - # - # /*@..... - # /*#..... - # - # /* @..... - # /* #..... - # - if format >= 4 and l > 2 and line2[0 : 2] == '/*': - if l < 4 or ( line2[2] != '@' and line2[2 : 4] != ' @' and - line2[2] != '#' and line2[2 : 4] != ' #'): - add_new_block( list, fileinput.filename(), - lineno, block, source ) - format = 0 - - if format == 0: #### wait for beginning of comment #### - if l > 3 and line2[0 : 3] == '/**': - i = 3 - while i < l and line2[i] == '*': - i = i + 1 - - if i == l: - # this is '/**' followed by any number of '*', the - # beginning of a Format 1 block - # - block = [] - source = [] - format = 1 - lineno = fileinput.lineno() - - elif i == l - 1 and line2[i] == '/': - # this is '/**' followed by any number of '*', followed - # by a '/', i.e. the beginning of a Format 2 or 3 block - # - block = [] - source = [] - format = 2 - lineno = fileinput.lineno() - - ############################################################## - # - # FORMAT 1 - # - elif format == 1: - - # If the line doesn't begin with a "*", something went - # wrong, and we must exit, and forget the current block. - # - if l == 0 or line2[0] != '*': - block = [] - format = 0 - - # Otherwise, we test for an end of block, which is an - # arbitrary number of '*', followed by '/'. - # - else: - i = 1 - while i < l and line2[i] == '*': - i = i + 1 - - # test for the end of the block - # - if i < l and line2[i] == '/': - if block != []: - format = 4 - else: - format = 0 - else: - # otherwise simply append line to current block - # - block.append( line2[i :] ) - - continue - - ############################################################## - # - # FORMAT 2 - # - elif format == 2: - - # If the line doesn't begin with '/*' and end with '*/', - # this is the end of the format 2 format. - # - if l < 4 or line2[: 2] != '/*' or line2[-2 :] != '*/': - if block != []: - format = 4 - else: - format = 0 - else: - # remove the start and end comment delimiters, then - # right-strip the line - # - line2 = string.rstrip( line2[2 : -2] ) - - # check for end of a format2 block, i.e. a run of '*' - # - if string.count( line2, '*' ) == l - 4: - if block != []: - format = 4 - else: - format = 0 - else: - # otherwise, add the line to the current block - # - block.append( line2 ) - - continue - - if format >= 4: #### source processing #### - if l > 0: - format = 5 - - if format == 5: - source.append( line ) - - if format >= 4: - add_new_block( list, fileinput.filename(), lineno, block, source ) - - return list - - - -# This function is only used for debugging -# -def dump_block_list( list ): - """dump a comment block list""" - for block in list: - print "----------------------------------------" - for line in block[0]: - print line - for line in block[1]: - print line - - print "---------the end-----------------------" - - -def main( argv ): - """main program loop""" - - # we begin by simply building a list of DocBlock elements - # - sys.stderr.write( "extracting comment blocks from sources...\n" ) - list = make_block_list() - - # now, sort the blocks into sections - # - document = DocDocument() - for block in list: - document.append_block( block ) - - document.prepare_files( "ft2" ) - - document.dump_toc_html() - document.dump_sections_html() - document.dump_index_html() - -## section_list = DocSectionList() -## for block in list: -## section_list.append_block( block ) -## -## section_list.prepare_files( "ft2" ) - -## # dump the section list TOC and sections -## # -## section_list.dump_html_toc() -## section_list.dump_html_sections() -## section_list.dump_html_index() - - -# If called from the command line -# -if __name__ == '__main__': - main( sys.argv ) - - -# eof Index: xc/extras/freetype2/docs/freetype2.html diff -u xc/extras/freetype2/docs/freetype2.html:1.1.1.1 xc/extras/freetype2/docs/freetype2.html:removed --- xc/extras/freetype2/docs/freetype2.html:1.1.1.1 Fri Dec 8 16:26:11 2000 +++ xc/extras/freetype2/docs/freetype2.html Fri Jan 18 15:21:45 2002 @@ -1,352 +0,0 @@ -<html> -<head> -<title>FreeType 2 Introduction - - - - - - - -http://www.freetype.org

    - -

    - - The FreeType Project -

    An Introduction to FreeType 2

    -
    - -
    -

    - -DOCUMENT INDEX:
    -

    - - -


    - -
    -

    What is FreeType 2 ?

    -
    - -

    The FreeType project is a team of volunteers who develop free, portable -and high-quality software solutions for digital typography. We specifically -target embedded systems and focus on bringing small, efficient and -ubiquitous products.

    - -

    the FreeType 2 library is our new software font engine. It has been - designed to provide the following important features:

    - -
      -
    • - A universal and simple API to manage font files:
      -

        -

        The FreeType 2 API is simple and easy to use. It supports both - bitmapped and scalable fonts and is well-suited to manage font - files of all formats. Unlike other font libraries, FreeType 2 - returns and manages outline font data (images & metrics).

        -
      -

    • - -
    • - Support for several font formats through loadable modules:
      -

        -

        FreeType 2 uses "font drivers". Each driver is a loadable - module used to support one specific font format. Each driver can also - provide specific extensions used to access format-specific features of - the font.

        -
      -

    • - - -
    • - High-quality anti-aliasing:
      -

        -

        FreeType 2 produces etremely smooth outlines at small sizes, with its new - anti-aliasing renderer, which produces bitmaps with 256-levels of gray. - It uses a new algorithm that has been specifically designed to render - small complex shapes (like glyphs) at high speed. Indeed, it's even - faster than the monochrome renderer for small character sizes (under - 20 pixels) !! -

        -
      - - -
    • High portability & performance:
      -
        -

        The FreeType 2 source code is written in ANSI C and runs on any - platform with a compliant compiler. Client applications can - provide their own memory manager or input stream to the library - (which means that font files can come from any place: disk, - memory, compressed file, network, etc..). -

        -
      - -
    - -

    Note that the beta of FreeType 2 is available now. For more - info, check our Download page or see the source - and its diffs through our CVS Web interface. -

    - - -
    - -
    -

    Features

    -
    - -

    Supported font formats

    - -

    FreeType 2 readily supports the following font formats:

    - -
      -
    • TrueType files (.ttf) and collections (.ttc)
    • -
    • Type 1 font files both in ASCII (.pfa) or binary (.pfb) format
    • -
    • Type 1 Multiple Master fonts. The FreeType 2 API also provides - routines to manage design instances easily
    • -
    • Type 1 CID-keyed fonts
    • -
    • OpenType/CFF (.otf) fonts
    • -
    • CFF/Type 2 fonts
    • -
    • Adobe CEF fonts (.cef), used to embed fonts in SVG documents - with the Adobe SVG viewer plugin.
    • -
    • Windows FNT/FON bitmap fonts
    • -
    - -

    Note that Apple's TrueType GX fonts are supported as normal TTFs, - (the advanced tables are ignored).

    - -

    Besides, it's possible to add support for new font formats by providing - a specific font driver module. Modules can be added either at - build time (when recompiling the library), or at run-time; - this allows, for example, applications to register their own - font driver to support program-specific formats.

    - - -

    Patent-free automatic hinter

    - -

    TrueType fonts are normally renderered (hinted) with the help of a - specific bytecode where the behaviour of a few opcodes is patented by - Apple. We're currently in contact with Apple to discuss the importance - of such patents and their use in open source projects like FreeType. -

    - -

    In the meantime, we have developped our own alternative technology that - is capable of automatically hinting scalable glyph images. It is - now part of the FreeType 2 source tree as the "autohint" module, - and is used to hint glyphs when the bytecode interpreter is disabled - (through a configuration macro when building the engine). Note that - the auto-hinter is also used to handle glyphs in other formats like - CFF and Type 1.

    - -

    The auto-hinter provides pretty good results (in some cases, it even - significantly improves the output of poorly hinted fonts) but we'll - continue to improve it with each new release of FreeType to achieve - the highest possible quality.

    - - -

    Modular design:

    - -

    The design of FreeType 2 is extremely modular as most features are - supported through optional modules. This means it's easily possible to - only compile the features you need. As each module is between - 10 and 20 Kb in size, it's possible to build a bare-bones - font engine that supports anti-aliasing in about 30 Kb !!

    - -

    Configuration is performed by modifications of only two header - files (one to select global features, another one to select modules) - and don't need tweaking of source code. Note that it is however - possible to provide your own implementation of certain components.

    - -

    For example, when building on Unix, the engine will automatically - use memory-mapped files when available on the target platform, - thus significantly increasing font file i/o.

    - - -

    Due to its very flexible design, it is possible to add, remove and - upgrade modules at run-time.

    - - - -

    Advanced glyph management

    - -

    The API comes with a standard extension used to extract individual - glyph images from font files. These images can be bitmaps, scalable - bezier outlines or even anything else. (e.g. bi-color or metafont - glyphs, as long as they're supported by a module).

    - -

    Each scalable glyph image can be transformed, measured and - rendered into a monochrome or anti-aliased bitmaps easily - through a uniform interface. - - This allows client applications to easily cache glyphs or - perform text rendering effects with minimal difficulty - (look at the FreeType 2 Tutorial to see how to render - rotated text with very few lines of code). -

    - - - -

    Advanced font access

    - -

    The FreeType 2 API is useful to retrieve advanced information from - various fonts:

    - -
      -
    • vertical metrics are available whenever found in the font file
    • - -
    • kerning distances are available when found in the font file. It - is also possible to "attach" a given additional file to a given - font face. This is useful to load kerning distances from an - .afm file into a Type 1 face for example.
    • - -
    • provides ASCII glyph names whenever available in the font - (TrueType, OpenType, Type1, etc..)
    • - -
    • provides access to important tables for SFNT-based font formats - (i.e. TrueType, OpenType, CEF, etc..), like the name table, - font header, maximum profile, etc...
    • - -
    • automatic synthesis of Unicode-based character maps for - those fonts or formats that do not provide one. This is - extremely useful with Type 1 fonts which are normally - limited to a stupid 256-characters encoding.
    • -
    - - -

    Simple & clean API

    - -

    The FreeType 2 high-level API is simple and straightforward, as it - has been specifically designed to make the most commmon font operations - easy

    - -

    As a comparison, the number of function calls needed to perform a - the tasks of font face creation/opening and glyph loading/rendering - has been reduced by a factor of 4 !!

    - -

    The API is also independent of any font-format specific issue, though - it provides standard extensions to access format-specific tables and - information. More extensions can also be easily added through new - modules

    - - -

    Robust & Portable code

    - -

    Because it is written in industry-standard ANSI C, FreeType 2 compiles - on all platforms with a compliant compiler. Because the default build - only relies on the C library, it is free of any system-specific - dependencies, even if it is possible to "enhance" certain components - by providing a specific implementation.

    - -

    The code doesn't use global or static variables. Client applications - can provide their own memory manager. Font files can be read from - a disk file, memory, or through a client-provided input stream. This - allows to support compressed font files, remote fonts, fonts embedded - in other streams (e.g. Type42 fonts), etc..

    - -

    An advanced i/o sub-system is used to optimise file access, as well - as reduce memory usage of the library when the file is memory-based - ( ROM, RAM, memory-mapped ).

    - - -

    Open Source & Vendor Independence

    - -

    Finally, FreeType 2 is released under its own BSD-like open source - license, one of the less restricting licenses available, and this - means that:

    - -
      -
    • - It can be included in all kinds of products, be they proprietary - or not. -

    • - -
    • - As any module can be added or replaced anytime, any third party - vendor has the ability to provide its own set of modules (under - its own license) in order to support proprietary font formats or - more advanced features (e.g. a new auto-hinter, or a new - anti-aliasing renderer for LCDs or TV screens). -

    • -
    - -

    One could even imagine an application using the FreeType 2 API with - a "wrapper" module used to access system-specific fonts (like through - the Windows GDI). This would mean native font support with more portable - application code (as simply changing the wrapper module would be required - to port the application to another system).

    - -
    - -
    -

    Requirements

    -
    - -

    FreeType 2 is written in ANSI C and should compile with no problems - on a great variety of platforms. We have taken care of removing all - compilation warnings from major compliant compilers. Detailed compilation - instructions are provided in the software archive.

    - -

    This version of the library has been succesfully compiled and run - under the following systems: Dos, OS/2, Windows, Macintosh, Unix - (including the 64-bits DEC Unix, a.k.a. "True64"). You should not - encounter major problems compiling it on any other kind of platform. - In all cases, contact us if you do.

    - -

    Note that a small set of demonstration programs is also separately - available. They include a tiny graphics sub-system that is used to - display and show-off the library's capabilities on the following - platforms: X11, MacOS, OS/2 & Windows.

    - -

    Please visit our - Download section to access the software archives.

    - - - -
    - -
    -

    Patents issues

    -
    - -

    The FreeType 2 source code includes a TrueType bytecode interpreter that - is covered by the Apple patents. However, this piece of code is never - compiled by default in this release (unlike in previous betas) making - a default build of the library entirely patent-free !!

    - -

    Note that in order to compile the interpreter, one needs to define - the configuration macro TT_CONFIG_OPTION_BYTECODE_INTERPRETER configuration - macro in the file "ftoption.h". More details are available in - the software archive. Note that the use of the interpreter is normally - protected by US, UK and French patents. In the event you'd absolutely - need it, you may have to contact - Apple legal department for licensing conditions, depending on your - location and the places you distribute/sell your products.

    - -

    Please do not ask us any detailed information regarding licensing, as - we're still discussing with Apple this issue, we're unable to inform - the public of what's currently going on..

    - -
    - -


    -

    -Back to FreeType homepage

    - -

    - - Index: xc/extras/freetype2/docs/ft2faq.html diff -u xc/extras/freetype2/docs/ft2faq.html:1.1.1.1 xc/extras/freetype2/docs/ft2faq.html:removed --- xc/extras/freetype2/docs/ft2faq.html:1.1.1.1 Fri Dec 8 16:26:11 2000 +++ xc/extras/freetype2/docs/ft2faq.html Fri Jan 18 15:21:45 2002 @@ -1,729 +0,0 @@ - - - - - - FreeType 2 FAQ - - - - - -http://www.freetype.org

    - -

    - - The FreeType Project -

    The FreeType 2 FAQ

    - - -
    - - -
    - -

    - - Document index - -

    - -


    - - - - -
    -

    - General questions & answers -

    -
    - - -

    - I.1 I though the FreeType project was dead. Is this true? -

    - -

    Well, not exactly :-) It's true that the TrueType patents - issues have been less than a graceful event to handle but it didn't not - really killed the project per se, as Apple hasn't made an official - statement yet regarding the use of the patented "technology" in open - source projects (or other products).

    - -

    We have thus continued updating FreeType 1.x, and started - developing FreeType 2 with the idea of providing this time a - completely patent free font engine. However, we largely preferred not - to broadly communicate about it until we've got a satisfying - implementation to show.

    - -
    -
    -

    - I.2 Why did it take so long to release FreeType 2? -

    - -

    Several factors come to mind. The first one is that FreeType 2 - is a much more complex and dense project that was mostly developed - during non-working hours. And surely some important changes in the life - (like marriage, new jobs and kids) of some the FreeType developers - cannot be ignored :-)

    - -

    A second one is that a first version of the library was designed one - year ago (and already worked with a multitude of font drivers), though - with a design that was judged by its authors as well as beta testers as - not enough flexible or consistent. In short, it worked well but we were - not exactly proud of it (call us perfectionists). It has then be - significantly reworked to become what we are now distributing as - FreeType 2

    - -

    Finally, it would have been hard to distribute such a library without - an alternative technology to replace the patented bytecode interpreter. - This involved significant research work that could only be performed - correctly full-time, and we had to found a company to fund such a - development and still make it available under a BSD-like license. Huge - thanks to Catharon Productions, - Inc. for their commitment to this project.

    - -

    And of course, we added support for more font files, and we will - continue to as long as the specifications are available and that we find - an interest in it. For example, FreeType 2 is to date the only - software library available on the market that supports the new Adobe - "CEF" font format.

    - -
    - -

    - I.3 Is FreeType 2 a Unix-only project? -

    - -

    Absolutely not, even though many people still seem to think - so :-) FreeType 2, just like version 1.x, can be compiled - on any platform with an ANSI compiler. Some beta versions of the - library are even heavily used in brand new OSes (see the AtheOS screenshots for examples).

    - -

    The library is itself mainly developed on several platforms (Windows - & Linux, though a great deal has also been achieved on OS/2) and the - code is highly generic and modular to adapt even the most strict - environments like low-memory embedded systems.

    - -
    - -

    - I.4 When will X11/XFree support anti-aliased text? -

    - -

    This question isn't exactly related to FreeType as we have no direct - connection to the XFree people, but we have been asked so frequently - about it that it deserves a prominent place in this FAQ :-)

    - -

    FreeType has been capable of anti-aliasing since version 1.0. - The reason why XFree doesn't support it is directly related to the - limitations of the design and specification of X11. More - specifically:

    - -
      -
    • - X11 assumes that all glyph images are monochrome bitmaps, hence the - X font library and server are unable to send anything else to - the X server. -
    • -
    • - Even if the X font library/server was able to generate - anti-aliased bitmaps (and this has been already done through - extensions), the X rendering model doesn't allow translucent - composition of "gray" pixmaps onto an arbitrary drawable. -
    • -
    - -

    As both the font and rendering models of X11 are limited, it is - basically impossible to draw anti-aliased glyphs without performing - huge hacks within the server.

    - -

    Note that Keith Packard, from XFree86 fame, has recently started - working on a new rendering model for X11 in order to support new - features (mainly transparency and anti-aliased fonts). This will be - provided through protocol extensions. The question of knowing whether - legacy X applications will be able to display anti-aliased text is still - very uncertain.

    - -
    -
    -

    - I.5 Is FreeType 2 backwards compatible with FreeType 1.x? -

    - -

    Not directly, though we had the project to provide an optional binary - compatibility layer on top of it in order to easily re-link applications - with the new version. However, this idea has been dropped as it is - possible to install and use the two versions independently on any system - (read: no namespace conflicts).

    - -

    The FreeType 2 API is a lot simpler than the one in 1.x - while being much more powerful. We thus encourage you to adapt your - source code to it as this should not involve much work.

    - -
    -
    -

    - I.6 Can I use FreeType 2 to edit fonts or create new ones? -

    - -

    The answer is a definitive no, because the library was - specifically designed to read font files with small code size - and very low memory usage.

    - -

    We thus do not plan to support editing or creation in the font engine - in any way, as this would imply a complete rewrite. This doesn't mean - that we won't introduce a font editing/creation library in the future, - as this really depends on how many people are asking for it (or how much - they would be willing to pay for it), as well as the time of the - FreeType developers.

    - -

    Do not expect anything in this direction until we officially announce - something though. There are other axes of development for this project - (like text-layout capabilities, glyph caching, etc.) that may be more - important to us at the moment.

    -
    - -
    - - - - -
    -

    - Compilation & Configuration -

    -
    - - -

    - II.1 How do I compile the FreeType 2 library? -

    - -

    The library can be compiled in various ways, and a detailed - documentation is available in the file freetype2/docs/BUILD. - However, we will summarize the process to a few cases:

    - -

    - a. Using the command-line 2 build system -

    - -

    The engine comes with a sophisticated build system that is used to - configure and compile a build of the library. You will need GNU - Make installed on your platform (Note: It will - not work with other Make tools).

    - -

    Basically, you will need to invoke make a first time in - the top-level FreeType 2 directory in order to set up the build. - This will detect your current platform and choose a configuration - sub-makefile to drive the build. A specific compiler can be selected - on some platforms by providing an additional target. For example, on - Win32:

    - -
      -
    • - make visualc will select the Visual  C++ - compiler -
    • -
    • - make lcc will select the Win32-lcc compiler -
    • -
    - -

    Note that on Unix, when the first time make is called, a configure - script located in freetype2/builds/unix will be run in order - to automatically detect the platform & compiler.

    - -

    A summary will be displayed showing the detected platform and - compiler selected. You will then be able to start the build by - invoking make a second time. In case of problem, consult the - BUILD document.

    - -

    - b. Direct compilation -

    - -

    You can also directly compile the library from the command line by - using these simple rules:

    - -
      -
    • - You should place the directories freetype2/include and - freetype2/src in your include path in order to compile - any component of the library. You can also add the - system-specific build directory (i.e. - builds/system/) in the case where an alternate - implementation of some of the components is available there (e.g. - the memory-mapped i/o implementation on some Unix systems). -
    • -
    • - The components of the library are located in sub-directories of - src, for example: src/base, - src/truetype, etc. -
    • -
    • - Each component is normally compiled through a single C file that - wraps other sources in the component's directory. For - example, you should build the TrueType font driver by compiling - the file src/truetype/truetype.c. The list of - C files to compile for a feature-complete build of the - library is given in the BUILD document. -
    • -
    - -

    - c. Using a graphical IDE -

    - -

    Well, the process is vastly similar to the one described in b., - except that you need to set the include paths, source code paths, etc. - in dialog boxes before running the compilation.

    - -
    -
    -

    - II.2 How do I configure my build of the library? -

    - -

    Each build of the library is configured through two header files - located in include/freetype/config:

    - -
      -
    • - ftoption.h -
      - This file contains various configuration macros whose definition can - be toggled on a per-build basis. Each macro is heavily commented in - this file's comment, and we invite you to refer to it directly. -
    • -
    • - ftmodule.h -
      - This file contains the list of all the modules that are initially - registered (added) when the function FT_Init_FreeType() is - called. See the next answer to know how to change it and why it may - be important. -
    • -
    - -

    Alternatively, some specific implementations of some FreeType 2 - components can be provided in a builds/system/ - directory (e.g. the Unix-specific ftsystem.c that uses - memory-mapped file for i/o).

    - -
    -
    -

    - II.3 How do I select the modules I need in my build? -

    - -

    The function FT_Init_FreeType() creates a new instance of - the FreeType 2 library and registers a set of "default" modules - before returning to the calling application. Its default implementation - is in the file src/base/ftinit.c.

    - -

    The list of default modules used by ftinit.c is located in - the configuration file include/freetype/config/ftmodule.h. - Normally, it is automatically generated by the build system by invoking - the "make modules" command in the top level - FreeType 2 directory (Note: this only works with GNU Make; you can - edit the file by hand otherwise). It does so by parsing all - sub-directories of src that contain a file named - module.mk.

    - -

    Note that a specific port or project is free to provide its own - implementation of ftinit.c in order to ensure a different - initialization sequence. For example, one could do something like:

    - -
      -
    • - Compile each module as a shared library (DLL or .so) with a - common "entry point" to retrieve a pointer to its module class - (there is already some code that allows this when compiling each - module). -
    • -
    • - Place these modules in a directory like - /usr/lib/freetype2/modules/. -
    • -
    • - Provide an implementation of ftinit.c that would scan the - directory for valid modules. -
    • -
    - -

    This example only emphasizes the flexibility that is left to - developers when building the library.

    - -
    -
    -

    - II.4 How do I compile all FreeType 2 files in a single - directory? -

    - -

    Some projects may need, for the sake of simplicity or ease of - building, to compile the FreeType 2 library with all source files - copied to a single directory. This is possible.

    - -

    To do so, you have to copy all source files located under - src to your own directory (you must retain the include files in - a distinct hierarchy though), then compile each of the FreeType 2 - component with the macro FT_FLAT_COMPILE. This will change the - way #include works during the build.

    - -
    - -
    - - - - -
    -

    - The FreeType 2 auto-hinter -

    -
    - - -

    - III.1 Under which license is the FreeType 2 auto-hinter released? -

    - -

    The auto-hinter was initially designed and implemented under contract - for Catharon Productions, Inc - which gladly accepted to released it under an open-source license - compatible with the FreeType one.

    - -

    This license can be found in - src/autohint/CatharonLicense.txt and requires that you cite - Catharon Productions in your documentation (just like you do with - FreeType) when using the auto-hinting module.

    - -

    Other than that, you still have the same freedom than with the good - old FreeType license. Enjoy!

    - -
    - -

    - III.2 How does the auto-hinter work? -

    - -

    Well, a complete description would be difficult. Have a look at the - dedicated auto-hinter pages on the - FreeType site, as they describe most of its details with graphics and - explanations. You could also look at the source code if you want - to :-)

    - -

    To give a few details, the auto-hinter is used to perform - grid-fitting on scalable font formats that use Bézier outlines as - their primary glyph image format (this means nearly all scalable font - formats today). If a given font driver doesn't provide its own hinter, - the auto-hinter is used by default. If a format-specific hinter is - provided, it is still possible to use the auto-hinter using the - FT_LOAD_FORCE_AUTOHINT bit flag when calling - FT_Load_Glyph().

    - -

    The auto-hinter currently doesn't use external hints to do its job, - as it automatically computes global metrics (when it "opens" a font for - the first time) and glyph "hints" from their outline. Note that we plan - the ability to specify external hints, given that it is based on a - constraint system. That could be used to support native hints in - Type 1/Type 2 fonts, for example.

    - -
    - -

    - III.3 Why does the auto-hinter doesn't work correctly with CJK - fonts? -

    - -

    The auto-hinter was first designed to manage and hint Latin-based - fonts, as they consist of most of the fonts available today. It doesn't - hint Asian fonts, as well as a few other complex scripts, because we - didn't put enough research on the topic yet. Hinting CJK isn't really - more difficult than Latin, just different, with a set of different - constraints (basically, more distortion of glyphs is acceptable as long - as certain features like triple-stem positions are respected more - strictly).

    - -

    We thus plan to handle such a case in the near future. Please be - patient.

    -
    - -
    - - - - -
    -

    - Other questions -

    -
    - - -

    - IV.1 Can I use FreeType to draw text on a pixmap with arbitratry depth? -

    - -

    Not directly, as FreeType is a font library, not a general purpose - graphics library or text rendering service. However, note that the - anti-aliased renderer allows you to convert a vectorial glyph outline - into a list of "spans" (i.e. horizontal pixel segments with same - coverage) that can be rendered through user-provided callbacks.

    - -

    By providing the appropriate span callback, you can render - anti-aliased text to any kind of surface. You can also use any color or - fill pattern/image if you want to. This process is called direct - rendering. For more information, please read the documentation - contained in the following files:

    - -
      -
    • -

      <freetype/ftimage.h> contains the definition of - the FT_Raster_Params type used with direct rendering.

      -
    • -
    • -

      <freetype/ftoutln.h> contains the definition of - the FT_Outline_Render() function that can be used to - convert vectorial outlines to span lists.

      -
    • -
    - -

    Here's some code that uses them:

    - -
    -    FT_Raster_Params  params;
    -    FT_Outline        outline;
    -       
    -
    -    ... load vectorial glyph in "outline" ...
    -       
    -    params.flags      = ft_raster_flag_aa | ft_raster_flag_direct;
    -    params.gray_spans = (FT_Raster_Span_Func)your_own_span_function_here;
    -    params.user       = your_own_data_pointer;
    -       
    -    error = FT_Outline_Render( library, &outline, &params );
    -
    - -

    Note that direct rendering is not available with monochrome - output, as the current renderer uses a two-pass algorithm to generate - glyphs with correct drop-out control.

    - -
    -
    -

    - IV.2 How can I set the color of text rendered by FreeType? -

    - -

    Basically, you can't do that, because FreeType is simply a font - library. In general, you will need to use your favorite graphics - library to draw the FreeType glyphs with the appropriate color.

    - -

    Note that for anti-aliased glyphs, you can "set the color" by using - direct rendering as described in this - answer.

    - -
    - -

    - IV.3 I set the pixel size to 8x8, but the resulting glyphs are larger - (or smaller) than that. Why? -

    - -

    A lot of people have difficulties to understand this topic, because - they think of glyphs as fixed-width resp. fixed-height "cells", like - those of fonts used in terminals/consoles. This assumption is simply - not valid with most "modern" font formats, even bitmapped-based ones - like PCF or BDF.

    - -

    Be aware that the character size that is set either through - FT_Set_Char_Size() or FT_Set_Pixel_Sizes() isn't - directly related to the dimension of the glyph bitmaps generated.

    - -

    Rather, the character size is indeed the size of an abstract - square, called the EM, used by typographers to design - fonts. Scaling two distinct fonts to the same character size, be it - expressed in points or pixels, will generally result in bitmaps with - distinct dimensions!

    - -

    Note that historically, the EM corresponded to the width of a capital - "M" in Latin typefaces. However, later improvements in typography led - to designs that greatly detract from this rule. Today, it is not - possible to connect the EM size to a specific font "feature" in a - reliable way.

    - -
    -
    -

    - IV.4 How can I compute the bounding box of a given string of text - without loading its glyphs before? -

    - -

    A lot of people want to be able to compute the size in pixels of a - simple string of text with minimal overhead. For example, that can be - useful to draw centered text within a button. (to be continued...)

    - -
    -
    -

    - IV.5 Which anti-aliasing algorithm is used by FreeType 2?

    - -

    The algorithm has been specifically designed for FreeType. It is - based on ideas that were originally found in the implementation of the - libArt graphics library to - compute the exact pixel coverage of a vector image with - absolutely no sub-sampling/filtering.

    - -

    However, these two implementations are radically distinct and use - vastly different models. The FreeType 2 renderer is optimized - specifically for rendering small complex shapes, like glyphs, at very - high speed while using very few memory; while libArt shines at general - shape/polygon processing, especially large ones.

    - -

    The FreeType 2 anti-aliasing renderer is indeed faster - than the monochrome renderer for small character sizes (typically - <20 pixels). The reason is that the monochrome renderer must - perform two passes on the outline in order to perform drop-out control - according to the TrueType specification (we could drop this requirement - later though).

    - -

    We will try to document its design in a later document, though this - is not a priority for now.

    - -
    - -

    - IV.6 When will FreeType 2 support OpenType? -

    - -

    Well, the engine already reads OpenType/CFF files perfectly. What it - doesn't do is handle "OpenType Layout" tables yet.

    - -

    FreeType 1 comes with a set of extensions that are used to load - and manage OpenType Layout tables. It even has a demonstration program - named ftstrtto to show its capabilities.

    - -

    For FreeType 2, we have decided that the layout operations - provided through these tables are better placed in a specific - text-layout library, (many people having asked for such a thing). This - new engine will not depend on FreeType2 explicitly and will be developed - as a separate project. We plan to announce it in a few weeks with all - gory details, once the definitive 2.0 release of FreeType has been - made.

    - -
    - -


    - - Back to FreeType homepage

    - -

    - - Index: xc/extras/freetype2/docs/glnames.py diff -u xc/extras/freetype2/docs/glnames.py:1.1.1.2 xc/extras/freetype2/docs/glnames.py:removed --- xc/extras/freetype2/docs/glnames.py:1.1.1.2 Tue May 15 23:45:44 2001 +++ xc/extras/freetype2/docs/glnames.py Fri Jan 18 15:21:45 2002 @@ -1,1706 +0,0 @@ -#!/usr/bin/env python -# - -# -# FreeType 2 glyph name builder -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -"""\ - -usage: %s - - This very simple python script is used to generate the glyph names - tables defined in the PSNames module. - - Its single argument is the name of the header file to be created. -""" - - -import sys, string - - -# This table is used to name the glyph according to the Macintosh -# specification. It is used by the TrueType Postscript names table -# -mac_standard_names = \ -[ - # 0 - ".notdef", ".null", "CR", "space", "exclam", - "quotedbl", "numbersign", "dollar", "percent", "ampersand", - - # 10 - "quotesingle", "parenleft", "parenright", "asterisk", "plus", - "comma", "hyphen", "period", "slash", "zero", - - # 20 - "one", "two", "three", "four", "five", - "six", "seven", "eight", "nine", "colon", - - # 30 - "semicolon", "less", "equal", "greater", "question", - "at", "A", "B", "C", "D", - - # 40 - "E", "F", "G", "H", "I", - "J", "K", "L", "M", "N", - - # 50 - "O", "P", "Q", "R", "S", - "T", "U", "V", "W", "X", - - # 60 - "Y", "Z", "bracketleft", "backslash", "bracketright", - "asciicircum", "underscore", "grave", "a", "b", - - # 70 - "c", "d", "e", "f", "g", - "h", "i", "j", "k", "l", - - # 80 - "m", "n", "o", "p", "q", - "r", "s", "t", "u", "v", - - # 90 - "w", "x", "y", "z", "braceleft", - "bar", "braceright", "asciitilde", "Adieresis", "Aring", - - # 100 - "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", - "aacute", "agrave", "acircumflex", "adieresis", "atilde", - - # 110 - "aring", "ccedilla", "eacute", "egrave", "ecircumflex", - "edieresis", "iacute", "igrave", "icircumflex", "idieresis", - - # 120 - "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", - "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", - - # 130 - "dagger", "degree", "cent", "sterling", "section", - "bullet", "paragraph", "germandbls", "registered", "copyright", - - # 140 - "trademark", "acute", "dieresis", "notequal", "AE", - "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", - - # 150 - "yen", "mu", "partialdiff", "summation", "product", - "pi", "integral", "ordfeminine", "ordmasculine", "Omega", - - # 160 - "ae", "oslash", "questiondown", "exclamdown", "logicalnot", - "radical", "florin", "approxequal", "Delta", "guillemotleft", - - # 170 - "guillemotright", "ellipsis", "nbspace", "Agrave", "Atilde", - "Otilde", "OE", "oe", "endash", "emdash", - - # 180 - "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", - "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", - - # 190 - "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", - "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", - "Acircumflex", - - # 200 - "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", - "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", - - # 210 - "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", - "dotlessi", "circumflex", "tilde", "macron", "breve", - - # 220 - "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", - "caron", "Lslash", "lslash", "Scaron", "scaron", - - # 230 - "Zcaron", "zcaron", "brokenbar", "Eth", "eth", - "Yacute", "yacute", "Thorn", "thorn", "minus", - - # 240 - "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", - "onequarter", "threequarters", "franc", "Gbreve", "gbreve", - - # 250 - "Idot", "Scedilla", "scedilla", "Cacute", "cacute", - "Ccaron", "ccaron", "dmacron" -] - - -t1_standard_strings = \ -[ - # 0 - ".notdef", "space", "exclam", "quotedbl", "numbersign", - "dollar", "percent", "ampersand", "quoteright", "parenleft", - - # 10 - "parenright", "asterisk", "plus", "comma", "hyphen", - "period", "slash", "zero", "one", "two", - - # 20 - "three", "four", "five", "six", "seven", - "eight", "nine", "colon", "semicolon", "less", - - # 30 - "equal", "greater", "question", "at", "A", - "B", "C", "D", "E", "F", - - # 40 - "G", "H", "I", "J", "K", - "L", "M", "N", "O", "P", - - # 50 - "Q", "R", "S", "T", "U", - "V", "W", "X", "Y", "Z", - - # 60 - "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", - "quoteleft", "a", "b", "c", "d", - - # 70 - "e", "f", "g", "h", "i", - "j", "k", "l", "m", "n", - - # 80 - "o", "p", "q", "r", "s", - "t", "u", "v", "w", "x", - - # 90 - "y", "z", "braceleft", "bar", "braceright", - "asciitilde", "exclamdown", "cent", "sterling", "fraction", - - # 100 - "yen", "florin", "section", "currency", "quotesingle", - "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", - - # 110 - "fl", "endash", "dagger", "daggerdbl", "periodcenter", - "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", - - # 120 - "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", - "acute", "circumflex", "tilde", "macron", "breve", - - # 130 - "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", - "ogonek", "caron", "emdash", "AE", "ordfeminine", - - # 140 - "Lslash", "Oslash", "OE", "ordmasculine", "ae", - "dotlessi", "Islash", "oslash", "oe", "germandbls", - - # 150 - "onesuperior", "logicalnot", "mu", "trademark", "Eth", - "onehalf", "plusminus", "Thorn", "onequarter", "divide", - - # 160 - "brokenbar", "degree", "thorn", "threequarters", "twosuperior", - "registered", "minus", "eth", "multiply", "threesuperior", - - # 170 - "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", - "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", - - # 180 - "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", - "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", - - # 190 - "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", - "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", - - # 200 - "aacute", "acircumflex", "adieresis", "agrave", "aring", - "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", - - # 210 - "egrave", "iacute", "icircumflex", "idieresis", "igrave", - "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", - - # 220 - "otilde", "scaron", "uacute", "ucircumflex", "udieresis", - "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", - - # 230 - "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", - "Acutesmall", - "parenleftsuperior", "parenrightsuperior", "twodotenleader", - "onedotenleader", "zerooldstyle", - - # 240 - "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", - "fiveoldstyle", - "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", - "commasuperior", - - # 250 - "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", - "bsuperior", - "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", - - # 260 - "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", - "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", - - # 270 - "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", - "Asmall", - "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", - - # 280 - "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", - "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", - - # 290 - "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", - "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", - - # 300 - "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", - "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", - "Dieresissmall", - - # 310 - "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", - "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", - "questiondownsmall", - - # 320 - "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", - "twothirds", "zerosuperior", "foursuperior", "fivesuperior", - "sixsuperior", - - # 330 - "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", - "oneinferior", - "twoinferior", "threeinferior", "fourinferior", "fiveinferior", - "sixinferior", - - # 340 - "seveninferior", "eightinferior", "nineinferior", "centinferior", - "dollarinferior", - "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", - "Acircumflexsmall", - - # 350 - "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", - "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", - "Igravesmall", - - # 360 - "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", - "Ntildesmall", - "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", - "Odieresissmall", - - # 370 - "OEsmall", "Oslashsmall", "Ugravesmall", "Uacautesmall", - "Ucircumflexsmall", - "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", - "001.000", - - # 380 - "001.001", "001.002", "001.003", "Black", "Bold", - "Book", "Light", "Medium", "Regular", "Roman", - - # 390 - "Semibold" -] - - -t1_standard_encoding = \ -[ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 0, 111, 112, 113, - 114, 0, 115, 116, 117, 118, 119, 120, 121, 122, - 0, 123, 0, 124, 125, 126, 127, 128, 129, 130, - - 131, 0, 132, 133, 0, 134, 135, 136, 137, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 138, 0, 139, 0, 0, - 0, 0, 140, 141, 142, 143, 0, 0, 0, 0, - 0, 144, 0, 0, 0, 145, 0, 0, 146, 147, - - 148, 149, 0, 0, 0, 0 -] - - -t1_expert_encoding = \ -[ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 229, 230, 0, 231, 232, 233, 234, - 235, 236, 237, 238, 13, 14, 15, 99, 239, 240, - - 241, 242, 243, 244, 245, 246, 247, 248, 27, 28, - 249, 250, 251, 252, 0, 253, 254, 255, 256, 257, - 0, 0, 0, 258, 0, 0, 259, 260, 261, 262, - 0, 0, 263, 264, 265, 0, 266, 109, 110, 267, - 268, 269, 0, 270, 271, 272, 273, 274, 275, 276, - - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 304, 305, 306, 0, 0, 307, 308, 309, 310, - 311, 0, 312, 0, 0, 312, 0, 0, 314, 315, - 0, 0, 316, 317, 318, 0, 0, 0, 158, 155, - 163, 319, 320, 321, 322, 323, 324, 325, 0, 0, - - 326, 150, 164, 169, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - - 373, 374, 375, 376, 377, 378 -] - - -# This data has been taken literally from the file `glyphlist.txt', -# version 1.2, 22 Oct 1998. It is available from -# -# http://partners.adobe.com/asn/developer/typeforum/unicodegn.html -# -adobe_glyph_list = """\ -0041;A;LATIN CAPITAL LETTER A -00C6;AE;LATIN CAPITAL LETTER AE -01FC;AEacute;LATIN CAPITAL LETTER AE WITH ACUTE -F7E6;AEsmall;LATIN SMALL CAPITAL LETTER AE -00C1;Aacute;LATIN CAPITAL LETTER A WITH ACUTE -F7E1;Aacutesmall;LATIN SMALL CAPITAL LETTER A WITH ACUTE -0102;Abreve;LATIN CAPITAL LETTER A WITH BREVE -00C2;Acircumflex;LATIN CAPITAL LETTER A WITH CIRCUMFLEX -F7E2;Acircumflexsmall;LATIN SMALL CAPITAL LETTER A WITH CIRCUMFLEX -F6C9;Acute;CAPITAL ACUTE ACCENT -F7B4;Acutesmall;SMALL CAPITAL ACUTE ACCENT -00C4;Adieresis;LATIN CAPITAL LETTER A WITH DIAERESIS -F7E4;Adieresissmall;LATIN SMALL CAPITAL LETTER A WITH DIAERESIS -00C0;Agrave;LATIN CAPITAL LETTER A WITH GRAVE -F7E0;Agravesmall;LATIN SMALL CAPITAL LETTER A WITH GRAVE -0391;Alpha;GREEK CAPITAL LETTER ALPHA -0386;Alphatonos;GREEK CAPITAL LETTER ALPHA WITH TONOS -0100;Amacron;LATIN CAPITAL LETTER A WITH MACRON -0104;Aogonek;LATIN CAPITAL LETTER A WITH OGONEK -00C5;Aring;LATIN CAPITAL LETTER A WITH RING ABOVE -01FA;Aringacute;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -F7E5;Aringsmall;LATIN SMALL CAPITAL LETTER A WITH RING ABOVE -F761;Asmall;LATIN SMALL CAPITAL LETTER A -00C3;Atilde;LATIN CAPITAL LETTER A WITH TILDE -F7E3;Atildesmall;LATIN SMALL CAPITAL LETTER A WITH TILDE -0042;B;LATIN CAPITAL LETTER B -0392;Beta;GREEK CAPITAL LETTER BETA -F6F4;Brevesmall;SMALL CAPITAL BREVE -F762;Bsmall;LATIN SMALL CAPITAL LETTER B -0043;C;LATIN CAPITAL LETTER C -0106;Cacute;LATIN CAPITAL LETTER C WITH ACUTE -F6CA;Caron;CAPITAL CARON -F6F5;Caronsmall;SMALL CAPITAL CARON -010C;Ccaron;LATIN CAPITAL LETTER C WITH CARON -00C7;Ccedilla;LATIN CAPITAL LETTER C WITH CEDILLA -F7E7;Ccedillasmall;LATIN SMALL CAPITAL LETTER C WITH CEDILLA -0108;Ccircumflex;LATIN CAPITAL LETTER C WITH CIRCUMFLEX -010A;Cdotaccent;LATIN CAPITAL LETTER C WITH DOT ABOVE -F7B8;Cedillasmall;SMALL CAPITAL CEDILLA -03A7;Chi;GREEK CAPITAL LETTER CHI -F6F6;Circumflexsmall;SMALL CAPITAL MODIFIER LETTER CIRCUMFLEX ACCENT -F763;Csmall;LATIN SMALL CAPITAL LETTER C -0044;D;LATIN CAPITAL LETTER D -010E;Dcaron;LATIN CAPITAL LETTER D WITH CARON -0110;Dcroat;LATIN CAPITAL LETTER D WITH STROKE -2206;Delta;INCREMENT -0394;Delta;GREEK CAPITAL LETTER DELTA;Duplicate -F6CB;Dieresis;CAPITAL DIAERESIS -F6CC;DieresisAcute;CAPITAL DIAERESIS ACUTE ACCENT -F6CD;DieresisGrave;CAPITAL DIAERESIS GRAVE ACCENT -F7A8;Dieresissmall;SMALL CAPITAL DIAERESIS -F6F7;Dotaccentsmall;SMALL CAPITAL DOT ABOVE -F764;Dsmall;LATIN SMALL CAPITAL LETTER D -0045;E;LATIN CAPITAL LETTER E -00C9;Eacute;LATIN CAPITAL LETTER E WITH ACUTE -F7E9;Eacutesmall;LATIN SMALL CAPITAL LETTER E WITH ACUTE -0114;Ebreve;LATIN CAPITAL LETTER E WITH BREVE -011A;Ecaron;LATIN CAPITAL LETTER E WITH CARON -00CA;Ecircumflex;LATIN CAPITAL LETTER E WITH CIRCUMFLEX -F7EA;Ecircumflexsmall;LATIN SMALL CAPITAL LETTER E WITH CIRCUMFLEX -00CB;Edieresis;LATIN CAPITAL LETTER E WITH DIAERESIS -F7EB;Edieresissmall;LATIN SMALL CAPITAL LETTER E WITH DIAERESIS -0116;Edotaccent;LATIN CAPITAL LETTER E WITH DOT ABOVE -00C8;Egrave;LATIN CAPITAL LETTER E WITH GRAVE -F7E8;Egravesmall;LATIN SMALL CAPITAL LETTER E WITH GRAVE -0112;Emacron;LATIN CAPITAL LETTER E WITH MACRON -014A;Eng;LATIN CAPITAL LETTER ENG -0118;Eogonek;LATIN CAPITAL LETTER E WITH OGONEK -0395;Epsilon;GREEK CAPITAL LETTER EPSILON -0388;Epsilontonos;GREEK CAPITAL LETTER EPSILON WITH TONOS -F765;Esmall;LATIN SMALL CAPITAL LETTER E -0397;Eta;GREEK CAPITAL LETTER ETA -0389;Etatonos;GREEK CAPITAL LETTER ETA WITH TONOS -00D0;Eth;LATIN CAPITAL LETTER ETH -F7F0;Ethsmall;LATIN SMALL CAPITAL LETTER ETH -20AC;Euro;EURO SIGN -0046;F;LATIN CAPITAL LETTER F -F766;Fsmall;LATIN SMALL CAPITAL LETTER F -0047;G;LATIN CAPITAL LETTER G -0393;Gamma;GREEK CAPITAL LETTER GAMMA -011E;Gbreve;LATIN CAPITAL LETTER G WITH BREVE -01E6;Gcaron;LATIN CAPITAL LETTER G WITH CARON -011C;Gcircumflex;LATIN CAPITAL LETTER G WITH CIRCUMFLEX -0122;Gcommaaccent;LATIN CAPITAL LETTER G WITH CEDILLA -0120;Gdotaccent;LATIN CAPITAL LETTER G WITH DOT ABOVE -F6CE;Grave;CAPITAL GRAVE ACCENT -F760;Gravesmall;SMALL CAPITAL GRAVE ACCENT -F767;Gsmall;LATIN SMALL CAPITAL LETTER G -0048;H;LATIN CAPITAL LETTER H -25CF;H18533;BLACK CIRCLE -25AA;H18543;BLACK SMALL SQUARE -25AB;H18551;WHITE SMALL SQUARE -25A1;H22073;WHITE SQUARE -0126;Hbar;LATIN CAPITAL LETTER H WITH STROKE -0124;Hcircumflex;LATIN CAPITAL LETTER H WITH CIRCUMFLEX -F768;Hsmall;LATIN SMALL CAPITAL LETTER H -F6CF;Hungarumlaut;CAPITAL DOUBLE ACUTE ACCENT -F6F8;Hungarumlautsmall;SMALL CAPITAL DOUBLE ACUTE ACCENT -0049;I;LATIN CAPITAL LETTER I -0132;IJ;LATIN CAPITAL LIGATURE IJ -00CD;Iacute;LATIN CAPITAL LETTER I WITH ACUTE -F7ED;Iacutesmall;LATIN SMALL CAPITAL LETTER I WITH ACUTE -012C;Ibreve;LATIN CAPITAL LETTER I WITH BREVE -00CE;Icircumflex;LATIN CAPITAL LETTER I WITH CIRCUMFLEX -F7EE;Icircumflexsmall;LATIN SMALL CAPITAL LETTER I WITH CIRCUMFLEX -00CF;Idieresis;LATIN CAPITAL LETTER I WITH DIAERESIS -F7EF;Idieresissmall;LATIN SMALL CAPITAL LETTER I WITH DIAERESIS -0130;Idotaccent;LATIN CAPITAL LETTER I WITH DOT ABOVE -2111;Ifraktur;BLACK-LETTER CAPITAL I -00CC;Igrave;LATIN CAPITAL LETTER I WITH GRAVE -F7EC;Igravesmall;LATIN SMALL CAPITAL LETTER I WITH GRAVE -012A;Imacron;LATIN CAPITAL LETTER I WITH MACRON -012E;Iogonek;LATIN CAPITAL LETTER I WITH OGONEK -0399;Iota;GREEK CAPITAL LETTER IOTA -03AA;Iotadieresis;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA -038A;Iotatonos;GREEK CAPITAL LETTER IOTA WITH TONOS -F769;Ismall;LATIN SMALL CAPITAL LETTER I -0128;Itilde;LATIN CAPITAL LETTER I WITH TILDE -004A;J;LATIN CAPITAL LETTER J -0134;Jcircumflex;LATIN CAPITAL LETTER J WITH CIRCUMFLEX -F76A;Jsmall;LATIN SMALL CAPITAL LETTER J -004B;K;LATIN CAPITAL LETTER K -039A;Kappa;GREEK CAPITAL LETTER KAPPA -0136;Kcommaaccent;LATIN CAPITAL LETTER K WITH CEDILLA -F76B;Ksmall;LATIN SMALL CAPITAL LETTER K -004C;L;LATIN CAPITAL LETTER L -F6BF;LL;LATIN CAPITAL LETTER LL -0139;Lacute;LATIN CAPITAL LETTER L WITH ACUTE -039B;Lambda;GREEK CAPITAL LETTER LAMDA -013D;Lcaron;LATIN CAPITAL LETTER L WITH CARON -013B;Lcommaaccent;LATIN CAPITAL LETTER L WITH CEDILLA -013F;Ldot;LATIN CAPITAL LETTER L WITH MIDDLE DOT -0141;Lslash;LATIN CAPITAL LETTER L WITH STROKE -F6F9;Lslashsmall;LATIN SMALL CAPITAL LETTER L WITH STROKE -F76C;Lsmall;LATIN SMALL CAPITAL LETTER L -004D;M;LATIN CAPITAL LETTER M -F6D0;Macron;CAPITAL MACRON -F7AF;Macronsmall;SMALL CAPITAL MACRON -F76D;Msmall;LATIN SMALL CAPITAL LETTER M -039C;Mu;GREEK CAPITAL LETTER MU -004E;N;LATIN CAPITAL LETTER N -0143;Nacute;LATIN CAPITAL LETTER N WITH ACUTE -0147;Ncaron;LATIN CAPITAL LETTER N WITH CARON -0145;Ncommaaccent;LATIN CAPITAL LETTER N WITH CEDILLA -F76E;Nsmall;LATIN SMALL CAPITAL LETTER N -00D1;Ntilde;LATIN CAPITAL LETTER N WITH TILDE -F7F1;Ntildesmall;LATIN SMALL CAPITAL LETTER N WITH TILDE -039D;Nu;GREEK CAPITAL LETTER NU -004F;O;LATIN CAPITAL LETTER O -0152;OE;LATIN CAPITAL LIGATURE OE -F6FA;OEsmall;LATIN SMALL CAPITAL LIGATURE OE -00D3;Oacute;LATIN CAPITAL LETTER O WITH ACUTE -F7F3;Oacutesmall;LATIN SMALL CAPITAL LETTER O WITH ACUTE -014E;Obreve;LATIN CAPITAL LETTER O WITH BREVE -00D4;Ocircumflex;LATIN CAPITAL LETTER O WITH CIRCUMFLEX -F7F4;Ocircumflexsmall;LATIN SMALL CAPITAL LETTER O WITH CIRCUMFLEX -00D6;Odieresis;LATIN CAPITAL LETTER O WITH DIAERESIS -F7F6;Odieresissmall;LATIN SMALL CAPITAL LETTER O WITH DIAERESIS -F6FB;Ogoneksmall;SMALL CAPITAL OGONEK -00D2;Ograve;LATIN CAPITAL LETTER O WITH GRAVE -F7F2;Ogravesmall;LATIN SMALL CAPITAL LETTER O WITH GRAVE -01A0;Ohorn;LATIN CAPITAL LETTER O WITH HORN -0150;Ohungarumlaut;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -014C;Omacron;LATIN CAPITAL LETTER O WITH MACRON -2126;Omega;OHM SIGN -03A9;Omega;GREEK CAPITAL LETTER OMEGA;Duplicate -038F;Omegatonos;GREEK CAPITAL LETTER OMEGA WITH TONOS -039F;Omicron;GREEK CAPITAL LETTER OMICRON -038C;Omicrontonos;GREEK CAPITAL LETTER OMICRON WITH TONOS -00D8;Oslash;LATIN CAPITAL LETTER O WITH STROKE -01FE;Oslashacute;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -F7F8;Oslashsmall;LATIN SMALL CAPITAL LETTER O WITH STROKE -F76F;Osmall;LATIN SMALL CAPITAL LETTER O -00D5;Otilde;LATIN CAPITAL LETTER O WITH TILDE -F7F5;Otildesmall;LATIN SMALL CAPITAL LETTER O WITH TILDE -0050;P;LATIN CAPITAL LETTER P -03A6;Phi;GREEK CAPITAL LETTER PHI -03A0;Pi;GREEK CAPITAL LETTER PI -03A8;Psi;GREEK CAPITAL LETTER PSI -F770;Psmall;LATIN SMALL CAPITAL LETTER P -0051;Q;LATIN CAPITAL LETTER Q -F771;Qsmall;LATIN SMALL CAPITAL LETTER Q -0052;R;LATIN CAPITAL LETTER R -0154;Racute;LATIN CAPITAL LETTER R WITH ACUTE -0158;Rcaron;LATIN CAPITAL LETTER R WITH CARON -0156;Rcommaaccent;LATIN CAPITAL LETTER R WITH CEDILLA -211C;Rfraktur;BLACK-LETTER CAPITAL R -03A1;Rho;GREEK CAPITAL LETTER RHO -F6FC;Ringsmall;SMALL CAPITAL RING ABOVE -F772;Rsmall;LATIN SMALL CAPITAL LETTER R -0053;S;LATIN CAPITAL LETTER S -250C;SF010000;BOX DRAWINGS LIGHT DOWN AND RIGHT -2514;SF020000;BOX DRAWINGS LIGHT UP AND RIGHT -2510;SF030000;BOX DRAWINGS LIGHT DOWN AND LEFT -2518;SF040000;BOX DRAWINGS LIGHT UP AND LEFT -253C;SF050000;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL -252C;SF060000;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL -2534;SF070000;BOX DRAWINGS LIGHT UP AND HORIZONTAL -251C;SF080000;BOX DRAWINGS LIGHT VERTICAL AND RIGHT -2524;SF090000;BOX DRAWINGS LIGHT VERTICAL AND LEFT -2500;SF100000;BOX DRAWINGS LIGHT HORIZONTAL -2502;SF110000;BOX DRAWINGS LIGHT VERTICAL -2561;SF190000;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE -2562;SF200000;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE -2556;SF210000;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE -2555;SF220000;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE -2563;SF230000;BOX DRAWINGS DOUBLE VERTICAL AND LEFT -2551;SF240000;BOX DRAWINGS DOUBLE VERTICAL -2557;SF250000;BOX DRAWINGS DOUBLE DOWN AND LEFT -255D;SF260000;BOX DRAWINGS DOUBLE UP AND LEFT -255C;SF270000;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE -255B;SF280000;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE -255E;SF360000;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE -255F;SF370000;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE -255A;SF380000;BOX DRAWINGS DOUBLE UP AND RIGHT -2554;SF390000;BOX DRAWINGS DOUBLE DOWN AND RIGHT -2569;SF400000;BOX DRAWINGS DOUBLE UP AND HORIZONTAL -2566;SF410000;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL -2560;SF420000;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT -2550;SF430000;BOX DRAWINGS DOUBLE HORIZONTAL -256C;SF440000;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL -2567;SF450000;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE -2568;SF460000;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE -2564;SF470000;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE -2565;SF480000;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE -2559;SF490000;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE -2558;SF500000;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE -2552;SF510000;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE -2553;SF520000;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE -256B;SF530000;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE -256A;SF540000;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE -015A;Sacute;LATIN CAPITAL LETTER S WITH ACUTE -0160;Scaron;LATIN CAPITAL LETTER S WITH CARON -F6FD;Scaronsmall;LATIN SMALL CAPITAL LETTER S WITH CARON -015E;Scedilla;LATIN CAPITAL LETTER S WITH CEDILLA -F6C1;Scedilla;LATIN CAPITAL LETTER S WITH CEDILLA;Duplicate -015C;Scircumflex;LATIN CAPITAL LETTER S WITH CIRCUMFLEX -0218;Scommaaccent;LATIN CAPITAL LETTER S WITH COMMA BELOW -03A3;Sigma;GREEK CAPITAL LETTER SIGMA -F773;Ssmall;LATIN SMALL CAPITAL LETTER S -0054;T;LATIN CAPITAL LETTER T -03A4;Tau;GREEK CAPITAL LETTER TAU -0166;Tbar;LATIN CAPITAL LETTER T WITH STROKE -0164;Tcaron;LATIN CAPITAL LETTER T WITH CARON -0162;Tcommaaccent;LATIN CAPITAL LETTER T WITH CEDILLA -021A;Tcommaaccent;LATIN CAPITAL LETTER T WITH COMMA BELOW;Duplicate -0398;Theta;GREEK CAPITAL LETTER THETA -00DE;Thorn;LATIN CAPITAL LETTER THORN -F7FE;Thornsmall;LATIN SMALL CAPITAL LETTER THORN -F6FE;Tildesmall;SMALL CAPITAL SMALL TILDE -F774;Tsmall;LATIN SMALL CAPITAL LETTER T -0055;U;LATIN CAPITAL LETTER U -00DA;Uacute;LATIN CAPITAL LETTER U WITH ACUTE -F7FA;Uacutesmall;LATIN SMALL CAPITAL LETTER U WITH ACUTE -016C;Ubreve;LATIN CAPITAL LETTER U WITH BREVE -00DB;Ucircumflex;LATIN CAPITAL LETTER U WITH CIRCUMFLEX -F7FB;Ucircumflexsmall;LATIN SMALL CAPITAL LETTER U WITH CIRCUMFLEX -00DC;Udieresis;LATIN CAPITAL LETTER U WITH DIAERESIS -F7FC;Udieresissmall;LATIN SMALL CAPITAL LETTER U WITH DIAERESIS -00D9;Ugrave;LATIN CAPITAL LETTER U WITH GRAVE -F7F9;Ugravesmall;LATIN SMALL CAPITAL LETTER U WITH GRAVE -01AF;Uhorn;LATIN CAPITAL LETTER U WITH HORN -0170;Uhungarumlaut;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -016A;Umacron;LATIN CAPITAL LETTER U WITH MACRON -0172;Uogonek;LATIN CAPITAL LETTER U WITH OGONEK -03A5;Upsilon;GREEK CAPITAL LETTER UPSILON -03D2;Upsilon1;GREEK UPSILON WITH HOOK SYMBOL -03AB;Upsilondieresis;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA -038E;Upsilontonos;GREEK CAPITAL LETTER UPSILON WITH TONOS -016E;Uring;LATIN CAPITAL LETTER U WITH RING ABOVE -F775;Usmall;LATIN SMALL CAPITAL LETTER U -0168;Utilde;LATIN CAPITAL LETTER U WITH TILDE -0056;V;LATIN CAPITAL LETTER V -F776;Vsmall;LATIN SMALL CAPITAL LETTER V -0057;W;LATIN CAPITAL LETTER W -1E82;Wacute;LATIN CAPITAL LETTER W WITH ACUTE -0174;Wcircumflex;LATIN CAPITAL LETTER W WITH CIRCUMFLEX -1E84;Wdieresis;LATIN CAPITAL LETTER W WITH DIAERESIS -1E80;Wgrave;LATIN CAPITAL LETTER W WITH GRAVE -F777;Wsmall;LATIN SMALL CAPITAL LETTER W -0058;X;LATIN CAPITAL LETTER X -039E;Xi;GREEK CAPITAL LETTER XI -F778;Xsmall;LATIN SMALL CAPITAL LETTER X -0059;Y;LATIN CAPITAL LETTER Y -00DD;Yacute;LATIN CAPITAL LETTER Y WITH ACUTE -F7FD;Yacutesmall;LATIN SMALL CAPITAL LETTER Y WITH ACUTE -0176;Ycircumflex;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX -0178;Ydieresis;LATIN CAPITAL LETTER Y WITH DIAERESIS -F7FF;Ydieresissmall;LATIN SMALL CAPITAL LETTER Y WITH DIAERESIS -1EF2;Ygrave;LATIN CAPITAL LETTER Y WITH GRAVE -F779;Ysmall;LATIN SMALL CAPITAL LETTER Y -005A;Z;LATIN CAPITAL LETTER Z -0179;Zacute;LATIN CAPITAL LETTER Z WITH ACUTE -017D;Zcaron;LATIN CAPITAL LETTER Z WITH CARON -F6FF;Zcaronsmall;LATIN SMALL CAPITAL LETTER Z WITH CARON -017B;Zdotaccent;LATIN CAPITAL LETTER Z WITH DOT ABOVE -0396;Zeta;GREEK CAPITAL LETTER ZETA -F77A;Zsmall;LATIN SMALL CAPITAL LETTER Z -0061;a;LATIN SMALL LETTER A -00E1;aacute;LATIN SMALL LETTER A WITH ACUTE -0103;abreve;LATIN SMALL LETTER A WITH BREVE -00E2;acircumflex;LATIN SMALL LETTER A WITH CIRCUMFLEX -00B4;acute;ACUTE ACCENT -0301;acutecomb;COMBINING ACUTE ACCENT -00E4;adieresis;LATIN SMALL LETTER A WITH DIAERESIS -00E6;ae;LATIN SMALL LETTER AE -01FD;aeacute;LATIN SMALL LETTER AE WITH ACUTE -2015;afii00208;HORIZONTAL BAR -0410;afii10017;CYRILLIC CAPITAL LETTER A -0411;afii10018;CYRILLIC CAPITAL LETTER BE -0412;afii10019;CYRILLIC CAPITAL LETTER VE -0413;afii10020;CYRILLIC CAPITAL LETTER GHE -0414;afii10021;CYRILLIC CAPITAL LETTER DE -0415;afii10022;CYRILLIC CAPITAL LETTER IE -0401;afii10023;CYRILLIC CAPITAL LETTER IO -0416;afii10024;CYRILLIC CAPITAL LETTER ZHE -0417;afii10025;CYRILLIC CAPITAL LETTER ZE -0418;afii10026;CYRILLIC CAPITAL LETTER I -0419;afii10027;CYRILLIC CAPITAL LETTER SHORT I -041A;afii10028;CYRILLIC CAPITAL LETTER KA -041B;afii10029;CYRILLIC CAPITAL LETTER EL -041C;afii10030;CYRILLIC CAPITAL LETTER EM -041D;afii10031;CYRILLIC CAPITAL LETTER EN -041E;afii10032;CYRILLIC CAPITAL LETTER O -041F;afii10033;CYRILLIC CAPITAL LETTER PE -0420;afii10034;CYRILLIC CAPITAL LETTER ER -0421;afii10035;CYRILLIC CAPITAL LETTER ES -0422;afii10036;CYRILLIC CAPITAL LETTER TE -0423;afii10037;CYRILLIC CAPITAL LETTER U -0424;afii10038;CYRILLIC CAPITAL LETTER EF -0425;afii10039;CYRILLIC CAPITAL LETTER HA -0426;afii10040;CYRILLIC CAPITAL LETTER TSE -0427;afii10041;CYRILLIC CAPITAL LETTER CHE -0428;afii10042;CYRILLIC CAPITAL LETTER SHA -0429;afii10043;CYRILLIC CAPITAL LETTER SHCHA -042A;afii10044;CYRILLIC CAPITAL LETTER HARD SIGN -042B;afii10045;CYRILLIC CAPITAL LETTER YERU -042C;afii10046;CYRILLIC CAPITAL LETTER SOFT SIGN -042D;afii10047;CYRILLIC CAPITAL LETTER E -042E;afii10048;CYRILLIC CAPITAL LETTER YU -042F;afii10049;CYRILLIC CAPITAL LETTER YA -0490;afii10050;CYRILLIC CAPITAL LETTER GHE WITH UPTURN -0402;afii10051;CYRILLIC CAPITAL LETTER DJE -0403;afii10052;CYRILLIC CAPITAL LETTER GJE -0404;afii10053;CYRILLIC CAPITAL LETTER UKRAINIAN IE -0405;afii10054;CYRILLIC CAPITAL LETTER DZE -0406;afii10055;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I -0407;afii10056;CYRILLIC CAPITAL LETTER YI -0408;afii10057;CYRILLIC CAPITAL LETTER JE -0409;afii10058;CYRILLIC CAPITAL LETTER LJE -040A;afii10059;CYRILLIC CAPITAL LETTER NJE -040B;afii10060;CYRILLIC CAPITAL LETTER TSHE -040C;afii10061;CYRILLIC CAPITAL LETTER KJE -040E;afii10062;CYRILLIC CAPITAL LETTER SHORT U -F6C4;afii10063;CYRILLIC SMALL LETTER GHE VARIANT -F6C5;afii10064;CYRILLIC SMALL LETTER BE VARIANT -0430;afii10065;CYRILLIC SMALL LETTER A -0431;afii10066;CYRILLIC SMALL LETTER BE -0432;afii10067;CYRILLIC SMALL LETTER VE -0433;afii10068;CYRILLIC SMALL LETTER GHE -0434;afii10069;CYRILLIC SMALL LETTER DE -0435;afii10070;CYRILLIC SMALL LETTER IE -0451;afii10071;CYRILLIC SMALL LETTER IO -0436;afii10072;CYRILLIC SMALL LETTER ZHE -0437;afii10073;CYRILLIC SMALL LETTER ZE -0438;afii10074;CYRILLIC SMALL LETTER I -0439;afii10075;CYRILLIC SMALL LETTER SHORT I -043A;afii10076;CYRILLIC SMALL LETTER KA -043B;afii10077;CYRILLIC SMALL LETTER EL -043C;afii10078;CYRILLIC SMALL LETTER EM -043D;afii10079;CYRILLIC SMALL LETTER EN -043E;afii10080;CYRILLIC SMALL LETTER O -043F;afii10081;CYRILLIC SMALL LETTER PE -0440;afii10082;CYRILLIC SMALL LETTER ER -0441;afii10083;CYRILLIC SMALL LETTER ES -0442;afii10084;CYRILLIC SMALL LETTER TE -0443;afii10085;CYRILLIC SMALL LETTER U -0444;afii10086;CYRILLIC SMALL LETTER EF -0445;afii10087;CYRILLIC SMALL LETTER HA -0446;afii10088;CYRILLIC SMALL LETTER TSE -0447;afii10089;CYRILLIC SMALL LETTER CHE -0448;afii10090;CYRILLIC SMALL LETTER SHA -0449;afii10091;CYRILLIC SMALL LETTER SHCHA -044A;afii10092;CYRILLIC SMALL LETTER HARD SIGN -044B;afii10093;CYRILLIC SMALL LETTER YERU -044C;afii10094;CYRILLIC SMALL LETTER SOFT SIGN -044D;afii10095;CYRILLIC SMALL LETTER E -044E;afii10096;CYRILLIC SMALL LETTER YU -044F;afii10097;CYRILLIC SMALL LETTER YA -0491;afii10098;CYRILLIC SMALL LETTER GHE WITH UPTURN -0452;afii10099;CYRILLIC SMALL LETTER DJE -0453;afii10100;CYRILLIC SMALL LETTER GJE -0454;afii10101;CYRILLIC SMALL LETTER UKRAINIAN IE -0455;afii10102;CYRILLIC SMALL LETTER DZE -0456;afii10103;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -0457;afii10104;CYRILLIC SMALL LETTER YI -0458;afii10105;CYRILLIC SMALL LETTER JE -0459;afii10106;CYRILLIC SMALL LETTER LJE -045A;afii10107;CYRILLIC SMALL LETTER NJE -045B;afii10108;CYRILLIC SMALL LETTER TSHE -045C;afii10109;CYRILLIC SMALL LETTER KJE -045E;afii10110;CYRILLIC SMALL LETTER SHORT U -040F;afii10145;CYRILLIC CAPITAL LETTER DZHE -0462;afii10146;CYRILLIC CAPITAL LETTER YAT -0472;afii10147;CYRILLIC CAPITAL LETTER FITA -0474;afii10148;CYRILLIC CAPITAL LETTER IZHITSA -F6C6;afii10192;CYRILLIC SMALL LETTER DE VARIANT -045F;afii10193;CYRILLIC SMALL LETTER DZHE -0463;afii10194;CYRILLIC SMALL LETTER YAT -0473;afii10195;CYRILLIC SMALL LETTER FITA -0475;afii10196;CYRILLIC SMALL LETTER IZHITSA -F6C7;afii10831;CYRILLIC SMALL LETTER PE VARIANT -F6C8;afii10832;CYRILLIC SMALL LETTER TE VARIANT -04D9;afii10846;CYRILLIC SMALL LETTER SCHWA -200E;afii299;LEFT-TO-RIGHT MARK -200F;afii300;RIGHT-TO-LEFT MARK -200D;afii301;ZERO WIDTH JOINER -066A;afii57381;ARABIC PERCENT SIGN -060C;afii57388;ARABIC COMMA -0660;afii57392;ARABIC-INDIC DIGIT ZERO -0661;afii57393;ARABIC-INDIC DIGIT ONE -0662;afii57394;ARABIC-INDIC DIGIT TWO -0663;afii57395;ARABIC-INDIC DIGIT THREE -0664;afii57396;ARABIC-INDIC DIGIT FOUR -0665;afii57397;ARABIC-INDIC DIGIT FIVE -0666;afii57398;ARABIC-INDIC DIGIT SIX -0667;afii57399;ARABIC-INDIC DIGIT SEVEN -0668;afii57400;ARABIC-INDIC DIGIT EIGHT -0669;afii57401;ARABIC-INDIC DIGIT NINE -061B;afii57403;ARABIC SEMICOLON -061F;afii57407;ARABIC QUESTION MARK -0621;afii57409;ARABIC LETTER HAMZA -0622;afii57410;ARABIC LETTER ALEF WITH MADDA ABOVE -0623;afii57411;ARABIC LETTER ALEF WITH HAMZA ABOVE -0624;afii57412;ARABIC LETTER WAW WITH HAMZA ABOVE -0625;afii57413;ARABIC LETTER ALEF WITH HAMZA BELOW -0626;afii57414;ARABIC LETTER YEH WITH HAMZA ABOVE -0627;afii57415;ARABIC LETTER ALEF -0628;afii57416;ARABIC LETTER BEH -0629;afii57417;ARABIC LETTER TEH MARBUTA -062A;afii57418;ARABIC LETTER TEH -062B;afii57419;ARABIC LETTER THEH -062C;afii57420;ARABIC LETTER JEEM -062D;afii57421;ARABIC LETTER HAH -062E;afii57422;ARABIC LETTER KHAH -062F;afii57423;ARABIC LETTER DAL -0630;afii57424;ARABIC LETTER THAL -0631;afii57425;ARABIC LETTER REH -0632;afii57426;ARABIC LETTER ZAIN -0633;afii57427;ARABIC LETTER SEEN -0634;afii57428;ARABIC LETTER SHEEN -0635;afii57429;ARABIC LETTER SAD -0636;afii57430;ARABIC LETTER DAD -0637;afii57431;ARABIC LETTER TAH -0638;afii57432;ARABIC LETTER ZAH -0639;afii57433;ARABIC LETTER AIN -063A;afii57434;ARABIC LETTER GHAIN -0640;afii57440;ARABIC TATWEEL -0641;afii57441;ARABIC LETTER FEH -0642;afii57442;ARABIC LETTER QAF -0643;afii57443;ARABIC LETTER KAF -0644;afii57444;ARABIC LETTER LAM -0645;afii57445;ARABIC LETTER MEEM -0646;afii57446;ARABIC LETTER NOON -0648;afii57448;ARABIC LETTER WAW -0649;afii57449;ARABIC LETTER ALEF MAKSURA -064A;afii57450;ARABIC LETTER YEH -064B;afii57451;ARABIC FATHATAN -064C;afii57452;ARABIC DAMMATAN -064D;afii57453;ARABIC KASRATAN -064E;afii57454;ARABIC FATHA -064F;afii57455;ARABIC DAMMA -0650;afii57456;ARABIC KASRA -0651;afii57457;ARABIC SHADDA -0652;afii57458;ARABIC SUKUN -0647;afii57470;ARABIC LETTER HEH -06A4;afii57505;ARABIC LETTER VEH -067E;afii57506;ARABIC LETTER PEH -0686;afii57507;ARABIC LETTER TCHEH -0698;afii57508;ARABIC LETTER JEH -06AF;afii57509;ARABIC LETTER GAF -0679;afii57511;ARABIC LETTER TTEH -0688;afii57512;ARABIC LETTER DDAL -0691;afii57513;ARABIC LETTER RREH -06BA;afii57514;ARABIC LETTER NOON GHUNNA -06D2;afii57519;ARABIC LETTER YEH BARREE -06D5;afii57534;ARABIC LETTER AE -20AA;afii57636;NEW SHEQEL SIGN -05BE;afii57645;HEBREW PUNCTUATION MAQAF -05C3;afii57658;HEBREW PUNCTUATION SOF PASUQ -05D0;afii57664;HEBREW LETTER ALEF -05D1;afii57665;HEBREW LETTER BET -05D2;afii57666;HEBREW LETTER GIMEL -05D3;afii57667;HEBREW LETTER DALET -05D4;afii57668;HEBREW LETTER HE -05D5;afii57669;HEBREW LETTER VAV -05D6;afii57670;HEBREW LETTER ZAYIN -05D7;afii57671;HEBREW LETTER HET -05D8;afii57672;HEBREW LETTER TET -05D9;afii57673;HEBREW LETTER YOD -05DA;afii57674;HEBREW LETTER FINAL KAF -05DB;afii57675;HEBREW LETTER KAF -05DC;afii57676;HEBREW LETTER LAMED -05DD;afii57677;HEBREW LETTER FINAL MEM -05DE;afii57678;HEBREW LETTER MEM -05DF;afii57679;HEBREW LETTER FINAL NUN -05E0;afii57680;HEBREW LETTER NUN -05E1;afii57681;HEBREW LETTER SAMEKH -05E2;afii57682;HEBREW LETTER AYIN -05E3;afii57683;HEBREW LETTER FINAL PE -05E4;afii57684;HEBREW LETTER PE -05E5;afii57685;HEBREW LETTER FINAL TSADI -05E6;afii57686;HEBREW LETTER TSADI -05E7;afii57687;HEBREW LETTER QOF -05E8;afii57688;HEBREW LETTER RESH -05E9;afii57689;HEBREW LETTER SHIN -05EA;afii57690;HEBREW LETTER TAV -FB2A;afii57694;HEBREW LETTER SHIN WITH SHIN DOT -FB2B;afii57695;HEBREW LETTER SHIN WITH SIN DOT -FB4B;afii57700;HEBREW LETTER VAV WITH HOLAM -FB1F;afii57705;HEBREW LIGATURE YIDDISH YOD YOD PATAH -05F0;afii57716;HEBREW LIGATURE YIDDISH DOUBLE VAV -05F1;afii57717;HEBREW LIGATURE YIDDISH VAV YOD -05F2;afii57718;HEBREW LIGATURE YIDDISH DOUBLE YOD -FB35;afii57723;HEBREW LETTER VAV WITH DAGESH -05B4;afii57793;HEBREW POINT HIRIQ -05B5;afii57794;HEBREW POINT TSERE -05B6;afii57795;HEBREW POINT SEGOL -05BB;afii57796;HEBREW POINT QUBUTS -05B8;afii57797;HEBREW POINT QAMATS -05B7;afii57798;HEBREW POINT PATAH -05B0;afii57799;HEBREW POINT SHEVA -05B2;afii57800;HEBREW POINT HATAF PATAH -05B1;afii57801;HEBREW POINT HATAF SEGOL -05B3;afii57802;HEBREW POINT HATAF QAMATS -05C2;afii57803;HEBREW POINT SIN DOT -05C1;afii57804;HEBREW POINT SHIN DOT -05B9;afii57806;HEBREW POINT HOLAM -05BC;afii57807;HEBREW POINT DAGESH OR MAPIQ -05BD;afii57839;HEBREW POINT METEG -05BF;afii57841;HEBREW POINT RAFE -05C0;afii57842;HEBREW PUNCTUATION PASEQ -02BC;afii57929;MODIFIER LETTER APOSTROPHE -2105;afii61248;CARE OF -2113;afii61289;SCRIPT SMALL L -2116;afii61352;NUMERO SIGN -202C;afii61573;POP DIRECTIONAL FORMATTING -202D;afii61574;LEFT-TO-RIGHT OVERRIDE -202E;afii61575;RIGHT-TO-LEFT OVERRIDE -200C;afii61664;ZERO WIDTH NON-JOINER -066D;afii63167;ARABIC FIVE POINTED STAR -02BD;afii64937;MODIFIER LETTER REVERSED COMMA -00E0;agrave;LATIN SMALL LETTER A WITH GRAVE -2135;aleph;ALEF SYMBOL -03B1;alpha;GREEK SMALL LETTER ALPHA -03AC;alphatonos;GREEK SMALL LETTER ALPHA WITH TONOS -0101;amacron;LATIN SMALL LETTER A WITH MACRON -0026;ampersand;AMPERSAND -F726;ampersandsmall;SMALL CAPITAL AMPERSAND -2220;angle;ANGLE -2329;angleleft;LEFT-POINTING ANGLE BRACKET -232A;angleright;RIGHT-POINTING ANGLE BRACKET -0387;anoteleia;GREEK ANO TELEIA -0105;aogonek;LATIN SMALL LETTER A WITH OGONEK -2248;approxequal;ALMOST EQUAL TO -00E5;aring;LATIN SMALL LETTER A WITH RING ABOVE -01FB;aringacute;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -2194;arrowboth;LEFT RIGHT ARROW -21D4;arrowdblboth;LEFT RIGHT DOUBLE ARROW -21D3;arrowdbldown;DOWNWARDS DOUBLE ARROW -21D0;arrowdblleft;LEFTWARDS DOUBLE ARROW -21D2;arrowdblright;RIGHTWARDS DOUBLE ARROW -21D1;arrowdblup;UPWARDS DOUBLE ARROW -2193;arrowdown;DOWNWARDS ARROW -F8E7;arrowhorizex;HORIZONTAL ARROW EXTENDER -2190;arrowleft;LEFTWARDS ARROW -2192;arrowright;RIGHTWARDS ARROW -2191;arrowup;UPWARDS ARROW -2195;arrowupdn;UP DOWN ARROW -21A8;arrowupdnbse;UP DOWN ARROW WITH BASE -F8E6;arrowvertex;VERTICAL ARROW EXTENDER -005E;asciicircum;CIRCUMFLEX ACCENT -007E;asciitilde;TILDE -002A;asterisk;ASTERISK -2217;asteriskmath;ASTERISK OPERATOR -F6E9;asuperior;SUPERSCRIPT LATIN SMALL LETTER A -0040;at;COMMERCIAL AT -00E3;atilde;LATIN SMALL LETTER A WITH TILDE -0062;b;LATIN SMALL LETTER B -005C;backslash;REVERSE SOLIDUS -007C;bar;VERTICAL LINE -03B2;beta;GREEK SMALL LETTER BETA -2588;block;FULL BLOCK -F8F4;braceex;CURLY BRACKET EXTENDER -007B;braceleft;LEFT CURLY BRACKET -F8F3;braceleftbt;LEFT CURLY BRACKET BOTTOM -F8F2;braceleftmid;LEFT CURLY BRACKET MID -F8F1;bracelefttp;LEFT CURLY BRACKET TOP -007D;braceright;RIGHT CURLY BRACKET -F8FE;bracerightbt;RIGHT CURLY BRACKET BOTTOM -F8FD;bracerightmid;RIGHT CURLY BRACKET MID -F8FC;bracerighttp;RIGHT CURLY BRACKET TOP -005B;bracketleft;LEFT SQUARE BRACKET -F8F0;bracketleftbt;LEFT SQUARE BRACKET BOTTOM -F8EF;bracketleftex;LEFT SQUARE BRACKET EXTENDER -F8EE;bracketlefttp;LEFT SQUARE BRACKET TOP -005D;bracketright;RIGHT SQUARE BRACKET -F8FB;bracketrightbt;RIGHT SQUARE BRACKET BOTTOM -F8FA;bracketrightex;RIGHT SQUARE BRACKET EXTENDER -F8F9;bracketrighttp;RIGHT SQUARE BRACKET TOP -02D8;breve;BREVE -00A6;brokenbar;BROKEN BAR -F6EA;bsuperior;SUPERSCRIPT LATIN SMALL LETTER B -2022;bullet;BULLET -0063;c;LATIN SMALL LETTER C -0107;cacute;LATIN SMALL LETTER C WITH ACUTE -02C7;caron;CARON -21B5;carriagereturn;DOWNWARDS ARROW WITH CORNER LEFTWARDS -010D;ccaron;LATIN SMALL LETTER C WITH CARON -00E7;ccedilla;LATIN SMALL LETTER C WITH CEDILLA -0109;ccircumflex;LATIN SMALL LETTER C WITH CIRCUMFLEX -010B;cdotaccent;LATIN SMALL LETTER C WITH DOT ABOVE -00B8;cedilla;CEDILLA -00A2;cent;CENT SIGN -F6DF;centinferior;SUBSCRIPT CENT SIGN -F7A2;centoldstyle;OLDSTYLE CENT SIGN -F6E0;centsuperior;SUPERSCRIPT CENT SIGN -03C7;chi;GREEK SMALL LETTER CHI -25CB;circle;WHITE CIRCLE -2297;circlemultiply;CIRCLED TIMES -2295;circleplus;CIRCLED PLUS -02C6;circumflex;MODIFIER LETTER CIRCUMFLEX ACCENT -2663;club;BLACK CLUB SUIT -003A;colon;COLON -20A1;colonmonetary;COLON SIGN -002C;comma;COMMA -F6C3;commaaccent;COMMA BELOW -F6E1;commainferior;SUBSCRIPT COMMA -F6E2;commasuperior;SUPERSCRIPT COMMA -2245;congruent;APPROXIMATELY EQUAL TO -00A9;copyright;COPYRIGHT SIGN -F8E9;copyrightsans;COPYRIGHT SIGN SANS SERIF -F6D9;copyrightserif;COPYRIGHT SIGN SERIF -00A4;currency;CURRENCY SIGN -F6D1;cyrBreve;CAPITAL CYRILLIC BREVE -F6D2;cyrFlex;CAPITAL CYRILLIC CIRCUMFLEX -F6D4;cyrbreve;CYRILLIC BREVE -F6D5;cyrflex;CYRILLIC CIRCUMFLEX -0064;d;LATIN SMALL LETTER D -2020;dagger;DAGGER -2021;daggerdbl;DOUBLE DAGGER -F6D3;dblGrave;CAPITAL DOUBLE GRAVE ACCENT -F6D6;dblgrave;DOUBLE GRAVE ACCENT -010F;dcaron;LATIN SMALL LETTER D WITH CARON -0111;dcroat;LATIN SMALL LETTER D WITH STROKE -00B0;degree;DEGREE SIGN -03B4;delta;GREEK SMALL LETTER DELTA -2666;diamond;BLACK DIAMOND SUIT -00A8;dieresis;DIAERESIS -F6D7;dieresisacute;DIAERESIS ACUTE ACCENT -F6D8;dieresisgrave;DIAERESIS GRAVE ACCENT -0385;dieresistonos;GREEK DIALYTIKA TONOS -00F7;divide;DIVISION SIGN -2593;dkshade;DARK SHADE -2584;dnblock;LOWER HALF BLOCK -0024;dollar;DOLLAR SIGN -F6E3;dollarinferior;SUBSCRIPT DOLLAR SIGN -F724;dollaroldstyle;OLDSTYLE DOLLAR SIGN -F6E4;dollarsuperior;SUPERSCRIPT DOLLAR SIGN -20AB;dong;DONG SIGN -02D9;dotaccent;DOT ABOVE -0323;dotbelowcomb;COMBINING DOT BELOW -0131;dotlessi;LATIN SMALL LETTER DOTLESS I -F6BE;dotlessj;LATIN SMALL LETTER DOTLESS J -22C5;dotmath;DOT OPERATOR -F6EB;dsuperior;SUPERSCRIPT LATIN SMALL LETTER D -0065;e;LATIN SMALL LETTER E -00E9;eacute;LATIN SMALL LETTER E WITH ACUTE -0115;ebreve;LATIN SMALL LETTER E WITH BREVE -011B;ecaron;LATIN SMALL LETTER E WITH CARON -00EA;ecircumflex;LATIN SMALL LETTER E WITH CIRCUMFLEX -00EB;edieresis;LATIN SMALL LETTER E WITH DIAERESIS -0117;edotaccent;LATIN SMALL LETTER E WITH DOT ABOVE -00E8;egrave;LATIN SMALL LETTER E WITH GRAVE -0038;eight;DIGIT EIGHT -2088;eightinferior;SUBSCRIPT EIGHT -F738;eightoldstyle;OLDSTYLE DIGIT EIGHT -2078;eightsuperior;SUPERSCRIPT EIGHT -2208;element;ELEMENT OF -2026;ellipsis;HORIZONTAL ELLIPSIS -0113;emacron;LATIN SMALL LETTER E WITH MACRON -2014;emdash;EM DASH -2205;emptyset;EMPTY SET -2013;endash;EN DASH -014B;eng;LATIN SMALL LETTER ENG -0119;eogonek;LATIN SMALL LETTER E WITH OGONEK -03B5;epsilon;GREEK SMALL LETTER EPSILON -03AD;epsilontonos;GREEK SMALL LETTER EPSILON WITH TONOS -003D;equal;EQUALS SIGN -2261;equivalence;IDENTICAL TO -212E;estimated;ESTIMATED SYMBOL -F6EC;esuperior;SUPERSCRIPT LATIN SMALL LETTER E -03B7;eta;GREEK SMALL LETTER ETA -03AE;etatonos;GREEK SMALL LETTER ETA WITH TONOS -00F0;eth;LATIN SMALL LETTER ETH -0021;exclam;EXCLAMATION MARK -203C;exclamdbl;DOUBLE EXCLAMATION MARK -00A1;exclamdown;INVERTED EXCLAMATION MARK -F7A1;exclamdownsmall;SMALL CAPITAL INVERTED EXCLAMATION MARK -F721;exclamsmall;SMALL CAPITAL EXCLAMATION MARK -2203;existential;THERE EXISTS -0066;f;LATIN SMALL LETTER F -2640;female;FEMALE SIGN -FB00;ff;LATIN SMALL LIGATURE FF -FB03;ffi;LATIN SMALL LIGATURE FFI -FB04;ffl;LATIN SMALL LIGATURE FFL -FB01;fi;LATIN SMALL LIGATURE FI -2012;figuredash;FIGURE DASH -25A0;filledbox;BLACK SQUARE -25AC;filledrect;BLACK RECTANGLE -0035;five;DIGIT FIVE -215D;fiveeighths;VULGAR FRACTION FIVE EIGHTHS -2085;fiveinferior;SUBSCRIPT FIVE -F735;fiveoldstyle;OLDSTYLE DIGIT FIVE -2075;fivesuperior;SUPERSCRIPT FIVE -FB02;fl;LATIN SMALL LIGATURE FL -0192;florin;LATIN SMALL LETTER F WITH HOOK -0034;four;DIGIT FOUR -2084;fourinferior;SUBSCRIPT FOUR -F734;fouroldstyle;OLDSTYLE DIGIT FOUR -2074;foursuperior;SUPERSCRIPT FOUR -2044;fraction;FRACTION SLASH -2215;fraction;DIVISION SLASH;Duplicate -20A3;franc;FRENCH FRANC SIGN -0067;g;LATIN SMALL LETTER G -03B3;gamma;GREEK SMALL LETTER GAMMA -011F;gbreve;LATIN SMALL LETTER G WITH BREVE -01E7;gcaron;LATIN SMALL LETTER G WITH CARON -011D;gcircumflex;LATIN SMALL LETTER G WITH CIRCUMFLEX -0123;gcommaaccent;LATIN SMALL LETTER G WITH CEDILLA -0121;gdotaccent;LATIN SMALL LETTER G WITH DOT ABOVE -00DF;germandbls;LATIN SMALL LETTER SHARP S -2207;gradient;NABLA -0060;grave;GRAVE ACCENT -0300;gravecomb;COMBINING GRAVE ACCENT -003E;greater;GREATER-THAN SIGN -2265;greaterequal;GREATER-THAN OR EQUAL TO -00AB;guillemotleft;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -00BB;guillemotright;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -2039;guilsinglleft;SINGLE LEFT-POINTING ANGLE QUOTATION MARK -203A;guilsinglright;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -0068;h;LATIN SMALL LETTER H -0127;hbar;LATIN SMALL LETTER H WITH STROKE -0125;hcircumflex;LATIN SMALL LETTER H WITH CIRCUMFLEX -2665;heart;BLACK HEART SUIT -0309;hookabovecomb;COMBINING HOOK ABOVE -2302;house;HOUSE -02DD;hungarumlaut;DOUBLE ACUTE ACCENT -002D;hyphen;HYPHEN-MINUS -00AD;hyphen;SOFT HYPHEN;Duplicate -F6E5;hypheninferior;SUBSCRIPT HYPHEN-MINUS -F6E6;hyphensuperior;SUPERSCRIPT HYPHEN-MINUS -0069;i;LATIN SMALL LETTER I -00ED;iacute;LATIN SMALL LETTER I WITH ACUTE -012D;ibreve;LATIN SMALL LETTER I WITH BREVE -00EE;icircumflex;LATIN SMALL LETTER I WITH CIRCUMFLEX -00EF;idieresis;LATIN SMALL LETTER I WITH DIAERESIS -00EC;igrave;LATIN SMALL LETTER I WITH GRAVE -0133;ij;LATIN SMALL LIGATURE IJ -012B;imacron;LATIN SMALL LETTER I WITH MACRON -221E;infinity;INFINITY -222B;integral;INTEGRAL -2321;integralbt;BOTTOM HALF INTEGRAL -F8F5;integralex;INTEGRAL EXTENDER -2320;integraltp;TOP HALF INTEGRAL -2229;intersection;INTERSECTION -25D8;invbullet;INVERSE BULLET -25D9;invcircle;INVERSE WHITE CIRCLE -263B;invsmileface;BLACK SMILING FACE -012F;iogonek;LATIN SMALL LETTER I WITH OGONEK -03B9;iota;GREEK SMALL LETTER IOTA -03CA;iotadieresis;GREEK SMALL LETTER IOTA WITH DIALYTIKA -0390;iotadieresistonos;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -03AF;iotatonos;GREEK SMALL LETTER IOTA WITH TONOS -F6ED;isuperior;SUPERSCRIPT LATIN SMALL LETTER I -0129;itilde;LATIN SMALL LETTER I WITH TILDE -006A;j;LATIN SMALL LETTER J -0135;jcircumflex;LATIN SMALL LETTER J WITH CIRCUMFLEX -006B;k;LATIN SMALL LETTER K -03BA;kappa;GREEK SMALL LETTER KAPPA -0137;kcommaaccent;LATIN SMALL LETTER K WITH CEDILLA -0138;kgreenlandic;LATIN SMALL LETTER KRA -006C;l;LATIN SMALL LETTER L -013A;lacute;LATIN SMALL LETTER L WITH ACUTE -03BB;lambda;GREEK SMALL LETTER LAMDA -013E;lcaron;LATIN SMALL LETTER L WITH CARON -013C;lcommaaccent;LATIN SMALL LETTER L WITH CEDILLA -0140;ldot;LATIN SMALL LETTER L WITH MIDDLE DOT -003C;less;LESS-THAN SIGN -2264;lessequal;LESS-THAN OR EQUAL TO -258C;lfblock;LEFT HALF BLOCK -20A4;lira;LIRA SIGN -F6C0;ll;LATIN SMALL LETTER LL -2227;logicaland;LOGICAL AND -00AC;logicalnot;NOT SIGN -2228;logicalor;LOGICAL OR -017F;longs;LATIN SMALL LETTER LONG S -25CA;lozenge;LOZENGE -0142;lslash;LATIN SMALL LETTER L WITH STROKE -F6EE;lsuperior;SUPERSCRIPT LATIN SMALL LETTER L -2591;ltshade;LIGHT SHADE -006D;m;LATIN SMALL LETTER M -00AF;macron;MACRON -02C9;macron;MODIFIER LETTER MACRON;Duplicate -2642;male;MALE SIGN -2212;minus;MINUS SIGN -2032;minute;PRIME -F6EF;msuperior;SUPERSCRIPT LATIN SMALL LETTER M -00B5;mu;MICRO SIGN -03BC;mu;GREEK SMALL LETTER MU;Duplicate -00D7;multiply;MULTIPLICATION SIGN -266A;musicalnote;EIGHTH NOTE -266B;musicalnotedbl;BEAMED EIGHTH NOTES -006E;n;LATIN SMALL LETTER N -0144;nacute;LATIN SMALL LETTER N WITH ACUTE -0149;napostrophe;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -0148;ncaron;LATIN SMALL LETTER N WITH CARON -0146;ncommaaccent;LATIN SMALL LETTER N WITH CEDILLA -0039;nine;DIGIT NINE -2089;nineinferior;SUBSCRIPT NINE -F739;nineoldstyle;OLDSTYLE DIGIT NINE -2079;ninesuperior;SUPERSCRIPT NINE -2209;notelement;NOT AN ELEMENT OF -2260;notequal;NOT EQUAL TO -2284;notsubset;NOT A SUBSET OF -207F;nsuperior;SUPERSCRIPT LATIN SMALL LETTER N -00F1;ntilde;LATIN SMALL LETTER N WITH TILDE -03BD;nu;GREEK SMALL LETTER NU -0023;numbersign;NUMBER SIGN -006F;o;LATIN SMALL LETTER O -00F3;oacute;LATIN SMALL LETTER O WITH ACUTE -014F;obreve;LATIN SMALL LETTER O WITH BREVE -00F4;ocircumflex;LATIN SMALL LETTER O WITH CIRCUMFLEX -00F6;odieresis;LATIN SMALL LETTER O WITH DIAERESIS -0153;oe;LATIN SMALL LIGATURE OE -02DB;ogonek;OGONEK -00F2;ograve;LATIN SMALL LETTER O WITH GRAVE -01A1;ohorn;LATIN SMALL LETTER O WITH HORN -0151;ohungarumlaut;LATIN SMALL LETTER O WITH DOUBLE ACUTE -014D;omacron;LATIN SMALL LETTER O WITH MACRON -03C9;omega;GREEK SMALL LETTER OMEGA -03D6;omega1;GREEK PI SYMBOL -03CE;omegatonos;GREEK SMALL LETTER OMEGA WITH TONOS -03BF;omicron;GREEK SMALL LETTER OMICRON -03CC;omicrontonos;GREEK SMALL LETTER OMICRON WITH TONOS -0031;one;DIGIT ONE -2024;onedotenleader;ONE DOT LEADER -215B;oneeighth;VULGAR FRACTION ONE EIGHTH -F6DC;onefitted;PROPORTIONAL DIGIT ONE -00BD;onehalf;VULGAR FRACTION ONE HALF -2081;oneinferior;SUBSCRIPT ONE -F731;oneoldstyle;OLDSTYLE DIGIT ONE -00BC;onequarter;VULGAR FRACTION ONE QUARTER -00B9;onesuperior;SUPERSCRIPT ONE -2153;onethird;VULGAR FRACTION ONE THIRD -25E6;openbullet;WHITE BULLET -00AA;ordfeminine;FEMININE ORDINAL INDICATOR -00BA;ordmasculine;MASCULINE ORDINAL INDICATOR -221F;orthogonal;RIGHT ANGLE -00F8;oslash;LATIN SMALL LETTER O WITH STROKE -01FF;oslashacute;LATIN SMALL LETTER O WITH STROKE AND ACUTE -F6F0;osuperior;SUPERSCRIPT LATIN SMALL LETTER O -00F5;otilde;LATIN SMALL LETTER O WITH TILDE -0070;p;LATIN SMALL LETTER P -00B6;paragraph;PILCROW SIGN -0028;parenleft;LEFT PARENTHESIS -F8ED;parenleftbt;LEFT PAREN BOTTOM -F8EC;parenleftex;LEFT PAREN EXTENDER -208D;parenleftinferior;SUBSCRIPT LEFT PARENTHESIS -207D;parenleftsuperior;SUPERSCRIPT LEFT PARENTHESIS -F8EB;parenlefttp;LEFT PAREN TOP -0029;parenright;RIGHT PARENTHESIS -F8F8;parenrightbt;RIGHT PAREN BOTTOM -F8F7;parenrightex;RIGHT PAREN EXTENDER -208E;parenrightinferior;SUBSCRIPT RIGHT PARENTHESIS -207E;parenrightsuperior;SUPERSCRIPT RIGHT PARENTHESIS -F8F6;parenrighttp;RIGHT PAREN TOP -2202;partialdiff;PARTIAL DIFFERENTIAL -0025;percent;PERCENT SIGN -002E;period;FULL STOP -00B7;periodcentered;MIDDLE DOT -2219;periodcentered;BULLET OPERATOR;Duplicate -F6E7;periodinferior;SUBSCRIPT FULL STOP -F6E8;periodsuperior;SUPERSCRIPT FULL STOP -22A5;perpendicular;UP TACK -2030;perthousand;PER MILLE SIGN -20A7;peseta;PESETA SIGN -03C6;phi;GREEK SMALL LETTER PHI -03D5;phi1;GREEK PHI SYMBOL -03C0;pi;GREEK SMALL LETTER PI -002B;plus;PLUS SIGN -00B1;plusminus;PLUS-MINUS SIGN -211E;prescription;PRESCRIPTION TAKE -220F;product;N-ARY PRODUCT -2282;propersubset;SUBSET OF -2283;propersuperset;SUPERSET OF -221D;proportional;PROPORTIONAL TO -03C8;psi;GREEK SMALL LETTER PSI -0071;q;LATIN SMALL LETTER Q -003F;question;QUESTION MARK -00BF;questiondown;INVERTED QUESTION MARK -F7BF;questiondownsmall;SMALL CAPITAL INVERTED QUESTION MARK -F73F;questionsmall;SMALL CAPITAL QUESTION MARK -0022;quotedbl;QUOTATION MARK -201E;quotedblbase;DOUBLE LOW-9 QUOTATION MARK -201C;quotedblleft;LEFT DOUBLE QUOTATION MARK -201D;quotedblright;RIGHT DOUBLE QUOTATION MARK -2018;quoteleft;LEFT SINGLE QUOTATION MARK -201B;quotereversed;SINGLE HIGH-REVERSED-9 QUOTATION MARK -2019;quoteright;RIGHT SINGLE QUOTATION MARK -201A;quotesinglbase;SINGLE LOW-9 QUOTATION MARK -0027;quotesingle;APOSTROPHE -0072;r;LATIN SMALL LETTER R -0155;racute;LATIN SMALL LETTER R WITH ACUTE -221A;radical;SQUARE ROOT -F8E5;radicalex;RADICAL EXTENDER -0159;rcaron;LATIN SMALL LETTER R WITH CARON -0157;rcommaaccent;LATIN SMALL LETTER R WITH CEDILLA -2286;reflexsubset;SUBSET OF OR EQUAL TO -2287;reflexsuperset;SUPERSET OF OR EQUAL TO -00AE;registered;REGISTERED SIGN -F8E8;registersans;REGISTERED SIGN SANS SERIF -F6DA;registerserif;REGISTERED SIGN SERIF -2310;revlogicalnot;REVERSED NOT SIGN -03C1;rho;GREEK SMALL LETTER RHO -02DA;ring;RING ABOVE -F6F1;rsuperior;SUPERSCRIPT LATIN SMALL LETTER R -2590;rtblock;RIGHT HALF BLOCK -F6DD;rupiah;RUPIAH SIGN -0073;s;LATIN SMALL LETTER S -015B;sacute;LATIN SMALL LETTER S WITH ACUTE -0161;scaron;LATIN SMALL LETTER S WITH CARON -015F;scedilla;LATIN SMALL LETTER S WITH CEDILLA -F6C2;scedilla;LATIN SMALL LETTER S WITH CEDILLA;Duplicate -015D;scircumflex;LATIN SMALL LETTER S WITH CIRCUMFLEX -0219;scommaaccent;LATIN SMALL LETTER S WITH COMMA BELOW -2033;second;DOUBLE PRIME -00A7;section;SECTION SIGN -003B;semicolon;SEMICOLON -0037;seven;DIGIT SEVEN -215E;seveneighths;VULGAR FRACTION SEVEN EIGHTHS -2087;seveninferior;SUBSCRIPT SEVEN -F737;sevenoldstyle;OLDSTYLE DIGIT SEVEN -2077;sevensuperior;SUPERSCRIPT SEVEN -2592;shade;MEDIUM SHADE -03C3;sigma;GREEK SMALL LETTER SIGMA -03C2;sigma1;GREEK SMALL LETTER FINAL SIGMA -223C;similar;TILDE OPERATOR -0036;six;DIGIT SIX -2086;sixinferior;SUBSCRIPT SIX -F736;sixoldstyle;OLDSTYLE DIGIT SIX -2076;sixsuperior;SUPERSCRIPT SIX -002F;slash;SOLIDUS -263A;smileface;WHITE SMILING FACE -0020;space;SPACE -00A0;space;NO-BREAK SPACE;Duplicate -2660;spade;BLACK SPADE SUIT -F6F2;ssuperior;SUPERSCRIPT LATIN SMALL LETTER S -00A3;sterling;POUND SIGN -220B;suchthat;CONTAINS AS MEMBER -2211;summation;N-ARY SUMMATION -263C;sun;WHITE SUN WITH RAYS -0074;t;LATIN SMALL LETTER T -03C4;tau;GREEK SMALL LETTER TAU -0167;tbar;LATIN SMALL LETTER T WITH STROKE -0165;tcaron;LATIN SMALL LETTER T WITH CARON -0163;tcommaaccent;LATIN SMALL LETTER T WITH CEDILLA -021B;tcommaaccent;LATIN SMALL LETTER T WITH COMMA BELOW;Duplicate -2234;therefore;THEREFORE -03B8;theta;GREEK SMALL LETTER THETA -03D1;theta1;GREEK THETA SYMBOL -00FE;thorn;LATIN SMALL LETTER THORN -0033;three;DIGIT THREE -215C;threeeighths;VULGAR FRACTION THREE EIGHTHS -2083;threeinferior;SUBSCRIPT THREE -F733;threeoldstyle;OLDSTYLE DIGIT THREE -00BE;threequarters;VULGAR FRACTION THREE QUARTERS -F6DE;threequartersemdash;THREE QUARTERS EM DASH -00B3;threesuperior;SUPERSCRIPT THREE -02DC;tilde;SMALL TILDE -0303;tildecomb;COMBINING TILDE -0384;tonos;GREEK TONOS -2122;trademark;TRADE MARK SIGN -F8EA;trademarksans;TRADE MARK SIGN SANS SERIF -F6DB;trademarkserif;TRADE MARK SIGN SERIF -25BC;triagdn;BLACK DOWN-POINTING TRIANGLE -25C4;triaglf;BLACK LEFT-POINTING POINTER -25BA;triagrt;BLACK RIGHT-POINTING POINTER -25B2;triagup;BLACK UP-POINTING TRIANGLE -F6F3;tsuperior;SUPERSCRIPT LATIN SMALL LETTER T -0032;two;DIGIT TWO -2025;twodotenleader;TWO DOT LEADER -2082;twoinferior;SUBSCRIPT TWO -F732;twooldstyle;OLDSTYLE DIGIT TWO -00B2;twosuperior;SUPERSCRIPT TWO -2154;twothirds;VULGAR FRACTION TWO THIRDS -0075;u;LATIN SMALL LETTER U -00FA;uacute;LATIN SMALL LETTER U WITH ACUTE -016D;ubreve;LATIN SMALL LETTER U WITH BREVE -00FB;ucircumflex;LATIN SMALL LETTER U WITH CIRCUMFLEX -00FC;udieresis;LATIN SMALL LETTER U WITH DIAERESIS -00F9;ugrave;LATIN SMALL LETTER U WITH GRAVE -01B0;uhorn;LATIN SMALL LETTER U WITH HORN -0171;uhungarumlaut;LATIN SMALL LETTER U WITH DOUBLE ACUTE -016B;umacron;LATIN SMALL LETTER U WITH MACRON -005F;underscore;LOW LINE -2017;underscoredbl;DOUBLE LOW LINE -222A;union;UNION -2200;universal;FOR ALL -0173;uogonek;LATIN SMALL LETTER U WITH OGONEK -2580;upblock;UPPER HALF BLOCK -03C5;upsilon;GREEK SMALL LETTER UPSILON -03CB;upsilondieresis;GREEK SMALL LETTER UPSILON WITH DIALYTIKA -03B0;upsilondieresistonos;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -03CD;upsilontonos;GREEK SMALL LETTER UPSILON WITH TONOS -016F;uring;LATIN SMALL LETTER U WITH RING ABOVE -0169;utilde;LATIN SMALL LETTER U WITH TILDE -0076;v;LATIN SMALL LETTER V -0077;w;LATIN SMALL LETTER W -1E83;wacute;LATIN SMALL LETTER W WITH ACUTE -0175;wcircumflex;LATIN SMALL LETTER W WITH CIRCUMFLEX -1E85;wdieresis;LATIN SMALL LETTER W WITH DIAERESIS -2118;weierstrass;SCRIPT CAPITAL P -1E81;wgrave;LATIN SMALL LETTER W WITH GRAVE -0078;x;LATIN SMALL LETTER X -03BE;xi;GREEK SMALL LETTER XI -0079;y;LATIN SMALL LETTER Y -00FD;yacute;LATIN SMALL LETTER Y WITH ACUTE -0177;ycircumflex;LATIN SMALL LETTER Y WITH CIRCUMFLEX -00FF;ydieresis;LATIN SMALL LETTER Y WITH DIAERESIS -00A5;yen;YEN SIGN -1EF3;ygrave;LATIN SMALL LETTER Y WITH GRAVE -007A;z;LATIN SMALL LETTER Z -017A;zacute;LATIN SMALL LETTER Z WITH ACUTE -017E;zcaron;LATIN SMALL LETTER Z WITH CARON -017C;zdotaccent;LATIN SMALL LETTER Z WITH DOT ABOVE -0030;zero;DIGIT ZERO -2080;zeroinferior;SUBSCRIPT ZERO -F730;zerooldstyle;OLDSTYLE DIGIT ZERO -2070;zerosuperior;SUPERSCRIPT ZERO -03B6;zeta;GREEK SMALL LETTER ZETA -""" - - -t1_bias = 0 -glyph_list = [] - - -def the_adobe_glyph_list(): - """return the list of glyph names in the adobe list""" - - lines = string.split( adobe_glyph_list, '\n' ) - glyphs = [] - - for line in lines: - if line: - fields = string.split( line, ';' ) -# print fields[0] + ' - ' + fields[1] - glyphs.append( fields[1] ) - - return glyphs - - -def the_adobe_glyphs(): - """return the list of unicode values""" - - lines = string.split( adobe_glyph_list, '\n' ) - glyphs = [] - values = [] - - for line in lines: - if line: - fields = string.split( line, ';' ) -# print fields[0] + ' - ' + fields[1] - glyphs.append( fields[1] ) - values.append( fields[0] ) - - return glyphs, values - - -def count_extra_glyphs( alist, filter ): - """count the number of extra glyphs""" - - count = 0 - extras = [] - - for name in alist: - try: - filtered_index = filter.index( name ) - except: - extras.append( name ) - - return extras - - -def dump_mac_indices( file, t1_bias ): - write = file.write - - write( " static const unsigned short mac_standard_names[" + \ - repr( len( mac_standard_names ) + 1 ) + "] =\n" ) - write( " {\n" ) - - count = 0 - for name in mac_standard_names: - try: - t1_index = t1_standard_strings.index( name ) - write( " " + repr( t1_bias + t1_index ) + ",\n" ) - except: - write( " " + repr( count ) + ",\n" ) - count = count + 1 - - write( " 0\n" ) - write( " };\n" ) - write( "\n" ) - write( "\n" ) - - -def dump_glyph_list( file, glyph_list, adobe_extra ): - write = file.write - - name_list = [] - - write( " static const char* const standard_glyph_names[] =\n" ) - write( " {\n" ) - - for name in glyph_list: - write( ' "' + name + '",\n' ) - name_list.append( name ) - - write( "\n" ) - write( "#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST\n" ) - write( "\n" ) - - for name in adobe_extra: - write( ' "' + name + '",\n' ) - name_list.append( name ) - - write( "\n" ) - write( "#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */\n" ) - write( "\n" ) - write( " 0\n" ) - write( " };\n" ) - write( "\n" ) - write( "\n" ) - - return name_list - - -def dump_unicode_values( file, base_list, adobe_list ): - """build the glyph names to unicode values table""" - - write = file.write - - adobe_glyphs, uni_values = the_adobe_glyphs() - - write( "\n" ) - write( " static const unsigned short names_to_unicode[" + \ - repr( len( base_list ) + len( adobe_list ) + 1 ) + "] =\n" ) - write( " {\n" ) - - for name in base_list: - try: - index = adobe_glyphs.index( name ) - write( " 0x" + uni_values[index] + ",\n" ) - except: - write( " 0,\n" ) - - write( "\n" ) - write( "#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST\n" ) - write( "\n" ) - - for name in adobe_list: - try: - index = adobe_glyphs.index( name ) - write( " 0x" + uni_values[index] + ",\n" ) - except: - write( " 0,\n" ) - - write( "\n" ) - write( "#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */\n" ) - write( " 0\n" ) - write( " };\n" ) - write( "\n" ) - write( "\n" ) - write( "\n" ) - - -def dump_encoding( file, encoding_name, encoding_list ): - """dumps a given encoding""" - - write = file.write - - write( " static const unsigned short " + encoding_name + "[" + \ - repr( len( encoding_list ) + 1 ) + "] =\n" ) - write( " {\n" ) - - for value in encoding_list: - write( " " + repr( value ) + ",\n" ) - write( " 0\n" ) - write( " };\n" ) - write( "\n" ) - write( "\n" ) - - -def main(): - """main program body""" - - if len( sys.argv ) != 2: - print __doc__ % sys.argv[0] - sys.exit( 1 ) - - file = open( sys.argv[1], "w\n" ) - write = file.write - - count_sid = len( t1_standard_strings ) - - # build mac index table & supplemental glyph names - mac_list = count_extra_glyphs( mac_standard_names, t1_standard_strings ) - count_mac = len( mac_list ) - t1_bias = count_mac - base_list = mac_list + t1_standard_strings - - # build adobe unicode index table & supplemental glyph names - adobe_list = the_adobe_glyph_list() - adobe_list = count_extra_glyphs( adobe_list, base_list ) - count_adobe = len( adobe_list ) - - write( "/***************************************************************************/\n" ) - write( "/* */\n" ) - - write( "/* %-71s*/\n" % sys.argv[1] ) - - write( "/* */\n" ) - write( "/* PostScript glyph names (specification only). */\n" ) - write( "/* */\n" ) - write( "/* Copyright 2000 by */\n" ) - write( "/* David Turner, Robert Wilhelm, and Werner Lemberg. */\n" ) - write( "/* */\n" ) - write( "/* This file is part of the FreeType project, and may only be used, */\n" ) - write( "/* modified, and distributed under the terms of the FreeType project */\n" ) - write( "/* license, LICENSE.TXT. By continuing to use, modify, or distribute */\n" ) - write( "/* this file you indicate that you have read the license and */\n" ) - write( "/* understand and accept it fully. */\n" ) - write( "/* */\n" ) - write( "/***************************************************************************/\n" ) - write( "\n" ) - write( "\n" ) - write( " /* this file has been generated automatically -- do not edit! */\n" ) - write( "\n" ) - write( "\n" ) - - # dump glyph list - name_list = dump_glyph_list( file, base_list, adobe_list ) - - # dump t1_standard_list - write( " static const char* const * const t1_standard_glyphs = " \ - + "standard_glyph_names + " + repr( t1_bias ) + ";\n" ) - write( "\n" ) - write( "\n" ) - - write( "#define NUM_STD_GLYPHS " + repr( len( t1_standard_strings ) ) + "\n" ) - write( "\n" ) - write( "#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST\n" ) - write( "#define NUM_ADOBE_GLYPHS " + \ - repr( len( base_list ) + len( adobe_list ) - t1_bias ) + "\n" ) - write( "#else\n" ) - write( "#define NUM_ADOBE_GLYPHS " + \ - repr( len( base_list ) - t1_bias ) + "\n" ) - write( "#endif\n" ) - write( "\n" ) - write( "\n" ) - - # dump mac indices table - dump_mac_indices( file, t1_bias ) - - # discard mac names from base list - base_list = base_list[t1_bias:] - - # dump unicode values table - dump_unicode_values( file, base_list, adobe_list ) - - dump_encoding( file, "t1_standard_encoding", t1_standard_encoding ) - dump_encoding( file, "t1_expert_encoding", t1_expert_encoding ) - - write( "/* END */\n" ) - - -# Now run the main routine -# -main() - - -# END Index: xc/extras/freetype2/docs/license.txt diff -u /dev/null xc/extras/freetype2/docs/license.txt:1.1.1.2 --- /dev/null Fri Jan 18 15:21:45 2002 +++ xc/extras/freetype2/docs/license.txt Mon Jan 14 11:52:02 2002 @@ -0,0 +1,11 @@ + +FreeType comes with two licenses from which you can choose the one which +fits your needs best: + + . The FreeType License, in file `docs/FTL.txt'. + + . The GNU General Public License, in file `docs/GPL.txt'. + +The contributed PCF driver comes with a license similar to that of X Window +System which is compatible to the above two licenses (see file +src/pcf/readme). Index: xc/extras/freetype2/docs/modules.txt diff -u /dev/null xc/extras/freetype2/docs/modules.txt:1.1.1.1 --- /dev/null Fri Jan 18 15:21:45 2002 +++ xc/extras/freetype2/docs/modules.txt Mon Jan 14 11:52:03 2002 @@ -0,0 +1,13 @@ +This file shows the interdependencies of various FreeType modules. + +Note that the use of `psnames' can be controlled in ftconfig.h +(FT_CONFIG_OPTION_POSTSCRIPT_NAMES). + + module dependency + --------------------------------------- + cff sfnt, pshinter, psnames + cid psaux, pshinter, psnames + truetype sfnt + type1 psaux, pshinter, psnames + psaux psnames + sfnt psnames Index: xc/extras/freetype2/docs/readme.vms diff -u /dev/null xc/extras/freetype2/docs/readme.vms:1.1.1.1 --- /dev/null Fri Jan 18 15:21:45 2002 +++ xc/extras/freetype2/docs/readme.vms Sun Sep 9 22:55:42 2001 @@ -0,0 +1,35 @@ +How to build the freetype2 library on VMS +----------------------------------------- + +Just type one of the following depending on the type of external entries you +want: + + mms + +or + + mms/macro=("COMP_FLAGS=/name=(as_is,short)") + +The library is avalaible in the directory + + [.LIB] + +To compile applications using freetype2 you'll need to define the logical +FREETYPE pointing to the directory + + [.INCLUDE.FREETYPE] + +(i.e., if the directory in which this README.VMS file is located is +$disk:[freetype] then define the logical with + + define freetype $disk:[freetype.include.freetype] + +This version has been tested with Compaq C V6.2-006 on OpenVMS Alpha V7.2-1. + + + Any problems can be reported to + + joukj@hrem.stm.tudelft.nl + + + Jouk Jansen Index: xc/extras/freetype2/docs/cache/cache.txt diff -u xc/extras/freetype2/docs/cache/cache.txt:1.1.1.1 xc/extras/freetype2/docs/cache/cache.txt:removed --- xc/extras/freetype2/docs/cache/cache.txt:1.1.1.1 Fri Dec 8 16:26:12 2000 +++ xc/extras/freetype2/docs/cache/cache.txt Fri Jan 18 15:21:45 2002 @@ -1,267 +0,0 @@ - The FreeType 2 cache sub-system explained - (c) 2000 David Turner - - ----------------------------------------------- - -Introduction : --------------- - - this document describes the caching sub-system that comes - with the FreeType library, version 2.0. Note that unlike - the rest of the library, this code is still in beta stage - and might still suffer slight changes in the future. - - Its basic design shouldn't evolve though and is explained - in this paper. - - -I. Requirements and Design Goals: ---------------------------------- - - The FT2 cache sub-system was designed to implement caching - of glyph images. However, it is extremely flexible and can - be easily extended to cache other kind of data like metrics, - character maps, coverage tables, etc.. - - -II. Base Concepts: ------------------- - - 1. The cache manager object: - - at the heart of the caching sub-system is a single object - called the "cache manager". It is used to deal with FT_Face - and FT_Size objects, as well as to manager a LRU list of - abstract "cache nodes". - - a. caching FT_Face and FT_Size objects: - - each FT_Face object created by FreeType 2 can take from - a few hundred bytes to several tens of kilobytes, depending - on the original font's file format as well as its content. - - there is no easy way to compute the size of a given FT_Face - object, so it's always a good idea to assume that it is - large and to want to limit the number of live face objects - as much as possible. - - similarly, each FT_Face can have one or more FT_Size childs, - whose byte size depends heavily on the font format. - - the first purpose of the cache manager is to provide a - small cache for FT_Face and FT_Size objects. Basically, - an application can use it as follows: - - - each font face is described to the cache manager - through a typeless pointer, called a FTC_FaceID. - - the cache manager itself doesn't interpret or use - the value of FTC_FaceIDs directly. Rather, it passes - them to a user-provided function called a - "face requester". see the defintion of the - FTC_Face_Requester type in - for details.. - - the face requester is in charge of translating a given - face into into a real new FT_Face object that is - returned to the cache manager. The latter will keep - the face object alive as long as it needs to. - - the face requester is unique and must be passed - to the function named FTC_Manager_New used to - create/initialise a new cache manager. - - - - to lookup a given FT_Face, call the function - FTC_Manager_Lookup_Face as in the following code: - - FTC_Manager_Lookup_Face( manager, - face_id, - &face ); - - if the corresponding FT_Face object is kept in - the cache manager's list, it will be returned - directly. Otherwise, this function will call - the user-provided face requester to create - a new FT_Face object, add it to the manager's - list to finally return it. - - FT_Face objects are always destroyed by the cache - manager. An application that uses the cache - sub-system should never call FT_Done_Face !! - - - to lookup a given FT_Size and FT_Face, call the - function FTC_Manager_Lookup_Size, as in: - - FTC_Manager_Lookup_Size( manager, - ftc_font, - &face, - &size ); - - where "ftc_font" is a pointer to a FTC_Font descriptor - (a structure containing a FTC_FaceIDs and character - dimensions corresponding to the desired FT_Size). - - note that the function returns both a FT_Face and - a FT_Size object. You don't need to call - FTC_Manager_Lookup_Face before it !! - - also note that returned FT_Size objects are always - destroyed by the cache manager. A client application - that uses it should never call FT_Done_Size !! - - - the big advantage of using FTC_FaceIDs is that is - makes the caching sub-system completely independent - of the way font files are installed / listed / managed - in your application. In most implementations, a FTC_FaceID - is really a pointer to an application-specific structure - that describe the source font file + face index. - - - b - manage a MRU list of abstract "cache nodes": - - the second role of the cache manager is to hold and manager - a list of abstract "cache nodes". The list is always sorted - in most-recently-used order. The manager always ensure that - the total size of nodes in memory doesn't over-reach a - certain threshold, by eliminating "old" nodes when - necessary. - - the cache manager doesn't know much about the cache nodes: - - - it knows how to move them in its list - - it knows how to destroy them when they're too old - - it knows how to "size" them (i.e. compute their byte - size in memory) - - - 2. Cache objects: - - the cache manager doesn't create new cache nodes however, this - is the charge of what are called "cache objects". - - Basically, each cache object is in charge of managing cache - nodes of a certain type. Its role is to: - - - provide a simple description of its cache nodes to the - manager (i.e. through a FTC_CacheNode_Class structure) - - - provide a high-level API that can be called by client - applications to lookup cache nodes of the corresponding - type. - - this function usually creates new nodes when they're not - available yet. - - - also, and even though this is completely transparent to - the applications and the cache manager, each cache object - manages "node sets", where each set contains cache nodes - usually correspond to the same font face + font size. - - - For example, the cache sub-system currently comes with two - distinct cache classes: - - - a FTC_Image_Cache, which is used to cache FT_Glyph images - (with one FT_Glyph per cache node). - - - - a FTC_SBit_Cache, which is used to cache small glyph bitmaps - ("sbit" means "embedded bitmaps" in digital typography). - - - the small bitmaps glyph is useful because storing one glyph - image per cache node isn't memory efficient when the data - associated to each node is very small. Indeed, each cache - node has a minimal size of 20 bytes, which is huge when - your data is an 8x8 monochrome bitmap :-) - - Hence, a FTC_SBit_Cache is capable of storing several - contiguous sbits in a single cache node, resulting in much - higher cached glyphs / total cache size. - - an application can lookup a FT_Glyph image with a FTC_Image_Cache - by calling: - - error = FTC_Image_Cache_Lookup( image_cache, - ftc_font, - glyph_index, - &ft_glyph ); - - or a FTC_SBit (small bitmap descriptor) by calling: - - error = FTC_SBit_Cache_Lookup( sbit_cache, - ftc_font, - glyph_index, - &ftc_sbit ); - -III. Extending the cache sub-system: - - It is possible to extend the current cache sub-system by - providing your own cache class and register it in the cache - manager. That might be useful to cache other kind of data - in the sub-system, like glyph metrics (without images), - - To do it, you'll need to read the cache sub-system public - header files rather heavily :-) Fortunately, they're pretty - well commented and should guide you to your goal. - - Note that the cache sub-system already provides two "abstract - cache" classes that can be re-used by your own implementation: - - - 1. The abstract "FTC_GlyphCache" class: - - this code is used to implement an abstract "glyph cache", - i.e. one that simply maps one glyph data per cache node. - - it is sub-classed by FTC_Image_Cache, whose implementation - only consists in simple code to store a FT_Glyph in each - cache node. - - you could sub-class it in your application to store glyph - images in a different format, for example. - - see the files and - "src/cache/ftcglyph.h" for details. - - - 2. The abstract "FTC_ChunkCache" class: - - this code is used to implement an abstract "glyph chunk cache". - it's very similar to a FTC_GlyphCache, except that it is capable - of storing several glyph-specific elements per cache node. - - it is sub-classed by FTC_SBit_Cache, whose implementation - only consists in code to store a FTC_SBitRec record in each - node element. - - you could sub-class it in your application to store small - glyph data, like metrics, glyph names, wathever. - - see the files and - "src/cache/ftcchunk.h" for details.. - - - Note that the two abstract caches are rather complex because - they use "glyph sets". Each glyph set corresponds to a single - font face + font size combination. both caches are also - glyph-specific, though it is perfectly possible to use - broader selection criterion, here are a few examples: - - - caching language coverage maps corresponding to - a given font face + language combination - - - caching charmaps, layout tables, and other global - data.. - - - caching (font_face + font_size) specific "latin1" - ascender + descender - - - as you can see, a lot is possible with this design :-) - - - - Index: xc/extras/freetype2/include/ft2build.h diff -u xc/extras/freetype2/include/ft2build.h:1.1.1.1 xc/extras/freetype2/include/ft2build.h:1.1.1.2 --- xc/extras/freetype2/include/ft2build.h:1.1.1.1 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/include/ft2build.h Sun Dec 16 12:49:20 2001 @@ -5,7 +5,7 @@ /* FreeType 2 build and setup macros. */ /* (Generic version) */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/include/freetype/freetype.h diff -u xc/extras/freetype2/include/freetype/freetype.h:1.1.1.2 xc/extras/freetype2/include/freetype/freetype.h:1.1.1.5 --- xc/extras/freetype2/include/freetype/freetype.h:1.1.1.2 Tue May 15 23:45:56 2001 +++ xc/extras/freetype2/include/freetype/freetype.h Mon Jan 14 11:52:04 2002 @@ -4,7 +4,7 @@ /* */ /* FreeType high-level API and common types (specification only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -35,6 +35,7 @@ /* */ #define FREETYPE_MAJOR 2 #define FREETYPE_MINOR 0 +#define FREETYPE_PATCH 5 #include @@ -121,6 +122,7 @@ /* FT_Set_Transform */ /* FT_Load_Glyph */ /* FT_Get_Char_Index */ + /* FT_Get_Name_Index */ /* FT_Load_Char */ /* */ /* FT_LOAD_DEFAULT */ @@ -144,13 +146,14 @@ /* FT_Get_Kerning */ /* FT_Kerning_Mode */ /* FT_Get_Glyph_Name */ + /* FT_Get_Postscript_Name */ /* */ /* FT_CharMapRec */ /* FT_Select_Charmap */ - /* FT_Set_Charmap */ + /* FT_Set_Charmap */ /* */ /*************************************************************************/ - + /*************************************************************************/ /* */ @@ -356,6 +359,23 @@ /*************************************************************************/ /* */ + /* */ + /* FT_ENC_TAG */ + /* */ + /* */ + /* This macro converts four letter tags into an unsigned long. */ + /* */ +#ifndef FT_ENC_TAG +#define FT_ENC_TAG( value, _x1, _x2, _x3, _x4 ) \ + value = ( ( (unsigned long)_x1 << 24 ) | \ + ( (unsigned long)_x2 << 16 ) | \ + ( (unsigned long)_x3 << 8 ) | \ + (unsigned long)_x4 ) +#endif /* FT_ENC_TAG */ + + + /*************************************************************************/ + /* */ /* */ /* FT_Encoding */ /* */ @@ -371,21 +391,22 @@ /* */ typedef enum FT_Encoding_ { - ft_encoding_none = 0, - ft_encoding_symbol = FT_MAKE_TAG( 's', 'y', 'm', 'b' ), - ft_encoding_unicode = FT_MAKE_TAG( 'u', 'n', 'i', 'c' ), - ft_encoding_latin_2 = FT_MAKE_TAG( 'l', 'a', 't', '2' ), - ft_encoding_sjis = FT_MAKE_TAG( 's', 'j', 'i', 's' ), - ft_encoding_gb2312 = FT_MAKE_TAG( 'g', 'b', ' ', ' ' ), - ft_encoding_big5 = FT_MAKE_TAG( 'b', 'i', 'g', '5' ), - ft_encoding_wansung = FT_MAKE_TAG( 'w', 'a', 'n', 's' ), - ft_encoding_johab = FT_MAKE_TAG( 'j', 'o', 'h', 'a' ), - - ft_encoding_adobe_standard = FT_MAKE_TAG( 'A', 'D', 'O', 'B' ), - ft_encoding_adobe_expert = FT_MAKE_TAG( 'A', 'D', 'B', 'E' ), - ft_encoding_adobe_custom = FT_MAKE_TAG( 'A', 'D', 'B', 'C' ), + FT_ENC_TAG( ft_encoding_none, 0, 0, 0, 0 ), + + FT_ENC_TAG( ft_encoding_symbol, 's', 'y', 'm', 'b' ), + FT_ENC_TAG( ft_encoding_unicode, 'u', 'n', 'i', 'c' ), + FT_ENC_TAG( ft_encoding_latin_2, 'l', 'a', 't', '2' ), + FT_ENC_TAG( ft_encoding_sjis, 's', 'j', 'i', 's' ), + FT_ENC_TAG( ft_encoding_gb2312, 'g', 'b', ' ', ' ' ), + FT_ENC_TAG( ft_encoding_big5, 'b', 'i', 'g', '5' ), + FT_ENC_TAG( ft_encoding_wansung, 'w', 'a', 'n', 's' ), + FT_ENC_TAG( ft_encoding_johab, 'j', 'o', 'h', 'a' ), + + FT_ENC_TAG( ft_encoding_adobe_standard, 'A', 'D', 'O', 'B' ), + FT_ENC_TAG( ft_encoding_adobe_expert, 'A', 'D', 'B', 'E' ), + FT_ENC_TAG( ft_encoding_adobe_custom, 'A', 'D', 'B', 'C' ), - ft_encoding_apple_roman = FT_MAKE_TAG( 'a', 'r', 'm', 'n' ) + FT_ENC_TAG( ft_encoding_apple_roman, 'a', 'r', 'm', 'n' ) } FT_Encoding; @@ -520,12 +541,12 @@ /* num_charmaps :: The total number of character maps in the */ /* face. */ /* */ - /* charmaps :: A table of pointers to the face's charmaps */ + /* charmaps :: A table of pointers to the face's charmaps. */ /* Used to scan the list of available charmaps */ - /* this table might change after a call to */ - /* FT_Attach_File/Stream (e.g. when it used */ - /* to hook and additional encoding/CMap to */ - /* the face object). */ + /* -- this table might change after a call to */ + /* FT_Attach_File/Stream (e.g. when used to */ + /* hook an additional encoding/CMap to the */ + /* face object). */ /* */ /* generic :: A field reserved for client uses. See the */ /* FT_Generic type description. */ @@ -807,7 +828,7 @@ /* A bit-field constant, used to indicate that the font contains */ /* glyph names that can be retrieved through FT_Get_Glyph_Name(). */ /* */ -#define FT_FACE_FLAG_GLYPH_NAMES 0x200 +#define FT_FACE_FLAG_GLYPH_NAMES 0x200 /*************************************************************************/ @@ -820,125 +841,143 @@ /* a face's stream was provided by the client application and should */ /* not be destroyed by FT_Done_Face(). */ /* */ -#define FT_FACE_FLAG_EXTERNAL_STREAM 0x4000 +#define FT_FACE_FLAG_EXTERNAL_STREAM 0x4000 + /* */ + - /*********************************************************************** - * - * @macro: FT_HAS_HORIZONTAL (face) - * - * @description: - * a macro that returns true whenever a face object contains horizontal - * metrics. (this is true for all font formats though). - * - * @also: - * @FT_HAS_VERTICAL can be used to check for vertical metrics. - */ + /*************************************************************************/ + /* */ + /* @macro: FT_HAS_HORIZONTAL (face) */ + /* */ + /* @description: */ + /* A macro that returns true whenever a face object contains */ + /* horizontal metrics (this is true for all font formats though). */ + /* */ + /* @also: */ + /* @FT_HAS_VERTICAL can be used to check for vertical metrics. */ + /* */ #define FT_HAS_HORIZONTAL( face ) \ ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) - /*********************************************************************** - * - * @macro: FT_HAS_VERTICAL (face) - * - * @description: - * a macro that returns true whenever a face object contains vertical - * metrics. - */ + + /*************************************************************************/ + /* */ + /* @macro: FT_HAS_VERTICAL (face) */ + /* */ + /* @description: */ + /* A macro that returns true whenever a face object contains vertical */ + /* metrics. */ + /* */ #define FT_HAS_VERTICAL( face ) \ ( face->face_flags & FT_FACE_FLAG_VERTICAL ) + - /*********************************************************************** - * - * @macro: FT_HAS_KERNING (face) - * - * @description: - * a macro that returns true whenever a face object contains kerning - * data that can be accessed with @FT_Get_Kerning - */ + /*************************************************************************/ + /* */ + /* @macro: FT_HAS_KERNING (face) */ + /* */ + /* @description: */ + /* A macro that returns true whenever a face object contains kerning */ + /* data that can be accessed with @FT_Get_Kerning. */ + /* */ #define FT_HAS_KERNING( face ) \ ( face->face_flags & FT_FACE_FLAG_KERNING ) + - /*********************************************************************** - * - * @macro: FT_IS_SCALABLE (face) - * - * @description: - * a macro that returns true whenever a face object contains a scalable - * font face. I.e., true for TrueType, Type 1, CID and OpenType/CFF - * font formats. - */ + /*************************************************************************/ + /* */ + /* @macro: FT_IS_SCALABLE (face) */ + /* */ + /* @description: */ + /* A macro that returns true whenever a face object contains a */ + /* scalable font face (true for TrueType, Type 1, CID, and */ + /* OpenType/CFF font formats. */ + /* */ #define FT_IS_SCALABLE( face ) \ ( face->face_flags & FT_FACE_FLAG_SCALABLE ) - /*********************************************************************** - * - * @macro: FT_IS_SFNT (face) - * - * @description: - * a macro that returns true whenever a face object contains a font whose - * format is based on the SFNT storage scheme. This usually means: - * TrueType fonts, OpenType fonts, as well as SFNT-based embedded bitmap - * fonts. - * - * When this macro is true, all functions defined in @FT_SFNT_NAMES_H - * and @FT_TRUETYPE_TABLES_H are available - */ + /*************************************************************************/ + /* */ + /* @macro: FT_IS_SFNT (face) */ + /* */ + /* @description: */ + /* A macro that returns true whenever a face object contains a font */ + /* whose format is based on the SFNT storage scheme. This usually */ + /* means: TrueType fonts, OpenType fonts, as well as SFNT-based */ + /* embedded bitmap fonts. */ + /* */ + /* If this macro is true, all functions defined in @FT_SFNT_NAMES_H */ + /* and @FT_TRUETYPE_TABLES_H are available. */ + /* */ #define FT_IS_SFNT( face ) \ ( face->face_flags & FT_FACE_FLAG_SFNT ) + - /*********************************************************************** - * - * @macro: FT_IS_FIXED_WIDTH (face) - * - * @description: - * a macro that returns true whenever a face object contains a font - * face that contains fixed-width (or "monospace", "fixed-pitch", etc..) - * glyphs. - */ + /*************************************************************************/ + /* */ + /* @macro: FT_IS_FIXED_WIDTH (face) */ + /* */ + /* @description: */ + /* A macro that returns true whenever a face object contains a font */ + /* face that contains fixed-width (or "monospace", "fixed-pitch", */ + /* etc.) glyphs. */ + /* */ #define FT_IS_FIXED_WIDTH( face ) \ ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) - /*********************************************************************** - * - * @macro: FT_IS_FIXED_SIZES (face) - * - * @description: - * a macro that returns true whenever a face object contains some - * embedded bitmaps. See the 'fixed_sizes' field of the @FT_FaceRec - * structure. - */ + /*************************************************************************/ + /* */ + /* @macro: FT_IS_FIXED_SIZES (face) */ + /* */ + /* @description: */ + /* A macro that returns true whenever a face object contains some */ + /* embedded bitmaps. See the `fixed_sizes' field of the @FT_FaceRec */ + /* structure. */ + /* */ #define FT_HAS_FIXED_SIZES( face ) \ ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) + /* */ - + + + /*************************************************************************/ + /* */ + /* @macro: FT_HAS_FAST_GLYPHS (face) */ + /* */ + /* @description: */ + /* XXX */ + /* */ #define FT_HAS_FAST_GLYPHS( face ) \ ( face->face_flags & FT_FACE_FLAG_FAST_GLYPHS ) + - /*********************************************************************** - * - * @macro: FT_HAS_GLYPH_NAMES (face) - * - * @description: - * a macro that returns true whenever a face object contains some - * glyph names that can be accessed through @FT_Get_Glyph_Names - */ + /*************************************************************************/ + /* */ + /* @macro: FT_HAS_GLYPH_NAMES (face) */ + /* */ + /* @description: */ + /* A macro that returns true whenever a face object contains some */ + /* glyph names that can be accessed through @FT_Get_Glyph_Names. */ + /* */ #define FT_HAS_GLYPH_NAMES( face ) \ ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) + - /*********************************************************************** - * - * @macro: FT_HAS_MULTIPLE_MASTERS (face) - * - * @description: - * a macro that returns true whenever a face object contains some - * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H - * are then available to choose the exact design you want. - */ + /*************************************************************************/ + /* */ + /* @macro: FT_HAS_MULTIPLE_MASTERS (face) */ + /* */ + /* @description: */ + /* A macro that returns true whenever a face object contains some */ + /* multiple masters. The functions provided by */ + /* @FT_MULTIPLE_MASTERS_H are then available to choose the exact */ + /* design you want. */ + /* */ #define FT_HAS_MULTIPLE_MASTERS( face ) \ ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) @@ -977,8 +1016,8 @@ /* model private data of a given FT_Size object. */ /* */ typedef struct FT_Size_InternalRec_* FT_Size_Internal; + - /*************************************************************************/ /* */ /* FreeType base size metrics */ @@ -1076,7 +1115,7 @@ FT_Generic generic; /* generic pointer for client uses */ FT_Size_Metrics metrics; /* size metrics */ FT_Size_Internal internal; - + } FT_SizeRec; @@ -1294,7 +1333,8 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Init_FreeType( FT_Library *alibrary ); + FT_EXPORT( FT_Error ) + FT_Init_FreeType( FT_Library *alibrary ); /*************************************************************************/ @@ -1312,7 +1352,8 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Done_FreeType( FT_Library library ); + FT_EXPORT( FT_Error ) + FT_Done_FreeType( FT_Library library ); /*************************************************************************/ @@ -1321,8 +1362,8 @@ /* FT_Open_Flags */ /* */ /* */ - /* An enumeration used to list the bit flags used within */ - /* FT_Open_Args(). */ + /* An enumeration used to list the bit flags used within the */ + /* `flags' field of the @FT_Open_Args structure. */ /* */ /* */ /* ft_open_memory :: This is a memory-based stream. */ @@ -1335,6 +1376,10 @@ /* */ /* ft_open_params :: Use the `num_params' & `params' field. */ /* */ + /* */ + /* The `ft_open_memory', `ft_open_stream', and `ft_open_pathname' */ + /* flags are mutually exclusive. */ + /* */ typedef enum { ft_open_memory = 1, @@ -1379,7 +1424,7 @@ /* */ /* A structure used to indicate how to open a new font file/stream. */ /* A pointer to such a structure can be used as a parameter for the */ - /* functions FT_Open_Face() & FT_Attach_Stream(). */ + /* functions @FT_Open_Face() & @FT_Attach_Stream(). */ /* */ /* */ /* flags :: A set of bit flags indicating how to use the */ @@ -1404,33 +1449,35 @@ /* opening a new face. */ /* */ /* */ - /* `stream_type' determines which fields are used to create a new */ - /* input stream. */ + /* The stream type is determined by the contents of `flags' which */ + /* are tested in the following order by @FT_Open_Face: */ + /* */ + /* If the `ft_open_memory' bit is set, assume that this is a */ + /* memory file of `memory_size' bytes,located at `memory_address'. */ + /* */ + /* Otherwise, if the `ft_open_stream' bit is set, assume that a */ + /* custom input stream `stream' is used. */ /* */ - /* If it is `ft_stream_memory', a new memory-based stream will be */ - /* created using the memory block specified by `memory_base' and */ - /* `memory_size'. */ - /* */ - /* If it is `ft_stream_pathname', a new stream will be created with */ - /* the `pathname' field, calling the system-specific FT_New_Stream() */ - /* function. */ - /* */ - /* If is is `ft_stream_copy', then the content of `stream' will be */ - /* copied to a new input stream object. The object will be closed */ - /* and destroyed when the face is destroyed itself. Note that this */ - /* means that you should not close the stream before the library */ - /* does! */ + /* Otherwise, if the `ft_open_pathname' bit is set, assume that this */ + /* is a normal file and use `pathname' to open it. */ /* */ + /* If the `ft_open_driver' bit is set, @FT_Open_Face() will only */ + /* try to open the file with the driver whose handler is in `driver'. */ + /* */ + /* If the `ft_open_params' bit is set, the parameters given by */ + /* `num_params' and `params' will be used. They are ignored */ + /* otherwise. */ + /* */ typedef struct FT_Open_Args_ { - FT_Open_Flags flags; - FT_Byte* memory_base; - FT_Long memory_size; - FT_String* pathname; - FT_Stream stream; - FT_Module driver; - FT_Int num_params; - FT_Parameter* params; + FT_Open_Flags flags; + const FT_Byte* memory_base; + FT_Long memory_size; + FT_String* pathname; + FT_Stream stream; + FT_Module driver; + FT_Int num_params; + FT_Parameter* params; } FT_Open_Args; @@ -1467,12 +1514,13 @@ /* format of a given font resource. If the `face_index' field is */ /* negative, the function will _not_ return any face handle in */ /* `aface'. Its return value should be 0 if the font format is */ - /* recognized, or non-zero if not. */ + /* recognized, or non-zero otherwise. */ /* */ - FT_EXPORT( FT_Error ) FT_New_Face( FT_Library library, - const char* filepathname, - FT_Long face_index, - FT_Face *aface ); + FT_EXPORT( FT_Error ) + FT_New_Face( FT_Library library, + const char* filepathname, + FT_Long face_index, + FT_Face *aface ); /*************************************************************************/ @@ -1501,6 +1549,11 @@ /* FreeType error code. 0 means success. */ /* */ /* */ + /* The font data bytes are used _directly_ by the @FT_Face object. */ + /* This means that they are not copied, and that the client is */ + /* responsible for releasing/destroying them _after_ the */ + /* corresponding call to @FT_Done_Face . */ + /* */ /* Unlike FreeType 1.x, this function automatically creates a glyph */ /* slot for the face object which can be accessed directly through */ /* `face->glyph'. */ @@ -1509,13 +1562,14 @@ /* font format of a given font resource. If the `face_index' field */ /* is negative, the function will _not_ return any face handle in */ /* `aface'. Its return value should be 0 if the font format is */ - /* recognized, or non-zero if not. */ + /* recognized, or non-zero otherwise. */ /* */ - FT_EXPORT( FT_Error ) FT_New_Memory_Face( FT_Library library, - FT_Byte* file_base, - FT_Long file_size, - FT_Long face_index, - FT_Face *aface ); + FT_EXPORT( FT_Error ) + FT_New_Memory_Face( FT_Library library, + const FT_Byte* file_base, + FT_Long file_size, + FT_Long face_index, + FT_Face *aface ); /*************************************************************************/ @@ -1552,12 +1606,13 @@ /* format of a given font resource. If the `face_index' field is */ /* negative, the function will _not_ return any face handle in */ /* `*face'. Its return value should be 0 if the font format is */ - /* recognized, or non-zero if not. */ + /* recognized, or non-zero otherwise. */ /* */ - FT_EXPORT( FT_Error ) FT_Open_Face( FT_Library library, - FT_Open_Args* args, - FT_Long face_index, - FT_Face *aface ); + FT_EXPORT( FT_Error ) + FT_Open_Face( FT_Library library, + FT_Open_Args* args, + FT_Long face_index, + FT_Face *aface ); /*************************************************************************/ @@ -1592,8 +1647,9 @@ /* when invoking this function. Most drivers simply do not implement */ /* file attachments. */ /* */ - FT_EXPORT( FT_Error ) FT_Attach_File( FT_Face face, - const char* filepathname ); + FT_EXPORT( FT_Error ) + FT_Attach_File( FT_Face face, + const char* filepathname ); /*************************************************************************/ @@ -1623,8 +1679,9 @@ /* when invoking this function. Most drivers simply do not implement */ /* file attachments. */ /* */ - FT_EXPORT( FT_Error ) FT_Attach_Stream( FT_Face face, - FT_Open_Args* parameters ); + FT_EXPORT( FT_Error ) + FT_Attach_Stream( FT_Face face, + FT_Open_Args* parameters ); /*************************************************************************/ @@ -1642,7 +1699,8 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Done_Face( FT_Face face ); + FT_EXPORT( FT_Error ) + FT_Done_Face( FT_Face face ); /*************************************************************************/ @@ -1679,11 +1737,12 @@ /* When dealing with fixed-size faces (i.e., non-scalable formats), */ /* use the function FT_Set_Pixel_Sizes(). */ /* */ - FT_EXPORT( FT_Error ) FT_Set_Char_Size( FT_Face face, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ); + FT_EXPORT( FT_Error ) + FT_Set_Char_Size( FT_Face face, + FT_F26Dot6 char_width, + FT_F26Dot6 char_height, + FT_UInt horz_resolution, + FT_UInt vert_resolution ); /*************************************************************************/ @@ -1725,9 +1784,10 @@ /* guarantee in any way that you will get glyph bitmaps that all fit */ /* within an 8x8 cell (sometimes even far from it). */ /* */ - FT_EXPORT( FT_Error ) FT_Set_Pixel_Sizes( FT_Face face, - FT_UInt pixel_width, - FT_UInt pixel_height ); + FT_EXPORT( FT_Error ) + FT_Set_Pixel_Sizes( FT_Face face, + FT_UInt pixel_width, + FT_UInt pixel_height ); /*************************************************************************/ @@ -1764,9 +1824,10 @@ /* Note that this also transforms the `face.glyph.advance' field, but */ /* *not* the values in `face.glyph.metrics'. */ /* */ - FT_EXPORT( FT_Error ) FT_Load_Glyph( FT_Face face, - FT_UInt glyph_index, - FT_Int load_flags ); + FT_EXPORT( FT_Error ) + FT_Load_Glyph( FT_Face face, + FT_UInt glyph_index, + FT_Int load_flags ); /*************************************************************************/ @@ -1808,9 +1869,10 @@ /* Note that this also transforms the `face.glyph.advance' field, but */ /* *not* the values in `face.glyph.metrics'. */ /* */ - FT_EXPORT( FT_Error ) FT_Load_Char( FT_Face face, - FT_ULong char_code, - FT_Int load_flags ); + FT_EXPORT( FT_Error ) + FT_Load_Char( FT_Face face, + FT_ULong char_code, + FT_Int load_flags ); /*************************************************************************/ @@ -1977,7 +2039,7 @@ /* the glyph loader should not try to transform the loaded glyph */ /* image. */ /* */ -#define FT_LOAD_IGNORE_TRANSFORM 2048 +#define FT_LOAD_IGNORE_TRANSFORM 2048 /*************************************************************************/ @@ -2004,9 +2066,12 @@ /* the function should return the linearly scaled metrics expressed */ /* in original font units, instead of the default 16.16 pixel values. */ /* */ -#define FT_LOAD_LINEAR_DESIGN 8192 +#define FT_LOAD_LINEAR_DESIGN 8192 + /* temporary hack! */ +#define FT_LOAD_SBITS_ONLY 16384 + /*************************************************************************/ /* */ /* */ @@ -2046,9 +2111,10 @@ /* the transformation and is performed on the character size given in */ /* the last call to FT_Set_Char_Sizes() or FT_Set_Pixel_Sizes(). */ /* */ - FT_EXPORT( void ) FT_Set_Transform( FT_Face face, - FT_Matrix* matrix, - FT_Vector* delta ); + FT_EXPORT( void ) + FT_Set_Transform( FT_Face face, + FT_Matrix* matrix, + FT_Vector* delta ); /*************************************************************************/ @@ -2108,8 +2174,9 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Render_Glyph( FT_GlyphSlot slot, - FT_UInt render_mode ); + FT_EXPORT( FT_Error ) + FT_Render_Glyph( FT_GlyphSlot slot, + FT_UInt render_mode ); /*************************************************************************/ @@ -2173,11 +2240,12 @@ /* kernings, are out of the scope of this API function -- they can be */ /* implemented through format-specific interfaces. */ /* */ - FT_EXPORT( FT_Error ) FT_Get_Kerning( FT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_UInt kern_mode, - FT_Vector *akerning ); + FT_EXPORT( FT_Error ) + FT_Get_Kerning( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_UInt kern_mode, + FT_Vector *akerning ); /*************************************************************************/ @@ -2216,15 +2284,39 @@ /* macro FT_CONFIG_OPTION_NO_GLYPH_NAMES is defined in */ /* `include/freetype/config/ftoptions.h' */ /* */ - FT_EXPORT( FT_Error ) FT_Get_Glyph_Name( FT_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ); + FT_EXPORT( FT_Error ) + FT_Get_Glyph_Name( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); /*************************************************************************/ /* */ /* */ + /* FT_Get_Postscript_Name */ + /* */ + /* */ + /* Retrieves the ASCII Postscript name of a given face, if available. */ + /* This should only work with Postscript and TrueType fonts. */ + /* */ + /* */ + /* face :: A handle to the source face object. */ + /* */ + /* */ + /* A pointer to the face's Postscript name. NULL if un-available. */ + /* */ + /* */ + /* The returned pointer is owned by the face and will be destroyed */ + /* with it. */ + /* */ + FT_EXPORT( const char* ) + FT_Get_Postscript_Name( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* */ /* FT_Select_Charmap */ /* */ /* */ @@ -2244,8 +2336,9 @@ /* This function will return an error if no charmap in the face */ /* corresponds to the encoding queried here. */ /* */ - FT_EXPORT( FT_Error ) FT_Select_Charmap( FT_Face face, - FT_Encoding encoding ); + FT_EXPORT( FT_Error ) + FT_Select_Charmap( FT_Face face, + FT_Encoding encoding ); /*************************************************************************/ @@ -2271,8 +2364,9 @@ /* the face (i.e., if it is not listed in the face->charmaps[] */ /* table). */ /* */ - FT_EXPORT( FT_Error ) FT_Set_Charmap( FT_Face face, - FT_CharMap charmap ); + FT_EXPORT( FT_Error ) + FT_Set_Charmap( FT_Face face, + FT_CharMap charmap ); /*************************************************************************/ @@ -2292,12 +2386,36 @@ /* */ /* The glyph index. 0 means `undefined character code'. */ /* */ - FT_EXPORT( FT_UInt ) FT_Get_Char_Index( FT_Face face, - FT_ULong charcode ); + FT_EXPORT( FT_UInt ) + FT_Get_Char_Index( FT_Face face, + FT_ULong charcode ); /*************************************************************************/ /* */ + /* */ + /* FT_Get_Name_Index */ + /* */ + /* */ + /* Returns the glyph index of a given glyph name. This function uses */ + /* driver specific objects to do the translation. */ + /* */ + /* */ + /* face :: A handle to the source face object. */ + /* */ + /* glyph_name :: The glyph name. */ + /* */ + /* */ + /* The glyph index. 0 means `undefined character code'. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Name_Index( FT_Face face, + FT_String* glyph_name ); + + + + /*************************************************************************/ + /* */ /*
    */ /* computations */ /* */ @@ -2317,7 +2435,7 @@ /* FT_DivFix */ /* FT_RoundFix */ /* FT_CeilFix */ - /* FT_FloorFix */ + /* FT_FloorFix */ /* FT_Vector_Transform */ /* FT_Matrix_Multiply */ /* FT_Matrix_Invert */ @@ -2348,9 +2466,10 @@ /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ /* on the signs of `a' and `b'. */ /* */ - FT_EXPORT( FT_Long ) FT_MulDiv( FT_Long a, - FT_Long b, - FT_Long c ); + FT_EXPORT( FT_Long ) + FT_MulDiv( FT_Long a, + FT_Long b, + FT_Long c ); /*************************************************************************/ @@ -2382,8 +2501,9 @@ /* _second_ argument of this function; this can make a great */ /* difference. */ /* */ - FT_EXPORT( FT_Long ) FT_MulFix( FT_Long a, - FT_Long b ); + FT_EXPORT( FT_Long ) + FT_MulFix( FT_Long a, + FT_Long b ); /*************************************************************************/ @@ -2409,8 +2529,9 @@ /* 32 bits, then the division is computed directly. Otherwise, we */ /* use a specialized version of the old FT_MulDiv64(). */ /* */ - FT_EXPORT( FT_Long ) FT_DivFix( FT_Long a, - FT_Long b ); + FT_EXPORT( FT_Long ) + FT_DivFix( FT_Long a, + FT_Long b ); /*************************************************************************/ @@ -2427,7 +2548,8 @@ /* */ /* The result of `(a + 0x8000) & -0x10000'. */ /* */ - FT_EXPORT( FT_Fixed ) FT_RoundFix( FT_Fixed a ); + FT_EXPORT( FT_Fixed ) + FT_RoundFix( FT_Fixed a ); /*************************************************************************/ @@ -2445,7 +2567,8 @@ /* */ /* The result of `(a + 0x10000 - 1) & -0x10000'. */ /* */ - FT_EXPORT( FT_Fixed ) FT_CeilFix( FT_Fixed a ); + FT_EXPORT( FT_Fixed ) + FT_CeilFix( FT_Fixed a ); /*************************************************************************/ @@ -2463,7 +2586,8 @@ /* */ /* The result of `a & -0x10000'. */ /* */ - FT_EXPORT( FT_Fixed ) FT_FloorFix( FT_Fixed a ); + FT_EXPORT( FT_Fixed ) + FT_FloorFix( FT_Fixed a ); /*************************************************************************/ @@ -2483,8 +2607,9 @@ /* */ /* The result is undefined if either `vector' or `matrix' is invalid. */ /* */ - FT_EXPORT( void ) FT_Vector_Transform( FT_Vector* vec, - FT_Matrix* matrix ); + FT_EXPORT( void ) + FT_Vector_Transform( FT_Vector* vec, + FT_Matrix* matrix ); /* */ Index: xc/extras/freetype2/include/freetype/ftbbox.h diff -u xc/extras/freetype2/include/freetype/ftbbox.h:1.1.1.2 xc/extras/freetype2/include/freetype/ftbbox.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/ftbbox.h:1.1.1.2 Tue May 15 23:45:56 2001 +++ xc/extras/freetype2/include/freetype/ftbbox.h Sun Dec 16 12:49:21 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType exact bbox computation (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,8 +27,8 @@ /*************************************************************************/ -#ifndef FTBBOX_H -#define FTBBOX_H +#ifndef __FTBBOX_H__ +#define __FTBBOX_H__ #include @@ -67,8 +67,9 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Outline_Get_BBox( FT_Outline* outline, - FT_BBox *abbox ); + FT_EXPORT( FT_Error ) + FT_Outline_Get_BBox( FT_Outline* outline, + FT_BBox *abbox ); /* */ @@ -76,7 +77,7 @@ FT_END_HEADER -#endif /* FTBBOX_H */ +#endif /* __FTBBOX_H__ */ /* END */ Index: xc/extras/freetype2/include/freetype/ftcache.h diff -u xc/extras/freetype2/include/freetype/ftcache.h:1.3 xc/extras/freetype2/include/freetype/ftcache.h:1.5 --- xc/extras/freetype2/include/freetype/ftcache.h:1.3 Tue May 15 23:56:09 2001 +++ xc/extras/freetype2/include/freetype/ftcache.h Mon Jan 14 12:00:58 2002 @@ -2,9 +2,9 @@ /* */ /* ftcache.h */ /* */ -/* FreeType Cache subsystem. */ +/* FreeType Cache subsystem (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -57,6 +57,38 @@ /* This section describes the FreeType 2 cache sub-system which is */ /* stile in beta. */ /* */ + /* */ + /* FTC_Manager */ + /* FTC_FaceID */ + /* FTC_Face_Requester */ + /* */ + /* FTC_Manager_New */ + /* FTC_Manager_Lookup_Face */ + /* FTC_Manager_Lookup_Size */ + /* */ + /* FTC_Node */ + /* FTC_Node_Ref */ + /* FTC_Node_Unref */ + /* */ + /* FTC_Font */ + /* FTC_ImageDesc */ + /* FTC_ImageCache */ + /* FTC_ImageCache_New */ + /* FTC_ImageCache_Lookup */ + /* */ + /* FTC_SBit */ + /* FTC_SBitCache */ + /* FTC_SBitCache_New */ + /* FTC_SBitCache_Lookup */ + /* */ + /* */ + /* FTC_Image_Desc */ + /* FTC_Image_Cache */ + /* FTC_Image_Cache_Lookup */ + /* */ + /* FTC_SBit_Cache */ + /* FTC_SBit_Cache_Lookup */ + /* */ /*************************************************************************/ @@ -90,7 +122,7 @@ /* */ /* */ /* A callback function provided by client applications. It is used */ - /* to translate a given FTC_FaceID into a new valid FT_Face object. */ + /* to translate a given @FTC_FaceID into a new valid @FT_Face object. */ /* */ /* */ /* face_id :: The face ID to resolve. */ @@ -100,20 +132,21 @@ /* data :: Application-provided request data. */ /* */ /* */ - /* aface :: A new FT_Face handle. */ + /* aface :: A new @FT_Face handle. */ /* */ /* */ /* FreeType error code. 0 means success. */ /* */ /* */ /* The face requester should not perform funny things on the returned */ - /* face object, like creating a new FT_Size for it, or setting a */ - /* transformation through FT_Set_Transform()! */ + /* face object, like creating a new @FT_Size for it, or setting a */ + /* transformation through @FT_Set_Transform! */ /* */ - typedef FT_Error (*FTC_Face_Requester)( FTC_FaceID face_id, - FT_Library library, - FT_Pointer request_data, - FT_Face* aface ); + typedef FT_Error + (*FTC_Face_Requester)( FTC_FaceID face_id, + FT_Library library, + FT_Pointer request_data, + FT_Face* aface ); /*************************************************************************/ @@ -142,13 +175,29 @@ } FTC_FontRec; + /* */ + + +#define FTC_FONT_COMPARE( f1, f2 ) \ + ( (f1)->face_id == (f2)->face_id && \ + (f1)->pix_width == (f2)->pix_width && \ + (f1)->pix_height == (f2)->pix_height ) + +#define FTC_FACE_ID_HASH( i ) ((FT_UInt32)(FT_Pointer)( i )) + +#define FTC_FONT_HASH( f ) \ + (FT_UInt32)( FTC_FACE_ID_HASH((f)->face_id) ^ \ + ((f)->pix_width << 8) ^ \ + ((f)->pix_height) ) + + /*************************************************************************/ /* */ /* */ /* FTC_Font */ /* */ /* */ - /* A simple handle to a FTC_FontRec structure. */ + /* A simple handle to an @FTC_FontRec structure. */ /* */ typedef FTC_FontRec* FTC_Font; @@ -170,14 +219,34 @@ /* FTC_Manager */ /* */ /* */ - /* This object is used to cache one or more FT_Face objects, along */ - /* with corresponding FT_Size objects. */ + /* This object is used to cache one or more @FT_Face objects, along */ + /* with corresponding @FT_Size objects. */ /* */ typedef struct FTC_ManagerRec_* FTC_Manager; /*************************************************************************/ /* */ + /* */ + /* FTC_Node */ + /* */ + /* */ + /* An opaque handle to a cache node object. Each cache node is */ + /* reference-counted. A node with a count of 0 might be flushed */ + /* out of a full cache whenever a lookup request is performed. */ + /* */ + /* If you lookup nodes, you have the ability to "acquire" them, i.e., */ + /* to increment their reference count. This will prevent the node */ + /* from being flushed out of the cache until you explicitly "release" */ + /* it (see @FTC_Node_Release). */ + /* */ + /* See also @FTC_BitsetCache_Lookup and @FTC_ImageCache_Lookup. */ + /* */ + typedef struct FTC_NodeRec_* FTC_Node; + + + /*************************************************************************/ + /* */ /* */ /* FTC_Manager_New */ /* */ @@ -197,10 +266,10 @@ /* Use 0 for defaults. */ /* */ /* requester :: An application-provided callback used to translate */ - /* face IDs into real FT_Face objects. */ + /* face IDs into real @FT_Face objects. */ /* */ /* req_data :: A generic pointer that is passed to the requester */ - /* each time it is called (see FTC_Face_Requester) */ + /* each time it is called (see @FTC_Face_Requester). */ /* */ /* */ /* amanager :: A handle to a new manager object. 0 in case of */ @@ -209,13 +278,14 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FTC_Manager_New( FT_Library library, - FT_UInt max_faces, - FT_UInt max_sizes, - FT_ULong max_bytes, - FTC_Face_Requester requester, - FT_Pointer req_data, - FTC_Manager *amanager ); + FT_EXPORT( FT_Error ) + FTC_Manager_New( FT_Library library, + FT_UInt max_faces, + FT_UInt max_sizes, + FT_ULong max_bytes, + FTC_Face_Requester requester, + FT_Pointer req_data, + FTC_Manager *amanager ); /*************************************************************************/ @@ -225,12 +295,13 @@ /* */ /* */ /* Empties a given cache manager. This simply gets rid of all the */ - /* currently cached FT_Face & FT_Size objects within the manager. */ + /* currently cached @FT_Face and @FT_Size objects within the manager. */ /* */ /* */ /* manager :: A handle to the manager. */ /* */ - FT_EXPORT( void ) FTC_Manager_Reset( FTC_Manager manager ); + FT_EXPORT( void ) + FTC_Manager_Reset( FTC_Manager manager ); /*************************************************************************/ @@ -244,7 +315,8 @@ /* */ /* manager :: A handle to the target cache manager object. */ /* */ - FT_EXPORT( void ) FTC_Manager_Done( FTC_Manager manager ); + FT_EXPORT( void ) + FTC_Manager_Done( FTC_Manager manager ); /*************************************************************************/ @@ -253,7 +325,7 @@ /* FTC_Manager_Lookup_Face */ /* */ /* */ - /* Retrieves the FT_Face object that corresponds to a given face ID */ + /* Retrieves the @FT_Face object that corresponds to a given face ID */ /* through a cache manager. */ /* */ /* */ @@ -268,20 +340,21 @@ /* FreeType error code. 0 means success. */ /* */ /* */ - /* The returned FT_Face object is always owned by the manager. You */ + /* The returned @FT_Face object is always owned by the manager. You */ /* should never try to discard it yourself. */ /* */ - /* The FT_Face object doesn't necessarily have a current size object */ + /* The @FT_Face object doesn't necessarily have a current size object */ /* (i.e., face->size can be 0). If you need a specific `font size', */ - /* use FTC_Manager_Lookup_Size() instead. */ + /* use @FTC_Manager_Lookup_Size instead. */ /* */ /* Never change the face's transformation matrix (i.e., never call */ - /* the FT_Set_Transform() function) on a returned face! If you need */ + /* the @FT_Set_Transform function) on a returned face! If you need */ /* to transform glyphs, do it yourself after glyph loading. */ /* */ - FT_EXPORT( FT_Error ) FTC_Manager_Lookup_Face( FTC_Manager manager, - FTC_FaceID face_id, - FT_Face *aface ); + FT_EXPORT( FT_Error ) + FTC_Manager_Lookup_Face( FTC_Manager manager, + FTC_FaceID face_id, + FT_Face *aface ); /*************************************************************************/ @@ -290,8 +363,8 @@ /* FTC_Manager_Lookup_Size */ /* */ /* */ - /* Retrieves the FT_Face & FT_Size objects that correspond to a given */ - /* FTC_SizeID. */ + /* Retrieves the @FT_Face and @FT_Size objects that correspond to a */ + /* given @FTC_SizeID. */ /* */ /* */ /* manager :: A handle to the cache manager. */ @@ -309,39 +382,25 @@ /* FreeType error code. 0 means success. */ /* */ /* */ - /* The returned FT_Face object is always owned by the manager. You */ + /* The returned @FT_Face object is always owned by the manager. You */ /* should never try to discard it yourself. */ /* */ /* Never change the face's transformation matrix (i.e., never call */ - /* the FT_Set_Transform() function) on a returned face! If you need */ + /* the @FT_Set_Transform function) on a returned face! If you need */ /* to transform glyphs, do it yourself after glyph loading. */ /* */ - /* Similarly, the returned FT_Size object is always owned by the */ + /* Similarly, the returned @FT_Size object is always owned by the */ /* manager. You should never try to discard it, and never change its */ - /* settings with FT_Set_Pixel_Sizes() or FT_Set_Char_Size()! */ + /* settings with @FT_Set_Pixel_Sizes or @FT_Set_Char_Size! */ /* */ /* The returned size object is the face's current size, which means */ - /* that you can call FT_Load_Glyph() with the face if you need to. */ + /* that you can call @FT_Load_Glyph with the face if you need to. */ /* */ - FT_EXPORT( FT_Error ) FTC_Manager_Lookup_Size( FTC_Manager manager, - FTC_Font font, - FT_Face *aface, - FT_Size *asize ); - - - /* a cache class is used to describe a unique cache type to the manager */ - typedef struct FTC_Cache_Class_ FTC_Cache_Class; - typedef struct FTC_CacheRec_* FTC_Cache; - - - /* this must be used internally for the moment */ - FT_EXPORT( FT_Error ) FTC_Manager_Register_Cache( - FTC_Manager manager, - FTC_Cache_Class* clazz, - FTC_Cache *acache ); - - - /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_Lookup_Size( FTC_Manager manager, + FTC_Font font, + FT_Face *aface, + FT_Size *asize ); FT_END_HEADER Index: xc/extras/freetype2/include/freetype/ftchapters.h diff -u xc/extras/freetype2/include/freetype/ftchapters.h:1.1.1.1 xc/extras/freetype2/include/freetype/ftchapters.h:1.1.1.2 --- xc/extras/freetype2/include/freetype/ftchapters.h:1.1.1.1 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/include/freetype/ftchapters.h Sun Dec 16 12:49:21 2001 @@ -15,6 +15,7 @@ /* truetype_tables */ /* type1_tables */ /* sfnt_names */ +/* sizes_management */ /* module_management */ /* system_interface */ /* header_file_macros */ @@ -33,7 +34,7 @@ /* */ /* cache_subsystem */ /* */ -/***************************************************************************/ +/***************************************************************************/ /***************************************************************************/ Index: xc/extras/freetype2/include/freetype/fterrors.h diff -u xc/extras/freetype2/include/freetype/fterrors.h:1.1.1.2 xc/extras/freetype2/include/freetype/fterrors.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/fterrors.h:1.1.1.2 Tue May 15 23:45:55 2001 +++ xc/extras/freetype2/include/freetype/fterrors.h Sun Dec 16 12:49:21 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType error codes (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,27 +18,71 @@ /*************************************************************************/ /* */ - /* This file is used to define the FreeType error enumeration constants. */ - /* It can also be used to create an error message table easily with */ - /* something like */ - /* */ - /* { */ - /* #undef __FTERRORS_H__ */ - /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ - /* #define FT_ERROR_START_LIST { */ - /* #define FT_ERROR_END_LIST { 0, 0 } }; */ + /* This special header file is used to define the FT2 enumeration */ + /* constants. It can also be used to generate error message strings */ + /* with a small macro trick explained below. */ /* */ - /* const struct */ + /* I - Error Formats */ + /* ----------------- */ + /* */ + /* Since release 2.1, the error constants have changed. The lower */ + /* byte of the error value gives the "generic" error code, while the */ + /* higher byte indicates in which module the error occured. */ + /* */ + /* You can use the macro FT_ERROR_BASE(x) macro to extract the generic */ + /* error code from an FT_Error value. */ + /* */ + /* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ + /* undefined in ftoption.h in order to make the higher byte always */ + /* zero, in case you need to be compatible with previous versions of */ + /* FreeType 2. */ + /* */ + /* */ + /* II - Error Message strings */ + /* -------------------------- */ + /* */ + /* The error definitions below are made through special macros that */ + /* allow client applications to build a table of error message strings */ + /* if they need it. The strings are not included in a normal build of */ + /* FreeType 2 to save space (most client applications do not use */ + /* them). */ + /* */ + /* To do so, you have to define the following macros before including */ + /* this file: */ + /* */ + /* FT_ERROR_START_LIST :: */ + /* This macro is called before anything else to define the start of */ + /* the error list. It is followed by several FT_ERROR_DEF calls */ + /* (see below). */ + /* */ + /* FT_ERROR_DEF( e, v, s ) :: */ + /* This macro is called to define one single error. */ + /* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */ + /* `v' is the error numerical value. */ + /* `s' is the corresponding error string. */ + /* */ + /* FT_ERROR_END_LIST :: */ + /* This macro ends the list. */ + /* */ + /* Additionally, you have to undefine __FTERRORS_H__ before #including */ + /* this file. */ + /* */ + /* Here is a simple example: */ + /* */ /* { */ - /* int err_code; */ - /* const char* err_msg */ - /* } ft_errors[] = */ + /* #undef __FTERRORS_H__ */ + /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ + /* #define FT_ERROR_START_LIST { */ + /* #define FT_ERROR_END_LIST { 0, 0 } }; */ /* */ - /* #include FT_ERRORS_H */ - /* } */ + /* const struct */ + /* { */ + /* int err_code; */ + /* const char* err_msg */ + /* } ft_errors[] = */ /* */ - /* For C++ it might be necessary to use `extern "C" {' and to define */ - /* FT_NEED_EXTERN_C also. */ + /* #include FT_ERRORS_H */ + /* } */ /* */ /*************************************************************************/ @@ -47,14 +91,56 @@ #define __FTERRORS_H__ -#undef FT_NEED_EXTERN_C + /* include module base error codes */ +#include FT_MODULE_ERRORS_H + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C +#define FT_ERR_XCAT( x, y ) x ## y +#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) + + + /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ + /* By default, we use `FT_Err_'. */ + /* */ +#ifndef FT_ERR_PREFIX +#define FT_ERR_PREFIX FT_Err_ +#endif + + /* FT_ERR_BASE is used as the base for module-specific errors. */ + /* */ +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS +#ifndef FT_ERR_BASE +#define FT_ERR_BASE FT_Mod_Err_Base +#endif + +#else + +#undef FT_ERR_BASE +#define FT_ERR_BASE 0 + +#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ + + + /* If FT_ERRORDEF is not defined, we need to define a simple */ + /* enumeration type. */ + /* */ #ifndef FT_ERRORDEF #define FT_ERRORDEF( e, v, s ) e = v, #define FT_ERROR_START_LIST enum { -#define FT_ERROR_END_LIST FT_Err_Max }; +#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) }; #ifdef __cplusplus #define FT_NEED_EXTERN_C @@ -64,139 +150,234 @@ #endif /* !FT_ERRORDEF */ + /* this macro is used to define an error */ +#define FT_ERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s ) + + /* this is only used for FT_Err_Ok, which must be 0! */ +#define FT_NOERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** LIST OF ERROR CODES/MESSAGES *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + #ifdef FT_ERROR_START_LIST FT_ERROR_START_LIST #endif + /* generic errors */ - FT_ERRORDEF( FT_Err_Ok, 0x0000, \ - "no error" ) - FT_ERRORDEF( FT_Err_Cannot_Open_Resource, 0x0001, \ + FT_NOERRORDEF_( Ok, 0x00, \ + "no error" ) + + FT_ERRORDEF_( Cannot_Open_Resource, 0x01, \ "cannot open resource" ) - FT_ERRORDEF( FT_Err_Unknown_File_Format, 0x0002, \ + FT_ERRORDEF_( Unknown_File_Format, 0x02, \ "unknown file format" ) - FT_ERRORDEF( FT_Err_Invalid_File_Format, 0x0003, \ + FT_ERRORDEF_( Invalid_File_Format, 0x03, \ "broken file" ) - FT_ERRORDEF( FT_Err_Invalid_Version, 0x0004, \ + FT_ERRORDEF_( Invalid_Version, 0x04, \ "invalid FreeType version" ) - FT_ERRORDEF( FT_Err_Lower_Module_Version, 0x0005, \ + FT_ERRORDEF_( Lower_Module_Version, 0x05, \ "module version is too low" ) - FT_ERRORDEF( FT_Err_Invalid_Argument, 0x0006, \ + FT_ERRORDEF_( Invalid_Argument, 0x06, \ "invalid argument" ) - FT_ERRORDEF( FT_Err_Unimplemented_Feature, 0x0007, \ + FT_ERRORDEF_( Unimplemented_Feature, 0x07, \ "unimplemented feature" ) /* glyph/character errors */ - FT_ERRORDEF( FT_Err_Invalid_Glyph_Index, 0x0010, \ + FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, \ "invalid glyph index" ) - FT_ERRORDEF( FT_Err_Invalid_Character_Code, 0x0011, \ + FT_ERRORDEF_( Invalid_Character_Code, 0x11, \ "invalid character code" ) - FT_ERRORDEF( FT_Err_Invalid_Glyph_Format, 0x0012, \ + FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, \ "unsupported glyph image format" ) - FT_ERRORDEF( FT_Err_Cannot_Render_Glyph, 0x0013, \ + FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, \ "cannot render this glyph format" ) - FT_ERRORDEF( FT_Err_Invalid_Outline, 0x0014, \ + FT_ERRORDEF_( Invalid_Outline, 0x14, \ "invalid outline" ) - FT_ERRORDEF( FT_Err_Invalid_Composite, 0x0015, \ + FT_ERRORDEF_( Invalid_Composite, 0x15, \ "invalid composite glyph" ) - FT_ERRORDEF( FT_Err_Too_Many_Hints, 0x0016, \ + FT_ERRORDEF_( Too_Many_Hints, 0x16, \ "too many hints" ) - FT_ERRORDEF( FT_Err_Invalid_Pixel_Size, 0x0017, \ + FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, \ "invalid pixel size" ) /* handle errors */ - FT_ERRORDEF( FT_Err_Invalid_Handle, 0x0020, \ + FT_ERRORDEF_( Invalid_Handle, 0x20, \ "invalid object handle" ) - FT_ERRORDEF( FT_Err_Invalid_Library_Handle, 0x0021, \ + FT_ERRORDEF_( Invalid_Library_Handle, 0x21, \ "invalid library handle" ) - FT_ERRORDEF( FT_Err_Invalid_Driver_Handle, 0x0022, \ + FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, \ "invalid module handle" ) - FT_ERRORDEF( FT_Err_Invalid_Face_Handle, 0x0023, \ + FT_ERRORDEF_( Invalid_Face_Handle, 0x23, \ "invalid face handle" ) - FT_ERRORDEF( FT_Err_Invalid_Size_Handle, 0x0024, \ + FT_ERRORDEF_( Invalid_Size_Handle, 0x24, \ "invalid size handle" ) - FT_ERRORDEF( FT_Err_Invalid_Slot_Handle, 0x0025, \ + FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, \ "invalid glyph slot handle" ) - FT_ERRORDEF( FT_Err_Invalid_CharMap_Handle, 0x0026, \ + FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, \ "invalid charmap handle" ) - FT_ERRORDEF( FT_Err_Invalid_Cache_Handle, 0x0027, \ + FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, \ "invalid cache manager handle" ) - FT_ERRORDEF( FT_Err_Invalid_Stream_Handle, 0x0028, \ + FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, \ "invalid stream handle" ) /* driver errors */ - FT_ERRORDEF( FT_Err_Too_Many_Drivers, 0x0030, \ + FT_ERRORDEF_( Too_Many_Drivers, 0x30, \ "too many modules" ) - FT_ERRORDEF( FT_Err_Too_Many_Extensions, 0x0031, \ + FT_ERRORDEF_( Too_Many_Extensions, 0x31, \ "too many extensions" ) /* memory errors */ - FT_ERRORDEF( FT_Err_Out_Of_Memory, 0x0040, \ + FT_ERRORDEF_( Out_Of_Memory, 0x40, \ "out of memory" ) - FT_ERRORDEF( FT_Err_Unlisted_Object, 0x0041, \ + FT_ERRORDEF_( Unlisted_Object, 0x41, \ "unlisted object" ) /* stream errors */ - FT_ERRORDEF( FT_Err_Cannot_Open_Stream, 0x0051, \ + FT_ERRORDEF_( Cannot_Open_Stream, 0x51, \ "cannot open stream" ) - FT_ERRORDEF( FT_Err_Invalid_Stream_Seek, 0x0052, \ + FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, \ "invalid stream seek" ) - FT_ERRORDEF( FT_Err_Invalid_Stream_Skip, 0x0053, \ + FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, \ "invalid stream skip" ) - FT_ERRORDEF( FT_Err_Invalid_Stream_Read, 0x0054, \ + FT_ERRORDEF_( Invalid_Stream_Read, 0x54, \ "invalid stream read" ) - FT_ERRORDEF( FT_Err_Invalid_Stream_Operation, 0x0055, \ + FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, \ "invalid stream operation" ) - FT_ERRORDEF( FT_Err_Invalid_Frame_Operation, 0x0056, \ + FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, \ "invalid frame operation" ) - FT_ERRORDEF( FT_Err_Nested_Frame_Access, 0x0057, \ + FT_ERRORDEF_( Nested_Frame_Access, 0x57, \ "nested frame access" ) - FT_ERRORDEF( FT_Err_Invalid_Frame_Read, 0x0058, \ + FT_ERRORDEF_( Invalid_Frame_Read, 0x58, \ "invalid frame read" ) /* raster errors */ - FT_ERRORDEF( FT_Err_Raster_Uninitialized, 0x0060, \ + FT_ERRORDEF_( Raster_Uninitialized, 0x60, \ "raster uninitialized" ) - FT_ERRORDEF( FT_Err_Raster_Corrupted, 0x0061, \ + FT_ERRORDEF_( Raster_Corrupted, 0x61, \ "raster corrupted" ) - FT_ERRORDEF( FT_Err_Raster_Overflow, 0x0062, \ + FT_ERRORDEF_( Raster_Overflow, 0x62, \ "raster overflow" ) - FT_ERRORDEF( FT_Err_Raster_Negative_Height, 0x0063, \ + FT_ERRORDEF_( Raster_Negative_Height, 0x63, \ "negative height while rastering" ) /* cache errors */ - FT_ERRORDEF( FT_Err_Too_Many_Caches, 0x0070, \ + FT_ERRORDEF_( Too_Many_Caches, 0x70, \ "too many registered caches" ) - /* range 0x400 - 0x4FF is reserved for TrueType specific stuff */ + /* TrueType and SFNT errors */ - /* range 0x500 - 0x5FF is reserved for CFF specific stuff */ + FT_ERRORDEF_( Invalid_Opcode, 0x80, \ + "invalid opcode" ) + FT_ERRORDEF_( Too_Few_Arguments, 0x81, \ + "too few arguments" ) + FT_ERRORDEF_( Stack_Overflow, 0x82, \ + "stack overflow" ) + FT_ERRORDEF_( Code_Overflow, 0x83, \ + "code overflow" ) + FT_ERRORDEF_( Bad_Argument, 0x84, \ + "bad argument" ) + FT_ERRORDEF_( Divide_By_Zero, 0x85, \ + "division by zero" ) + FT_ERRORDEF_( Invalid_Reference, 0x86, \ + "invalid reference" ) + FT_ERRORDEF_( Debug_OpCode, 0x87, \ + "found debug opcode" ) + FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, \ + "found ENDF opcode in execution stream" ) + FT_ERRORDEF_( Nested_DEFS, 0x89, \ + "nested DEFS" ) + FT_ERRORDEF_( Invalid_CodeRange, 0x8A, \ + "invalid code range" ) + FT_ERRORDEF_( Execution_Too_Long, 0x8B, \ + "execution context too long" ) + FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, \ + "too many function definitions" ) + FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, \ + "too many instruction definitions" ) + FT_ERRORDEF_( Table_Missing, 0x8E, \ + "SFNT font table missing" ) + FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, \ + "horizontal header (hhea) table missing" ) + FT_ERRORDEF_( Locations_Missing, 0x90, \ + "locations (loca) table missing" ) + FT_ERRORDEF_( Name_Table_Missing, 0x91, \ + "name table missing" ) + FT_ERRORDEF_( CMap_Table_Missing, 0x92, \ + "character map (cmap) table missing" ) + FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, \ + "horizontal metrics (hmtx) table missing" ) + FT_ERRORDEF_( Post_Table_Missing, 0x94, \ + "PostScript (post) table missing" ) + FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, \ + "invalid horizontal metrics" ) + FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, \ + "invalid character map (cmap) format" ) + FT_ERRORDEF_( Invalid_PPem, 0x97, \ + "invalid ppem value" ) + FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, \ + "invalid vertical metrics" ) + FT_ERRORDEF_( Could_Not_Find_Context, 0x99, \ + "could not find context" ) + FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, \ + "invalid PostScript (post) table format" ) + FT_ERRORDEF_( Invalid_Post_Table, 0x9B, \ + "invalid PostScript (post) table" ) + + /* CFF, CID, and Type 1 errors */ + + FT_ERRORDEF_( Syntax_Error, 0xA0, \ + "opcode syntax error" ) + FT_ERRORDEF_( Stack_Underflow, 0xA1, \ + "argument stack underflow" ) - /* range 0x600 - 0x6FF is reserved for Type1 specific stuff */ #ifdef FT_ERROR_END_LIST FT_ERROR_END_LIST #endif - -#undef FT_ERROR_START_LIST -#undef FT_ERROR_END_LIST -#undef FT_ERRORDEF + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SIMPLE CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ #ifdef FT_NEED_EXTERN_C } #endif -#endif /* __FTERRORS_H__ */ +#undef FT_ERROR_START_LIST +#undef FT_ERROR_END_LIST +#undef FT_ERRORDEF +#undef FT_ERRORDEF_ +#undef FT_NOERRORDEF_ + +#undef FT_NEED_EXTERN_C +#undef FT_ERR_PREFIX +#undef FT_ERR_BASE +#undef FT_ERR_CONCAT + +#endif /* __FTERRORS_H__ */ /* END */ Index: xc/extras/freetype2/include/freetype/ftglyph.h diff -u xc/extras/freetype2/include/freetype/ftglyph.h:1.1.1.2 xc/extras/freetype2/include/freetype/ftglyph.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/ftglyph.h:1.1.1.2 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/include/freetype/ftglyph.h Mon Jan 14 11:52:04 2002 @@ -4,7 +4,7 @@ /* */ /* FreeType convenience functions to handle glyphs (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -65,6 +65,24 @@ /*************************************************************************/ /* */ + /* */ + /* FT_Glyph */ + /* */ + /* */ + /* Handle to an object used to model generic glyph images. It is a */ + /* pointer to the @FT_GlyphRec structure and can contain a glyph */ + /* bitmap or pointer. */ + /* */ + /* */ + /* Glyph objects are not owned by the library. You must thus release */ + /* them manually (through @FT_Done_Glyph) _before_ calling */ + /* @FT_Done_FreeType. */ + /* */ + typedef struct FT_GlyphRec_* FT_Glyph; + + + /*************************************************************************/ + /* */ /* */ /* FT_GlyphRec */ /* */ @@ -88,7 +106,19 @@ FT_Glyph_Format format; FT_Vector advance; - } FT_GlyphRec, *FT_Glyph; + } FT_GlyphRec; + + + /*************************************************************************/ + /* */ + /* */ + /* FT_BitmapGlyph */ + /* */ + /* */ + /* A handle to an object used to model a bitmap glyph image. This is */ + /* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */ + /* */ + typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph; /*************************************************************************/ @@ -127,8 +157,20 @@ FT_Int left; FT_Int top; FT_Bitmap bitmap; + + } FT_BitmapGlyphRec; + - } FT_BitmapGlyphRec, *FT_BitmapGlyph; + /*************************************************************************/ + /* */ + /* */ + /* FT_OutlineGlyph */ + /* */ + /* */ + /* A handle to an object used to model an outline glyph image. This */ + /* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */ + /* */ + typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph; /*************************************************************************/ @@ -162,7 +204,7 @@ FT_GlyphRec root; FT_Outline outline; - } FT_OutlineGlyphRec, *FT_OutlineGlyph; + } FT_OutlineGlyphRec; /*************************************************************************/ @@ -182,8 +224,9 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Get_Glyph( FT_GlyphSlot slot, - FT_Glyph *aglyph ); + FT_EXPORT( FT_Error ) + FT_Get_Glyph( FT_GlyphSlot slot, + FT_Glyph *aglyph ); /*************************************************************************/ @@ -204,8 +247,9 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Glyph_Copy( FT_Glyph source, - FT_Glyph *target ); + FT_EXPORT( FT_Error ) + FT_Glyph_Copy( FT_Glyph source, + FT_Glyph *target ); /*************************************************************************/ @@ -233,12 +277,13 @@ /* The 2x2 transformation matrix is also applied to the glyph's */ /* advance vector. */ /* */ - FT_EXPORT( FT_Error ) FT_Glyph_Transform( FT_Glyph glyph, - FT_Matrix* matrix, - FT_Vector* delta ); + FT_EXPORT( FT_Error ) + FT_Glyph_Transform( FT_Glyph glyph, + FT_Matrix* matrix, + FT_Vector* delta ); /* */ - + /*************************************************************************/ /* */ /* */ @@ -311,9 +356,10 @@ }; - FT_EXPORT( void ) FT_Glyph_Get_CBox( FT_Glyph glyph, - FT_UInt bbox_mode, - FT_BBox *acbox ); + FT_EXPORT( void ) + FT_Glyph_Get_CBox( FT_Glyph glyph, + FT_UInt bbox_mode, + FT_BBox *acbox ); /*************************************************************************/ @@ -387,10 +433,11 @@ /* This function will always fail if the glyph's format isn't */ /* scalable. */ /* */ - FT_EXPORT( FT_Error ) FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, - FT_ULong render_mode, - FT_Vector* origin, - FT_Bool destroy ); + FT_EXPORT( FT_Error ) + FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, + FT_ULong render_mode, + FT_Vector* origin, + FT_Bool destroy ); /*************************************************************************/ @@ -404,7 +451,8 @@ /* */ /* glyph :: A handle to the target glyph object. */ /* */ - FT_EXPORT( void ) FT_Done_Glyph( FT_Glyph glyph ); + FT_EXPORT( void ) + FT_Done_Glyph( FT_Glyph glyph ); /* other helpful functions */ @@ -434,8 +482,9 @@ /* */ /* The result is undefined if either `a' or `b' is zero. */ /* */ - FT_EXPORT( void ) FT_Matrix_Multiply( FT_Matrix* a, - FT_Matrix* b ); + FT_EXPORT( void ) + FT_Matrix_Multiply( FT_Matrix* a, + FT_Matrix* b ); /*************************************************************************/ @@ -453,7 +502,8 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Matrix_Invert( FT_Matrix* matrix ); + FT_EXPORT( FT_Error ) + FT_Matrix_Invert( FT_Matrix* matrix ); /* */ Index: xc/extras/freetype2/include/freetype/ftimage.h diff -u xc/extras/freetype2/include/freetype/ftimage.h:1.1.1.2 xc/extras/freetype2/include/freetype/ftimage.h:1.1.1.5 --- xc/extras/freetype2/include/freetype/ftimage.h:1.1.1.2 Tue May 15 23:45:55 2001 +++ xc/extras/freetype2/include/freetype/ftimage.h Mon Jan 14 11:52:04 2002 @@ -5,7 +5,7 @@ /* FreeType glyph image formats and default raster interface */ /* (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -287,9 +287,9 @@ /* elements, giving the outline's point coordinates. */ /* */ /* tags :: A pointer to an array of `n_points' chars, giving */ - /* giving each outline point's type. If bit 0 is */ - /* unset, the point is 'off' the curve, i.e. a Bezier */ - /* control point, while it is `on' when set. */ + /* each outline point's type. If bit 0 is unset, the */ + /* point is `off' the curve, i.e. a Bezier control */ + /* point, while it is `on' when set. */ /* */ /* Bit 1 is meaningful for `off' points only. If set, */ /* it indicates a third-order Bezier arc control point; */ @@ -390,7 +390,7 @@ } FT_Outline_Flags; /* */ - + #define FT_CURVE_TAG( flag ) ( flag & 3 ) #define FT_Curve_Tag_On 1 @@ -424,8 +424,9 @@ /* */ /* Error code. 0 means success. */ /* */ - typedef int (*FT_Outline_MoveTo_Func)( FT_Vector* to, - void* user ); + typedef int + (*FT_Outline_MoveTo_Func)( FT_Vector* to, + void* user ); /*************************************************************************/ @@ -448,8 +449,9 @@ /* */ /* Error code. 0 means success. */ /* */ - typedef int (*FT_Outline_LineTo_Func)( FT_Vector* to, - void* user ); + typedef int + (*FT_Outline_LineTo_Func)( FT_Vector* to, + void* user ); /*************************************************************************/ @@ -476,9 +478,10 @@ /* */ /* Error code. 0 means success. */ /* */ - typedef int (*FT_Outline_ConicTo_Func)( FT_Vector* control, - FT_Vector* to, - void* user ); + typedef int + (*FT_Outline_ConicTo_Func)( FT_Vector* control, + FT_Vector* to, + void* user ); /*************************************************************************/ @@ -505,10 +508,11 @@ /* */ /* Error code. 0 means success. */ /* */ - typedef int (*FT_Outline_CubicTo_Func)( FT_Vector* control1, - FT_Vector* control2, - FT_Vector* to, - void* user ); + typedef int + (*FT_Outline_CubicTo_Func)( FT_Vector* control1, + FT_Vector* control2, + FT_Vector* to, + void* user ); /*************************************************************************/ @@ -576,11 +580,13 @@ /* */ /* This macro converts four letter tags into an unsigned long. */ /* */ -#define FT_IMAGE_TAG( _x1, _x2, _x3, _x4 ) \ - ( ( (unsigned long)_x1 << 24 ) | \ - ( (unsigned long)_x2 << 16 ) | \ - ( (unsigned long)_x3 << 8 ) | \ - (unsigned long)_x4 ) +#ifndef FT_IMAGE_TAG +#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ + value = ( ( (unsigned long)_x1 << 24 ) | \ + ( (unsigned long)_x2 << 16 ) | \ + ( (unsigned long)_x3 << 8 ) | \ + (unsigned long)_x4 ) +#endif /* FT_IMAGE_TAG */ /*************************************************************************/ @@ -615,11 +621,12 @@ /* */ typedef enum FT_Glyph_Format_ { - ft_glyph_format_none = 0, - ft_glyph_format_composite = FT_IMAGE_TAG( 'c', 'o', 'm', 'p' ), - ft_glyph_format_bitmap = FT_IMAGE_TAG( 'b', 'i', 't', 's' ), - ft_glyph_format_outline = FT_IMAGE_TAG( 'o', 'u', 't', 'l' ), - ft_glyph_format_plotter = FT_IMAGE_TAG( 'p', 'l', 'o', 't' ) + FT_IMAGE_TAG( ft_glyph_format_none, 0, 0, 0, 0 ), + + FT_IMAGE_TAG( ft_glyph_format_composite, 'c', 'o', 'm', 'p' ), + FT_IMAGE_TAG( ft_glyph_format_bitmap, 'b', 'i', 't', 's' ), + FT_IMAGE_TAG( ft_glyph_format_outline, 'o', 'u', 't', 'l' ), + FT_IMAGE_TAG( ft_glyph_format_plotter, 'p', 'l', 'o', 't' ) } FT_Glyph_Format; @@ -747,10 +754,11 @@ /* Otherwise, the callback is only called once per scan-line, and */ /* only for those scanlines that do have `gray' pixels on them. */ /* */ - typedef void (*FT_Raster_Span_Func)( int y, - int count, - FT_Span* spans, - void* user ); + typedef void + (*FT_Raster_Span_Func)( int y, + int count, + FT_Span* spans, + void* user ); /*************************************************************************/ @@ -774,9 +782,10 @@ /* */ /* 1 if the pixel is `set', 0 otherwise. */ /* */ - typedef int (*FT_Raster_BitTest_Func)( int y, - int x, - void* user ); + typedef int + (*FT_Raster_BitTest_Func)( int y, + int x, + void* user ); /*************************************************************************/ @@ -799,9 +808,10 @@ /* */ /* 1 if the pixel is `set', 0 otherwise. */ /* */ - typedef void (*FT_Raster_BitSet_Func)( int y, - int x, - void* user ); + typedef void + (*FT_Raster_BitSet_Func)( int y, + int x, + void* user ); /*************************************************************************/ @@ -883,7 +893,9 @@ /* callback. */ /* */ /* clip_box :: an optional clipping box. It is only used in */ - /* direct rendering mode */ + /* direct rendering mode. Note that coordinates */ + /* here should be expressed in _integer_ pixels */ + /* (and not 26.6 fixed-point units) */ /* */ /* */ /* An anti-aliased glyph bitmap is drawn if the ft_raster_flag_aa bit */ @@ -941,8 +953,9 @@ /* FreeType memory allocator. However, this field can be completely */ /* ignored by a given raster implementation. */ /* */ - typedef int (*FT_Raster_New_Func)( void* memory, - FT_Raster* raster ); + typedef int + (*FT_Raster_New_Func)( void* memory, + FT_Raster* raster ); /*************************************************************************/ @@ -956,7 +969,8 @@ /* */ /* raster :: A handle to the raster object. */ /* */ - typedef void (*FT_Raster_Done_Func)( FT_Raster raster ); + typedef void + (*FT_Raster_Done_Func)( FT_Raster raster ); /*************************************************************************/ @@ -986,9 +1000,10 @@ /* passed to the raster constructor). However, this is not */ /* recommended for efficiency purposes. */ /* */ - typedef void (*FT_Raster_Reset_Func)( FT_Raster raster, - unsigned char* pool_base, - unsigned long pool_size ); + typedef void + (*FT_Raster_Reset_Func)( FT_Raster raster, + unsigned char* pool_base, + unsigned long pool_size ); /*************************************************************************/ @@ -1009,9 +1024,10 @@ /* */ /* args :: A pointer to the new mode/property to use. */ /* */ - typedef int (*FT_Raster_Set_Mode_Func)( FT_Raster raster, - unsigned long mode, - void* args ); + typedef int + (*FT_Raster_Set_Mode_Func)( FT_Raster raster, + unsigned long mode, + void* args ); /*************************************************************************/ @@ -1048,8 +1064,9 @@ /* examples of distinct implementations which support direct */ /* composition). */ /* */ - typedef int (*FT_Raster_Render_Func)( FT_Raster raster, - FT_Raster_Params* params ); + typedef int + (*FT_Raster_Render_Func)( FT_Raster raster, + FT_Raster_Params* params ); /*************************************************************************/ Index: xc/extras/freetype2/include/freetype/ftlist.h diff -u xc/extras/freetype2/include/freetype/ftlist.h:1.1.1.2 xc/extras/freetype2/include/freetype/ftlist.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/ftlist.h:1.1.1.2 Tue May 15 23:45:56 2001 +++ xc/extras/freetype2/include/freetype/ftlist.h Sun Dec 16 12:49:21 2001 @@ -4,7 +4,7 @@ /* */ /* Generic list support for FreeType (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -68,7 +68,7 @@ /* */ /*************************************************************************/ - + /*************************************************************************/ /* */ /* */ @@ -84,8 +84,9 @@ /* */ /* List node. NULL if it wasn't found. */ /* */ - FT_EXPORT( FT_ListNode ) FT_List_Find( FT_List list, - void* data ); + FT_EXPORT( FT_ListNode ) + FT_List_Find( FT_List list, + void* data ); /*************************************************************************/ @@ -100,8 +101,9 @@ /* list :: A pointer to the parent list. */ /* node :: The node to append. */ /* */ - FT_EXPORT( void ) FT_List_Add( FT_List list, - FT_ListNode node ); + FT_EXPORT( void ) + FT_List_Add( FT_List list, + FT_ListNode node ); /*************************************************************************/ @@ -116,8 +118,9 @@ /* list :: A pointer to parent list. */ /* node :: The node to insert. */ /* */ - FT_EXPORT( void ) FT_List_Insert( FT_List list, - FT_ListNode node ); + FT_EXPORT( void ) + FT_List_Insert( FT_List list, + FT_ListNode node ); /*************************************************************************/ @@ -135,8 +138,9 @@ /* */ /* list :: A pointer to the parent list. */ /* */ - FT_EXPORT( void ) FT_List_Remove( FT_List list, - FT_ListNode node ); + FT_EXPORT( void ) + FT_List_Remove( FT_List list, + FT_ListNode node ); /*************************************************************************/ @@ -152,8 +156,9 @@ /* list :: A pointer to the parent list. */ /* node :: The node to move. */ /* */ - FT_EXPORT( void ) FT_List_Up( FT_List list, - FT_ListNode node ); + FT_EXPORT( void ) + FT_List_Up( FT_List list, + FT_ListNode node ); /*************************************************************************/ @@ -171,8 +176,9 @@ /* user :: A typeless pointer passed to FT_List_Iterate(). */ /* Can be used to point to the iteration's state. */ /* */ - typedef FT_Error (*FT_List_Iterator)( FT_ListNode node, - void* user ); + typedef FT_Error + (*FT_List_Iterator)( FT_ListNode node, + void* user ); /*************************************************************************/ @@ -195,9 +201,10 @@ /* */ /* The result (a FreeType error code) of the last iterator call. */ /* */ - FT_EXPORT( FT_Error ) FT_List_Iterate( FT_List list, - FT_List_Iterator iterator, - void* user ); + FT_EXPORT( FT_Error ) + FT_List_Iterate( FT_List list, + FT_List_Iterator iterator, + void* user ); /*************************************************************************/ @@ -218,9 +225,10 @@ /* user :: A typeless pointer passed to FT_List_Iterate(). It can */ /* be used to point to the iteration's state. */ /* */ - typedef void (*FT_List_Destructor)( FT_Memory memory, - void* data, - void* user ); + typedef void + (*FT_List_Destructor)( FT_Memory memory, + void* data, + void* user ); /*************************************************************************/ @@ -242,15 +250,16 @@ /* user :: A user-supplied field which is passed as the last */ /* argument to the destructor. */ /* */ - FT_EXPORT( void ) FT_List_Finalize( FT_List list, - FT_List_Destructor destroy, - FT_Memory memory, - void* user ); + FT_EXPORT( void ) + FT_List_Finalize( FT_List list, + FT_List_Destructor destroy, + FT_Memory memory, + void* user ); /* */ + - FT_END_HEADER #endif /* __FTLIST_H__ */ Index: xc/extras/freetype2/include/freetype/ftmac.h diff -u xc/extras/freetype2/include/freetype/ftmac.h:1.1.1.2 xc/extras/freetype2/include/freetype/ftmac.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/ftmac.h:1.1.1.2 Tue May 15 23:45:55 2001 +++ xc/extras/freetype2/include/freetype/ftmac.h Mon Jan 14 11:52:04 2002 @@ -4,7 +4,7 @@ /* */ /* Additional Mac-specific API. */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -25,8 +25,8 @@ /***************************************************************************/ -#ifndef __FT_MAC_H__ -#define __FT_MAC_H__ +#ifndef __FTMAC_H__ +#define __FTMAC_H__ #include @@ -85,19 +85,44 @@ /* error = FT_New_Face_From_FOND( library, fond, 0, &face ); */ /* } */ /* */ - FT_EXPORT( FT_Error ) FT_New_Face_From_FOND( FT_Library library, - Handle fond, - FT_Long face_index, - FT_Face *aface ); + FT_EXPORT( FT_Error ) + FT_New_Face_From_FOND( FT_Library library, + Handle fond, + FT_Long face_index, + FT_Face *aface ); + /*************************************************************************/ + /* */ + /* */ + /* FT_GetFile_From_Mac_Name */ + /* */ + /* */ + /* Returns an FSSpec for the disk file containing the named font. */ + /* */ + /* */ + /* fontName :: Mac OS name of the font (eg. Times New Roman Bold). */ + /* */ + /* */ + /* pathSpec :: FSSpec to the file. For passing to @FT_New_Face. */ + /* */ + /* face_index :: Index of the face. For passing to @FT_New_Face. */ + /* */ + /* */ + /* FreeType error code. 0 means success. */ + /* */ + FT_EXPORT_DEF( FT_Error ) + FT_GetFile_From_Mac_Name( char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ); + /* */ FT_END_HEADER -#endif /* __FT_MAC_H__ */ +#endif /* __FTMAC_H__ */ /* END */ Index: xc/extras/freetype2/include/freetype/ftmm.h diff -u xc/extras/freetype2/include/freetype/ftmm.h:1.1.1.2 xc/extras/freetype2/include/freetype/ftmm.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/ftmm.h:1.1.1.2 Tue May 15 23:45:55 2001 +++ xc/extras/freetype2/include/freetype/ftmm.h Sun Dec 16 12:49:21 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType Multiple Master font interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -100,16 +100,19 @@ /* */ - typedef FT_Error (*FT_Get_MM_Func)( FT_Face face, - FT_Multi_Master* master ); + typedef FT_Error + (*FT_Get_MM_Func)( FT_Face face, + FT_Multi_Master* master ); + + typedef FT_Error + (*FT_Set_MM_Design_Func)( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); - typedef FT_Error (*FT_Set_MM_Design_Func)( FT_Face face, - FT_UInt num_coords, - FT_Long* coords ); - - typedef FT_Error (*FT_Set_MM_Blend_Func)( FT_Face face, - FT_UInt num_coords, - FT_Long* coords ); + typedef FT_Error + (*FT_Set_MM_Blend_Func)( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); /*************************************************************************/ @@ -129,8 +132,9 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Get_Multi_Master( FT_Face face, - FT_Multi_Master *amaster ); + FT_EXPORT( FT_Error ) + FT_Get_Multi_Master( FT_Face face, + FT_Multi_Master *amaster ); /*************************************************************************/ @@ -154,10 +158,10 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Set_MM_Design_Coordinates( - FT_Face face, - FT_UInt num_coords, - FT_Long* coords ); + FT_EXPORT( FT_Error ) + FT_Set_MM_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); /*************************************************************************/ @@ -182,10 +186,10 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Set_MM_Blend_Coordinates( - FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); + FT_EXPORT( FT_Error ) + FT_Set_MM_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); /* */ Index: xc/extras/freetype2/include/freetype/ftmoderr.h diff -u /dev/null xc/extras/freetype2/include/freetype/ftmoderr.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:47 2002 +++ xc/extras/freetype2/include/freetype/ftmoderr.h Sun Sep 9 22:55:55 2001 @@ -0,0 +1,148 @@ +/***************************************************************************/ +/* */ +/* ftmoderr.h */ +/* */ +/* FreeType module error offsets (specification). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the FreeType module error offsets. */ + /* */ + /* The lower byte gives the error code, the higher byte gives the */ + /* module. The base module has error offset 0. For example, the error */ + /* `FT_Err_Invalid_File_Format' has value 0x003, the error */ + /* `TT_Err_Invalid_File_Format' has value 0xB03, the error */ + /* `T1_Err_Invalid_File_Format' has value 0xC03, etc. */ + /* */ + /* Undefine the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in ftoption.h */ + /* to make the higher byte always zero (disabling the module error */ + /* mechanism). */ + /* */ + /* It can also be used to create a module error message table easily */ + /* with something like */ + /* */ + /* { */ + /* #undef __FTMODERR_H__ */ + /* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, */ + /* #define FT_MODERR_START_LIST { */ + /* #define FT_MODERR_END_LIST { 0, 0 } }; */ + /* */ + /* const struct */ + /* { */ + /* int mod_err_offset; */ + /* const char* mod_err_msg */ + /* } ft_mod_errors[] = */ + /* */ + /* #include FT_MODULE_ERRORS_H */ + /* } */ + /* */ + /* To use such a table, all errors must be ANDed with 0xFF00 to remove */ + /* the error code. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTMODERR_H__ +#define __FTMODERR_H__ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + +#ifndef FT_MODERRDEF + +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = v, +#else +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = 0, +#endif + +#define FT_MODERR_START_LIST enum { +#define FT_MODERR_END_LIST FT_Mod_Err_Max }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_MODERRDEF */ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** LIST MODULE ERROR BASES *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_MODERR_START_LIST + FT_MODERR_START_LIST +#endif + + + FT_MODERRDEF( Base, 0x000, "base module" ) + FT_MODERRDEF( Autohint, 0x100, "autohinter module" ) + FT_MODERRDEF( Cache, 0x200, "cache module" ) + FT_MODERRDEF( CFF, 0x300, "CFF module" ) + FT_MODERRDEF( CID, 0x400, "CID module" ) + FT_MODERRDEF( PCF, 0x500, "PCF module" ) + FT_MODERRDEF( PSaux, 0x600, "PS auxiliary module" ) + FT_MODERRDEF( PSnames, 0x700, "PS names module" ) + FT_MODERRDEF( Raster, 0x800, "raster module" ) + FT_MODERRDEF( SFNT, 0x900, "SFNT module" ) + FT_MODERRDEF( Smooth, 0xA00, "smooth raster module" ) + FT_MODERRDEF( TrueType, 0xB00, "TrueType module" ) + FT_MODERRDEF( Type1, 0xC00, "Type 1 module" ) + FT_MODERRDEF( Winfonts, 0xD00, "Windows FON/FNT module" ) + + +#ifdef FT_MODERR_END_LIST + FT_MODERR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_MODERR_START_LIST +#undef FT_MODERR_END_LIST +#undef FT_MODERRDEF +#undef FT_NEED_EXTERN_C + + +#endif /* __FTMODERR_H__ */ + + +/* END */ Index: xc/extras/freetype2/include/freetype/ftmodule.h diff -u xc/extras/freetype2/include/freetype/ftmodule.h:1.1.1.2 xc/extras/freetype2/include/freetype/ftmodule.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/ftmodule.h:1.1.1.2 Tue May 15 23:45:56 2001 +++ xc/extras/freetype2/include/freetype/ftmodule.h Sun Dec 16 12:49:22 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType modules public interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -63,14 +63,18 @@ } FT_Module_Flags; - typedef void (*FT_Module_Interface)( void ); + typedef void + (*FT_Module_Interface)( void ); - typedef FT_Error (*FT_Module_Constructor)( FT_Module module ); + typedef FT_Error + (*FT_Module_Constructor)( FT_Module module ); - typedef void (*FT_Module_Destructor)( FT_Module module ); + typedef void + (*FT_Module_Destructor)( FT_Module module ); - typedef FT_Module_Interface (*FT_Module_Requester)( FT_Module module, - const char* name ); + typedef FT_Module_Interface + (*FT_Module_Requester)( FT_Module module, + const char* name ); /*************************************************************************/ @@ -142,8 +146,9 @@ /* An error will be returned if a module already exists by that name, */ /* or if the module requires a version of FreeType that is too great. */ /* */ - FT_EXPORT( FT_Error ) FT_Add_Module( FT_Library library, - const FT_Module_Class* clazz ); + FT_EXPORT( FT_Error ) + FT_Add_Module( FT_Library library, + const FT_Module_Class* clazz ); /*************************************************************************/ @@ -166,8 +171,9 @@ /* You should better be familiar with FreeType internals to know */ /* which module to look for :-) */ /* */ - FT_EXPORT( FT_Module ) FT_Get_Module( FT_Library library, - const char* module_name ); + FT_EXPORT( FT_Module ) + FT_Get_Module( FT_Library library, + const char* module_name ); /*************************************************************************/ @@ -190,8 +196,9 @@ /* */ /* The module object is destroyed by the function in case of success. */ /* */ - FT_EXPORT( FT_Error ) FT_Remove_Module( FT_Library library, - FT_Module module ); + FT_EXPORT( FT_Error ) + FT_Remove_Module( FT_Library library, + FT_Module module ); /*************************************************************************/ @@ -213,8 +220,9 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_New_Library( FT_Memory memory, - FT_Library *alibrary ); + FT_EXPORT( FT_Error ) + FT_New_Library( FT_Memory memory, + FT_Library *alibrary ); /*************************************************************************/ @@ -232,11 +240,13 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Done_Library( FT_Library library ); + FT_EXPORT( FT_Error ) + FT_Done_Library( FT_Library library ); - typedef void (*FT_DebugHook_Func)( void* arg ); + typedef void + (*FT_DebugHook_Func)( void* arg ); /*************************************************************************/ @@ -262,9 +272,10 @@ /* Currently, four debug hook slots are available, but only two (for */ /* the TrueType and the Type 1 interpreter) are defined. */ /* */ - FT_EXPORT( void ) FT_Set_Debug_Hook( FT_Library library, - FT_UInt hook_index, - FT_DebugHook_Func debug_hook ); + FT_EXPORT( void ) + FT_Set_Debug_Hook( FT_Library library, + FT_UInt hook_index, + FT_DebugHook_Func debug_hook ); @@ -281,7 +292,8 @@ /* */ /* library :: A handle to a new library object. */ /* */ - FT_EXPORT( void ) FT_Add_Default_Modules( FT_Library library ); + FT_EXPORT( void ) + FT_Add_Default_Modules( FT_Library library ); /* */ Index: xc/extras/freetype2/include/freetype/ftnames.h diff -u xc/extras/freetype2/include/freetype/ftnames.h:1.1.1.1 xc/extras/freetype2/include/freetype/ftnames.h:removed --- xc/extras/freetype2/include/freetype/ftnames.h:1.1.1.1 Fri Dec 8 16:26:17 2000 +++ xc/extras/freetype2/include/freetype/ftnames.h Fri Jan 18 15:21:47 2002 @@ -1,129 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftnames.h */ -/* */ -/* Simple interface to access SFNT name tables (which are used */ -/* to hold font names, copyright info, notices, etc.) (specification). */ -/* */ -/* This is _not_ used to retrieve glyph names! */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTNAMES_H__ -#define __FTNAMES_H__ - -#ifndef FT_BUILD_H -# define FT_BUILD_H -#endif -#include FT_BUILD_H -#include FT_FREETYPE_H - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* */ - /* FT_SfntName */ - /* */ - /* */ - /* A structure used to model an SFNT `name' table entry. */ - /* */ - /* */ - /* platform_id :: The platform ID for `string'. */ - /* */ - /* encoding_id :: The encoding ID for `string'. */ - /* */ - /* language_id :: The language ID for `string'. */ - /* */ - /* name_id :: An identifier for `string'. */ - /* */ - /* string :: The `name' string. Note that this string is in */ - /* Pascal convention, i.e., the string hasn't a final */ - /* null byte. */ - /* */ - /* string_len :: The length of `string' in bytes. */ - /* */ - /* */ - /* Possible values for `platform_id', `encoding_id', `language_id', */ - /* and `name_id' are given in the file `ttnameid.h'. For details */ - /* please refer to the TrueType or OpenType specification. */ - /* */ - typedef struct FT_SfntName_ - { - FT_UShort platform_id; - FT_UShort encoding_id; - FT_UShort language_id; - FT_UShort name_id; - - FT_Byte* string; /* this string is *not* null-terminated! */ - FT_UInt string_len; /* in bytes */ - - } FT_SfntName; - - - /*************************************************************************/ - /* */ - /* */ - /* FT_Get_Sfnt_Name_Count */ - /* */ - /* */ - /* Retrieves the number of name strings in the SFNT `name' table. */ - /* */ - /* */ - /* face :: A handle to the source face. */ - /* */ - /* */ - /* The number of strings in the `name' table. */ - /* */ - FT_EXPORT( FT_UInt ) FT_Get_Sfnt_Name_Count( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* */ - /* FT_Get_Sfnt_Name */ - /* */ - /* */ - /* Retrieves a string of the SFNT `name' table for a given index. */ - /* */ - /* */ - /* face :: A handle to the source face. */ - /* */ - /* index :: The index of the `name' string. */ - /* */ - /* */ - /* aname :: The indexed FT_SfntName structure. */ - /* */ - /* */ - /* FreeType error code. 0 means success. */ - /* */ - /* */ - /* The `string' array returned in the `aname' structure is not */ - /* null-terminated. */ - /* */ - /* Use FT_Get_Sfnt_Name_Count() to get the total number of available */ - /* `name' table entries, then do a loop until you get the right */ - /* platform, encoding, and name ID. */ - /* */ - FT_EXPORT( FT_Error ) FT_Get_Sfnt_Name( FT_Face face, - FT_UInt index, - FT_SfntName *aname ); - - -FT_END_HEADER - -#endif /* __FTNAMES_H__ */ - - -/* END */ Index: xc/extras/freetype2/include/freetype/ftoutln.h diff -u xc/extras/freetype2/include/freetype/ftoutln.h:1.1.1.2 xc/extras/freetype2/include/freetype/ftoutln.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/ftoutln.h:1.1.1.2 Tue May 15 23:45:55 2001 +++ xc/extras/freetype2/include/freetype/ftoutln.h Mon Jan 14 11:52:04 2002 @@ -5,7 +5,7 @@ /* Support for the FT_Outline type used to store glyph shapes of */ /* most scalable font formats (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -53,6 +53,7 @@ /* FT_Outline_Translate */ /* FT_Outline_Transform */ /* FT_Outline_Reverse */ + /* FT_Outline_Check */ /* */ /* FT_Outline_Get_CBox */ /* FT_Outline_Get_BBox */ @@ -95,10 +96,10 @@ /* */ /* FreeType error code. 0 means sucess. */ /* */ - FT_EXPORT( FT_Error ) FT_Outline_Decompose( - FT_Outline* outline, - const FT_Outline_Funcs* interface, - void* user ); + FT_EXPORT( FT_Error ) + FT_Outline_Decompose( FT_Outline* outline, + const FT_Outline_Funcs* interface, + void* user ); /*************************************************************************/ @@ -130,14 +131,15 @@ /* The reason why this function takes a `library' parameter is simply */ /* to use the library's memory allocator. */ /* */ - FT_EXPORT( FT_Error ) FT_Outline_New( FT_Library library, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ); + FT_EXPORT( FT_Error ) + FT_Outline_New( FT_Library library, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); - FT_EXPORT( FT_Error ) FT_Outline_New_Internal( - FT_Memory memory, + FT_EXPORT( FT_Error ) + FT_Outline_New_Internal( FT_Memory memory, FT_UInt numPoints, FT_Int numContours, FT_Outline *anoutline ); @@ -167,17 +169,37 @@ /* The reason why this function takes an `library' parameter is */ /* simply to use FT_Free(). */ /* */ - FT_EXPORT( FT_Error ) FT_Outline_Done( FT_Library library, - FT_Outline* outline ); + FT_EXPORT( FT_Error ) + FT_Outline_Done( FT_Library library, + FT_Outline* outline ); - FT_EXPORT( FT_Error ) FT_Outline_Done_Internal( FT_Memory memory, - FT_Outline* outline ); + FT_EXPORT( FT_Error ) + FT_Outline_Done_Internal( FT_Memory memory, + FT_Outline* outline ); /*************************************************************************/ /* */ /* */ + /* FT_Outline_Check */ + /* */ + /* */ + /* Check the contents of an outline descriptor. */ + /* */ + /* */ + /* outline :: A handle to a source outline. */ + /* */ + /* */ + /* FreeType error code. 0 means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Check( FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* */ /* FT_Outline_Get_CBox */ /* */ /* */ @@ -198,8 +220,9 @@ /* */ /* acbox :: The outline's control box. */ /* */ - FT_EXPORT( void ) FT_Outline_Get_CBox( FT_Outline* outline, - FT_BBox *acbox ); + FT_EXPORT( void ) + FT_Outline_Get_CBox( FT_Outline* outline, + FT_BBox *acbox ); /*************************************************************************/ @@ -218,9 +241,10 @@ /* */ /* yOffset :: The vertical offset. */ /* */ - FT_EXPORT( void ) FT_Outline_Translate( FT_Outline* outline, - FT_Pos xOffset, - FT_Pos yOffset ); + FT_EXPORT( void ) + FT_Outline_Translate( FT_Outline* outline, + FT_Pos xOffset, + FT_Pos yOffset ); /*************************************************************************/ @@ -242,8 +266,9 @@ /* */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Outline_Copy( FT_Outline* source, - FT_Outline *target ); + FT_EXPORT( FT_Error ) + FT_Outline_Copy( FT_Outline* source, + FT_Outline *target ); /*************************************************************************/ @@ -265,8 +290,9 @@ /* You can use FT_Outline_Translate() if you need to translate the */ /* outline's points. */ /* */ - FT_EXPORT( void ) FT_Outline_Transform( FT_Outline* outline, - FT_Matrix* matrix ); + FT_EXPORT( void ) + FT_Outline_Transform( FT_Outline* outline, + FT_Matrix* matrix ); /*************************************************************************/ @@ -288,7 +314,8 @@ /* It shouldn't be used by a normal client application, unless it */ /* knows what it is doing. */ /* */ - FT_EXPORT( void ) FT_Outline_Reverse( FT_Outline* outline ); + FT_EXPORT( void ) + FT_Outline_Reverse( FT_Outline* outline ); /*************************************************************************/ @@ -317,9 +344,10 @@ /* */ /* It will use the raster correponding to the default glyph format. */ /* */ - FT_EXPORT( FT_Error ) FT_Outline_Get_Bitmap( FT_Library library, - FT_Outline* outline, - FT_Bitmap *abitmap ); + FT_EXPORT( FT_Error ) + FT_Outline_Get_Bitmap( FT_Library library, + FT_Outline* outline, + FT_Bitmap *abitmap ); /*************************************************************************/ @@ -353,9 +381,10 @@ /* converter is called, which means that the value you give to it is */ /* actually ignored. */ /* */ - FT_EXPORT( FT_Error ) FT_Outline_Render( FT_Library library, - FT_Outline* outline, - FT_Raster_Params* params ); + FT_EXPORT( FT_Error ) + FT_Outline_Render( FT_Library library, + FT_Outline* outline, + FT_Raster_Params* params ); /* */ Index: xc/extras/freetype2/include/freetype/ftrender.h diff -u xc/extras/freetype2/include/freetype/ftrender.h:1.1.1.2 xc/extras/freetype2/include/freetype/ftrender.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/ftrender.h:1.1.1.2 Tue May 15 23:45:55 2001 +++ xc/extras/freetype2/include/freetype/ftrender.h Sun Dec 16 12:49:22 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType renderer modules public interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -37,25 +37,32 @@ /* create a new glyph object */ - typedef FT_Error (*FT_Glyph_Init_Func) ( FT_Glyph glyph, - FT_GlyphSlot slot ); + typedef FT_Error + (*FT_Glyph_Init_Func)( FT_Glyph glyph, + FT_GlyphSlot slot ); /* destroys a given glyph object */ - typedef void (*FT_Glyph_Done_Func) ( FT_Glyph glyph ); + typedef void + (*FT_Glyph_Done_Func)( FT_Glyph glyph ); - typedef void (*FT_Glyph_Transform_Func)( FT_Glyph glyph, - FT_Matrix* matrix, - FT_Vector* delta ); + typedef void + (*FT_Glyph_Transform_Func)( FT_Glyph glyph, + FT_Matrix* matrix, + FT_Vector* delta ); + + typedef void + (*FT_Glyph_BBox_Func)( FT_Glyph glyph, + FT_BBox* abbox ); + + typedef FT_Error + (*FT_Glyph_Copy_Func)( FT_Glyph source, + FT_Glyph target ); + + typedef FT_Error + (*FT_Glyph_Prepare_Func)( FT_Glyph glyph, + FT_GlyphSlot slot ); - typedef void (*FT_Glyph_BBox_Func) ( FT_Glyph glyph, - FT_BBox* abbox ); - typedef FT_Error (*FT_Glyph_Copy_Func) ( FT_Glyph source, - FT_Glyph target ); - - typedef FT_Error (*FT_Glyph_Prepare_Func) ( FT_Glyph glyph, - FT_GlyphSlot slot ); - struct FT_Glyph_Class_ { FT_UInt glyph_size; @@ -69,23 +76,27 @@ }; - typedef FT_Error (*FTRenderer_render) ( FT_Renderer renderer, - FT_GlyphSlot slot, - FT_UInt mode, - FT_Vector* origin ); - - typedef FT_Error (*FTRenderer_transform)( FT_Renderer renderer, - FT_GlyphSlot slot, - FT_Matrix* matrix, - FT_Vector* delta ); - - typedef void (*FTRenderer_getCBox) ( FT_Renderer renderer, - FT_GlyphSlot slot, - FT_BBox* cbox ); - - typedef FT_Error (*FTRenderer_setMode) ( FT_Renderer renderer, - FT_ULong mode_tag, - FT_Pointer mode_ptr ); + typedef FT_Error + (*FTRenderer_render)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_UInt mode, + FT_Vector* origin ); + + typedef FT_Error + (*FTRenderer_transform)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_Matrix* matrix, + FT_Vector* delta ); + + typedef void + (*FTRenderer_getCBox)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_BBox* cbox ); + + typedef FT_Error + (*FTRenderer_setMode)( FT_Renderer renderer, + FT_ULong mode_tag, + FT_Pointer mode_ptr ); /*************************************************************************/ @@ -152,8 +163,9 @@ /* To add a new renderer, simply use FT_Add_Module(). To retrieve a */ /* renderer by its name, use FT_Get_Module(). */ /* */ - FT_EXPORT( FT_Renderer ) FT_Get_Renderer( FT_Library library, - FT_Glyph_Format format ); + FT_EXPORT( FT_Renderer ) + FT_Get_Renderer( FT_Library library, + FT_Glyph_Format format ); /*************************************************************************/ @@ -183,10 +195,11 @@ /* */ /* This doesn't change the current renderer for other formats. */ /* */ - FT_EXPORT( FT_Error ) FT_Set_Renderer( FT_Library library, - FT_Renderer renderer, - FT_UInt num_params, - FT_Parameter* parameters ); + FT_EXPORT( FT_Error ) + FT_Set_Renderer( FT_Library library, + FT_Renderer renderer, + FT_UInt num_params, + FT_Parameter* parameters ); /* */ Index: xc/extras/freetype2/include/freetype/ftsizes.h diff -u /dev/null xc/extras/freetype2/include/freetype/ftsizes.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:48 2002 +++ xc/extras/freetype2/include/freetype/ftsizes.h Sun Dec 16 12:49:22 2001 @@ -0,0 +1,151 @@ +/***************************************************************************/ +/* */ +/* ftsizes.h */ +/* */ +/* FreeType size objects management (specification). */ +/* */ +/* Copyright 1996-2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Typical application would normally not need to use these functions. */ + /* However, they have been placed in a public API for the rare cases */ + /* where they are needed. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTSIZES_H__ +#define __FTSIZES_H__ + + +#include +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /*
    */ + /* sizes_management */ + /* */ + /* */ + /* Size management */ + /* */ + /* <Abstract> */ + /* Managing multiple sizes per face */ + /* */ + /* <Description> */ + /* When creating a new face object (e.g. with @FT_New_Face), an */ + /* @FT_Size object is automatically created and used to store all */ + /* pixel-size dependent information, available in the "face->size" */ + /* field. */ + /* */ + /* It is however possible to create more sizes for a given face, */ + /* mostly in order to manage several character pixel sizes of the */ + /* same font family and style. See @FT_New_Size and @FT_Done_Size. */ + /* */ + /* Note that @FT_Set_Pixel_Sizes and @FT_Set_Character_Size only */ + /* modify the contents of the current "active" size; you thus need */ + /* to use @FT_Activate_Size to change it. */ + /* */ + /* 99% of applications won't need the functions provided here, */ + /* especially if they use the caching sub-system, so be cautious */ + /* when using these. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Size */ + /* */ + /* <Description> */ + /* Creates a new size object from a given face object. */ + /* */ + /* <Input> */ + /* face :: A handle to a parent face object. */ + /* */ + /* <Output> */ + /* asize :: A handle to a new size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* You need to call @FT_Activate_Size in order to select the new size */ + /* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */ + /* @FT_Load_Glyph, @FT_Load_Char, etc. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Size( FT_Face face, + FT_Size* size ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Size */ + /* */ + /* <Description> */ + /* Discards a given size object. */ + /* */ + /* <Input> */ + /* size :: A handle to a target size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Size( FT_Size size ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Activate_Size */ + /* */ + /* <Description> */ + /* Even though it is possible to create several size objects for a */ + /* given face (see @FT_New_Size for details), functions like */ + /* @FT_Load_Glyph or @FT_Load_Char only use the last-created one to */ + /* determine the "current character pixel size". */ + /* */ + /* This function can be used to "activate" a previously created size */ + /* object. */ + /* */ + /* <Input> */ + /* size :: A handle to a target size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* If "face" is the size's parent face object, this function changes */ + /* the value of "face->size" to the input size handle. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Activate_Size( FT_Size size ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTSIZES_H__ */ + + +/* END */ Index: xc/extras/freetype2/include/freetype/ftsnames.h diff -u xc/extras/freetype2/include/freetype/ftsnames.h:1.1.1.1 xc/extras/freetype2/include/freetype/ftsnames.h:1.1.1.2 --- xc/extras/freetype2/include/freetype/ftsnames.h:1.1.1.1 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/include/freetype/ftsnames.h Sun Dec 16 12:49:22 2001 @@ -7,7 +7,7 @@ /* */ /* This is _not_ used to retrieve glyph names! */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -113,7 +113,8 @@ /* <Return> */ /* The number of strings in the `name' table. */ /* */ - FT_EXPORT( FT_UInt ) FT_Get_Sfnt_Name_Count( FT_Face face ); + FT_EXPORT( FT_UInt ) + FT_Get_Sfnt_Name_Count( FT_Face face ); /*************************************************************************/ @@ -143,9 +144,10 @@ /* `name' table entries, then do a loop until you get the right */ /* platform, encoding, and name ID. */ /* */ - FT_EXPORT( FT_Error ) FT_Get_Sfnt_Name( FT_Face face, - FT_UInt index, - FT_SfntName *aname ); + FT_EXPORT( FT_Error ) + FT_Get_Sfnt_Name( FT_Face face, + FT_UInt index, + FT_SfntName *aname ); /* */ Index: xc/extras/freetype2/include/freetype/ftsynth.h diff -u xc/extras/freetype2/include/freetype/ftsynth.h:1.1.1.2 xc/extras/freetype2/include/freetype/ftsynth.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/ftsynth.h:1.1.1.2 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/include/freetype/ftsynth.h Sun Dec 16 12:49:22 2001 @@ -5,7 +5,7 @@ /* FreeType synthesizing code for emboldening and slanting */ /* (specification). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -48,13 +48,15 @@ /* This code is completely experimental -- use with care! */ /* It will probably be completely rewritten in the future */ /* or even integrated into the library. */ - FT_EXPORT( FT_Error ) FT_Outline_Embolden( FT_GlyphSlot original, - FT_Outline* outline, - FT_Pos* advance ); - - FT_EXPORT( FT_Error ) FT_Outline_Oblique( FT_GlyphSlot original, - FT_Outline* outline, - FT_Pos* advance ); + FT_EXPORT( FT_Error ) + FT_Outline_Embolden( FT_GlyphSlot original, + FT_Outline* outline, + FT_Pos* advance ); + + FT_EXPORT( FT_Error ) + FT_Outline_Oblique( FT_GlyphSlot original, + FT_Outline* outline, + FT_Pos* advance ); FT_END_HEADER Index: xc/extras/freetype2/include/freetype/ftsystem.h diff -u xc/extras/freetype2/include/freetype/ftsystem.h:1.1.1.2 xc/extras/freetype2/include/freetype/ftsystem.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/ftsystem.h:1.1.1.2 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/include/freetype/ftsystem.h Sun Dec 16 12:49:22 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType low-level system interface definition (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -25,112 +25,132 @@ FT_BEGIN_HEADER - /************************************************************************** - * - * <Section> system_interface - * - * <Title> System Interface - * - * <Abstract> - * How FreeType manages memory and i/o - * - * <Description> - * This section contains various definitions related to memory - * management and i/o access. You'll need to understand this - * information if you want to use a custom memory manager or - * you own input i/o streams - * - */ + /*************************************************************************/ + /* */ + /* <Section> */ + /* system_interface */ + /* */ + /* <Title> */ + /* System Interface */ + /* */ + /* <Abstract> */ + /* How FreeType manages memory and i/o. */ + /* */ + /* <Description> */ + /* This section contains various definitions related to memory */ + /* management and i/o access. You need to understand this */ + /* information if you want to use a custom memory manager or you own */ + /* input i/o streams. */ + /* */ + /*************************************************************************/ + /*************************************************************************/ /* */ /* M E M O R Y M A N A G E M E N T */ /* */ /*************************************************************************/ + - /********************************************************************** - * - * @type: FT_Memory - * - * @description: - * a handle to a given memory manager object, defined with a - * @FT_MemoryRec structure. - */ + /*************************************************************************/ + /* */ + /* @type: */ + /* FT_Memory */ + /* */ + /* @description: */ + /* A handle to a given memory manager object, defined with a */ + /* @FT_MemoryRec structure. */ + /* */ typedef struct FT_MemoryRec_* FT_Memory; + + /*************************************************************************/ + /* */ + /* @functype: */ + /* FT_Alloc_Func */ + /* */ + /* @description: */ + /* A function used to allocate `size' bytes from `memory'. */ + /* */ + /* @input: */ + /* memory :: A handle to the source memory manager. */ + /* */ + /* size :: The size in bytes to allocate. */ + /* */ + /* @return: */ + /* Address of new memory block. 0 in case of failure. */ + /* */ + typedef void* + (*FT_Alloc_Func)( FT_Memory memory, + long size ); + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* FT_Free_Func */ + /* */ + /* @description: */ + /* A function used to release a given block of memory. */ + /* */ + /* @input: */ + /* memory :: A handle to the source memory manager. */ + /* */ + /* block :: The address of the target memory block. */ + /* */ + typedef void + (*FT_Free_Func)( FT_Memory memory, + void* block ); - /********************************************************************** - * - * @functype: FT_Alloc_Func - * - * @description: - * a function used to allocate "size" bytes from "memory" - * - * @input: - * memory :: handle to source memory manager - * size :: size in bytes to allocate - * - * @return: - * address of new memory block. 0 in case of failure - */ - typedef void* (*FT_Alloc_Func)( FT_Memory memory, - long size ); - - - /********************************************************************** - * - * @functype: FT_Free_Func - * - * @description: - * a function used to release a given block of memory - * - * @input: - * memory :: handle to source memory manager - * block :: address of target memory block - */ - typedef void (*FT_Free_Func)( FT_Memory memory, - void* block ); - - /********************************************************************** - * - * @functype: FT_Realloc_Func - * - * @description: - * a function used to re-allocate a given block of memory - * - * @input: - * memory :: handle to source memory manager - * cur_size :: the block's current size in bytes - * new_size :: the block's requested new size - * block :: the block's current address - * - * @return: - * new block address. 0 in case of memory shortage. - * - * @note: - * note that in case of error, the old block must still be available - */ - typedef void* (*FT_Realloc_Func)( FT_Memory memory, - long cur_size, - long new_size, - void* block ); - - - /********************************************************************** - * - * @struct: FT_MemoryRec - * - * @description: - * a structure used to describe a given memory manager to FreeType 2 - * - * @fields: - * user :: - * alloc :: - * free :: - * realloc :: - * - */ - struct FT_MemoryRec_ + + /*************************************************************************/ + /* */ + /* @functype: */ + /* FT_Realloc_Func */ + /* */ + /* @description: */ + /* a function used to re-allocate a given block of memory. */ + /* */ + /* @input: */ + /* memory :: A handle to the source memory manager. */ + /* */ + /* cur_size :: The block's current size in bytes. */ + /* */ + /* new_size :: The block's requested new size. */ + /* */ + /* block :: The block's current address. */ + /* */ + /* @return: */ + /* New block address. 0 in case of memory shortage. */ + /* */ + /* @note: */ + /* In case of error, the old block must still be available. */ + /* */ + typedef void* + (*FT_Realloc_Func)( FT_Memory memory, + long cur_size, + long new_size, + void* block ); + + + /*************************************************************************/ + /* */ + /* @struct: */ + /* FT_MemoryRec */ + /* */ + /* @description: */ + /* A structure used to describe a given memory manager to FreeType 2. */ + /* */ + /* @fields: */ + /* user :: A generic typeless pointer for user data. */ + /* */ + /* alloc :: A pointer type to an allocation function. */ + /* */ + /* free :: A pointer type to an memory freeing function. */ + /* */ + /* realloc :: A pointer type to a reallocation function. */ + /* */ + struct FT_MemoryRec_ { void* user; FT_Alloc_Func alloc; @@ -146,26 +166,26 @@ /*************************************************************************/ - /************************************************************************ - * - * @type: FT_Stream - * - * @description: - * a handle to an input stream. - */ + /*************************************************************************/ + /* */ + /* @type: */ + /* FT_Stream */ + /* */ + /* @description: */ + /* A handle to an input stream. */ + /* */ typedef struct FT_StreamRec_* FT_Stream; - - /************************************************************************ - * - * @struct: FT_StreamDesc - * - * @description: - * a union type used to store either a long or a pointer. This is - * used to store a file descriptor or a FILE* in an input stream - * - */ + /*************************************************************************/ + /* */ + /* @struct: */ + /* FT_StreamDesc */ + /* */ + /* @description: */ + /* A union type used to store either a long or a pointer. This is */ + /* used to store a file descriptor or a FILE* in an input stream. */ + /* */ typedef union FT_StreamDesc_ { long value; @@ -173,81 +193,92 @@ } FT_StreamDesc; + + /*************************************************************************/ + /* */ + /* @functype: */ + /* FT_Stream_IO */ + /* */ + /* @description: */ + /* A function used to seek and read data from a given input stream. */ + /* */ + /* @input: */ + /* stream :: A handle to the source stream. */ + /* */ + /* offset :: The offset of read in stream (always from start). */ + /* */ + /* buffer :: The address of the read buffer. */ + /* */ + /* count :: The number of bytes to read from the stream. */ + /* */ + /* @return: */ + /* The number of bytes effectively read by the stream. */ + /* */ + /* @note: */ + /* This function might be called to perform a seek or skip operation */ + /* with a `count' of 0. */ + /* */ + typedef unsigned long + (*FT_Stream_IO)( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ); + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* FT_Stream_Close */ + /* */ + /* @description: */ + /* A function used to close a given input stream. */ + /* */ + /* @input: */ + /* stream :: A handle to the target stream. */ + /* */ + typedef void + (*FT_Stream_Close)( FT_Stream stream ); + - /************************************************************************ - * - * @functype: FT_Stream_IO - * - * @description: - * a function used to seek and read data from a given input stream - * - * @input: - * stream :: handle to source stream - * offset :: offset of read in stream (always from start) - * buffer :: address of read buffer - * count :: number of bytes to read from the stream - * - * @return: - * number of bytes effectively read by the stream - * - * @note: - * this function might be called to perform seek / skip with - * a "count" of 0 - */ - typedef unsigned long (*FT_Stream_IO)( FT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count ); - - /************************************************************************ - * - * @functype: FT_Stream_Close - * - * @description: - * a function used to close a given input stream - * - * @input: - * stream :: handle to target stream - */ - typedef void (*FT_Stream_Close)( FT_Stream stream ); - - - /************************************************************************ - * - * @struct: FT_StreamRec - * - * @description: - * a structure used to describe an input stream - * - * @input: - * base :: for memory-based stream, this is the address of the first - * stream byte in memory. this field should always be set to - * NULL for disk-based streams. - * - * size :: the stream size in bytes - * pos :: the current position within the stream - * - * descriptor :: this field is a union that can hold an integer or a pointer - * it is used by stream implementations to store file - * descriptors or FILE* pointers.. - * - * pathname :: this field is completely ignored by FreeType, however, - * it's often useful during debugging to use it to store - * the stream's filename, where available - * - * read :: the stream's input function - * close :: the stream close function - * - * memory :: memory manager to use to preload frames. this is set - * internally by FreeType and shouldn't be touched by - * stream implementations - * - * cursor :: this field is set and used internally by FreeType - * when parsing frames. - * - * limit :: this field is set and used internally by FreeType - * when parsing frames. - */ + /*************************************************************************/ + /* */ + /* @struct: */ + /* FT_StreamRec */ + /* */ + /* @description: */ + /* A structure used to describe an input stream. */ + /* */ + /* @input: */ + /* base :: For memory-based streams, this is the address of the */ + /* first stream byte in memory. This field should */ + /* always be set to NULL for disk-based streams. */ + /* */ + /* size :: The stream size in bytes. */ + /* */ + /* pos :: The current position within the stream. */ + /* */ + /* descriptor :: This field is a union that can hold an integer or a */ + /* pointer. It is used by stream implementations to */ + /* store file descriptors or FILE* pointers. */ + /* */ + /* pathname :: This field is completely ignored by FreeType. */ + /* However, it is often useful during debugging to use */ + /* it to store the stream's filename (where available). */ + /* */ + /* read :: The stream's input function. */ + /* */ + /* close :: The stream;s close function. */ + /* */ + /* memory :: The memory manager to use to preload frames. This is */ + /* set internally by FreeType and shouldn't be touched */ + /* by stream implementations. */ + /* */ + /* cursor :: This field is set and used internally by FreeType */ + /* when parsing frames. */ + /* */ + /* limit :: This field is set and used internally by FreeType */ + /* when parsing frames. */ + /* */ struct FT_StreamRec_ { unsigned char* base; Index: xc/extras/freetype2/include/freetype/fttrigon.h diff -u /dev/null xc/extras/freetype2/include/freetype/fttrigon.h:1.1.1.2 --- /dev/null Fri Jan 18 15:21:48 2002 +++ xc/extras/freetype2/include/freetype/fttrigon.h Sun Dec 16 12:49:22 2001 @@ -0,0 +1,281 @@ +/***************************************************************************/ +/* */ +/* fttrigon.h */ +/* */ +/* FreeType trigonometric functions (specification). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTTRIGON_H__ +#define __FTTRIGON_H__ + +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* @section: */ + /* computations */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* @type: */ + /* FT_Angle */ + /* */ + /* @description: */ + /* This type is used to model angle values in FreeType. Note that */ + /* the angle is a 16.16 fixed float value expressed in degrees. */ + /* */ + typedef FT_Fixed FT_Angle; + + + /*************************************************************************/ + /* */ + /* @macro: */ + /* FT_ANGLE_PI */ + /* */ + /* @description: */ + /* The angle pi expressed in @FT_Angle units. */ + /* */ +#define FT_ANGLE_PI ( 180L << 16 ) + + + /*************************************************************************/ + /* */ + /* @macro: */ + /* FT_ANGLE_2PI */ + /* */ + /* @description: */ + /* The angle 2*pi expressed in @FT_Angle units. */ + /* */ +#define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 ) + + + /*************************************************************************/ + /* */ + /* @macro: */ + /* FT_ANGLE_PI2 */ + /* */ + /* @description: */ + /* The angle pi/2 expressed in @FT_Angle units. */ + /* */ +#define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 ) + + + /*************************************************************************/ + /* */ + /* @macro: */ + /* FT_ANGLE_PI4 */ + /* */ + /* @description: */ + /* The angle pi/4 expressed in @FT_Angle units. */ + /* */ +#define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 ) + + + /*************************************************************************/ + /* */ + /* @function: */ + /* FT_Sin */ + /* */ + /* @description: */ + /* Return the sinus of a given angle in fixed point format. */ + /* */ + /* @input: */ + /* angle :: The input angle. */ + /* */ + /* @return: */ + /* The sinus value. */ + /* */ + /* @note: */ + /* If you need both the sinus and cosinus for a given angle, use the */ + /* function @FT_Vector_Unit. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_Sin( FT_Angle angle ); + + + /*************************************************************************/ + /* */ + /* @function: */ + /* FT_Cos */ + /* */ + /* @description: */ + /* Return the cosinus of a given angle in fixed point format. */ + /* */ + /* @input: */ + /* angle :: The input angle. */ + /* */ + /* @return: */ + /* The cosinus value. */ + /* */ + /* @note: */ + /* If you need both the sinus and cosinus for a given angle, use the */ + /* function @FT_Vector_Unit. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_Cos( FT_Angle angle ); + + + /*************************************************************************/ + /* */ + /* @function: */ + /* FT_Tan */ + /* */ + /* @description: */ + /* Return the tangent of a given angle in fixed point format. */ + /* */ + /* @input: */ + /* angle :: The input angle. */ + /* */ + /* @return: */ + /* The tangent value. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_Tan( FT_Angle angle ); + + + /*************************************************************************/ + /* */ + /* @function: */ + /* FT_Atan2 */ + /* */ + /* @description: */ + /* Return the arc-tangent corresponding to a given vector (x,y) in */ + /* the 2d plane. */ + /* */ + /* @input: */ + /* x :: The horizontal vector coordinate. */ + /* */ + /* y :: The vertical vector coordinate. */ + /* */ + /* @return: */ + /* The arc-tangent value (i.e. angle). */ + /* */ + FT_EXPORT( FT_Angle ) + FT_Atan2( FT_Fixed x, + FT_Fixed y ); + + + /*************************************************************************/ + /* */ + /* @function: */ + /* FT_Vector_Unit */ + /* */ + /* @description: */ + /* Return the unit vector corresponding to a given angle. After the */ + /* call, the value of `vec.x' will be `sin(angle)', and the value of */ + /* `vec.y' will be `cos(angle)'. */ + /* */ + /* This function is useful to retrieve both the sinus and cosinus of */ + /* a given angle quickly. */ + /* */ + /* @output: */ + /* vec :: The address of target vector. */ + /* */ + /* @input: */ + /* angle :: The address of angle. */ + /* */ + FT_EXPORT( void ) + FT_Vector_Unit( FT_Vector* vec, + FT_Angle angle ); + + + /*************************************************************************/ + /* */ + /* @function: */ + /* FT_Vector_Rotate */ + /* */ + /* @description: */ + /* Rotate a vector by a given angle. */ + /* */ + /* @inout: */ + /* vec :: The address of target vector. */ + /* */ + /* @input: */ + /* angle :: The address of angle. */ + /* */ + FT_EXPORT( void ) + FT_Vector_Rotate( FT_Vector* vec, + FT_Angle angle ); + + + /*************************************************************************/ + /* */ + /* @function: */ + /* FT_Vector_Length */ + /* */ + /* @description: */ + /* Return the length of a given vector. */ + /* */ + /* @input: */ + /* vec :: The address of target vector. */ + /* */ + /* @return: */ + /* The vector length, expressed in the same units that the original */ + /* vector coordinates. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_Vector_Length( FT_Vector* vec ); + + + /*************************************************************************/ + /* */ + /* @function: */ + /* FT_Vector_Normalize */ + /* */ + /* @description: */ + /* Normalize a given vector (i.e. compute the equivalent unit */ + /* vector). */ + /* */ + /* @inout: */ + /* vec :: The address of target vector. */ + /* */ + FT_EXPORT( void ) + FT_Vector_Normalize( FT_Vector* vec ); + + + /*************************************************************************/ + /* */ + /* @function: */ + /* FT_Vector_Polarize */ + /* */ + /* @description: */ + /* Compute both the length and angle of a given vector. */ + /* */ + /* @input: */ + /* vec :: The address of source vector. */ + /* */ + /* @output: */ + /* length :: The vector length. */ + /* angle :: The vector angle. */ + /* */ + FT_EXPORT( void ) + FT_Vector_Polarize( FT_Vector* vec, + FT_Fixed *length, + FT_Angle *angle ); + /* */ + + +FT_END_HEADER + +#endif /* __FTTRIGON_H__ */ + + +/* END */ Index: xc/extras/freetype2/include/freetype/fttypes.h diff -u xc/extras/freetype2/include/freetype/fttypes.h:1.1.1.2 xc/extras/freetype2/include/freetype/fttypes.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/fttypes.h:1.1.1.2 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/include/freetype/fttypes.h Sun Dec 16 12:49:22 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType simple types definitions (specification only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -77,7 +77,7 @@ /* */ /*************************************************************************/ - + /*************************************************************************/ /* */ /* <Type> */ @@ -509,6 +509,13 @@ #define FT_IS_EMPTY( list ) ( (list).head == 0 ) + /* return base error code (without module-specific prefix) */ +#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) + + /* return module error code */ +#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) + +#define FT_BOOL( x ) ( (FT_Bool)( x ) ) FT_END_HEADER Index: xc/extras/freetype2/include/freetype/t1tables.h diff -u xc/extras/freetype2/include/freetype/t1tables.h:1.1.1.2 xc/extras/freetype2/include/freetype/t1tables.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/t1tables.h:1.1.1.2 Tue May 15 23:45:54 2001 +++ xc/extras/freetype2/include/freetype/t1tables.h Sun Dec 16 12:49:22 2001 @@ -5,7 +5,7 @@ /* Basic Type 1/Type 2 tables definitions and interface (specification */ /* only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -44,8 +44,8 @@ /* including structures related to other PostScript font formats. */ /* */ /*************************************************************************/ - + /* Note that we separate font data in T1_FontInfo and T1_Private */ /* structures in order to support Multiple Master fonts. */ @@ -113,8 +113,8 @@ FT_Bool force_bold; FT_Bool round_stem_up; - FT_Short snap_widths [13]; /* reserve one place for the std */ - FT_Short snap_heights[13]; /* reserve one place for the std */ + FT_Short snap_widths [13]; /* including std width */ + FT_Short snap_heights[13]; /* including std height */ FT_Long language_group; FT_Long password; @@ -136,12 +136,12 @@ /* */ typedef enum { - /* required fields in a FontInfo blend dictionary */ + /*# required fields in a FontInfo blend dictionary */ t1_blend_underline_position = 0, t1_blend_underline_thickness, t1_blend_italic_angle, - /* required fields in a Private blend dictionary */ + /*# required fields in a Private blend dictionary */ t1_blend_blue_values, t1_blend_other_blues, t1_blend_standard_width, @@ -154,7 +154,7 @@ t1_blend_family_other_blues, t1_blend_force_bold, - /* never remove */ + /*# never remove */ t1_blend_max } T1_Blend_Flags; Index: xc/extras/freetype2/include/freetype/ttnameid.h diff -u xc/extras/freetype2/include/freetype/ttnameid.h:1.1.1.2 xc/extras/freetype2/include/freetype/ttnameid.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/ttnameid.h:1.1.1.2 Tue May 15 23:45:56 2001 +++ xc/extras/freetype2/include/freetype/ttnameid.h Mon Jan 14 11:52:05 2002 @@ -4,7 +4,7 @@ /* */ /* TrueType name ID definitions (specification only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -35,6 +35,7 @@ #define TT_PLATFORM_MACINTOSH 1 #define TT_PLATFORM_ISO 2 /* deprecated */ #define TT_PLATFORM_MICROSOFT 3 +#define TT_PLATFORM_CUSTOM 4 /* artificial values defined ad-hoc by FreeType */ #define TT_PLATFORM_ADOBE 7 @@ -46,7 +47,7 @@ /* the name records of the TTF `name' table if the `platform' identifier */ /* code is TT_PLATFORM_APPLE_UNICODE. */ /* */ -#define TT_APPLE_ID_DEFAULT 0 +#define TT_APPLE_ID_DEFAULT 0 /* Unicode 1.0 */ #define TT_APPLE_ID_UNICODE_1_1 1 /* specify Hangul at U+34xx */ #define TT_APPLE_ID_ISO_10646 2 /* deprecated */ #define TT_APPLE_ID_UNICODE_2_0 3 /* or later */ @@ -113,13 +114,14 @@ /* the name records of the TTF `name' table if the `platform' identifier */ /* code is TT_PLATFORM_MICROSOFT. */ /* */ -#define TT_MS_ID_SYMBOL_CS 0 -#define TT_MS_ID_UNICODE_CS 1 -#define TT_MS_ID_SJIS 2 -#define TT_MS_ID_GB2312 3 -#define TT_MS_ID_BIG_5 4 -#define TT_MS_ID_WANSUNG 5 -#define TT_MS_ID_JOHAB 6 +#define TT_MS_ID_SYMBOL_CS 0 +#define TT_MS_ID_UNICODE_CS 1 +#define TT_MS_ID_SJIS 2 +#define TT_MS_ID_GB2312 3 +#define TT_MS_ID_BIG_5 4 +#define TT_MS_ID_WANSUNG 5 +#define TT_MS_ID_JOHAB 6 +#define TT_MS_ID_UCS_4 10 /*************************************************************************/ @@ -314,8 +316,8 @@ #if 1 /* this used to be this value (and it still is in many places) */ #define TT_MS_LANGID_CHINESE_MACAU 0x1404 #else /* but beware, Microsoft may change its mind... - the most recent Word reference has the following: :-( */ -#define TT_MS_LANGID_CHINESE_MACAU TT_MS_LANGID_CHINESE_HONG_KONG + the most recent Word reference has the following: */ +#define TT_MS_LANGID_CHINESE_MACAU TT_MS_LANGID_CHINESE_HONG_KONG #endif #define TT_MS_LANGID_CZECH_CZECH_REPUBLIC 0x0405 @@ -430,7 +432,7 @@ #define TT_MS_LANGID_MALTESE_MALTA 0x043a #define TT_MS_LANGID_SAAMI_LAPONIA 0x043b -#if 0 /* this seems to be a previous invertion */ +#if 0 /* this seems to be a previous invertion */ #define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043c #define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083c #else @@ -458,15 +460,15 @@ #define TT_MS_LANGID_SANSKRIT_INDIA 0x044f #define TT_MS_LANGID_KONKANI_INDIA 0x0457 -/* new as of 2001-01-01 */ + /* new as of 2001-01-01 */ #define TT_MS_LANGID_ARABIC_GENERAL 0x0001 #define TT_MS_LANGID_CHINESE_GENERAL 0x0004 #define TT_MS_LANGID_ENGLISH_GENERAL 0x0009 #define TT_MS_LANGID_FRENCH_WEST_INDIES 0x1c0c #define TT_MS_LANGID_FRENCH_REUNION 0x200c #define TT_MS_LANGID_FRENCH_CONGO 0x240c - /* which was formerly: */ -#define TT_MS_LANGID_FRENCH_ZAIRE TT_MS_LANGID_FRENCH_CONGO + /* which was formerly: */ +#define TT_MS_LANGID_FRENCH_ZAIRE TT_MS_LANGID_FRENCH_CONGO #define TT_MS_LANGID_FRENCH_SENEGAL 0x280c #define TT_MS_LANGID_FRENCH_CAMEROON 0x2c0c @@ -477,13 +479,21 @@ #define TT_MS_LANGID_TAJIK_TAJIKISTAN 0x0428 #define TT_MS_LANGID_YIDDISH_GERMANY 0x043d #define TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN 0x0440 - /* alias declared in Windows 2000 */ + /* alias declared in Windows 2000 */ #define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \ - TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN + TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN #define TT_MS_LANGID_TURKMEN_TURKMENISTAN 0x0442 -#define TT_MS_LANGID_MONGOLIAN_MONGOLIA 0x0450 +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA /* Cyrillic */ 0x0450 + + /* the following seems to be inconsistent; + here is the current "official" way: */ #define TT_MS_LANGID_TIBETAN_BHUTAN 0x0451 + /* and here is what is used by Passport SDK */ +#define TT_MS_LANGID_TIBETAN_CHINA 0x0451 +#define TT_MS_LANGID_DZONGHKA_BHUTAN 0x0851 + /* end of inconsistency */ + #define TT_MS_LANGID_WELSH_WALES 0x0452 #define TT_MS_LANGID_KHMER_CAMBODIA 0x0453 #define TT_MS_LANGID_LAO_LAOS 0x0454 @@ -491,34 +501,73 @@ #define TT_MS_LANGID_GALICIAN_SPAIN 0x0456 #define TT_MS_LANGID_MANIPURI_INDIA 0x0458 #define TT_MS_LANGID_SINDHI_INDIA 0x0459 + /* the following one is only encountered in Microsoft RTF specification */ #define TT_MS_LANGID_KASHMIRI_PAKISTAN 0x0460 + /* the following one is not in the Passport list, looks like an omission */ #define TT_MS_LANGID_KASHMIRI_INDIA 0x0860 #define TT_MS_LANGID_NEPALI_NEPAL 0x0461 #define TT_MS_LANGID_NEPALI_INDIA 0x0861 #define TT_MS_LANGID_FRISIAN_NETHERLANDS 0x0462 -/* new as of 2001-03-01 (from Office Xp) */ -#define TT_MS_LANGID_SYRIAC_SYRIA 0x045a -#define TT_MS_LANGID_SINHALESE_SRI_LANKA 0x045b -#define TT_MS_LANGID_PASHTO_AFGHANISTAN 0x0463 + /* new as of 2001-03-01 (from Office Xp) */ #define TT_MS_LANGID_ENGLISH_HONG_KONG 0x3c09 #define TT_MS_LANGID_ENGLISH_INDIA 0x4009 #define TT_MS_LANGID_ENGLISH_MALAYSIA 0x4409 #define TT_MS_LANGID_ENGLISH_SINGAPORE 0x4809 +#define TT_MS_LANGID_SYRIAC_SYRIA 0x045a +#define TT_MS_LANGID_SINHALESE_SRI_LANKA 0x045b #define TT_MS_LANGID_CHEROKEE_UNITED_STATES 0x045c #define TT_MS_LANGID_INUKTITUT_CANADA 0x045d #define TT_MS_LANGID_AMHARIC_ETHIOPIA 0x045e #define TT_MS_LANGID_TAMAZIGHT_MOROCCO 0x045f #define TT_MS_LANGID_TAMAZIGHT_MOROCCO_LATIN 0x085f +#define TT_MS_LANGID_PASHTO_AFGHANISTAN 0x0463 #define TT_MS_LANGID_FILIPINO_PHILIPPINES 0x0464 #define TT_MS_LANGID_DHIVEHI_MALDIVES 0x0465 - /* alias declared in Windows 2000 */ -#define TT_MS_LANGID_DIVEHI_MALDIVES TT_MS_LANGID_DHIVEHI_MALDIVES - /* language codes from 0x0466 to 0x0471 are unknown. */ + /* alias declared in Windows 2000 */ +#define TT_MS_LANGID_DIVEHI_MALDIVES TT_MS_LANGID_DHIVEHI_MALDIVES + /* for language codes from 0x0466 to 0x0471 see below */ #define TT_MS_LANGID_OROMO_ETHIOPIA 0x0472 #define TT_MS_LANGID_TIGRIGNA_ETHIOPIA 0x0473 #define TT_MS_LANGID_TIGRIGNA_ERYTHREA 0x0873 + /* also spelled in the `Passport SDK' list as: */ +#define TT_MS_LANGID_TIGRIGNA_ERYTREA TT_MS_LANGID_TIGRIGNA_ERYTHREA + + /* New additions from Windows Xp/Passport SDK 2001-11-10. */ + + /* don't ask what this one means... It is commented out currently. */ +#if 0 +#define TT_MS_LANGID_GREEK_GREECE2 0x2008 +#endif +#define TT_MS_LANGID_SPANISH_UNITED_STATES 0x540a + /* The following two IDs blatantly violate MS specs by using a */ + /* sublanguage > 0x1F. */ +#define TT_MS_LANGID_SPANISH_LATIN_AMERICA 0xE40a +#define TT_MS_LANGID_FRENCH_NORTH_AFRICA 0xE40c + +#define TT_MS_LANGID_FRENCH_MOROCCO 0x380c +#define TT_MS_LANGID_FRENCH_HAITI 0x3c0c +#define TT_MS_LANGID_BENGALI_BANGLADESH 0x0845 +#define TT_MS_LANGID_PUNJABI_ARABIC_PAKISTAN 0x0846 +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN 0x0850 +#define TT_MS_LANGID_EDO_NIGERIA 0x0466 +#define TT_MS_LANGID_FULFULDE_NIGERIA 0x0467 +#define TT_MS_LANGID_HAUSA_NIGERIA 0x0468 +#define TT_MS_LANGID_IBIBIO_NIGERIA 0x0469 +#define TT_MS_LANGID_YORUBA_NIGERIA 0x046a + /* language codes from 0x046b to 0x046f are (still) unknown. */ +#define TT_MS_LANGID_IGBO_NIGERIA 0x0470 +#define TT_MS_LANGID_KANURI_NIGERIA 0x0471 +#define TT_MS_LANGID_GUARANI_PARAGUAY 0x0474 +#define TT_MS_LANGID_HAWAIIAN_UNITED_STATES 0x0475 +#define TT_MS_LANGID_LATIN 0x0476 +#define TT_MS_LANGID_SOMALI_SOMALIA 0x0477 + /* Note: Yi does not have a (proper) ISO 639-2 code, since it is mostly */ + /* not written (but OTOH the peculiar writing system is worth */ + /* studying). */ +#define TT_MS_LANGID_YI_CHINA 0x0478 +#define TT_MS_LANGID_PAPIAMENTU_NETHERLANDS_ANTILLES 0x0479 /*************************************************************************/ @@ -535,7 +584,7 @@ #define TT_NAME_ID_PS_NAME 6 #define TT_NAME_ID_TRADEMARK 7 -/* the following values are from the OpenType spec */ + /* the following values are from the OpenType spec */ #define TT_NAME_ID_MANUFACTURER 8 #define TT_NAME_ID_DESIGNER 9 #define TT_NAME_ID_DESCRIPTION 10 @@ -543,14 +592,17 @@ #define TT_NAME_ID_DESIGNER_URL 12 #define TT_NAME_ID_LICENSE 13 #define TT_NAME_ID_LICENSE_URL 14 -/* number 15 is reserved */ + /* number 15 is reserved */ #define TT_NAME_ID_PREFERRED_FAMILY 16 #define TT_NAME_ID_PREFERRED_SUBFAMILY 17 #define TT_NAME_ID_MAC_FULL_NAME 18 -/* The following code is new as of 2000-01-21 */ + /* The following code is new as of 2000-01-21 */ #define TT_NAME_ID_SAMPLE_TEXT 19 + /* This is new in OpenType 1.3 */ +#define TT_NAME_ID_CID_FINDFONT_NAME 20 + /*************************************************************************/ /* */ @@ -692,6 +744,10 @@ #define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */ /* U+DB80-U+DBFF */ /* U+DC00-U+DFFF */ + /* According to OpenType specs v.1.3+, setting bit 57 implies that there */ + /* is at least one codepoint beyond the Basic Multilingual Plane that is */ + /* supported by this font. So it really means: >= U+10000 */ + /* Bit 58 is reserved for Unicode SubRanges */ /* CJK Ideographs Area */ Index: xc/extras/freetype2/include/freetype/tttables.h diff -u xc/extras/freetype2/include/freetype/tttables.h:1.1.1.2 xc/extras/freetype2/include/freetype/tttables.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/tttables.h:1.1.1.2 Tue May 15 23:45:55 2001 +++ xc/extras/freetype2/include/freetype/tttables.h Sun Dec 16 12:49:22 2001 @@ -5,7 +5,7 @@ /* Basic SFNT/TrueType tables definitions and interface */ /* (specification only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -193,7 +193,7 @@ FT_UShort number_Of_HMetrics; /* The following fields are not defined by the TrueType specification */ - /* but they're used to connect the metrics header to the relevant */ + /* but they are used to connect the metrics header to the relevant */ /* `HMTX' table. */ void* long_metrics; @@ -270,8 +270,12 @@ /* */ /* caret_Slope_Run :: The run coefficient of the cursor's */ /* slope. */ + /* */ + /* caret_Offset :: The cursor's offset for slanted fonts. */ + /* This value is `reserved' in vmtx */ + /* version 1.0. */ /* */ - /* Reserved :: 10 reserved bytes. */ + /* Reserved :: 8 reserved bytes. */ /* */ /* metric_Data_Format :: Always 0. */ /* */ @@ -293,7 +297,7 @@ /* module is able to read both the horizontal and vertical */ /* headers. */ /* */ - typedef struct TT_VertHeader_ + typedef struct TT_VertHeader_ { FT_Fixed Version; FT_Short Ascender; @@ -428,7 +432,7 @@ /* A structure used to model a TrueType PCLT table. All fields */ /* comply to the TrueType table. */ /* */ - typedef struct TT_PCLT_ + typedef struct TT_PCLT_ { FT_Fixed Version; FT_ULong FontNumber; @@ -555,8 +559,9 @@ /* internal use only */ - typedef void* (*FT_Get_Sfnt_Table_Func)( FT_Face face, - FT_Sfnt_Tag tag ); + typedef void* + (*FT_Get_Sfnt_Table_Func)( FT_Face face, + FT_Sfnt_Tag tag ); /*************************************************************************/ @@ -584,8 +589,9 @@ /* by the sfnt/truetype/opentype drivers. See FT_Sfnt_Tag for a */ /* list. */ /* */ - FT_EXPORT( void* ) FT_Get_Sfnt_Table( FT_Face face, - FT_Sfnt_Tag tag ); + FT_EXPORT( void* ) + FT_Get_Sfnt_Table( FT_Face face, + FT_Sfnt_Tag tag ); /* */ Index: xc/extras/freetype2/include/freetype/tttags.h diff -u xc/extras/freetype2/include/freetype/tttags.h:1.1.1.2 xc/extras/freetype2/include/freetype/tttags.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/tttags.h:1.1.1.2 Tue May 15 23:45:55 2001 +++ xc/extras/freetype2/include/freetype/tttags.h Sun Dec 16 12:49:23 2001 @@ -4,7 +4,7 @@ /* */ /* Tags for TrueType tables (specification only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/include/freetype/cache/ftccache.h diff -u /dev/null xc/extras/freetype2/include/freetype/cache/ftccache.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:48 2002 +++ xc/extras/freetype2/include/freetype/cache/ftccache.h Mon Jan 14 11:52:05 2002 @@ -0,0 +1,300 @@ +/***************************************************************************/ +/* */ +/* ftccache.h */ +/* */ +/* FreeType internal cache interface (specification). */ +/* */ +/* Copyright 2000-2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCCACHE_H__ +#define __FTCCACHE_H__ + + +FT_BEGIN_HEADER + + /* handle to cache object */ + typedef struct FTC_CacheRec_* FTC_Cache; + + /* handle to cache class */ + typedef const struct FTC_Cache_ClassRec_* FTC_Cache_Class; + + /* handle to cache node family */ + typedef struct FTC_FamilyRec_* FTC_Family; + + /* handle to cache root query */ + typedef struct FTC_QueryRec_* FTC_Query; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE NODE DEFINITIONS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* Each cache controls one or more cache nodes. Each node is part of */ + /* the global_lru list of the manager. Its `data' field however is used */ + /* as a reference count for now. */ + /* */ + /* A node can be anything, depending on the type of information held by */ + /* the cache. It can be an individual glyph image, a set of bitmaps */ + /* glyphs for a given size, some metrics, etc. */ + /* */ + /*************************************************************************/ + + /* structure size should be 20 bytes on 32-bits machines */ + typedef struct FTC_NodeRec_ + { + FTC_Node mru_next; /* circular mru list pointer */ + FTC_Node mru_prev; /* circular mru list pointer */ + FTC_Node link; /* used for hashing */ + FT_UInt32 hash; /* used for hashing too */ + FT_UShort fam_index; /* index of family the node belongs to */ + FT_Short ref_count; /* reference count for this node */ + + } FTC_NodeRec; + + +#define FTC_NODE( x ) ( (FTC_Node)(x) ) +#define FTC_NODE_P( x ) ( (FTC_Node*)(x) ) + + + /*************************************************************************/ + /* */ + /* These functions are exported so that they can be called from */ + /* user-provided cache classes; otherwise, they are really part of the */ + /* cache sub-system internals. */ + /* */ + + /* can be used as a FTC_Node_DoneFunc */ + FT_EXPORT( void ) + ftc_node_done( FTC_Node node, + FTC_Cache cache ); + + /* reserved for manager's use */ + FT_EXPORT( void ) + ftc_node_destroy( FTC_Node node, + FTC_Manager manager ); + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE QUERY DEFINITIONS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /* A structure modelling a cache node query. The following fields must */ + /* all be set by the @FTC_Family_CompareFunc method of a cache's family */ + /* list. */ + /* */ + typedef struct FTC_QueryRec_ + { + FTC_Family family; + FT_UFast hash; + + } FTC_QueryRec; + + +#define FTC_QUERY( x ) ( (FTC_Query)(x) ) +#define FTC_QUERY_P( x ) ( (FTC_Query*)(x) ) + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE FAMILY DEFINITIONS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct FTC_FamilyRec_ + { + FT_LruNodeRec lru; + FTC_Cache cache; + FT_UInt num_nodes; + FT_UInt fam_index; + + } FTC_FamilyRec; + + +#define FTC_FAMILY( x ) ( (FTC_Family)(x) ) +#define FTC_FAMILY_P( x ) ( (FTC_Family*)(x) ) + + + /*************************************************************************/ + /* */ + /* These functions are exported so that they can be called from */ + /* user-provided cache classes; otherwise, they are really part of the */ + /* cache sub-system internals. */ + /* */ + + /* must be called by any FTC_Node_InitFunc routine */ + FT_EXPORT( FT_Error ) + ftc_family_init( FTC_Family family, + FTC_Query query, + FTC_Cache cache ); + + + /* can be used as a FTC_Family_DoneFunc; otherwise, must be called */ + /* by any family finalizer function */ + FT_EXPORT( void ) + ftc_family_done( FTC_Family family ); + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE DEFINITIONS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /* each cache really implements a dynamic hash table to manage its nodes */ + typedef struct FTC_CacheRec_ + { + FTC_Manager manager; + FT_Memory memory; + FTC_Cache_Class clazz; + + FT_UInt cache_index; /* in manager's table */ + FT_Pointer cache_data; /* used by cache node methods */ + + FT_UFast nodes; + FT_UFast size; + FTC_Node* buckets; + + FT_LruList_ClassRec family_class; + FT_LruList families; + + } FTC_CacheRec; + + +#define FTC_CACHE( x ) ( (FTC_Cache)(x) ) +#define FTC_CACHE_P( x ) ( (FTC_Cache*)(x) ) + + + /* initialize a given cache */ + typedef FT_Error + (*FTC_Cache_InitFunc)( FTC_Cache cache ); + + /* clear a cache */ + typedef void + (*FTC_Cache_ClearFunc)( FTC_Cache cache ); + + /* finalize a given cache */ + typedef void + (*FTC_Cache_DoneFunc)( FTC_Cache cache ); + + + typedef FT_Error + (*FTC_Family_InitFunc)( FTC_Family family, + FTC_Query query, + FTC_Cache cache ); + + typedef FT_Int + (*FTC_Family_CompareFunc)( FTC_Family family, + FTC_Query query ); + + typedef void + (*FTC_Family_DoneFunc)( FTC_Family family, + FTC_Cache cache ); + + /* initialize a new cache node */ + typedef FT_Error + (*FTC_Node_InitFunc)( FTC_Node node, + FT_Pointer type, + FTC_Cache cache ); + + /* compute the weight of a given cache node */ + typedef FT_ULong + (*FTC_Node_WeightFunc)( FTC_Node node, + FTC_Cache cache ); + + /* compare a node to a given key pair */ + typedef FT_Bool + (*FTC_Node_CompareFunc)( FTC_Node node, + FT_Pointer key, + FTC_Cache cache ); + + /* finalize a given cache node */ + typedef void + (*FTC_Node_DoneFunc)( FTC_Node node, + FTC_Cache cache ); + + + typedef struct FTC_Cache_ClassRec_ + { + FT_UInt cache_size; + FTC_Cache_InitFunc cache_init; + FTC_Cache_ClearFunc cache_clear; + FTC_Cache_DoneFunc cache_done; + + FT_UInt family_size; + FTC_Family_InitFunc family_init; + FTC_Family_CompareFunc family_compare; + FTC_Family_DoneFunc family_done; + + FT_UInt node_size; + FTC_Node_InitFunc node_init; + FTC_Node_WeightFunc node_weight; + FTC_Node_CompareFunc node_compare; + FTC_Node_DoneFunc node_done; + + } FTC_Cache_ClassRec; + + + /* */ + + + /*************************************************************************/ + /* */ + /* These functions are exported so that they can be called from */ + /* user-provided cache classes; otherwise, they are really part of the */ + /* cache sub-system internals. */ + /* */ + + /* can be used directly as FTC_Cache_DoneFunc(), or called by custom */ + /* cache finalizers */ + FT_EXPORT( void ) + ftc_cache_done( FTC_Cache cache ); + + /* can be used directly as FTC_Cache_ClearFunc(), or called by custom */ + /* cache clear routines */ + FT_EXPORT( void ) + ftc_cache_clear( FTC_Cache cache ); + + /* initalize the hash table within the cache */ + FT_EXPORT( FT_Error ) + ftc_cache_init( FTC_Cache cache ); + + /* can be called when the key's hash value has been computed */ + FT_EXPORT( FT_Error ) + ftc_cache_lookup( FTC_Cache cache, + FTC_Query query, + FTC_Node *anode ); + + /* */ + + +FT_END_HEADER + + +#endif /* __FTCCACHE_H__ */ + + +/* END */ Index: xc/extras/freetype2/include/freetype/cache/ftcchunk.h diff -u xc/extras/freetype2/include/freetype/cache/ftcchunk.h:1.1.1.2 xc/extras/freetype2/include/freetype/cache/ftcchunk.h:removed --- xc/extras/freetype2/include/freetype/cache/ftcchunk.h:1.1.1.2 Tue May 15 23:45:56 2001 +++ xc/extras/freetype2/include/freetype/cache/ftcchunk.h Fri Jan 18 15:21:48 2002 @@ -1,215 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcchunk.h */ -/* */ -/* FreeType chunk cache (specification). */ -/* */ -/* Copyright 2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Important: The functions defined in this file are only used to */ - /* implement an abstract chunk cache class. You need to */ - /* provide additional logic to implement a complete cache. */ - /* For example, see `ftcmetrx.h' and `ftcmetrx.c' which */ - /* implement a glyph metrics cache based on this code. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********* *********/ - /********* WARNING, THIS IS BETA CODE. *********/ - /********* *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#ifndef __FTCCHUNK_H__ -#define __FTCCHUNK_H__ - - -#include <ft2build.h> -#include FT_CACHE_H -#include FT_CACHE_MANAGER_H - - -FT_BEGIN_HEADER - - - /* maximum number of chunk sets in a given chunk cache */ -#define FTC_MAX_CHUNK_SETS 16 - - - typedef struct FTC_ChunkNodeRec_* FTC_ChunkNode; - typedef struct FTC_ChunkSetRec_* FTC_ChunkSet; - typedef struct FTC_Chunk_CacheRec_* FTC_Chunk_Cache; - - typedef struct FTC_ChunkNodeRec_ - { - FTC_CacheNodeRec root; - FTC_ChunkSet cset; - FT_UShort cset_index; - FT_UShort num_elements; - FT_Byte* elements; - - } FTC_ChunkNodeRec; - - -#define FTC_CHUNKNODE_TO_LRUNODE( x ) ((FT_ListNode)( x )) -#define FTC_LRUNODE_TO_CHUNKNODE( x ) ((FTC_ChunkNode)( x )) - - - /*************************************************************************/ - /* */ - /* chunk set methods */ - /* */ - - /* used to set "element_max", "element_count" and "element_size" */ - typedef FT_Error (*FTC_ChunkSet_SizesFunc) ( FTC_ChunkSet cset, - FT_Pointer type ); - - typedef FT_Error (*FTC_ChunkSet_InitFunc) ( FTC_ChunkSet cset, - FT_Pointer type ); - - typedef void (*FTC_ChunkSet_DoneFunc) ( FTC_ChunkSet cset ); - - typedef FT_Bool (*FTC_ChunkSet_CompareFunc)( FTC_ChunkSet cset, - FT_Pointer type ); - - - typedef FT_Error (*FTC_ChunkSet_NewNodeFunc) ( FTC_ChunkSet cset, - FT_UInt index, - FTC_ChunkNode* anode ); - - typedef void (*FTC_ChunkSet_DestroyNodeFunc)( FTC_ChunkNode node ); - - typedef FT_ULong (*FTC_ChunkSet_SizeNodeFunc) ( FTC_ChunkNode node ); - - - typedef struct FTC_ChunkSet_Class_ - { - FT_UInt cset_byte_size; - - FTC_ChunkSet_InitFunc init; - FTC_ChunkSet_DoneFunc done; - FTC_ChunkSet_CompareFunc compare; - FTC_ChunkSet_SizesFunc sizes; - - FTC_ChunkSet_NewNodeFunc new_node; - FTC_ChunkSet_SizeNodeFunc size_node; - FTC_ChunkSet_DestroyNodeFunc destroy_node; - - } FTC_ChunkSet_Class; - - - typedef struct FTC_ChunkSetRec_ - { - FTC_Chunk_Cache cache; - FTC_Manager manager; - FT_Memory memory; - FTC_ChunkSet_Class* clazz; - FT_UInt cset_index; /* index in parent cache */ - - FT_UInt element_max; /* maximum number of elements */ - FT_UInt element_size; /* element size in bytes */ - FT_UInt element_count; /* number of elements per chunk */ - - FT_UInt num_chunks; - FTC_ChunkNode* chunks; - - } FTC_ChunkSetRec; - - - /* the abstract chunk cache class */ - typedef struct FTC_Chunk_Cache_Class_ - { - FTC_Cache_Class root; - FTC_ChunkSet_Class* cset_class; - - } FTC_Chunk_Cache_Class; - - - /* the abstract chunk cache object */ - typedef struct FTC_Chunk_CacheRec_ - { - FTC_CacheRec root; - FT_Lru csets_lru; /* static chunk set lru list */ - FTC_ChunkSet last_cset; /* small cache :-) */ - FTC_ChunkSet_CompareFunc compare; /* useful shortcut */ - - } FTC_Chunk_CacheRec; - - - /*************************************************************************/ - /* */ - /* These functions are exported so that they can be called from */ - /* user-provided cache classes; otherwise, they are really part of the */ - /* cache sub-system internals. */ - /* */ - - FT_EXPORT( FT_Error ) FTC_ChunkNode_Init( FTC_ChunkNode node, - FTC_ChunkSet cset, - FT_UInt index, - FT_Bool alloc ); - -#define FTC_ChunkNode_Ref( n ) \ - FTC_CACHENODE_TO_DATA_P( &(n)->root )->ref_count++ - -#define FTC_ChunkNode_Unref( n ) \ - FTC_CACHENODE_TO_DATA_P( &(n)->root )->ref_count-- - - - /* chunk set objects */ - - FT_EXPORT( void ) FTC_ChunkNode_Destroy( FTC_ChunkNode node ); - - - FT_EXPORT( FT_Error ) FTC_ChunkSet_New ( FTC_Chunk_Cache cache, - FT_Pointer type, - FTC_ChunkSet *aset ); - - - FT_EXPORT( FT_Error ) FTC_ChunkSet_Lookup_Node( - FTC_ChunkSet cset, - FT_UInt glyph_index, - FTC_ChunkNode* anode, - FT_UInt *anindex ); - - - /* chunk cache objects */ - - FT_EXPORT( FT_Error ) FTC_Chunk_Cache_Init ( FTC_Chunk_Cache cache ); - - FT_EXPORT( void ) FTC_Chunk_Cache_Done ( FTC_Chunk_Cache cache ); - - FT_EXPORT( FT_Error ) FTC_Chunk_Cache_Lookup( FTC_Chunk_Cache cache, - FT_Pointer type, - FT_UInt gindex, - FTC_ChunkNode *anode, - FT_UInt *aindex ); - - -FT_END_HEADER - -#endif /* __FTCCHUNK_H__ */ - - -/* END */ Index: xc/extras/freetype2/include/freetype/cache/ftccmap.h diff -u /dev/null xc/extras/freetype2/include/freetype/cache/ftccmap.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:48 2002 +++ xc/extras/freetype2/include/freetype/cache/ftccmap.h Mon Jan 14 11:52:05 2002 @@ -0,0 +1,209 @@ +/***************************************************************************/ +/* */ +/* ftccmap.h */ +/* */ +/* FreeType charmap cache (specification). */ +/* */ +/* Copyright 2000-2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCCMAP_H__ +#define __FTCCMAP_H__ + +#include <ft2build.h> +#include FT_CACHE_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* @type: */ + /* FTC_CmapCache */ + /* */ + /* @description: */ + /* An opaque handle used to manager a charmap cache. This cache is */ + /* to hold character codes -> glyph indices mappings. */ + /* */ + typedef struct FTC_CMapCacheRec_* FTC_CMapCache; + + + /*************************************************************************/ + /* */ + /* @type: */ + /* FTC_CMapDesc */ + /* */ + /* @description: */ + /* A handle to an @FTC_CMapDescRec structure used to describe a given */ + /* charmap in a charmap cache. */ + /* */ + /* Each @FTC_CMapDesc describes which charmap (of which @FTC_Face) we */ + /* want to use in @FTC_CMapCache_Lookup. */ + /* */ + typedef struct FTC_CMapDescRec_* FTC_CMapDesc; + + + /*************************************************************************/ + /* */ + /* @enum: */ + /* FTC_CMapType */ + /* */ + /* @description: */ + /* The list of valid @FTC_CMap types. They indicate how we want to */ + /* address a charmap within an @FTC_FaceID. */ + /* */ + /* @values: */ + /* FTC_CMAP_BY_INDEX :: */ + /* Address a charmap by its index in the corresponding @FT_Face. */ + /* */ + /* FTC_CMAP_BY_ENCODING :: */ + /* Use a @FT_Face charmap that corresponds to a given encoding. */ + /* */ + /* FTC_CMAP_BY_ID :: */ + /* Use an @FT_Face charmap that corresponds to a given */ + /* (platform,encoding) ID. See @FTC_CMapIdRec. */ + /* */ + typedef enum FTC_CMapType_ + { + FTC_CMAP_BY_INDEX = 0, + FTC_CMAP_BY_ENCODING = 1, + FTC_CMAP_BY_ID = 2 + + } FTC_CMapType; + + + /*************************************************************************/ + /* */ + /* @struct: */ + /* FTC_CMapIdRec */ + /* */ + /* @description: */ + /* A short structure to identify a charmap by a (platform,encoding) */ + /* pair of values. */ + /* */ + /* @fields: */ + /* platform :: The platform ID. */ + /* */ + /* encoding :: The encoding ID. */ + /* */ + typedef struct FTC_CMapIdRec_ + { + FT_UInt platform; + FT_UInt encoding; + + } FTC_CMapIdRec; + + + /*************************************************************************/ + /* */ + /* @struct: */ + /* FTC_CMapDescRec */ + /* */ + /* @description: */ + /* A structure to describe a given charmap to @FTC_CMapCache. */ + /* */ + /* @fields: */ + /* face_id :: @FTC_FaceID of the face this charmap belongs to. */ + /* */ + /* type :: The type of charmap, see @FTC_CMapType. */ + /* */ + /* u.index :: For @FTC_CMAP_BY_INDEX types, this is the charmap */ + /* index (within a @FT_Face) we want to use. */ + /* */ + /* u.encoding :: For @FTC_CMAP_BY_ENCODING types, this is the charmap */ + /* encoding we want to use. see @FT_Encoding. */ + /* */ + /* u.id :: For @FTC_CMAP_BY_ID types, this is the */ + /* (platform,encoding) pair we want to use. see */ + /* @FTC_CMapIdRec and @FT_CharMapRec. */ + /* */ + typedef struct FTC_CMapDescRec_ + { + FTC_FaceID face_id; + FTC_CMapType type; + + union + { + FT_UInt index; + FT_Encoding encoding; + FTC_CMapIdRec id; + + } u; + + } FTC_CMapDescRec; + + + /*************************************************************************/ + /* */ + /* @function: */ + /* FTC_CMapCache_New */ + /* */ + /* @description: */ + /* Creates a new charmap cache. */ + /* */ + /* @input: */ + /* manager :: A handle to the cache manager. */ + /* */ + /* @output: */ + /* acache :: A new cache handle. NULL in case of error. */ + /* */ + /* @return: */ + /* FreeType error code. 0 means success. */ + /* */ + /* @note: */ + /* Like all other caches, this one will be destroyed with the cache */ + /* manager. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_CMapCache_New( FTC_Manager manager, + FTC_CMapCache *acache ); + + + /*************************************************************************/ + /* */ + /* @function: */ + /* FTC_CMapCache_Lookup */ + /* */ + /* @description: */ + /* Translates a character code into a glyph index, using the charmap */ + /* cache. */ + /* */ + /* @input: */ + /* cache :: A charmap cache handle. */ + /* */ + /* cmap_desc :: A charmap descriptor handle. */ + /* */ + /* char_code :: The character code (in the corresponding charmap). */ + /* */ + /* @return: */ + /* Glyph index. 0 means "no glyph". */ + /* */ + /* @note: */ + /* This function doesn't return @FTC_Node handles, since there is no */ + /* real use for them with typical uses of charmaps. */ + /* */ + FT_EXPORT( FT_UInt ) + FTC_CMapCache_Lookup( FTC_CMapCache cache, + FTC_CMapDesc cmap_desc, + FT_UInt32 char_code ); + + /* */ + + +FT_END_HEADER + + +#endif /* __FTCCMAP_H__ */ + + +/* END */ Index: xc/extras/freetype2/include/freetype/cache/ftcglyph.h diff -u xc/extras/freetype2/include/freetype/cache/ftcglyph.h:1.1.1.2 xc/extras/freetype2/include/freetype/cache/ftcglyph.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/cache/ftcglyph.h:1.1.1.2 Tue May 15 23:45:57 2001 +++ xc/extras/freetype2/include/freetype/cache/ftcglyph.h Mon Jan 14 11:52:06 2002 @@ -4,7 +4,7 @@ /* */ /* FreeType abstract glyph cache (specification). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -64,101 +64,90 @@ FT_BEGIN_HEADER - /* maximum number of glyph sets per glyph cache; must be < 256 */ -#define FTC_MAX_GLYPH_SETS 16 -#define FTC_GSET_HASH_SIZE_DEFAULT 64 + /* each glyph set is characterized by a "glyph set type" which must be */ + /* defined by sub-classes */ + typedef struct FTC_GlyphFamilyRec_* FTC_GlyphFamily; + + /* handle to a glyph cache node */ + typedef struct FTC_GlyphNodeRec_* FTC_GlyphNode; - typedef struct FTC_GlyphSetRec_* FTC_GlyphSet; - typedef struct FTC_GlyphNodeRec_* FTC_GlyphNode; - typedef struct FTC_Glyph_CacheRec_* FTC_Glyph_Cache; - + /* size should be 24 + chunk size on 32-bit machines; */ + /* note that the node's hash is ((gfam->hash << 16) | glyph_index) -- */ + /* this _must_ be set properly by the glyph node initializer */ + /* */ typedef struct FTC_GlyphNodeRec_ { - FTC_CacheNodeRec root; - FTC_GlyphNode gset_next; /* next in glyph set's bucket list */ - FT_UShort glyph_index; - FT_UShort gset_index; + FTC_NodeRec node; + FT_UShort item_count; + FT_UShort item_start; } FTC_GlyphNodeRec; - -#define FTC_GLYPHNODE( x ) ( (FTC_GlyphNode)( x ) ) -#define FTC_GLYPHNODE_TO_LRUNODE( n ) ( (FT_ListNode)( n ) ) -#define FTC_LRUNODE_TO_GLYPHNODE( n ) ( (FTC_GlyphNode)( n ) ) - - - /*************************************************************************/ - /* */ - /* Glyph set methods. */ - /* */ - - typedef FT_Error (*FTC_GlyphSet_InitFunc) ( FTC_GlyphSet gset, - FT_Pointer type ); - - typedef void (*FTC_GlyphSet_DoneFunc) ( FTC_GlyphSet gset ); - - typedef FT_Bool (*FTC_GlyphSet_CompareFunc) ( FTC_GlyphSet gset, - FT_Pointer type ); - - - typedef FT_Error (*FTC_GlyphSet_NewNodeFunc) ( FTC_GlyphSet gset, - FT_UInt gindex, - FTC_GlyphNode* anode ); - - typedef void (*FTC_GlyphSet_DestroyNodeFunc)( FTC_GlyphNode node, - FTC_GlyphSet gset ); - - typedef FT_ULong (*FTC_GlyphSet_SizeNodeFunc) ( FTC_GlyphNode node, - FTC_GlyphSet gset ); - - - typedef struct FTC_GlyphSet_Class_ - { - FT_UInt gset_byte_size; - - FTC_GlyphSet_InitFunc init; - FTC_GlyphSet_DoneFunc done; - FTC_GlyphSet_CompareFunc compare; - FTC_GlyphSet_NewNodeFunc new_node; - FTC_GlyphSet_SizeNodeFunc size_node; - FTC_GlyphSet_DestroyNodeFunc destroy_node; +#define FTC_GLYPH_NODE( x ) ( (FTC_GlyphNode)(x) ) +#define FTC_GLYPH_NODE_P( x ) ( (FTC_GlyphNode*)(x) ) - } FTC_GlyphSet_Class; - - typedef struct FTC_GlyphSetRec_ + typedef struct FTC_GlyphQueryRec_ { - FTC_Glyph_Cache cache; - FTC_Manager manager; - FT_Memory memory; - FTC_GlyphSet_Class* clazz; - FT_UInt hash_size; - FTC_GlyphNode* buckets; - FT_UInt gset_index; /* index in parent cache */ - - } FTC_GlyphSetRec; + FTC_QueryRec query; + FT_UInt gindex; + } FTC_GlyphQueryRec, *FTC_GlyphQuery; - /* the abstract glyph cache class */ - typedef struct FTC_Glyph_Cache_Class_ - { - FTC_Cache_Class root; - FTC_GlyphSet_Class* gset_class; - } FTC_Glyph_Cache_Class; +#define FTC_GLYPH_QUERY( x ) ( (FTC_GlyphQuery)(x) ) - /* the abstract glyph cache object */ - typedef struct FTC_Glyph_CacheRec_ + /* a glyph set is used to categorize glyphs of a given type */ + typedef struct FTC_GlyphFamilyRec_ { - FTC_CacheRec root; - FT_Lru gsets_lru; /* static sets lru list */ - FTC_GlyphSet last_gset; /* small cache :-) */ - FTC_GlyphSet_CompareFunc compare; /* useful shortcut */ - - } FTC_Glyph_CacheRec; + FTC_FamilyRec family; + FT_UInt32 hash; + FT_UInt item_total; /* total number of glyphs in family */ + FT_UInt item_count; /* number of glyph items per node */ + + } FTC_GlyphFamilyRec; + + +#define FTC_GLYPH_FAMILY( x ) ( (FTC_GlyphFamily)(x) ) +#define FTC_GLYPH_FAMILY_P( x ) ( (FTC_GlyphFamily*)(x) ) + +#define FTC_GLYPH_FAMILY_MEMORY( x ) FTC_FAMILY(x)->cache->memory + + + /* each glyph node contains a 'chunk' of glyph items; */ + /* translate a glyph index into a chunk index */ +#define FTC_GLYPH_FAMILY_CHUNK( gfam, gindex ) \ + ( ( gindex ) / FTC_GLYPH_FAMILY( gfam )->item_count ) + + /* find a glyph index's chunk, and return its start index */ +#define FTC_GLYPH_FAMILY_START( gfam, gindex ) \ + ( FTC_GLYPH_FAMILY_CHUNK( gfam, gindex ) * \ + FTC_GLYPH_FAMILY( gfam )->item_count ) + + /* compute a glyph request's hash value */ +#define FTC_GLYPH_FAMILY_HASH( gfam, gindex ) \ + ( (FT_UFast)( \ + ( FTC_GLYPH_FAMILY( gfam )->hash << 16 ) | \ + ( FTC_GLYPH_FAMILY_CHUNK( gfam, gindex ) & 0xFFFF ) ) ) + + /* must be called in an FTC_Family_CompareFunc to update the query */ + /* whenever a glyph set is matched in the lookup, or when it */ + /* is created */ +#define FTC_GLYPH_FAMILY_FOUND( gfam, gquery ) \ + do \ + { \ + FTC_QUERY( gquery )->family = FTC_FAMILY( gfam ); \ + FTC_QUERY( gquery )->hash = \ + FTC_GLYPH_FAMILY_HASH( gfam, \ + FTC_GLYPH_QUERY( gquery )->gindex ); \ + } while ( 0 ) + + /* retrieve glyph index of glyph node */ +#define FTC_GLYPH_NODE_GINDEX( x ) \ + ( (FT_UInt)( FTC_GLYPH_NODE( x )->node.hash & 0xFFFF ) ) /*************************************************************************/ @@ -167,42 +156,44 @@ /* user-provided cache classes; otherwise, they are really part of the */ /* cache sub-system internals. */ /* */ - - FT_EXPORT( void ) FTC_GlyphNode_Init( FTC_GlyphNode node, - FTC_GlyphSet gset, - FT_UInt gindex ); - -#define FTC_GlyphNode_Ref( n ) \ - FTC_CACHENODE_TO_DATA_P( &(n)->root )->ref_count++ -#define FTC_GlyphNode_Unref( n ) \ - FTC_CACHENODE_TO_DATA_P( &(n)->root )->ref_count-- + /* must be called by derived FTC_Node_InitFunc routines */ + FT_EXPORT( void ) + ftc_glyph_node_init( FTC_GlyphNode node, + FT_UInt gindex, /* glyph index for node */ + FTC_GlyphFamily gfam ); + + /* returns TRUE iff the query's glyph index correspond to the node; */ + /* this assumes that the "family" and "hash" fields of the query are */ + /* already correctly set */ + FT_EXPORT( FT_Bool ) + ftc_glyph_node_compare( FTC_GlyphNode gnode, + FTC_GlyphQuery gquery ); + + /* must be called by derived FTC_Node_DoneFunc routines */ + FT_EXPORT( void ) + ftc_glyph_node_done( FTC_GlyphNode node, + FTC_Cache cache ); + + + /* must be called by derived FTC_Family_InitFunc; */ + /* calls "ftc_family_init" */ + FT_EXPORT( FT_Error ) + ftc_glyph_family_init( FTC_GlyphFamily gfam, + FT_UInt32 hash, + FT_UInt item_count, + FT_UInt item_total, + FTC_GlyphQuery gquery, + FTC_Cache cache ); + FT_EXPORT( void ) + ftc_glyph_family_done( FTC_GlyphFamily gfam ); - FT_EXPORT( void ) FTC_GlyphNode_Destroy( FTC_GlyphNode node, - FTC_Glyph_Cache cache ); - FT_EXPORT( FT_Error ) FTC_Glyph_Cache_Init( FTC_Glyph_Cache cache ); - - FT_EXPORT( void ) FTC_Glyph_Cache_Done( FTC_Glyph_Cache cache ); - - - FT_EXPORT( FT_Error ) FTC_GlyphSet_New( FTC_Glyph_Cache cache, - FT_Pointer type, - FTC_GlyphSet *aset ); - - FT_EXPORT( FT_Error ) FTC_GlyphSet_Lookup_Node( - FTC_GlyphSet gset, - FT_UInt glyph_index, - FTC_GlyphNode *anode ); - - FT_EXPORT( FT_Error ) FTC_Glyph_Cache_Lookup( FTC_Glyph_Cache cache, - FT_Pointer type, - FT_UInt gindex, - FTC_GlyphNode *anode ); - - + /* */ + FT_END_HEADER + #endif /* __FTCGLYPH_H__ */ Index: xc/extras/freetype2/include/freetype/cache/ftcimage.h diff -u xc/extras/freetype2/include/freetype/cache/ftcimage.h:1.1.1.2 xc/extras/freetype2/include/freetype/cache/ftcimage.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/cache/ftcimage.h:1.1.1.2 Tue May 15 23:45:56 2001 +++ xc/extras/freetype2/include/freetype/cache/ftcimage.h Mon Jan 14 11:52:06 2002 @@ -2,9 +2,9 @@ /* */ /* ftcimage.h */ /* */ -/* FreeType Image cache (body). */ +/* FreeType Image cache (specification). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -29,7 +29,6 @@ #include <ft2build.h> #include FT_CACHE_H -#include FT_CACHE_INTERNAL_GLYPH_H FT_BEGIN_HEADER @@ -42,7 +41,7 @@ /* */ /*************************************************************************/ - + /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ @@ -56,21 +55,25 @@ #define FTC_IMAGE_FORMAT( x ) ( (x) & 7 ) + +#define ftc_image_format_bitmap 0x0000 +#define ftc_image_format_outline 0x0001 -#define ftc_image_format_bitmap 0 -#define ftc_image_format_outline 1 +#define ftc_image_format_mask 0x000F -#define ftc_image_flag_monochrome 16 -#define ftc_image_flag_unhinted 32 -#define ftc_image_flag_autohinted 64 -#define ftc_image_flag_unscaled 128 -#define ftc_image_flag_no_sbits 256 +#define ftc_image_flag_monochrome 0x0010 +#define ftc_image_flag_unhinted 0x0020 +#define ftc_image_flag_autohinted 0x0040 +#define ftc_image_flag_unscaled 0x0080 +#define ftc_image_flag_no_sbits 0x0100 /* monochrome bitmap */ #define ftc_image_mono ftc_image_format_bitmap | \ ftc_image_flag_monochrome + /* anti-aliased bitmap */ #define ftc_image_grays ftc_image_format_bitmap + /* scaled outline */ #define ftc_image_outline ftc_image_format_outline @@ -78,14 +81,139 @@ /*************************************************************************/ /* */ /* <Struct> */ + /* FTC_ImageDesc */ + /* */ + /* <Description> */ + /* A simple structure used to describe a given glyph image category. */ + /* Note that this is different from @FTC_Image_Desc. */ + /* */ + /* <Fields> */ + /* size :: An @FTC_SizeRec used to describe the glyph's face and */ + /* size. */ + /* */ + /* type :: The glyph image's type. Note that it is a 32-bit uint. */ + /* */ + /* <Note> */ + /* This type deprecates @FTC_Image_Desc. */ + /* */ + typedef struct FTC_ImageDesc_ + { + FTC_FontRec font; + FT_UInt32 type; + + } FTC_ImageDesc; + + /* */ + +#define FTC_IMAGE_DESC_COMPARE( d1, d2 ) \ + ( FTC_FONT_COMPARE( &(d1)->font, &(d2)->font ) && \ + (d1)->type == (d2)->type ) + +#define FTC_IMAGE_DESC_HASH( d ) \ + (FT_UFast)( FTC_FONT_HASH( &(d)->font ) ^ \ + ( (d)->type << 4 ) ) + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_ImageCache */ + /* */ + /* <Description> */ + /* A handle to an glyph image cache object. They are designed to */ + /* hold many distinct glyph images while not exceeding a certain */ + /* memory threshold. */ + /* */ + typedef struct FTC_ImageCacheRec_* FTC_ImageCache; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_New */ + /* */ + /* <Description> */ + /* Creates a new glyph image cache. */ + /* */ + /* <Input> */ + /* manager :: The parent manager for the image cache. */ + /* */ + /* <Output> */ + /* acache :: A handle to the new glyph image cache object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_New( FTC_Manager manager, + FTC_ImageCache *acache ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_Lookup */ + /* */ + /* <Description> */ + /* Retrieves a given glyph image from a glyph image cache. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source glyph image cache. */ + /* */ + /* desc :: A pointer to a glyph image descriptor. */ + /* */ + /* gindex :: The glyph index to retrieve. */ + /* */ + /* <Output> */ + /* aglyph :: The corresponding @FT_Glyph object. 0 in case of */ + /* failure. */ + /* */ + /* anode :: Used to return the address of of the corresponding cache */ + /* node after incrementing its reference count (see note */ + /* below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The returned glyph is owned and managed by the glyph image cache. */ + /* Never try to transform or discard it manually! You can however */ + /* create a copy with @FT_Glyph_Copy and modify the new one. */ + /* */ + /* If "anode" is _not_ NULL, it receives the address of the cache */ + /* node containing the glyph image, after increasing its reference */ + /* count. This ensures that the node (as well as the FT_Glyph) will */ + /* always be kept in the cache until you call @FTC_Node_Unref to */ + /* "release" it. */ + /* */ + /* If "anode" is NULL, the cache node is left unchanged, which means */ + /* that the FT_Glyph could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_Lookup( FTC_ImageCache cache, + FTC_ImageDesc* desc, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + /* */ + + + /*************************************************************************/ + /* */ + /* <Struct> */ /* FTC_Image_Desc */ /* */ /* <Description> */ + /* THIS TYPE IS DEPRECATED. Use @FTC_ImageDesc instead. */ + /* */ /* A simple structure used to describe a given glyph image category. */ /* */ /* <Fields> */ - /* size :: An FTC_SizeRec used to describe the glyph's face & */ - /* size. */ + /* size :: An @FTC_SizeRec used to describe the glyph's face */ + /* and size. */ /* */ /* image_type :: The glyph image's type. */ /* */ @@ -103,11 +231,9 @@ /* FTC_Image_Cache */ /* */ /* <Description> */ - /* A handle to an glyph image cache object. They are designed to */ - /* hold many distinct glyph images, while not exceeding a certain */ - /* memory threshold. */ + /* THIS TYPE IS DEPRECATED. Use @FTC_ImageCache instead. */ /* */ - typedef struct FTC_Image_CacheRec_* FTC_Image_Cache; + typedef FTC_ImageCache FTC_Image_Cache; /*************************************************************************/ @@ -116,6 +242,8 @@ /* FTC_Image_Cache_New */ /* */ /* <Description> */ + /* THIS FUNCTION IS DEPRECATED. Use @FTC_ImageCache_New instead. */ + /* */ /* Creates a new glyph image cache. */ /* */ /* <Input> */ @@ -127,8 +255,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FTC_Image_Cache_New( FTC_Manager manager, - FTC_Image_Cache *acache ); + FT_EXPORT( FT_Error ) + FTC_Image_Cache_New( FTC_Manager manager, + FTC_Image_Cache *acache ); /*************************************************************************/ @@ -137,7 +266,7 @@ /* FTC_Image_Cache_Lookup */ /* */ /* <Description> */ - /* Retrieves a given glyph image from a glyph image cache. */ + /* THIS FUNCTION IS DEPRECATED. Use @FTC_ImageCache_Lookup instead. */ /* */ /* <Input> */ /* cache :: A handle to the source glyph image cache. */ @@ -147,7 +276,7 @@ /* gindex :: The glyph index to retrieve. */ /* */ /* <Output> */ - /* aglyph :: The corresponding FT_Glyph object. 0 in case of */ + /* aglyph :: The corresponding @FT_Glyph object. 0 in case of */ /* failure. */ /* */ /* <Return> */ @@ -156,22 +285,25 @@ /* <Note> */ /* The returned glyph is owned and managed by the glyph image cache. */ /* Never try to transform or discard it manually! You can however */ - /* create a copy with FT_Glyph_Copy() and modify the new one. */ + /* create a copy with @FT_Glyph_Copy and modify the new one. */ /* */ /* Because the glyph image cache limits the total amount of memory */ /* taken by the glyphs it holds, the returned glyph might disappear */ - /* on a later invocation of this function! It's a cache after all... */ + /* on a later invocation of this function! It is a cache after */ + /* all... */ /* */ - FT_EXPORT( FT_Error ) FTC_Image_Cache_Lookup( FTC_Image_Cache cache, - FTC_Image_Desc* desc, - FT_UInt gindex, - FT_Glyph *aglyph ); - - - /* */ + /* Use this function to "lock" the glyph as long as it is needed. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Image_Cache_Lookup( FTC_Image_Cache cache, + FTC_Image_Desc* desc, + FT_UInt gindex, + FT_Glyph *aglyph ); + /* */ FT_END_HEADER + #endif /* __FTCIMAGE_H__ */ Index: xc/extras/freetype2/include/freetype/cache/ftcmanag.h diff -u xc/extras/freetype2/include/freetype/cache/ftcmanag.h:1.1.1.2 xc/extras/freetype2/include/freetype/cache/ftcmanag.h:1.1.1.5 --- xc/extras/freetype2/include/freetype/cache/ftcmanag.h:1.1.1.2 Tue May 15 23:45:57 2001 +++ xc/extras/freetype2/include/freetype/cache/ftcmanag.h Mon Jan 14 11:52:06 2002 @@ -4,7 +4,7 @@ /* */ /* FreeType Cache Manager (specification). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,7 +23,7 @@ /* - Maintain a mapping between generic FTC_FaceIDs and live FT_Face */ /* objects. The mapping itself is performed through a user-provided */ /* callback. However, the manager maintains a small cache of FT_Face */ - /* & FT_Size objects in order to speed up things considerably. */ + /* and FT_Size objects in order to speed up things considerably. */ /* */ /* - Manage one or more cache objects. Each cache is in charge of */ /* holding a varying number of `cache nodes'. Each cache node */ @@ -66,6 +66,7 @@ #include <ft2build.h> #include FT_CACHE_H #include FT_CACHE_INTERNAL_LRU_H +#include FT_CACHE_INTERNAL_CACHE_H FT_BEGIN_HEADER @@ -81,12 +82,45 @@ #define FTC_MAX_FACES_DEFAULT 2 #define FTC_MAX_SIZES_DEFAULT 4 -#define FTC_MAX_BYTES_DEFAULT 200000 /* 200kByte by default! */ +#define FTC_MAX_BYTES_DEFAULT 200000L /* ~200kByte by default */ /* maximum number of caches registered in a single manager */ #define FTC_MAX_CACHES 16 + typedef struct FTC_FamilyEntryRec_ + { + FTC_Family family; + FTC_Cache cache; + FT_UInt index; + FT_UInt link; + + } FTC_FamilyEntryRec, *FTC_FamilyEntry; + + +#define FTC_FAMILY_ENTRY_NONE ( (FT_UInt)-1 ) + + + typedef struct FTC_FamilyTableRec_ + { + FT_UInt count; + FT_UInt size; + FTC_FamilyEntry entries; + FT_UInt free; + + } FTC_FamilyTableRec, *FTC_FamilyTable; + + + FT_EXPORT( FT_Error ) + ftc_family_table_alloc( FTC_FamilyTable table, + FT_Memory memory, + FTC_FamilyEntry *aentry ); + + FT_EXPORT( void ) + ftc_family_table_free( FTC_FamilyTable table, + FT_UInt index ); + + /*************************************************************************/ /* */ /* <Struct> */ @@ -98,45 +132,47 @@ /* <Fields> */ /* library :: A handle to a FreeType library instance. */ /* */ - /* faces_lru :: The lru list of FT_Face objects in the cache. */ + /* faces_list :: The lru list of @FT_Face objects in the cache. */ /* */ - /* sizes_lru :: The lru list of FT_Size objects in the cache. */ + /* sizes_list :: The lru list of @FT_Size objects in the cache. */ /* */ - /* max_bytes :: The maximum number of bytes to be allocated in the */ - /* cache. This is only related to the byte size of */ - /* the nodes cached by the manager. */ + /* max_weight :: The maximum cache pool weight. */ /* */ - /* num_bytes :: The current number of bytes allocated in the */ - /* cache. Only related to the byte size of cached */ - /* nodes. */ + /* cur_weight :: The current cache pool weight. */ /* */ /* num_nodes :: The current number of nodes in the manager. */ /* */ - /* global_lru :: The global lru list of all cache nodes. */ + /* nodes_list :: The global lru list of all cache nodes. */ /* */ /* caches :: A table of installed/registered cache objects. */ /* */ /* request_data :: User-provided data passed to the requester. */ /* */ /* request_face :: User-provided function used to implement a mapping */ - /* between abstract FTC_FaceIDs and real FT_Face */ - /* objects. */ + /* between abstract @FTC_FaceID values and real */ + /* @FT_Face objects. */ /* */ + /* families :: Global table of families. */ + /* */ typedef struct FTC_ManagerRec_ { FT_Library library; - FT_Lru faces_lru; - FT_Lru sizes_lru; + FT_LruList faces_list; + FT_LruList sizes_list; - FT_ULong max_bytes; - FT_ULong num_bytes; + FT_ULong max_weight; + FT_ULong cur_weight; + FT_UInt num_nodes; - FT_ListRec global_lru; + FTC_Node nodes_list; + FTC_Cache caches[FTC_MAX_CACHES]; FT_Pointer request_data; FTC_Face_Requester request_face; + FTC_FamilyTableRec families; + } FTC_ManagerRec; @@ -160,219 +196,47 @@ /* */ /* The reason this function is exported is to allow client-specific */ /* cache classes. */ - /* */ - FT_EXPORT( void ) FTC_Manager_Compress( FTC_Manager manager ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CACHE NODE DEFINITIONS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Each cache controls one or more cache nodes. Each node is part of */ - /* the global_lru list of the manager. Its `data' field however is used */ - /* as a reference count for now. */ - /* */ - /* A node can be anything, depending on the type of information held by */ - /* the cache. It can be an individual glyph image, a set of bitmaps */ - /* glyphs for a given size, some metrics, etc. */ - /* */ - - typedef FT_ListNodeRec FTC_CacheNodeRec; - typedef FTC_CacheNodeRec* FTC_CacheNode; - - - /* the field `cachenode.data' is typecast to this type */ - typedef struct FTC_CacheNode_Data_ - { - FT_UShort cache_index; - FT_Short ref_count; - - } FTC_CacheNode_Data; - - - /* return a pointer to FTC_CacheNode_Data contained in a */ - /* CacheNode's `data' field */ -#define FTC_CACHENODE_TO_DATA_P( n ) \ - ( (FTC_CacheNode_Data*)&(n)->data ) - -#define FTC_LIST_TO_CACHENODE( n ) ( (FTC_CacheNode)(n) ) - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FTC_CacheNode_SizeFunc */ - /* */ - /* <Description> */ - /* A function used to compute the total size in bytes of a given */ - /* cache node. It is used by the cache manager to compute the number */ - /* of old nodes to flush when the cache is full. */ - /* */ - /* <Input> */ - /* node :: A handle to the target cache node. */ - /* */ - /* cache_data :: A generic pointer passed to the destructor. */ - /* */ - /* <Return> */ - /* The size of a given cache node in bytes. */ - /* */ - typedef FT_ULong (*FTC_CacheNode_SizeFunc)( FTC_CacheNode node, - FT_Pointer cache_data ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FTC_CacheNode_DestroyFunc */ - /* */ - /* <Description> */ - /* A function used to destroy a given cache node. It is called by */ - /* the manager when the cache is full and old nodes need to be */ - /* flushed out. */ - /* */ - /* <Input> */ - /* node :: A handle to the target cache node. */ - /* */ - /* cache_data :: A generic pointer passed to the destructor. */ - /* */ - typedef void (*FTC_CacheNode_DestroyFunc)( FTC_CacheNode node, - FT_Pointer cache_data ); - - - /*************************************************************************/ /* */ - /* <Struct> */ - /* FTC_CacheNode_Class */ - /* */ - /* <Description> */ - /* A very simple structure used to describe a cache node's class to */ - /* the cache manager. */ - /* */ - /* <Fields> */ - /* size_node :: A function used to size the node. */ - /* */ - /* destroy_node :: A function used to destroy the node. */ - /* */ - /* <Note> */ - /* The cache node class doesn't include a `new_node' function because */ - /* the cache manager never allocates cache node directly; it */ - /* delegates this task to its cache objects. */ - /* */ - typedef struct FTC_CacheNode_Class_ - { - FTC_CacheNode_SizeFunc size_node; - FTC_CacheNode_DestroyFunc destroy_node; - - } FTC_CacheNode_Class; + FT_EXPORT( void ) + FTC_Manager_Compress( FTC_Manager manager ); - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CACHE DEFINITIONS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ + /* this must be used internally for the moment */ + FT_EXPORT( FT_Error ) + FTC_Manager_Register_Cache( FTC_Manager manager, + FTC_Cache_Class clazz, + FTC_Cache *acache ); - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FTC_Cache_InitFunc */ - /* */ - /* <Description> */ - /* A function used to initialize a given cache object. */ - /* */ - /* <Input> */ - /* cache :: A handle to the new cache. */ - /* */ - typedef FT_Error (*FTC_Cache_InitFunc)( FTC_Cache cache ); + /* can be called to increment a node's reference count */ + FT_EXPORT( void ) + FTC_Node_Ref( FTC_Node node, + FTC_Manager manager ); /*************************************************************************/ /* */ - /* <FuncType> */ - /* FTC_Cache_DoneFunc */ + /* <Function> */ + /* FTC_Node_Unref */ /* */ /* <Description> */ - /* A function to finalize a given cache object. */ + /* Decrement a cache node's internal reference count. When the count */ + /* reaches 0, it is not destroyed but becomes eligible for subsequent */ + /* cache flushes. */ /* */ /* <Input> */ - /* cache :: A handle to the target cache. */ - /* */ - typedef void (*FTC_Cache_DoneFunc)( FTC_Cache cache ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_Cache_Class */ - /* */ - /* <Description> */ - /* A structure used to describe a given cache object class to the */ - /* cache manager. */ - /* */ - /* <Fields> */ - /* cache_byte_size :: The size of the cache object in bytes. */ - /* */ - /* init_cache :: The cache object initializer. */ - /* */ - /* done_cache :: The cache object finalizer. */ - /* */ - struct FTC_Cache_Class_ - { - FT_UInt cache_byte_size; - FTC_Cache_InitFunc init_cache; - FTC_Cache_DoneFunc done_cache; - }; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_CacheRec */ + /* node :: The cache node handle. */ /* */ - /* <Description> */ - /* A structure used to describe an abstract cache object. */ - /* */ - /* <Fields> */ - /* manager :: A handle to the parent cache manager. */ - /* */ - /* memory :: A handle to the memory manager. */ - /* */ - /* clazz :: A pointer to the cache class. */ - /* */ - /* node_clazz :: A pointer to the cache's node class. */ - /* */ - /* cache_index :: An index of the cache in the manager's table. */ + /* manager :: The cache manager handle. */ /* */ - /* cache_data :: Data passed to the cache node */ - /* constructor/finalizer. */ - /* */ - typedef struct FTC_CacheRec_ - { - FTC_Manager manager; - FT_Memory memory; - FTC_Cache_Class* clazz; - FTC_CacheNode_Class* node_clazz; - - FT_UInt cache_index; /* in manager's table */ - FT_Pointer cache_data; /* passed to cache node methods */ - - } FTC_CacheRec; + FT_EXPORT( void ) + FTC_Node_Unref( FTC_Node node, + FTC_Manager manager ); + /* */ - /* */ - - FT_END_HEADER + #endif /* __FTCMANAG_H__ */ Index: xc/extras/freetype2/include/freetype/cache/ftcsbits.h diff -u xc/extras/freetype2/include/freetype/cache/ftcsbits.h:1.1.1.2 xc/extras/freetype2/include/freetype/cache/ftcsbits.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/cache/ftcsbits.h:1.1.1.2 Tue May 15 23:45:56 2001 +++ xc/extras/freetype2/include/freetype/cache/ftcsbits.h Mon Jan 14 11:52:06 2002 @@ -4,7 +4,7 @@ /* */ /* A small-bitmap cache (specification). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -22,7 +22,6 @@ #include <ft2build.h> #include FT_CACHE_H -#include FT_CACHE_INTERNAL_CHUNK_H #include FT_CACHE_IMAGE_H @@ -43,7 +42,7 @@ /* FTC_SBit */ /* */ /* <Description> */ - /* A handle to a small bitmap descriptor. See the FTC_SBitRec */ + /* A handle to a small bitmap descriptor. See the @FTC_SBitRec */ /* structure for details. */ /* */ typedef struct FTC_SBitRec_* FTC_SBit; @@ -51,20 +50,6 @@ /*************************************************************************/ /* */ - /* <Type> */ - /* FTC_SBit_Cache */ - /* */ - /* <Description> */ - /* A handle to a small bitmap cache. These are special cache objects */ - /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */ - /* much more efficient way than the traditional glyph image cache */ - /* implemented by FTC_Image_Cache. */ - /* */ - typedef struct FTC_SBit_CacheRec_* FTC_SBit_Cache; - - - /*************************************************************************/ - /* */ /* <Struct> */ /* FTC_SBitRec */ /* */ @@ -115,8 +100,33 @@ /*************************************************************************/ /* */ + /* <Type> */ + /* FTC_SBitCache */ + /* */ + /* <Description> */ + /* A handle to a small bitmap cache. These are special cache objects */ + /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */ + /* much more efficient way than the traditional glyph image cache */ + /* implemented by @FTC_ImageCache. */ + /* */ + typedef struct FTC_SBitCacheRec_* FTC_SBitCache; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_SBit_Cache */ + /* */ + /* <Description> */ + /* DEPRECATED. Use @FTC_SBitCache instead. */ + /* */ + typedef FTC_SBitCache FTC_SBit_Cache; + + + /*************************************************************************/ + /* */ /* <Function> */ - /* FTC_SBit_Cache_New */ + /* FTC_SBitCache_New */ /* */ /* <Description> */ /* Creates a new cache to store small glyph bitmaps. */ @@ -130,26 +140,34 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FTC_SBit_Cache_New( FTC_Manager manager, - FTC_SBit_Cache *acache ); + FT_EXPORT( FT_Error ) + FTC_SBitCache_New( FTC_Manager manager, + FTC_SBitCache *acache ); /*************************************************************************/ /* */ /* <Function> */ - /* FTC_SBit_Cache_Lookup */ + /* FTC_SBitCache_Lookup */ /* */ /* <Description> */ - /* Looks up a given small glyph bitmap in a given sbit cache. */ + /* Looks up a given small glyph bitmap in a given sbit cache and */ + /* "lock" it to prevent its flushing from the cache until needed */ /* */ /* <Input> */ /* cache :: A handle to the source sbit cache. */ + /* */ /* desc :: A pointer to the glyph image descriptor. */ + /* */ /* gindex :: The glyph index. */ /* */ /* <Output> */ /* sbit :: A handle to a small bitmap descriptor. */ /* */ + /* anode :: Used to return the address of of the corresponding cache */ + /* node after incrementing its reference count (see note */ + /* below). */ + /* */ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ @@ -162,13 +180,88 @@ /* The descriptor's `buffer' field is set to 0 to indicate a missing */ /* glyph bitmap. */ /* */ - FT_EXPORT( FT_Error ) FTC_SBit_Cache_Lookup( FTC_SBit_Cache cache, - FTC_Image_Desc* desc, - FT_UInt gindex, - FTC_SBit *sbit ); + /* If "anode" is _not_ NULL, it receives the address of the cache */ + /* node containing the bitmap, after increasing its reference count. */ + /* This ensures that the node (as well as the image) will always be */ + /* kept in the cache until you call @FTC_Node_Unref to "release" it. */ + /* */ + /* If "anode" is NULL, the cache node is left unchanged, which means */ + /* that the bitmap could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_Lookup( FTC_SBitCache cache, + FTC_ImageDesc* desc, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); /* */ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBit_Cache_New */ + /* */ + /* <Description> */ + /* DEPRECATED. Use @FTC_SBitCache_New instead. */ + /* */ + /* Creates a new cache to store small glyph bitmaps. */ + /* */ + /* <Input> */ + /* manager :: A handle to the source cache manager. */ + /* */ + /* <Output> */ + /* acache :: A handle to the new sbit cache. NULL in case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBit_Cache_New( FTC_Manager manager, + FTC_SBit_Cache *acache ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBit_Cache_Lookup */ + /* */ + /* <Description> */ + /* DEPRECATED. Use @FTC_SBitCache_Lookup instead. */ + /* */ + /* Looks up a given small glyph bitmap in a given sbit cache. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source sbit cache. */ + /* */ + /* desc :: A pointer to the glyph image descriptor. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* <Output> */ + /* sbit :: A handle to a small bitmap descriptor. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The small bitmap descriptor and its bit buffer are owned by the */ + /* cache and should never be freed by the application. They might */ + /* as well disappear from memory on the next cache lookup, so don't */ + /* treat them as persistent data. */ + /* */ + /* The descriptor's `buffer' field is set to 0 to indicate a missing */ + /* glyph bitmap. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBit_Cache_Lookup( FTC_SBit_Cache cache, + FTC_Image_Desc* desc, + FT_UInt gindex, + FTC_SBit *sbit ); FT_END_HEADER Index: xc/extras/freetype2/include/freetype/cache/ftlru.h diff -u xc/extras/freetype2/include/freetype/cache/ftlru.h:1.1.1.2 xc/extras/freetype2/include/freetype/cache/ftlru.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/cache/ftlru.h:1.1.1.2 Tue May 15 23:45:57 2001 +++ xc/extras/freetype2/include/freetype/cache/ftlru.h Mon Jan 14 11:52:06 2002 @@ -4,7 +4,7 @@ /* */ /* Simple LRU list-cache (specification). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -19,7 +19,7 @@ /*************************************************************************/ /* */ /* An LRU is a list that cannot hold more than a certain number of */ - /* elements (`max_elements'). All elements on the list are sorted in */ + /* elements (`max_elements'). All elements in the list are sorted in */ /* least-recently-used order, i.e., the `oldest' element is at the tail */ /* of the list. */ /* */ @@ -66,106 +66,135 @@ FT_BEGIN_HEADER - /* generic key type */ + /* generic list key type */ typedef FT_Pointer FT_LruKey; + /* a list list handle */ + typedef struct FT_LruListRec_* FT_LruList; - /* an lru node -- root.data points to the element */ - typedef struct FT_LruNodeRec_ - { - FT_ListNodeRec root; - FT_LruKey key; + /* a list class handle */ + typedef const struct FT_LruList_ClassRec_* FT_LruList_Class; - } FT_LruNodeRec, *FT_LruNode; + /* a list node handle */ + typedef struct FT_LruNodeRec_* FT_LruNode; + /* the list node structure */ + typedef struct FT_LruNodeRec_ + { + FT_LruNode next; + FT_LruKey key; - /* forward declaration */ - typedef struct FT_LruRec_* FT_Lru; + } FT_LruNodeRec; - /* LRU class */ - typedef struct FT_Lru_Class_ + /* the list structure */ + typedef struct FT_LruListRec_ { - FT_UInt lru_size; /* object size in bytes */ + FT_Memory memory; + FT_LruList_Class clazz; + FT_LruNode nodes; + FT_UInt max_nodes; + FT_UInt num_nodes; + FT_Pointer data; + + } FT_LruListRec; + + + /* initialize a list list */ + typedef FT_Error + (*FT_LruList_InitFunc)( FT_LruList list ); + + /* finalize a list list */ + typedef void + (*FT_LruList_DoneFunc)( FT_LruList list ); + + /* this method is used to initialize a new list element node */ + typedef FT_Error + (*FT_LruNode_InitFunc)( FT_LruNode node, + FT_LruKey key, + FT_Pointer data ); + + /* this method is used to finalize a given list element node */ + typedef void + (*FT_LruNode_DoneFunc)( FT_LruNode node, + FT_Pointer data ); + + /* If defined, this method is called when the list if full */ + /* during the lookup process -- it is used to change the contents */ + /* of a list element node instead of calling `done_element()', */ + /* then `init_element()'. Set it to 0 for default behaviour. */ + typedef FT_Error + (*FT_LruNode_FlushFunc)( FT_LruNode node, + FT_LruKey new_key, + FT_Pointer data ); + + /* If defined, this method is used to compare a list element node */ + /* with a given key during a lookup. If set to 0, the `key' */ + /* fields will be directly compared instead. */ + typedef FT_Bool + (*FT_LruNode_CompareFunc)( FT_LruNode node, + FT_LruKey key, + FT_Pointer data ); + + /* A selector is used to indicate whether a given list element node */ + /* is part of a selection for FT_LruList_Remove_Selection(). The */ + /* functrion must return true (i.e., non-null) to indicate that the */ + /* node is part of it. */ + typedef FT_Bool + (*FT_LruNode_SelectFunc)( FT_LruNode node, + FT_Pointer data, + FT_Pointer list_data ); - /* this method is used to initialize a new list element node */ - FT_Error (*init_element)( FT_Lru lru, - FT_LruNode node ); - - /* this method is used to finalize a given list element node */ - void (*done_element)( FT_Lru lru, - FT_LruNode node ); - - /* If defined, this method is called when the list if full */ - /* during the lookup process -- it is used to change the contents */ - /* of a list element node, instead of calling `done_element()', */ - /* then `init_element'. Set it to 0 for default behaviour. */ - FT_Error (*flush_element)( FT_Lru lru, - FT_LruNode node, - FT_LruKey new_key ); - - /* If defined, this method is used to compare a list element node */ - /* with a given key during a lookup. If set to 0, the `key' */ - /* fields will be directly compared instead. */ - FT_Bool (*compare_element)( FT_LruNode node, - FT_LruKey key ); - - } FT_Lru_Class; - - - /* A selector is used to indicate whether a given list element node */ - /* is part of a selection for FT_Lru_Remove_Selection(). The function */ - /* must return true (i.e., non-null) to indicate that the node is part */ - /* of it. */ - typedef FT_Bool (*FT_Lru_Selector)( FT_Lru lru, - FT_LruNode node, - FT_Pointer data ); - - - typedef struct FT_LruRec_ + /* LRU class */ + typedef struct FT_LruList_ClassRec_ { - FT_Lru_Class* clazz; - FT_UInt max_elements; - FT_UInt num_elements; - FT_ListRec elements; - FT_Memory memory; - FT_Pointer user_data; - - /* the following fields are only meaningful for static lru containers */ - FT_ListRec free_nodes; - FT_LruNode nodes; - - } FT_LruRec; - - - FT_EXPORT( FT_Error ) FT_Lru_New( const FT_Lru_Class* clazz, - FT_UInt max_elements, - FT_Pointer user_data, - FT_Memory memory, - FT_Bool pre_alloc, - FT_Lru *anlru ); - - FT_EXPORT( void ) FT_Lru_Reset( FT_Lru lru ); - - FT_EXPORT( void ) FT_Lru_Done ( FT_Lru lru ); - - FT_EXPORT( FT_Error ) FT_Lru_Lookup_Node( FT_Lru lru, - FT_LruKey key, - FT_LruNode *anode ); - - FT_EXPORT( FT_Error ) FT_Lru_Lookup( FT_Lru lru, - FT_LruKey key, - FT_Pointer *anobject ); - - FT_EXPORT( void ) FT_Lru_Remove_Node( FT_Lru lru, - FT_LruNode node ); - - FT_EXPORT( void ) FT_Lru_Remove_Selection( FT_Lru lru, - FT_Lru_Selector selector, - FT_Pointer data ); + FT_UInt list_size; + FT_LruList_InitFunc list_init; /* optional */ + FT_LruList_DoneFunc list_done; /* optional */ + + FT_UInt node_size; + FT_LruNode_InitFunc node_init; /* MANDATORY */ + FT_LruNode_DoneFunc node_done; /* optional */ + FT_LruNode_FlushFunc node_flush; /* optional */ + FT_LruNode_CompareFunc node_compare; /* optional */ + + } FT_LruList_ClassRec; + + + /* The following functions must be exported in the case where */ + /* applications would want to write their own cache classes. */ + + FT_EXPORT( FT_Error ) + FT_LruList_New( FT_LruList_Class clazz, + FT_UInt max_elements, + FT_Pointer user_data, + FT_Memory memory, + FT_LruList *alist ); + + FT_EXPORT( void ) + FT_LruList_Reset( FT_LruList list ); + + FT_EXPORT( void ) + FT_LruList_Destroy ( FT_LruList list ); + + FT_EXPORT( FT_Error ) + FT_LruList_Lookup( FT_LruList list, + FT_LruKey key, + FT_LruNode *anode ); + + FT_EXPORT( void ) + FT_LruList_Remove( FT_LruList list, + FT_LruNode node ); + + FT_EXPORT( void ) + FT_LruList_Remove_Selection( FT_LruList list, + FT_LruNode_SelectFunc select_func, + FT_Pointer select_data ); + /* */ FT_END_HEADER + #endif /* __FTLRU_H__ */ Index: xc/extras/freetype2/include/freetype/config/ftbuild.h diff -u xc/extras/freetype2/include/freetype/config/ftbuild.h:1.2 xc/extras/freetype2/include/freetype/config/ftbuild.h:removed --- xc/extras/freetype2/include/freetype/config/ftbuild.h:1.2 Tue Feb 13 12:20:10 2001 +++ xc/extras/freetype2/include/freetype/config/ftbuild.h Fri Jan 18 15:21:48 2002 @@ -1,268 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftbuild.h */ -/* */ -/* Build macros of the FreeType 2 library. */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ -/* $XFree86: xc/extras/freetype2/include/freetype/config/ftbuild.h,v 1.2 2001/02/13 17:20:10 tsi Exp $ */ - - -#ifndef __FT_BUILD_H__ -#define __FT_BUILD_H__ - - - /*************************************************************************/ - /* */ - /* The macro FT_ROOT is used to define the root of all public header */ - /* files for FreeType 2. By default, it is set to "freetype", which */ - /* means that all public files should be included with a line like: */ - /* */ - /* #include <freetype/...> */ - /* */ - /* Redefine it to something different if necessary, depending where the */ - /* library is installed on the particular system. */ - /* */ -#ifndef FT_ROOT -#define FT_ROOT freetype -#endif - - - /*************************************************************************/ - /* */ - /* The macro FT_CONFIG_ROOT is used to define the root of all */ - /* configuration header files for FreeType 2. By default, it is set to */ - /* "freetype/config", which means that all config files should be */ - /* include with a line like: */ - /* */ - /* #include <freetype/config/...> */ - /* */ - /* Redefine it to something different, depending where the library is */ - /* installed on the particular system. */ - /* */ -#ifndef FT_CONFIG_ROOT -#define FT_CONFIG_ROOT FT_ROOT/config -#endif - - - /*************************************************************************/ - /* */ - /* The macro FT_PUBLIC_FILE is used to include a FreeType 2 public file. */ - /* Its parameter is the file pathname, relative to the public root of a */ - /* given header file. */ - /* */ -#ifndef USE_MAKEDEPEND -#define FT_PUBLIC_FILE( x ) <FT_ROOT/x> -#endif - - - /*************************************************************************/ - /* */ - /* The macro FT_CONFIG_FILE is used to include a FreeType 2 config file. */ - /* Its parameter is the file pathname, relative to the configuration */ - /* root directory of a given header file. */ - /* */ -#ifndef USE_MAKEDEPEND -#define FT_CONFIG_FILE( x ) <FT_CONFIG_ROOT/x> -#endif - - - /*************************************************************************/ - /* */ - /* The macro FT_INTERNAL_FILE is used to include a FreeType 2 internal */ - /* file. Its parameter is the file pathname, relative to the */ - /* configuration root directory of a given header file. */ - /* */ -#ifndef USE_MAKEDEPEND -#define FT_INTERNAL_FILE( x ) <FT_ROOT/internal/x> -#endif - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT_FILE is used to include a given FreeType 2 */ - /* component source file (be it a header, a C source file, or an */ - /* included file). */ - /* */ - /* Its first argument is the component/module's directory according to */ - /* the normal FreeType 2 source directory hierarchy, and the second one */ - /* the file name. */ - /* */ - /* Note that you can also put all library source files in a single */ - /* directory and compile them normally by defining the macro */ - /* FT_FLAT_COMPILATION. */ - /* */ -#ifndef USE_MAKEDEPEND -#define FT_COMPONENT_FILE( d, x ) <FT_ROOT/d/x> -#endif - - - /*************************************************************************/ - /* */ - /* The macro FT_SOURCE_FILE is used to include a given FreeType 2 */ - /* component source file (be it a header, a C source file, or an */ - /* included file). */ - /* */ - /* Its first argument is the component/module's directory according to */ - /* the normal FreeType 2 source directory hierarchy, and the second one */ - /* the file name. */ - /* */ - /* Note that you can also put all library source files in a single */ - /* directory and compile them normally by defining the macro */ - /* FT_FLAT_COMPILATION. */ - /* */ -#ifndef USE_MAKEDEPEND -#ifdef FT_FLAT_COMPILATION -#define FT_SOURCE_FILE( d, x ) <d/x> -#else -#define FT_SOURCE_FILE( d, x ) "x" -#endif -#endif - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_BEGIN_HEADER */ - /* */ - /* <Description> */ - /* This macro is used in association with @FT_END_HEADER in header */ - /* files to ensure that the declarations within are properly */ - /* encapsulated in an `extern "C" { .. }' block when included from a */ - /* C++ compiler. */ - /* */ -#ifdef __cplusplus -#define FT_BEGIN_HEADER extern "C" { -#else -#define FT_BEGIN_HEADER /* nothing */ -#endif - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_END_HEADER */ - /* */ - /* <Description> */ - /* This macro is used in association with @FT_BEGIN_HEADER in header */ - /* files to ensure that the declarations within are properly */ - /* encapsulated in an `extern "C" { .. }' block when included from a */ - /* C++ compiler. */ - /* */ -#ifdef __cplusplus -#define FT_END_HEADER } -#else -#define FT_END_HEADER /* nothing */ -#endif - - - /*************************************************************************/ - /* */ - /* Aliases for the FreeType 2 public and configuration files. */ - /* */ - /*************************************************************************/ - -#ifndef USE_MAKEDEPEND - - /* don't add spaces around arguments to FT_CONFIG_FILE! */ - - /* configuration files */ -#ifndef FT_CONFIG_CONFIG_H -# define FT_CONFIG_CONFIG_H FT_CONFIG_FILE(ftconfig.h) -#endif - -#ifndef FT_CONFIG_OPTIONS_H -# define FT_CONFIG_OPTIONS_H FT_CONFIG_FILE(ftoption.h) -#endif - -#ifndef FT_CONFIG_MODULES_H -# define FT_CONFIG_MODULES_H FT_CONFIG_FILE(ftmodule.h) -#endif - - /* public headers */ -#define FT_ERRORS_H FT_PUBLIC_FILE(fterrors.h) -#define FT_SYSTEM_H FT_PUBLIC_FILE(ftsystem.h) -#define FT_IMAGE_H FT_PUBLIC_FILE(ftimage.h) - -#define FT_TYPES_H FT_PUBLIC_FILE(fttypes.h) - -#define FT_FREETYPE_H FT_PUBLIC_FILE(freetype.h) -#define FT_GLYPH_H FT_PUBLIC_FILE(ftglyph.h) -#define FT_BBOX_H FT_PUBLIC_FILE(ftbbox.h) -#define FT_CACHE_H FT_PUBLIC_FILE(ftcache.h) -#define FT_LIST_H FT_PUBLIC_FILE(ftlist.h) -#define FT_MAC_H FT_PUBLIC_FILE(ftmac.h) -#define FT_MULTIPLE_MASTERS_H FT_PUBLIC_FILE(ftmm.h) -#define FT_MODULE_H FT_PUBLIC_FILE(ftmodule.h) -#define FT_NAMES_H FT_PUBLIC_FILE(ftnames.h) -#define FT_OUTLINE_H FT_PUBLIC_FILE(ftoutln.h) -#define FT_RENDER_H FT_PUBLIC_FILE(ftrender.h) -#define FT_SYNTHESIS_H FT_PUBLIC_FILE(ftsynth.h) -#define FT_TYPE1_TABLES_H FT_PUBLIC_FILE(t1tables.h) -#define FT_TRUETYPE_NAMES_H FT_PUBLIC_FILE(ttnameid.h) -#define FT_TRUETYPE_TABLES_H FT_PUBLIC_FILE(tttables.h) -#define FT_TRUETYPE_TAGS_H FT_PUBLIC_FILE(tttags.h) - - - /* now include internal headers definitions from <freetype/internal/...> */ -#include FT_PUBLIC_FILE(internal/internal.h) - -#else /* USE_MAKEDEPEND */ - - /* configuration files */ -#ifndef FT_CONFIG_CONFIG_H -# define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h> -#endif - -#ifndef FT_CONFIG_OPTIONS_H -# define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h> -#endif - -#ifndef FT_CONFIG_MODULES_H -# define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h> -#endif - - /* public headers */ -#define FT_ERRORS_H <freetype/fterrors.h> -#define FT_SYSTEM_H <freetype/ftsystem.h> -#define FT_IMAGE_H <freetype/ftimage.h> - -#define FT_TYPES_H <freetype/fttypes.h> - -#define FT_FREETYPE_H <freetype/freetype.h> -#define FT_GLYPH_H <freetype/ftglyph.h> -#define FT_BBOX_H <freetype/ftbbox.h> -#define FT_CACHE_H <freetype/ftcache.h> -#define FT_LIST_H <freetype/ftlist.h> -#define FT_MAC_H <freetype/ftmac.h> -#define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h> -#define FT_MODULE_H <freetype/ftmodule.h> -#define FT_NAMES_H <freetype/ftnames.h> -#define FT_OUTLINE_H <freetype/ftoutln.h> -#define FT_RENDER_H <freetype/ftrender.h> -#define FT_SYNTHESIS_H <freetype/ftsynth.h> -#define FT_TYPE1_TABLES_H <freetype/t1tables.h> -#define FT_TRUETYPE_NAMES_H <freetype/ttnameid.h> -#define FT_TRUETYPE_TABLES_H <freetype/tttables.h> -#define FT_TRUETYPE_TAGS_H <freetype/tttags.h> - - - /* now include internal headers definitions from <freetype/internal/...> */ -#include <freetype/internal/internal.h> - -#endif /* USE_MAKEDEPEND */ - - -#endif /* __FT_BUILD_H__ */ - - -/* END */ Index: xc/extras/freetype2/include/freetype/config/ftconfig.h diff -u xc/extras/freetype2/include/freetype/config/ftconfig.h:1.1.1.2 xc/extras/freetype2/include/freetype/config/ftconfig.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/config/ftconfig.h:1.1.1.2 Tue May 15 23:45:57 2001 +++ xc/extras/freetype2/include/freetype/config/ftconfig.h Sun Dec 16 12:49:23 2001 @@ -4,7 +4,7 @@ /* */ /* ANSI-specific configuration file (specification only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -62,20 +62,20 @@ #include <limits.h> /* The number of bytes in an `int' type. */ -#if UINT_MAX == 0xFFFFFFFF +#if UINT_MAX == 0xFFFFFFFFUL #define FT_SIZEOF_INT 4 -#elif UINT_MAX == 0xFFFF +#elif UINT_MAX == 0xFFFFU #define FT_SIZEOF_INT 2 -#elif UINT_MAX > 0xFFFFFFFF && UINT_MAX == 0xFFFFFFFFFFFFFFFF +#elif UINT_MAX > 0xFFFFFFFFU && UINT_MAX == 0xFFFFFFFFFFFFFFFFU #define FT_SIZEOF_INT 8 #else #error "Unsupported number of bytes in `int' type!" #endif /* The number of bytes in a `long' type. */ -#if ULONG_MAX == 0xFFFFFFFF +#if ULONG_MAX == 0xFFFFFFFFUL #define FT_SIZEOF_LONG 4 -#elif ULONG_MAX > 0xFFFFFFFF && ULONG_MAX == 0xFFFFFFFFFFFFFFFF +#elif ULONG_MAX > 0xFFFFFFFFU && ULONG_MAX == 0xFFFFFFFFFFFFFFFFU #define FT_SIZEOF_LONG 8 #else #error "Unsupported number of bytes in `long' type!" @@ -127,33 +127,82 @@ #error "no 32bit type found -- please check your configuration files" #endif + /* now, lookup for an integer type that is at least 32 bits */ +#if FT_SIZEOF_INT >= 4 + + typedef int FT_Fast; + typedef unsigned int FT_UFast; + +#elif FT_SIZEOF_LONG >= 4 + + typedef long FT_Fast; + typedef unsigned long FT_UFast; + +#endif + + + + /* determine whether we have a 64-bit int type for platforms without */ + /* Autoconf */ #if FT_SIZEOF_LONG == 8 /* FT_LONG64 must be defined if a 64-bit type is available */ #define FT_LONG64 -#define FT_INT64 long +#define FT_INT64 long -#else +#elif defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ + + /* this compiler provides the __int64 type */ +#define FT_LONG64 +#define FT_INT64 __int64 + +#elif defined( __BORLANDC__ ) /* Borland C++ */ + + /* XXXX: We should probably check the value of __BORLANDC__ in order */ + /* to test the compiler version. */ + + /* this compiler provides the __int64 type */ +#define FT_LONG64 +#define FT_INT64 __int64 + +#elif defined( __WATCOMC__ ) /* Watcom C++ */ + + /* Watcom doesn't provide 64-bit data types */ + +#elif defined( __MWKS__ ) /* Metrowerks CodeWarrior */ + /* I don't know if it provides 64-bit data types, any suggestion */ + /* is welcome. */ + +#elif defined( __GNUC__ ) + + /* GCC provides the "long long" type */ +#define FT_LONG64 +#define FT_INT64 long long int + +#endif /* !FT_LONG64 */ + + /*************************************************************************/ - /* */ - /* Many compilers provide the non-ANSI `long long' 64-bit type. You can */ - /* activate it by defining the FTCALC_USE_LONG_LONG macro in */ - /* `ftoption.h'. */ /* */ - /* Note that this will produce many -ansi warnings during library */ - /* compilation, and that in many cases, the generated code will be */ - /* neither smaller nor faster! */ + /* A 64-bit data type will create compilation problems if you compile */ + /* in strict ANSI mode. To avoid them, we disable their use if */ + /* __STDC__ is defined. You can however ignore this rule by */ + /* defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ /* */ -#ifdef FTCALC_USE_LONG_LONG +#if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 ) -#define FT_LONG64 -#define FT_INT64 long long +#ifdef __STDC__ + + /* undefine the 64-bit macros in strict ANSI compilation mode */ +#undef FT_LONG64 +#undef FT_INT64 -#endif /* FTCALC_USE_LONG_LONG */ -#endif /* FT_SIZEOF_LONG == 8 */ +#endif /* __STDC__ */ +#endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */ + #ifdef FT_MAKE_OPTION_SINGLE_OBJECT #define FT_LOCAL static @@ -227,8 +276,7 @@ #endif /* !FT_EXPORT_VAR */ /* The following macros are needed to compile the library with a */ - /* C++ compiler. Note that we do this for convenience -- please */ - /* don't ask for more C++ features. */ + /* C++ compiler and with 16bit compilers. */ /* */ /* This is special. Within C++, you must specify `extern "C"' for */ @@ -246,19 +294,28 @@ /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ /* that contains pointers to callback functions. */ /* */ + /* */ + /* Some 16bit compilers have to redefine these macros to insert */ + /* the infamous `_cdecl' or `__fastcall' declarations. */ + /* */ +#ifndef FT_CALLBACK_DEF #ifdef __cplusplus - -#define FT_CALLBACK_DEF extern "C" -#define FT_CALLBACK_TABLE extern "C" -#define FT_CALLBACK_TABLE_DEF extern "C" - +#define FT_CALLBACK_DEF( x ) extern "C" x #else +#define FT_CALLBACK_DEF( x ) static x +#endif +#endif /* FT_CALLBACK_DEF */ -#define FT_CALLBACK_DEF static -#define FT_CALLBACK_TABLE extern -#define FT_CALLBACK_TABLE_DEF +#ifndef FT_CALLBACK_TABLE +#ifdef __cplusplus +#define FT_CALLBACK_TABLE extern "C" +#define FT_CALLBACK_TABLE_DEF extern "C" +#else +#define FT_CALLBACK_TABLE extern +#define FT_CALLBACK_TABLE_DEF /* nothing */ +#endif +#endif /* FT_CALLBACK_TABLE */ -#endif /* __cplusplus */ FT_END_HEADER Index: xc/extras/freetype2/include/freetype/config/ftheader.h diff -u xc/extras/freetype2/include/freetype/config/ftheader.h:1.1.1.1 xc/extras/freetype2/include/freetype/config/ftheader.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/config/ftheader.h:1.1.1.1 Tue May 15 23:45:57 2001 +++ xc/extras/freetype2/include/freetype/config/ftheader.h Mon Jan 14 11:52:06 2002 @@ -4,7 +4,7 @@ /* */ /* Build macros of the FreeType 2 library. */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -167,6 +167,18 @@ /*************************************************************************/ /* */ /* @macro: */ + /* FT_MODULE_ERRORS_H */ + /* */ + /* @description: */ + /* A macro used in #include statements to name the file containing */ + /* the list of FreeType 2 module error offsets (and messages). */ + /* */ +#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h> + + + /*************************************************************************/ + /* */ + /* @macro: */ /* FT_SYSTEM_H */ /* */ /* @description: */ @@ -237,6 +249,18 @@ /*************************************************************************/ /* */ /* @macro: */ + /* FT_SIZES_H */ + /* */ + /* @description: */ + /* A macro used in #include statements to name the file containing */ + /* the API used to manage multiple @FT_Size objects per face. */ + /* */ +#define FT_SIZES_H <freetype/ftsizes.h> + + + /*************************************************************************/ + /* */ + /* @macro: */ /* FT_MODULE_H */ /* */ /* @description: */ @@ -338,6 +362,19 @@ /*************************************************************************/ /* */ /* @macro: */ + /* FT_BEZIER_H */ + /* */ + /* @description: */ + /* A macro used in #include statements to name the file containing */ + /* a small useful API to handle bezier arcs. Note that you _must_ */ + /* include FT_FREETYPE_H or FT_IMAGE_H before this header. */ + /* */ +#define FT_BEZIER_H <freetype/ftbezier.h> + + + /*************************************************************************/ + /* */ + /* @macro: */ /* FT_CACHE_H */ /* */ /* @description: */ @@ -383,6 +420,18 @@ /*************************************************************************/ /* */ /* @macro: */ + /* FT_CACHE_CHARMAP_H */ + /* */ + /* @description: */ + /* A macro used in #include statements to name the file containing */ + /* the `charmap' API of the FreeType 2 cache sub-system. */ + /* */ +#define FT_CACHE_CHARMAP_H <freetype/cache/ftccmap.h> + + + /*************************************************************************/ + /* */ + /* @macro: */ /* FT_MAC_H */ /* */ /* @description: */ @@ -423,14 +472,14 @@ /* */ - +#define FT_TRIGONOMETRY_H <freetype/fttrigon.h> #define FT_SYNTHESIS_H <freetype/ftsynth.h> #define FT_CACHE_MANAGER_H <freetype/cache/ftcmanag.h> #define FT_CACHE_INTERNAL_LRU_H <freetype/cache/ftlru.h> #define FT_CACHE_INTERNAL_GLYPH_H <freetype/cache/ftcglyph.h> -#define FT_CACHE_INTERNAL_CHUNK_H <freetype/cache/ftcchunk.h> +#define FT_CACHE_INTERNAL_CACHE_H <freetype/cache/ftccache.h> /* now include internal headers definitions from <freetype/internal/...> */ Index: xc/extras/freetype2/include/freetype/config/ftmodule.h diff -u xc/extras/freetype2/include/freetype/config/ftmodule.h:1.1.1.2 xc/extras/freetype2/include/freetype/config/ftmodule.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/config/ftmodule.h:1.1.1.2 Tue May 15 23:45:57 2001 +++ xc/extras/freetype2/include/freetype/config/ftmodule.h Mon Jan 14 11:52:06 2002 @@ -4,9 +4,11 @@ FT_USE_MODULE(pcf_driver_class) FT_USE_MODULE(psaux_module_class) FT_USE_MODULE(psnames_module_class) +FT_USE_MODULE(pshinter_module_class) FT_USE_MODULE(ft_raster1_renderer_class) FT_USE_MODULE(sfnt_module_class) FT_USE_MODULE(ft_smooth_renderer_class) FT_USE_MODULE(tt_driver_class) FT_USE_MODULE(t1_driver_class) FT_USE_MODULE(winfnt_driver_class) + Index: xc/extras/freetype2/include/freetype/config/ftoption.h diff -u xc/extras/freetype2/include/freetype/config/ftoption.h:1.1.1.2 xc/extras/freetype2/include/freetype/config/ftoption.h:1.4 --- xc/extras/freetype2/include/freetype/config/ftoption.h:1.1.1.2 Tue May 15 23:45:57 2001 +++ xc/extras/freetype2/include/freetype/config/ftoption.h Mon Jan 14 12:00:59 2002 @@ -1,10 +1,11 @@ +/* $XFree86: xc/extras/freetype2/include/freetype/config/ftoption.h,v 1.4 2002/01/14 17:00:59 keithp Exp $ */ /***************************************************************************/ /* */ /* ftoption.h */ /* */ /* User-selectable configuration macros (specification only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -30,18 +31,40 @@ /* */ /* USER-SELECTABLE CONFIGURATION MACROS */ /* */ - /* These macros can be toggled by developers to enable or disable */ - /* certain aspects of FreeType. This is a default file, where all major */ - /* options are enabled. */ - /* */ - /* Note that if some modifications are required for your build, we */ - /* advise you to put a modified copy of this file in your build */ - /* directory, rather than modifying it in-place. */ - /* */ - /* The build directory is normally `freetype/builds/<system>' and */ - /* contains build or system-specific files that are included in */ - /* priority when building the library. */ + /* This file contains the default configuration macro definitions for */ + /* a standard build of the FreeType library. There are three ways to */ + /* use this file to build project-specific versions of the library: */ + /* */ + /* - You can modify this file by hand, but this is not recommended in */ + /* cases where you would like to build several versions of the */ + /* library from a single source directory. */ + /* */ + /* - You can put a copy of this file in your build directory, more */ + /* precisely in "$BUILD/freetype/config/ftoption.h", where "$BUILD" */ + /* is the name of a directory that is included _before_ the FreeType */ + /* include path during compilation. */ + /* */ + /* The default FreeType Makefiles and Jamfiles use the build */ + /* directory "builds/<system>" by default, but you can easily change */ + /* that for your own projects. */ + /* */ + /* - Copy the file <ft2build.h> to "$BUILD/ft2build.h" and modify it */ + /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ + /* locate this file during the build. For example, */ + /* */ + /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ + /* #include <freetype/config/ftheader.h> */ + /* */ + /* will use "$BUILD/myftoptions.h" instead of this file for macro */ + /* definitions. */ + /* */ + /* Note also that you can similarly pre-define the macro */ + /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ + /* that are statically linked to the library at compile time. By */ + /* default, this file is <freetype/config/ftmodule.h>. */ /* */ + /* We highly recommend using the third method whenever possible. */ + /* */ /*************************************************************************/ @@ -75,6 +98,23 @@ /*************************************************************************/ /* */ + /* Module errors */ + /* */ + /* If this macro is set (which is _not_ the default), the higher byte */ + /* of an error code gives the module in which the error has occurred, */ + /* while the lower byte is the real error code. */ + /* */ + /* Setting this macro makes sense for debugging purposes only, since */ + /* it would break source compatibility of certain programs that use */ + /* FreeType 2. */ + /* */ + /* More details can be found in the files ftmoderr.h and fterrors.h. */ + /* */ +#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS + + + /*************************************************************************/ + /* */ /* Alternate Glyph Image Format support */ /* */ /* By default, the glyph images returned by the FreeType glyph loader */ @@ -99,7 +139,7 @@ /* Glyph Postscript Names handling */ /* */ /* By default, FreeType 2 is compiled with the `PSNames' module. This */ - /* This module is in charge of converting a glyph name string into a */ + /* module is in charge of converting a glyph name string into a */ /* Unicode value, or return a Macintosh standard glyph name for the */ /* use with the TrueType `post' table. */ /* */ @@ -139,12 +179,22 @@ /*************************************************************************/ /* */ - /* Many compilers provide the non-ANSI `long long' 64-bit type. You can */ - /* activate it by defining the FTCALC_USE_LONG_LONG macro. Note that */ - /* this will produce many -ansi warnings during library compilation, and */ - /* that in many cases the generated code will not be smaller or faster! */ + /* Many compilers provide a non-ANSI 64-bit data type that can be used */ + /* by FreeType to speed up some computations. However, this will create */ + /* some problems when compiling the library in strict ANSI mode. */ + /* */ + /* For this reason, the use of 64-bit ints is normally disabled when */ + /* the __STDC__ macro is defined. You can however disable this by */ + /* defining here the macro FT_CONFIG_OPTION_FORCE_INT64. */ + /* */ + /* For most compilers, this will only create compilation warnings */ + /* when building the library. */ + /* */ + /* ObNote: The compiler-specific 64-bit integers are detected in the */ + /* file "ftconfig.h" either statically, or through Autoconf */ + /* on platforms that support it. */ /* */ -#undef FTCALC_USE_LONG_LONG +#undef FT_CONFIG_OPTION_FORCE_INT64 /*************************************************************************/ @@ -206,12 +256,27 @@ /*************************************************************************/ /* */ + /* Memory Debugging */ + /* */ + /* FreeType now comes with an integrated memory debugger that is */ + /* capable of detecting simple errors like memory leaks or double */ + /* deletes. To compile it within your build of the library, you */ + /* should define FT_DEBUG_MEMORY here. */ + /* */ + /* Note that the memory debugger is only activated at runtime when */ + /* when the _environment_ variable "FT_DEBUG_MEMORY" is also defined! */ + /* */ +#undef FT_DEBUG_MEMORY + + + /*************************************************************************/ + /* */ /* Computation Algorithms */ /* */ /* Used for debugging, this configuration macro should disappear */ /* soon. */ /* */ -#define FT_CONFIG_OPTION_OLD_CALCS +#undef FT_CONFIG_OPTION_OLD_CALCS /*************************************************************************/ @@ -221,7 +286,7 @@ /* */ /* This must be greater than 4kByte. */ /* */ -#define FT_RENDER_POOL_SIZE 32768 +#define FT_RENDER_POOL_SIZE 32768L /*************************************************************************/ @@ -389,6 +454,7 @@ /* */ #undef T1_CONFIG_OPTION_NO_MM_SUPPORT + /* */ FT_END_HEADER Index: xc/extras/freetype2/include/freetype/internal/autohint.h diff -u xc/extras/freetype2/include/freetype/internal/autohint.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/autohint.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/internal/autohint.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/autohint.h Sun Dec 16 12:49:23 2001 @@ -4,7 +4,7 @@ /* */ /* High-level `autohint' module-specific interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -101,11 +101,11 @@ /* */ /* global_len :: The size in bytes of the global hints. */ /* */ - typedef void (*FT_AutoHinter_Get_Global_Func)( - FT_AutoHinter hinter, - FT_Face face, - void** global_hints, - long* global_len ); + typedef void + (*FT_AutoHinter_Get_Global_Func)( FT_AutoHinter hinter, + FT_Face face, + void** global_hints, + long* global_len ); /*************************************************************************/ @@ -123,8 +123,9 @@ /* */ /* global :: A pointer to retrieved global hints to discard. */ /* */ - typedef void (*FT_AutoHinter_Done_Global_Func)( FT_AutoHinter hinter, - void* global ); + typedef void + (*FT_AutoHinter_Done_Global_Func)( FT_AutoHinter hinter, + void* global ); /*************************************************************************/ @@ -142,8 +143,9 @@ /* */ /* face :: A handle to the face. */ /* */ - typedef void (*FT_AutoHinter_Reset_Func)( FT_AutoHinter hinter, - FT_Face face ); + typedef void + (*FT_AutoHinter_Reset_Func)( FT_AutoHinter hinter, + FT_Face face ); /*************************************************************************/ @@ -167,11 +169,12 @@ /* It will call the font driver with FT_Load_Glyph(), with */ /* FT_LOAD_NO_SCALE set. */ /* */ - typedef FT_Error (*FT_AutoHinter_Load_Func)( FT_AutoHinter hinter, - FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_ULong load_flags ); + typedef FT_Error + (*FT_AutoHinter_Load_Func)( FT_AutoHinter hinter, + FT_GlyphSlot slot, + FT_Size size, + FT_UInt glyph_index, + FT_ULong load_flags ); /*************************************************************************/ Index: xc/extras/freetype2/include/freetype/internal/cfferrs.h diff -u xc/extras/freetype2/include/freetype/internal/cfferrs.h:1.1.1.1 xc/extras/freetype2/include/freetype/internal/cfferrs.h:removed --- xc/extras/freetype2/include/freetype/internal/cfferrs.h:1.1.1.1 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/cfferrs.h Fri Jan 18 15:21:49 2002 @@ -1,130 +0,0 @@ -/***************************************************************************/ -/* */ -/* cfferrs.h */ -/* */ -/* OpenType error ID definitions (specification only). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CFFERRORS_H__ -#define __CFFERRORS_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* Error codes declaration */ - /* */ - /* The error codes are grouped in `classes' used to indicate the `level' */ - /* at which the error happened. The class is given by an error code's */ - /* high byte. */ - /* */ - /*************************************************************************/ - - - /* Success is always 0. */ - -#define CFF_Err_Ok FT_Err_Ok - - /* High level API errors. */ - -#define CFF_Err_Invalid_File_Format FT_Err_Invalid_File_Format -#define CFF_Err_Invalid_Argument FT_Err_Invalid_Argument -#define CFF_Err_Invalid_Driver_Handle FT_Err_Invalid_Driver_Handle -#define CFF_Err_Invalid_Face_Handle FT_Err_Invalid_Face_Handle -#define CFF_Err_Invalid_Instance_Handle FT_Err_Invalid_Size_Handle -#define CFF_Err_Invalid_Glyph_Handle FT_Err_Invalid_Slot_Handle -#define CFF_Err_Invalid_CharMap_Handle FT_Err_Invalid_CharMap_Handle -#define CFF_Err_Invalid_Glyph_Index FT_Err_Invalid_Glyph_Index - -#define CFF_Err_Unimplemented_Feature FT_Err_Unimplemented_Feature - -#define CFF_Err_Invalid_Engine FT_Err_Invalid_Driver_Handle - - /* Internal errors. */ - -#define CFF_Err_Out_Of_Memory FT_Err_Out_Of_Memory -#define CFF_Err_Unlisted_Object FT_Err_Unlisted_Object - - /* General glyph outline errors. */ - -#define CFF_Err_Invalid_Composite FT_Err_Invalid_Composite - - /* Bytecode interpreter error codes. */ - - /* These error codes are produced by the TrueType */ - /* bytecode interpreter. They usually indicate a */ - /* broken font file, a broken glyph within a font */ - /* file, or a bug in the interpreter! */ - -#define CFF_Err_Invalid_Opcode 0x500 -#define CFF_Err_Too_Few_Arguments 0x501 -#define CFF_Err_Stack_Overflow 0x502 -#define CFF_Err_Code_Overflow 0x503 -#define CFF_Err_Bad_Argument 0x504 -#define CFF_Err_Divide_By_Zero 0x505 -#define CFF_Err_Storage_Overflow 0x506 -#define CFF_Err_Cvt_Overflow 0x507 -#define CFF_Err_Invalid_Reference 0x508 -#define CFF_Err_Invalid_Distance 0x509 -#define CFF_Err_Interpolate_Twilight 0x50A -#define CFF_Err_Debug_OpCode 0x50B -#define CFF_Err_ENDF_In_Exec_Stream 0x50C -#define CFF_Err_Out_Of_CodeRanges 0x50D -#define CFF_Err_Nested_DEFS 0x50E -#define CFF_Err_Invalid_CodeRange 0x50F -#define CFF_Err_Invalid_Displacement 0x510 -#define CFF_Err_Execution_Too_Long 0x511 - -#define CFF_Err_Too_Many_Instruction_Defs 0x512 -#define CFF_Err_Too_Many_Function_Defs 0x513 - - /* Other TrueType specific error codes. */ - -#define CFF_Err_Table_Missing 0x520 -#define CFF_Err_Too_Many_Extensions 0x521 -#define CFF_Err_Extensions_Unsupported 0x522 -#define CFF_Err_Invalid_Extension_Id 0x523 - -#define CFF_Err_No_Vertical_Data 0x524 - -#define CFF_Err_Max_Profile_Missing 0x530 -#define CFF_Err_Header_Table_Missing 0x531 -#define CFF_Err_Horiz_Header_Missing 0x532 -#define CFF_Err_Locations_Missing 0x533 -#define CFF_Err_Name_Table_Missing 0x534 -#define CFF_Err_CMap_Table_Missing 0x535 -#define CFF_Err_Hmtx_Table_Missing 0x536 -#define CFF_Err_OS2_Table_Missing 0x537 -#define CFF_Err_Post_Table_Missing 0x538 - -#define CFF_Err_Invalid_Horiz_Metrics 0x540 -#define CFF_Err_Invalid_CharMap_Format 0x541 -#define CFF_Err_Invalid_PPem 0x542 -#define CFF_Err_Invalid_Vert_Metrics 0x543 - -#define CFF_Err_Could_Not_Find_Context 0x550 - - -FT_END_HEADER - - -#endif /* __CFFERRORS_H__ */ - - -/* END */ Index: xc/extras/freetype2/include/freetype/internal/cfftypes.h diff -u xc/extras/freetype2/include/freetype/internal/cfftypes.h:1.1.1.1 xc/extras/freetype2/include/freetype/internal/cfftypes.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/internal/cfftypes.h:1.1.1.1 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/cfftypes.h Mon Jan 14 11:52:06 2002 @@ -5,7 +5,7 @@ /* Basic OpenType/CFF type definitions and interface (specification */ /* only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -67,21 +67,21 @@ { FT_UInt format; FT_ULong offset; - + FT_UShort* sids; FT_UShort* codes; - + } CFF_Encoding; typedef struct CFF_Charset_ { - + FT_UInt format; FT_ULong offset; FT_UShort* sids; - + } CFF_Charset; @@ -222,7 +222,7 @@ CFF_Encoding encoding; CFF_Charset charset; - + CFF_Index charstrings_index; CFF_Index font_dict_index; CFF_Index private_index; @@ -237,6 +237,9 @@ CFF_SubFont* subfonts[CFF_MAX_CID_FONTS]; CFF_FD_Select fd_select; + + /* interface to PostScript hinter */ + void* pshinter; } CFF_Font; Index: xc/extras/freetype2/include/freetype/internal/fnttypes.h diff -u xc/extras/freetype2/include/freetype/internal/fnttypes.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/fnttypes.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/internal/fnttypes.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/fnttypes.h Sun Dec 16 12:49:23 2001 @@ -5,7 +5,7 @@ /* Basic Windows FNT/FON type definitions and interface (specification */ /* only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/include/freetype/internal/ftcalc.h diff -u xc/extras/freetype2/include/freetype/internal/ftcalc.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/ftcalc.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/internal/ftcalc.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/ftcalc.h Sun Dec 16 12:49:23 2001 @@ -4,7 +4,7 @@ /* */ /* Arithmetic computations (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,19 +27,21 @@ FT_BEGIN_HEADER -#ifdef FT_LONG64 +/* OLD 64-bits internal API */ +#ifdef FT_CONFIG_OPTION_OLD_CALCS +#ifdef FT_LONG64 + typedef FT_INT64 FT_Int64; #define ADD_64( x, y, z ) z = (x) + (y) #define MUL_64( x, y, z ) z = (FT_Int64)(x) * (y) #define DIV_64( x, y ) ( (x) / (y) ) -#ifdef FT_CONFIG_OPTION_OLD_CALCS - #define SQRT_64( z ) FT_Sqrt64( z ) + /*************************************************************************/ /* */ /* <Function> */ @@ -56,14 +58,13 @@ /* <Return> */ /* The 32-bit square-root. */ /* */ - FT_EXPORT( FT_Int32 ) FT_Sqrt64( FT_Int64 l ); + FT_EXPORT( FT_Int32 ) + FT_Sqrt64( FT_Int64 l ); -#endif /* FT_CONFIG_OPTION_OLD_CALCS */ +#else /* !FT_LONG64 */ -#else /* FT_LONG64 */ - typedef struct FT_Int64_ { FT_UInt32 lo; @@ -95,9 +96,10 @@ /* <Note> */ /* Will be wrapped by the ADD_64() macro. */ /* */ - FT_EXPORT( void ) FT_Add64( FT_Int64* x, - FT_Int64* y, - FT_Int64 *z ); + FT_EXPORT( void ) + FT_Add64( FT_Int64* x, + FT_Int64* y, + FT_Int64 *z ); /*************************************************************************/ @@ -118,9 +120,10 @@ /* <Note> */ /* Will be wrapped by the MUL_64() macro. */ /* */ - FT_EXPORT( void ) FT_MulTo64( FT_Int32 x, - FT_Int32 y, - FT_Int64 *z ); + FT_EXPORT( void ) + FT_MulTo64( FT_Int32 x, + FT_Int32 y, + FT_Int64 *z ); /*************************************************************************/ @@ -142,16 +145,14 @@ /* <Note> */ /* Will be wrapped by the DIV_64() macro. */ /* */ - FT_EXPORT( FT_Int32 ) FT_Div64by32( FT_Int64* x, - FT_Int32 y ); - + FT_EXPORT( FT_Int32 ) + FT_Div64by32( FT_Int64* x, + FT_Int32 y ); -#ifdef FT_CONFIG_OPTION_OLD_CALCS - - FT_EXPORT( FT_Int32 ) FT_SqrtFixed( FT_Int32 x ); #define SQRT_64( z ) FT_Sqrt64( &z ) + /*************************************************************************/ /* */ /* <Function> */ @@ -168,18 +169,24 @@ /* <Return> */ /* The 32-bit square-root. */ /* */ - FT_EXPORT( FT_Int32 ) FT_Sqrt64( FT_Int64* x ); + FT_EXPORT( FT_Int32 ) + FT_Sqrt64( FT_Int64* x ); + +#endif /* !FT_LONG64 */ + #endif /* FT_CONFIG_OPTION_OLD_CALCS */ + -#endif /* FT_LONG64 */ + FT_EXPORT( FT_Int32 ) FT_SqrtFixed( FT_Int32 x ); #ifndef FT_CONFIG_OPTION_OLD_CALCS #define SQRT_32( x ) FT_Sqrt32( x ) + /*************************************************************************/ /* */ /* <Function> */ @@ -195,7 +202,9 @@ /* <Return> */ /* The result of `sqrt(x)'. */ /* */ - FT_EXPORT( FT_Int32 ) FT_Sqrt32( FT_Int32 x ); + FT_EXPORT( FT_Int32 ) + FT_Sqrt32( FT_Int32 x ); + #endif /* !FT_CONFIG_OPTION_OLD_CALCS */ Index: xc/extras/freetype2/include/freetype/internal/ftdebug.h diff -u xc/extras/freetype2/include/freetype/internal/ftdebug.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/ftdebug.h:1.5 --- xc/extras/freetype2/include/freetype/internal/ftdebug.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/ftdebug.h Mon Jan 14 12:00:59 2002 @@ -4,7 +4,7 @@ /* */ /* Debugging and logging component (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -14,8 +14,8 @@ /* understand and accept it fully. */ /* */ /***************************************************************************/ +/* $XFree86: xc/extras/freetype2/include/freetype/internal/ftdebug.h,v 1.5 2002/01/14 17:00:59 keithp Exp $ */ - #ifndef __FTDEBUG_H__ #define __FTDEBUG_H__ @@ -81,6 +81,11 @@ trace_t1decode, trace_psobjs, + /* PostScript hinting module `pshinter' */ + trace_pshrec, + trace_pshalgo1, + trace_pshalgo2, + /* Type 2 driver components */ trace_cffdriver, trace_cffgload, @@ -146,8 +151,9 @@ /* */ /* level :: The tracing level. */ /* */ - FT_EXPORT( void ) FT_SetTraceLevel( FT_Trace component, - char level ); + FT_EXPORT( void ) + FT_SetTraceLevel( FT_Trace component, + char level ); #elif defined( FT_DEBUG_LEVEL_ERROR ) @@ -181,7 +187,7 @@ #if defined( FT_DEBUG_LEVEL_TRACE ) || defined( FT_DEBUG_LEVEL_ERROR ) -#include "stdio.h" /* for vprintf() */ +#include <stdio.h> /* for vprintf() */ #define FT_Assert( condition ) \ @@ -193,10 +199,12 @@ } while ( 0 ) /* print a message */ - FT_EXPORT( void ) FT_Message( const char* fmt, ... ); + FT_EXPORT( void ) + FT_Message( const char* fmt, ... ); /* print a message and exit */ - FT_EXPORT( void ) FT_Panic( const char* fmt, ... ); + FT_EXPORT( void ) + FT_Panic( const char* fmt, ... ); #define FT_ERROR( varformat ) FT_Message varformat @@ -220,6 +228,15 @@ #define FT_TRACE5( varformat ) FT_TRACE( 5, varformat ) #define FT_TRACE6( varformat ) FT_TRACE( 6, varformat ) #define FT_TRACE7( varformat ) FT_TRACE( 7, varformat ) + + +#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ + + /* we disable the warning `conditional expression is constant' here */ + /* in order to compile cleanly with the maximum level of warnings */ +#pragma warning( disable : 4127 ) + +#endif /* _MSC_VER */ FT_END_HEADER Index: xc/extras/freetype2/include/freetype/internal/ftdriver.h diff -u xc/extras/freetype2/include/freetype/internal/ftdriver.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/ftdriver.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/internal/ftdriver.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/ftdriver.h Sun Dec 16 12:49:23 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType font driver interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,59 +27,72 @@ FT_BEGIN_HEADER - typedef FT_Error (*FTDriver_initFace) ( FT_Stream stream, - FT_Face face, - FT_Int typeface_index, - FT_Int num_params, - FT_Parameter* parameters ); + typedef FT_Error + (*FTDriver_initFace)( FT_Stream stream, + FT_Face face, + FT_Int typeface_index, + FT_Int num_params, + FT_Parameter* parameters ); - typedef void (*FTDriver_doneFace) ( FT_Face face ); + typedef void + (*FTDriver_doneFace)( FT_Face face ); - typedef FT_Error (*FTDriver_initSize) ( FT_Size size ); + typedef FT_Error + (*FTDriver_initSize)( FT_Size size ); - typedef void (*FTDriver_doneSize) ( FT_Size size ); + typedef void + (*FTDriver_doneSize)( FT_Size size ); - typedef FT_Error (*FTDriver_initGlyphSlot)( FT_GlyphSlot slot ); + typedef FT_Error + (*FTDriver_initGlyphSlot)( FT_GlyphSlot slot ); - typedef void (*FTDriver_doneGlyphSlot)( FT_GlyphSlot slot ); + typedef void + (*FTDriver_doneGlyphSlot)( FT_GlyphSlot slot ); - typedef FT_Error (*FTDriver_setCharSizes) ( FT_Size size, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ); + typedef FT_Error + (*FTDriver_setCharSizes)( FT_Size size, + FT_F26Dot6 char_width, + FT_F26Dot6 char_height, + FT_UInt horz_resolution, + FT_UInt vert_resolution ); - typedef FT_Error (*FTDriver_setPixelSizes)( FT_Size size, - FT_UInt pixel_width, - FT_UInt pixel_height ); + typedef FT_Error + (*FTDriver_setPixelSizes)( FT_Size size, + FT_UInt pixel_width, + FT_UInt pixel_height ); - typedef FT_Error (*FTDriver_loadGlyph) ( FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int load_flags ); + typedef FT_Error + (*FTDriver_loadGlyph)( FT_GlyphSlot slot, + FT_Size size, + FT_UInt glyph_index, + FT_Int load_flags ); - typedef FT_UInt (*FTDriver_getCharIndex) ( FT_CharMap charmap, - FT_Long charcode ); + typedef FT_UInt + (*FTDriver_getCharIndex)( FT_CharMap charmap, + FT_Long charcode ); - typedef FT_Error (*FTDriver_getKerning) ( FT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_Vector* kerning ); + typedef FT_Error + (*FTDriver_getKerning)( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_Vector* kerning ); - typedef FT_Error (*FTDriver_attachFile) ( FT_Face face, - FT_Stream stream ); + typedef FT_Error + (*FTDriver_attachFile)( FT_Face face, + FT_Stream stream ); - typedef FT_Error (*FTDriver_getAdvances) ( FT_Face face, - FT_UInt first, - FT_UInt count, - FT_Bool vertical, - FT_UShort* advances ); + typedef FT_Error + (*FTDriver_getAdvances)( FT_Face face, + FT_UInt first, + FT_UInt count, + FT_Bool vertical, + FT_UShort* advances ); /*************************************************************************/ Index: xc/extras/freetype2/include/freetype/internal/ftextend.h diff -u xc/extras/freetype2/include/freetype/internal/ftextend.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/ftextend.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/internal/ftextend.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/ftextend.h Sun Dec 16 12:49:23 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType extensions implementation (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -59,8 +59,9 @@ /* data, as the finalizer will get called later by the function's */ /* caller. */ /* */ - typedef FT_Error (*FT_Extension_Initializer)( void* ext, - FT_Face face ); + typedef FT_Error + (*FT_Extension_Initializer)( void* ext, + FT_Face face ); /*************************************************************************/ @@ -80,8 +81,9 @@ /* face :: A handle to the source face object the extension is */ /* associated with. */ /* */ - typedef void (*FT_Extension_Finalizer)( void* ext, - FT_Face face ); + typedef void + (*FT_Extension_Finalizer)( void* ext, + FT_Face face ); /*************************************************************************/ @@ -145,30 +147,31 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_Register_Extension( FT_Driver driver, - FT_Extension_Class* clazz ); + FT_EXPORT( FT_Error ) + FT_Register_Extension( FT_Driver driver, + FT_Extension_Class* clazz ); #ifdef FT_CONFIG_OPTION_EXTEND_ENGINE /* Initialize the extension component */ - FT_LOCAL - FT_Error FT_Init_Extensions( FT_Library library ); + FT_LOCAL FT_Error + FT_Init_Extensions( FT_Library library ); /* Finalize the extension component */ - FT_LOCAL - FT_Error FT_Done_Extensions( FT_Library library ); + FT_LOCAL FT_Error + FT_Done_Extensions( FT_Library library ); /* Create an extension within a face object. Called by the */ /* face object constructor. */ - FT_LOCAL - FT_Error FT_Create_Extensions( FT_Face face ); + FT_LOCAL FT_Error + FT_Create_Extensions( FT_Face face ); /* Destroy all extensions within a face object. Called by the */ /* face object destructor. */ - FT_LOCAL - FT_Error FT_Destroy_Extensions( FT_Face face ); + FT_LOCAL FT_Error + FT_Destroy_Extensions( FT_Face face ); #endif @@ -194,9 +197,10 @@ /* <Return> */ /* A generic pointer to the extension block. */ /* */ - FT_EXPORT( void* ) FT_Get_Extension( FT_Face face, - const char* extension_id, - void** extension_interface ); + FT_EXPORT( void* ) + FT_Get_Extension( FT_Face face, + const char* extension_id, + void** extension_interface ); FT_END_HEADER Index: xc/extras/freetype2/include/freetype/internal/ftmemory.h diff -u xc/extras/freetype2/include/freetype/internal/ftmemory.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/ftmemory.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/internal/ftmemory.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/ftmemory.h Mon Jan 14 11:52:06 2002 @@ -4,7 +4,7 @@ /* */ /* The FreeType memory management macros (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -55,7 +55,32 @@ /*************************************************************************/ /*************************************************************************/ +#ifdef FT_DEBUG_MEMORY + FT_BASE( FT_Error ) + FT_Alloc_Debug( FT_Memory memory, + FT_Long size, + void* *P, + const char* file_name, + FT_Long line_no ); + + FT_BASE( FT_Error ) + FT_Realloc_Debug( FT_Memory memory, + FT_Long current, + FT_Long size, + void* *P, + const char* file_name, + FT_Long line_no ); + + FT_BASE( void ) + FT_Free_Debug( FT_Memory memory, + FT_Pointer block, + const char* file_name, + FT_Long line_no ); + +#endif + + /*************************************************************************/ /* */ /* <Function> */ @@ -78,9 +103,10 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_BASE( FT_Error ) FT_Alloc( FT_Memory memory, - FT_Long size, - void* *P ); + FT_BASE( FT_Error ) + FT_Alloc( FT_Memory memory, + FT_Long size, + void* *P ); /*************************************************************************/ @@ -111,10 +137,11 @@ /* All callers of FT_Realloc() _must_ provide the current block size */ /* as well as the new one. */ /* */ - FT_BASE( FT_Error ) FT_Realloc( FT_Memory memory, - FT_Long current, - FT_Long size, - void** P ); + FT_BASE( FT_Error ) + FT_Realloc( FT_Memory memory, + FT_Long current, + FT_Long size, + void** P ); /*************************************************************************/ @@ -140,16 +167,16 @@ /* This is a strong convention within all of FreeType and its */ /* drivers. */ /* */ - FT_BASE( void ) FT_Free( FT_Memory memory, - void** P ); - + FT_BASE( void ) + FT_Free( FT_Memory memory, + void** P ); /* This `#include' is needed by the MEM_xxx() macros; it should be */ /* available on all platforms we know of. */ #include <string.h> -#define MEM_Set( dest, byte, count ) memset( dest, byte, count ) +#define MEM_Set( dest, byte, count ) memset( dest, byte, count ) #define MEM_Copy( dest, source, count ) memcpy( dest, source, count ) @@ -169,6 +196,31 @@ /* ALLOC_ARRAY() now use an implicit variable, `memory'. It must be */ /* defined at all locations where a memory operation is queried. */ /* */ + +#ifdef FT_DEBUG_MEMORY + +#define MEM_Alloc( _pointer_, _size_ ) \ + FT_Alloc_Debug( memory, _size_, \ + (void**)&(_pointer_), __FILE__, __LINE__ ) + +#define MEM_Alloc_Array( _pointer_, _count_, _type_ ) \ + FT_Alloc_Debug( memory, (_count_)*sizeof ( _type_ ), \ + (void**)&(_pointer_), __FILE__, __LINE__ ) + +#define MEM_Realloc( _pointer_, _current_, _size_ ) \ + FT_Realloc_Debug( memory, _current_, _size_, \ + (void**)&(_pointer_), __FILE__, __LINE__ ) + +#define MEM_Realloc_Array( _pointer_, _current_, _new_, _type_ ) \ + FT_Realloc_Debug( memory, (_current_)*sizeof ( _type_ ), \ + (_new_)*sizeof ( _type_ ), \ + (void**)&(_pointer_), __FILE__, __LINE__ ) + +#define MEM_Free( _pointer_ ) \ + FT_Free_Debug( memory, (void**)&(_pointer_), __FILE__, __LINE__ ) + +#else /* !FT_DEBUG_MEMORY */ + #define MEM_Alloc( _pointer_, _size_ ) \ FT_Alloc( memory, _size_, (void**)&(_pointer_) ) @@ -183,22 +235,29 @@ FT_Realloc( memory, (_current_)*sizeof ( _type_ ), \ (_new_)*sizeof ( _type_ ), (void**)&(_pointer_) ) +#define MEM_Free( _pointer_ ) \ + FT_Free( memory, (void**)&(_pointer_) ) + +#endif /* !FT_DEBUG_MEMORY */ + + #define ALLOC( _pointer_, _size_ ) \ FT_SET_ERROR( MEM_Alloc( _pointer_, _size_ ) ) #define REALLOC( _pointer_, _current_, _size_ ) \ FT_SET_ERROR( MEM_Realloc( _pointer_, _current_, _size_ ) ) -#define ALLOC_ARRAY( _pointer_, _count_, _type_ ) \ - FT_SET_ERROR( MEM_Alloc( _pointer_, \ - (_count_)*sizeof ( _type_ ) ) ) - -#define REALLOC_ARRAY( _pointer_, _current_, _count_, _type_ ) \ - FT_SET_ERROR( MEM_Realloc( _pointer_, \ - (_current_)*sizeof ( _type_ ), \ - (_count_)*sizeof ( _type_ ) ) ) +#define ALLOC_ARRAY( _pointer_, _count_, _type_ ) \ + FT_SET_ERROR( MEM_Alloc( _pointer_, \ + (_count_)*sizeof ( _type_ ) ) ) + +#define REALLOC_ARRAY( _pointer_, _current_, _count_, _type_ ) \ + FT_SET_ERROR( MEM_Realloc( _pointer_, \ + (_current_)*sizeof ( _type_ ), \ + (_count_)*sizeof ( _type_ ) ) ) -#define FREE( _pointer_ ) FT_Free( memory, (void**)&(_pointer_) ) +#define FREE( _pointer_ ) \ + MEM_Free( _pointer_ ) FT_END_HEADER Index: xc/extras/freetype2/include/freetype/internal/ftobjs.h diff -u xc/extras/freetype2/include/freetype/internal/ftobjs.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/ftobjs.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/internal/ftobjs.h:1.1.1.2 Tue May 15 23:45:57 2001 +++ xc/extras/freetype2/include/freetype/internal/ftobjs.h Mon Jan 14 11:52:07 2002 @@ -4,7 +4,7 @@ /* */ /* The FreeType private base classes (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -29,6 +29,7 @@ #include <ft2build.h> #include FT_RENDER_H +#include FT_SIZES_H #include FT_INTERNAL_MEMORY_H #include FT_INTERNAL_DRIVER_H #include FT_INTERNAL_AUTOHINT_H @@ -128,15 +129,19 @@ /* transform_flags :: Some flags used to classify the transform. */ /* Only used by the convenience functions. */ /* */ + /* postscript_name :: Postscript font name for this face. */ + /* */ typedef struct FT_Face_InternalRec_ { - FT_UShort max_points; - FT_Short max_contours; + FT_UShort max_points; + FT_Short max_contours; - FT_Matrix transform_matrix; - FT_Vector transform_delta; - FT_Int transform_flags; - + FT_Matrix transform_matrix; + FT_Vector transform_delta; + FT_Int transform_flags; + + const char* postscript_name; + } FT_Face_InternalRec; @@ -165,16 +170,20 @@ /* */ /* glyph_delta :: The 2d translation vector corresponding to */ /* the glyph transformation, if necessary. */ + /* */ + /* glyph_hints :: Format-specific glyph hints management. */ /* */ - typedef struct FT_Slot_InternalRec_ + typedef struct FT_Slot_InternalRec_ { - FT_GlyphLoader* loader; - FT_Bool glyph_transformed; - FT_Matrix glyph_matrix; - FT_Vector glyph_delta; + FT_GlyphLoader* loader; + FT_Bool glyph_transformed; + FT_Matrix glyph_matrix; + FT_Vector glyph_delta; + void* glyph_hints; } FT_GlyphSlot_InternalRec; + /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ @@ -264,8 +273,9 @@ /* You should better be familiar with FreeType internals to know */ /* which module to look for, and what its interface is :-) */ /* */ - FT_BASE( const void* ) FT_Get_Module_Interface( FT_Library library, - const char* mod_name ); + FT_BASE( const void* ) + FT_Get_Module_Interface( FT_Library library, + const char* mod_name ); /*************************************************************************/ @@ -297,47 +307,6 @@ #define FT_FACE_SIZE( x ) FT_FACE( x )->size - /* this must be kept exported -- it is used by the cache manager */ - /* even though it shouldn't be considered public for now */ - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Size */ - /* */ - /* <Description> */ - /* Creates a new size object from a given face object. */ - /* */ - /* <Input> */ - /* face :: A handle to a parent face object. */ - /* */ - /* <Output> */ - /* asize :: A handle to a new size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) FT_New_Size( FT_Face face, - FT_Size* size ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Size */ - /* */ - /* <Description> */ - /* Discards a given size object. */ - /* */ - /* <Input> */ - /* size :: A handle to a target size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) FT_Done_Size( FT_Size size ); - - /*************************************************************************/ /* */ /* <Function> */ @@ -358,8 +327,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_BASE( FT_Error ) FT_New_GlyphSlot( FT_Face face, - FT_GlyphSlot *aslot ); + FT_BASE( FT_Error ) + FT_New_GlyphSlot( FT_Face face, + FT_GlyphSlot *aslot ); /*************************************************************************/ @@ -375,7 +345,8 @@ /* <Input> */ /* slot :: A handle to a target glyph slot. */ /* */ - FT_BASE( void ) FT_Done_GlyphSlot( FT_GlyphSlot slot ); + FT_BASE( void ) + FT_Done_GlyphSlot( FT_GlyphSlot slot ); /*************************************************************************/ @@ -442,33 +413,40 @@ }; - FT_BASE( FT_Error ) FT_GlyphLoader_New( FT_Memory memory, - FT_GlyphLoader* *aloader ); + FT_BASE( FT_Error ) + FT_GlyphLoader_New( FT_Memory memory, + FT_GlyphLoader* *aloader ); - FT_BASE( FT_Error ) FT_GlyphLoader_Create_Extra( - FT_GlyphLoader* loader ); + FT_BASE( FT_Error ) + FT_GlyphLoader_Create_Extra( FT_GlyphLoader* loader ); - FT_BASE( void ) FT_GlyphLoader_Done( FT_GlyphLoader* loader ); + FT_BASE( void ) + FT_GlyphLoader_Done( FT_GlyphLoader* loader ); - FT_BASE( void ) FT_GlyphLoader_Reset( FT_GlyphLoader* loader ); + FT_BASE( void ) + FT_GlyphLoader_Reset( FT_GlyphLoader* loader ); - FT_BASE( void ) FT_GlyphLoader_Rewind( FT_GlyphLoader* loader ); + FT_BASE( void ) + FT_GlyphLoader_Rewind( FT_GlyphLoader* loader ); - FT_BASE( FT_Error ) FT_GlyphLoader_Check_Points( - FT_GlyphLoader* loader, - FT_UInt n_points, - FT_UInt n_contours ); + FT_BASE( FT_Error ) + FT_GlyphLoader_Check_Points( FT_GlyphLoader* loader, + FT_UInt n_points, + FT_UInt n_contours ); - FT_BASE( FT_Error ) FT_GlyphLoader_Check_Subglyphs( - FT_GlyphLoader* loader, - FT_UInt n_subs ); + FT_BASE( FT_Error ) + FT_GlyphLoader_Check_Subglyphs( FT_GlyphLoader* loader, + FT_UInt n_subs ); - FT_BASE( void ) FT_GlyphLoader_Prepare( FT_GlyphLoader* loader ); + FT_BASE( void ) + FT_GlyphLoader_Prepare( FT_GlyphLoader* loader ); - FT_BASE( void ) FT_GlyphLoader_Add( FT_GlyphLoader* loader ); + FT_BASE( void ) + FT_GlyphLoader_Add( FT_GlyphLoader* loader ); - FT_BASE( FT_Error ) FT_GlyphLoader_Copy_Points( FT_GlyphLoader* target, - FT_GlyphLoader* source ); + FT_BASE( FT_Error ) + FT_GlyphLoader_Copy_Points( FT_GlyphLoader* target, + FT_GlyphLoader* source ); /*************************************************************************/ @@ -647,18 +625,28 @@ } FT_LibraryRec; - FT_BASE( FT_Renderer ) FT_Lookup_Renderer( FT_Library library, - FT_Glyph_Format format, - FT_ListNode* node ); - - FT_BASE( FT_Error ) FT_Render_Glyph_Internal( FT_Library library, - FT_GlyphSlot slot, - FT_UInt render_mode ); - - typedef FT_Error (*FT_Glyph_Name_Requester)( FT_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ); + FT_BASE( FT_Renderer ) + FT_Lookup_Renderer( FT_Library library, + FT_Glyph_Format format, + FT_ListNode* node ); + + FT_BASE( FT_Error ) + FT_Render_Glyph_Internal( FT_Library library, + FT_GlyphSlot slot, + FT_UInt render_mode ); + + typedef const char* + (*FT_PSName_Requester)( FT_Face face ); + + typedef FT_Error + (*FT_Glyph_Name_Requester)( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + typedef FT_UInt + (*FT_Name_Index_Requester)( FT_Face face, + FT_String* glyph_name ); #ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM @@ -680,8 +668,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_EXPORT( FT_Error ) FT_New_Stream( const char* filepathname, - FT_Stream astream ); + FT_EXPORT( FT_Error ) + FT_New_Stream( const char* filepathname, + FT_Stream astream ); /*************************************************************************/ @@ -695,7 +684,8 @@ /* <Input> */ /* stream :: The stream to be closed and destroyed. */ /* */ - FT_EXPORT( void ) FT_Done_Stream( FT_Stream stream ); + FT_EXPORT( void ) + FT_Done_Stream( FT_Stream stream ); /*************************************************************************/ @@ -709,7 +699,8 @@ /* <Return> */ /* A pointer to the new memory object. 0 in case of error. */ /* */ - FT_EXPORT( FT_Memory ) FT_New_Memory( void ); + FT_EXPORT( FT_Memory ) + FT_New_Memory( void ); /*************************************************************************/ @@ -723,7 +714,8 @@ /* <Input> */ /* memory :: A handle to the memory manager. */ /* */ - FT_EXPORT( void ) FT_Done_Memory( FT_Memory memory ); + FT_EXPORT( void ) + FT_Done_Memory( FT_Memory memory ); #endif /* !FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM */ Index: xc/extras/freetype2/include/freetype/internal/ftstream.h diff -u xc/extras/freetype2/include/freetype/internal/ftstream.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/ftstream.h:1.1.1.5 --- xc/extras/freetype2/include/freetype/internal/ftstream.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/ftstream.h Mon Jan 14 11:52:07 2002 @@ -4,7 +4,7 @@ /* */ /* Stream handling(specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -92,10 +92,10 @@ /* calling the FT_FRAME_START() macro. */ #define FT_FIELD_SIZE( f ) \ (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f ) - + #define FT_FIELD_SIZE_DELTA( f ) \ (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f[0] ) - + #define FT_FIELD_OFFSET( f ) \ (FT_UShort)( offsetof( FT_STRUCTURE, f ) ) @@ -143,66 +143,111 @@ /* integer extraction macros -- the `buffer' parameter must ALWAYS be of */ /* type `char*' or equivalent (1-byte elements). */ /* */ -#define NEXT_Char( buffer ) \ + +#define FT_GET_SHORT_BE( p ) \ + ((FT_Int16)( ( (FT_Int16)(FT_Char)(p)[0] << 8 ) | \ + (FT_Int16)(FT_Byte)(p)[1] ) ) + +#define FT_GET_USHORT_BE( p ) \ + ((FT_Int16)( ( (FT_UInt16)(FT_Byte)(p)[0] << 8 ) | \ + (FT_UInt16)(FT_Byte)(p)[1] ) ) + +#define FT_GET_OFF3_BE( p ) \ + ( (FT_Int32) ( ( (FT_Int32)(FT_Char)(p)[0] << 16 ) | \ + ( (FT_Int32)(FT_Byte)(p)[1] << 8 ) | \ + (FT_Int32)(FT_Byte)(p)[2] ) ) + +#define FT_GET_UOFF3_BE( p ) \ + ( (FT_Int32) ( ( (FT_UInt32)(FT_Byte)(p)[0] << 16 ) | \ + ( (FT_UInt32)(FT_Byte)(p)[1] << 8 ) | \ + (FT_UInt32)(FT_Byte)(p)[2] ) ) + +#define FT_GET_LONG_BE( p ) \ + ( (FT_Int32) ( ( (FT_Int32)(FT_Char)(p)[0] << 24 ) | \ + ( (FT_Int32)(FT_Byte)(p)[1] << 16 ) | \ + ( (FT_Int32)(FT_Byte)(p)[2] << 8 ) | \ + (FT_Int32)(FT_Byte)(p)[3] ) ) + +#define FT_GET_ULONG_BE( p ) \ + ( (FT_Int32) ( ( (FT_UInt32)(FT_Byte)(p)[0] << 24 ) | \ + ( (FT_UInt32)(FT_Byte)(p)[1] << 16 ) | \ + ( (FT_UInt32)(FT_Byte)(p)[2] << 8 ) | \ + (FT_UInt32)(FT_Byte)(p)[3] ) ) + +#define FT_GET_SHORT_LE( p ) \ + ((FT_Int16)( ( (FT_Int16)(FT_Char)(p)[1] << 8 ) | \ + (FT_Int16)(FT_Byte)(p)[0] ) ) + +#define FT_GET_USHORT_LE( p ) \ + ((FT_Int16)( ( (FT_UInt16)(FT_Byte)(p)[1] << 8 ) | \ + (FT_UInt16)(FT_Byte)(p)[0] ) ) + +#define FT_GET_OFF3_LE( p ) \ + ( (FT_Int32) ( ( (FT_Int32)(FT_Char)(p)[2] << 16 ) | \ + ( (FT_Int32)(FT_Byte)(p)[1] << 8 ) | \ + (FT_Int32)(FT_Byte)(p)[0] ) ) + +#define FT_GET_UOFF3_LE( p ) \ + ( (FT_Int32) ( ( (FT_UInt32)(FT_Byte)(p)[2] << 16 ) | \ + ( (FT_UInt32)(FT_Byte)(p)[1] << 8 ) | \ + (FT_UInt32)(FT_Byte)(p)[0] ) ) + +#define FT_GET_LONG_LE( p ) \ + ( (FT_Int32) ( ( (FT_Int32)(FT_Char)(p)[3] << 24 ) | \ + ( (FT_Int32)(FT_Byte)(p)[2] << 16 ) | \ + ( (FT_Int32)(FT_Byte)(p)[1] << 8 ) | \ + (FT_Int32)(FT_Byte)(p)[0] ) ) + +#define FT_GET_ULONG_LE( p ) \ + ( (FT_Int32) ( ( (FT_UInt32)(FT_Byte)(p)[3] << 24 ) | \ + ( (FT_UInt32)(FT_Byte)(p)[2] << 16 ) | \ + ( (FT_UInt32)(FT_Byte)(p)[1] << 8 ) | \ + (FT_UInt32)(FT_Byte)(p)[0] ) ) + + +#define NEXT_Char( buffer ) \ ( (signed char)*buffer++ ) + #define NEXT_Byte( buffer ) \ ( (unsigned char)*buffer++ ) + +#define NEXT_Short( buffer ) \ + ( (short)( buffer += 2, FT_GET_SHORT_BE( buffer - 2 ) ) ) + +#define NEXT_UShort( buffer ) \ + ( (unsigned short)( buffer += 2, FT_GET_USHORT_BE( buffer - 2 ) ) ) + +#define NEXT_Offset( buffer ) \ + ( (long)( buffer += 3, FT_GET_OFF3_BE( buffer - 3 ) ) ) + +#define NEXT_UOffset( buffer ) \ + ( (unsigned long)( buffer += 3, FT_GET_UOFF3_BE( buffer - 3 ) ) ) + +#define NEXT_Long( buffer ) \ + ( (long)( buffer += 4, FT_GET_LONG_BE( buffer - 4 ) ) ) + +#define NEXT_ULong( buffer ) \ + ( (unsigned long)( buffer += 4, FT_GET_ULONG_BE( buffer - 4 ) ) ) + + +#define NEXT_ShortLE( buffer ) \ + ( (short)( buffer += 2, FT_GET_SHORT_LE( buffer - 2 ) ) ) + +#define NEXT_UShortLE( buffer ) \ + ( (unsigned short)( buffer += 2, FT_GET_USHORT_LE( buffer - 2 ) ) ) + +#define NEXT_OffsetLE( buffer ) \ + ( (long)( buffer += 3, FT_GET_OFF3_LE( buffer - 3 ) ) ) + +#define NEXT_UOffsetLE( buffer ) \ + ( (unsigned long)( buffer += 3, FT_GET_UOFF3_LE( buffer - 3 ) ) ) + -#define NEXT_Short( buffer ) \ - ( buffer += 2, \ - ( (short)( (signed char)buffer[-2] << 8 ) | \ - (unsigned char)buffer[-1] ) ) - -#define NEXT_UShort( buffer ) \ - ( (unsigned short)NEXT_Short( buffer ) ) - -#define NEXT_Offset( buffer ) \ - ( buffer += 3, \ - ( ( (long)(signed char)buffer[-3] << 16 ) | \ - ( (long)(unsigned char)buffer[-2] << 8 ) | \ - (long)(unsigned char)buffer[-1] ) ) - -#define NEXT_UOffset( buffer ) \ - ( (unsigned long)NEXT_Offset( buffer ) ) - -#define NEXT_Long( buffer ) \ - ( buffer += 4, \ - ( ( (long)(signed char)buffer[-4] << 24 ) | \ - ( (long)(unsigned char)buffer[-3] << 16 ) | \ - ( (long)(unsigned char)buffer[-2] << 8 ) | \ - (long)(unsigned char)buffer[-1] ) ) - -#define NEXT_ULong( buffer ) \ - ( (unsigned long)NEXT_Long( buffer ) ) - - -#define NEXT_ShortLE( buffer ) \ - ( buffer += 2, \ - ( (short)( (signed char)buffer[-1] << 8 ) | \ - (unsigned char)buffer[-2] ) ) - -#define NEXT_UShortLE( buffer ) \ - ( (unsigned short)NEXT_ShortLE( buffer ) ) - -#define NEXT_OffsetLE( buffer ) \ - ( buffer += 3, \ - ( ( (long)(signed char)buffer[-1] << 16 ) | \ - ( (long)(unsigned char)buffer[-2] << 8 ) | \ - (long)(unsigned char)buffer[-3] ) ) - -#define NEXT_UOffsetLE( buffer ) \ - ( (unsigned long)NEXT_OffsetLE( buffer ) ) - - -#define NEXT_LongLE( buffer ) \ - ( buffer += 4, \ - ( ( (long)(signed char)buffer[-1] << 24 ) | \ - ( (long)(unsigned char)buffer[-2] << 16 ) | \ - ( (long)(unsigned char)buffer[-3] << 8 ) | \ - (long)(unsigned char)buffer[-4] ) ) +#define NEXT_LongLE( buffer ) \ + ( (long)( buffer += 4, FT_GET_LONG_LE( buffer - 4 ) ) ) -#define NEXT_ULongLE( buffer ) \ - ( (unsigned long)NEXT_LongLE( buffer ) ) +#define NEXT_ULongLE( buffer ) \ + ( (unsigned long)( buffer += 4, FT_GET_ULONG_LE( buffer - 4 ) ) ) /*************************************************************************/ @@ -223,8 +268,8 @@ #define GET_ShortLE() FT_GET_MACRO( FT_Get_ShortLE, FT_Short ) #define GET_UShortLE() FT_GET_MACRO( FT_Get_ShortLE, FT_UShort ) -#define GET_LongLE() FT_GET_MACRO( FT_Get_LongLE, FT_Short ) -#define GET_ULongLE() FT_GET_MACRO( FT_Get_LongLE, FT_Short ) +#define GET_LongLE() FT_GET_MACRO( FT_Get_LongLE, FT_Long ) +#define GET_ULongLE() FT_GET_MACRO( FT_Get_LongLE, FT_ULong ) #define FT_READ_MACRO( func, type, var ) \ ( var = (type)func( stream, &error ), \ @@ -245,75 +290,98 @@ #define READ_ULongLE( var ) FT_READ_MACRO( FT_Read_LongLE, FT_ULong, var ) - FT_BASE( void ) FT_New_Memory_Stream( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Stream stream ); + FT_BASE( void ) + FT_New_Memory_Stream( FT_Library library, + FT_Byte* base, + FT_ULong size, + FT_Stream stream ); - FT_BASE( FT_Error ) FT_Seek_Stream( FT_Stream stream, - FT_ULong pos ); + FT_BASE( FT_Error ) + FT_Seek_Stream( FT_Stream stream, + FT_ULong pos ); - FT_BASE( FT_Error ) FT_Skip_Stream( FT_Stream stream, - FT_Long distance ); + FT_BASE( FT_Error ) + FT_Skip_Stream( FT_Stream stream, + FT_Long distance ); - FT_BASE( FT_Long ) FT_Stream_Pos( FT_Stream stream ); + FT_BASE( FT_Long ) + FT_Stream_Pos( FT_Stream stream ); - FT_BASE( FT_Error ) FT_Read_Stream( FT_Stream stream, - FT_Byte* buffer, - FT_ULong count ); + FT_BASE( FT_Error ) + FT_Read_Stream( FT_Stream stream, + FT_Byte* buffer, + FT_ULong count ); - FT_BASE( FT_Error ) FT_Read_Stream_At( FT_Stream stream, - FT_ULong pos, - FT_Byte* buffer, - FT_ULong count ); + FT_BASE( FT_Error ) + FT_Read_Stream_At( FT_Stream stream, + FT_ULong pos, + FT_Byte* buffer, + FT_ULong count ); - FT_BASE( FT_Error ) FT_Access_Frame( FT_Stream stream, - FT_ULong count ); + FT_BASE( FT_Error ) + FT_Access_Frame( FT_Stream stream, + FT_ULong count ); - FT_BASE( void ) FT_Forget_Frame( FT_Stream stream ); + FT_BASE( void ) + FT_Forget_Frame( FT_Stream stream ); - FT_BASE( FT_Error ) FT_Extract_Frame( FT_Stream stream, - FT_ULong count, - FT_Byte** pbytes ); + FT_BASE( FT_Error ) + FT_Extract_Frame( FT_Stream stream, + FT_ULong count, + FT_Byte** pbytes ); - FT_BASE( void ) FT_Release_Frame( FT_Stream stream, - FT_Byte** pbytes ); + FT_BASE( void ) + FT_Release_Frame( FT_Stream stream, + FT_Byte** pbytes ); - FT_BASE( FT_Char ) FT_Get_Char( FT_Stream stream ); + FT_BASE( FT_Char ) + FT_Get_Char( FT_Stream stream ); - FT_BASE( FT_Short ) FT_Get_Short( FT_Stream stream ); + FT_BASE( FT_Short ) + FT_Get_Short( FT_Stream stream ); - FT_BASE( FT_Long ) FT_Get_Offset( FT_Stream stream ); + FT_BASE( FT_Long ) + FT_Get_Offset( FT_Stream stream ); - FT_BASE( FT_Long ) FT_Get_Long( FT_Stream stream ); + FT_BASE( FT_Long ) + FT_Get_Long( FT_Stream stream ); - FT_BASE( FT_Short ) FT_Get_ShortLE( FT_Stream stream ); + FT_BASE( FT_Short ) + FT_Get_ShortLE( FT_Stream stream ); - FT_BASE( FT_Long ) FT_Get_LongLE( FT_Stream stream ); + FT_BASE( FT_Long ) + FT_Get_LongLE( FT_Stream stream ); - FT_BASE( FT_Char ) FT_Read_Char( FT_Stream stream, - FT_Error* error ); + FT_BASE( FT_Char ) + FT_Read_Char( FT_Stream stream, + FT_Error* error ); - FT_BASE( FT_Short ) FT_Read_Short( FT_Stream stream, - FT_Error* error ); + FT_BASE( FT_Short ) + FT_Read_Short( FT_Stream stream, + FT_Error* error ); - FT_BASE( FT_Long ) FT_Read_Offset( FT_Stream stream, - FT_Error* error ); + FT_BASE( FT_Long ) + FT_Read_Offset( FT_Stream stream, + FT_Error* error ); - FT_BASE( FT_Long ) FT_Read_Long( FT_Stream stream, - FT_Error* error ); + FT_BASE( FT_Long ) + FT_Read_Long( FT_Stream stream, + FT_Error* error ); - FT_BASE( FT_Short ) FT_Read_ShortLE( FT_Stream stream, - FT_Error* error ); + FT_BASE( FT_Short ) + FT_Read_ShortLE( FT_Stream stream, + FT_Error* error ); - FT_BASE( FT_Long ) FT_Read_LongLE( FT_Stream stream, - FT_Error* error ); + FT_BASE( FT_Long ) + FT_Read_LongLE( FT_Stream stream, + FT_Error* error ); - FT_BASE( FT_Error ) FT_Read_Fields( FT_Stream stream, - const FT_Frame_Field* fields, - void* structure ); + FT_BASE( FT_Error ) + FT_Read_Fields( FT_Stream stream, + const FT_Frame_Field* fields, + void* structure ); #define USE_Stream( resource, stream ) \ Index: xc/extras/freetype2/include/freetype/internal/internal.h diff -u xc/extras/freetype2/include/freetype/internal/internal.h:1.3 xc/extras/freetype2/include/freetype/internal/internal.h:1.7 --- xc/extras/freetype2/include/freetype/internal/internal.h:1.3 Tue May 15 23:56:09 2001 +++ xc/extras/freetype2/include/freetype/internal/internal.h Mon Jan 14 12:00:59 2002 @@ -4,7 +4,7 @@ /* */ /* Internal header files (specification only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -14,8 +14,8 @@ /* understand and accept it fully. */ /* */ /***************************************************************************/ +/* $XFree86: xc/extras/freetype2/include/freetype/internal/internal.h,v 1.7 2002/01/14 17:00:59 keithp Exp $ */ - /*************************************************************************/ /* */ /* This file is automatically included by `ft2build.h'. */ @@ -23,32 +23,29 @@ /* */ /*************************************************************************/ - -#define FT_INTERNAL_OBJECTS_H <freetype/internal/ftobjs.h> -#define FT_INTERNAL_STREAM_H <freetype/internal/ftstream.h> -#define FT_INTERNAL_MEMORY_H <freetype/internal/ftmemory.h> -#define FT_INTERNAL_EXTENSION_H <freetype/internal/ftextend.h> -#define FT_INTERNAL_DEBUG_H <freetype/internal/ftdebug.h> -#define FT_INTERNAL_CALC_H <freetype/internal/ftcalc.h> -#define FT_INTERNAL_DRIVER_H <freetype/internal/ftdriver.h> -#define FT_INTERNAL_EXTEND_H <freetype/internal/ftextend.h> - -#define FT_INTERNAL_SFNT_H <freetype/internal/sfnt.h> - -#define FT_INTERNAL_TRUETYPE_TYPES_H <freetype/internal/tttypes.h> -#define FT_INTERNAL_TRUETYPE_ERRORS_H <freetype/internal/tterrors.h> - -#define FT_INTERNAL_TYPE1_ERRORS_H <freetype/internal/t1errors.h> -#define FT_INTERNAL_TYPE1_TYPES_H <freetype/internal/t1types.h> - -#define FT_INTERNAL_CFF_ERRORS_H <freetype/internal/cfferrs.h> -#define FT_INTERNAL_CFF_TYPES_H <freetype/internal/cfftypes.h> -#define FT_INTERNAL_POSTSCRIPT_NAMES_H <freetype/internal/psnames.h> -#define FT_INTERNAL_POSTSCRIPT_AUX_H <freetype/internal/psaux.h> +#define FT_INTERNAL_OBJECTS_H <freetype/internal/ftobjs.h> +#define FT_INTERNAL_STREAM_H <freetype/internal/ftstream.h> +#define FT_INTERNAL_MEMORY_H <freetype/internal/ftmemory.h> +#define FT_INTERNAL_EXTENSION_H <freetype/internal/ftextend.h> +#define FT_INTERNAL_DEBUG_H <freetype/internal/ftdebug.h> +#define FT_INTERNAL_CALC_H <freetype/internal/ftcalc.h> +#define FT_INTERNAL_DRIVER_H <freetype/internal/ftdriver.h> +#define FT_INTERNAL_EXTEND_H <freetype/internal/ftextend.h> + +#define FT_INTERNAL_SFNT_H <freetype/internal/sfnt.h> + +#define FT_INTERNAL_TRUETYPE_TYPES_H <freetype/internal/tttypes.h> +#define FT_INTERNAL_TYPE1_TYPES_H <freetype/internal/t1types.h> +#define FT_INTERNAL_CFF_TYPES_H <freetype/internal/cfftypes.h> +#define FT_INTERNAL_FNT_TYPES_H <freetype/internal/fnttypes.h> + +#define FT_INTERNAL_POSTSCRIPT_NAMES_H <freetype/internal/psnames.h> +#define FT_INTERNAL_POSTSCRIPT_AUX_H <freetype/internal/psaux.h> +#define FT_INTERNAL_POSTSCRIPT_HINTS_H <freetype/internal/pshints.h> +#define FT_INTERNAL_POSTSCRIPT_GLOBALS_H <freetype/internal/psglobal.h> -#define FT_INTERNAL_AUTOHINT_H <freetype/internal/autohint.h> -#define FT_INTERNAL_FNT_TYPES_H <freetype/internal/fnttypes.h> +#define FT_INTERNAL_AUTOHINT_H <freetype/internal/autohint.h> /* END */ Index: xc/extras/freetype2/include/freetype/internal/pcftypes.h diff -u xc/extras/freetype2/include/freetype/internal/pcftypes.h:1.1.1.1 xc/extras/freetype2/include/freetype/internal/pcftypes.h:1.1.1.2 --- xc/extras/freetype2/include/freetype/internal/pcftypes.h:1.1.1.1 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/pcftypes.h Sun Dec 16 12:49:24 2001 @@ -1,9 +1,9 @@ -/* pcftypes.h +/* pcftypes.h FreeType font driver for pcf fonts - Copyright (C) 2000 by - Francesco Zappa Nardelli + Copyright (C) 2000-2001 by + Francesco Zappa Nardelli Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -39,7 +39,7 @@ typedef struct PCF_Public_FaceRec_ { FT_FaceRec root; - + char* charset_encoding; char* charset_registry; Index: xc/extras/freetype2/include/freetype/internal/psaux.h diff -u xc/extras/freetype2/include/freetype/internal/psaux.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/psaux.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/internal/psaux.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/psaux.h Mon Jan 14 11:52:07 2002 @@ -5,7 +5,7 @@ /* Auxiliary functions and data structures related to PostScript fonts */ /* (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -60,18 +60,22 @@ /* */ typedef struct PS_Table_Funcs_ { - FT_Error (*init) ( PS_Table* table, - FT_Int count, - FT_Memory memory ); - - void (*done) ( PS_Table* table ); - - FT_Error (*add) ( PS_Table* table, - FT_Int index, - void* object, - FT_Int length ); + FT_Error + (*init)( PS_Table* table, + FT_Int count, + FT_Memory memory ); + + void + (*done)( PS_Table* table ); + + FT_Error + (*add)( PS_Table* table, + FT_Int index, + void* object, + FT_Int length ); - void (*release)( PS_Table* table ); + void + (*release)( PS_Table* table ); } PS_Table_Funcs; @@ -111,8 +115,8 @@ struct PS_Table_ { FT_Byte* block; /* current memory block */ - FT_Int cursor; /* current cursor in memory block */ - FT_Int capacity; /* current size of memory block */ + FT_Offset cursor; /* current cursor in memory block */ + FT_Offset capacity; /* current size of memory block */ FT_Long init; FT_Int max_elems; @@ -190,8 +194,9 @@ } T1_Field_Location; - typedef void (*T1_Field_Parser)( FT_Face face, - FT_Pointer parser ); + typedef void + (*T1_Field_Parser)( FT_Face face, + FT_Pointer parser ); /* structure type used to model object fields */ @@ -291,45 +296,57 @@ typedef struct T1_Parser_Funcs_ { - void (*init) ( T1_Parser* parser, - FT_Byte* base, - FT_Byte* limit, - FT_Memory memory ); - - void (*done) ( T1_Parser* parser ); - - void (*skip_spaces) ( T1_Parser* parser ); - void (*skip_alpha) ( T1_Parser* parser ); - - FT_Long (*to_int) ( T1_Parser* parser ); - FT_Fixed (*to_fixed) ( T1_Parser* parser, - FT_Int power_ten ); - FT_Int (*to_coord_array)( T1_Parser* parser, - FT_Int max_coords, - FT_Short* coords ); - FT_Int (*to_fixed_array)( T1_Parser* parser, - FT_Int max_values, - FT_Fixed* values, - FT_Int power_ten ); - - void (*to_token) ( T1_Parser* parser, - T1_Token* token ); - void (*to_token_array)( T1_Parser* parser, - T1_Token* tokens, - FT_UInt max_tokens, - FT_Int* pnum_tokens ); - - FT_Error (*load_field) ( T1_Parser* parser, - const T1_Field* field, - void** objects, - FT_UInt max_objects, - FT_ULong* pflags ); - - FT_Error (*load_field_table)( T1_Parser* parser, - const T1_Field* field, - void** objects, - FT_UInt max_objects, - FT_ULong* pflags ); + void + (*init)( T1_Parser* parser, + FT_Byte* base, + FT_Byte* limit, + FT_Memory memory ); + + void + (*done)( T1_Parser* parser ); + + void + (*skip_spaces)( T1_Parser* parser ); + void + (*skip_alpha)( T1_Parser* parser ); + + FT_Long + (*to_int)( T1_Parser* parser ); + FT_Fixed + (*to_fixed)( T1_Parser* parser, + FT_Int power_ten ); + FT_Int + (*to_coord_array)( T1_Parser* parser, + FT_Int max_coords, + FT_Short* coords ); + FT_Int + (*to_fixed_array)( T1_Parser* parser, + FT_Int max_values, + FT_Fixed* values, + FT_Int power_ten ); + + void + (*to_token)( T1_Parser* parser, + T1_Token* token ); + void + (*to_token_array)( T1_Parser* parser, + T1_Token* tokens, + FT_UInt max_tokens, + FT_Int* pnum_tokens ); + + FT_Error + (*load_field)( T1_Parser* parser, + const T1_Field* field, + void** objects, + FT_UInt max_objects, + FT_ULong* pflags ); + + FT_Error + (*load_field_table)( T1_Parser* parser, + const T1_Field* field, + void** objects, + FT_UInt max_objects, + FT_ULong* pflags ); } T1_Parser_Funcs; @@ -380,35 +397,44 @@ typedef struct T1_Builder_ T1_Builder; - typedef FT_Error (*T1_Builder_Check_Points_Func) ( T1_Builder* builder, - FT_Int count ); + typedef FT_Error + (*T1_Builder_Check_Points_Func)( T1_Builder* builder, + FT_Int count ); + + typedef void + (*T1_Builder_Add_Point_Func)( T1_Builder* builder, + FT_Pos x, + FT_Pos y, + FT_Byte flag ); + + typedef FT_Error + (*T1_Builder_Add_Point1_Func)( T1_Builder* builder, + FT_Pos x, + FT_Pos y ); + + typedef FT_Error + (*T1_Builder_Add_Contour_Func)( T1_Builder* builder ); + + typedef FT_Error + (*T1_Builder_Start_Point_Func)( T1_Builder* builder, + FT_Pos x, + FT_Pos y ); - typedef void (*T1_Builder_Add_Point_Func) ( T1_Builder* builder, - FT_Pos x, - FT_Pos y, - FT_Byte flag ); + typedef void + (*T1_Builder_Close_Contour_Func)( T1_Builder* builder ); - typedef FT_Error (*T1_Builder_Add_Point1_Func) ( T1_Builder* builder, - FT_Pos x, - FT_Pos y ); - typedef FT_Error (*T1_Builder_Add_Contour_Func) ( T1_Builder* builder ); - - typedef FT_Error (*T1_Builder_Start_Point_Func) ( T1_Builder* builder, - FT_Pos x, - FT_Pos y ); - - typedef void (*T1_Builder_Close_Contour_Func)( T1_Builder* builder ); - - typedef struct T1_Builder_Funcs_ { - void (*init)( T1_Builder* builder, - FT_Face face, - FT_Size size, - FT_GlyphSlot slot ); + void + (*init)( T1_Builder* builder, + FT_Face face, + FT_Size size, + FT_GlyphSlot slot, + FT_Bool hinting ); - void (*done)( T1_Builder* builder ); + void + (*done)( T1_Builder* builder ); T1_Builder_Check_Points_Func check_points; T1_Builder_Add_Point_Func add_point; @@ -505,8 +531,11 @@ FT_Error error; /* only used for memory errors */ FT_Bool metrics_only; + + void* hints_funcs; /* hinter-specific */ + void* hints_globals; /* hinter-specific */ - T1_Builder_Funcs funcs; + T1_Builder_Funcs funcs; }; @@ -551,25 +580,30 @@ typedef struct T1_Decoder_Funcs_ T1_Decoder_Funcs; - typedef FT_Error (*T1_Decoder_Callback)( T1_Decoder* decoder, - FT_UInt glyph_index ); + typedef FT_Error + (*T1_Decoder_Callback)( T1_Decoder* decoder, + FT_UInt glyph_index ); struct T1_Decoder_Funcs_ { - FT_Error (*init) ( T1_Decoder* decoder, - FT_Face face, - FT_Size size, - FT_GlyphSlot slot, - FT_Byte** glyph_names, - T1_Blend* blend, - T1_Decoder_Callback callback ); - - void (*done) ( T1_Decoder* decoder ); - - FT_Error (*parse_charstrings)( T1_Decoder* decoder, - FT_Byte* base, - FT_UInt len ); + FT_Error + (*init) ( T1_Decoder* decoder, + FT_Face face, + FT_Size size, + FT_GlyphSlot slot, + FT_Byte** glyph_names, + T1_Blend* blend, + FT_Bool hinting, + T1_Decoder_Callback callback ); + + void + (*done) ( T1_Decoder* decoder ); + + FT_Error + (*parse_charstrings)( T1_Decoder* decoder, + FT_Byte* base, + FT_UInt len ); }; @@ -620,10 +654,12 @@ const T1_Parser_Funcs* t1_parser_funcs; const T1_Builder_Funcs* t1_builder_funcs; const T1_Decoder_Funcs* t1_decoder_funcs; + + void + (*t1_decrypt)( FT_Byte* buffer, + FT_Offset length, + FT_UShort seed ); - void (*t1_decrypt)( FT_Byte* buffer, - FT_Int length, - FT_UShort seed ); } PSAux_Interface; Index: xc/extras/freetype2/include/freetype/internal/psglobal.h diff -u /dev/null xc/extras/freetype2/include/freetype/internal/psglobal.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:49 2002 +++ xc/extras/freetype2/include/freetype/internal/psglobal.h Mon Jan 14 11:52:07 2002 @@ -0,0 +1,186 @@ +/***************************************************************************/ +/* */ +/* psglobal.h */ +/* */ +/* Global PostScript hinting structures (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSGLOBAL_H__ +#define __PSGLOBAL_H__ + + +FT_BEGIN_HEADER + + + /**********************************************************************/ + /**********************************************************************/ + /***** *****/ + /***** PUBLIC STRUCTURES & API *****/ + /***** *****/ + /**********************************************************************/ + /**********************************************************************/ + +#if 0 + + /*************************************************************************/ + /* */ + /* @constant: */ + /* PS_GLOBALS_MAX_BLUE_ZONES */ + /* */ + /* @description: */ + /* The maximum number of blue zones in a font global hints structure. */ + /* See @PS_Globals_BluesRec. */ + /* */ +#define PS_GLOBALS_MAX_BLUE_ZONES 16 + + + /*************************************************************************/ + /* */ + /* @constant: */ + /* PS_GLOBALS_MAX_STD_WIDTHS */ + /* */ + /* @description: */ + /* The maximum number of standard and snap widths in either the */ + /* horizontal or vertical direction. See @PS_Globals_WidthsRec. */ + /* */ +#define PS_GLOBALS_MAX_STD_WIDTHS 16 + + + /*************************************************************************/ + /* */ + /* @type: */ + /* PS_Globals */ + /* */ + /* @description: */ + /* A handle to a @PS_GlobalsRec structure used to describe the global */ + /* hints of a given font. */ + /* */ + typedef struct PS_GlobalsRec_* PS_Globals; + + + /*************************************************************************/ + /* */ + /* @struct: */ + /* PS_Globals_BluesRec */ + /* */ + /* @description: */ + /* A structure used to model the global blue zones of a given font. */ + /* */ + /* @fields: */ + /* count :: The number of blue zones. */ + /* */ + /* zones :: An array of (count*2) coordinates describing the */ + /* zones. */ + /* */ + /* count_family :: The number of family blue zones. */ + /* */ + /* zones_family :: An array of (count_family*2) coordinates describing */ + /* the family blue zones. */ + /* */ + /* scale :: The blue scale to be used (fixed float). */ + /* */ + /* shift :: The blue shift to be used. */ + /* */ + /* fuzz :: Te blue fuzz to be used. */ + /* */ + /* @note: */ + /* Each blue zone is modeled by a (reference,overshoot) coordinate */ + /* pair in the table. Zones can be placed in any order. */ + /* */ + typedef struct PS_Globals_BluesRec_ + { + FT_UInt count; + FT_Int16 zones[2 * PS_GLOBALS_MAX_BLUE_ZONES]; + + FT_UInt count_family; + FT_Int16 zones_family[2 * PS_GLOBALS_MAX_BLUE_ZONES]; + + FT_Fixed scale; + FT_Int16 shift; + FT_Int16 fuzz; + + } PS_Globals_BluesRec, *PS_Globals_Blues; + + + /*************************************************************************/ + /* */ + /* @type: */ + /* PS_Global_Widths */ + /* */ + /* @description: */ + /* A handle to a @PS_Globals_WidthsRec structure used to model the */ + /* global standard and snap widths in a given direction. */ + /* */ + typedef struct PS_Globals_WidthsRec_* PS_Globals_Widths; + + + /*************************************************************************/ + /* */ + /* @struct: */ + /* PS_Globals_WidthsRec */ + /* */ + /* @description: */ + /* A structure used to model the global standard and snap widths in a */ + /* given font. */ + /* */ + /* @fields: */ + /* count :: The number of widths. */ + /* */ + /* widths :: An array of `count' widths in font units. */ + /* */ + /* @note: */ + /* `widths[0]' must be the standard width or height, while remaining */ + /* elements of the array are snap widths or heights. */ + /* */ + typedef struct PS_Globals_WidthsRec_ + { + FT_UInt count; + FT_Int16 widths[PS_GLOBALS_MAX_STD_WIDTHS]; + + } PS_Globals_WidthsRec; + + + /*************************************************************************/ + /* */ + /* @struct: */ + /* PS_GlobalsRec */ + /* */ + /* @description: */ + /* A structure used to model the global hints for a given font. */ + /* */ + /* @fields: */ + /* horizontal :: The horizontal widths. */ + /* */ + /* vertical :: The vertical heights. */ + /* */ + /* blues :: The blue zones. */ + /* */ + typedef struct PS_GlobalsRec_ + { + PS_Globals_WidthsRec horizontal; + PS_Globals_WidthsRec vertical; + PS_Globals_BluesRec blues; + + } PS_GlobalsRec; + +#endif + + /* */ + +FT_END_HEADER + +#endif /* __PS_GLOBAL_H__ */ + + +/* END */ Index: xc/extras/freetype2/include/freetype/internal/pshints.h diff -u /dev/null xc/extras/freetype2/include/freetype/internal/pshints.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:49 2002 +++ xc/extras/freetype2/include/freetype/internal/pshints.h Mon Jan 14 11:52:07 2002 @@ -0,0 +1,618 @@ +/***************************************************************************/ +/* */ +/* pshints.h */ +/* */ +/* Interface to Postscript-specific (Type 1 and Type 2) hints */ +/* recorders (specification only). These are used to support native */ +/* T1/T2 hints in the "type1", "cid" and "cff" font drivers. */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSHINTS_H__ +#define __PSHINTS_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_TYPE1_TABLES_H +#include FT_INTERNAL_POSTSCRIPT_GLOBALS_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** INTERNAL REPRESENTATION OF GLOBALS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct PSH_GlobalsRec_* PSH_Globals; + + typedef FT_Error + (*PSH_Globals_NewFunc)( FT_Memory memory, + T1_Private* private_dict, + PSH_Globals* aglobals ); + + typedef FT_Error + (*PSH_Globals_SetScaleFunc)( PSH_Globals globals, + FT_Fixed x_scale, + FT_Fixed y_scale, + FT_Fixed x_delta, + FT_Fixed y_delta ); + + typedef void + (*PSH_Globals_DestroyFunc)( PSH_Globals globals ); + + + typedef struct PSH_Globals_FuncsRec_ + { + PSH_Globals_NewFunc create; + PSH_Globals_SetScaleFunc set_scale; + PSH_Globals_DestroyFunc destroy; + + } PSH_Globals_FuncsRec, *PSH_Globals_Funcs; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PUBLIC TYPE 1 HINTS RECORDER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* @type: */ + /* T1_Hints */ + /* */ + /* @description: */ + /* This is a handle to an opaque structure used to record glyph hints */ + /* from a Type 1 character glyph character string. */ + /* */ + /* The methods used to operate on this object are defined by the */ + /* @T1_Hints_FuncsRec structure. Recording glyph hints is normally */ + /* achieved through the following scheme: */ + /* */ + /* - Open a new hint recording session by calling the "open" method. */ + /* This will rewind the recorder and prepare it for new input. */ + /* */ + /* - For each hint found in the glyph charstring, call the */ + /* corresponding method ("stem", "stem3", or "reset"). Note that */ + /* these functions do not return an error code. */ + /* */ + /* - Close the recording session by calling the "close" method. It */ + /* will return an error code if the hints were invalid or something */ + /* strange happened (e.g. memory shortage). */ + /* */ + /* The hints accumulated in the object can later be used by the */ + /* Postscript hinter. */ + /* */ + typedef struct T1_HintsRec_* T1_Hints; + + + /*************************************************************************/ + /* */ + /* @type: */ + /* T1_Hints_Funcs */ + /* */ + /* @description: */ + /* A pointer to the @T1_Hints_FuncsRec structure that defines the */ + /* API of a given @T1_Hints object. */ + /* */ + typedef const struct T1_Hints_FuncsRec_* T1_Hints_Funcs; + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* T1_Hints_OpenFunc */ + /* */ + /* @description: */ + /* A method of the @T1_Hints class used to prepare it for a new */ + /* Type 1 hints recording session. */ + /* */ + /* @input: */ + /* hints :: A handle to the Type 1 hints recorder. */ + /* */ + /* @note: */ + /* You should always call the @T1_Hints_CloseFunc method in order to */ + /* close an opened recording session. */ + /* */ + typedef void + (*T1_Hints_OpenFunc)( T1_Hints hints ); + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* T1_Hints_SetStemFunc */ + /* */ + /* @description: */ + /* A method of the @T1_Hints class used to record a new horizontal or */ + /* vertical stem. This corresponds to the Type 1 "hstem" and "vstem" */ + /* operators. */ + /* */ + /* @input: */ + /* hints :: A handle to the Type 1 hints recorder. */ + /* */ + /* dimension :: 0 for horizontal stems (hstem), 1 for vertical ones */ + /* (vstem). */ + /* */ + /* coords :: Array of 2 integers, used as (position,length) stem */ + /* descriptor. */ + /* */ + /* @note: */ + /* Use vertical coordinates (y) for horizontal stems (dim=0). Use */ + /* horizontal coordinates (x) for vertical stems (dim=1). */ + /* */ + /* "coords[0]" is the absolute stem position (lowest coordinate); */ + /* "coords[1]" is the length. */ + /* */ + /* The length can be negative, in which case it must be either -20 or */ + /* -21. It will be interpreted as a "ghost" stem, according to */ + /* Type 1 specification. */ + /* */ + /* If the length is -21 (corresponding to a bottom ghost stem), then */ + /* the real stem position is "coords[0]+coords[1]". */ + /* */ + typedef void + (*T1_Hints_SetStemFunc)( T1_Hints hints, + FT_UInt dimension, + FT_Long* coords ); + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* T1_Hints_SetStem3Func */ + /* */ + /* @description: */ + /* A method of the @T1_Hints class used to record three */ + /* counter-controlled horizontal or vertical stems at once. */ + /* */ + /* @input: */ + /* hints :: A handle to the Type 1 hints recorder. */ + /* */ + /* dimension :: 0 for horizontal stems, 1 for vertical ones. */ + /* */ + /* coords :: An array of 6 integers, holding 3 (position,length) */ + /* pairs for the counter-controlled stems. */ + /* */ + /* @note: */ + /* Use vertical coordinates (y) for horizontal stems (dim=0). Use */ + /* horizontal coordinates (x) for vertical stems (dim=1). */ + /* */ + /* The lengths cannot be negative (ghost stems are never */ + /* counter-controlled). */ + /* */ + typedef void + (*T1_Hints_SetStem3Func)( T1_Hints hints, + FT_UInt dimension, + FT_Long* coords ); + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* T1_Hints_ResetFunc */ + /* */ + /* @description: */ + /* A method of the @T1_Hints class used to reset the stems hints in a */ + /* recording session. */ + /* */ + /* @input: */ + /* hints :: A handle to the Type 1 hints recorder. */ + /* end_point :: The index of the last point in the input glyph in */ + /* which the previously defined hints apply. */ + /* */ + typedef void + (*T1_Hints_ResetFunc)( T1_Hints hints, + FT_UInt end_point ); + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* T1_Hints_CloseFunc */ + /* */ + /* @description: */ + /* A method of the @T1_Hints class used to close a hint recording */ + /* session. */ + /* */ + /* @input: */ + /* hints :: A handle to the Type 1 hints recorder. */ + /* */ + /* end_point :: The index of the last point in the input glyph. */ + /* */ + /* @return: */ + /* FreeType error code. 0 means success. */ + /* */ + /* @note: */ + /* The error code will be set to indicate that an error occured */ + /* during the recording session. */ + /* */ + typedef FT_Error + (*T1_Hints_CloseFunc)( T1_Hints hints, + FT_UInt end_point ); + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* T1_Hints_ApplyFunc */ + /* */ + /* @description: */ + /* A method of the @T1_Hints class used to apply hints to the */ + /* corresponding glyph outline. Must be called once all hints have */ + /* been recorded. */ + /* */ + /* @input: */ + /* hints :: A handle to the Type 1 hints recorder. */ + /* */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* globals :: The hinter globals for this font. */ + /* */ + /* @return: */ + /* FreeType error code. 0 means success. */ + /* */ + /* @note: */ + /* On input, all points within the outline are in font coordinates. */ + /* On output, they are in 1/64th of pixels. */ + /* */ + /* The scaling transformation is taken from the "globals" object */ + /* which must correspond to the same font as the glyph. */ + /* */ + typedef FT_Error + (*T1_Hints_ApplyFunc)( T1_Hints hints, + FT_Outline* outline, + PSH_Globals globals ); + + + /*************************************************************************/ + /* */ + /* @struct: */ + /* T1_Hints_FuncsRec */ + /* */ + /* @description: */ + /* The structure used to provide the API to @T1_Hints objects. */ + /* */ + /* @fields: */ + /* hints :: A handle to the T1 Hints recorder. */ + /* */ + /* open :: The function to open a recording session. */ + /* */ + /* close :: The function to close a recording session. */ + /* */ + /* stem :: The function to set a simple stem. */ + /* */ + /* stem3 :: The function to set counter-controlled stems. */ + /* */ + /* reset :: The function to reset stem hints. */ + /* */ + /* apply :: The function to apply the hints to the corresponding */ + /* glyph outline. */ + /* */ + typedef struct T1_Hints_FuncsRec_ + { + T1_Hints hints; + T1_Hints_OpenFunc open; + T1_Hints_CloseFunc close; + T1_Hints_SetStemFunc stem; + T1_Hints_SetStem3Func stem3; + T1_Hints_ResetFunc reset; + T1_Hints_ApplyFunc apply; + + } T1_Hints_FuncsRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PUBLIC TYPE 2 HINTS RECORDER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* @type: */ + /* T2_Hints */ + /* */ + /* @description: */ + /* This is a handle to an opaque structure used to record glyph hints */ + /* from a Type 2 character glyph character string. */ + /* */ + /* The methods used to operate on this object are defined by the */ + /* @T2_Hints_FuncsRec structure. Recording glyph hints is normally */ + /* achieved through the following scheme: */ + /* */ + /* - Open a new hint recording session by calling the "open" method. */ + /* This will rewind the recorder and prepare it for new input. */ + /* */ + /* - For each hint found in the glyph charstring, call the */ + /* corresponding method ("stems", "hintmask", "counters"). Note */ + /* that these functions do not return an error code. */ + /* */ + /* - Close the recording session by calling the "close" method. It */ + /* will return an error code if the hints were invalid or something */ + /* strange happened (e.g. memory shortage). */ + /* */ + /* The hints accumulated in the object can later be used by the */ + /* Postscript hinter. */ + /* */ + typedef struct T2_HintsRec_* T2_Hints; + + + /*************************************************************************/ + /* */ + /* @type: */ + /* T2_Hints_Funcs */ + /* */ + /* @description: */ + /* A pointer to the @T2_Hints_FuncsRec structure that defines the API */ + /* of a given @T2_Hints object. */ + /* */ + typedef const struct T2_Hints_FuncsRec_* T2_Hints_Funcs; + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* T2_Hints_OpenFunc */ + /* */ + /* @description: */ + /* A method of the @T2_Hints class used to prepare it for a new */ + /* Type 2 hints recording session. */ + /* */ + /* @input: */ + /* hints :: A handle to the Type 2 hints recorder. */ + /* */ + /* @note: */ + /* You should always call the @T2_Hints_CloseFunc method in order to */ + /* close an opened recording session. */ + /* */ + typedef void + (*T2_Hints_OpenFunc)( T2_Hints hints ); + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* T2_Hints_StemsFunc */ + /* */ + /* @description: */ + /* A method of the @T2_Hints class used to set the table of stems in */ + /* either the vertical or horizontal dimension. Equivalent to the */ + /* "hstem", "vstem", "hstemhm", and "vstemhm" Type 2 operators. */ + /* */ + /* @input: */ + /* hints :: A handle to the Type 2 hints recorder. */ + /* */ + /* dimension :: 0 for horizontal stems (hstem), 1 for vertical ones */ + /* (vstem). */ + /* */ + /* count :: The number of stems. */ + /* */ + /* coords :: An array of "count" (position,length) pairs. */ + /* */ + /* @note: */ + /* Use vertical coordinates (y) for horizontal stems (dim=0). Use */ + /* horizontal coordinates (x) for vertical stems (dim=1). */ + /* */ + /* There are "2*count" elements in the "coords" aray. Each even */ + /* element is an absolute position in font units, each odd element is */ + /* a length in font units. */ + /* */ + /* A length can be negative, in which case it must be either -20 or */ + /* -21. It will be interpreted as a "ghost" stem, according to the */ + /* Type 1 specification. */ + /* */ + typedef void + (*T2_Hints_StemsFunc)( T2_Hints hints, + FT_UInt dimension, + FT_UInt count, + FT_Fixed* coordinates ); + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* T2_Hints_MaskFunc */ + /* */ + /* @description: */ + /* A method of the @T2_Hints class used to set a given hintmask */ + /* (this corresponds to the "hintmask" Type 2 operator). */ + /* */ + /* @input: */ + /* hints :: A handle to the Type 2 hints recorder. */ + /* */ + /* end_point :: The glyph index of the last point to which the */ + /* previously defined/activated hints apply. */ + /* */ + /* bit_count :: The number of bits in the hint mask. */ + /* */ + /* bytes :: An array of bytes modelling the hint mask. */ + /* */ + /* @note: */ + /* If the hintmask starts the charstring (before any glyph point */ + /* definition), the value of "end_point" should be 0. */ + /* */ + /* "bit_count" is the number of meaningful bits in the "bytes" array; */ + /* it must be equal to the total number of hints defined so far */ + /* (i.e. horizontal+verticals). */ + /* */ + /* The "bytes" array can come directly from the Type 2 charstring and */ + /* respects the same format. */ + /* */ + typedef void + (*T2_Hints_MaskFunc)( T2_Hints hints, + FT_UInt end_point, + FT_UInt bit_count, + const FT_Byte* bytes ); + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* T2_Hints_CounterFunc */ + /* */ + /* @description: */ + /* A method of the @T2_Hints class used to set a given counter mask */ + /* (this corresponds to the "hintmask" Type 2 operator). */ + /* */ + /* @input: */ + /* hints :: A handle to the Type 2 hints recorder. */ + /* */ + /* end_point :: A glyph index of the last point to which the */ + /* previously defined/active hints apply. */ + /* */ + /* bit_count :: The number of bits in the hint mask. */ + /* */ + /* bytes :: An array of bytes modelling the hint mask. */ + /* */ + /* @note: */ + /* If the hintmask starts the charstring (before any glyph point */ + /* definition), the value of "end_point" should be 0. */ + /* */ + /* "bit_count" is the number of meaningful bits in the "bytes" array; */ + /* it must be equal to the total number of hints defined so far */ + /* (i.e. horizontal+verticals). */ + /* */ + /* The "bytes" array can come directly from the Type 2 charstring and */ + /* respects the same format. */ + /* */ + typedef void + (*T2_Hints_CounterFunc)( T2_Hints hints, + FT_UInt bit_count, + const FT_Byte* bytes ); + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* T2_Hints_CloseFunc */ + /* */ + /* @description: */ + /* A method of the @T2_Hints class used to close a hint recording */ + /* session. */ + /* */ + /* @input: */ + /* hints :: A handle to the Type 2 hints recorder. */ + /* */ + /* end_point :: The index of the last point in the input glyph. */ + /* */ + /* @return: */ + /* FreeType error code. 0 means success. */ + /* */ + /* @note: */ + /* The error code will be set to indicate that an error occured */ + /* during the recording session. */ + /* */ + typedef FT_Error + (*T2_Hints_CloseFunc)( T2_Hints hints, + FT_UInt end_point ); + + + /*************************************************************************/ + /* */ + /* @functype: */ + /* T2_Hints_ApplyFunc */ + /* */ + /* @description: */ + /* A method of the @T2_Hints class used to apply hints to the */ + /* corresponding glyph outline. Must be called after the "close" */ + /* method. */ + /* */ + /* @input: */ + /* hints :: A handle to the Type 2 hints recorder. */ + /* */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* globals :: The hinter globals for this font. */ + /* */ + /* @return: */ + /* FreeType error code. 0 means success. */ + /* */ + /* @note: */ + /* On input, all points within the outline are in font coordinates. */ + /* On output, they are in 1/64th of pixels. */ + /* */ + /* The scaling transformation is taken from the "globals" object */ + /* which must correspond to the same font than the glyph. */ + /* */ + typedef FT_Error + (*T2_Hints_ApplyFunc)( T2_Hints hints, + FT_Outline* outline, + PSH_Globals globals ); + + + /*************************************************************************/ + /* */ + /* @struct: */ + /* T2_Hints_FuncsRec */ + /* */ + /* @description: */ + /* The structure used to provide the API to @T2_Hints objects. */ + /* */ + /* @fields: */ + /* hints :: A handle to the T2 hints recorder object. */ + /* */ + /* open :: The function to open a recording session. */ + /* */ + /* close :: The function to close a recording session. */ + /* */ + /* stems :: The function to set the dimension's stems table. */ + /* */ + /* hintmask :: The function to set hint masks. */ + /* */ + /* counter :: The function to set counter masks. */ + /* */ + /* apply :: The function to apply the hints on the corresponding */ + /* glyph outline. */ + /* */ + typedef struct T2_Hints_FuncsRec_ + { + T2_Hints hints; + T2_Hints_OpenFunc open; + T2_Hints_CloseFunc close; + T2_Hints_StemsFunc stems; + T2_Hints_MaskFunc hintmask; + T2_Hints_CounterFunc counter; + T2_Hints_ApplyFunc apply; + + } T2_Hints_FuncsRec; + + + /* */ + + + typedef struct PSHinter_Interface_ + { + PSH_Globals_Funcs (*get_globals_funcs)( FT_Module module ); + T1_Hints_Funcs (*get_t1_funcs) ( FT_Module module ); + T2_Hints_Funcs (*get_t2_funcs) ( FT_Module module ); + + } PSHinter_Interface, *PSHinter_InterfacePtr; + + +FT_END_HEADER + +#endif /* __PSHINTS_H__ */ + + +/* END */ Index: xc/extras/freetype2/include/freetype/internal/psnames.h diff -u xc/extras/freetype2/include/freetype/internal/psnames.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/psnames.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/internal/psnames.h:1.1.1.2 Tue May 15 23:45:57 2001 +++ xc/extras/freetype2/include/freetype/internal/psnames.h Sun Dec 16 12:49:24 2001 @@ -5,7 +5,7 @@ /* High-level interface for the `PSNames' module (in charge of */ /* various functions related to Postscript glyph names conversion). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -52,7 +52,8 @@ /* This function will not be compiled if the configuration macro */ /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST is undefined. */ /* */ - typedef FT_ULong (*PS_Unicode_Value_Func)( const char* glyph_name ); + typedef FT_ULong + (*PS_Unicode_Value_Func)( const char* glyph_name ); /*************************************************************************/ @@ -82,9 +83,10 @@ /* This function will not be compiled if the configuration macro */ /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST is undefined. */ /* */ - typedef FT_UInt (*PS_Unicode_Index_Func)( FT_UInt num_glyphs, - const char** glyph_names, - FT_ULong unicode ); + typedef FT_UInt + (*PS_Unicode_Index_Func)( FT_UInt num_glyphs, + const char** glyph_names, + FT_ULong unicode ); /*************************************************************************/ @@ -106,10 +108,12 @@ /* This function will not be compiled if the configuration macro */ /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES is undefined. */ /* */ - typedef const char* (*PS_Macintosh_Name_Func)( FT_UInt name_index ); + typedef const char* + (*PS_Macintosh_Name_Func)( FT_UInt name_index ); - typedef const char* (*PS_Adobe_Std_Strings_Func)( FT_UInt string_index ); + typedef const char* + (*PS_Adobe_Std_Strings_Func)( FT_UInt string_index ); typedef struct PS_UniMap_ @@ -152,13 +156,15 @@ } PS_Unicodes; - typedef FT_Error (*PS_Build_Unicodes_Func)( FT_Memory memory, - FT_UInt num_glyphs, - const char** glyph_names, - PS_Unicodes* unicodes ); - - typedef FT_UInt (*PS_Lookup_Unicode_Func)( PS_Unicodes* unicodes, - FT_UInt unicode ); + typedef FT_Error + (*PS_Build_Unicodes_Func)( FT_Memory memory, + FT_UInt num_glyphs, + const char** glyph_names, + PS_Unicodes* unicodes ); + + typedef FT_UInt + (*PS_Lookup_Unicode_Func)( PS_Unicodes* unicodes, + FT_UInt unicode ); /*************************************************************************/ Index: xc/extras/freetype2/include/freetype/internal/sfnt.h diff -u xc/extras/freetype2/include/freetype/internal/sfnt.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/sfnt.h:1.1.1.3 --- xc/extras/freetype2/include/freetype/internal/sfnt.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/sfnt.h Sun Dec 16 12:49:24 2001 @@ -4,7 +4,7 @@ /* */ /* High-level `sfnt' driver interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -63,12 +63,12 @@ /* should then call the TT_Load_Face_Func() callback to read the rest */ /* of the SFNT tables in the object. */ /* */ - typedef - FT_Error (*TT_Init_Face_Func)( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); + typedef FT_Error + (*TT_Init_Face_Func)( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); /*************************************************************************/ @@ -99,12 +99,12 @@ /* <Note> */ /* This function must be called after TT_Init_Face_Func(). */ /* */ - typedef - FT_Error (*TT_Load_Face_Func)( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); + typedef FT_Error + (*TT_Load_Face_Func)( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); /*************************************************************************/ @@ -121,13 +121,13 @@ /* <Note> */ /* This function does NOT destroy the face object. */ /* */ - typedef - void (*TT_Done_Face_Func)( TT_Face face ); + typedef void + (*TT_Done_Face_Func)( TT_Face face ); - typedef - FT_Module_Interface (*SFNT_Get_Interface_Func)( FT_Module module, - const char* interface ); + typedef FT_Module_Interface + (*SFNT_Get_Interface_Func)( FT_Module module, + const char* interface ); /*************************************************************************/ @@ -161,11 +161,11 @@ /* This function checks that the header is valid by looking at the */ /* values of `search_range', `entry_selector', and `range_shift'. */ /* */ - typedef - FT_Error (*TT_Load_SFNT_Header_Func)( TT_Face face, - FT_Stream stream, - FT_Long face_index, - SFNT_Header* sfnt ); + typedef FT_Error + (*TT_Load_SFNT_Header_Func)( TT_Face face, + FT_Stream stream, + FT_Long face_index, + SFNT_Header* sfnt ); /*************************************************************************/ @@ -191,10 +191,10 @@ /* format tag. This is the case just after a call to */ /* TT_Load_Format_Tag(). */ /* */ - typedef - FT_Error (*TT_Load_Directory_Func)( TT_Face face, - FT_Stream stream, - SFNT_Header* sfnt ); + typedef FT_Error + (*TT_Load_Directory_Func)( TT_Face face, + FT_Stream stream, + SFNT_Header* sfnt ); /*************************************************************************/ @@ -237,12 +237,12 @@ /* <Return> */ /* TrueType error code. 0 means success. */ /* */ - typedef - FT_Error (*TT_Load_Any_Func)( TT_Face face, - FT_ULong tag, - FT_Long offset, - FT_Byte *buffer, - FT_ULong* length ); + typedef FT_Error + (*TT_Load_Any_Func)( TT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte *buffer, + FT_ULong* length ); /*************************************************************************/ @@ -277,14 +277,14 @@ /* <Note> */ /* The `map.buffer' field is always freed before the glyph is loaded. */ /* */ - typedef - FT_Error (*TT_Load_SBit_Image_Func)( TT_Face face, - FT_ULong strike_index, - FT_UInt glyph_index, - FT_UInt load_flags, - FT_Stream stream, - FT_Bitmap *amap, - TT_SBit_Metrics *ametrics ); + typedef FT_Error + (*TT_Load_SBit_Image_Func)( TT_Face face, + FT_ULong strike_index, + FT_UInt glyph_index, + FT_UInt load_flags, + FT_Stream stream, + FT_Bitmap *amap, + TT_SBit_Metrics *ametrics ); /*************************************************************************/ @@ -310,11 +310,11 @@ /* FreeType error code. 0 means success. Returns an error if no */ /* sbit strike exists for the selected ppem values. */ /* */ - typedef - FT_Error (*TT_Set_SBit_Strike_Func)( TT_Face face, - FT_Int x_ppem, - FT_Int y_ppem, - FT_ULong *astrike_index ); + typedef FT_Error + (*TT_Set_SBit_Strike_Func)( TT_Face face, + FT_Int x_ppem, + FT_Int y_ppem, + FT_ULong *astrike_index ); /*************************************************************************/ @@ -336,10 +336,10 @@ /* <Output> */ /* FreeType error code. 0 means success. */ /* */ - typedef - FT_Error (*TT_Get_PS_Name_Func)( TT_Face face, - FT_UInt index, - FT_String** PSname ); + typedef FT_Error + (*TT_Get_PS_Name_Func)( TT_Face face, + FT_UInt index, + FT_String** PSname ); /*************************************************************************/ @@ -360,10 +360,10 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - typedef - FT_Error (*TT_Load_Metrics_Func)( TT_Face face, - FT_Stream stream, - FT_Bool vertical ); + typedef FT_Error + (*TT_Load_Metrics_Func)( TT_Face face, + FT_Stream stream, + FT_Bool vertical ); /*************************************************************************/ @@ -390,10 +390,10 @@ /* opened). In case of error, all partially allocated tables are */ /* released. */ /* */ - typedef - FT_Error (*TT_CharMap_Load_Func)( TT_Face face, - TT_CMapTable* cmap, - FT_Stream input ); + typedef FT_Error + (*TT_CharMap_Load_Func)( TT_Face face, + TT_CMapTable* cmap, + FT_Stream input ); /*************************************************************************/ @@ -412,9 +412,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - typedef - FT_Error (*TT_CharMap_Free_Func)( TT_Face face, - TT_CMapTable* cmap ); + typedef FT_Error + (*TT_CharMap_Free_Func)( TT_Face face, + TT_CMapTable* cmap ); /*************************************************************************/ @@ -437,9 +437,9 @@ /* The function will use `face->goto_table' to seek the stream to */ /* the start of the table. */ /* */ - typedef - FT_Error (*TT_Load_Table_Func)( TT_Face face, - FT_Stream stream ); + typedef FT_Error + (*TT_Load_Table_Func)( TT_Face face, + FT_Stream stream ); /*************************************************************************/ @@ -453,8 +453,8 @@ /* <Input> */ /* face :: A handle to the target face object. */ /* */ - typedef - void (*TT_Free_Table_Func)( TT_Face face ); + typedef void + (*TT_Free_Table_Func)( TT_Face face ); /*************************************************************************/ Index: xc/extras/freetype2/include/freetype/internal/t1errors.h diff -u xc/extras/freetype2/include/freetype/internal/t1errors.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/t1errors.h:removed --- xc/extras/freetype2/include/freetype/internal/t1errors.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/t1errors.h Fri Jan 18 15:21:49 2002 @@ -1,75 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1errors.h */ -/* */ -/* Type 1 error ID definitions (specification only). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1ERRORS_H__ -#define __T1ERRORS_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - - /************************ error codes declaration **************/ - - /* The error codes are grouped into `classes' used to indicate the */ - /* `level' at which the error happened. */ - /* */ - /* The class is given by an error code's high byte. */ - - - /* ------------- Success is always 0 -------- */ - -#define T1_Err_Ok FT_Err_Ok - - /* ----------- high level API errors -------- */ - -#define T1_Err_Invalid_File_Format FT_Err_Invalid_File_Format -#define T1_Err_Invalid_Argument FT_Err_Invalid_Argument -#define T1_Err_Invalid_Driver_Handle FT_Err_Invalid_Driver_Handle -#define T1_Err_Invalid_Face_Handle FT_Err_Invalid_Face_Handle -#define T1_Err_Invalid_Size_Handle FT_Err_Invalid_Size_Handle -#define T1_Err_Invalid_Glyph_Handle FT_Err_Invalid_Slot_Handle -#define T1_Err_Invalid_CharMap_Handle FT_Err_Invalid_CharMap_Handle -#define T1_Err_Invalid_Glyph_Index FT_Err_Invalid_Glyph_Index - -#define T1_Err_Unimplemented_Feature FT_Err_Unimplemented_Feature - -#define T1_Err_Invalid_Engine FT_Err_Invalid_Driver_Handle - - /* ------------- internal errors ------------ */ - -#define T1_Err_Out_Of_Memory FT_Err_Out_Of_Memory -#define T1_Err_Unlisted_Object FT_Err_Unlisted_Object - - /* ------------ general glyph outline errors ------ */ - -#define T1_Err_Invalid_Composite FT_Err_Invalid_Composite - -#define T1_Err_Syntax_Error FT_Err_Invalid_File_Format -#define T1_Err_Stack_Underflow FT_Err_Invalid_File_Format -#define T1_Err_Stack_Overflow FT_Err_Invalid_File_Format - - -FT_END_HEADER - -#endif /* __T1ERRORS_H__ */ - - -/* END */ Index: xc/extras/freetype2/include/freetype/internal/t1types.h diff -u xc/extras/freetype2/include/freetype/internal/t1types.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/t1types.h:1.1.1.4 --- xc/extras/freetype2/include/freetype/internal/t1types.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/t1types.h Mon Jan 14 11:52:07 2002 @@ -5,7 +5,7 @@ /* Basic Type1/Type2 type definitions and interface (specification */ /* only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -24,6 +24,7 @@ #include<ft2build.h> #include FT_TYPE1_TABLES_H #include FT_INTERNAL_POSTSCRIPT_NAMES_H +#include FT_INTERNAL_POSTSCRIPT_HINTS_H FT_BEGIN_HEADER @@ -172,6 +173,9 @@ /* support for Multiple Masters fonts */ T1_Blend* blend; + + /* since FT 2.1 - interface to PostScript hinter */ + void* pshinter; } T1_FaceRec; @@ -184,6 +188,9 @@ CID_Info cid; void* afm_data; CID_Subrs* subrs; + + /* since FT 2.1 - interface to PostScript hinter */ + void* pshinter; } CID_FaceRec; Index: xc/extras/freetype2/include/freetype/internal/t2errors.h diff -u xc/extras/freetype2/include/freetype/internal/t2errors.h:1.1.1.1 xc/extras/freetype2/include/freetype/internal/t2errors.h:removed --- xc/extras/freetype2/include/freetype/internal/t2errors.h:1.1.1.1 Fri Dec 8 16:26:18 2000 +++ xc/extras/freetype2/include/freetype/internal/t2errors.h Fri Jan 18 15:21:49 2002 @@ -1,131 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2errors.h */ -/* */ -/* OpenType error ID definitions (specification only). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T2ERRORS_H__ -#define __T2ERRORS_H__ - - -#ifdef __cplusplus - extern "C" { -#endif - - - /*************************************************************************/ - /* */ - /* Error codes declaration */ - /* */ - /* The error codes are grouped in `classes' used to indicate the `level' */ - /* at which the error happened. The class is given by an error code's */ - /* high byte. */ - /* */ - /*************************************************************************/ - - - /* Success is always 0. */ - -#define T2_Err_Ok FT_Err_Ok - - /* High level API errors. */ - -#define T2_Err_Invalid_File_Format FT_Err_Invalid_File_Format -#define T2_Err_Invalid_Argument FT_Err_Invalid_Argument -#define T2_Err_Invalid_Driver_Handle FT_Err_Invalid_Driver_Handle -#define T2_Err_Invalid_Face_Handle FT_Err_Invalid_Face_Handle -#define T2_Err_Invalid_Instance_Handle FT_Err_Invalid_Size_Handle -#define T2_Err_Invalid_Glyph_Handle FT_Err_Invalid_Slot_Handle -#define T2_Err_Invalid_CharMap_Handle FT_Err_Invalid_CharMap_Handle -#define T2_Err_Invalid_Glyph_Index FT_Err_Invalid_Glyph_Index - -#define T2_Err_Unimplemented_Feature FT_Err_Unimplemented_Feature - -#define T2_Err_Invalid_Engine FT_Err_Invalid_Driver_Handle - - /* Internal errors. */ - -#define T2_Err_Out_Of_Memory FT_Err_Out_Of_Memory -#define T2_Err_Unlisted_Object FT_Err_Unlisted_Object - - /* General glyph outline errors. */ - -#define T2_Err_Invalid_Composite FT_Err_Invalid_Composite - - /* Bytecode interpreter error codes. */ - - /* These error codes are produced by the TrueType */ - /* bytecode interpreter. They usually indicate a */ - /* broken font file, a broken glyph within a font */ - /* file, or a bug in the interpreter! */ - -#define T2_Err_Invalid_Opcode 0x500 -#define T2_Err_Too_Few_Arguments 0x501 -#define T2_Err_Stack_Overflow 0x502 -#define T2_Err_Code_Overflow 0x503 -#define T2_Err_Bad_Argument 0x504 -#define T2_Err_Divide_By_Zero 0x505 -#define T2_Err_Storage_Overflow 0x506 -#define T2_Err_Cvt_Overflow 0x507 -#define T2_Err_Invalid_Reference 0x508 -#define T2_Err_Invalid_Distance 0x509 -#define T2_Err_Interpolate_Twilight 0x50A -#define T2_Err_Debug_OpCode 0x50B -#define T2_Err_ENDF_In_Exec_Stream 0x50C -#define T2_Err_Out_Of_CodeRanges 0x50D -#define T2_Err_Nested_DEFS 0x50E -#define T2_Err_Invalid_CodeRange 0x50F -#define T2_Err_Invalid_Displacement 0x510 -#define T2_Err_Execution_Too_Long 0x511 - -#define T2_Err_Too_Many_Instruction_Defs 0x512 -#define T2_Err_Too_Many_Function_Defs 0x513 - - /* Other TrueType specific error codes. */ - -#define T2_Err_Table_Missing 0x520 -#define T2_Err_Too_Many_Extensions 0x521 -#define T2_Err_Extensions_Unsupported 0x522 -#define T2_Err_Invalid_Extension_Id 0x523 - -#define T2_Err_No_Vertical_Data 0x524 - -#define T2_Err_Max_Profile_Missing 0x530 -#define T2_Err_Header_Table_Missing 0x531 -#define T2_Err_Horiz_Header_Missing 0x532 -#define T2_Err_Locations_Missing 0x533 -#define T2_Err_Name_Table_Missing 0x534 -#define T2_Err_CMap_Table_Missing 0x535 -#define T2_Err_Hmtx_Table_Missing 0x536 -#define T2_Err_OS2_Table_Missing 0x537 -#define T2_Err_Post_Table_Missing 0x538 - -#define T2_Err_Invalid_Horiz_Metrics 0x540 -#define T2_Err_Invalid_CharMap_Format 0x541 -#define T2_Err_Invalid_PPem 0x542 -#define T2_Err_Invalid_Vert_Metrics 0x543 - -#define T2_Err_Could_Not_Find_Context 0x550 - - -#ifdef __cplusplus - } -#endif - - -#endif /* __T2ERRORS_H__ */ - - -/* END */ Index: xc/extras/freetype2/include/freetype/internal/t2types.h diff -u xc/extras/freetype2/include/freetype/internal/t2types.h:1.1.1.1 xc/extras/freetype2/include/freetype/internal/t2types.h:removed --- xc/extras/freetype2/include/freetype/internal/t2types.h:1.1.1.1 Fri Dec 8 16:26:18 2000 +++ xc/extras/freetype2/include/freetype/internal/t2types.h Fri Jan 18 15:21:49 2002 @@ -1,226 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2types.h */ -/* */ -/* Basic OpenType/CFF type definitions and interface (specification */ -/* only). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T2TYPES_H__ -#define __T2TYPES_H__ - -#ifndef FT_BUILD_H -# define FT_BUILD_H <freetype/config/ftbuild.h> -#endif -#include FT_BUILD_H -#include FT_FREETYPE_H - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CFF_Index */ - /* */ - /* <Description> */ - /* A structure used to model a CFF Index table. */ - /* */ - /* <Fields> */ - /* stream :: The source input stream. */ - /* */ - /* count :: The number of elements in the index. */ - /* */ - /* off_size :: The size in bytes of object offsets in index. */ - /* */ - /* data_offset :: The position of first data byte in the index's */ - /* bytes. */ - /* */ - /* offsets :: A table of element offsets in the index. */ - /* */ - /* bytes :: If the index is loaded in memory, its bytes. */ - /* */ - typedef struct CFF_Index_ - { - FT_Stream stream; - FT_UInt count; - FT_Byte off_size; - FT_ULong data_offset; - - FT_ULong* offsets; - FT_Byte* bytes; - - } CFF_Index; - - - typedef struct CFF_Font_Dict_ - { - FT_UInt version; - FT_UInt notice; - FT_UInt copyright; - FT_UInt full_name; - FT_UInt family_name; - FT_UInt weight; - FT_Bool is_fixed_pitch; - FT_Fixed italic_angle; - FT_Pos underline_position; - FT_Pos underline_thickness; - FT_Int paint_type; - FT_Int charstring_type; - FT_Matrix font_matrix; - FT_Vector font_offset; - FT_ULong unique_id; - FT_BBox font_bbox; - FT_Pos stroke_width; - FT_ULong charset_offset; - FT_ULong encoding_offset; - FT_ULong charstrings_offset; - FT_ULong private_offset; - FT_ULong private_size; - FT_Long synthetic_base; - FT_UInt embedded_postscript; - FT_UInt base_font_name; - FT_UInt postscript; - - /* these should only be used for the top-level font dictionary */ - FT_UInt cid_registry; - FT_UInt cid_ordering; - FT_ULong cid_supplement; - - FT_Long cid_font_version; - FT_Long cid_font_revision; - FT_Long cid_font_type; - FT_Long cid_count; - FT_ULong cid_uid_base; - FT_ULong cid_fd_array_offset; - FT_ULong cid_fd_select_offset; - FT_UInt cid_font_name; - - } CFF_Font_Dict; - - - typedef struct CFF_Private_ - { - FT_Byte num_blue_values; - FT_Byte num_other_blues; - FT_Byte num_family_blues; - FT_Byte num_family_other_blues; - - FT_Pos blue_values[14]; - FT_Pos other_blues[10]; - FT_Pos family_blues[14]; - FT_Pos family_other_blues[10]; - - FT_Fixed blue_scale; - FT_Pos blue_shift; - FT_Pos blue_fuzz; - FT_Pos standard_width; - FT_Pos standard_height; - - FT_Byte num_snap_widths; - FT_Byte num_snap_heights; - FT_Pos snap_widths[13]; - FT_Pos snap_heights[13]; - FT_Bool force_bold; - FT_Fixed force_bold_threshold; - FT_Int lenIV; - FT_Int language_group; - FT_Fixed expansion_factor; - FT_Long initial_random_seed; - FT_ULong local_subrs_offset; - FT_Pos default_width; - FT_Pos nominal_width; - - } CFF_Private; - - - typedef struct CFF_FD_Select_ - { - FT_Byte format; - FT_UInt range_count; - - /* that's the table, taken from the file `as is' */ - FT_Byte* data; - FT_UInt data_size; - - /* small cache for format 3 only */ - FT_UInt cache_first; - FT_UInt cache_count; - FT_Byte cache_fd; - - } CFF_FD_Select; - - - /* A SubFont packs a font dict and a private dict together. They are */ - /* needed to support CID-keyed CFF fonts. */ - typedef struct CFF_SubFont_ - { - CFF_Font_Dict font_dict; - CFF_Private private_dict; - - CFF_Index local_subrs_index; - FT_UInt num_local_subrs; - FT_Byte** local_subrs; - - } CFF_SubFont; - - - /* maximum number of sub-fonts in a CID-keyed file */ -#define CFF_MAX_CID_FONTS 16 - - - typedef struct CFF_Font_ - { - FT_Stream stream; - FT_Memory memory; - FT_UInt num_faces; - FT_UInt num_glyphs; - - FT_Byte version_major; - FT_Byte version_minor; - FT_Byte header_size; - FT_Byte absolute_offsize; - - - CFF_Index name_index; - CFF_Index top_dict_index; - CFF_Index string_index; - CFF_Index global_subrs_index; - - /* we don't load the Encoding and CharSet tables */ - - CFF_Index charstrings_index; - CFF_Index font_dict_index; - CFF_Index private_index; - CFF_Index local_subrs_index; - - FT_String* font_name; - FT_UInt num_global_subrs; - FT_Byte** global_subrs; - - CFF_SubFont top_font; - FT_UInt num_subfonts; - CFF_SubFont* subfonts[CFF_MAX_CID_FONTS]; - - CFF_FD_Select fd_select; - - } CFF_Font; - - -FT_END_HEADER - -#endif /* __T2TYPES_H__ */ - - -/* END */ Index: xc/extras/freetype2/include/freetype/internal/tterrors.h diff -u xc/extras/freetype2/include/freetype/internal/tterrors.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/tterrors.h:removed --- xc/extras/freetype2/include/freetype/internal/tterrors.h:1.1.1.2 Tue May 15 23:45:57 2001 +++ xc/extras/freetype2/include/freetype/internal/tterrors.h Fri Jan 18 15:21:49 2002 @@ -1,130 +0,0 @@ -/***************************************************************************/ -/* */ -/* tterrors.h */ -/* */ -/* TrueType error ID definitions (specification only). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTERRORS_H__ -#define __TTERRORS_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* Error codes declaration */ - /* */ - /* The error codes are grouped in `classes' used to indicate the `level' */ - /* at which the error happened. The class is given by an error code's */ - /* high byte. */ - /* */ - /*************************************************************************/ - - - /* Success is always 0. */ - -#define TT_Err_Ok FT_Err_Ok - - /* High level API errors. */ - -#define TT_Err_Invalid_File_Format FT_Err_Invalid_File_Format -#define TT_Err_Invalid_Argument FT_Err_Invalid_Argument -#define TT_Err_Invalid_Driver_Handle FT_Err_Invalid_Driver_Handle -#define TT_Err_Invalid_Face_Handle FT_Err_Invalid_Face_Handle -#define TT_Err_Invalid_Instance_Handle FT_Err_Invalid_Size_Handle -#define TT_Err_Invalid_Glyph_Handle FT_Err_Invalid_Slot_Handle -#define TT_Err_Invalid_CharMap_Handle FT_Err_Invalid_CharMap_Handle -#define TT_Err_Invalid_Glyph_Index FT_Err_Invalid_Glyph_Index - -#define TT_Err_Unimplemented_Feature FT_Err_Unimplemented_Feature - -#define TT_Err_Invalid_Engine FT_Err_Invalid_Driver_Handle - - /* Internal errors. */ - -#define TT_Err_Out_Of_Memory FT_Err_Out_Of_Memory -#define TT_Err_Unlisted_Object FT_Err_Unlisted_Object - - /* General glyph outline errors. */ - -#define TT_Err_Too_Many_Ins FT_Err_Too_Many_Hints -#define TT_Err_Invalid_Composite FT_Err_Invalid_Composite - - /* Bytecode interpreter error codes. */ - - /* These error codes are produced by the TrueType */ - /* bytecode interpreter. They usually indicate a */ - /* broken font file, a broken glyph within a font */ - /* file, or a bug in the interpreter! */ - -#define TT_Err_Invalid_Opcode 0x400 -#define TT_Err_Too_Few_Arguments 0x401 -#define TT_Err_Stack_Overflow 0x402 -#define TT_Err_Code_Overflow 0x403 -#define TT_Err_Bad_Argument 0x404 -#define TT_Err_Divide_By_Zero 0x405 -#define TT_Err_Storage_Overflow 0x406 -#define TT_Err_Cvt_Overflow 0x407 -#define TT_Err_Invalid_Reference 0x408 -#define TT_Err_Invalid_Distance 0x409 -#define TT_Err_Interpolate_Twilight 0x40A -#define TT_Err_Debug_OpCode 0x40B -#define TT_Err_ENDF_In_Exec_Stream 0x40C -#define TT_Err_Out_Of_CodeRanges 0x40D -#define TT_Err_Nested_DEFS 0x40E -#define TT_Err_Invalid_CodeRange 0x40F -#define TT_Err_Invalid_Displacement 0x410 -#define TT_Err_Execution_Too_Long 0x411 -#define TT_Err_Too_Many_Function_Defs 0x412 -#define TT_Err_Too_Many_Instruction_Defs 0x413 - - /* Other TrueType specific error codes. */ - -#define TT_Err_Table_Missing 0x420 -#define TT_Err_Too_Many_Extensions 0x421 -#define TT_Err_Extensions_Unsupported 0x422 -#define TT_Err_Invalid_Extension_Id 0x423 - -#define TT_Err_No_Vertical_Data 0x424 - -#define TT_Err_Max_Profile_Missing 0x430 -#define TT_Err_Header_Table_Missing 0x431 -#define TT_Err_Horiz_Header_Missing 0x432 -#define TT_Err_Locations_Missing 0x433 -#define TT_Err_Name_Table_Missing 0x434 -#define TT_Err_CMap_Table_Missing 0x435 -#define TT_Err_Hmtx_Table_Missing 0x436 -#define TT_Err_OS2_Table_Missing 0x437 -#define TT_Err_Post_Table_Missing 0x438 - -#define TT_Err_Invalid_Horiz_Metrics 0x440 -#define TT_Err_Invalid_CharMap_Format 0x441 -#define TT_Err_Invalid_PPem 0x442 -#define TT_Err_Invalid_Vert_Metrics 0x443 - -#define TT_Err_Could_Not_Find_Context 0x450 - - -FT_END_HEADER - - -#endif /* __TTERRORS_H__ */ - - -/* END */ Index: xc/extras/freetype2/include/freetype/internal/tttypes.h diff -u xc/extras/freetype2/include/freetype/internal/tttypes.h:1.1.1.2 xc/extras/freetype2/include/freetype/internal/tttypes.h:1.1.1.5 --- xc/extras/freetype2/include/freetype/internal/tttypes.h:1.1.1.2 Tue May 15 23:45:58 2001 +++ xc/extras/freetype2/include/freetype/internal/tttypes.h Mon Jan 14 11:52:08 2002 @@ -5,7 +5,7 @@ /* Basic SFNT/TrueType type definitions and interface (specification */ /* only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -92,7 +92,7 @@ /* */ /* range_shift :: Must be num_tables*16 - search_range. */ /* */ - typedef struct SFNT_Header_ + typedef struct SFNT_Header_ { FT_ULong format_tag; FT_UShort num_tables; @@ -922,6 +922,8 @@ typedef struct TT_CMap0_ { + FT_ULong language; /* for Mac fonts (originally ushort) */ + FT_Byte* glyphIdArray; } TT_CMap0; @@ -941,6 +943,8 @@ typedef struct TT_CMap2_ { + FT_ULong language; /* for Mac fonts (originally ushort) */ + FT_UShort* subHeaderKeys; /* high byte mapping table */ /* value = subHeader index * 8 */ @@ -966,14 +970,16 @@ typedef struct TT_CMap4_ { - FT_UShort segCountX2; /* number of segments * 2 */ - FT_UShort searchRange; /* these parameters can be used */ - FT_UShort entrySelector; /* for a binary search */ + FT_ULong language; /* for Mac fonts (originally ushort) */ + + FT_UShort segCountX2; /* number of segments * 2 */ + FT_UShort searchRange; /* these parameters can be used */ + FT_UShort entrySelector; /* for a binary search */ FT_UShort rangeShift; TT_CMap4Segment* segments; FT_UShort* glyphIdArray; - FT_UShort numGlyphId; /* control value */ + FT_UShort numGlyphId; /* control value */ TT_CMap4Segment* last_segment; /* last used segment; this is a small */ /* cache to potentially increase speed */ @@ -984,6 +990,8 @@ typedef struct TT_CMap6_ { + FT_ULong language; /* for Mac fonts (originally ushort) */ + FT_UShort firstCode; /* first character code of subrange */ FT_UShort entryCount; /* number of character codes in subrange */ @@ -992,12 +1000,54 @@ } TT_CMap6; + /* auxiliary table for format 8 and 12 */ + + typedef struct TT_CMapGroup_ + { + FT_ULong startCharCode; + FT_ULong endCharCode; + FT_ULong startGlyphID; + + } TT_CMapGroup; + + + /* FreeType handles format 8 and 12 identically. It is not necessary to + cover mixed 16bit and 32bit codes since FreeType always uses FT_ULong + for input character codes -- converting Unicode surrogates to 32bit + character codes must be done by the application. */ + + typedef struct TT_CMap8_12_ + { + FT_ULong language; /* for Mac fonts */ + + FT_ULong nGroups; + TT_CMapGroup* groups; + + TT_CMapGroup* last_group; /* last used group; this is a small */ + /* cache to potentially increase speed */ + } TT_CMap8_12; + + + /* format 10 */ + + typedef struct TT_CMap10_ + { + FT_ULong language; /* for Mac fonts */ + + FT_ULong startCharCode; /* first character covered */ + FT_ULong numChars; /* number of characters covered */ + + FT_UShort* glyphs; + + } TT_CMap10; + + typedef struct TT_CMapTable_ TT_CMapTable; - typedef - FT_UInt (*TT_CharMap_Func)( TT_CMapTable* charmap, - FT_ULong char_code ); + typedef FT_UInt + (*TT_CharMap_Func)( TT_CMapTable* charmap, + FT_ULong char_code ); /* charmap table */ @@ -1006,18 +1056,19 @@ FT_UShort platformID; FT_UShort platformEncodingID; FT_UShort format; - FT_UShort length; - FT_UShort version; + FT_ULong length; /* must be ulong for formats 8, 10, and 12 */ FT_Bool loaded; FT_ULong offset; union { - TT_CMap0 cmap0; - TT_CMap2 cmap2; - TT_CMap4 cmap4; - TT_CMap6 cmap6; + TT_CMap0 cmap0; + TT_CMap2 cmap2; + TT_CMap4 cmap4; + TT_CMap6 cmap6; + TT_CMap8_12 cmap8_12; + TT_CMap10 cmap10; } c; TT_CharMap_Func get_index; @@ -1099,7 +1150,8 @@ /* a function type used for the truetype bytecode interpreter hooks */ - typedef FT_Error (*TT_Interpreter)( void* exec_context ); + typedef FT_Error + (*TT_Interpreter)( void* exec_context ); /* forward declaration */ typedef struct TT_Loader_ TT_Loader; @@ -1130,11 +1182,11 @@ /* <Note> */ /* The stream cursor must be at the font file's origin. */ /* */ - typedef - FT_Error (*TT_Goto_Table_Func)( TT_Face face, - FT_ULong tag, - FT_Stream stream, - FT_ULong* length ); + typedef FT_Error + (*TT_Goto_Table_Func)( TT_Face face, + FT_ULong tag, + FT_Stream stream, + FT_ULong* length ); /*************************************************************************/ @@ -1165,11 +1217,11 @@ /* alternative formats (e.g. compressed ones) might use something */ /* different. */ /* */ - typedef - FT_Error (*TT_Access_Glyph_Frame_Func)( TT_Loader* loader, - FT_UInt glyph_index, - FT_ULong offset, - FT_UInt byte_count ); + typedef FT_Error + (*TT_Access_Glyph_Frame_Func)( TT_Loader* loader, + FT_UInt glyph_index, + FT_ULong offset, + FT_UInt byte_count ); /*************************************************************************/ @@ -1187,8 +1239,8 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - typedef - FT_Error (*TT_Load_Glyph_Element_Func)( TT_Loader* loader ); + typedef FT_Error + (*TT_Load_Glyph_Element_Func)( TT_Loader* loader ); /*************************************************************************/ @@ -1202,8 +1254,8 @@ /* <Input> */ /* loader :: The current TrueType glyph loader object. */ /* */ - typedef - void (*TT_Forget_Glyph_Frame_Func)( TT_Loader* loader ); + typedef void + (*TT_Forget_Glyph_Frame_Func)( TT_Loader* loader ); @@ -1570,6 +1622,8 @@ FT_BBox bbox; FT_Int left_bearing; FT_Int advance; + FT_Int linear; + FT_Bool linear_def; FT_Bool preserve_pps; FT_Vector pp1; FT_Vector pp2; @@ -1586,7 +1640,6 @@ /* for possible extensibility in other formats */ void* other; - }; Index: xc/extras/freetype2/obj/.cvsignore diff -u xc/extras/freetype2/obj/.cvsignore:1.1.1.1 xc/extras/freetype2/obj/.cvsignore:removed --- xc/extras/freetype2/obj/.cvsignore:1.1.1.1 Fri Dec 8 16:26:18 2000 +++ xc/extras/freetype2/obj/.cvsignore Fri Jan 18 15:21:50 2002 @@ -1,3 +0,0 @@ -*.lo -libfreetype.la -.libs Index: xc/extras/freetype2/obj/README diff -u xc/extras/freetype2/obj/README:1.1.1.1 xc/extras/freetype2/obj/README:removed --- xc/extras/freetype2/obj/README:1.1.1.1 Fri Dec 8 16:26:18 2000 +++ xc/extras/freetype2/obj/README Fri Jan 18 15:21:50 2002 @@ -1 +0,0 @@ -This directory contains all the object files created when building the library Index: xc/extras/freetype2/src/Jamfile diff -u /dev/null xc/extras/freetype2/src/Jamfile:1.1.1.2 --- /dev/null Fri Jan 18 15:21:50 2002 +++ xc/extras/freetype2/src/Jamfile Mon Jan 14 11:52:08 2002 @@ -0,0 +1,33 @@ +# FreeType 2 src Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src ; + +# We need to add "freetype/src" to the current include path in order to +# compile any part of FreeType 2. +# +SubDirHdrs [ FT2_SubDir src ] ; + +# The file <freetype/internal/internal.h> is used to define macros that are +# later used in #include statements. It needs to be parsed in order to +# record these definitions. +# +HDRMACRO [ FT2_SubDir include internal internal.h ] ; + +SubInclude FT2_TOP src pshinter ; +SubInclude FT2_TOP src autohint ; +SubInclude FT2_TOP src base ; +SubInclude FT2_TOP src cache ; +SubInclude FT2_TOP src cff ; +SubInclude FT2_TOP src cid ; +SubInclude FT2_TOP src pcf ; +SubInclude FT2_TOP src psaux ; +SubInclude FT2_TOP src psnames ; +SubInclude FT2_TOP src raster ; +SubInclude FT2_TOP src sfnt ; +SubInclude FT2_TOP src smooth ; +SubInclude FT2_TOP src truetype ; +SubInclude FT2_TOP src type1 ; +SubInclude FT2_TOP src winfonts ; + +# end of src Jamfile Index: xc/extras/freetype2/src/autohint/Jamfile diff -u /dev/null xc/extras/freetype2/src/autohint/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:51 2002 +++ xc/extras/freetype2/src/autohint/Jamfile Sun Sep 9 22:56:00 2001 @@ -0,0 +1,23 @@ +# FreeType 2 src/autohint Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src autohint ; + +SubDirHdrs [ FT2_SubDir src autohint ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = ahangles ahglobal ahglyph ahhint ahmodule ; + } + else + { + _sources = autohint ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/autohint Jamfile Index: xc/extras/freetype2/src/autohint/ahangles.c diff -u xc/extras/freetype2/src/autohint/ahangles.c:1.1.1.2 xc/extras/freetype2/src/autohint/ahangles.c:1.1.1.3 --- xc/extras/freetype2/src/autohint/ahangles.c:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/autohint/ahangles.c Sun Dec 16 12:49:25 2001 @@ -5,7 +5,7 @@ /* A routine used to compute vector angles with limited accuracy */ /* and very high speed (body). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ @@ -64,8 +64,8 @@ }; - FT_LOCAL_DEF - AH_Angle ah_angle( FT_Vector* v ) + FT_LOCAL_DEF AH_Angle + ah_angle( FT_Vector* v ) { FT_Pos dx, dy; AH_Angle angle; Index: xc/extras/freetype2/src/autohint/ahangles.h diff -u xc/extras/freetype2/src/autohint/ahangles.h:1.1.1.2 xc/extras/freetype2/src/autohint/ahangles.h:1.1.1.3 --- xc/extras/freetype2/src/autohint/ahangles.h:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/autohint/ahangles.h Sun Dec 16 12:49:25 2001 @@ -5,7 +5,7 @@ /* A routine used to compute vector angles with limited accuracy */ /* and very high speed (specification). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ @@ -47,8 +47,8 @@ const AH_Angle ah_arctan[1L << AH_ATAN_BITS]; - FT_LOCAL - AH_Angle ah_angle( FT_Vector* v ); + FT_LOCAL AH_Angle + ah_angle( FT_Vector* v ); FT_END_HEADER Index: xc/extras/freetype2/src/autohint/aherrors.h diff -u /dev/null xc/extras/freetype2/src/autohint/aherrors.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:51 2002 +++ xc/extras/freetype2/src/autohint/aherrors.h Sun Sep 9 22:56:00 2001 @@ -0,0 +1,40 @@ +/***************************************************************************/ +/* */ +/* aherrors.h */ +/* */ +/* Autohinter error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the Autohinter error enumeration */ + /* constants. */ + /* */ + /*************************************************************************/ + +#ifndef __AHERRORS_H__ +#define __AHERRORS_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX AH_Err_ +#define FT_ERR_BASE FT_Mod_Err_Autohint + +#include FT_ERRORS_H + +#endif /* __AHERRORS_H__ */ + +/* END */ Index: xc/extras/freetype2/src/autohint/ahglobal.c diff -u xc/extras/freetype2/src/autohint/ahglobal.c:1.1.1.2 xc/extras/freetype2/src/autohint/ahglobal.c:1.1.1.4 --- xc/extras/freetype2/src/autohint/ahglobal.c:1.1.1.2 Tue May 15 23:45:40 2001 +++ xc/extras/freetype2/src/autohint/ahglobal.c Sun Dec 16 12:49:25 2001 @@ -4,7 +4,7 @@ /* */ /* Routines used to compute global metrics automatically (body). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ @@ -20,6 +20,7 @@ #include <ft2build.h> +#include FT_INTERNAL_DEBUG_H #include "ahglobal.h" #include "ahglyph.h" @@ -38,16 +39,16 @@ /* simple insertion sort */ - static - void sort_values( FT_Int count, - FT_Pos* table ) + static void + sort_values( FT_Int count, + FT_Pos* table ) { FT_Int i, j, swap; for ( i = 1; i < count; i++ ) { - for ( j = i; j > 1; j-- ) + for ( j = i; j > 0; j-- ) { if ( table[j] > table[j - 1] ) break; @@ -60,8 +61,8 @@ } - static - FT_Error ah_hinter_compute_blues( AH_Hinter* hinter ) + static FT_Error + ah_hinter_compute_blues( AH_Hinter* hinter ) { AH_Blue blue; AH_Globals* globals = &hinter->globals->design; @@ -214,9 +215,9 @@ } while ( next != index ); /* now, set the `round' flag depending on the segment's kind */ - round = + round = FT_BOOL( FT_CURVE_TAG( glyph->outline.tags[prev] ) != FT_Curve_Tag_On || - FT_CURVE_TAG( glyph->outline.tags[next] ) != FT_Curve_Tag_On ; + FT_CURVE_TAG( glyph->outline.tags[next] ) != FT_Curve_Tag_On ); AH_LOG(( "%c ", round ? 'r' : 'f' )); } @@ -265,7 +266,7 @@ { FT_Pos ref = *blue_ref; FT_Pos shoot = *blue_shoot; - FT_Bool over_ref = ( shoot > ref ); + FT_Bool over_ref = FT_BOOL( shoot > ref ); if ( AH_IS_TOP_BLUE( blue ) ^ over_ref ) @@ -284,8 +285,8 @@ } - static - FT_Error ah_hinter_compute_widths( AH_Hinter* hinter ) + static FT_Error + ah_hinter_compute_widths( AH_Hinter* hinter ) { /* scan the array of segments in each direction */ AH_Outline* outline = hinter->glyph; @@ -383,8 +384,8 @@ } - FT_LOCAL_DEF - FT_Error ah_hinter_compute_globals( AH_Hinter* hinter ) + FT_LOCAL_DEF FT_Error + ah_hinter_compute_globals( AH_Hinter* hinter ) { return ah_hinter_compute_widths( hinter ) || ah_hinter_compute_blues ( hinter ); Index: xc/extras/freetype2/src/autohint/ahglobal.h diff -u xc/extras/freetype2/src/autohint/ahglobal.h:1.1.1.2 xc/extras/freetype2/src/autohint/ahglobal.h:1.1.1.3 --- xc/extras/freetype2/src/autohint/ahglobal.h:1.1.1.2 Tue May 15 23:45:40 2001 +++ xc/extras/freetype2/src/autohint/ahglobal.h Sun Dec 16 12:49:25 2001 @@ -5,7 +5,7 @@ /* Routines used to compute global metrics automatically */ /* (specification). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ Index: xc/extras/freetype2/src/autohint/ahglyph.c diff -u xc/extras/freetype2/src/autohint/ahglyph.c:1.1.1.2 xc/extras/freetype2/src/autohint/ahglyph.c:1.1.1.5 --- xc/extras/freetype2/src/autohint/ahglyph.c:1.1.1.2 Tue May 15 23:45:40 2001 +++ xc/extras/freetype2/src/autohint/ahglyph.c Mon Jan 14 11:52:08 2002 @@ -5,7 +5,7 @@ /* Routines used to load and analyze a given glyph before hinting */ /* (body). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ @@ -24,17 +24,120 @@ #include "ahglyph.h" #include "ahangles.h" #include "ahglobal.h" +#include "aherrors.h" #include <stdio.h> -#define xxxAH_DEBUG_GLYPH +#ifdef AH_DEBUG + void + ah_dump_edges( AH_Outline* outline ) + { + AH_Edge* edges; + AH_Edge* edge_limit; + AH_Segment* segments; + FT_Int dimension; + + edges = outline->horz_edges; + edge_limit = edges + outline->num_hedges; + segments = outline->horz_segments; + + for ( dimension = 1; dimension >= 0; dimension-- ) + { + AH_Edge* edge; + + + printf ( "Table of %s edges:\n", + !dimension ? "vertical" : "horizontal" ); + printf ( " [ index | pos | dir | link |" + " serif | blue | opos | pos ]\n" ); + + for ( edge = edges; edge < edge_limit; edge++ ) + { + printf ( " [ %5d | %4d | %5s | %4d | %5d | %c | %5.2f | %5.2f ]\n", + edge - edges, + (int)edge->fpos, + edge->dir == ah_dir_up + ? "up" + : ( edge->dir == ah_dir_down + ? "down" + : ( edge->dir == ah_dir_left + ? "left" + : ( edge->dir == ah_dir_right + ? "right" + : "none" ) ) ), + edge->link ? ( edge->link - edges ) : -1, + edge->serif ? ( edge->serif - edges ) : -1, + edge->blue_edge ? 'y' : 'n', + edge->opos / 64.0, + edge->pos / 64.0 ); + } + + edges = outline->vert_edges; + edge_limit = edges + outline->num_vedges; + segments = outline->vert_segments; + } + } + + + /* A function used to dump the array of linked segments */ + void + ah_dump_segments( AH_Outline* outline ) + { + AH_Segment* segments; + AH_Segment* segment_limit; + AH_Point* points; + FT_Int dimension; + + + points = outline->points; + segments = outline->horz_segments; + segment_limit = segments + outline->num_hsegments; + + for ( dimension = 1; dimension >= 0; dimension-- ) + { + AH_Segment* seg; + + printf ( "Table of %s segments:\n", + !dimension ? "vertical" : "horizontal" ); + printf ( " [ index | pos | dir | link | serif |" + " numl | first | start ]\n" ); + + for ( seg = segments; seg < segment_limit; seg++ ) + { + printf ( " [ %5d | %4d | %5s | %4d | %5d | %4d | %5d | %5d ]\n", + seg - segments, + (int)seg->pos, + seg->dir == ah_dir_up + ? "up" + : ( seg->dir == ah_dir_down + ? "down" + : ( seg->dir == ah_dir_left + ? "left" + : ( seg->dir == ah_dir_right + ? "right" + : "none" ) ) ), + seg->link ? (seg->link-segments) : -1, + seg->serif ? (seg->serif-segments) : -1, + (int)seg->num_linked, + seg->first - points, + seg->last - points ); + } + + segments = outline->vert_segments; + segment_limit = segments + outline->num_vsegments; + } + } + +#endif /* AH_DEBUG */ + + /* compute the direction value of a given vector.. */ - static - AH_Direction ah_compute_direction( FT_Pos dx, - FT_Pos dy ) + static AH_Direction + ah_compute_direction( FT_Pos dx, + FT_Pos dy ) { AH_Direction dir; FT_Pos ax = ABS( dx ); @@ -60,9 +163,9 @@ /* this function is used by ah_get_orientation (see below) to test */ /* the fill direction of a given bbox extrema */ - static - int ah_test_extrema( FT_Outline* outline, - int n ) + static int + ah_test_extrema( FT_Outline* outline, + int n ) { FT_Vector *prev, *cur, *next; FT_Pos product; @@ -114,8 +217,8 @@ /* */ /* The function returns either 1 or -1. */ /* */ - static - int ah_get_orientation( FT_Outline* outline ) + static int + ah_get_orientation( FT_Outline* outline ) { FT_BBox box; FT_BBox indices; @@ -127,8 +230,8 @@ indices.xMax = -1; indices.yMax = -1; - box.xMin = box.yMin = 32767; - box.xMax = box.yMax = -32768; + box.xMin = box.yMin = 32767L; + box.xMax = box.yMax = -32768L; /* is it empty? */ if ( outline->n_contours < 1 ) @@ -196,9 +299,9 @@ /* <Description> */ /* Creates a new and empty AH_Outline object. */ /* */ - FT_LOCAL_DEF - FT_Error ah_outline_new( FT_Memory memory, - AH_Outline** aoutline ) + FT_LOCAL_DEF FT_Error + ah_outline_new( FT_Memory memory, + AH_Outline** aoutline ) { FT_Error error; AH_Outline* outline; @@ -222,8 +325,8 @@ /* <Description> */ /* Destroys a given AH_Outline object. */ /* */ - FT_LOCAL_DEF - void ah_outline_done( AH_Outline* outline ) + FT_LOCAL_DEF void + ah_outline_done( AH_Outline* outline ) { FT_Memory memory = outline->memory; @@ -246,9 +349,9 @@ /* Saves the content of a given AH_Outline object into a face's glyph */ /* slot. */ /* */ - FT_LOCAL_DEF - void ah_outline_save( AH_Outline* outline, - AH_Loader* gloader ) + FT_LOCAL_DEF void + ah_outline_save( AH_Outline* outline, + AH_Loader* gloader ) { AH_Point* point = outline->points; AH_Point* point_limit = point + outline->num_points; @@ -262,9 +365,9 @@ vec->x = point->x; vec->y = point->y; - if ( point->flags & ah_flah_conic ) + if ( point->flags & ah_flag_conic ) tag[0] = FT_Curve_Tag_Conic; - else if ( point->flags & ah_flah_cubic ) + else if ( point->flags & ah_flag_cubic ) tag[0] = FT_Curve_Tag_Cubic; else tag[0] = FT_Curve_Tag_On; @@ -281,12 +384,12 @@ /* Loads an unscaled outline from a glyph slot into an AH_Outline */ /* object. */ /* */ - FT_LOCAL_DEF - FT_Error ah_outline_load( AH_Outline* outline, - FT_Face face ) + FT_LOCAL_DEF FT_Error + ah_outline_load( AH_Outline* outline, + FT_Face face ) { FT_Memory memory = outline->memory; - FT_Error error = FT_Err_Ok; + FT_Error error = AH_Err_Ok; FT_Outline* source = &face->glyph->outline; FT_Int num_points = source->n_points; FT_Int num_contours = source->n_contours; @@ -297,7 +400,7 @@ if ( !face || !face->size || face->glyph->format != ft_glyph_format_outline ) - return FT_Err_Invalid_Argument; + return AH_Err_Invalid_Argument; /* first of all, reallocate the contours array if necessary */ if ( num_contours > outline->max_contours ) @@ -344,8 +447,6 @@ outline->num_hsegments = 0; outline->num_vsegments = 0; -#if 1 - /* We can't rely on the value of `FT_Outline.flags' to know the fill */ /* direction used for a glyph, given that some fonts are broken (e.g. */ /* the Arphic ones). We thus recompute it each time we need to. */ @@ -359,23 +460,6 @@ outline->horz_major_dir = ah_dir_right; } -#else - - /* Compute the vertical and horizontal major directions; this is */ - /* currently done by inspecting the `ft_outline_reverse_fill' flag. */ - /* However, some fonts have improper glyphs, and it'd be a good idea */ - /* to be able to re-compute these values on the fly. */ - outline->vert_major_dir = ah_dir_up; - outline->horz_major_dir = ah_dir_left; - - if ( source->flags & ft_outline_reverse_fill ) - { - outline->vert_major_dir = ah_dir_down; - outline->horz_major_dir = ah_dir_right; - } - -#endif /* 1 */ - outline->x_scale = face->size->metrics.x_scale; outline->y_scale = face->size->metrics.y_scale; @@ -418,9 +502,9 @@ switch ( FT_CURVE_TAG( *tag ) ) { case FT_Curve_Tag_Conic: - point->flags = ah_flah_conic; break; + point->flags = ah_flag_conic; break; case FT_Curve_Tag_Cubic: - point->flags = ah_flah_cubic; break; + point->flags = ah_flag_cubic; break; default: ; } @@ -474,7 +558,7 @@ for ( ; contour < contour_limit; contour++, end++ ) { contour[0] = points + index; - index = end[0] + 1; + index = (short)( end[0] + 1 ); } } @@ -484,47 +568,50 @@ { AH_Point* prev; AH_Point* next; - FT_Vector vec; + FT_Vector ivec, ovec; - prev = point->prev; - vec.x = point->fx - prev->fx; - vec.y = point->fy - prev->fy; + prev = point->prev; + ivec.x = point->fx - prev->fx; + ivec.y = point->fy - prev->fy; - point->in_dir = ah_compute_direction( vec.x, vec.y ); + point->in_dir = ah_compute_direction( ivec.x, ivec.y ); -#ifndef AH_OPTION_NO_WEAK_INTERPOLATION - point->in_angle = ah_angle( &vec ); -#endif + next = point->next; + ovec.x = next->fx - point->fx; + ovec.y = next->fy - point->fy; - next = point->next; - vec.x = next->fx - point->fx; - vec.y = next->fy - point->fy; + point->out_dir = ah_compute_direction( ovec.x, ovec.y ); - point->out_dir = ah_compute_direction( vec.x, vec.y ); - #ifndef AH_OPTION_NO_WEAK_INTERPOLATION - point->out_angle = ah_angle( &vec ); - + if ( point->flags & (ah_flag_conic | ah_flag_cubic) ) { - AH_Angle delta = point->in_angle - point->out_angle; + Is_Weak_Point: + point->flags |= ah_flag_weak_interpolation; + } + else if ( point->out_dir == point->in_dir ) + { + AH_Angle angle_in, angle_out, delta; + + + if ( point->out_dir != ah_dir_none ) + goto Is_Weak_Point; + angle_in = ah_angle( &ivec ); + angle_out = ah_angle( &ovec ); + delta = angle_in - angle_out; + if ( delta > AH_PI ) + delta = AH_2PI - delta; + if ( delta < 0 ) delta = -delta; + if ( delta < 2 ) - point->flags |= ah_flah_weak_interpolation; + goto Is_Weak_Point; } - -#if 0 - if ( point->flags & ( ah_flah_conic | ah_flah_cubic ) ) - point->flags |= ah_flah_weak_interpolation; -#endif - -#endif /* !AH_OPTION_NO_WEAK_INTERPOLATION */ - -#ifdef AH_OPTION_NO_STRONG_INTERPOLATION - point->flags |= ah_flah_weak_interpolation; + else if ( point->in_dir == -point->out_dir ) + goto Is_Weak_Point; #endif } } @@ -535,9 +622,9 @@ } - FT_LOCAL_DEF - void ah_setup_uv( AH_Outline* outline, - AH_UV source ) + FT_LOCAL_DEF void + ah_setup_uv( AH_Outline* outline, + AH_UV source ) { AH_Point* point = outline->points; AH_Point* point_limit = point + outline->num_points; @@ -589,8 +676,8 @@ } - FT_LOCAL_DEF - void ah_outline_compute_segments( AH_Outline* outline ) + FT_LOCAL_DEF void + ah_outline_compute_segments( AH_Outline* outline ) { int dimension; AH_Segment* segments; @@ -666,7 +753,6 @@ if ( point == last ) break; } - } last = point; @@ -694,7 +780,7 @@ /* a segment is round if either its first or last point */ /* is a control point */ if ( ( segment->first->flags | point->flags ) & - ah_flah_control ) + ah_flag_control ) segment->flags |= ah_edge_round; /* compute segment size */ @@ -730,7 +816,7 @@ segment_dir = point->out_dir; /* clear all segment fields */ - memset( segment, 0, sizeof ( *segment ) ); + MEM_Set( segment, 0, sizeof ( *segment ) ); segment->dir = segment_dir; segment->flags = ah_edge_normal; @@ -792,7 +878,7 @@ if ( min_point ) { /* clear all segment fields */ - memset( segment, 0, sizeof ( *segment ) ); + MEM_Set( segment, 0, sizeof ( *segment ) ); segment->dir = segment_dir; segment->flags = ah_edge_normal; @@ -808,7 +894,7 @@ if ( max_point ) { /* clear all segment fields */ - memset( segment, 0, sizeof ( *segment ) ); + MEM_Set( segment, 0, sizeof ( *segment ) ); segment->dir = segment_dir; segment->flags = ah_edge_normal; @@ -832,8 +918,8 @@ } - FT_LOCAL_DEF - void ah_outline_link_segments( AH_Outline* outline ) + FT_LOCAL_DEF void + ah_outline_link_segments( AH_Outline* outline ) { AH_Segment* segments; AH_Segment* segment_limit; @@ -850,19 +936,23 @@ AH_Segment* seg1; AH_Segment* seg2; - /* now compare each segment to the others */ for ( seg1 = segments; seg1 < segment_limit; seg1++ ) { - FT_Pos best_score = 32000; - AH_Segment* best_segment = 0; + FT_Pos best_score; + AH_Segment* best_segment; - /* the fake segments are introduced to hint the metrics -- */ /* we must never link them to anything */ if ( seg1->first == seg1->last ) continue; + best_segment = seg1->link; + if ( best_segment ) + best_score = seg1->score; + else + best_score = 32000; + for ( seg2 = segments; seg2 < segment_limit; seg2++ ) if ( seg1 != seg2 && seg1->dir + seg2->dir == 0 ) { @@ -875,24 +965,17 @@ /* check that the segments are correctly oriented and */ /* positioned to form a black distance */ - is_dir = ( seg1->dir == outline->horz_major_dir || - seg1->dir == outline->vert_major_dir ); - is_pos = pos1 > pos2; + is_dir = (FT_Bool)( seg1->dir == outline->horz_major_dir || + seg1->dir == outline->vert_major_dir ); + is_pos = (FT_Bool)( pos1 > pos2 ); if ( pos1 == pos2 || !(is_dir ^ is_pos) ) continue; - /* Check the two segments. We now have a better algorithm */ - /* that doesn't rely on the segment points themselves but */ - /* on their relative position. This gets rids of many */ - /* unpleasant artefacts and incorrect stem/serifs */ - /* computations. */ - - /* first of all, compute the size of the `common' height */ { FT_Pos min = seg1->min_coord; FT_Pos max = seg1->max_coord; - FT_Pos len, score; + FT_Pos len, dist, score; FT_Pos size1, size2; @@ -902,22 +985,24 @@ if ( min < seg2->min_coord ) min = seg2->min_coord; - if ( max < seg2->max_coord ) + if ( max > seg2->max_coord ) max = seg2->max_coord; len = max - min; - score = seg2->pos - seg1->pos; - if ( score < 0 ) - score = -score; - - /* before comparing the scores, take care that the segments */ - /* are really facing each other (often not for italics..) */ - if ( 4 * len >= size1 && 4 * len >= size2 ) - if ( score < best_score ) - { - best_score = score; - best_segment = seg2; - } + dist = seg2->pos - seg1->pos; + if ( dist < 0 ) + dist = -dist; + + if ( len < 8 ) + score = 300*8 + dist - len*3; + else + score = dist + 300/len; + + if ( score < best_score ) + { + best_score = score; + best_segment = seg2; + } } } @@ -951,63 +1036,9 @@ } } - -#ifdef AH_DEBUG_GLYPH - - /* A function used to dump the array of linked segments */ - void ah_dump_segments( AH_Outline* outline ) - { - AH_Segment* segments; - AH_Segment* segment_limit; - AH_Point* points; - FT_Int dimension; - - - points = outline->points; - segments = outline->horz_segments; - segment_limit = segments + outline->num_hsegments; - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AH_Segment* seg; - - - printf ( "Table of %s segments:\n", - !dimension ? "vertical" : "horizontal" ); - printf ( " [ index | pos | dir | link | serif |" - " numl | first | start ]\n" ); - - for ( seg = segments; seg < segment_limit; seg++ ) - { - printf ( " [ %5d | %4d | %5s | %4d | %5d | %4d | %5d | %5d ]\n", - seg - segments, - (int)seg->pos, - seg->dir == ah_dir_up - ? "up" - : ( seg->dir == ah_dir_down - ? "down" - : ( seg->dir == ah_dir_left - ? "left" - : ( seg->dir == ah_dir_right - ? "right" - : "none" ) ) ), - seg->link ? (seg->link-segments) : -1, - seg->serif ? (seg->serif-segments) : -1, - (int)seg->num_linked, - seg->first - points, - seg->last - points ); - } - - segments = outline->vert_segments; - segment_limit = segments + outline->num_vsegments; - } - } - -#endif /* AH_DEBUG_GLYPH */ - - static - void ah_outline_compute_edges( AH_Outline* outline ) + static void + ah_outline_compute_edges( AH_Outline* outline ) { AH_Edge* edges; AH_Segment* segments; @@ -1090,7 +1121,7 @@ edge_limit++; /* clear all edge fields */ - memset( edge, 0, sizeof ( *edge ) ); + MEM_Set( edge, 0, sizeof ( *edge ) ); /* add the segment to the new edge's list */ edge->first = seg; @@ -1168,7 +1199,7 @@ /* check for links -- if seg->serif is set, then seg->link must */ /* be ignored */ - is_serif = seg->serif && seg->serif->edge != edge; + is_serif = (FT_Bool)( seg->serif && seg->serif->edge != edge ); if ( seg->link || is_serif ) { @@ -1218,7 +1249,7 @@ /* set the round/straight flags */ edge->flags = ah_edge_normal; - if ( is_straight == 0 && is_round ) + if ( is_round > 0 && is_round >= is_straight ) edge->flags |= ah_edge_round; /* set the edge's main direction */ @@ -1259,8 +1290,8 @@ /* <Description> */ /* Performs feature detection on a given AH_Outline object. */ /* */ - FT_LOCAL_DEF - void ah_outline_detect_features( AH_Outline* outline ) + FT_LOCAL_DEF void + ah_outline_detect_features( AH_Outline* outline ) { ah_outline_compute_segments( outline ); ah_outline_link_segments ( outline ); @@ -1277,16 +1308,50 @@ /* Computes the `blue edges' in a given outline (i.e. those that must */ /* be snapped to a blue zone edge (top or bottom). */ /* */ - FT_LOCAL_DEF - void ah_outline_compute_blue_edges( AH_Outline* outline, - AH_Face_Globals* face_globals ) + FT_LOCAL_DEF void + ah_outline_compute_blue_edges( AH_Outline* outline, + AH_Face_Globals* face_globals ) { AH_Edge* edge = outline->horz_edges; AH_Edge* edge_limit = edge + outline->num_hedges; AH_Globals* globals = &face_globals->design; FT_Fixed y_scale = outline->y_scale; + FT_Bool blue_active[ah_blue_max]; + + + /* compute which blue zones are active, i.e. have their scaled */ + /* size < 3/4 pixels */ + { + AH_Blue blue; + FT_Bool check = 0; + + for ( blue = ah_blue_capital_top; blue < ah_blue_max; blue++ ) + { + FT_Pos ref, shoot, dist; + + + ref = globals->blue_refs[blue]; + shoot = globals->blue_shoots[blue]; + dist = ref-shoot; + if ( dist < 0 ) + dist = -dist; + + blue_active[blue] = 0; + + if ( FT_MulFix( dist, y_scale ) < 48 ) + { + blue_active[blue] = 1; + check = 1; + } + } + + /* return immediately if no blue zone is active */ + if ( !check ) + return; + } + /* compute for each horizontal edge, which blue zone is closer */ for ( ; edge < edge_limit; edge++ ) { @@ -1306,9 +1371,13 @@ /* zone, check for left edges */ /* */ /* of course, that's for TrueType XXX */ - FT_Bool is_top_blue = AH_IS_TOP_BLUE( blue ); - FT_Bool is_major_dir = edge->dir == outline->horz_major_dir; + FT_Bool is_top_blue = + FT_BOOL( AH_IS_TOP_BLUE( blue ) ); + FT_Bool is_major_dir = + FT_BOOL( edge->dir == outline->horz_major_dir ); + if ( !blue_active[blue] ) + continue; /* if it is a top zone, the edge must be against the major */ /* direction; if it is a bottom zone, it must be in the major */ @@ -1336,7 +1405,7 @@ /* top zone, or under the reference position of a bottom zone */ if ( edge->flags & ah_edge_round && dist != 0 ) { - FT_Bool is_under_ref = edge->fpos < *blue_pos; + FT_Bool is_under_ref = FT_BOOL( edge->fpos < *blue_pos ); if ( is_top_blue ^ is_under_ref ) @@ -1373,9 +1442,9 @@ /* the contents of the detected edges (basically change the `blue */ /* edge' pointer from `design units' to `scaled ones'). */ /* */ - FT_LOCAL_DEF - void ah_outline_scale_blue_edges( AH_Outline* outline, - AH_Face_Globals* globals ) + FT_LOCAL_DEF void + ah_outline_scale_blue_edges( AH_Outline* outline, + AH_Face_Globals* globals ) { AH_Edge* edge = outline->horz_edges; AH_Edge* edge_limit = edge + outline->num_hedges; @@ -1390,60 +1459,6 @@ edge->blue_edge += delta; } } - - -#ifdef AH_DEBUG_GLYPH - - void ah_dump_edges( AH_Outline* outline ) - { - AH_Edge* edges; - AH_Edge* edge_limit; - AH_Segment* segments; - FT_Int dimension; - - - edges = outline->horz_edges; - edge_limit = edges + outline->num_hedges; - segments = outline->horz_segments; - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AH_Edge* edge; - - - printf ( "Table of %s edges:\n", - !dimension ? "vertical" : "horizontal" ); - printf ( " [ index | pos | dir | link |" - " serif | blue | opos | pos ]\n" ); - - for ( edge = edges; edge < edge_limit; edge++ ) - { - printf ( " [ %5d | %4d | %5s | %4d | %5d | %c | %5.2f | %5.2f ]\n", - edge - edges, - (int)edge->fpos, - edge->dir == ah_dir_up - ? "up" - : ( edge->dir == ah_dir_down - ? "down" - : ( edge->dir == ah_dir_left - ? "left" - : ( edge->dir == ah_dir_right - ? "right" - : "none" ) ) ), - edge->link ? ( edge->link - edges ) : -1, - edge->serif ? ( edge->serif - edges ) : -1, - edge->blue_edge ? 'y' : 'n', - edge->opos / 64.0, - edge->pos / 64.0 ); - } - - edges = outline->vert_edges; - edge_limit = edges + outline->num_vedges; - segments = outline->vert_segments; - } - } - -#endif /* AH_DEBUG_GLYPH */ /* END */ Index: xc/extras/freetype2/src/autohint/ahglyph.h diff -u xc/extras/freetype2/src/autohint/ahglyph.h:1.1.1.2 xc/extras/freetype2/src/autohint/ahglyph.h:1.1.1.3 --- xc/extras/freetype2/src/autohint/ahglyph.h:1.1.1.2 Tue May 15 23:45:40 2001 +++ xc/extras/freetype2/src/autohint/ahglyph.h Sun Dec 16 12:49:25 2001 @@ -5,7 +5,7 @@ /* Routines used to load and analyze a given glyph before hinting */ /* (specification). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ @@ -45,43 +45,44 @@ } AH_UV; - FT_LOCAL - void ah_setup_uv( AH_Outline* outline, - AH_UV source ); + FT_LOCAL void + ah_setup_uv( AH_Outline* outline, + AH_UV source ); /* AH_Outline functions - they should be typically called in this order */ - FT_LOCAL - FT_Error ah_outline_new( FT_Memory memory, - AH_Outline** aoutline ); + FT_LOCAL FT_Error + ah_outline_new( FT_Memory memory, + AH_Outline** aoutline ); - FT_LOCAL - FT_Error ah_outline_load( AH_Outline* outline, - FT_Face face ); + FT_LOCAL FT_Error + ah_outline_load( AH_Outline* outline, + FT_Face face ); - FT_LOCAL - void ah_outline_compute_segments( AH_Outline* outline ); + FT_LOCAL void + ah_outline_compute_segments( AH_Outline* outline ); - FT_LOCAL - void ah_outline_link_segments( AH_Outline* outline ); + FT_LOCAL void + ah_outline_link_segments( AH_Outline* outline ); - FT_LOCAL - void ah_outline_detect_features( AH_Outline* outline ); + FT_LOCAL void + ah_outline_detect_features( AH_Outline* outline ); - FT_LOCAL - void ah_outline_compute_blue_edges( AH_Outline* outline, - AH_Face_Globals* globals ); + FT_LOCAL void + ah_outline_compute_blue_edges( AH_Outline* outline, + AH_Face_Globals* globals ); - FT_LOCAL - void ah_outline_scale_blue_edges( AH_Outline* outline, - AH_Face_Globals* globals ); + FT_LOCAL void + ah_outline_scale_blue_edges( AH_Outline* outline, + AH_Face_Globals* globals ); - FT_LOCAL - void ah_outline_save( AH_Outline* outline, AH_Loader* loader ); + FT_LOCAL void + ah_outline_save( AH_Outline* outline, + AH_Loader* loader ); - FT_LOCAL - void ah_outline_done( AH_Outline* outline ); + FT_LOCAL void + ah_outline_done( AH_Outline* outline ); FT_END_HEADER Index: xc/extras/freetype2/src/autohint/ahhint.c diff -u xc/extras/freetype2/src/autohint/ahhint.c:1.1.1.2 xc/extras/freetype2/src/autohint/ahhint.c:1.1.1.5 --- xc/extras/freetype2/src/autohint/ahhint.c:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/autohint/ahhint.c Mon Jan 14 11:52:08 2002 @@ -4,7 +4,7 @@ /* */ /* Glyph hinter (body). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ @@ -23,6 +23,7 @@ #include "ahhint.h" #include "ahglyph.h" #include "ahangles.h" +#include "aherrors.h" #include FT_OUTLINE_H @@ -42,10 +43,10 @@ /* snap a given width in scaled coordinates to one of the */ /* current standard widths */ - static - FT_Pos ah_snap_width( FT_Pos* widths, - FT_Int count, - FT_Pos width ) + static FT_Pos + ah_snap_width( FT_Pos* widths, + FT_Int count, + FT_Pos width ) { int n; FT_Pos best = 64 + 32 + 2; @@ -87,11 +88,11 @@ /* align one stem edge relative to the previous stem edge */ - static - void ah_align_linked_edge( AH_Hinter* hinter, - AH_Edge* base_edge, - AH_Edge* stem_edge, - int vertical ) + static void + ah_align_linked_edge( AH_Hinter* hinter, + AH_Edge* base_edge, + AH_Edge* stem_edge, + int vertical ) { FT_Pos dist = stem_edge->opos - base_edge->opos; AH_Globals* globals = &hinter->globals->scaled; @@ -138,6 +139,9 @@ else if ( dist < 128 ) dist = ( dist + 42 ) & -64; + else + /* XXX: round otherwise, prevent color fringes in LCD mode */ + dist = ( dist + 32 ) & -64; } } @@ -145,10 +149,11 @@ } - static - void ah_align_serif_edge( AH_Hinter* hinter, - AH_Edge* base, - AH_Edge* serif ) + static void + ah_align_serif_edge( AH_Hinter* hinter, + AH_Edge* base, + AH_Edge* serif, + int vertical ) { FT_Pos dist; FT_Pos sign = 1; @@ -166,11 +171,13 @@ /* do not strengthen serifs */ if ( base->flags & ah_edge_done ) { - if ( dist > 64 ) - dist = ( dist + 16 ) & -64; + if ( dist >= 64 ) + dist = (dist+8) & -64; - else if ( dist <= 32 ) + else if ( dist <= 32 && !vertical ) dist = ( dist + 33 ) >> 1; + else + dist = 0; } serif->pos = base->pos + sign * dist; @@ -189,8 +196,8 @@ /* Another alternative edge hinting algorithm */ - static - void ah_hint_edges_3( AH_Hinter* hinter ) + static void + ah_hint_edges_3( AH_Hinter* hinter ) { AH_Edge* edges; AH_Edge* edge_limit; @@ -204,16 +211,14 @@ for ( dimension = 1; dimension >= 0; dimension-- ) { AH_Edge* edge; - AH_Edge* before = 0; - AH_Edge* after = 0; AH_Edge* anchor = 0; int has_serifs = 0; - if ( hinter->disable_vert_edges && !dimension ) + if ( ah_debug_disable_vert && !dimension ) goto Next_Dimension; - if ( hinter->disable_horz_edges && dimension ) + if ( ah_debug_disable_horz && dimension ) goto Next_Dimension; /* we begin by aligning all stems relative to the blue zone */ @@ -258,13 +263,11 @@ if ( !anchor ) anchor = edge; - } - } + } + } /* now, we will align all stem edges, trying to maintain the */ /* relative order of stems in the glyph.. */ - before = 0; - after = 0; for ( edge = edges; edge < edge_limit; edge++ ) { AH_Edge *edge2; @@ -346,7 +349,7 @@ if ( edge->serif ) { - ah_align_serif_edge( hinter, edge->serif, edge ); + ah_align_serif_edge( hinter, edge->serif, edge, dimension ); } else if ( !anchor ) { @@ -375,14 +378,18 @@ } - FT_LOCAL_DEF - void ah_hinter_hint_edges( AH_Hinter* hinter, - FT_Bool no_horz_edges, - FT_Bool no_vert_edges ) + FT_LOCAL_DEF void + ah_hinter_hint_edges( AH_Hinter* hinter, + FT_Bool no_horz_edges, + FT_Bool no_vert_edges ) { - hinter->disable_horz_edges = no_horz_edges; - hinter->disable_vert_edges = no_vert_edges; - +#if 0 + ah_debug_disable_horz = no_horz_edges; + ah_debug_disable_vert = no_vert_edges; +#else + FT_UNUSED( no_horz_edges ); + FT_UNUSED( no_vert_edges ); +#endif /* AH_Interpolate_Blue_Edges( hinter ); -- doesn't seem to help */ /* reduce the problem of the disappearing eye in the `e' of Times... */ /* also, creates some artifacts near the blue zones? */ @@ -418,8 +425,8 @@ /*************************************************************************/ /*************************************************************************/ - static - void ah_hinter_align_edge_points( AH_Hinter* hinter ) + static void + ah_hinter_align_edge_points( AH_Hinter* hinter ) { AH_Outline* outline = hinter->glyph; AH_Edge* edges; @@ -433,13 +440,8 @@ for ( dimension = 1; dimension >= 0; dimension-- ) { AH_Edge* edge; - AH_Edge* before; - AH_Edge* after; - before = 0; - after = 0; - edge = edges; for ( ; edge < edge_limit; edge++ ) { @@ -458,12 +460,12 @@ if ( dimension ) { point->y = edge->pos; - point->flags |= ah_flah_touch_y; + point->flags |= ah_flag_touch_y; } else { point->x = edge->pos; - point->flags |= ah_flah_touch_x; + point->flags |= ah_flag_touch_x; } if ( point == seg->last ) @@ -484,8 +486,8 @@ /* hint the strong points -- this is equivalent to the TrueType `IP' */ - static - void ah_hinter_align_strong_points( AH_Hinter* hinter ) + static void + ah_hinter_align_strong_points( AH_Hinter* hinter ) { AH_Outline* outline = hinter->glyph; FT_Int dimension; @@ -501,7 +503,7 @@ edges = outline->horz_edges; edge_limit = edges + outline->num_hedges; - touch_flag = ah_flah_touch_y; + touch_flag = ah_flag_touch_y; for ( dimension = 1; dimension >= 0; dimension-- ) { @@ -522,7 +524,7 @@ #ifndef AH_OPTION_NO_WEAK_INTERPOLATION /* if this point is candidate to weak interpolation, we will */ /* interpolate it after all strong points have been processed */ - if ( point->flags & ah_flah_weak_interpolation ) + if ( point->flags & ah_flag_weak_interpolation ) continue; #endif @@ -606,17 +608,17 @@ edges = outline->vert_edges; edge_limit = edges + outline->num_vedges; - touch_flag = ah_flah_touch_x; + touch_flag = ah_flag_touch_x; } } #ifndef AH_OPTION_NO_WEAK_INTERPOLATION - static - void ah_iup_shift( AH_Point* p1, - AH_Point* p2, - AH_Point* ref ) + static void + ah_iup_shift( AH_Point* p1, + AH_Point* p2, + AH_Point* ref ) { AH_Point* p; FT_Pos delta = ref->u - ref->v; @@ -630,11 +632,11 @@ } - static - void ah_iup_interp( AH_Point* p1, - AH_Point* p2, - AH_Point* ref1, - AH_Point* ref2 ) + static void + ah_iup_interp( AH_Point* p1, + AH_Point* p2, + AH_Point* ref1, + AH_Point* ref2 ) { AH_Point* p; FT_Pos u; @@ -699,13 +701,11 @@ /* interpolate weak points -- this is equivalent to the TrueType `IUP' */ - static - void ah_hinter_align_weak_points( AH_Hinter* hinter ) + static void + ah_hinter_align_weak_points( AH_Hinter* hinter ) { AH_Outline* outline = hinter->glyph; FT_Int dimension; - AH_Edge* edges; - AH_Edge* edge_limit; AH_Point* points; AH_Point* point_limit; AH_Point** contour_limit; @@ -717,9 +717,7 @@ /* PASS 1: Move segment points to edge positions */ - edges = outline->horz_edges; - edge_limit = edges + outline->num_hedges; - touch_flag = ah_flah_touch_y; + touch_flag = ah_flag_touch_y; contour_limit = outline->contours + outline->num_contours; @@ -793,7 +791,7 @@ for ( point = points; point < point_limit; point++ ) point->y = point->u; - touch_flag = ah_flah_touch_x; + touch_flag = ah_flag_touch_x; ah_setup_uv( outline, ah_uv_ox ); } else @@ -809,8 +807,8 @@ #endif /* !AH_OPTION_NO_WEAK_INTERPOLATION */ - FT_LOCAL_DEF - void ah_hinter_align_points( AH_Hinter* hinter ) + FT_LOCAL_DEF void + ah_hinter_align_points( AH_Hinter* hinter ) { ah_hinter_align_edge_points( hinter ); @@ -836,10 +834,10 @@ /* scale and fit the global metrics */ - static - void ah_hinter_scale_globals( AH_Hinter* hinter, - FT_Fixed x_scale, - FT_Fixed y_scale ) + static void + ah_hinter_scale_globals( AH_Hinter* hinter, + FT_Fixed x_scale, + FT_Fixed y_scale ) { FT_Int n; AH_Face_Globals* globals = hinter->globals; @@ -889,8 +887,8 @@ } - static - void ah_hinter_align( AH_Hinter* hinter ) + static void + ah_hinter_align( AH_Hinter* hinter ) { ah_hinter_align_edge_points( hinter ); ah_hinter_align_points( hinter ); @@ -898,8 +896,8 @@ /* finalize a hinter object */ - FT_LOCAL_DEF - void ah_hinter_done( AH_Hinter* hinter ) + FT_LOCAL_DEF void + ah_hinter_done( AH_Hinter* hinter ) { if ( hinter ) { @@ -921,9 +919,9 @@ /* create a new empty hinter object */ - FT_LOCAL_DEF - FT_Error ah_hinter_new( FT_Library library, - AH_Hinter** ahinter ) + FT_LOCAL_DEF FT_Error + ah_hinter_new( FT_Library library, + AH_Hinter** ahinter ) { AH_Hinter* hinter = 0; FT_Memory memory = library->memory; @@ -957,10 +955,10 @@ /* create a face's autohint globals */ - FT_LOCAL_DEF - FT_Error ah_hinter_new_face_globals( AH_Hinter* hinter, - FT_Face face, - AH_Globals* globals ) + FT_LOCAL_DEF FT_Error + ah_hinter_new_face_globals( AH_Hinter* hinter, + FT_Face face, + AH_Globals* globals ) { FT_Error error; FT_Memory memory = hinter->memory; @@ -989,8 +987,8 @@ /* discard a face's autohint globals */ - FT_LOCAL_DEF - void ah_hinter_done_face_globals( AH_Face_Globals* globals ) + FT_LOCAL_DEF void + ah_hinter_done_face_globals( AH_Face_Globals* globals ) { FT_Face face = globals->face; FT_Memory memory = face->memory; @@ -1000,25 +998,24 @@ } - static - FT_Error ah_hinter_load( AH_Hinter* hinter, - FT_UInt glyph_index, - FT_UInt load_flags, - FT_UInt depth ) + static FT_Error + ah_hinter_load( AH_Hinter* hinter, + FT_UInt glyph_index, + FT_UInt load_flags, + FT_UInt depth ) { FT_Face face = hinter->face; FT_GlyphSlot slot = face->glyph; FT_Slot_Internal internal = slot->internal; FT_Fixed x_scale = face->size->metrics.x_scale; FT_Fixed y_scale = face->size->metrics.y_scale; - FT_Glyph_Metrics metrics; /* temporary metrics */ FT_Error error; AH_Outline* outline = hinter->glyph; AH_Loader* gloader = hinter->loader; - FT_Bool no_horz_hints = - ( load_flags & AH_HINT_NO_HORZ_EDGES ) != 0; - FT_Bool no_vert_hints = - ( load_flags & AH_HINT_NO_VERT_EDGES ) != 0; + FT_Bool no_horz_hints = FT_BOOL( + ( load_flags & AH_HINT_NO_HORZ_EDGES ) != 0 ); + FT_Bool no_vert_hints = FT_BOOL( + ( load_flags & AH_HINT_NO_VERT_EDGES ) != 0 ); /* load the glyph */ @@ -1041,9 +1038,6 @@ FT_Vector_Transform( &hinter->trans_delta, &imatrix ); } - /* save current glyph metrics */ - metrics = slot->metrics; - /* set linear horizontal metrics */ slot->linearHoriAdvance = slot->metrics.horiAdvance; slot->linearVertAdvance = slot->metrics.vertAdvance; @@ -1051,21 +1045,21 @@ switch ( slot->format ) { case ft_glyph_format_outline: - + /* translate glyph outline if we need to */ if ( hinter->transformed ) { FT_UInt n = slot->outline.n_points; FT_Vector* point = slot->outline.points; - + for ( ; n > 0; point++, n-- ) { point->x += hinter->trans_delta.x; point->y += hinter->trans_delta.y; } } - + /* copy the outline points in the loader's current */ /* extra points, which is used to keep original glyph coordinates */ error = ah_loader_check_points( gloader, slot->outline.n_points + 2, @@ -1120,27 +1114,23 @@ /* we now need to hint the metrics according to the change in */ /* width/positioning that occured during the hinting process */ { - FT_Pos old_width, new_width; - FT_Pos old_advance, new_advance; - FT_Pos old_lsb, new_lsb; + FT_Pos old_advance, old_rsb, old_lsb, new_lsb; AH_Edge* edge1 = outline->vert_edges; /* leftmost edge */ AH_Edge* edge2 = edge1 + outline->num_vedges - 1; /* rightmost edge */ - old_width = edge2->opos - edge1->opos; - new_width = edge2->pos - edge1->pos; - old_advance = hinter->pp2.x; + old_rsb = old_advance - edge2->opos; old_lsb = edge1->opos; new_lsb = edge1->pos; - new_advance = old_advance + - ( new_width + new_lsb - old_width - old_lsb ); + hinter->pp1.x = ( ( new_lsb - old_lsb ) + 32 ) & -64; + hinter->pp2.x = ( ( edge2->pos + old_rsb ) + 32 ) & -64; - hinter->pp1.x = ( ( new_lsb - old_lsb ) + 32 ) & -64; - hinter->pp2.x = ( ( edge2->pos + - ( old_advance - edge2->opos ) ) + 32 ) & -64; + /* try to fix certain bad advance computations */ + if ( hinter->pp2.x + hinter->pp1.x == edge2->pos && old_rsb > 4 ) + hinter->pp2.x += 64; } /* good, we simply add the glyph to our loader's base */ @@ -1150,12 +1140,11 @@ case ft_glyph_format_composite: { FT_UInt nn, num_subglyphs = slot->num_subglyphs; - FT_UInt num_base_subgs, start_point, start_contour; + FT_UInt num_base_subgs, start_point; FT_SubGlyph* subglyph; start_point = gloader->base.outline.n_points; - start_contour = gloader->base.outline.n_contours; /* first of all, copy the subglyph descriptors in the glyph loader */ error = ah_loader_check_subglyphs( gloader, num_subglyphs ); @@ -1241,7 +1230,7 @@ if ( start_point + k >= num_base_points || l >= (FT_UInt)num_new_points ) { - error = FT_Err_Invalid_Composite; + error = AH_Err_Invalid_Composite; goto Exit; } @@ -1269,7 +1258,7 @@ dummy.points += num_base_points; - dummy.n_points = num_new_points; + dummy.n_points = (short)num_new_points; FT_Outline_Translate( &dummy, x, y ); } @@ -1279,7 +1268,7 @@ default: /* we don't support other formats (yet?) */ - error = FT_Err_Unimplemented_Feature; + error = AH_Err_Unimplemented_Feature; } Hint_Metrics: @@ -1307,9 +1296,17 @@ slot->metrics.height = bbox.yMax - bbox.yMin; slot->metrics.horiBearingX = bbox.xMin; slot->metrics.horiBearingY = bbox.yMax; - slot->metrics.horiAdvance = hinter->pp2.x - hinter->pp1.x; - /* XXX: TO DO - slot->linearHoriAdvance */ + /* for mono-width fonts (like Andale, Courier, etc.), we need */ + /* to keep the original rounded advance width */ + if ( !FT_IS_FIXED_WIDTH( slot->face ) ) + slot->metrics.horiAdvance = hinter->pp2.x - hinter->pp1.x; + else + slot->metrics.horiAdvance = FT_MulFix( slot->metrics.horiAdvance, + x_scale ); + + slot->metrics.horiAdvance = ( slot->metrics.horiAdvance + 32 ) & -64; + /* now copy outline into glyph slot */ ah_loader_rewind( slot->internal->loader ); error = ah_loader_copy_points( slot->internal->loader, gloader ); @@ -1320,18 +1317,22 @@ slot->format = ft_glyph_format_outline; } +#ifdef DEBUG_HINTER + ah_debug_hinter = hinter; +#endif + Exit: return error; } /* load and hint a given glyph */ - FT_LOCAL_DEF - FT_Error ah_hinter_load_glyph( AH_Hinter* hinter, - FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int load_flags ) + FT_LOCAL_DEF FT_Error + ah_hinter_load_glyph( AH_Hinter* hinter, + FT_GlyphSlot slot, + FT_Size size, + FT_UInt glyph_index, + FT_Int load_flags ) { FT_Face face = slot->face; FT_Error error; @@ -1365,7 +1366,12 @@ ah_loader_rewind( hinter->loader ); +#if 1 + load_flags = FT_LOAD_NO_SCALE + | FT_LOAD_IGNORE_TRANSFORM ; +#else load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_RECURSE; +#endif error = ah_hinter_load( hinter, glyph_index, load_flags, 0 ); @@ -1375,11 +1381,11 @@ /* retrieve a face's autohint globals for client applications */ - FT_LOCAL_DEF - void ah_hinter_get_global_hints( AH_Hinter* hinter, - FT_Face face, - void** global_hints, - long* global_len ) + FT_LOCAL_DEF void + ah_hinter_get_global_hints( AH_Hinter* hinter, + FT_Face face, + void** global_hints, + long* global_len ) { AH_Globals* globals = 0; FT_Memory memory = hinter->memory; @@ -1412,9 +1418,9 @@ } - FT_LOCAL_DEF - void ah_hinter_done_global_hints( AH_Hinter* hinter, - void* global_hints ) + FT_LOCAL_DEF void + ah_hinter_done_global_hints( AH_Hinter* hinter, + void* global_hints ) { FT_Memory memory = hinter->memory; Index: xc/extras/freetype2/src/autohint/ahhint.h diff -u xc/extras/freetype2/src/autohint/ahhint.h:1.1.1.2 xc/extras/freetype2/src/autohint/ahhint.h:1.1.1.3 --- xc/extras/freetype2/src/autohint/ahhint.h:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/autohint/ahhint.h Sun Dec 16 12:49:25 2001 @@ -4,7 +4,7 @@ /* */ /* Glyph hinter (declaration). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ @@ -37,34 +37,34 @@ /* create a new empty hinter object */ - FT_LOCAL - FT_Error ah_hinter_new( FT_Library library, - AH_Hinter** ahinter ); + FT_LOCAL FT_Error + ah_hinter_new( FT_Library library, + AH_Hinter** ahinter ); /* Load a hinted glyph in the hinter */ - FT_LOCAL - FT_Error ah_hinter_load_glyph( AH_Hinter* hinter, - FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int load_flags ); + FT_LOCAL FT_Error + ah_hinter_load_glyph( AH_Hinter* hinter, + FT_GlyphSlot slot, + FT_Size size, + FT_UInt glyph_index, + FT_Int load_flags ); /* finalize a hinter object */ - FT_LOCAL - void ah_hinter_done( AH_Hinter* hinter ); + FT_LOCAL void + ah_hinter_done( AH_Hinter* hinter ); - FT_LOCAL - void ah_hinter_done_face_globals( AH_Face_Globals* globals ); + FT_LOCAL void + ah_hinter_done_face_globals( AH_Face_Globals* globals ); - FT_LOCAL - void ah_hinter_get_global_hints( AH_Hinter* hinter, - FT_Face face, - void** global_hints, - long* global_len ); - - FT_LOCAL - void ah_hinter_done_global_hints( AH_Hinter* hinter, - void* global_hints ); + FT_LOCAL void + ah_hinter_get_global_hints( AH_Hinter* hinter, + FT_Face face, + void** global_hints, + long* global_len ); + + FT_LOCAL void + ah_hinter_done_global_hints( AH_Hinter* hinter, + void* global_hints ); FT_END_HEADER Index: xc/extras/freetype2/src/autohint/ahloader.h diff -u xc/extras/freetype2/src/autohint/ahloader.h:1.1.1.2 xc/extras/freetype2/src/autohint/ahloader.h:1.1.1.3 --- xc/extras/freetype2/src/autohint/ahloader.h:1.1.1.2 Tue May 15 23:45:40 2001 +++ xc/extras/freetype2/src/autohint/ahloader.h Sun Dec 16 12:49:25 2001 @@ -4,7 +4,7 @@ /* */ /* Glyph loader for the auto-hinting module (declaration only). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ @@ -69,40 +69,40 @@ }; - FT_LOCAL - FT_Error AH_GlyphLoader_New( FT_Memory memory, - AH_GlyphLoader** aloader ); + FT_LOCAL FT_Error + AH_GlyphLoader_New( FT_Memory memory, + AH_GlyphLoader** aloader ); - FT_LOCAL - FT_Error AH_GlyphLoader_Create_Extra( AH_GlyphLoader* loader ); + FT_LOCAL FT_Error + AH_GlyphLoader_Create_Extra( AH_GlyphLoader* loader ); - FT_LOCAL - void AH_GlyphLoader_Done( AH_GlyphLoader* loader ); + FT_LOCAL void + AH_GlyphLoader_Done( AH_GlyphLoader* loader ); - FT_LOCAL - void AH_GlyphLoader_Reset( AH_GlyphLoader* loader ); + FT_LOCAL void + AH_GlyphLoader_Reset( AH_GlyphLoader* loader ); - FT_LOCAL - void AH_GlyphLoader_Rewind( AH_GlyphLoader* loader ); + FT_LOCAL void + AH_GlyphLoader_Rewind( AH_GlyphLoader* loader ); - FT_LOCAL - FT_Error AH_GlyphLoader_Check_Points( AH_GlyphLoader* loader, - FT_UInt n_points, - FT_UInt n_contours ); + FT_LOCAL FT_Error + AH_GlyphLoader_Check_Points( AH_GlyphLoader* loader, + FT_UInt n_points, + FT_UInt n_contours ); - FT_LOCAL - FT_Error AH_GlyphLoader_Check_Subglyphs( AH_GlyphLoader* loader, - FT_UInt n_subs ); + FT_LOCAL FT_Error + AH_GlyphLoader_Check_Subglyphs( AH_GlyphLoader* loader, + FT_UInt n_subs ); - FT_LOCAL - void AH_GlyphLoader_Prepare( AH_GlyphLoader* loader ); + FT_LOCAL void + AH_GlyphLoader_Prepare( AH_GlyphLoader* loader ); - FT_LOCAL - void AH_GlyphLoader_Add( AH_GlyphLoader* loader ); + FT_LOCAL void + AH_GlyphLoader_Add( AH_GlyphLoader* loader ); - FT_LOCAL - FT_Error AH_GlyphLoader_Copy_Points( AH_GlyphLoader* target, - FT_GlyphLoader* source ); + FT_LOCAL FT_Error + AH_GlyphLoader_Copy_Points( AH_GlyphLoader* target, + FT_GlyphLoader* source ); #else /* _STANDALONE */ Index: xc/extras/freetype2/src/autohint/ahmodule.c diff -u xc/extras/freetype2/src/autohint/ahmodule.c:1.1.1.2 xc/extras/freetype2/src/autohint/ahmodule.c:1.1.1.5 --- xc/extras/freetype2/src/autohint/ahmodule.c:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/autohint/ahmodule.c Mon Jan 14 11:52:08 2002 @@ -4,7 +4,7 @@ /* */ /* Auto-hinting module implementation (declaration). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ @@ -24,6 +24,12 @@ #include "ahhint.h" +#ifdef DEBUG_HINTER + extern AH_Hinter* ah_debug_hinter = NULL; + extern FT_Bool ah_debug_disable_horz = 0; + extern FT_Bool ah_debug_disable_vert = 0; +#endif + typedef struct FT_AutoHinterRec_ { FT_ModuleRec root; @@ -32,35 +38,46 @@ } FT_AutoHinterRec; - FT_CALLBACK_DEF - FT_Error ft_autohinter_init( FT_AutoHinter module ) + FT_CALLBACK_DEF( FT_Error ) + ft_autohinter_init( FT_AutoHinter module ) { - return ah_hinter_new( module->root.library, &module->hinter ); + FT_Error error; + + error = ah_hinter_new( module->root.library, &module->hinter ); +#ifdef DEBUG_HINTER + if ( !error ) + ah_debug_hinter = module->hinter; +#endif + return error; } - FT_CALLBACK_DEF - void ft_autohinter_done( FT_AutoHinter module ) + FT_CALLBACK_DEF( void ) + ft_autohinter_done( FT_AutoHinter module ) { ah_hinter_done( module->hinter ); + +#ifdef DEBUG_HINTER + ah_debug_hinter = NULL; +#endif } - FT_CALLBACK_DEF - FT_Error ft_autohinter_load( FT_AutoHinter module, - FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_ULong load_flags ) + FT_CALLBACK_DEF( FT_Error ) + ft_autohinter_load( FT_AutoHinter module, + FT_GlyphSlot slot, + FT_Size size, + FT_UInt glyph_index, + FT_ULong load_flags ) { return ah_hinter_load_glyph( module->hinter, slot, size, glyph_index, load_flags ); } - FT_CALLBACK_DEF - void ft_autohinter_reset( FT_AutoHinter module, - FT_Face face ) + FT_CALLBACK_DEF( void ) + ft_autohinter_reset( FT_AutoHinter module, + FT_Face face ) { UNUSED( module ); @@ -69,20 +86,20 @@ } - FT_CALLBACK_DEF - void ft_autohinter_get_globals( FT_AutoHinter module, - FT_Face face, - void** global_hints, - long* global_len ) + FT_CALLBACK_DEF( void ) + ft_autohinter_get_globals( FT_AutoHinter module, + FT_Face face, + void** global_hints, + long* global_len ) { ah_hinter_get_global_hints( module->hinter, face, global_hints, global_len ); } - FT_CALLBACK_DEF - void ft_autohinter_done_globals( FT_AutoHinter module, - void* global_hints ) + FT_CALLBACK_DEF( void ) + ft_autohinter_done_globals( FT_AutoHinter module, + void* global_hints ) { ah_hinter_done_global_hints( module->hinter, global_hints ); } Index: xc/extras/freetype2/src/autohint/ahmodule.h diff -u xc/extras/freetype2/src/autohint/ahmodule.h:1.1.1.2 xc/extras/freetype2/src/autohint/ahmodule.h:1.1.1.3 --- xc/extras/freetype2/src/autohint/ahmodule.h:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/autohint/ahmodule.h Sun Dec 16 12:49:25 2001 @@ -4,7 +4,7 @@ /* */ /* Auto-hinting module (declaration). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ Index: xc/extras/freetype2/src/autohint/ahoptim.c diff -u xc/extras/freetype2/src/autohint/ahoptim.c:1.1.1.2 xc/extras/freetype2/src/autohint/ahoptim.c:1.1.1.3 --- xc/extras/freetype2/src/autohint/ahoptim.c:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/autohint/ahoptim.c Sun Dec 16 12:49:26 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType auto hinting outline optimization (body). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ @@ -65,8 +65,8 @@ #define FLOAT( x ) ( (float)( (x) / 64.0 ) ) - static - void optim_log( const char* fmt, ... ) + static void + optim_log( const char* fmt, ... ) { va_list ap; @@ -77,8 +77,8 @@ } - static - void AH_Dump_Stems( AH_Optimizer* optimizer ) + static void + AH_Dump_Stems( AH_Optimizer* optimizer ) { int n; AH_Stem* stem; @@ -98,8 +98,8 @@ } - static - void AH_Dump_Stems2( AH_Optimizer* optimizer ) + static void + AH_Dump_Stems2( AH_Optimizer* optimizer ) { int n; AH_Stem* stem; @@ -117,8 +117,8 @@ } - static - void AH_Dump_Springs( AH_Optimizer* optimizer ) + static void + AH_Dump_Springs( AH_Optimizer* optimizer ) { int n; AH_Spring* spring; @@ -156,9 +156,9 @@ /*************************************************************************/ - static - int valid_stem_segments( AH_Segment* seg1, - AH_Segment* seg2 ) + static int + valid_stem_segments( AH_Segment* seg1, + AH_Segment* seg2 ) { return seg1->serif == 0 && seg2 && @@ -170,8 +170,8 @@ /* compute all stems in an outline */ - static - int optim_compute_stems( AH_Optimizer* optimizer ) + static int + optim_compute_stems( AH_Optimizer* optimizer ) { AH_Outline* outline = optimizer->outline; FT_Fixed scale; @@ -332,9 +332,9 @@ /* returns the spring area between two stems, 0 if none */ - static - FT_Pos stem_spring_area( AH_Stem* stem1, - AH_Stem* stem2 ) + static FT_Pos + stem_spring_area( AH_Stem* stem1, + AH_Stem* stem2 ) { FT_Pos area1 = stem1->max_coord - stem1->min_coord; FT_Pos area2 = stem2->max_coord - stem2->min_coord; @@ -362,8 +362,8 @@ /* compute all springs in an outline */ - static - int optim_compute_springs( AH_Optimizer* optimizer ) + static int + optim_compute_springs( AH_Optimizer* optimizer ) { /* basically, a spring exists between two stems if most of their */ /* surface is aligned */ @@ -469,8 +469,8 @@ #ifndef AH_BRUTE_FORCE /* compute all spring tensions */ - static - void optim_compute_tensions( AH_Optimizer* optimizer ) + static void + optim_compute_tensions( AH_Optimizer* optimizer ) { AH_Spring* spring = optimizer->springs; AH_Spring* limit = spring + optimizer->num_springs; @@ -527,8 +527,8 @@ /* compute all stem movements -- returns 0 if nothing moved */ - static - int optim_compute_stem_movements( AH_Optimizer* optimizer ) + static int + optim_compute_stem_movements( AH_Optimizer* optimizer ) { AH_Stem* stems = optimizer->stems; AH_Stem* limit = stems + optimizer->num_stems; @@ -588,8 +588,8 @@ /* compute current global distortion from springs */ - static - FT_Pos optim_compute_distortion( AH_Optimizer* optimizer ) + static FT_Pos + optim_compute_distortion( AH_Optimizer* optimizer ) { AH_Spring* spring = optimizer->springs; AH_Spring* limit = spring + optimizer->num_springs; @@ -615,8 +615,8 @@ /* record stems configuration in `best of' history */ - static - void optim_record_configuration( AH_Optimizer* optimizer ) + static void + optim_record_configuration( AH_Optimizer* optimizer ) { FT_Pos distortion; AH_Configuration* configs = optimizer->configs; @@ -671,8 +671,8 @@ #ifdef AH_BRUTE_FORCE /* optimize outline in a single direction */ - static - void optim_compute( AH_Optimizer* optimizer ) + static void + optim_compute( AH_Optimizer* optimizer ) { int n; FT_Bool moved; @@ -729,8 +729,8 @@ #else /* AH_BRUTE_FORCE */ /* optimize outline in a single direction */ - static - void optim_compute( AH_Optimizer* optimizer ) + static void + optim_compute( AH_Optimizer* optimizer ) { int n, counter, counter2; @@ -788,7 +788,8 @@ /* releases the optimization data */ - void AH_Optimizer_Done( AH_Optimizer* optimizer ) + void + AH_Optimizer_Done( AH_Optimizer* optimizer ) { if ( optimizer ) { @@ -805,9 +806,10 @@ /* loads the outline into the optimizer */ - int AH_Optimizer_Init( AH_Optimizer* optimizer, - AH_Outline* outline, - FT_Memory memory ) + int + AH_Optimizer_Init( AH_Optimizer* optimizer, + AH_Outline* outline, + FT_Memory memory ) { FT_Error error; @@ -851,7 +853,8 @@ /* compute optimal outline */ - void AH_Optimizer_Compute( AH_Optimizer* optimizer ) + void + AH_Optimizer_Compute( AH_Optimizer* optimizer ) { optimizer->num_stems = optimizer->num_hstems; optimizer->stems = optimizer->horz_stems; Index: xc/extras/freetype2/src/autohint/ahoptim.h diff -u xc/extras/freetype2/src/autohint/ahoptim.h:1.1.1.2 xc/extras/freetype2/src/autohint/ahoptim.h:1.1.1.3 --- xc/extras/freetype2/src/autohint/ahoptim.h:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/autohint/ahoptim.h Sun Dec 16 12:49:26 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType auto hinting outline optimization (declaration). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ @@ -113,17 +113,20 @@ /* loads the outline into the optimizer */ - int AH_Optimizer_Init( AH_Optimizer* optimizer, - AH_Outline* outline, - FT_Memory memory ); + int + AH_Optimizer_Init( AH_Optimizer* optimizer, + AH_Outline* outline, + FT_Memory memory ); /* compute optimal outline */ - void AH_Optimizer_Compute( AH_Optimizer* optimizer ); + void + AH_Optimizer_Compute( AH_Optimizer* optimizer ); /* release the optimization data */ - void AH_Optimizer_Done( AH_Optimizer* optimizer ); + void + AH_Optimizer_Done( AH_Optimizer* optimizer ); FT_END_HEADER Index: xc/extras/freetype2/src/autohint/ahtypes.h diff -u xc/extras/freetype2/src/autohint/ahtypes.h:1.1.1.2 xc/extras/freetype2/src/autohint/ahtypes.h:1.1.1.4 --- xc/extras/freetype2/src/autohint/ahtypes.h:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/autohint/ahtypes.h Mon Jan 14 11:52:09 2002 @@ -5,7 +5,7 @@ /* General types and definitions for the auto-hint module */ /* (specification only). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ @@ -26,7 +26,12 @@ #include <ft2build.h> #include FT_INTERNAL_OBJECTS_H + +#ifdef DEBUG_HINTER +#include <../src/autohint/ahloader.h> +#else #include "ahloader.h" +#endif #define xxAH_DEBUG @@ -121,27 +126,27 @@ /* hint flags */ -#define ah_flah_none 0 +#define ah_flag_none 0 /* bezier control points flags */ -#define ah_flah_conic 1 -#define ah_flah_cubic 2 -#define ah_flah_control ( ah_flah_conic | ah_flah_cubic ) +#define ah_flag_conic 1 +#define ah_flag_cubic 2 +#define ah_flag_control ( ah_flag_conic | ah_flag_cubic ) /* extrema flags */ -#define ah_flah_extrema_x 4 -#define ah_flah_extrema_y 8 +#define ah_flag_extrema_x 4 +#define ah_flag_extrema_y 8 /* roundness */ -#define ah_flah_round_x 16 -#define ah_flah_round_y 32 +#define ah_flag_round_x 16 +#define ah_flag_round_y 32 /* touched */ -#define ah_flah_touch_x 64 -#define ah_flah_touch_y 128 +#define ah_flag_touch_x 64 +#define ah_flag_touch_y 128 /* weak interpolation */ -#define ah_flah_weak_interpolation 256 +#define ah_flag_weak_interpolation 256 typedef FT_Int AH_Flags; @@ -186,7 +191,7 @@ /* */ /* fx, fy :: The current coordinates in font units. */ /* */ - /* x, y :: The current hinter coordinates. */ + /* x, y :: The current hinted coordinates. */ /* */ /* u, v :: Point coordinates -- meaning varies with context. */ /* */ @@ -413,7 +418,7 @@ /* */ /* blue_shoots :: The overshoot positions of blue zones. */ /* */ - typedef struct AH_Globals_ + typedef struct AH_Globals_ { FT_Int num_widths; FT_Int num_heights; @@ -480,10 +485,17 @@ FT_Vector trans_delta; FT_Matrix trans_matrix; - FT_Bool disable_horz_edges; - FT_Bool disable_vert_edges; } AH_Hinter; + +#ifdef DEBUG_HINTER + extern AH_Hinter* ah_debug_hinter; + extern FT_Bool ah_debug_disable_horz; + extern FT_Bool ah_debug_disable_vert; +#else +# define ah_debug_disable_horz 0 +# define ah_debug_disable_vert 0 +#endif /* DEBUG_HINTER */ FT_END_HEADER Index: xc/extras/freetype2/src/autohint/autohint.c diff -u xc/extras/freetype2/src/autohint/autohint.c:1.1.1.2 xc/extras/freetype2/src/autohint/autohint.c:1.1.1.3 --- xc/extras/freetype2/src/autohint/autohint.c:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/autohint/autohint.c Sun Dec 16 12:49:26 2001 @@ -4,7 +4,7 @@ /* */ /* Automatic Hinting wrapper (body only). */ /* */ -/* Copyright 2000 Catharon Productions Inc. */ +/* Copyright 2000-2001 Catharon Productions Inc. */ /* Author: David Turner */ /* */ /* This file is part of the Catharon Typography Project and shall only */ Index: xc/extras/freetype2/src/autohint/rules.mk diff -u xc/extras/freetype2/src/autohint/rules.mk:1.1.1.2 xc/extras/freetype2/src/autohint/rules.mk:1.1.1.3 --- xc/extras/freetype2/src/autohint/rules.mk:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/autohint/rules.mk Sun Sep 9 22:56:01 2001 @@ -39,7 +39,8 @@ # AUTO_DRV_H := $(AUTO_DRV_SRC:%c=%h) \ $(AUTO_DIR_)ahloader.h \ - $(AUTO_DIR_)ahtypes.h + $(AUTO_DIR_)ahtypes.h \ + $(AUTO_DIR_)aherrors.h # AUTO driver object(s) Index: xc/extras/freetype2/src/base/Jamfile diff -u /dev/null xc/extras/freetype2/src/base/Jamfile:1.1.1.2 --- /dev/null Fri Jan 18 15:21:51 2002 +++ xc/extras/freetype2/src/base/Jamfile Mon Jan 14 11:52:09 2002 @@ -0,0 +1,36 @@ +# FreeType 2 src/base Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src base ; + +SubDirHdrs [ FT2_SubDir src base ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = ftcalc ftextend ftlist ftobjs ftstream ftoutln ftnames fttrigon + ftdbgmem ; + } + else + { + _sources = ftbase ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# Add the optional/replaceable files. +# +Library $(FT2_LIB) : ftsystem.c ftinit.c ftglyph.c ftmm.c + ftbbox.c ftdebug.c ; + +# Add Macintosh-specific file to the library when necessary. +# +if $(MAC) +{ + Library $(FT2_LIB) : ftmac.c ; +} + +# end of src/base Jamfile Index: xc/extras/freetype2/src/base/descrip.mms diff -u xc/extras/freetype2/src/base/descrip.mms:1.1.1.1 xc/extras/freetype2/src/base/descrip.mms:1.1.1.2 --- xc/extras/freetype2/src/base/descrip.mms:1.1.1.1 Tue May 15 23:45:35 2001 +++ xc/extras/freetype2/src/base/descrip.mms Mon Jan 14 11:52:09 2002 @@ -15,7 +15,7 @@ CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.builds.vms],[--.include],[--.src.base]) -OBJS=ftbase.obj,ftinit.obj,ftglyph.obj +OBJS=ftbase.obj,ftinit.obj,ftglyph.obj,ftdebug.obj all : $(OBJS) library [--.lib]freetype.olb $(OBJS) Index: xc/extras/freetype2/src/base/ftbase.c diff -u xc/extras/freetype2/src/base/ftbase.c:1.1.1.2 xc/extras/freetype2/src/base/ftbase.c:1.1.1.5 --- xc/extras/freetype2/src/base/ftbase.c:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/base/ftbase.c Mon Jan 14 11:52:09 2002 @@ -4,7 +4,7 @@ /* */ /* Single object library component (body only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -21,11 +21,13 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT #include "ftcalc.c" +#include "fttrigon.c" #include "ftobjs.c" #include "ftstream.c" #include "ftlist.c" #include "ftoutln.c" #include "ftnames.c" +#include "ftdbgmem.c" #if 0 #include "ftextend.c" Index: xc/extras/freetype2/src/base/ftbbox.c diff -u xc/extras/freetype2/src/base/ftbbox.c:1.1.1.2 xc/extras/freetype2/src/base/ftbbox.c:1.1.1.4 --- xc/extras/freetype2/src/base/ftbbox.c:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/base/ftbbox.c Sun Dec 16 12:49:26 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType bbox computation (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used */ @@ -28,6 +28,7 @@ #include FT_BBOX_H #include FT_IMAGE_H #include FT_OUTLINE_H +#include FT_INTERNAL_CALC_H typedef struct TBBox_Rec_ @@ -58,9 +59,9 @@ /* <Return> */ /* Always 0. Needed for the interface only. */ /* */ - static - int BBox_Move_To( FT_Vector* to, - TBBox_Rec* user ) + static int + BBox_Move_To( FT_Vector* to, + TBBox_Rec* user ) { user->last = *to; @@ -94,14 +95,14 @@ /* min :: The address of the current minimum. */ /* max :: The address of the current maximum. */ /* */ - static - void BBox_Conic_Check( FT_Pos y1, - FT_Pos y2, + static void + BBox_Conic_Check( FT_Pos y1, + FT_Pos y2, FT_Pos y3, FT_Pos* min, FT_Pos* max ) { - if ( y1 == y3 ) + if ( y1 <= y3 ) { if ( y2 == y1 ) /* Flat arc */ goto Suite; @@ -155,10 +156,10 @@ /* In the case of a non-monotonous arc, we compute directly the */ /* extremum coordinates, as it is sufficiently fast. */ /* */ - static - int BBox_Conic_To( FT_Vector* control, - FT_Vector* to, - TBBox_Rec* user ) + static int + BBox_Conic_To( FT_Vector* control, + FT_Vector* to, + TBBox_Rec* user ) { /* we don't need to check `to' since it is always an `on' point, thus */ /* within the bbox */ @@ -205,15 +206,16 @@ /* min :: The address of the current minimum. */ /* max :: The address of the current maximum. */ /* */ - static - void BBox_Cubic_Check( FT_Pos p1, - FT_Pos p2, - FT_Pos p3, - FT_Pos p4, - FT_Pos* min, - FT_Pos* max ) +#if 0 + static void + BBox_Cubic_Check( FT_Pos p1, + FT_Pos p2, + FT_Pos p3, + FT_Pos p4, + FT_Pos* min, + FT_Pos* max ) { - FT_Pos stack[33], *arc; + FT_Pos stack[32*3 + 1], *arc; arc = stack; @@ -252,7 +254,7 @@ } } - /* Unknown direction, split the arc in two */ + /* Unknown direction -- split the arc in two */ arc[6] = y4; arc[1] = y1 = ( y1 + y2 ) / 2; arc[5] = y4 = ( y4 + y3 ) / 2; @@ -273,6 +275,222 @@ ; } while ( arc >= stack ); } +#else + + static void + test_cubic_extrema( FT_Pos y1, + FT_Pos y2, + FT_Pos y3, + FT_Pos y4, + FT_Fixed u, + FT_Pos* min, + FT_Pos* max ) + { + /* FT_Pos a = y4 - 3*y3 + 3*y2 - y1; */ + FT_Pos b = y3 - 2*y2 + y1; + FT_Pos c = y2 - y1; + FT_Pos d = y1; + FT_Pos y; + FT_Fixed uu; + + FT_UNUSED ( y4 ); + + + /* The polynom is */ + /* */ + /* a*x^3 + 3b*x^2 + 3c*x + d . */ + /* */ + /* However, we also have */ + /* */ + /* dP/dx(u) = 0 , */ + /* */ + /* which implies that */ + /* */ + /* P(u) = b*u^2 + 2c*u + d */ + + if ( u > 0 && u < 0x10000L ) + { + uu = FT_MulFix( u, u ); + y = d + FT_MulFix( c, 2*u ) + FT_MulFix( b, uu ); + + if ( y < *min ) *min = y; + if ( y > *max ) *max = y; + } + } + + + static void + BBox_Cubic_Check( FT_Pos y1, + FT_Pos y2, + FT_Pos y3, + FT_Pos y4, + FT_Pos* min, + FT_Pos* max ) + { + /* always compare first and last points */ + if ( y1 < *min ) *min = y1; + else if ( y1 > *max ) *max = y1; + + if ( y4 < *min ) *min = y4; + else if ( y4 > *max ) *max = y4; + + /* now, try to see if there are split points here */ + if ( y1 <= y4 ) + { + /* flat or ascending arc test */ + if ( y1 <= y2 && y2 <= y4 && y1 <= y3 && y3 <= y4 ) + return; + } + else /* y1 > y4 */ + { + /* descending arc test */ + if ( y1 >= y2 && y2 >= y4 && y1 >= y3 && y3 >= y4 ) + return; + } + + /* There are some split points. Find them. */ + { + FT_Pos a = y4 - 3*y3 + 3*y2 - y1; + FT_Pos b = y3 - 2*y2 + y1; + FT_Pos c = y2 - y1; + FT_Pos d; + FT_Fixed t; + + + /* We need to solve "ax^2+2bx+c" here, without floating points! */ + /* The trick is to normalize to a different representation in order */ + /* to use our 16.16 fixed point routines. */ + /* */ + /* We compute FT_MulFix(b,b) and FT_MulFix(a,c) after the */ + /* the normalization. These values must fit into a single 16.16 */ + /* value. */ + /* */ + /* We normalize a, b, and c to "8.16" fixed float values to ensure */ + /* that their product is held in a "16.16" value. */ + /* */ + { + FT_ULong t1, t2; + int shift = 0; + + + /* Technical explanation of what's happening there. */ + /* */ + /* The following computation is based on the fact that for */ + /* any value "y", if "n" is the position of the most */ + /* significant bit of "abs(y)" (starting from 0 for the */ + /* least significant bit), then y is in the range */ + /* */ + /* "-2^n..2^n-1" */ + /* */ + /* We want to shift "a", "b" and "c" concurrently in order */ + /* to ensure that they all fit in 8.16 values, which maps */ + /* to the integer range "-2^23..2^23-1". */ + /* */ + /* Necessarily, we need to shift "a", "b" and "c" so that */ + /* the most significant bit of their absolute values is at */ + /* _most_ at position 23. */ + /* */ + /* We begin by computing "t1" as the bitwise "or" of the */ + /* absolute values of "a", "b", "c". */ + /* */ + t1 = (FT_ULong)((a >= 0) ? a : -a ); + t2 = (FT_ULong)((b >= 0) ? b : -b ); + t1 |= t2; + t2 = (FT_ULong)((c >= 0) ? c : -c ); + t1 |= t2; + + /* Now, the most significant bit of "t1" is sure to be the */ + /* msb of one of "a", "b", "c", depending on which one is */ + /* expressed in the greatest integer range. */ + /* */ + /* We now compute the "shift", by shifting "t1" as many */ + /* times as necessary to move its msb to position 23. */ + /* */ + /* This corresponds to a value of t1 that is in the range */ + /* 0x40_0000..0x7F_FFFF. */ + /* */ + /* Finally, we shift "a", "b" and "c" by the same amount. */ + /* This ensures that all values are now in the range */ + /* -2^23..2^23, i.e. that they are now expressed as 8.16 */ + /* fixed float numbers. */ + /* */ + /* This also means that we are using 24 bits of precision */ + /* to compute the zeros, independently of the range of */ + /* the original polynom coefficients. */ + /* */ + /* This should ensure reasonably accurate values for the */ + /* zeros. Note that the latter are only expressed with */ + /* 16 bits when computing the extrema (the zeros need to */ + /* be in 0..1 exclusive to be considered part of the arc). */ + /* */ + if ( t1 == 0 ) /* all coefficients are 0! */ + return; + + if ( t1 > 0x7FFFFFUL ) + { + do + { + shift++; + t1 >>= 1; + } while ( t1 > 0x7FFFFFUL ); + + /* losing some bits of precision, but we use 24 of them */ + /* for the computation anyway. */ + a >>= shift; + b >>= shift; + c >>= shift; + } + else if ( t1 < 0x400000UL ) + { + do + { + shift++; + t1 <<= 1; + } while ( t1 < 0x400000UL ); + + a <<= shift; + b <<= shift; + c <<= shift; + } + } + + /* handle a == 0 */ + if ( a == 0 ) + { + if ( b != 0 ) + { + t = - FT_DivFix( c, b ) / 2; + test_cubic_extrema( y1, y2, y3, y4, t, min, max ); + } + } + else + { + /* solve the equation now */ + d = FT_MulFix( b, b ) - FT_MulFix( a, c ); + if ( d < 0 ) + return; + + if ( d == 0 ) + { + /* there is a single split point at -b/a */ + t = - FT_DivFix( b, a ); + test_cubic_extrema( y1, y2, y3, y4, t, min, max ); + } + else + { + /* there are two solutions; we need to filter them though */ + d = FT_SqrtFixed( (FT_Int32)d ); + t = - FT_DivFix( b - d, a ); + test_cubic_extrema( y1, y2, y3, y4, t, min, max ); + + t = - FT_DivFix( b + d, a ); + test_cubic_extrema( y1, y2, y3, y4, t, min, max ); + } + } + } + } + +#endif /*************************************************************************/ @@ -301,11 +519,11 @@ /* In the case of a non-monotonous arc, we don't compute directly */ /* extremum coordinates, we subdivise instead. */ /* */ - static - int BBox_Cubic_To( FT_Vector* control1, - FT_Vector* control2, - FT_Vector* to, - TBBox_Rec* user ) + static int + BBox_Cubic_To( FT_Vector* control1, + FT_Vector* control2, + FT_Vector* to, + TBBox_Rec* user ) { /* we don't need to check `to' since it is always an `on' point, thus */ /* within the bbox */ @@ -338,8 +556,9 @@ /* documentation is in ftbbox.h */ - FT_EXPORT_DEF( FT_Error ) FT_Outline_Get_BBox( FT_Outline* outline, - FT_BBox *abbox ) + FT_EXPORT_DEF( FT_Error ) + FT_Outline_Get_BBox( FT_Outline* outline, + FT_BBox *abbox ) { FT_BBox cbox; FT_BBox bbox; @@ -368,6 +587,7 @@ vec = outline->points; bbox.xMin = bbox.xMax = cbox.xMin = cbox.xMax = vec->x; bbox.yMin = bbox.yMax = cbox.yMin = cbox.yMax = vec->y; + vec++; for ( n = 1; n < outline->n_points; n++ ) { Index: xc/extras/freetype2/src/base/ftcalc.c diff -u xc/extras/freetype2/src/base/ftcalc.c:1.1.1.2 xc/extras/freetype2/src/base/ftcalc.c:1.1.1.5 --- xc/extras/freetype2/src/base/ftcalc.c:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/base/ftcalc.c Mon Jan 14 11:52:09 2002 @@ -4,7 +4,7 @@ /* */ /* Arithmetic computations (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -38,6 +38,27 @@ #include FT_INTERNAL_OBJECTS_H +/* we need to define a 64-bits data type here */ +#ifndef FT_CONFIG_OPTION_OLD_CALCS + +#ifdef FT_LONG64 + + typedef FT_INT64 FT_Int64; + +#else + + typedef struct FT_Int64_ + { + FT_UInt32 lo; + FT_UInt32 hi; + + } FT_Int64; + +#endif /* FT_LONG64 */ + +#endif /* !FT_CONFIG_OPTION_OLD_CALCS */ + + /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -53,25 +74,31 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Fixed ) FT_RoundFix( FT_Fixed a ) + FT_EXPORT_DEF( FT_Fixed ) + FT_RoundFix( FT_Fixed a ) { - return( ( a + 0x8000L ) & -0x10000L ); + return ( a >= 0 ) ? ( a + 0x8000L ) & -0x10000L + : -((-a + 0x8000L ) & -0x10000L ); } /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Fixed ) FT_CeilFix( FT_Fixed a ) + FT_EXPORT_DEF( FT_Fixed ) + FT_CeilFix( FT_Fixed a ) { - return( ( a + 0x10000L - 1 ) & -0x10000L ); + return ( a >= 0 ) ? ( a + 0xFFFFL ) & -0x10000L + : -((-a + 0xFFFFL ) & -0x10000L ); } /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Fixed ) FT_FloorFix( FT_Fixed a ) + FT_EXPORT_DEF( FT_Fixed ) + FT_FloorFix( FT_Fixed a ) { - return( a & -0x10000L ); + return ( a >= 0 ) ? a & -0x10000L + : -((-a) & -0x10000L ); } @@ -98,7 +125,8 @@ /* documentation is in ftcalc.h */ - FT_EXPORT_DEF( FT_Int32 ) FT_Sqrt32( FT_Int32 x ) + FT_EXPORT_DEF( FT_Int32 ) + FT_Sqrt32( FT_Int32 x ) { FT_ULong val, root, newroot, mask; @@ -131,59 +159,66 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Long ) FT_MulDiv( FT_Long a, - FT_Long b, - FT_Long c ) + FT_EXPORT_DEF( FT_Long ) + FT_MulDiv( FT_Long a, + FT_Long b, + FT_Long c ) { - FT_Int s; + FT_Int s; + FT_Long d; s = 1; - if ( a < 0 ) { a = -a; s = -s; } + if ( a < 0 ) { a = -a; s = -1; } if ( b < 0 ) { b = -b; s = -s; } if ( c < 0 ) { c = -c; s = -s; } - return s * ( c > 0 ? ( (FT_Int64)a * b + ( c >> 1 ) ) / c - : 0x7FFFFFFFL ); + d = (FT_Long)( c > 0 ? ( (FT_Int64)a * b + ( c >> 1 ) ) / c + : 0x7FFFFFFFL ); + + return ( s > 0 ) ? d : -d; } /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Long ) FT_MulFix( FT_Long a, - FT_Long b ) + FT_EXPORT_DEF( FT_Long ) + FT_MulFix( FT_Long a, + FT_Long b ) { - FT_Int s; + FT_Int s = 1; + FT_Long c; - s = 1; - if ( a < 0 ) { a = -a; s = -s; } + if ( a < 0 ) { a = -a; s = -1; } if ( b < 0 ) { b = -b; s = -s; } - return s * (FT_Long)( ( (FT_Int64)a * b + 0x8000 ) >> 16 ); + c = (FT_Long)( ( (FT_Int64)a * b + 0x8000 ) >> 16 ); + return ( s > 0 ) ? c : -c ; } /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Long ) FT_DivFix( FT_Long a, - FT_Long b ) + FT_EXPORT_DEF( FT_Long ) + FT_DivFix( FT_Long a, + FT_Long b ) { FT_Int32 s; FT_UInt32 q; - - s = a; a = ABS(a); - s ^= b; b = ABS(b); + s = 1; + if ( a < 0 ) { a = -a; s = -1; } + if ( b < 0 ) { b = -b; s = -s; } if ( b == 0 ) /* check for division by 0 */ q = 0x7FFFFFFFL; else /* compute result directly */ - q = ( (FT_Int64)a << 16 ) / b; + q = (FT_UInt32)( ( ( (FT_Int64)a << 16 ) + ( b >> 1 ) ) / b ); - return (FT_Int32)( s < 0 ? -q : q ); + return ( s < 0 ? -(FT_Long)q : (FT_Long)q ); } @@ -191,8 +226,8 @@ /* a helper function for FT_Sqrt64() */ - static - int ft_order64( FT_Int64 z ) + static int + ft_order64( FT_Int64 z ) { int j = 0; @@ -208,7 +243,8 @@ /* documentation is in ftcalc.h */ - FT_EXPORT_DEF( FT_Int32 ) FT_Sqrt64( FT_Int64 l ) + FT_EXPORT_DEF( FT_Int32 ) + FT_Sqrt64( FT_Int64 l ) { FT_Int64 r, s; @@ -225,32 +261,108 @@ } while ( r > s || r * r > l ); - return r; + return (FT_Int32)r; } +#endif /* FT_CONFIG_OPTION_OLD_CALCS */ + + +#else /* FT_LONG64 */ + - FT_EXPORT_DEF( FT_Int32 ) FT_SqrtFixed( FT_Int32 x ) + static void + ft_multo64( FT_UInt32 x, + FT_UInt32 y, + FT_Int64 *z ) { - FT_Int64 z; + FT_UInt32 lo1, hi1, lo2, hi2, lo, hi, i1, i2; + + + lo1 = x & 0x0000FFFFU; hi1 = x >> 16; + lo2 = y & 0x0000FFFFU; hi2 = y >> 16; + + lo = lo1 * lo2; + i1 = lo1 * hi2; + i2 = lo2 * hi1; + hi = hi1 * hi2; + /* Check carry overflow of i1 + i2 */ + i1 += i2; + hi += (FT_UInt32)( i1 < i2 ) << 16; - z = (FT_Int64)(x) << 16; - return FT_Sqrt64( z ); + hi += i1 >> 16; + i1 = i1 << 16; + + /* Check carry overflow of i1 + lo */ + lo += i1; + hi += ( lo < i1 ); + + z->lo = lo; + z->hi = hi; } -#endif /* FT_CONFIG_OPTION_OLD_CALCS */ + + static FT_UInt32 + ft_div64by32( FT_UInt32 hi, + FT_UInt32 lo, + FT_UInt32 y ) + { + FT_UInt32 r, q; + FT_Int i; -#else /* FT_LONG64 */ + q = 0; + r = hi; + + if ( r >= y ) + return (FT_UInt32)0x7FFFFFFFL; + + i = 32; + do + { + r <<= 1; + q <<= 1; + r |= lo >> 31; + + if ( r >= (FT_UInt32)y ) + { + r -= y; + q |= 1; + } + lo <<= 1; + } while ( --i ); + + return q; + } + + + /* documentation is in ftcalc.h */ + + FT_EXPORT_DEF( void ) + FT_Add64( FT_Int64* x, + FT_Int64* y, + FT_Int64 *z ) + { + register FT_UInt32 lo, hi, max; + + + max = x->lo > y->lo ? x->lo : y->lo; + lo = x->lo + y->lo; + hi = x->hi + y->hi + ( lo < max ); + + z->lo = lo; + z->hi = hi; + } /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Long ) FT_MulDiv( FT_Long a, - FT_Long b, - FT_Long c ) + FT_EXPORT_DEF( FT_Long ) + FT_MulDiv( FT_Long a, + FT_Long b, + FT_Long c ) { - long s; + long s; if ( a == 0 || b == c ) @@ -260,7 +372,7 @@ s ^= b; b = ABS( b ); s ^= c; c = ABS( c ); - if ( a <= 46340 && b <= 46340 && c <= 176095L && c > 0 ) + if ( a <= 46340L && b <= 46340L && c <= 176095L && c > 0 ) { a = ( a * b + ( c >> 1 ) ) / c; } @@ -269,11 +381,12 @@ FT_Int64 temp, temp2; - FT_MulTo64( a, b, &temp ); - temp2.hi = (FT_Int32)( c >> 31 ); - temp2.lo = (FT_UInt32)( c / 2 ); + ft_multo64( a, b, &temp ); + + temp2.hi = 0; + temp2.lo = (FT_UInt32)(c >> 1); FT_Add64( &temp, &temp2, &temp ); - a = FT_Div64by32( &temp, c ); + a = ft_div64by32( temp.hi, temp.lo, c ); } else a = 0x7FFFFFFFL; @@ -284,8 +397,9 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Long ) FT_MulFix( FT_Long a, - FT_Long b ) + FT_EXPORT_DEF( FT_Long ) + FT_MulFix( FT_Long a, + FT_Long b ) { FT_Long s; FT_ULong ua, ub; @@ -309,9 +423,8 @@ FT_ULong al = ua & 0xFFFF; - ua = ( ua >> 16 ) * ub + - al * ( ub >> 16 ) + - ( al * ( ub & 0xFFFF ) >> 16 ); + ua = ( ua >> 16 ) * ub + al * ( ub >> 16 ) + + ( ( al * ( ub & 0xFFFF ) + 0x8000 ) >> 16 ); } return ( s < 0 ? -(FT_Long)ua : ua ); @@ -320,8 +433,9 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Long ) FT_DivFix( FT_Long a, - FT_Long b ) + FT_EXPORT_DEF( FT_Long ) + FT_DivFix( FT_Long a, + FT_Long b ) { FT_Int32 s; FT_UInt32 q; @@ -338,7 +452,7 @@ else if ( ( a >> 16 ) == 0 ) { /* compute result directly */ - q = (FT_UInt32)( a << 16 ) / (FT_UInt32)b; + q = (FT_UInt32)( (a << 16) + (b >> 1) ) / (FT_UInt32)b; } else { @@ -347,10 +461,10 @@ temp.hi = (FT_Int32) (a >> 16); temp.lo = (FT_UInt32)(a << 16); - temp2.hi = (FT_Int32)( b >> 31 ); - temp2.lo = (FT_UInt32)( b / 2 ); + temp2.hi = 0; + temp2.lo = (FT_UInt32)( b >> 1 ); FT_Add64( &temp, &temp2, &temp ); - q = FT_Div64by32( &temp, b ); + q = ft_div64by32( temp.hi, temp.lo, b ); } return ( s < 0 ? -(FT_Int32)q : (FT_Int32)q ); @@ -359,61 +473,19 @@ /* documentation is in ftcalc.h */ - FT_EXPORT_DEF( void ) FT_Add64( FT_Int64* x, - FT_Int64* y, - FT_Int64 *z ) + FT_EXPORT_DEF( void ) + FT_MulTo64( FT_Int32 x, + FT_Int32 y, + FT_Int64 *z ) { - register FT_UInt32 lo, hi; - + FT_Int32 s; - lo = x->lo + y->lo; - hi = x->hi + y->hi + ( lo < x->lo ); - z->lo = lo; - z->hi = hi; - } - - - /* documentation is in ftcalc.h */ - - FT_EXPORT_DEF( void ) FT_MulTo64( FT_Int32 x, - FT_Int32 y, - FT_Int64 *z ) - { - FT_Int32 s; - - s = x; x = ABS( x ); s ^= y; y = ABS( y ); - - { - FT_UInt32 lo1, hi1, lo2, hi2, lo, hi, i1, i2; - - lo1 = x & 0x0000FFFF; hi1 = x >> 16; - lo2 = y & 0x0000FFFF; hi2 = y >> 16; + ft_multo64( x, y, z ); - lo = lo1 * lo2; - i1 = lo1 * hi2; - i2 = lo2 * hi1; - hi = hi1 * hi2; - - /* Check carry overflow of i1 + i2 */ - i1 += i2; - if ( i1 < i2 ) - hi += 1L << 16; - - hi += i1 >> 16; - i1 = i1 << 16; - - /* Check carry overflow of i1 + lo */ - lo += i1; - hi += ( lo < i1 ); - - z->lo = lo; - z->hi = hi; - } - if ( s < 0 ) { z->lo = (FT_UInt32)-(FT_Int32)z->lo; @@ -424,8 +496,12 @@ /* documentation is in ftcalc.h */ - FT_EXPORT_DEF( FT_Int32 ) FT_Div64by32( FT_Int64* x, - FT_Int32 y ) + /* apparently, the second version of this code is not compiled correctly */ + /* on Mac machines with the MPW C compiler.. tsss, tsss, tss... */ +#if 1 + FT_EXPORT_DEF( FT_Int32 ) + FT_Div64by32( FT_Int64* x, + FT_Int32 y ) { FT_Int32 s; FT_UInt32 q, r, i, lo; @@ -435,7 +511,7 @@ if ( s < 0 ) { x->lo = (FT_UInt32)-(FT_Int32)x->lo; - x->hi = ~x->hi + !( x->lo ); + x->hi = ~x->hi + !x->lo; } s ^= y; y = ABS( y ); @@ -455,8 +531,8 @@ if ( r >= (FT_UInt32)y ) /* we know y is to be treated as unsigned here */ return ( s < 0 ? 0x80000001UL : 0x7FFFFFFFUL ); - /* Return Max/Min Int32 if division overflow. */ - /* This includes division by zero! */ + /* Return Max/Min Int32 if division overflow. */ + /* This includes division by zero! */ q = 0; for ( i = 0; i < 32; i++ ) { @@ -474,17 +550,50 @@ return ( s < 0 ? -(FT_Int32)q : (FT_Int32)q ); } +#else + FT_EXPORT_DEF( FT_Int32 ) + FT_Div64by32( FT_Int64* x, + FT_Int32 y ) + { + FT_Int32 s; + FT_UInt32 q; + s = x->hi; + if ( s < 0 ) + { + x->lo = (FT_UInt32)-(FT_Int32)x->lo; + x->hi = ~x->hi + !x->lo; + } + s ^= y; y = ABS( y ); + + /* Shortcut */ + if ( x->hi == 0 ) + { + if ( y > 0 ) + q = ( x->lo + ( y >> 1 ) ) / y; + else + q = 0x7FFFFFFFL; + + return ( s < 0 ? -(FT_Int32)q : (FT_Int32)q ); + } + + q = ft_div64by32( x->hi, x->lo, y ); + + return ( s < 0 ? -(FT_Int32)q : (FT_Int32)q ); + } +#endif + + #ifdef FT_CONFIG_OPTION_OLD_CALCS /* two helper functions for FT_Sqrt64() */ - static - void FT_Sub64( FT_Int64* x, - FT_Int64* y, - FT_Int64* z ) + static void + FT_Sub64( FT_Int64* x, + FT_Int64* y, + FT_Int64* z ) { register FT_UInt32 lo, hi; @@ -497,8 +606,8 @@ } - static - int ft_order64( FT_Int64* z ) + static int + ft_order64( FT_Int64* z ) { FT_UInt32 i; int j; @@ -523,7 +632,8 @@ /* documentation is in ftcalc.h */ - FT_EXPORT_DEF( FT_Int32 ) FT_Sqrt64( FT_Int64* l ) + FT_EXPORT_DEF( FT_Int32 ) + FT_Sqrt64( FT_Int64* l ) { FT_Int64 l2; FT_Int32 r, s; @@ -551,20 +661,45 @@ } - FT_EXPORT_DEF( FT_Int32 ) FT_SqrtFixed( FT_Int32 x ) - { - FT_Int64 z; +#endif /* FT_CONFIG_OPTION_OLD_CALCS */ - z.hi = (FT_UInt32)((FT_Int32)(x) >> 16); - z.lo = (FT_UInt32)( x << 16 ); - return FT_Sqrt64( &z ); - } +#endif /* FT_LONG64 */ -#endif /* FT_CONFIG_OPTION_OLD_CALCS */ + /* a not-so-fast but working 16.16 fixed point square root function */ -#endif /* FT_LONG64 */ + FT_EXPORT_DEF( FT_Int32 ) + FT_SqrtFixed( FT_Int32 x ) + { + FT_UInt32 root, rem_hi, rem_lo, test_div; + FT_Int count; + + + root = 0; + + if ( x > 0 ) + { + rem_hi = 0; + rem_lo = x; + count = 24; + do + { + rem_hi = ( rem_hi << 2 ) | ( rem_lo >> 30 ); + rem_lo <<= 2; + root <<= 1; + test_div = ( root << 1 ) + 1; + + if ( rem_hi >= test_div ) + { + rem_hi -= test_div; + root += 1; + } + } while ( --count ); + } + + return (FT_Int32)root; + } /* END */ Index: xc/extras/freetype2/src/base/ftdbgmem.c diff -u /dev/null xc/extras/freetype2/src/base/ftdbgmem.c:1.1.1.1 --- /dev/null Fri Jan 18 15:21:52 2002 +++ xc/extras/freetype2/src/base/ftdbgmem.c Mon Jan 14 11:52:09 2002 @@ -0,0 +1,672 @@ +/***************************************************************************/ +/* */ +/* ftdbgmem.c */ +/* */ +/* Memory debugger (body). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_INTERNAL_DEBUG_H +#include FT_INTERNAL_MEMORY_H +#include FT_SYSTEM_H +#include FT_ERRORS_H +#include FT_TYPES_H + + +#ifdef FT_DEBUG_MEMORY + + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + + + typedef struct FT_MemNodeRec_* FT_MemNode; + typedef struct FT_MemTableRec_* FT_MemTable; + +#define FT_MEM_VAL( addr ) ((FT_ULong)(FT_Pointer)( addr )) + + typedef struct FT_MemNodeRec_ + { + FT_Byte* address; + FT_Long size; /* < 0 if the block was freed */ + + const char* alloc_file_name; + FT_Long alloc_line_no; + + const char* free_file_name; + FT_Long free_line_no; + + FT_MemNode link; + + } FT_MemNodeRec; + + + typedef struct FT_MemTableRec_ + { + FT_ULong size; + FT_ULong nodes; + FT_MemNode* buckets; + + FT_ULong alloc_total; + FT_ULong alloc_current; + FT_ULong alloc_max; + + const char* file_name; + FT_Long line_no; + + FT_Memory memory; + FT_Pointer memory_user; + FT_Alloc_Func alloc; + FT_Free_Func free; + FT_Realloc_Func realloc; + + } FT_MemTableRec; + + +#define FT_MEM_SIZE_MIN 7 +#define FT_MEM_SIZE_MAX 13845163 + +#define FT_FILENAME( x ) ((x) ? (x) : "unknown file") + + + static const FT_UInt ft_mem_primes[] = + { + 7, + 11, + 19, + 37, + 73, + 109, + 163, + 251, + 367, + 557, + 823, + 1237, + 1861, + 2777, + 4177, + 6247, + 9371, + 14057, + 21089, + 31627, + 47431, + 71143, + 106721, + 160073, + 240101, + 360163, + 540217, + 810343, + 1215497, + 1823231, + 2734867, + 4102283, + 6153409, + 9230113, + 13845163, + }; + + +#include <stdarg.h> + + + extern void + ft_mem_debug_panic( const char* fmt, ... ) + { + va_list ap; + + + printf( "FreeType.Debug: " ); + + va_start( ap, fmt ); + vprintf( fmt, ap ); + va_end( ap ); + + printf( "\n" ); + exit( EXIT_FAILURE ); + } + + + static FT_ULong + ft_mem_closest_prime( FT_ULong num ) + { + FT_UInt i; + + + for ( i = 0; + i < sizeof ( ft_mem_primes ) / sizeof ( ft_mem_primes[0] ); i++ ) + if ( ft_mem_primes[i] > num ) + return ft_mem_primes[i]; + + return FT_MEM_SIZE_MAX; + } + + + static FT_Pointer + ft_mem_table_alloc( FT_MemTable table, + FT_Long size ) + { + FT_Memory memory = table->memory; + FT_Pointer block; + + + memory->user = table->memory_user; + block = table->alloc( memory, size ); + memory->user = table; + + return block; + } + + + static void + ft_mem_table_free( FT_MemTable table, + FT_Pointer block ) + { + FT_Memory memory = table->memory; + + + memory->user = table->memory_user; + table->free( memory, block ); + memory->user = table; + } + + + static void + ft_mem_table_resize( FT_MemTable table ) + { + FT_ULong new_size; + + + new_size = ft_mem_closest_prime( table->nodes ); + if ( new_size != table->size ) + { + FT_MemNode* new_buckets ; + FT_ULong i; + + + new_buckets = ft_mem_table_alloc( table, + new_size * sizeof ( FT_MemNode ) ); + if ( new_buckets == NULL ) + return; + + MEM_Set( new_buckets, 0, sizeof ( FT_MemNode ) * new_size ); + + for ( i = 0; i < table->size; i++ ) + { + FT_MemNode node, next, *pnode; + FT_ULong hash; + + + node = table->buckets[i]; + while ( node ) + { + next = node->link; + hash = FT_MEM_VAL( node->address ) % new_size; + pnode = new_buckets + hash; + + node->link = pnode[0]; + pnode[0] = node; + + node = next; + } + } + + if ( table->buckets ) + ft_mem_table_free( table, table->buckets ); + + table->buckets = new_buckets; + table->size = new_size; + } + } + + + static FT_MemTable + ft_mem_table_new( FT_Memory memory ) + { + FT_MemTable table; + + + table = memory->alloc( memory, sizeof ( *table ) ); + if ( table == NULL ) + goto Exit; + + MEM_Set( table, 0, sizeof ( *table ) ); + + table->size = FT_MEM_SIZE_MIN; + table->nodes = 0; + + table->memory = memory; + + table->memory_user = memory->user; + + table->alloc = memory->alloc; + table->realloc = memory->realloc; + table->free = memory->free; + + table->buckets = memory->alloc( memory, + table->size * sizeof ( FT_MemNode ) ); + if ( table->buckets ) + MEM_Set( table->buckets, 0, sizeof ( FT_MemNode ) * table->size ); + else + { + memory->free( memory, table ); + table = NULL; + } + + Exit: + return table; + } + + + static void + ft_mem_table_destroy( FT_MemTable table ) + { + FT_ULong i; + + + if ( table ) + { + FT_Long leak_count = 0; + FT_ULong leaks = 0; + + + for ( i = 0; i < table->size; i++ ) + { + FT_MemNode *pnode = table->buckets + i, next, node = *pnode; + + + while ( node ) + { + next = node->link; + node->link = 0; + + if ( node->size > 0 ) + { + printf( + "leaked memory block at address %p, size %8ld in (%s:%ld)\n", + node->address, node->size, + FT_FILENAME( node->alloc_file_name ), + node->alloc_line_no ); + + leak_count++; + leaks += node->size; + + ft_mem_table_free( table, node->address ); + } + + node->address = NULL; + node->size = 0; + + free( node ); + node = next; + } + table->buckets[i] = 0; + } + ft_mem_table_free( table, table->buckets ); + table->buckets = NULL; + + table->size = 0; + table->nodes = 0; + free( table ); + + printf( + "FreeType: total memory allocations = %ld\n", table->alloc_total ); + printf( + "FreeType: maximum memory footprint = %ld\n", table->alloc_max ); + + if ( leak_count > 0 ) + ft_mem_debug_panic( + "FreeType: %ld bytes of memory leaked in %ld blocks\n", + leaks, leak_count ); + printf( "FreeType: No memory leaks detected!\n" ); + } + } + + + static FT_MemNode* + ft_mem_table_get_nodep( FT_MemTable table, + FT_Byte* address ) + { + FT_ULong hash; + FT_MemNode *pnode, node; + + + hash = FT_MEM_VAL( address ); + pnode = table->buckets + ( hash % table->size ); + + for (;;) + { + node = pnode[0]; + if ( !node ) + break; + + if ( node->address == address ) + break; + + pnode = &node->link; + } + return pnode; + } + + + static void + ft_mem_table_set( FT_MemTable table, + FT_Byte* address, + FT_ULong size ) + { + FT_MemNode *pnode, node; + + + if ( table ) + { + pnode = ft_mem_table_get_nodep( table, address ); + node = *pnode; + if ( node ) + { + if ( node->size < 0 ) + { + /* this block was already freed. This means that our memory is */ + /* now completely corrupted! */ + ft_mem_debug_panic( + "memory heap corrupted (allocating freed block)" ); + } + else + { + /* this block was already allocated. This means that our memory */ + /* is also corrupted! */ + ft_mem_debug_panic( + "memory heap corrupted (re-allocating allocated block)" ); + } + } + + /* we need to create a new node in this table */ + node = ft_mem_table_alloc( table, sizeof ( *node ) ); + if ( node == NULL ) + ft_mem_debug_panic( "not enough memory to run memory tests" ); + + node->address = address; + node->size = size; + + node->alloc_file_name = table->file_name; + node->alloc_line_no = table->line_no; + + node->free_file_name = NULL; + node->free_line_no = 0; + + node->link = pnode[0]; + + pnode[0] = node; + table->nodes++; + + table->alloc_total += size; + table->alloc_current += size; + if ( table->alloc_current > table->alloc_max ) + table->alloc_max = table->alloc_current; + + if ( table->nodes * 3 < table->size || + table->size * 3 < table->nodes ) + ft_mem_table_resize( table ); + } + } + + + static void + ft_mem_table_remove( FT_MemTable table, + FT_Byte* address ) + { + if ( table ) + { + FT_MemNode *pnode, node; + + + pnode = ft_mem_table_get_nodep( table, address ); + node = *pnode; + if ( node ) + { + if ( node->size < 0 ) + ft_mem_debug_panic( + "freeing memory block at %p more than once at (%s:%ld)\n" + "block allocated at (%s:%ld) and released at (%s:%ld)", + address, + FT_FILENAME( table->file_name ), table->line_no, + FT_FILENAME( node->alloc_file_name ), node->alloc_line_no, + FT_FILENAME( node->free_file_name ), node->free_line_no ); + + /* we simply invert the node's size to indicate that the node */ + /* was freed. We also change its contents. */ + MEM_Set( address, 0xF3, node->size ); + + table->alloc_current -= node->size; + node->size = -node->size; + node->free_file_name = table->file_name; + node->free_line_no = table->line_no; + } + else + ft_mem_debug_panic( + "trying to free unknown block at %p in (%s:%ld)\n", + address, + FT_FILENAME( table->file_name ), table->line_no ); + } + } + + + extern FT_Pointer + ft_mem_debug_alloc( FT_Memory memory, + FT_Long size ) + { + FT_MemTable table = memory->user; + FT_Byte* block; + + + if ( size <= 0 ) + ft_mem_debug_panic( "negative block size allocation (%ld)", size ); + + block = ft_mem_table_alloc( table, size ); + if ( block ) + ft_mem_table_set( table, block, (FT_ULong)size ); + + table->file_name = NULL; + table->line_no = 0; + + return (FT_Pointer) block; + } + + + extern void + ft_mem_debug_free( FT_Memory memory, + FT_Pointer block ) + { + FT_MemTable table = memory->user; + + + if ( block == NULL ) + ft_mem_debug_panic( "trying to free NULL in (%s:%ld)", + FT_FILENAME( table->file_name ), + table->line_no ); + + ft_mem_table_remove( table, (FT_Byte*)block ); + + /* we never really free the block */ + table->file_name = NULL; + table->line_no = 0; + } + + + extern FT_Pointer + ft_mem_debug_realloc( FT_Memory memory, + FT_Long cur_size, + FT_Long new_size, + FT_Pointer block ) + { + FT_MemTable table = memory->user; + FT_MemNode node, *pnode; + FT_Pointer new_block; + + const char* file_name = FT_FILENAME( table->file_name ); + FT_Long line_no = table->line_no; + + + if ( block == NULL || cur_size == 0 ) + ft_mem_debug_panic( "trying to reallocate NULL in (%s:%ld)", + file_name, line_no ); + + if ( new_size <= 0 ) + ft_mem_debug_panic( + "trying to reallocate %p to size 0 (current is %ld) in (%s:%ld)", + block, cur_size, file_name, line_no ); + + /* check 'cur_size' value */ + pnode = ft_mem_table_get_nodep( table, (FT_Byte*)block ); + node = *pnode; + if ( !node ) + ft_mem_debug_panic( + "trying to reallocate unknown block at %p in (%s:%ld)", + block, file_name, line_no ); + + if ( node->size <= 0 ) + ft_mem_debug_panic( + "trying to reallocate freed block at %p in (%s:%ld)", + block, file_name, line_no ); + + if ( node->size != cur_size ) + ft_mem_debug_panic( "invalid realloc request for %p. cur_size is " + "%ld instead of %ld in (%s:%ld)", + block, cur_size, node->size, file_name, line_no ); + + new_block = ft_mem_debug_alloc( memory, new_size ); + if ( new_block == NULL ) + return NULL; + + memcpy( new_block, block, cur_size < new_size ? cur_size : new_size ); + + table->file_name = file_name; + table->line_no = line_no; + + ft_mem_debug_free( memory, (FT_Byte*)block ); + + return new_block; + } + + + extern FT_Int + ft_mem_debug_init( FT_Memory memory ) + { + FT_MemTable table; + FT_Int result = 0; + + + if ( getenv( "FT_DEBUG_MEMORY" ) ) + { + table = ft_mem_table_new( memory ); + if ( table ) + { + memory->user = table; + memory->alloc = ft_mem_debug_alloc; + memory->realloc = ft_mem_debug_realloc; + memory->free = ft_mem_debug_free; + result = 1; + } + } + return result; + } + + + extern void + ft_mem_debug_done( FT_Memory memory ) + { + FT_MemTable table = memory->user; + + + if ( table ) + { + memory->free = table->free; + memory->realloc = table->realloc; + memory->alloc = table->alloc; + + ft_mem_table_destroy( table ); + memory->user = NULL; + } + } + + + FT_BASE_DEF( FT_Error ) + FT_Alloc_Debug( FT_Memory memory, + FT_Long size, + void* *P, + const char* file_name, + FT_Long line_no ) + { + FT_MemTable table = memory->user; + + + if ( table ) + { + table->file_name = file_name; + table->line_no = line_no; + } + return FT_Alloc( memory, size, P ); + } + + + FT_BASE_DEF( FT_Error ) + FT_Realloc_Debug( FT_Memory memory, + FT_Long current, + FT_Long size, + void* *P, + const char* file_name, + FT_Long line_no ) + { + FT_MemTable table = memory->user; + + + if ( table ) + { + table->file_name = file_name; + table->line_no = line_no; + } + return FT_Realloc( memory, current, size, P ); + } + + + FT_BASE_DEF( void ) + FT_Free_Debug( FT_Memory memory, + FT_Pointer block, + const char* file_name, + FT_Long line_no ) + { + FT_MemTable table = memory->user; + + + if ( table ) + { + table->file_name = file_name; + table->line_no = line_no; + } + FT_Free( memory, block ); + } + + +#else /* !FT_DEBUG_MEMORY */ + + /* ANSI C doesn't like empty source files */ + const FT_Byte _debug_mem_dummy = 0; + +#endif /* !FT_DEBUG_MEMORY */ + + +/* END */ Index: xc/extras/freetype2/src/base/ftdebug.c diff -u xc/extras/freetype2/src/base/ftdebug.c:1.1.1.2 xc/extras/freetype2/src/base/ftdebug.c:1.1.1.3 --- xc/extras/freetype2/src/base/ftdebug.c:1.1.1.2 Tue May 15 23:45:35 2001 +++ xc/extras/freetype2/src/base/ftdebug.c Sun Dec 16 12:49:26 2001 @@ -4,7 +4,7 @@ /* */ /* Debugging and logging component (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -58,7 +58,8 @@ #include <string.h> - FT_EXPORT_DEF( void ) FT_Message( const char* fmt, ... ) + FT_EXPORT_DEF( void ) + FT_Message( const char* fmt, ... ) { va_list ap; @@ -69,7 +70,8 @@ } - FT_EXPORT_DEF( void ) FT_Panic( const char* fmt, ... ) + FT_EXPORT_DEF( void ) + FT_Panic( const char* fmt, ... ) { va_list ap; @@ -84,8 +86,9 @@ #ifdef FT_DEBUG_LEVEL_TRACE - FT_EXPORT_DEF( void ) FT_SetTraceLevel( FT_Trace component, - char level ) + FT_EXPORT_DEF( void ) + FT_SetTraceLevel( FT_Trace component, + char level ) { if ( component >= trace_max ) return; Index: xc/extras/freetype2/src/base/ftextend.c diff -u xc/extras/freetype2/src/base/ftextend.c:1.1.1.2 xc/extras/freetype2/src/base/ftextend.c:1.1.1.3 --- xc/extras/freetype2/src/base/ftextend.c:1.1.1.2 Tue May 15 23:45:35 2001 +++ xc/extras/freetype2/src/base/ftextend.c Sun Dec 16 12:49:26 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType extensions implementation (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -63,8 +63,8 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error FT_Init_Extensions( FT_Driver driver ) + FT_LOCAL_DEF FT_Error + FT_Init_Extensions( FT_Driver driver ) { FT_Error error; FT_Memory memory; @@ -99,8 +99,8 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error FT_Done_Extensions( FT_Driver driver ) + FT_LOCAL_DEF FT_Error + FT_Done_Extensions( FT_Driver driver ) { FT_Memory memory = driver->root.memory; @@ -112,9 +112,9 @@ /* documentation is in ftextend.h */ - FT_EXPORT_DEF( FT_Error ) FT_Register_Extension( - FT_Driver driver, - FT_Extension_Class* clazz ) + FT_EXPORT_DEF( FT_Error ) + FT_Register_Extension( FT_Driver driver, + FT_Extension_Class* clazz ) { FT_Extension_Registry* registry; @@ -153,10 +153,10 @@ /* documentation is in ftextend.h */ - FT_EXPORT_DEF( void* ) FT_Get_Extension( - FT_Face face, - const char* extension_id, - void** extension_interface ) + FT_EXPORT_DEF( void* ) + FT_Get_Extension( FT_Face face, + const char* extension_id, + void** extension_interface ) { FT_Extension_Registry* registry; @@ -209,8 +209,8 @@ /* <Note> */ /* Called by the face object destructor. */ /* */ - FT_LOCAL_DEF - FT_Error FT_Destroy_Extensions( FT_Face face ) + FT_LOCAL_DEF FT_Error + FT_Destroy_Extensions( FT_Face face ) { FT_Extension_Registry* registry; FT_Memory memory; @@ -257,8 +257,8 @@ /* <Note> */ /* Called by the face object constructor. */ /* */ - FT_LOCAL_DEF - FT_Error FT_Create_Extensions( FT_Face face ) + FT_LOCAL_DEF FT_Error + FT_Create_Extensions( FT_Face face ) { FT_Extension_Registry* registry; FT_Memory memory; Index: xc/extras/freetype2/src/base/ftglyph.c diff -u xc/extras/freetype2/src/base/ftglyph.c:1.1.1.2 xc/extras/freetype2/src/base/ftglyph.c:1.1.1.5 --- xc/extras/freetype2/src/base/ftglyph.c:1.1.1.2 Tue May 15 23:45:35 2001 +++ xc/extras/freetype2/src/base/ftglyph.c Mon Jan 14 11:52:09 2002 @@ -4,7 +4,7 @@ /* */ /* FreeType convenience functions to handle glyphs (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -55,8 +55,9 @@ /* documentation is in ftglyph.h */ - FT_EXPORT_DEF( void ) FT_Matrix_Multiply( FT_Matrix* a, - FT_Matrix* b ) + FT_EXPORT_DEF( void ) + FT_Matrix_Multiply( FT_Matrix* a, + FT_Matrix* b ) { FT_Fixed xx, xy, yx, yy; @@ -76,7 +77,8 @@ /* documentation is in ftglyph.h */ - FT_EXPORT_DEF( FT_Error ) FT_Matrix_Invert( FT_Matrix* matrix ) + FT_EXPORT_DEF( FT_Error ) + FT_Matrix_Invert( FT_Matrix* matrix ) { FT_Pos delta, xx, yy; @@ -112,10 +114,10 @@ /*************************************************************************/ /*************************************************************************/ - static - FT_Error ft_bitmap_copy( FT_Memory memory, - FT_Bitmap* source, - FT_Bitmap* target ) + static FT_Error + ft_bitmap_copy( FT_Memory memory, + FT_Bitmap* source, + FT_Bitmap* target ) { FT_Error error; FT_Int pitch = source->pitch; @@ -136,9 +138,9 @@ } - static - FT_Error ft_bitmap_glyph_init( FT_BitmapGlyph glyph, - FT_GlyphSlot slot ) + static FT_Error + ft_bitmap_glyph_init( FT_BitmapGlyph glyph, + FT_GlyphSlot slot ) { FT_Error error = FT_Err_Ok; FT_Library library = FT_GLYPH(glyph)->library; @@ -169,9 +171,9 @@ } - static - FT_Error ft_bitmap_glyph_copy( FT_BitmapGlyph source, - FT_BitmapGlyph target ) + static FT_Error + ft_bitmap_glyph_copy( FT_BitmapGlyph source, + FT_BitmapGlyph target ) { FT_Memory memory = source->root.library->memory; @@ -183,8 +185,8 @@ } - static - void ft_bitmap_glyph_done( FT_BitmapGlyph glyph ) + static void + ft_bitmap_glyph_done( FT_BitmapGlyph glyph ) { FT_Memory memory = FT_GLYPH(glyph)->library->memory; @@ -193,9 +195,9 @@ } - static - void ft_bitmap_glyph_bbox( FT_BitmapGlyph glyph, - FT_BBox* cbox ) + static void + ft_bitmap_glyph_bbox( FT_BitmapGlyph glyph, + FT_BBox* cbox ) { cbox->xMin = glyph->left << 6; cbox->xMax = cbox->xMin + ( glyph->bitmap.width << 6 ); @@ -227,9 +229,9 @@ /*************************************************************************/ - static - FT_Error ft_outline_glyph_init( FT_OutlineGlyph glyph, - FT_GlyphSlot slot ) + static FT_Error + ft_outline_glyph_init( FT_OutlineGlyph glyph, + FT_GlyphSlot slot ) { FT_Error error = FT_Err_Ok; FT_Library library = FT_GLYPH(glyph)->library; @@ -268,16 +270,16 @@ } - static - void ft_outline_glyph_done( FT_OutlineGlyph glyph ) + static void + ft_outline_glyph_done( FT_OutlineGlyph glyph ) { FT_Outline_Done( FT_GLYPH( glyph )->library, &glyph->outline ); } - static - FT_Error ft_outline_glyph_copy( FT_OutlineGlyph source, - FT_OutlineGlyph target ) + static FT_Error + ft_outline_glyph_copy( FT_OutlineGlyph source, + FT_OutlineGlyph target ) { FT_Error error; FT_Library library = FT_GLYPH( source )->library; @@ -292,10 +294,10 @@ } - static - void ft_outline_glyph_transform( FT_OutlineGlyph glyph, - FT_Matrix* matrix, - FT_Vector* delta ) + static void + ft_outline_glyph_transform( FT_OutlineGlyph glyph, + FT_Matrix* matrix, + FT_Vector* delta ) { if ( matrix ) FT_Outline_Transform( &glyph->outline, matrix ); @@ -305,17 +307,17 @@ } - static - void ft_outline_glyph_bbox( FT_OutlineGlyph glyph, - FT_BBox* bbox ) + static void + ft_outline_glyph_bbox( FT_OutlineGlyph glyph, + FT_BBox* bbox ) { FT_Outline_Get_CBox( &glyph->outline, bbox ); } - static - FT_Error ft_outline_glyph_prepare( FT_OutlineGlyph glyph, - FT_GlyphSlot slot ) + static FT_Error + ft_outline_glyph_prepare( FT_OutlineGlyph glyph, + FT_GlyphSlot slot ) { slot->format = ft_glyph_format_outline; slot->outline = glyph->outline; @@ -347,10 +349,10 @@ /*************************************************************************/ /*************************************************************************/ - static - FT_Error ft_new_glyph( FT_Library library, - const FT_Glyph_Class* clazz, - FT_Glyph* aglyph ) + static FT_Error + ft_new_glyph( FT_Library library, + const FT_Glyph_Class* clazz, + FT_Glyph* aglyph ) { FT_Memory memory = library->memory; FT_Error error; @@ -374,8 +376,9 @@ /* documentation is in ftglyph.h */ - FT_EXPORT_DEF( FT_Error ) FT_Glyph_Copy( FT_Glyph source, - FT_Glyph *target ) + FT_EXPORT_DEF( FT_Error ) + FT_Glyph_Copy( FT_Glyph source, + FT_Glyph *target ) { FT_Glyph copy; FT_Error error; @@ -414,8 +417,9 @@ /* documentation is in ftglyph.h */ - FT_EXPORT_DEF( FT_Error ) FT_Get_Glyph( FT_GlyphSlot slot, - FT_Glyph *aglyph ) + FT_EXPORT_DEF( FT_Error ) + FT_Get_Glyph( FT_GlyphSlot slot, + FT_Glyph *aglyph ) { FT_Library library = slot->library; FT_Error error; @@ -479,9 +483,10 @@ /* documentation is in ftglyph.h */ - FT_EXPORT_DEF( FT_Error ) FT_Glyph_Transform( FT_Glyph glyph, - FT_Matrix* matrix, - FT_Vector* delta ) + FT_EXPORT_DEF( FT_Error ) + FT_Glyph_Transform( FT_Glyph glyph, + FT_Matrix* matrix, + FT_Vector* delta ) { const FT_Glyph_Class* clazz; FT_Error error = FT_Err_Ok; @@ -510,21 +515,26 @@ /* documentation is in ftglyph.h */ - FT_EXPORT_DEF( void ) FT_Glyph_Get_CBox( FT_Glyph glyph, - FT_UInt bbox_mode, - FT_BBox *acbox ) + FT_EXPORT_DEF( void ) + FT_Glyph_Get_CBox( FT_Glyph glyph, + FT_UInt bbox_mode, + FT_BBox *acbox ) { const FT_Glyph_Class* clazz; - FT_Error error = FT_Err_Ok; - if ( !acbox || !glyph || !glyph->clazz ) - error = FT_Err_Invalid_Argument; + if ( !acbox ) + return; + + acbox->xMin = acbox->yMin = acbox->xMax = acbox->yMax = 0; + + if ( !glyph || !glyph->clazz ) + return; else { clazz = glyph->clazz; if ( !clazz->glyph_bbox ) - error = FT_Err_Invalid_Glyph_Format; + return; else { /* retrieve bbox in 26.6 coordinates */ @@ -555,15 +565,16 @@ /* documentation is in ftglyph.h */ - FT_EXPORT_DEF( FT_Error ) FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, - FT_ULong render_mode, - FT_Vector* origin, - FT_Bool destroy ) + FT_EXPORT_DEF( FT_Error ) + FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, + FT_ULong render_mode, + FT_Vector* origin, + FT_Bool destroy ) { FT_GlyphSlotRec dummy; FT_Error error; FT_Glyph glyph; - FT_BitmapGlyph bitmap; + FT_BitmapGlyph bitmap = NULL; const FT_Glyph_Class* clazz; @@ -587,27 +598,26 @@ dummy.library = glyph->library; dummy.format = clazz->glyph_format; - /* if `origin' is set, translate the glyph image */ - if ( origin ) - FT_Glyph_Transform( glyph, 0, origin ); - /* create result bitmap glyph */ error = ft_new_glyph( glyph->library, &ft_bitmap_glyph_class, (FT_Glyph*)&bitmap ); if ( error ) goto Exit; +#if 0 + /* if `origin' is set, translate the glyph image */ + if ( origin ) + FT_Glyph_Transform( glyph, 0, origin ); +#else + FT_UNUSED( origin ); +#endif + /* prepare dummy slot for rendering */ error = clazz->glyph_prepare( glyph, &dummy ); if ( !error ) error = FT_Render_Glyph_Internal( glyph->library, &dummy, render_mode ); - if ( error ) - { - FT_Done_Glyph( FT_GLYPH( bitmap ) ); - goto Exit; - } - +#if 0 if ( !destroy && origin ) { FT_Vector v; @@ -617,28 +627,28 @@ v.y = -origin->y; FT_Glyph_Transform( glyph, 0, &v ); } +#endif + if ( error ) + goto Exit; + /* in case of success, copy the bitmap to the glyph bitmap */ - if ( !error ) - { - error = ft_bitmap_glyph_init( bitmap, &dummy ); - if ( error ) - { - /* this should never happen, but let's be safe */ - FT_Done_Glyph( FT_GLYPH( bitmap ) ); - goto Exit; - } + error = ft_bitmap_glyph_init( bitmap, &dummy ); + if ( error ) + goto Exit; - /* copy advance */ - bitmap->root.advance = glyph->advance; + /* copy advance */ + bitmap->root.advance = glyph->advance; - if ( destroy ) - FT_Done_Glyph( glyph ); + if ( destroy ) + FT_Done_Glyph( glyph ); - *the_glyph = FT_GLYPH( bitmap ); - } + *the_glyph = FT_GLYPH( bitmap ); Exit: + if ( error && bitmap ) + FT_Done_Glyph( FT_GLYPH( bitmap ) ); + return error; Bad: @@ -649,7 +659,8 @@ /* documentation is in ftglyph.h */ - FT_EXPORT_DEF( void ) FT_Done_Glyph( FT_Glyph glyph ) + FT_EXPORT_DEF( void ) + FT_Done_Glyph( FT_Glyph glyph ) { if ( glyph ) { Index: xc/extras/freetype2/src/base/ftinit.c diff -u xc/extras/freetype2/src/base/ftinit.c:1.1.1.2 xc/extras/freetype2/src/base/ftinit.c:1.1.1.3 --- xc/extras/freetype2/src/base/ftinit.c:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/base/ftinit.c Sun Dec 16 12:49:26 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType initialization layer (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -67,8 +67,8 @@ #undef FT_USE_MODULE #define FT_USE_MODULE( x ) (const FT_Module_Class*)&x, -static -const FT_Module_Class* const ft_default_modules[] = + static + const FT_Module_Class* const ft_default_modules[] = { #include FT_CONFIG_MODULES_H 0 @@ -77,7 +77,8 @@ /* documentation is in ftmodule.h */ - FT_EXPORT_DEF( void ) FT_Add_Default_Modules( FT_Library library ) + FT_EXPORT_DEF( void ) + FT_Add_Default_Modules( FT_Library library ) { FT_Error error; const FT_Module_Class* const* cur; @@ -102,7 +103,8 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Init_FreeType( FT_Library *alibrary ) + FT_EXPORT_DEF( FT_Error ) + FT_Init_FreeType( FT_Library *alibrary ) { FT_Error error; FT_Memory memory; @@ -131,7 +133,8 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Done_FreeType( FT_Library library ) + FT_EXPORT_DEF( FT_Error ) + FT_Done_FreeType( FT_Library library ) { if ( library ) { Index: xc/extras/freetype2/src/base/ftlist.c diff -u xc/extras/freetype2/src/base/ftlist.c:1.1.1.2 xc/extras/freetype2/src/base/ftlist.c:1.1.1.3 --- xc/extras/freetype2/src/base/ftlist.c:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/base/ftlist.c Sun Dec 16 12:49:26 2001 @@ -4,7 +4,7 @@ /* */ /* Generic list support for FreeType (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -41,8 +41,9 @@ /* documentation is in ftlist.h */ - FT_EXPORT_DEF( FT_ListNode ) FT_List_Find( FT_List list, - void* data ) + FT_EXPORT_DEF( FT_ListNode ) + FT_List_Find( FT_List list, + void* data ) { FT_ListNode cur; @@ -62,8 +63,9 @@ /* documentation is in ftlist.h */ - FT_EXPORT_DEF( void ) FT_List_Add( FT_List list, - FT_ListNode node ) + FT_EXPORT_DEF( void ) + FT_List_Add( FT_List list, + FT_ListNode node ) { FT_ListNode before = list->tail; @@ -82,8 +84,9 @@ /* documentation is in ftlist.h */ - FT_EXPORT_DEF( void ) FT_List_Insert( FT_List list, - FT_ListNode node ) + FT_EXPORT_DEF( void ) + FT_List_Insert( FT_List list, + FT_ListNode node ) { FT_ListNode after = list->head; @@ -102,8 +105,9 @@ /* documentation is in ftlist.h */ - FT_EXPORT_DEF( void ) FT_List_Remove( FT_List list, - FT_ListNode node ) + FT_EXPORT_DEF( void ) + FT_List_Remove( FT_List list, + FT_ListNode node ) { FT_ListNode before, after; @@ -125,8 +129,9 @@ /* documentation is in ftlist.h */ - FT_EXPORT_DEF( void ) FT_List_Up( FT_List list, - FT_ListNode node ) + FT_EXPORT_DEF( void ) + FT_List_Up( FT_List list, + FT_ListNode node ) { FT_ListNode before, after; @@ -154,9 +159,10 @@ /* documentation is in ftlist.h */ - FT_EXPORT_DEF( FT_Error ) FT_List_Iterate( FT_List list, - FT_List_Iterator iterator, - void* user ) + FT_EXPORT_DEF( FT_Error ) + FT_List_Iterate( FT_List list, + FT_List_Iterator iterator, + void* user ) { FT_ListNode cur = list->head; FT_Error error = FT_Err_Ok; @@ -180,10 +186,11 @@ /* documentation is in ftlist.h */ - FT_EXPORT_DEF( void ) FT_List_Finalize( FT_List list, - FT_List_Destructor destroy, - FT_Memory memory, - void* user ) + FT_EXPORT_DEF( void ) + FT_List_Finalize( FT_List list, + FT_List_Destructor destroy, + FT_Memory memory, + void* user ) { FT_ListNode cur; Index: xc/extras/freetype2/src/base/ftmac.c diff -u xc/extras/freetype2/src/base/ftmac.c:1.1.1.2 xc/extras/freetype2/src/base/ftmac.c:1.1.1.4 --- xc/extras/freetype2/src/base/ftmac.c:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/base/ftmac.c Mon Jan 14 11:52:10 2002 @@ -4,7 +4,7 @@ /* */ /* Mac FOND support. Written by just@letterror.com. */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -66,13 +66,14 @@ #include <Resources.h> #include <Fonts.h> #include <Errors.h> +#include <Files.h> +#include <TextUtils.h> #include <ctype.h> /* for isupper() and isalnum() */ #include FT_MAC_H - /* Set PREFER_LWFN to 1 if LWFN (Type 1) is preferred over TrueType in case *both* are available (this is not common, but it *is* possible). */ @@ -81,11 +82,10 @@ #endif - /* Quick'n'dirty Pascal string to C string converter. Warning: this call is not thread safe! Use with caution. */ - static - char* p2c_str( unsigned char* pstr ) + static char* + p2c_str( unsigned char* pstr ) { static char cstr[256]; @@ -97,9 +97,9 @@ /* Given a pathname, fill in a file spec. */ - static - int file_spec_from_path( const char* pathname, - FSSpec* spec ) + static int + file_spec_from_path( const char* pathname, + FSSpec* spec ) { Str255 p_path; FT_ULong path_len; @@ -120,8 +120,8 @@ /* Return the file type of the file specified by spec. */ - static - OSType get_file_type( FSSpec* spec ) + static OSType + get_file_type( FSSpec* spec ) { FInfo finfo; @@ -133,10 +133,29 @@ } + /* is this a Mac OS X .dfont file */ + static Boolean + is_dfont( FSSpec* spec ) + { + int nameLen = spec->name[0]; + + + if ( spec->name[nameLen - 5] == '.' && + spec->name[nameLen - 4] == 'd' && + spec->name[nameLen - 3] == 'f' && + spec->name[nameLen - 2] == 'o' && + spec->name[nameLen - 1] == 'n' && + spec->name[nameLen ] == 't' ) + return true; + else + return false; + } + + /* Given a PostScript font name, create the Macintosh LWFN file name. */ - static - void create_lwfn_name( char* ps_name, - Str255 lwfn_file_name ) + static void + create_lwfn_name( char* ps_name, + Str255 lwfn_file_name ) { int max = 5, count = 0; FT_Byte* p = lwfn_file_name; @@ -166,11 +185,11 @@ /* Given a file reference, answer its location as a vRefNum and a dirID. */ - static - FT_Error get_file_location( short ref_num, - short* v_ref_num, - long* dir_id, - unsigned char* file_name ) + static FT_Error + get_file_location( short ref_num, + short* v_ref_num, + long* dir_id, + unsigned char* file_name ) { FCBPBRec pb; OSErr error; @@ -193,10 +212,10 @@ /* Make a file spec for an LWFN file from a FOND resource and a file name. */ - static - FT_Error make_lwfn_spec( Handle fond, - unsigned char* file_name, - FSSpec* spec ) + static FT_Error + make_lwfn_spec( Handle fond, + unsigned char* file_name, + FSSpec* spec ) { FT_Error error; short ref_num, v_ref_num; @@ -218,14 +237,20 @@ /* Look inside the FOND data, answer whether there should be an SFNT - resource, and answer the name of a possible LWFN Type 1 file. */ - static - void parse_fond( char* fond_data, - short* have_sfnt, - short* sfnt_id, - Str255 lwfn_file_name ) + resource, and answer the name of a possible LWFN Type 1 file. + + Thanks to Paul Miller (paulm@profoundeffects.com) for the fix + to load a face OTHER than the first one in the FOND! + */ + static void + parse_fond( char* fond_data, + short* have_sfnt, + short* sfnt_id, + Str255 lwfn_file_name, + short face_index ) { AsscEntry* assoc; + AsscEntry* base_assoc; FamRec* fond; @@ -233,13 +258,22 @@ *have_sfnt = 0; lwfn_file_name[0] = 0; - fond = (FamRec*)fond_data; - assoc = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 ); + fond = (FamRec*)fond_data; + assoc = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 ); + base_assoc = assoc; + assoc += face_index; /* add on the face_index! */ + /* if the face at this index is not scalable, + fall back to the first one (old behavior) */ if ( assoc->fontSize == 0 ) { + *have_sfnt = 1; + *sfnt_id = assoc->fontID; + } + else if ( base_assoc->fontSize == 0 ) + { *have_sfnt = 1; - *sfnt_id = assoc->fontID; + *sfnt_id = base_assoc->fontID; } if ( fond->ffStylOff ) @@ -272,8 +306,8 @@ unsigned char* suffixes = names[style->indexes[0] - 1]; - for ( i=1; i<=suffixes[0]; i++ ) - strcat( ps_name, p2c_str( names[suffixes[i] - 1 ] ) ); + for ( i = 1; i <= suffixes[0]; i++ ) + strcat( ps_name, p2c_str( names[suffixes[i] - 1] ) ); } create_lwfn_name( ps_name, lwfn_file_name ); } @@ -285,11 +319,11 @@ PFB parser wants the ASCII header as one chunk, and the LWFN chunks are often not organized that way, so we'll glue chunks of the same type together. */ - static - FT_Error read_lwfn( FT_Memory memory, - FSSpec* lwfn_spec, - FT_Byte** pfb_data, - FT_ULong* size ) + static FT_Error + read_lwfn( FT_Memory memory, + FSSpec* lwfn_spec, + FT_Byte** pfb_data, + FT_ULong* size ) { FT_Error error = FT_Err_Ok; short res_ref, res_id; @@ -351,7 +385,6 @@ if ( code != last_code ) { - if ( last_code != -1 ) { /* we're done adding a chunk, fill in the size field */ @@ -394,8 +427,8 @@ /* Finalizer for a memory stream; gets called by FT_Done_Face(). It frees the memory it uses. */ - static - void memory_stream_close( FT_Stream stream ) + static void + memory_stream_close( FT_Stream stream ) { FT_Memory memory = stream->memory; @@ -409,12 +442,12 @@ /* Create a new memory stream from a buffer and a size. */ - static - FT_Error new_memory_stream( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Stream_Close close, - FT_Stream* astream ) + static FT_Error + new_memory_stream( FT_Library library, + FT_Byte* base, + FT_ULong size, + FT_Stream_Close close, + FT_Stream* astream ) { FT_Error error; FT_Memory memory; @@ -447,13 +480,13 @@ /* Create a new FT_Face given a buffer and a driver name. */ - static - FT_Error open_face_from_buffer( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Long face_index, - char* driver_name, - FT_Face* aface ) + static FT_Error + open_face_from_buffer( FT_Library library, + FT_Byte* base, + FT_ULong size, + FT_Long face_index, + char* driver_name, + FT_Face* aface ) { FT_Open_Args args; FT_Error error; @@ -493,11 +526,11 @@ /* Create a new FT_Face from a file spec to an LWFN file. */ - static - FT_Error FT_New_Face_From_LWFN( FT_Library library, - FSSpec* spec, - FT_Long face_index, - FT_Face* aface ) + static FT_Error + FT_New_Face_From_LWFN( FT_Library library, + FSSpec* spec, + FT_Long face_index, + FT_Face* aface ) { FT_Byte* pfb_data; FT_ULong pfb_size; @@ -536,11 +569,11 @@ /* Create a new FT_Face from an SFNT resource, specified by res ID. */ - static - FT_Error FT_New_Face_From_SFNT( FT_Library library, - short sfnt_id, - FT_Long face_index, - FT_Face* aface ) + static FT_Error + FT_New_Face_From_SFNT( FT_Library library, + short sfnt_id, + FT_Long face_index, + FT_Face* aface ) { Handle sfnt = NULL; FT_Byte* sfnt_data; @@ -576,11 +609,11 @@ /* Create a new FT_Face from a file spec to a suitcase file. */ - static - FT_Error FT_New_Face_From_Suitcase( FT_Library library, - FSSpec* spec, - FT_Long face_index, - FT_Face* aface ) + static FT_Error + FT_New_Face_From_Suitcase( FT_Library library, + FSSpec* spec, + FT_Long face_index, + FT_Face* aface ) { FT_Error error = FT_Err_Ok; short res_ref, res_index; @@ -616,12 +649,60 @@ } + /* Create a new FT_Face from a file spec to a suitcase file. */ + static FT_Error + FT_New_Face_From_dfont( FT_Library library, + FSSpec* spec, + FT_Long face_index, + FT_Face* aface ) + { + FT_Error error = FT_Err_Ok; + short res_ref, res_index; + Handle fond; + FSRef hostContainerRef; + + + error = FSpMakeFSRef( spec, &hostContainerRef ); + if ( error == noErr ) + error = FSOpenResourceFile( &hostContainerRef, + 0, NULL, fsRdPerm, &res_ref ); + + if ( error != noErr ) + return FT_Err_Cannot_Open_Resource; + + UseResFile( res_ref ); + + /* face_index may be -1, in which case we + just need to do a sanity check */ + if ( face_index < 0 ) + res_index = 1; + else + { + res_index = (short)( face_index + 1 ); + face_index = 0; + } + fond = Get1IndResource( 'FOND', res_index ); + if ( ResError() ) + { + error = FT_Err_Cannot_Open_Resource; + goto Error; + } + + error = FT_New_Face_From_FOND( library, fond, face_index, aface ); + + Error: + CloseResFile( res_ref ); + return error; + } + + /* documentation in ftmac.h */ - FT_EXPORT_DEF( FT_Error ) FT_New_Face_From_FOND( FT_Library library, - Handle fond, - FT_Long face_index, - FT_Face *aface ) + FT_EXPORT_DEF( FT_Error ) + FT_New_Face_From_FOND( FT_Library library, + Handle fond, + FT_Long face_index, + FT_Face *aface ) { short sfnt_id, have_sfnt, have_lwfn = 0; Str255 lwfn_file_name; @@ -632,12 +713,12 @@ FT_Error error = FT_Err_Unknown_File_Format; - GetResInfo(fond, &fond_id, &fond_type, fond_name); + GetResInfo( fond, &fond_id, &fond_type, fond_name ); if ( ResError() != noErr || fond_type != 'FOND' ) return FT_Err_Invalid_File_Format; HLock( fond ); - parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name ); + parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, face_index ); HUnlock( fond ); if ( lwfn_file_name[0] ) @@ -663,6 +744,92 @@ } + /* documentation in ftmac.h */ + + FT_EXPORT_DEF( FT_Error ) + FT_GetFile_From_Mac_Name( char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + { + OptionBits options = kFMUseGlobalScopeOption; + + FMFontFamilyIterator famIter; + OSStatus status = FMCreateFontFamilyIterator( NULL, NULL, + options, + &famIter ); + FMFont the_font = NULL; + FMFontFamily family = NULL; + + + *face_index = 0; + while ( status == 0 && !the_font ) + { + status = FMGetNextFontFamily( &famIter, &family ); + if ( status == 0 ) + { + int stat2; + FMFontFamilyInstanceIterator instIter; + Str255 famNameStr; + char famName[256]; + + + /* get the family name */ + FMGetFontFamilyName( family, famNameStr ); + CopyPascalStringToC( famNameStr, famName ); + + /* iterate through the styles */ + FMCreateFontFamilyInstanceIterator( family, &instIter ); + + *face_index = 0; + stat2 = 0; + while ( stat2 == 0 && !the_font ) + { + FMFontStyle style; + FMFontSize size; + FMFont font; + + + stat2 = FMGetNextFontFamilyInstance( &instIter, &font, + &style, &size ); + if ( stat2 == 0 && size == 0 ) + { + char fullName[256]; + + + /* build up a complete face name */ + strcpy( fullName, famName ); + if ( style & bold ) + strcat( fullName, " Bold" ); + if ( style & italic ) + strcat( fullName, " Italic" ); + + /* compare with the name we are looking for */ + if ( strcmp( fullName, fontName ) == 0 ) + { + /* found it! */ + the_font = font; + } + else + ++(*face_index); + } + } + + FMDisposeFontFamilyInstanceIterator( &instIter ); + } + } + + FMDisposeFontFamilyIterator( &famIter ); + + if ( the_font ) + { + FMGetFontContainer( the_font, pathSpec ); + return FT_Err_Ok; + } + else + return FT_Err_Unknown_File_Format; + } + + /*************************************************************************/ /* */ /* <Function> */ @@ -674,10 +841,11 @@ /* accepts pathnames to Mac suitcase files. For further */ /* documentation see the original FT_New_Face() in freetype.h. */ /* */ - FT_EXPORT_DEF( FT_Error ) FT_New_Face( FT_Library library, - const char* pathname, - FT_Long face_index, - FT_Face *aface ) + FT_EXPORT_DEF( FT_Error ) + FT_New_Face( FT_Library library, + const char* pathname, + FT_Long face_index, + FT_Face *aface ) { FT_Open_Args args; FSSpec spec; @@ -696,7 +864,9 @@ return FT_New_Face_From_Suitcase( library, &spec, face_index, aface ); else if ( file_type == 'LWFN' ) return FT_New_Face_From_LWFN( library, &spec, face_index, aface ); - else + else if ( is_dfont( &spec ) ) + return FT_New_Face_From_dfont( library, &spec, face_index, aface ); + else /* let it fall through to normal loader (.ttf, .otf, etc.) */ { args.flags = ft_open_pathname; args.pathname = (char*)pathname; Index: xc/extras/freetype2/src/base/ftmm.c diff -u xc/extras/freetype2/src/base/ftmm.c:1.1.1.2 xc/extras/freetype2/src/base/ftmm.c:1.1.1.3 --- xc/extras/freetype2/src/base/ftmm.c:1.1.1.2 Tue May 15 23:45:35 2001 +++ xc/extras/freetype2/src/base/ftmm.c Sun Dec 16 12:49:26 2001 @@ -4,7 +4,7 @@ /* */ /* Multiple Master font support (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -33,8 +33,9 @@ /* documentation is in ftmm.h */ - FT_EXPORT_DEF( FT_Error ) FT_Get_Multi_Master( FT_Face face, - FT_Multi_Master *amaster ) + FT_EXPORT_DEF( FT_Error ) + FT_Get_Multi_Master( FT_Face face, + FT_Multi_Master *amaster ) { FT_Error error; @@ -62,10 +63,10 @@ /* documentation is in ftmm.h */ - FT_EXPORT_DEF( FT_Error ) FT_Set_MM_Design_Coordinates( - FT_Face face, - FT_UInt num_coords, - FT_Long* coords ) + FT_EXPORT_DEF( FT_Error ) + FT_Set_MM_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ) { FT_Error error; @@ -93,8 +94,8 @@ /* documentation is in ftmm.h */ - FT_EXPORT_DEF( FT_Error ) FT_Set_MM_Blend_Coordinates( - FT_Face face, + FT_EXPORT_DEF( FT_Error ) + FT_Set_MM_Blend_Coordinates( FT_Face face, FT_UInt num_coords, FT_Fixed* coords ) { Index: xc/extras/freetype2/src/base/ftnames.c diff -u xc/extras/freetype2/src/base/ftnames.c:1.1.1.2 xc/extras/freetype2/src/base/ftnames.c:1.1.1.3 --- xc/extras/freetype2/src/base/ftnames.c:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/base/ftnames.c Sun Dec 16 12:49:26 2001 @@ -7,7 +7,7 @@ /* */ /* This is _not_ used to retrieve glyph names! */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -29,7 +29,8 @@ /* documentation is in ftnames.h */ - FT_EXPORT_DEF( FT_UInt ) FT_Get_Sfnt_Name_Count( FT_Face face ) + FT_EXPORT_DEF( FT_UInt ) + FT_Get_Sfnt_Name_Count( FT_Face face ) { return (face && FT_IS_SFNT( face )) ? ((TT_Face)face)->num_names : 0; } @@ -37,9 +38,10 @@ /* documentation is in ftnames.h */ - FT_EXPORT_DEF( FT_Error ) FT_Get_Sfnt_Name( FT_Face face, - FT_UInt index, - FT_SfntName *aname ) + FT_EXPORT_DEF( FT_Error ) + FT_Get_Sfnt_Name( FT_Face face, + FT_UInt index, + FT_SfntName *aname ) { FT_Error error = FT_Err_Invalid_Argument; Index: xc/extras/freetype2/src/base/ftobjs.c diff -u xc/extras/freetype2/src/base/ftobjs.c:1.1.1.2 xc/extras/freetype2/src/base/ftobjs.c:1.1.1.5 --- xc/extras/freetype2/src/base/ftobjs.c:1.1.1.2 Tue May 15 23:45:35 2001 +++ xc/extras/freetype2/src/base/ftobjs.c Mon Jan 14 11:52:10 2002 @@ -4,7 +4,7 @@ /* */ /* The FreeType private base classes (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,10 +18,12 @@ #include <ft2build.h> #include FT_LIST_H +#include FT_OUTLINE_H #include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_DEBUG_H #include FT_INTERNAL_STREAM_H #include FT_TRUETYPE_TABLES_H +#include FT_OUTLINE_H #include <string.h> /* for strcmp() */ @@ -50,9 +52,10 @@ /* documentation is in ftmemory.h */ - FT_BASE_DEF( FT_Error ) FT_Alloc( FT_Memory memory, - FT_Long size, - void* *P ) + FT_BASE_DEF( FT_Error ) + FT_Alloc( FT_Memory memory, + FT_Long size, + void* *P ) { FT_Assert( P != 0 ); @@ -82,10 +85,11 @@ /* documentation is in ftmemory.h */ - FT_BASE_DEF( FT_Error ) FT_Realloc( FT_Memory memory, - FT_Long current, - FT_Long size, - void** P ) + FT_BASE_DEF( FT_Error ) + FT_Realloc( FT_Memory memory, + FT_Long current, + FT_Long size, + void** P ) { void* Q; @@ -107,6 +111,9 @@ if ( !Q ) goto Fail; + if ( size > current ) + memset( (char*)Q + current, 0, size - current ); + *P = Q; return FT_Err_Ok; @@ -120,8 +127,9 @@ /* documentation is in ftmemory.h */ - FT_BASE_DEF( void ) FT_Free( FT_Memory memory, - void** P ) + FT_BASE_DEF( void ) + FT_Free( FT_Memory memory, + void** P ) { FT_TRACE7(( "FT_Free:" )); FT_TRACE7(( " Freeing block 0x%08p, ref 0x%08p\n", @@ -159,10 +167,10 @@ /* <Note> */ /* The function expects a valid `astream' parameter. */ /* */ - static - FT_Error ft_new_input_stream( FT_Library library, - FT_Open_Args* args, - FT_Stream* astream ) + static FT_Error + ft_new_input_stream( FT_Library library, + FT_Open_Args* args, + FT_Stream* astream ) { FT_Error error; FT_Memory memory; @@ -187,7 +195,7 @@ { error = 0; FT_New_Memory_Stream( library, - args->memory_base, + (FT_Byte*)args->memory_base, args->memory_size, stream ); } @@ -218,7 +226,8 @@ /* documentation is in ftobjs.h */ - FT_EXPORT_DEF( void ) FT_Done_Stream( FT_Stream stream ) + FT_EXPORT_DEF( void ) + FT_Done_Stream( FT_Stream stream ) { if ( stream && stream->close ) { @@ -228,9 +237,9 @@ } - static - void ft_done_stream( FT_Stream* astream, - FT_Int external ) + static void + ft_done_stream( FT_Stream* astream, + FT_Int external ) { FT_Stream stream = *astream; @@ -294,8 +303,9 @@ /* create a new glyph loader */ - FT_BASE_DEF( FT_Error ) FT_GlyphLoader_New( FT_Memory memory, - FT_GlyphLoader* *aloader ) + FT_BASE_DEF( FT_Error ) + FT_GlyphLoader_New( FT_Memory memory, + FT_GlyphLoader* *aloader ) { FT_GlyphLoader* loader; FT_Error error; @@ -311,7 +321,8 @@ /* rewind the glyph loader - reset counters to 0 */ - FT_BASE_DEF( void ) FT_GlyphLoader_Rewind( FT_GlyphLoader* loader ) + FT_BASE_DEF( void ) + FT_GlyphLoader_Rewind( FT_GlyphLoader* loader ) { FT_GlyphLoad* base = &loader->base; FT_GlyphLoad* current = &loader->current; @@ -327,7 +338,8 @@ /* reset the glyph loader, frees all allocated tables */ /* and starts from zero */ - FT_BASE_DEF( void ) FT_GlyphLoader_Reset( FT_GlyphLoader* loader ) + FT_BASE_DEF( void ) + FT_GlyphLoader_Reset( FT_GlyphLoader* loader ) { FT_Memory memory = loader->memory; @@ -347,7 +359,8 @@ /* delete a glyph loader */ - FT_BASE_DEF( void ) FT_GlyphLoader_Done( FT_GlyphLoader* loader ) + FT_BASE_DEF( void ) + FT_GlyphLoader_Done( FT_GlyphLoader* loader ) { if ( loader ) { @@ -361,8 +374,8 @@ /* re-adjust the `current' outline fields */ - static - void FT_GlyphLoader_Adjust_Points( FT_GlyphLoader* loader ) + static void + FT_GlyphLoader_Adjust_Points( FT_GlyphLoader* loader ) { FT_Outline* base = &loader->base.outline; FT_Outline* current = &loader->current.outline; @@ -379,8 +392,8 @@ } - FT_BASE_DEF( FT_Error ) FT_GlyphLoader_Create_Extra( - FT_GlyphLoader* loader ) + FT_BASE_DEF( FT_Error ) + FT_GlyphLoader_Create_Extra( FT_GlyphLoader* loader ) { FT_Error error; FT_Memory memory = loader->memory; @@ -397,8 +410,8 @@ /* re-adjust the `current' subglyphs field */ - static - void FT_GlyphLoader_Adjust_Subglyphs( FT_GlyphLoader* loader ) + static void + FT_GlyphLoader_Adjust_Subglyphs( FT_GlyphLoader* loader ) { FT_GlyphLoad* base = &loader->base; FT_GlyphLoad* current = &loader->current; @@ -412,10 +425,10 @@ /* function reallocates its outline tables if necessary. Note that it */ /* DOESN'T change the number of points within the loader! */ /* */ - FT_BASE_DEF( FT_Error ) FT_GlyphLoader_Check_Points( - FT_GlyphLoader* loader, - FT_UInt n_points, - FT_UInt n_contours ) + FT_BASE_DEF( FT_Error ) + FT_GlyphLoader_Check_Points( FT_GlyphLoader* loader, + FT_UInt n_points, + FT_UInt n_contours ) { FT_Memory memory = loader->memory; FT_Error error = FT_Err_Ok; @@ -423,22 +436,23 @@ FT_Outline* current = &loader->current.outline; FT_Bool adjust = 1; - FT_UInt new_max; + FT_UInt new_max, old_max; /* check points & tags */ new_max = base->n_points + current->n_points + n_points; - if ( new_max > loader->max_points ) + old_max = loader->max_points; + + if ( new_max > old_max ) { new_max = ( new_max + 7 ) & -8; - if ( REALLOC_ARRAY( base->points, base->n_points, - new_max, FT_Vector ) || - REALLOC_ARRAY( base->tags, base->n_points, - new_max, FT_Byte ) ) + + if ( REALLOC_ARRAY( base->points, old_max, new_max, FT_Vector ) || + REALLOC_ARRAY( base->tags, old_max, new_max, FT_Byte ) ) goto Exit; if ( loader->use_extra && - REALLOC_ARRAY( loader->base.extra_points, base->n_points, + REALLOC_ARRAY( loader->base.extra_points, old_max, new_max, FT_Vector ) ) goto Exit; @@ -447,13 +461,13 @@ } /* check contours */ + old_max = loader->max_contours; new_max = base->n_contours + current->n_contours + n_contours; - if ( new_max > loader->max_contours ) + if ( new_max > old_max ) { new_max = ( new_max + 3 ) & -4; - if ( REALLOC_ARRAY( base->contours, base->n_contours, - new_max, FT_Short ) ) + if ( REALLOC_ARRAY( base->contours, old_max, new_max, FT_Short ) ) goto Exit; adjust = 1; @@ -472,24 +486,24 @@ /* reallocates its subglyphs table if necessary. Note that it DOES */ /* NOT change the number of subglyphs within the loader! */ /* */ - FT_BASE_DEF( FT_Error ) FT_GlyphLoader_Check_Subglyphs( - FT_GlyphLoader* loader, - FT_UInt n_subs ) + FT_BASE_DEF( FT_Error ) + FT_GlyphLoader_Check_Subglyphs( FT_GlyphLoader* loader, + FT_UInt n_subs ) { FT_Memory memory = loader->memory; FT_Error error = FT_Err_Ok; - FT_UInt new_max; + FT_UInt new_max, old_max; FT_GlyphLoad* base = &loader->base; FT_GlyphLoad* current = &loader->current; new_max = base->num_subglyphs + current->num_subglyphs + n_subs; - if ( new_max > loader->max_subglyphs ) + old_max = loader->max_subglyphs; + if ( new_max > old_max ) { new_max = ( new_max + 1 ) & -2; - if ( REALLOC_ARRAY( base->subglyphs, base->num_subglyphs, - new_max, FT_SubGlyph ) ) + if ( REALLOC_ARRAY( base->subglyphs, old_max, new_max, FT_SubGlyph ) ) goto Exit; loader->max_subglyphs = new_max; @@ -503,7 +517,8 @@ /* prepare loader for the addition of a new glyph on top of the base one */ - FT_BASE_DEF( void ) FT_GlyphLoader_Prepare( FT_GlyphLoader* loader ) + FT_BASE_DEF( void ) + FT_GlyphLoader_Prepare( FT_GlyphLoader* loader ) { FT_GlyphLoad* current = &loader->current; @@ -518,7 +533,8 @@ /* add current glyph to the base image - and prepare for another */ - FT_BASE_DEF( void ) FT_GlyphLoader_Add( FT_GlyphLoader* loader ) + FT_BASE_DEF( void ) + FT_GlyphLoader_Add( FT_GlyphLoader* loader ) { FT_GlyphLoad* base = &loader->base; FT_GlyphLoad* current = &loader->current; @@ -527,23 +543,27 @@ FT_UInt n_base_points = base->outline.n_points; FT_UInt n; + + base->outline.n_points = + (short)( base->outline.n_points + current->outline.n_points ); + base->outline.n_contours = + (short)( base->outline.n_contours + current->outline.n_contours ); - base->outline.n_points += current->outline.n_points; - base->outline.n_contours += current->outline.n_contours; - base->num_subglyphs += current->num_subglyphs; + base->num_subglyphs += current->num_subglyphs; /* adjust contours count in newest outline */ for ( n = 0; n < n_curr_contours; n++ ) - current->outline.contours[n] += n_base_points; + current->outline.contours[n] = + (short)( current->outline.contours[n] + n_base_points ); /* prepare for another new glyph image */ FT_GlyphLoader_Prepare( loader ); } - FT_BASE_DEF( FT_Error ) FT_GlyphLoader_Copy_Points( - FT_GlyphLoader* target, - FT_GlyphLoader* source ) + FT_BASE_DEF( FT_Error ) + FT_GlyphLoader_Copy_Points( FT_GlyphLoader* target, + FT_GlyphLoader* source ) { FT_Error error; FT_UInt num_points = source->base.outline.n_points; @@ -569,8 +589,8 @@ MEM_Copy( target->base.extra_points, source->base.extra_points, num_points * sizeof ( FT_Vector ) ); - out->n_points = num_points; - out->n_contours = num_contours; + out->n_points = (short)num_points; + out->n_contours = (short)num_contours; FT_GlyphLoader_Adjust_Points( target ); } @@ -592,8 +612,8 @@ /*************************************************************************/ - static - FT_Error ft_glyphslot_init( FT_GlyphSlot slot ) + static FT_Error + ft_glyphslot_init( FT_GlyphSlot slot ) { FT_Driver driver = slot->face->driver; FT_Driver_Class* clazz = driver->clazz; @@ -620,8 +640,8 @@ } - static - void ft_glyphslot_clear( FT_GlyphSlot slot ) + static void + ft_glyphslot_clear( FT_GlyphSlot slot ) { /* free bitmap if needed */ if ( slot->flags & ft_glyph_own_bitmap ) @@ -652,8 +672,8 @@ } - static - void ft_glyphslot_done( FT_GlyphSlot slot ) + static void + ft_glyphslot_done( FT_GlyphSlot slot ) { FT_Driver driver = slot->face->driver; FT_Driver_Class* clazz = driver->clazz; @@ -680,8 +700,9 @@ /* documentation is in ftobjs.h */ - FT_BASE_DEF( FT_Error ) FT_New_GlyphSlot( FT_Face face, - FT_GlyphSlot *aslot ) + FT_BASE_DEF( FT_Error ) + FT_New_GlyphSlot( FT_Face face, + FT_GlyphSlot *aslot ) { FT_Error error; FT_Driver driver; @@ -723,7 +744,8 @@ /* documentation is in ftobjs.h */ - FT_BASE_DEF( void ) FT_Done_GlyphSlot( FT_GlyphSlot slot ) + FT_BASE_DEF( void ) + FT_Done_GlyphSlot( FT_GlyphSlot slot ) { if ( slot ) { @@ -754,13 +776,14 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( void ) FT_Set_Transform( FT_Face face, - FT_Matrix* matrix, - FT_Vector* delta ) + FT_EXPORT_DEF( void ) + FT_Set_Transform( FT_Face face, + FT_Matrix* matrix, + FT_Vector* delta ) { FT_Face_Internal internal; - + if ( !face ) return; @@ -800,14 +823,16 @@ } - static FT_Renderer ft_lookup_glyph_renderer( FT_GlyphSlot slot ); + static FT_Renderer + ft_lookup_glyph_renderer( FT_GlyphSlot slot ); /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Load_Glyph( FT_Face face, - FT_UInt glyph_index, - FT_Int load_flags ) + FT_EXPORT_DEF( FT_Error ) + FT_Load_Glyph( FT_Face face, + FT_UInt glyph_index, + FT_Int load_flags ) { FT_Error error; FT_Driver driver; @@ -828,7 +853,7 @@ driver = face->driver; - /* when the flag NO_RECURSE is set, we disable hinting and scaling */ + /* if the flag NO_RECURSE is set, we disable hinting and scaling */ if ( load_flags & FT_LOAD_NO_RECURSE ) { /* disable scaling, hinting, and transformation */ @@ -843,10 +868,11 @@ /* do we need to load the glyph through the auto-hinter? */ library = driver->root.library; hinter = library->auto_hinter; - autohint = hinter && + autohint = + FT_BOOL( hinter && !( load_flags & ( FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING ) ) && - FT_DRIVER_IS_SCALABLE(driver) && - FT_DRIVER_USES_OUTLINES(driver); + FT_DRIVER_IS_SCALABLE( driver ) && + FT_DRIVER_USES_OUTLINES( driver ) ); if ( autohint ) { if ( FT_DRIVER_HAS_HINTER( driver ) && @@ -859,6 +885,22 @@ FT_AutoHinter_Interface* hinting; + /* try to load embedded bitmaps first if available */ + /* */ + /* XXX: This is really a temporary hack that should disappear */ + /* promptly with FreeType 2.1! */ + /* */ + if ( FT_HAS_FIXED_SIZES( face ) ) + { + error = driver->clazz->load_glyph( slot, face->size, + glyph_index, + load_flags | FT_LOAD_SBITS_ONLY ); + + if ( !error && slot->format == ft_glyph_format_bitmap ) + goto Load_Ok; + } + + /* load auto-hinted outline */ hinting = (FT_AutoHinter_Interface*)hinter->clazz->module_interface; error = hinting->load_glyph( (FT_AutoHinter)hinter, @@ -866,13 +908,21 @@ glyph_index, load_flags ); } else + { error = driver->clazz->load_glyph( slot, face->size, glyph_index, load_flags ); - if ( error ) - goto Exit; + if ( error ) + goto Exit; + /* check that the loaded outline is correct */ + error = FT_Outline_Check( &slot->outline ); + if ( error ) + goto Exit; + } + + Load_Ok: /* compute the advance */ if ( load_flags & FT_LOAD_VERTICAL_LAYOUT ) { @@ -901,8 +951,8 @@ if ( ( load_flags & FT_LOAD_IGNORE_TRANSFORM ) == 0 ) { FT_Face_Internal internal = face->internal; - - + + /* now, transform the glyph image if needed */ if ( internal->transform_flags ) { @@ -939,9 +989,10 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Load_Char( FT_Face face, - FT_ULong char_code, - FT_Int load_flags ) + FT_EXPORT_DEF( FT_Error ) + FT_Load_Char( FT_Face face, + FT_ULong char_code, + FT_Int load_flags ) { FT_UInt glyph_index; @@ -958,10 +1009,10 @@ /* destructor for sizes list */ - static - void destroy_size( FT_Memory memory, - FT_Size size, - FT_Driver driver ) + static void + destroy_size( FT_Memory memory, + FT_Size size, + FT_Driver driver ) { /* finalize client-specific data */ if ( size->generic.finalizer ) @@ -977,10 +1028,10 @@ /* destructor for faces list */ - static - void destroy_face( FT_Memory memory, - FT_Face face, - FT_Driver driver ) + static void + destroy_face( FT_Memory memory, + FT_Face face, + FT_Driver driver ) { FT_Driver_Class* clazz = driver->clazz; @@ -989,8 +1040,8 @@ if ( face->autohint.finalizer ) face->autohint.finalizer( face->autohint.data ); - /* Discard glyph slots for this face */ - /* Beware! FT_Done_GlyphSlot() changes the field `face->slot' */ + /* Discard glyph slots for this face */ + /* Beware! FT_Done_GlyphSlot() changes the field `face->glyph' */ while ( face->glyph ) FT_Done_GlyphSlot( face->glyph ); @@ -1015,13 +1066,17 @@ ( face->face_flags & FT_FACE_FLAG_EXTERNAL_STREAM ) != 0 ); /* get rid of it */ - FREE( face->internal ); + if ( face->internal ) + { + FREE( face->internal->postscript_name ); + FREE( face->internal ); + } FREE( face ); } - static - void Destroy_Driver( FT_Driver driver ) + static void + Destroy_Driver( FT_Driver driver ) { FT_List_Finalize( &driver->faces_list, (FT_List_Destructor)destroy_face, @@ -1042,13 +1097,13 @@ /* <Description> */ /* This function does some work for FT_Open_Face(). */ /* */ - static - FT_Error open_face( FT_Driver driver, - FT_Stream stream, - FT_Long face_index, - FT_Int num_params, - FT_Parameter* params, - FT_Face* aface ) + static FT_Error + open_face( FT_Driver driver, + FT_Stream stream, + FT_Long face_index, + FT_Int num_params, + FT_Parameter* params, + FT_Face* aface ) { FT_Memory memory; FT_Driver_Class* clazz; @@ -1066,7 +1121,7 @@ if ( ALLOC( internal, sizeof ( *internal ) ) ) goto Fail; - + face->internal = internal; face->driver = driver; @@ -1103,10 +1158,11 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_New_Face( FT_Library library, - const char* pathname, - FT_Long face_index, - FT_Face *aface ) + FT_EXPORT_DEF( FT_Error ) + FT_New_Face( FT_Library library, + const char* pathname, + FT_Long face_index, + FT_Face *aface ) { FT_Open_Args args; @@ -1126,11 +1182,12 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_New_Memory_Face( FT_Library library, - FT_Byte* file_base, - FT_Long file_size, - FT_Long face_index, - FT_Face *aface ) + FT_EXPORT_DEF( FT_Error ) + FT_New_Memory_Face( FT_Library library, + const FT_Byte* file_base, + FT_Long file_size, + FT_Long face_index, + FT_Face *aface ) { FT_Open_Args args; @@ -1149,10 +1206,11 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Open_Face( FT_Library library, - FT_Open_Args* args, - FT_Long face_index, - FT_Face *aface ) + FT_EXPORT_DEF( FT_Error ) + FT_Open_Face( FT_Library library, + FT_Open_Args* args, + FT_Long face_index, + FT_Face *aface ) { FT_Error error; FT_Driver driver; @@ -1171,7 +1229,8 @@ *aface = 0; - external_stream = ( ( args->flags & ft_open_stream ) && args->stream ); + external_stream = FT_BOOL( ( args->flags & ft_open_stream ) && + args->stream ); /* create input stream */ error = ft_new_input_stream( library, args, &stream ); @@ -1239,15 +1298,16 @@ if ( !error ) goto Success; - if ( error != FT_Err_Unknown_File_Format ) - goto Fail; + if ( FT_ERROR_BASE( error ) != FT_Err_Unknown_File_Format ) + goto Fail2; } } - ft_done_stream( &stream, external_stream ); - /* no driver is able to handle this format */ error = FT_Err_Unknown_File_Format; + + Fail2: + ft_done_stream( &stream, external_stream ); goto Fail; } @@ -1298,13 +1358,13 @@ /* initialize internal face data */ { FT_Face_Internal internal = face->internal; - + internal->transform_matrix.xx = 0x10000L; internal->transform_matrix.xy = 0; internal->transform_matrix.yx = 0; internal->transform_matrix.yy = 0x10000L; - + internal->transform_delta.x = 0; internal->transform_delta.y = 0; } @@ -1324,8 +1384,9 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Attach_File( FT_Face face, - const char* filepathname ) + FT_EXPORT_DEF( FT_Error ) + FT_Attach_File( FT_Face face, + const char* filepathname ) { FT_Open_Args open; @@ -1344,8 +1405,9 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Attach_Stream( FT_Face face, - FT_Open_Args* parameters ) + FT_EXPORT_DEF( FT_Error ) + FT_Attach_Stream( FT_Face face, + FT_Open_Args* parameters ) { FT_Stream stream; FT_Error error; @@ -1387,7 +1449,8 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Done_Face( FT_Face face ) + FT_EXPORT_DEF( FT_Error ) + FT_Done_Face( FT_Face face ) { FT_Error error; FT_Driver driver; @@ -1420,8 +1483,9 @@ /* documentation is in ftobjs.h */ - FT_EXPORT_DEF( FT_Error ) FT_New_Size( FT_Face face, - FT_Size *asize ) + FT_EXPORT_DEF( FT_Error ) + FT_New_Size( FT_Face face, + FT_Size *asize ) { FT_Error error; FT_Memory memory; @@ -1453,7 +1517,7 @@ goto Exit; size->face = face; - + /* for now, do not use any internal fields in size objects */ size->internal = 0; @@ -1481,7 +1545,8 @@ /* documentation is in ftobjs.h */ - FT_EXPORT_DEF( FT_Error ) FT_Done_Size( FT_Size size ) + FT_EXPORT_DEF( FT_Error ) + FT_Done_Size( FT_Size size ) { FT_Error error; FT_Driver driver; @@ -1522,13 +1587,13 @@ else error = FT_Err_Invalid_Size_Handle; - return FT_Err_Ok; + return error; } - static - void ft_recompute_scaled_metrics( FT_Face face, - FT_Size_Metrics* metrics ) + static void + ft_recompute_scaled_metrics( FT_Face face, + FT_Size_Metrics* metrics ) { /* Compute root ascender, descender, test height, and max_advance */ @@ -1548,15 +1613,15 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Set_Char_Size( FT_Face face, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ) + FT_EXPORT_DEF( FT_Error ) + FT_Set_Char_Size( FT_Face face, + FT_F26Dot6 char_width, + FT_F26Dot6 char_height, + FT_UInt horz_resolution, + FT_UInt vert_resolution ) { FT_Error error = FT_Err_Ok; FT_Driver driver; - FT_Memory memory; FT_Driver_Class* clazz; FT_Size_Metrics* metrics; FT_Long dim_x, dim_y; @@ -1582,7 +1647,6 @@ driver = face->driver; clazz = driver->clazz; - memory = driver->root.memory; /* default processing -- this can be overridden by the driver */ if ( char_width < 1 * 64 ) @@ -1620,13 +1684,13 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Set_Pixel_Sizes( FT_Face face, - FT_UInt pixel_width, - FT_UInt pixel_height ) + FT_EXPORT_DEF( FT_Error ) + FT_Set_Pixel_Sizes( FT_Face face, + FT_UInt pixel_width, + FT_UInt pixel_height ) { FT_Error error = FT_Err_Ok; FT_Driver driver; - FT_Memory memory; FT_Driver_Class* clazz; FT_Size_Metrics* metrics = &face->size->metrics; @@ -1636,7 +1700,6 @@ driver = face->driver; clazz = driver->clazz; - memory = driver->root.memory; /* default processing -- this can be overridden by the driver */ if ( pixel_width == 0 ) @@ -1650,8 +1713,8 @@ if ( pixel_height < 1 ) pixel_height = 1; - metrics->x_ppem = pixel_width; - metrics->y_ppem = pixel_height; + metrics->x_ppem = (FT_UShort)pixel_width; + metrics->y_ppem = (FT_UShort)pixel_height; if ( face->face_flags & FT_FACE_FLAG_SCALABLE ) { @@ -1674,15 +1737,15 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Get_Kerning( FT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_UInt kern_mode, - FT_Vector *akerning ) + FT_EXPORT_DEF( FT_Error ) + FT_Get_Kerning( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_UInt kern_mode, + FT_Vector *akerning ) { FT_Error error = FT_Err_Ok; FT_Driver driver; - FT_Memory memory; if ( !face ) @@ -1692,7 +1755,6 @@ return FT_Err_Invalid_Argument; driver = face->driver; - memory = driver->root.memory; akerning->x = 0; akerning->y = 0; @@ -1725,8 +1787,9 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Select_Charmap( FT_Face face, - FT_Encoding encoding ) + FT_EXPORT_DEF( FT_Error ) + FT_Select_Charmap( FT_Face face, + FT_Encoding encoding ) { FT_CharMap* cur; FT_CharMap* limit; @@ -1756,8 +1819,9 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Set_Charmap( FT_Face face, - FT_CharMap charmap ) + FT_EXPORT_DEF( FT_Error ) + FT_Set_Charmap( FT_Face face, + FT_CharMap charmap ) { FT_CharMap* cur; FT_CharMap* limit; @@ -1786,8 +1850,9 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_UInt ) FT_Get_Char_Index( FT_Face face, - FT_ULong charcode ) + FT_EXPORT_DEF( FT_UInt ) + FT_Get_Char_Index( FT_Face face, + FT_ULong charcode ) { FT_UInt result; FT_Driver driver; @@ -1805,11 +1870,44 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Get_Glyph_Name( FT_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ) + FT_EXPORT_DEF( FT_UInt ) + FT_Get_Name_Index( FT_Face face, + FT_String* glyph_name ) { + FT_UInt result = 0; + + + if ( face && FT_HAS_GLYPH_NAMES( face ) ) + { + /* now, lookup for glyph name */ + FT_Driver driver = face->driver; + FT_Module_Class* clazz = FT_MODULE_CLASS( driver ); + + + if ( clazz->get_interface ) + { + FT_Name_Index_Requester requester; + + + requester = (FT_Name_Index_Requester)clazz->get_interface( + FT_MODULE( driver ), "name_index" ); + if ( requester ) + result = requester( face, glyph_name ); + } + } + + return result; + } + + + /* documentation is in freetype.h */ + + FT_EXPORT_DEF( FT_Error ) + FT_Get_Glyph_Name( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ) + { FT_Error error = FT_Err_Invalid_Argument; @@ -1842,10 +1940,46 @@ } + /* documentation is in freetype.h */ + + FT_EXPORT_DEF( const char* ) + FT_Get_Postscript_Name( FT_Face face ) + { + const char* result = NULL; + + + if ( !face ) + goto Exit; + + result = face->internal->postscript_name; + if ( !result ) + { + /* now, lookup for glyph name */ + FT_Driver driver = face->driver; + FT_Module_Class* clazz = FT_MODULE_CLASS( driver ); + + + if ( clazz->get_interface ) + { + FT_PSName_Requester requester; + + + requester = (FT_PSName_Requester)clazz->get_interface( + FT_MODULE( driver ), "postscript_name" ); + if ( requester ) + result = requester( face ); + } + } + Exit: + return result; + } + + /* documentation is in tttables.h */ - FT_EXPORT_DEF( void* ) FT_Get_Sfnt_Table( FT_Face face, - FT_Sfnt_Tag tag ) + FT_EXPORT_DEF( void* ) + FT_Get_Sfnt_Table( FT_Face face, + FT_Sfnt_Tag tag ) { void* table = 0; FT_Get_Sfnt_Table_Func func; @@ -1866,6 +2000,27 @@ } + FT_EXPORT_DEF( FT_Error ) + FT_Activate_Size( FT_Size size ) + { + FT_Face face; + + + if ( size == NULL ) + return FT_Err_Bad_Argument; + + face = size->face; + if ( face == NULL || face->driver == NULL ) + return FT_Err_Bad_Argument; + + /* we don't need anything more complex than that; all size objects */ + /* are already listed by the face */ + face->size = size; + + return FT_Err_Ok; + } + + /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ @@ -1879,9 +2034,10 @@ /*************************************************************************/ /* lookup a renderer by glyph format in the library's list */ - FT_BASE_DEF( FT_Renderer ) FT_Lookup_Renderer( FT_Library library, - FT_Glyph_Format format, - FT_ListNode* node ) + FT_BASE_DEF( FT_Renderer ) + FT_Lookup_Renderer( FT_Library library, + FT_Glyph_Format format, + FT_ListNode* node ) { FT_ListNode cur; FT_Renderer result = 0; @@ -1920,8 +2076,8 @@ } - static - FT_Renderer ft_lookup_glyph_renderer( FT_GlyphSlot slot ) + static FT_Renderer + ft_lookup_glyph_renderer( FT_GlyphSlot slot ) { FT_Face face = slot->face; FT_Library library = FT_FACE_LIBRARY( face ); @@ -1935,8 +2091,8 @@ } - static - void ft_set_current_renderer( FT_Library library ) + static void + ft_set_current_renderer( FT_Library library ) { FT_Renderer renderer; @@ -1946,8 +2102,8 @@ } - static - FT_Error ft_add_renderer( FT_Module module ) + static FT_Error + ft_add_renderer( FT_Module module ) { FT_Library library = module->library; FT_Memory memory = library->memory; @@ -1994,8 +2150,8 @@ } - static - void ft_remove_renderer( FT_Module module ) + static void + ft_remove_renderer( FT_Module module ) { FT_Library library = module->library; FT_Memory memory = library->memory; @@ -2023,8 +2179,9 @@ /* documentation is in ftrender.h */ - FT_EXPORT_DEF( FT_Renderer ) FT_Get_Renderer( FT_Library library, - FT_Glyph_Format format ) + FT_EXPORT_DEF( FT_Renderer ) + FT_Get_Renderer( FT_Library library, + FT_Glyph_Format format ) { /* test for valid `library' delayed to FT_Lookup_Renderer() */ @@ -2034,10 +2191,11 @@ /* documentation is in ftrender.h */ - FT_EXPORT_DEF( FT_Error ) FT_Set_Renderer( FT_Library library, - FT_Renderer renderer, - FT_UInt num_params, - FT_Parameter* parameters ) + FT_EXPORT_DEF( FT_Error ) + FT_Set_Renderer( FT_Library library, + FT_Renderer renderer, + FT_UInt num_params, + FT_Parameter* parameters ) { FT_ListNode node; FT_Error error = FT_Err_Ok; @@ -2079,10 +2237,10 @@ } - FT_EXPORT_DEF( FT_Error ) FT_Render_Glyph_Internal( - FT_Library library, - FT_GlyphSlot slot, - FT_UInt render_mode ) + FT_EXPORT_DEF( FT_Error ) + FT_Render_Glyph_Internal( FT_Library library, + FT_GlyphSlot slot, + FT_UInt render_mode ) { FT_Error error = FT_Err_Ok; FT_Renderer renderer; @@ -2112,8 +2270,9 @@ error = FT_Err_Unimplemented_Feature; while ( renderer ) { - error = renderer->render( renderer, slot, render_mode, 0 ); - if ( !error || error != FT_Err_Cannot_Render_Glyph ) + error = renderer->render( renderer, slot, render_mode, NULL ); + if ( !error || + FT_ERROR_BASE( error ) != FT_Err_Cannot_Render_Glyph ) break; /* FT_Err_Cannot_Render_Glyph is returned if the render mode */ @@ -2139,8 +2298,9 @@ /* documentation is in freetype.h */ - FT_EXPORT_DEF( FT_Error ) FT_Render_Glyph( FT_GlyphSlot slot, - FT_UInt render_mode ) + FT_EXPORT_DEF( FT_Error ) + FT_Render_Glyph( FT_GlyphSlot slot, + FT_UInt render_mode ) { FT_Library library; @@ -2182,8 +2342,8 @@ /* <Note> */ /* The driver _must_ be LOCKED! */ /* */ - static - void Destroy_Module( FT_Module module ) + static void + Destroy_Module( FT_Module module ) { FT_Memory memory = module->memory; FT_Module_Class* clazz = module->clazz; @@ -2216,8 +2376,9 @@ /* documentation is in ftmodule.h */ - FT_EXPORT_DEF( FT_Error ) FT_Add_Module( FT_Library library, - const FT_Module_Class* clazz ) + FT_EXPORT_DEF( FT_Error ) + FT_Add_Module( FT_Library library, + const FT_Module_Class* clazz ) { FT_Error error; FT_Memory memory; @@ -2342,8 +2503,9 @@ /* documentation is in ftmodule.h */ - FT_EXPORT_DEF( FT_Module ) FT_Get_Module( FT_Library library, - const char* module_name ) + FT_EXPORT_DEF( FT_Module ) + FT_Get_Module( FT_Library library, + const char* module_name ) { FT_Module result = 0; FT_Module* cur; @@ -2369,8 +2531,9 @@ /* documentation is in ftobjs.h */ - FT_BASE_DEF( const void* ) FT_Get_Module_Interface( FT_Library library, - const char* mod_name ) + FT_BASE_DEF( const void* ) + FT_Get_Module_Interface( FT_Library library, + const char* mod_name ) { FT_Module module; @@ -2385,8 +2548,9 @@ /* documentation is in ftmodule.h */ - FT_EXPORT_DEF( FT_Error ) FT_Remove_Module( FT_Library library, - FT_Module module ) + FT_EXPORT_DEF( FT_Error ) + FT_Remove_Module( FT_Library library, + FT_Module module ) { /* try to find the module from the table, then remove it from there */ @@ -2439,8 +2603,9 @@ /* documentation is in ftmodule.h */ - FT_EXPORT_DEF( FT_Error ) FT_New_Library( FT_Memory memory, - FT_Library *alibrary ) + FT_EXPORT_DEF( FT_Error ) + FT_New_Library( FT_Memory memory, + FT_Library *alibrary ) { FT_Library library = 0; FT_Error error; @@ -2473,10 +2638,10 @@ /* documentation is in ftmodule.h */ - FT_EXPORT_DEF( FT_Error ) FT_Done_Library( FT_Library library ) + FT_EXPORT_DEF( FT_Error ) + FT_Done_Library( FT_Library library ) { FT_Memory memory; - FT_UInt n; if ( !library ) @@ -2489,17 +2654,27 @@ library->generic.finalizer( library ); /* Close all modules in the library */ - for ( n = 0; n < library->num_modules; n++ ) +#if 1 + while ( library->num_modules > 0 ) + FT_Remove_Module( library, library->modules[0] ); +#else { - FT_Module module = library->modules[n]; + FT_UInt n; - if ( module ) + for ( n = 0; n < library->num_modules; n++ ) { - Destroy_Module( module ); - library->modules[n] = 0; + FT_Module module = library->modules[n]; + + + if ( module ) + { + Destroy_Module( module ); + library->modules[n] = 0; + } } } +#endif /* Destroy raster objects */ FREE( library->raster_pool ); @@ -2512,9 +2687,10 @@ /* documentation is in ftmodule.h */ - FT_EXPORT_DEF( void ) FT_Set_Debug_Hook( FT_Library library, - FT_UInt hook_index, - FT_DebugHook_Func debug_hook ) + FT_EXPORT_DEF( void ) + FT_Set_Debug_Hook( FT_Library library, + FT_UInt hook_index, + FT_DebugHook_Func debug_hook ) { if ( library && debug_hook && hook_index < Index: xc/extras/freetype2/src/base/ftoutln.c diff -u xc/extras/freetype2/src/base/ftoutln.c:1.1.1.2 xc/extras/freetype2/src/base/ftoutln.c:1.1.1.5 --- xc/extras/freetype2/src/base/ftoutln.c:1.1.1.2 Tue May 15 23:45:35 2001 +++ xc/extras/freetype2/src/base/ftoutln.c Mon Jan 14 11:52:10 2002 @@ -4,7 +4,7 @@ /* */ /* FreeType outline management (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -44,10 +44,10 @@ /* documentation is in ftoutln.h */ - FT_EXPORT_DEF( FT_Error ) FT_Outline_Decompose( - FT_Outline* outline, - const FT_Outline_Funcs* interface, - void* user ) + FT_EXPORT_DEF( FT_Error ) + FT_Outline_Decompose( FT_Outline* outline, + const FT_Outline_Funcs* interface, + void* user ) { #undef SCALED #define SCALED( x ) ( ( (x) << shift ) - delta ) @@ -64,7 +64,7 @@ FT_Int n; /* index of contour in outline */ FT_UInt first; /* index of first point in contour */ - char tag; /* current point's state */ + FT_Int tag; /* current point's state */ FT_Int shift; FT_Pos delta; @@ -249,11 +249,11 @@ } - FT_EXPORT_DEF( FT_Error ) FT_Outline_New_Internal( - FT_Memory memory, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ) + FT_EXPORT_DEF( FT_Error ) + FT_Outline_New_Internal( FT_Memory memory, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ) { FT_Error error; @@ -284,10 +284,11 @@ /* documentation is in ftoutln.h */ - FT_EXPORT_DEF( FT_Error ) FT_Outline_New( FT_Library library, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ) + FT_EXPORT_DEF( FT_Error ) + FT_Outline_New( FT_Library library, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ) { if ( !library ) return FT_Err_Invalid_Library_Handle; @@ -299,9 +300,55 @@ /* documentation is in ftoutln.h */ - FT_EXPORT_DEF( FT_Error ) FT_Outline_Copy( FT_Outline* source, - FT_Outline *target ) + FT_EXPORT_DEF( FT_Error ) + FT_Outline_Check( FT_Outline* outline ) { + if ( outline ) + { + FT_Int n_points = outline->n_points; + FT_Int n_contours = outline->n_contours; + FT_Int end0, end; + FT_Int n; + + + /* empty glyph? */ + if ( n_points == 0 && n_contours == 0 ) + return 0; + + /* check point and contour counts */ + if ( n_points <= 0 || n_contours <= 0 ) + goto Bad; + + end0 = end = -1; + for ( n = 0; n < n_contours; n++ ) + { + end = outline->contours[n]; + + /* note that we don't accept empty contours */ + if ( end <= end0 || end >= n_points ) + goto Bad; + + end0 = end; + } + + if ( end != n_points - 1 ) + goto Bad; + + /* XXX: check the that array */ + return 0; + } + + Bad: + return FT_Err_Invalid_Argument; + } + + + /* documentation is in ftoutln.h */ + + FT_EXPORT_DEF( FT_Error ) + FT_Outline_Copy( FT_Outline* source, + FT_Outline *target ) + { FT_Int is_owner; @@ -330,8 +377,9 @@ } - FT_EXPORT_DEF( FT_Error ) FT_Outline_Done_Internal( FT_Memory memory, - FT_Outline* outline ) + FT_EXPORT_DEF( FT_Error ) + FT_Outline_Done_Internal( FT_Memory memory, + FT_Outline* outline ) { if ( outline ) { @@ -352,8 +400,9 @@ /* documentation is in ftoutln.h */ - FT_EXPORT_DEF( FT_Error ) FT_Outline_Done( FT_Library library, - FT_Outline* outline ) + FT_EXPORT_DEF( FT_Error ) + FT_Outline_Done( FT_Library library, + FT_Outline* outline ) { /* check for valid `outline' in FT_Outline_Done_Internal() */ @@ -366,8 +415,9 @@ /* documentation is in ftoutln.h */ - FT_EXPORT_DEF( void ) FT_Outline_Get_CBox( FT_Outline* outline, - FT_BBox *acbox ) + FT_EXPORT_DEF( void ) + FT_Outline_Get_CBox( FT_Outline* outline, + FT_BBox *acbox ) { FT_Pos xMin, yMin, xMax, yMax; @@ -415,9 +465,10 @@ /* documentation is in ftoutln.h */ - FT_EXPORT_DEF( void ) FT_Outline_Translate( FT_Outline* outline, - FT_Pos xOffset, - FT_Pos yOffset ) + FT_EXPORT_DEF( void ) + FT_Outline_Translate( FT_Outline* outline, + FT_Pos xOffset, + FT_Pos yOffset ) { FT_UShort n; FT_Vector* vec = outline->points; @@ -434,7 +485,8 @@ /* documentation is in ftoutln.h */ - FT_EXPORT_DEF( void ) FT_Outline_Reverse( FT_Outline* outline ) + FT_EXPORT_DEF( void ) + FT_Outline_Reverse( FT_Outline* outline ) { FT_UShort n; FT_Int first, last; @@ -489,9 +541,10 @@ /* documentation is in ftoutln.h */ - FT_EXPORT_DEF( FT_Error ) FT_Outline_Render( FT_Library library, - FT_Outline* outline, - FT_Raster_Params* params ) + FT_EXPORT_DEF( FT_Error ) + FT_Outline_Render( FT_Library library, + FT_Outline* outline, + FT_Raster_Params* params ) { FT_Error error; FT_Bool update = 0; @@ -514,7 +567,7 @@ while ( renderer ) { error = renderer->raster_render( renderer->raster, params ); - if ( !error || error != FT_Err_Cannot_Render_Glyph ) + if ( !error || FT_ERROR_BASE( error ) != FT_Err_Cannot_Render_Glyph ) break; /* FT_Err_Cannot_Render_Glyph is returned if the render mode */ @@ -539,9 +592,10 @@ /* documentation is in ftoutln.h */ - FT_EXPORT_DEF( FT_Error ) FT_Outline_Get_Bitmap( FT_Library library, - FT_Outline* outline, - FT_Bitmap *abitmap ) + FT_EXPORT_DEF( FT_Error ) + FT_Outline_Get_Bitmap( FT_Library library, + FT_Outline* outline, + FT_Bitmap *abitmap ) { FT_Raster_Params params; @@ -563,8 +617,9 @@ /* documentation is in ftoutln.h */ - FT_EXPORT_DEF( void ) FT_Vector_Transform( FT_Vector* vector, - FT_Matrix* matrix ) + FT_EXPORT_DEF( void ) + FT_Vector_Transform( FT_Vector* vector, + FT_Matrix* matrix ) { FT_Pos xz, yz; @@ -585,8 +640,9 @@ /* documentation is in ftoutln.h */ - FT_EXPORT_DEF( void ) FT_Outline_Transform( FT_Outline* outline, - FT_Matrix* matrix ) + FT_EXPORT_DEF( void ) + FT_Outline_Transform( FT_Outline* outline, + FT_Matrix* matrix ) { FT_Vector* vec = outline->points; FT_Vector* limit = vec + outline->n_points; Index: xc/extras/freetype2/src/base/ftstream.c diff -u xc/extras/freetype2/src/base/ftstream.c:1.1.1.2 xc/extras/freetype2/src/base/ftstream.c:1.1.1.3 --- xc/extras/freetype2/src/base/ftstream.c:1.1.1.2 Tue May 15 23:45:35 2001 +++ xc/extras/freetype2/src/base/ftstream.c Sun Dec 16 12:49:27 2001 @@ -4,7 +4,7 @@ /* */ /* I/O stream support (body). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -31,10 +31,11 @@ #define FT_COMPONENT trace_stream - FT_BASE_DEF( void ) FT_New_Memory_Stream( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Stream stream ) + FT_BASE_DEF( void ) + FT_New_Memory_Stream( FT_Library library, + FT_Byte* base, + FT_ULong size, + FT_Stream stream ) { stream->memory = library->memory; stream->base = base; @@ -46,8 +47,9 @@ } - FT_BASE_DEF( FT_Error ) FT_Seek_Stream( FT_Stream stream, - FT_ULong pos ) + FT_BASE_DEF( FT_Error ) + FT_Seek_Stream( FT_Stream stream, + FT_ULong pos ) { FT_Error error; @@ -84,31 +86,35 @@ } - FT_BASE_DEF( FT_Error ) FT_Skip_Stream( FT_Stream stream, - FT_Long distance ) + FT_BASE_DEF( FT_Error ) + FT_Skip_Stream( FT_Stream stream, + FT_Long distance ) { return FT_Seek_Stream( stream, (FT_ULong)( stream->pos + distance ) ); } - FT_BASE_DEF( FT_Long ) FT_Stream_Pos( FT_Stream stream ) + FT_BASE_DEF( FT_Long ) + FT_Stream_Pos( FT_Stream stream ) { return stream->pos; } - FT_BASE_DEF( FT_Error ) FT_Read_Stream( FT_Stream stream, - FT_Byte* buffer, - FT_ULong count ) + FT_BASE_DEF( FT_Error ) + FT_Read_Stream( FT_Stream stream, + FT_Byte* buffer, + FT_ULong count ) { return FT_Read_Stream_At( stream, stream->pos, buffer, count ); } - FT_BASE_DEF( FT_Error ) FT_Read_Stream_At( FT_Stream stream, - FT_ULong pos, - FT_Byte* buffer, - FT_ULong count ) + FT_BASE_DEF( FT_Error ) + FT_Read_Stream_At( FT_Stream stream, + FT_ULong pos, + FT_Byte* buffer, + FT_ULong count ) { FT_Error error = FT_Err_Ok; FT_ULong read_bytes; @@ -149,9 +155,10 @@ } - FT_BASE_DEF( FT_Error ) FT_Extract_Frame( FT_Stream stream, - FT_ULong count, - FT_Byte** pbytes ) + FT_BASE_DEF( FT_Error ) + FT_Extract_Frame( FT_Stream stream, + FT_ULong count, + FT_Byte** pbytes ) { FT_Error error; @@ -170,8 +177,9 @@ } - FT_BASE_DEF( void ) FT_Release_Frame( FT_Stream stream, - FT_Byte** pbytes ) + FT_BASE_DEF( void ) + FT_Release_Frame( FT_Stream stream, + FT_Byte** pbytes ) { if ( stream->read ) { @@ -184,8 +192,9 @@ } - FT_BASE_DEF( FT_Error ) FT_Access_Frame( FT_Stream stream, - FT_ULong count ) + FT_BASE_DEF( FT_Error ) + FT_Access_Frame( FT_Stream stream, + FT_ULong count ) { FT_Error error = FT_Err_Ok; FT_ULong read_bytes; @@ -244,7 +253,8 @@ } - FT_BASE_DEF( void ) FT_Forget_Frame( FT_Stream stream ) + FT_BASE_DEF( void ) + FT_Forget_Frame( FT_Stream stream ) { /* IMPORTANT: The assertion stream->cursor != 0 was removed, given */ /* that it is possible to access a frame of length 0 in */ @@ -269,7 +279,8 @@ } - FT_BASE_DEF( FT_Char ) FT_Get_Char( FT_Stream stream ) + FT_BASE_DEF( FT_Char ) + FT_Get_Char( FT_Stream stream ) { FT_Char result; @@ -284,7 +295,8 @@ } - FT_BASE_DEF( FT_Short ) FT_Get_Short( FT_Stream stream ) + FT_BASE_DEF( FT_Short ) + FT_Get_Short( FT_Stream stream ) { FT_Byte* p; FT_Short result; @@ -302,7 +314,8 @@ } - FT_BASE_DEF( FT_Short ) FT_Get_ShortLE( FT_Stream stream ) + FT_BASE_DEF( FT_Short ) + FT_Get_ShortLE( FT_Stream stream ) { FT_Byte* p; FT_Short result; @@ -320,7 +333,8 @@ } - FT_BASE_DEF( FT_Long ) FT_Get_Offset( FT_Stream stream ) + FT_BASE_DEF( FT_Long ) + FT_Get_Offset( FT_Stream stream ) { FT_Byte* p; FT_Long result; @@ -337,7 +351,8 @@ } - FT_BASE_DEF( FT_Long ) FT_Get_Long( FT_Stream stream ) + FT_BASE_DEF( FT_Long ) + FT_Get_Long( FT_Stream stream ) { FT_Byte* p; FT_Long result; @@ -354,7 +369,8 @@ } - FT_BASE_DEF( FT_Long ) FT_Get_LongLE( FT_Stream stream ) + FT_BASE_DEF( FT_Long ) + FT_Get_LongLE( FT_Stream stream ) { FT_Byte* p; FT_Long result; @@ -371,8 +387,9 @@ } - FT_BASE_DEF( FT_Char ) FT_Read_Char( FT_Stream stream, - FT_Error* error ) + FT_BASE_DEF( FT_Char ) + FT_Read_Char( FT_Stream stream, + FT_Error* error ) { FT_Byte result = 0; @@ -407,8 +424,9 @@ } - FT_BASE_DEF( FT_Short ) FT_Read_Short( FT_Stream stream, - FT_Error* error ) + FT_BASE_DEF( FT_Short ) + FT_Read_Short( FT_Stream stream, + FT_Error* error ) { FT_Byte reads[2]; FT_Byte* p = 0; @@ -453,8 +471,9 @@ } - FT_BASE_DEF( FT_Short ) FT_Read_ShortLE( FT_Stream stream, - FT_Error* error ) + FT_BASE_DEF( FT_Short ) + FT_Read_ShortLE( FT_Stream stream, + FT_Error* error ) { FT_Byte reads[2]; FT_Byte* p = 0; @@ -499,8 +518,9 @@ } - FT_BASE_DEF( FT_Long ) FT_Read_Offset( FT_Stream stream, - FT_Error* error ) + FT_BASE_DEF( FT_Long ) + FT_Read_Offset( FT_Stream stream, + FT_Error* error ) { FT_Byte reads[3]; FT_Byte* p = 0; @@ -545,8 +565,9 @@ } - FT_BASE_DEF( FT_Long ) FT_Read_Long( FT_Stream stream, - FT_Error* error ) + FT_BASE_DEF( FT_Long ) + FT_Read_Long( FT_Stream stream, + FT_Error* error ) { FT_Byte reads[4]; FT_Byte* p = 0; @@ -591,8 +612,9 @@ } - FT_BASE_DEF( FT_Long ) FT_Read_LongLE( FT_Stream stream, - FT_Error* error ) + FT_BASE_DEF( FT_Long ) + FT_Read_LongLE( FT_Stream stream, + FT_Error* error ) { FT_Byte reads[4]; FT_Byte* p = 0; @@ -637,9 +659,10 @@ } - FT_BASE_DEF( FT_Error ) FT_Read_Fields( FT_Stream stream, - const FT_Frame_Field* fields, - void* structure ) + FT_BASE_DEF( FT_Error ) + FT_Read_Fields( FT_Stream stream, + const FT_Frame_Field* fields, + void* structure ) { FT_Error error; FT_Bool frame_accessed = 0; Index: xc/extras/freetype2/src/base/ftsynth.c diff -u xc/extras/freetype2/src/base/ftsynth.c:1.1.1.2 xc/extras/freetype2/src/base/ftsynth.c:1.4 --- xc/extras/freetype2/src/base/ftsynth.c:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/base/ftsynth.c Mon Jan 14 12:00:59 2002 @@ -4,7 +4,7 @@ /* */ /* FreeType synthesizing code for emboldening and slanting (body). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,6 +18,7 @@ #include <ft2build.h> #include FT_INTERNAL_OBJECTS_H +#include FT_INTERNAL_CALC_H #include FT_OUTLINE_H #include FT_SYNTHESIS_H @@ -33,9 +34,10 @@ /*************************************************************************/ /*************************************************************************/ - FT_EXPORT_DEF( FT_Error ) FT_Outline_Oblique( FT_GlyphSlot original, - FT_Outline* outline, - FT_Pos* advance ) + FT_EXPORT_DEF( FT_Error ) + FT_Outline_Oblique( FT_GlyphSlot original, + FT_Outline* outline, + FT_Pos* advance ) { FT_Matrix transform; @@ -73,10 +75,8 @@ #ifdef FT_CONFIG_OPTION_OLD_CALCS -#include <freetype/internal/ftcalc.h> - - static - FT_Pos ft_norm( FT_Vector* vec ) + static FT_Pos + ft_norm( FT_Vector* vec ) { FT_Int64 t1, t2; @@ -90,8 +90,8 @@ #else /* FT_CONFIG_OPTION_OLD_CALCS */ - static - FT_Pos ft_norm( FT_Vector* vec ) + static FT_Pos + ft_norm( FT_Vector* vec ) { FT_F26Dot6 u, v, d; FT_Int shift; @@ -163,9 +163,9 @@ #endif /* FT_CONFIG_OPTION_OLD_CALCS */ - static - int ft_test_extrema( FT_Outline* outline, - int n ) + static int + ft_test_extrema( FT_Outline* outline, + int n ) { FT_Vector *prev, *cur, *next; FT_Pos product; @@ -217,8 +217,8 @@ /* */ /* The function returns either 1 or -1. */ /* */ - static - int ft_get_orientation( FT_Outline* outline ) + static int + ft_get_orientation( FT_Outline* outline ) { FT_BBox box; FT_BBox indices; @@ -291,9 +291,10 @@ } - FT_EXPORT_DEF( FT_Error ) FT_Outline_Embolden( FT_GlyphSlot original, - FT_Outline* outline, - FT_Pos* advance ) + FT_EXPORT_DEF( FT_Error ) + FT_Outline_Embolden( FT_GlyphSlot original, + FT_Outline* outline, + FT_Pos* advance ) { FT_Vector u, v; FT_Vector* points; Index: xc/extras/freetype2/src/base/ftsystem.c diff -u xc/extras/freetype2/src/base/ftsystem.c:1.1.1.2 xc/extras/freetype2/src/base/ftsystem.c:1.1.1.5 --- xc/extras/freetype2/src/base/ftsystem.c:1.1.1.2 Tue May 15 23:45:35 2001 +++ xc/extras/freetype2/src/base/ftsystem.c Mon Jan 14 11:52:10 2002 @@ -4,7 +4,7 @@ /* */ /* ANSI-specific FreeType low-level system interface (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -68,9 +68,9 @@ /* <Return> */ /* The address of newly allocated block. */ /* */ - FT_CALLBACK_DEF - void* ft_alloc( FT_Memory memory, - long size ) + FT_CALLBACK_DEF( void* ) + ft_alloc( FT_Memory memory, + long size ) { FT_UNUSED( memory ); @@ -98,11 +98,11 @@ /* <Return> */ /* The address of the reallocated memory block. */ /* */ - FT_CALLBACK_DEF - void* ft_realloc( FT_Memory memory, - long cur_size, - long new_size, - void* block ) + FT_CALLBACK_DEF( void* ) + ft_realloc( FT_Memory memory, + long cur_size, + long new_size, + void* block ) { FT_UNUSED( memory ); FT_UNUSED( cur_size ); @@ -124,9 +124,9 @@ /* */ /* block :: The address of block in memory to be freed. */ /* */ - FT_CALLBACK_DEF - void ft_free( FT_Memory memory, - void* block ) + FT_CALLBACK_DEF( void ) + ft_free( FT_Memory memory, + void* block ) { FT_UNUSED( memory ); @@ -166,8 +166,8 @@ /* <Input> */ /* stream :: A pointer to the stream object. */ /* */ - FT_CALLBACK_DEF - void ft_close_stream( FT_Stream stream ) + FT_CALLBACK_DEF( void ) + ft_close_stream( FT_Stream stream ) { fclose( STREAM_FILE( stream ) ); @@ -197,11 +197,11 @@ /* <Return> */ /* The number of bytes actually read. */ /* */ - FT_CALLBACK_DEF - unsigned long ft_io_stream( FT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count ) + FT_CALLBACK_DEF( unsigned long ) + ft_io_stream( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ) { FILE* file; @@ -216,8 +216,9 @@ /* documentation is in ftobjs.h */ - FT_EXPORT_DEF( FT_Error ) FT_New_Stream( const char* filepathname, - FT_Stream astream ) + FT_EXPORT_DEF( FT_Error ) + FT_New_Stream( const char* filepathname, + FT_Stream astream ) { FILE* file; @@ -253,9 +254,22 @@ } + +#ifdef FT_DEBUG_MEMORY + + extern FT_Int + ft_mem_debug_init( FT_Memory memory ); + + extern void + ft_mem_debug_done( FT_Memory memory ); + +#endif + + /* documentation is in ftobjs.h */ - FT_EXPORT_DEF( FT_Memory ) FT_New_Memory( void ) + FT_EXPORT_DEF( FT_Memory ) + FT_New_Memory( void ) { FT_Memory memory; @@ -267,6 +281,9 @@ memory->alloc = ft_alloc; memory->realloc = ft_realloc; memory->free = ft_free; +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_init( memory ); +#endif } return memory; @@ -275,8 +292,12 @@ /* documentation is in ftobjs.h */ - FT_EXPORT_DEF( void ) FT_Done_Memory( FT_Memory memory ) + FT_EXPORT_DEF( void ) + FT_Done_Memory( FT_Memory memory ) { +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_done( memory ); +#endif memory->free( memory, memory ); } Index: xc/extras/freetype2/src/base/fttrigon.c diff -u /dev/null xc/extras/freetype2/src/base/fttrigon.c:1.1.1.3 --- /dev/null Fri Jan 18 15:21:52 2002 +++ xc/extras/freetype2/src/base/fttrigon.c Mon Jan 14 11:52:11 2002 @@ -0,0 +1,450 @@ +/***************************************************************************/ +/* */ +/* fttrigon.c */ +/* */ +/* FreeType trigonometric functions (body). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#include <ft2build.h> +#include FT_TRIGONOMETRY_H + + + /* the following is 0.2715717684432231 * 2^30 */ +#define FT_TRIG_COSCALE 0x11616E8EUL + + /* this table was generated for FT_PI = 180L << 16, i.e. degrees */ +#define FT_TRIG_MAX_ITERS 23 + + static const FT_Fixed + ft_trig_arctan_table[24] = + { + 4157273L, 2949120L, 1740967L, 919879L, 466945L, 234379L, 117304L, + 58666L, 29335L, 14668L, 7334L, 3667L, 1833L, 917L, 458L, 229L, 115L, + 57L, 29L, 14L, 7L, 4L, 2L, 1L + }; + + /* the Cordic shrink factor, multiplied by 2^32 */ +#define FT_TRIG_SCALE 1166391785UL /* 0x4585BA38UL */ + + +#ifdef FT_CONFIG_HAS_INT64 + + /* multiply a given value by the CORDIC shrink factor */ + static FT_Fixed + ft_trig_downscale( FT_Fixed val ) + { + FT_Fixed s; + FT_Int64 v; + + + s = val; + val = ( val >= 0 ) ? val : -val; + + v = ( val * (FT_Int64)FT_TRIG_SCALE ) + 0x100000000UL; + val = (FT_Fixed)( v >> 32 ); + + return ( s >= 0 ) ? val : -val; + } + +#else /* !FT_CONFIG_HAS_INT64 */ + + /* multiply a given value by the CORDIC shrink factor */ + static FT_Fixed + ft_trig_downscale( FT_Fixed val ) + { + FT_Fixed s; + FT_UInt32 v1, v2, k1, k2, hi, lo1, lo2, lo3; + + + s = val; + val = ( val >= 0 ) ? val : -val; + + v1 = (FT_UInt32)val >> 16; + v2 = (FT_UInt32)val & 0xFFFF; + + k1 = FT_TRIG_SCALE >> 16; /* constant */ + k2 = FT_TRIG_SCALE & 0xFFFF; /* constant */ + + hi = k1 * v1; + lo1 = k1 * v2 + k2 * v1; /* can't overflow */ + + lo2 = ( k2 * v2 ) >> 16; + lo3 = ( lo1 >= lo2 ) ? lo1 : lo2; + lo1 += lo2; + + hi += lo1 >> 16; + if ( lo1 < lo3 ) + hi += 0x10000UL; + + val = (FT_Fixed)hi; + + return ( s >= 0 ) ? val : -val; + } + +#endif /* !FT_CONFIG_HAS_INT64 */ + + + static FT_Int + ft_trig_prenorm( FT_Vector* vec ) + { + FT_Fixed x, y, z; + FT_Int shift; + + + x = vec->x; + y = vec->y; + + z = ( ( x >= 0 ) ? x : - x ) | ( (y >= 0) ? y : -y ); + shift = 0; + + if ( z < ( 1L << 27 ) ) + { + do + { + shift++; + z <<= 1; + } while ( z < ( 1L << 27 ) ); + + vec->x = x << shift; + vec->y = y << shift; + } + else if ( z > ( 1L << 28 ) ) + { + do + { + shift++; + z >>= 1; + } while ( z > ( 1L << 28 ) ); + + vec->x = x >> shift; + vec->y = y >> shift; + shift = -shift; + } + return shift; + } + + + static void + ft_trig_pseudo_rotate( FT_Vector* vec, + FT_Angle theta ) + { + FT_Int i; + FT_Fixed x, y, xtemp; + const FT_Fixed *arctanptr; + + + x = vec->x; + y = vec->y; + + /* Get angle between -90 and 90 degrees */ + while ( theta <= -FT_ANGLE_PI2 ) + { + x = -x; + y = -y; + theta += FT_ANGLE_PI; + } + + while ( theta > FT_ANGLE_PI2 ) + { + x = -x; + y = -y; + theta -= FT_ANGLE_PI; + } + + /* Initial pseudorotation, with left shift */ + arctanptr = ft_trig_arctan_table; + + if ( theta < 0 ) + { + xtemp = x + ( y << 1 ); + y = y - ( x << 1 ); + x = xtemp; + theta += *arctanptr++; + } + else + { + xtemp = x - ( y << 1 ); + y = y + ( x << 1 ); + x = xtemp; + theta -= *arctanptr++; + } + + /* Subsequent pseudorotations, with right shifts */ + i = 0; + do + { + if ( theta < 0 ) + { + xtemp = x + ( y >> i ); + y = y - ( x >> i ); + x = xtemp; + theta += *arctanptr++; + } + else + { + xtemp = x - ( y >> i ); + y = y + ( x >> i ); + x = xtemp; + theta -= *arctanptr++; + } + } while ( ++i < FT_TRIG_MAX_ITERS ); + + vec->x = x; + vec->y = y; + } + + + static void + ft_trig_pseudo_polarize( FT_Vector* vec ) + { + FT_Fixed theta; + FT_Fixed yi, i; + FT_Fixed x, y; + const FT_Fixed *arctanptr; + + + x = vec->x; + y = vec->y; + + /* Get the vector into the right half plane */ + theta = 0; + if ( x < 0 ) + { + x = -x; + y = -y; + theta = 2 * FT_ANGLE_PI2; + } + + if ( y > 0 ) + theta = - theta; + + arctanptr = ft_trig_arctan_table; + + if ( y < 0 ) + { + /* Rotate positive */ + yi = y + ( x << 1 ); + x = x - ( y << 1 ); + y = yi; + theta -= *arctanptr++; /* Subtract angle */ + } + else + { + /* Rotate negative */ + yi = y - ( x << 1 ); + x = x + ( y << 1 ); + y = yi; + theta += *arctanptr++; /* Add angle */ + } + + i = 0; + do + { + if ( y < 0 ) + { + /* Rotate positive */ + yi = y + ( x >> i ); + x = x - ( y >> i ); + y = yi; + theta -= *arctanptr++; + } + else + { + /* Rotate negative */ + yi = y - ( x >> i ); + x = x + ( y >> i ); + y = yi; + theta += *arctanptr++; + } + } while ( ++i < FT_TRIG_MAX_ITERS ); + + /* round theta */ + if ( theta >= 0 ) + theta = ( theta + 16 ) & -32; + else + theta = - (( -theta + 16 ) & -32); + + vec->x = x; + vec->y = theta; + } + + + /* documentation is in fttrigon.h */ + + FT_EXPORT_DEF( FT_Fixed ) + FT_Cos( FT_Angle angle ) + { + FT_Vector v; + + + v.x = FT_TRIG_COSCALE >> 2; + v.y = 0; + ft_trig_pseudo_rotate( &v, angle ); + + return v.x / ( 1 << 12 ); + } + + + /* documentation is in fttrigon.h */ + + FT_EXPORT_DEF( FT_Fixed ) + FT_Sin( FT_Angle angle ) + { + return FT_Cos( FT_ANGLE_PI2 - angle ); + } + + + /* documentation is in fttrigon.h */ + + FT_EXPORT_DEF( FT_Fixed ) + FT_Tan( FT_Angle angle ) + { + FT_Vector v; + + + v.x = FT_TRIG_COSCALE >> 2; + v.y = 0; + ft_trig_pseudo_rotate( &v, angle ); + + return FT_DivFix( v.y, v.x ); + } + + + /* documentation is in fttrigon.h */ + + FT_EXPORT_DEF( FT_Angle ) + FT_Atan2( FT_Fixed dx, + FT_Fixed dy ) + { + FT_Vector v; + + + if ( dx == 0 && dy == 0 ) + return 0; + + v.x = dx; + v.y = dy; + ft_trig_prenorm( &v ); + ft_trig_pseudo_polarize( &v ); + + return v.y; + } + + + /* documentation is in fttrigon.h */ + + FT_EXPORT_DEF( void ) + FT_Vector_Unit( FT_Vector* vec, + FT_Angle angle ) + { + vec->x = FT_TRIG_COSCALE >> 2; + vec->y = 0; + ft_trig_pseudo_rotate( vec, angle ); + vec->x >>= 12; + vec->y >>= 12; + } + + + /* documentation is in fttrigon.h */ + + FT_EXPORT_DEF( void ) + FT_Vector_Rotate( FT_Vector* vec, + FT_Angle angle ) + { + FT_Int shift; + FT_Vector v; + + + v.x = vec->x; + v.y = vec->y; + + if ( angle && ( v.x != 0 || v.y != 0 ) ) + { + shift = ft_trig_prenorm( &v ); + ft_trig_pseudo_rotate( &v, angle ); + v.x = ft_trig_downscale( v.x ); + v.y = ft_trig_downscale( v.y ); + + if ( shift >= 0 ) + { + vec->x = v.x >> shift; + vec->y = v.y >> shift; + } + else + { + shift = -shift; + vec->x = v.x << shift; + vec->y = v.y << shift; + } + } + } + + + /* documentation is in fttrigon.h */ + + FT_EXPORT_DEF( FT_Fixed ) + FT_Vector_Length( FT_Vector* vec ) + { + FT_Int shift; + FT_Vector v; + + + v = *vec; + + /* handle trivial cases */ + if ( v.x == 0 ) + { + return ( v.y >= 0 ) ? v.y : -v.y; + } + else if ( v.y == 0 ) + { + return ( v.x >= 0 ) ? v.x : -v.x; + } + + /* general case */ + shift = ft_trig_prenorm( &v ); + ft_trig_pseudo_polarize( &v ); + + v.x = ft_trig_downscale( v.x ); + return ( shift >= 0 ) ? ( v.x >> shift ) : ( v.x << -shift ); + } + + + /* documentation is in fttrigon.h */ + + FT_EXPORT_DEF( void ) + FT_Vector_Polarize( FT_Vector* vec, + FT_Fixed *length, + FT_Angle *angle ) + { + FT_Int shift; + FT_Vector v; + + + v = *vec; + + if ( v.x == 0 && v.y == 0 ) + return; + + shift = ft_trig_prenorm( &v ); + ft_trig_pseudo_polarize( &v ); + + v.x = ft_trig_downscale( v.x ); + + *length = ( shift >= 0 ) ? ( v.x >> shift ) : ( v.x << -shift ); + *angle = v.y; + } + + +/* END */ Index: xc/extras/freetype2/src/base/rules.mk diff -u xc/extras/freetype2/src/base/rules.mk:1.1.1.1 xc/extras/freetype2/src/base/rules.mk:1.1.1.3 --- xc/extras/freetype2/src/base/rules.mk:1.1.1.1 Fri Dec 8 16:26:20 2000 +++ xc/extras/freetype2/src/base/rules.mk Mon Jan 14 11:52:11 2002 @@ -33,12 +33,14 @@ # ftsystem, ftinit, and ftdebug are handled by freetype.mk # BASE_SRC := $(BASE_)ftcalc.c \ + $(BASE_)fttrigon.c \ $(BASE_)ftextend.c \ $(BASE_)ftlist.c \ $(BASE_)ftobjs.c \ $(BASE_)ftstream.c \ $(BASE_)ftoutln.c \ - $(BASE_)ftnames.c + $(BASE_)ftnames.c \ + $(BASE_)ftdbgmem.c # Base layer `extensions' sources # Index: xc/extras/freetype2/src/cache/Jamfile diff -u /dev/null xc/extras/freetype2/src/cache/Jamfile:1.1.1.2 --- /dev/null Fri Jan 18 15:21:52 2002 +++ xc/extras/freetype2/src/cache/Jamfile Mon Jan 14 11:52:11 2002 @@ -0,0 +1,29 @@ +# FreeType 2 src/cache Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src cache ; + +SubDirHdrs [ FT2_SubDir src cache ] ; + +# The file <freetype/ftcache.h> contains some macro definitions that are +# later used in #include statements related to the cache sub-system. It +# needs to be parsed through a HDRMACRO rule for macro definitions. +# +HDRMACRO [ FT2_SubDir include ftcache.h ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = ftlru ftcmanag ftccache ftcglyph ftcsbits ftcimage ftccmap ; + } + else + { + _sources = ftcache ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/cache Jamfile Index: xc/extras/freetype2/src/cache/ftcache.c diff -u xc/extras/freetype2/src/cache/ftcache.c:1.1.1.2 xc/extras/freetype2/src/cache/ftcache.c:1.1.1.4 --- xc/extras/freetype2/src/cache/ftcache.c:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/cache/ftcache.c Mon Jan 14 11:52:11 2002 @@ -4,7 +4,7 @@ /* */ /* The FreeType Caching sub-system (body only). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -21,10 +21,11 @@ #include <ft2build.h> #include "ftlru.c" #include "ftcmanag.c" +#include "ftccache.c" #include "ftcglyph.c" -#include "ftcchunk.c" #include "ftcimage.c" #include "ftcsbits.c" +#include "ftccmap.c" /* END */ Index: xc/extras/freetype2/src/cache/ftccache.c diff -u /dev/null xc/extras/freetype2/src/cache/ftccache.c:1.1.1.1 --- /dev/null Fri Jan 18 15:21:52 2002 +++ xc/extras/freetype2/src/cache/ftccache.c Mon Jan 14 11:52:11 2002 @@ -0,0 +1,624 @@ +/***************************************************************************/ +/* */ +/* ftccache.c */ +/* */ +/* The FreeType internal cache interface (body). */ +/* */ +/* Copyright 2000-2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#include <ft2build.h> +#include FT_CACHE_MANAGER_H +#include FT_INTERNAL_OBJECTS_H +#include FT_INTERNAL_DEBUG_H + +#include "ftcerror.h" + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE NODE DEFINITIONS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + FT_EXPORT_DEF( void ) + ftc_node_done( FTC_Node node, + FTC_Cache cache ) + { + FTC_Family family; + FTC_FamilyEntry entry; + + + entry = cache->manager->families.entries + node->fam_index; + family = entry->family; + + /* remove from parent set table - eventually destroy the set */ + if ( --family->num_nodes <= 0 ) + FT_LruList_Remove( cache->families, (FT_LruNode) family ); + } + + + /* add a new node to the head of the manager's circular MRU list */ + static void + ftc_node_mru_link( FTC_Node node, + FTC_Manager manager ) + { + FTC_Node first = manager->nodes_list; + + + if ( first ) + { + node->mru_prev = first->mru_prev; + node->mru_next = first; + + first->mru_prev->mru_next = node; + first->mru_prev = node; + } + else + { + node->mru_next = node; + node->mru_prev = node; + } + + manager->nodes_list = node; + manager->num_nodes++; + } + + + /* remove a node from the manager's MRU list */ + static void + ftc_node_mru_unlink( FTC_Node node, + FTC_Manager manager ) + { + FTC_Node prev = node->mru_prev; + FTC_Node next = node->mru_next; + FTC_Node first = manager->nodes_list; + + + prev->mru_next = next; + next->mru_prev = prev; + + if ( node->mru_next == first ) + { + /* this is the last node in the list; update its head pointer */ + if ( node == first ) + manager->nodes_list = NULL; + else + first->mru_prev = prev; + } + + node->mru_next = NULL; + node->mru_prev = NULL; + manager->num_nodes--; + } + + + /* move a node to the head of the manager's MRU list */ + static void + ftc_node_mru_up( FTC_Node node, + FTC_Manager manager ) + { + FTC_Node first = manager->nodes_list; + + + if ( node != first ) + { + ftc_node_mru_unlink( node, manager ); + ftc_node_mru_link( node, manager ); + } + } + + + /* remove a node from its cache's hash table */ + static void + ftc_node_hash_unlink( FTC_Node node, + FTC_Cache cache ) + { + FTC_Node *pnode = cache->buckets + ( node->hash % cache->size ); + + + for (;;) + { + if ( *pnode == NULL ) + { + FT_ERROR(( "FreeType.cache.hash_unlink: unknown node!\n" )); + return; + } + + if ( *pnode == node ) + { + *pnode = node->link; + node->link = NULL; + + cache->nodes--; + return; + } + + pnode = &(*pnode)->link; + } + } + + + /* add a node to the "top" of its cache's hash table */ + static void + ftc_node_hash_link( FTC_Node node, + FTC_Cache cache ) + { + FTC_Node *pnode = cache->buckets + ( node->hash % cache->size ); + + + node->link = *pnode; + *pnode = node; + + cache->nodes++; + } + + + /* remove a node from the cache manager */ + FT_EXPORT_DEF( void ) + ftc_node_destroy( FTC_Node node, + FTC_Manager manager ) + { + FT_Memory memory = manager->library->memory; + FTC_Cache cache; + FTC_FamilyEntry entry; + FTC_Cache_Class clazz; + + +#ifdef FT_DEBUG_ERROR + /* find node's cache */ + if ( node->fam_index >= manager->families.count ) + { + FT_ERROR(( "ftc_node_destroy: invalid node handle\n" )); + return; + } +#endif + + entry = manager->families.entries + node->fam_index; + cache = entry->cache; + +#ifdef FT_DEBUG_ERROR + if ( cache == NULL ) + { + FT_ERROR(( "ftc_node_destroy: invalid node handle\n" )); + return; + } +#endif + + clazz = cache->clazz; + + manager->cur_weight -= clazz->node_weight( node, cache ); + + /* remove node from mru list */ + ftc_node_mru_unlink( node, manager ); + + /* remove node from cache's hash table */ + ftc_node_hash_unlink( node, cache ); + + /* now finalize it */ + if ( clazz->node_done ) + clazz->node_done( node, cache ); + + FREE( node ); + + /* check, just in case of general corruption :-) */ + if ( manager->num_nodes <= 0 ) + FT_ERROR(( "ftc_node_destroy: invalid cache node count! = %d\n", + manager->num_nodes )); + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE FAMILY DEFINITIONS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + FT_EXPORT_DEF( FT_Error ) + ftc_family_init( FTC_Family family, + FTC_Query query, + FTC_Cache cache ) + { + FT_Error error; + FTC_Manager manager = cache->manager; + FT_Memory memory = manager->library->memory; + FTC_FamilyEntry entry; + + + family->cache = cache; + family->num_nodes = 0; + + /* now add to manager's family table */ + error = ftc_family_table_alloc( &manager->families, memory, &entry ); + if ( !error ) + { + entry->cache = cache; + entry->family = family; + family->fam_index = entry->index; + + query->family = family; /* save family in query */ + } + + return error; + } + + + FT_EXPORT_DEF( void ) + ftc_family_done( FTC_Family family ) + { + FTC_Manager manager = family->cache->manager; + + + /* remove from manager's family table */ + ftc_family_table_free( &manager->families, family->fam_index ); + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** ABSTRACT CACHE CLASS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + +#define FTC_PRIMES_MIN 7 +#define FTC_PRIMES_MAX 13845163 + + static const FT_UInt ftc_primes[] = + { + 7, + 11, + 19, + 37, + 73, + 109, + 163, + 251, + 367, + 557, + 823, + 1237, + 1861, + 2777, + 4177, + 6247, + 9371, + 14057, + 21089, + 31627, + 47431, + 71143, + 106721, + 160073, + 240101, + 360163, + 540217, + 810343, + 1215497, + 1823231, + 2734867, + 4102283, + 6153409, + 9230113, + 13845163, + }; + + + static FT_UFast + ftc_prime_closest( FT_UFast num ) + { + FT_UInt i; + + + for ( i = 0; i < sizeof ( ftc_primes ) / sizeof ( ftc_primes[0] ); i++ ) + if ( ftc_primes[i] > num ) + return ftc_primes[i]; + + return FTC_PRIMES_MAX; + } + + +#define FTC_CACHE_RESIZE_TEST( c ) \ + ( (c)->nodes*3 < (c)->size || \ + (c)->size*3 < (c)->nodes ) + + + static void + ftc_cache_resize( FTC_Cache cache ) + { + FT_UFast new_size; + + + new_size = ftc_prime_closest( cache->nodes ); + if ( new_size != cache->size ) + { + FT_Memory memory = cache->memory; + FT_Error error; + FTC_Node* new_buckets ; + FT_ULong i; + + + /* no need to report an error; we'll simply keep using the same */ + /* buckets number / size */ + if ( ALLOC_ARRAY( new_buckets, new_size, FTC_Node ) ) + return; + + for ( i = 0; i < cache->size; i++ ) + { + FTC_Node node, next, *pnode; + FT_UFast hash; + + + node = cache->buckets[i]; + while ( node ) + { + next = node->link; + hash = node->hash % new_size; + pnode = new_buckets + hash; + + node->link = pnode[0]; + pnode[0] = node; + + node = next; + } + } + + if ( cache->buckets ) + FREE( cache->buckets ); + + cache->buckets = new_buckets; + cache->size = new_size; + } + } + + + FT_EXPORT_DEF( FT_Error ) + ftc_cache_init( FTC_Cache cache ) + { + FT_Memory memory = cache->memory; + FTC_Cache_Class clazz = cache->clazz; + FT_Error error; + + + cache->nodes = 0; + cache->size = FTC_PRIMES_MIN; + + if ( ALLOC_ARRAY( cache->buckets, cache->size, FTC_Node ) ) + goto Exit; + + /* now, initialize the lru list of families for this cache */ + if ( clazz->family_size > 0 ) + { + FT_LruList_ClassRec* lru_class = &cache->family_class; + + + lru_class->list_size = sizeof( FT_LruListRec ); + lru_class->list_init = NULL; + lru_class->list_done = NULL; + + lru_class->node_size = clazz->family_size; + lru_class->node_init = (FT_LruNode_InitFunc) clazz->family_init; + lru_class->node_done = (FT_LruNode_DoneFunc) clazz->family_done; + lru_class->node_flush = (FT_LruNode_FlushFunc) NULL; + lru_class->node_compare = (FT_LruNode_CompareFunc)clazz->family_compare; + + error = FT_LruList_New( (FT_LruList_Class) lru_class, + 0, /* max items == 0 => unbounded list */ + cache, + memory, + &cache->families ); + if ( error ) + FREE( cache->buckets ); + } + + Exit: + return error; + } + + + FT_EXPORT_DEF( void ) + ftc_cache_clear( FTC_Cache cache ) + { + if ( cache ) + { + FT_Memory memory = cache->memory; + FTC_Cache_Class clazz = cache->clazz; + FTC_Manager manager = cache->manager; + FT_UFast i; + + + for ( i = 0; i < cache->size; i++ ) + { + FTC_Node *pnode = cache->buckets + i, next, node = *pnode; + + + while ( node ) + { + next = node->link; + node->link = NULL; + + /* remove node from mru list */ + ftc_node_mru_unlink( node, manager ); + + /* now finalize it */ + manager->cur_weight -= clazz->node_weight( node, cache ); + + if ( clazz->node_done ) + clazz->node_done( node, cache ); + + FREE( node ); + node = next; + } + cache->buckets[i] = NULL; + } + + cache->nodes = 0; + + /* destroy the families */ + if ( cache->families ) + FT_LruList_Reset( cache->families ); + } + } + + + FT_EXPORT_DEF( void ) + ftc_cache_done( FTC_Cache cache ) + { + if ( cache ) + { + FT_Memory memory = cache->memory; + + + ftc_cache_clear( cache ); + + FREE( cache->buckets ); + cache->size = 0; + + if ( cache->families ) + { + FT_LruList_Destroy( cache->families ); + cache->families = NULL; + } + } + } + + + /* Look up a node in "top" of its cache's hash table. */ + /* If not found, create a new node. */ + /* */ + FT_EXPORT_DEF( FT_Error ) + ftc_cache_lookup( FTC_Cache cache, + FTC_Query query, + FTC_Node *anode ) + { + FT_Error error; + FT_LruNode lru; + + + /* some argument checks are delayed to ftc_glyph_cache_lookup */ + if ( !cache || !query || !anode ) + return FTC_Err_Invalid_Argument; + + *anode = NULL; + + query->hash = 0; + query->family = NULL; + + error = FT_LruList_Lookup( cache->families, query, &lru ); + if ( !error ) + { + FTC_Family family = (FTC_Family) lru; + FT_UFast hash = query->hash; + FTC_Node* bucket = cache->buckets + (hash % cache->size); + + + if ( query->family != family || + family->fam_index >= cache->manager->families.size ) + { + FT_ERROR(( + "ftc_cache_lookup: invalid query (bad 'family' field)\n" )); + return FT_Err_Invalid_Argument; + } + + if ( *bucket ) + { + FTC_Node* pnode = bucket; + FTC_Node_CompareFunc compare = cache->clazz->node_compare; + + + for ( ;; ) + { + FTC_Node node; + + + node = *pnode; + if ( node == NULL ) + break; + + if ( (FT_UInt)node->fam_index == family->fam_index && + compare( node, query, cache ) ) + { + /* move to head of bucket list */ + if ( pnode != bucket ) + { + *pnode = node->link; + node->link = *bucket; + *bucket = node; + } + + /* move to head of MRU list */ + if ( node != cache->manager->nodes_list ) + ftc_node_mru_up( node, cache->manager ); + + *anode = node; + goto Exit; + } + + pnode = &(*pnode)->link; + } + } + + /* didn't find a node, create a new one */ + { + FTC_Cache_Class clazz = cache->clazz; + FTC_Manager manager = cache->manager; + FT_Memory memory = cache->memory; + FTC_Node node; + + + if ( ALLOC( node, clazz->node_size ) ) + goto Exit; + + node->fam_index = (FT_UShort) family->fam_index; + node->hash = query->hash; + node->ref_count = 0; + + error = clazz->node_init( node, query, cache ); + if ( error ) + { + FREE( node ); + goto Exit; + } + + ftc_node_hash_link( node, cache ); + ftc_node_mru_link( node, cache->manager ); + + cache->manager->cur_weight += clazz->node_weight( node, cache ); + + /* now try to compress the node pool when necessary */ + if ( manager->cur_weight >= manager->max_weight ) + { + node->ref_count++; + FTC_Manager_Compress( manager ); + node->ref_count--; + } + + /* try to resize the hash table if appropriate */ + if ( FTC_CACHE_RESIZE_TEST( cache ) ) + ftc_cache_resize( cache ); + + *anode = node; + } + } + + Exit: + return error; + } + + +/* END */ Index: xc/extras/freetype2/src/cache/ftcchunk.c diff -u xc/extras/freetype2/src/cache/ftcchunk.c:1.1.1.2 xc/extras/freetype2/src/cache/ftcchunk.c:removed --- xc/extras/freetype2/src/cache/ftcchunk.c:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/cache/ftcchunk.c Fri Jan 18 15:21:52 2002 @@ -1,441 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcchunk.c */ -/* */ -/* FreeType chunk cache cache (body). */ -/* */ -/* Copyright 2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_CACHE_H -#include FT_CACHE_INTERNAL_CHUNK_H -#include FT_LIST_H -#include FT_ERRORS_H -#include FT_INTERNAL_OBJECTS_H - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** GLYPH NODES *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - /* create a new chunk node, setting its cache index and ref count */ - FT_EXPORT_DEF( FT_Error ) FTC_ChunkNode_Init( FTC_ChunkNode node, - FTC_ChunkSet cset, - FT_UInt index, - FT_Bool alloc ) - { - FTC_Chunk_Cache cache = cset->cache; - FTC_CacheNode_Data* data = FTC_CACHENODE_TO_DATA_P( &node->root ); - FT_Error error = 0; - - - data->cache_index = (FT_UShort)cache->root.cache_index; - data->ref_count = (FT_Short) 0; - node->cset = cset; - node->cset_index = (FT_UShort)index; - node->num_elements = ( index + 1 < cset->num_chunks ) - ? cset->element_count - : cset->element_max - cset->element_count*index; - if ( alloc ) - { - /* allocate elements array */ - FT_Memory memory; - - - memory = cache->root.memory; - error = MEM_Alloc( node->elements, - cset->element_size * cset->element_count ); - } - - return error; - } - - - FT_EXPORT_DEF( void ) FTC_ChunkNode_Destroy( FTC_ChunkNode node ) - { - FTC_ChunkSet cset = node->cset; - - - /* remove from parent set table */ - cset->chunks[node->cset_index] = 0; - - /* destroy the node */ - cset->clazz->destroy_node( node ); - } - - - FT_EXPORT_DEF( FT_ULong ) FTC_ChunkNode_Size( FTC_ChunkNode node ) - { - FTC_ChunkSet cset = node->cset; - - - return cset->clazz->size_node( node ); - } - - - FT_CALLBACK_TABLE_DEF - const FTC_CacheNode_Class ftc_chunk_cache_node_class = - { - (FTC_CacheNode_SizeFunc) FTC_ChunkNode_Size, - (FTC_CacheNode_DestroyFunc)FTC_ChunkNode_Destroy - }; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CHUNK SETS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_EXPORT_DEF( FT_Error ) FTC_ChunkSet_New( FTC_Chunk_Cache cache, - FT_Pointer type, - FTC_ChunkSet *aset ) - { - FT_Error error; - FT_Memory memory = cache->root.memory; - FTC_Manager manager = cache->root.manager; - FTC_ChunkSet cset = 0; - - FTC_Chunk_Cache_Class* ccache_class; - FTC_ChunkSet_Class* clazz; - - - ccache_class = (FTC_Chunk_Cache_Class*)cache->root.clazz; - clazz = ccache_class->cset_class; - - *aset = 0; - - if ( ALLOC( cset, clazz->cset_byte_size ) ) - goto Exit; - - cset->cache = cache; - cset->manager = manager; - cset->memory = memory; - cset->clazz = clazz; - - /* now compute element_max, element_count and element_size */ - error = clazz->sizes( cset, type ); - if ( error ) - goto Exit; - - /* compute maximum number of nodes */ - cset->num_chunks = ( cset->element_max + cset->element_count - 1 ) / - cset->element_count; - - /* allocate chunk pointers table */ - if ( ALLOC_ARRAY( cset->chunks, cset->num_chunks, FTC_ChunkNode ) ) - goto Exit; - - /* initialize set by type if needed */ - if ( clazz->init ) - { - error = clazz->init( cset, type ); - if ( error ) - goto Exit; - } - - *aset = cset; - - Exit: - if ( error && cset ) - { - FREE( cset->chunks ); - FREE( cset ); - } - - return error; - } - - - FT_EXPORT_DEF( void ) FTC_ChunkSet_Destroy( FTC_ChunkSet cset ) - { - FTC_Chunk_Cache cache = cset->cache; - FTC_Manager manager = cache->root.manager; - FT_List glyphs_lru = &manager->global_lru; - FTC_ChunkNode* bucket = cset->chunks; - FTC_ChunkNode* bucket_limit = bucket + cset->num_chunks; - FT_Memory memory = cache->root.memory; - - FTC_ChunkSet_Class* clazz = cset->clazz; - - - /* for each bucket, free the list of glyph nodes */ - for ( ; bucket < bucket_limit; bucket++ ) - { - FTC_ChunkNode node = bucket[0]; - FT_ListNode lrunode; - - - if ( node ) - { - lrunode = FTC_CHUNKNODE_TO_LRUNODE( node ); - - manager->num_bytes -= clazz->size_node( node ); - manager->num_nodes--; - - FT_List_Remove( glyphs_lru, lrunode ); - - clazz->destroy_node( node ); - - bucket[0] = 0; - } - } - - if ( clazz->done ) - clazz->done( cset ); - - FREE( cset->chunks ); - FREE( cset ); - } - - - FT_EXPORT_DEF( FT_Error ) FTC_ChunkSet_Lookup_Node( - FTC_ChunkSet cset, - FT_UInt glyph_index, - FTC_ChunkNode *anode, - FT_UInt *anindex ) - { - FTC_Chunk_Cache cache = cset->cache; - FTC_Manager manager = cache->root.manager; - FT_Error error = 0; - - FTC_ChunkSet_Class* clazz = cset->clazz; - - - *anode = 0; - - if ( glyph_index >= cset->element_max ) - error = FT_Err_Invalid_Argument; - else - { - FT_UInt chunk_size = cset->element_count; - FT_UInt chunk_index = glyph_index / chunk_size; - FTC_ChunkNode* pnode = cset->chunks + chunk_index; - FTC_ChunkNode node = *pnode; - - - if ( !node ) - { - /* we didn't found the glyph image; we will now create a new one */ - error = clazz->new_node( cset, chunk_index, &node ); - if ( error ) - goto Exit; - - /* store the new chunk in the cset's table */ - *pnode = node; - - /* insert the node at the start the global LRU glyph list */ - FT_List_Insert( &manager->global_lru, - FTC_CHUNKNODE_TO_LRUNODE( node ) ); - - manager->num_bytes += clazz->size_node( node ); - manager->num_nodes++; - - if ( manager->num_bytes > manager->max_bytes ) - { - FTC_ChunkNode_Ref ( node ); - FTC_Manager_Compress( manager ); - FTC_ChunkNode_Unref ( node ); - } - } - - *anode = node; - *anindex = glyph_index - chunk_index * chunk_size; - } - - Exit: - return error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CHUNK SETS LRU CALLBACKS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - -#define FTC_CSET_LRU_GET_CACHE( lru ) \ - ( (FTC_Chunk_Cache)((lru)->user_data) ) - -#define FTC_CSET_LRU_GET_MANAGER( lru ) \ - FTC_CSET_LRU_GET_CACHE( lru )->manager - -#define FTC_LRUNODE_CSET( node ) \ - ( (FTC_ChunkSet)(node)->root.data ) - - - FT_CALLBACK_DEF - FT_Error ftc_chunk_set_lru_init( FT_Lru lru, - FT_LruNode node ) - { - FTC_Chunk_Cache cache = FTC_CSET_LRU_GET_CACHE( lru ); - FT_Error error; - FTC_ChunkSet cset; - - - error = FTC_ChunkSet_New( cache, - (FT_Pointer)node->key, - &cset ); - if ( !error ) - { - /* good, now set the set index within the set object */ - cset->cset_index = (FT_UInt)( node - lru->nodes ); - node->root.data = cset; - } - - return error; - } - - - FT_CALLBACK_DEF - void ftc_chunk_set_lru_done( FT_Lru lru, - FT_LruNode node ) - { - FTC_ChunkSet cset = FTC_LRUNODE_CSET( node ); - - FT_UNUSED( lru ); - - - FTC_ChunkSet_Destroy( cset ); - } - - - FT_CALLBACK_DEF - FT_Bool ftc_chunk_set_lru_compare( FT_LruNode node, - FT_LruKey key ) - { - FTC_ChunkSet cset = FTC_LRUNODE_CSET( node ); - - - return cset->clazz->compare( cset, (FT_Pointer)key ); - } - - - FT_CALLBACK_TABLE_DEF - const FT_Lru_Class ftc_chunk_set_lru_class = - { - sizeof( FT_LruRec ), - ftc_chunk_set_lru_init, - ftc_chunk_set_lru_done, - 0, /* no flush */ - ftc_chunk_set_lru_compare - }; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CHUNK CACHE OBJECTS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_EXPORT_DEF( FT_Error ) FTC_Chunk_Cache_Init( FTC_Chunk_Cache cache ) - { - FT_Memory memory = cache->root.memory; - FT_Error error; - - FTC_Chunk_Cache_Class* ccache_clazz; - - - /* set up root node_class to be used by manager */ - cache->root.node_clazz = - (FTC_CacheNode_Class*)&ftc_chunk_cache_node_class; - - /* setup `compare' shortcut */ - ccache_clazz = (FTC_Chunk_Cache_Class*)cache->root.clazz; - cache->compare = ccache_clazz->cset_class->compare; - - error = FT_Lru_New( &ftc_chunk_set_lru_class, - FTC_MAX_CHUNK_SETS, - cache, - memory, - 1, /* pre_alloc == TRUE */ - &cache->csets_lru ); - return error; - } - - - FT_EXPORT_DEF( void ) FTC_Chunk_Cache_Done( FTC_Chunk_Cache cache ) - { - /* discard glyph sets */ - FT_Lru_Done( cache->csets_lru ); - } - - - FT_EXPORT_DEF( FT_Error ) FTC_Chunk_Cache_Lookup( FTC_Chunk_Cache cache, - FT_Pointer type, - FT_UInt gindex, - FTC_ChunkNode *anode, - FT_UInt *aindex ) - { - FT_Error error; - FTC_ChunkSet cset; - FTC_ChunkNode node; - FT_UInt cindex; - FTC_Manager manager; - - - /* check for valid `desc' delayed to FT_Lru_Lookup() */ - - if ( !cache || !anode || !aindex ) - return FT_Err_Invalid_Argument; - - *anode = 0; - *aindex = 0; - cset = cache->last_cset; - - if ( !cset || !cache->compare( cset, type ) ) - { - error = FT_Lru_Lookup( cache->csets_lru, - (FT_LruKey)type, - (FT_Pointer*)&cset ); - cache->last_cset = cset; - if ( error ) - goto Exit; - } - - error = FTC_ChunkSet_Lookup_Node( cset, gindex, &node, &cindex ); - if ( error ) - goto Exit; - - /* now compress the manager's cache pool if needed */ - manager = cache->root.manager; - if ( manager->num_bytes > manager->max_bytes ) - { - FTC_ChunkNode_Ref ( node ); - FTC_Manager_Compress( manager ); - FTC_ChunkNode_Unref ( node ); - } - - *anode = node; - *aindex = cindex; - - Exit: - return error; - } - - -/* END */ Index: xc/extras/freetype2/src/cache/ftccmap.c diff -u /dev/null xc/extras/freetype2/src/cache/ftccmap.c:1.1.1.1 --- /dev/null Fri Jan 18 15:21:52 2002 +++ xc/extras/freetype2/src/cache/ftccmap.c Mon Jan 14 11:52:11 2002 @@ -0,0 +1,390 @@ +/***************************************************************************/ +/* */ +/* ftccmap.c */ +/* */ +/* FreeType CharMap cache (body) */ +/* */ +/* Copyright 2000-2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_CACHE_H +#include FT_CACHE_CHARMAP_H +#include FT_CACHE_MANAGER_H +#include FT_INTERNAL_MEMORY_H +#include FT_INTERNAL_DEBUG_H + +#include "ftcerror.h" + + /*************************************************************************/ + /* */ + /* Each FTC_CMapNode contains a simple array to map a range of character */ + /* codes to equivalent glyph indices. */ + /* */ + /* For now, the implementation is very basic: Each node maps a range of */ + /* 128 consecutive character codes to their correspondingglyph indices. */ + /* */ + /* We could do more complex things, but I don't think it is really very */ + /* useful. */ + /* */ + /*************************************************************************/ + + + /* number of glyph indices / character code per node */ +#define FTC_CMAP_INDICES_MAX 128 + + + typedef struct FTC_CMapNodeRec_ + { + FTC_NodeRec node; + FT_UInt32 first; /* first character in node */ + FT_UInt16 indices[FTC_CMAP_INDICES_MAX]; /* array of glyph indices */ + + } FTC_CMapNodeRec, *FTC_CMapNode; + + +#define FTC_CMAP_NODE( x ) ( (FTC_CMapNode)( x ) ) + + + /* compute node hash value from cmap family and "requested" glyph index */ +#define FTC_CMAP_HASH( cfam, cquery ) \ + ( (cfam)->hash + ( (cquery)->char_code / FTC_CMAP_INDICES_MAX ) ) + + /* if (indices[n] == FTC_CMAP_UNKNOWN), we assume that the corresponding */ + /* glyph indices haven't been queried through FT_Get_Glyph_Index() yet */ +#define FTC_CMAP_UNKNOWN ( (FT_UInt16)-1 ) + + + /* the charmap query */ + typedef struct FTC_CMapQueryRec_ + { + FTC_QueryRec query; + FTC_CMapDesc desc; + FT_UInt32 char_code; + + } FTC_CMapQueryRec, *FTC_CMapQuery; + + +#define FTC_CMAP_QUERY( x ) ( (FTC_CMapQuery)( x ) ) + + + /* the charmap family */ + typedef struct FTC_CMapFamilyRec_ + { + FTC_FamilyRec family; + FT_UInt32 hash; + FTC_CMapDescRec desc; + FT_UInt index; + + } FTC_CMapFamilyRec, *FTC_CMapFamily; + + +#define FTC_CMAP_FAMILY( x ) ( (FTC_CMapFamily)( x ) ) +#define FTC_CMAP_FAMILY_MEMORY( x ) FTC_FAMILY( x )->memory + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CHARMAP NODES *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + /* no need for specific finalizer; we use "ftc_node_done" directly */ + + /* initialize a new cmap node */ + FT_CALLBACK_DEF( FT_Error ) + ftc_cmap_node_init( FTC_CMapNode cnode, + FTC_CMapQuery cquery, + FTC_Cache cache ) + { + FT_UInt32 first; + FT_UInt n; + FT_UNUSED( cache ); + + + first = ( cquery->char_code / FTC_CMAP_INDICES_MAX ) * + FTC_CMAP_INDICES_MAX; + + cnode->first = first; + for ( n = 0; n < FTC_CMAP_INDICES_MAX; n++ ) + cnode->indices[n] = FTC_CMAP_UNKNOWN; + + return 0; + } + + + /* compute the weight of a given cmap node */ + FT_CALLBACK_DEF( FT_ULong ) + ftc_cmap_node_weight( FTC_CMapNode cnode ) + { + FT_UNUSED(cnode); + + return sizeof ( *cnode ); + } + + + /* compare a cmap node to a given query */ + FT_CALLBACK_DEF( FT_Bool ) + ftc_cmap_node_compare( FTC_CMapNode cnode, + FTC_CMapQuery cquery ) + { + FT_UInt32 offset = (FT_UInt32)( cquery->char_code - cnode->first ); + + + return FT_BOOL( offset < FTC_CMAP_INDICES_MAX ); + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CHARMAP FAMILY *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + FT_CALLBACK_DEF( FT_Error ) + ftc_cmap_family_init( FTC_CMapFamily cfam, + FTC_CMapQuery cquery, + FTC_Cache cache ) + { + FTC_Manager manager = cache->manager; + FTC_CMapDesc desc = cquery->desc; + FT_UInt32 hash = 0; + FT_Error error; + FT_Face face; + + + /* setup charmap descriptor */ + cfam->desc = *desc; + + /* let's see whether the rest is correct too */ + error = FTC_Manager_Lookup_Face( manager, desc->face_id, &face ); + if ( !error ) + { + FT_UInt count = face->num_charmaps; + FT_UInt index = count; + FT_CharMap* cur = face->charmaps; + + + switch ( desc->type ) + { + case FTC_CMAP_BY_INDEX: + index = desc->u.index; + hash = index * 33; + break; + + case FTC_CMAP_BY_ENCODING: + for ( index = 0; index < count; index++, cur++ ) + if ( cur[0]->encoding == desc->u.encoding ) + break; + + hash = index * 67; + break; + + case FTC_CMAP_BY_ID: + for ( index = 0; index < count; index++, cur++ ) + { + if ( (FT_UInt)cur[0]->platform_id == desc->u.id.platform && + (FT_UInt)cur[0]->encoding_id == desc->u.id.encoding ) + { + hash = ( ( desc->u.id.platform << 8 ) | desc->u.id.encoding ) * 7; + break; + } + } + break; + + default: + ; + } + + if ( index >= count ) + goto Bad_Descriptor; + + /* compute hash value, both in family and query */ + cfam->index = index; + cfam->hash = hash ^ FTC_FACE_ID_HASH( desc->face_id ); + FTC_QUERY( cquery )->hash = FTC_CMAP_HASH( cfam, cquery ); + + error = ftc_family_init( FTC_FAMILY( cfam ), + FTC_QUERY( cquery ), cache ); + } + + return error; + + Bad_Descriptor: + FT_ERROR(( "ftp_cmap_family_init: invalid charmap descriptor\n" )); + return FT_Err_Invalid_Argument; + } + + + FT_CALLBACK_DEF( FT_Bool ) + ftc_cmap_family_compare( FTC_CMapFamily cfam, + FTC_CMapQuery cquery ) + { + FT_Int result = 0; + + + /* first, compare face id and type */ + if ( cfam->desc.face_id != cquery->desc->face_id || + cfam->desc.type != cquery->desc->type ) + goto Exit; + + switch ( cfam->desc.type ) + { + case FTC_CMAP_BY_INDEX: + result = ( cfam->desc.u.index == cquery->desc->u.index ); + break; + + case FTC_CMAP_BY_ENCODING: + result = ( cfam->desc.u.encoding == cquery->desc->u.encoding ); + break; + + case FTC_CMAP_BY_ID: + result = ( cfam->desc.u.id.platform == cquery->desc->u.id.platform && + cfam->desc.u.id.encoding == cquery->desc->u.id.encoding ); + break; + + default: + ; + } + + if ( result ) + { + /* when found, update the 'family' and 'hash' field of the query */ + FTC_QUERY( cquery )->family = FTC_FAMILY( cfam ); + FTC_QUERY( cquery )->hash = FTC_CMAP_HASH( cfam, cquery ); + } + + Exit: + return FT_BOOL( result ); + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** GLYPH IMAGE CACHE *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + FT_CALLBACK_TABLE_DEF + const FTC_Cache_ClassRec ftc_cmap_cache_class = + { + sizeof ( FTC_CacheRec ), + (FTC_Cache_InitFunc) ftc_cache_init, + (FTC_Cache_ClearFunc)ftc_cache_clear, + (FTC_Cache_DoneFunc) ftc_cache_done, + + sizeof ( FTC_CMapFamilyRec ), + (FTC_Family_InitFunc) ftc_cmap_family_init, + (FTC_Family_CompareFunc)ftc_cmap_family_compare, + (FTC_Family_DoneFunc) ftc_family_done, + + sizeof ( FTC_CMapNodeRec ), + (FTC_Node_InitFunc) ftc_cmap_node_init, + (FTC_Node_WeightFunc) ftc_cmap_node_weight, + (FTC_Node_CompareFunc)ftc_cmap_node_compare, + (FTC_Node_DoneFunc) ftc_node_done + }; + + + /* documentation is in ftccmap.h */ + + FT_EXPORT_DEF( FT_Error ) + FTC_CMapCache_New( FTC_Manager manager, + FTC_CMapCache *acache ) + { + return FTC_Manager_Register_Cache( + manager, + (FTC_Cache_Class)&ftc_cmap_cache_class, + FTC_CACHE_P( acache ) ); + } + + + /* documentation is in ftccmap.h */ + + FT_EXPORT_DEF( FT_UInt ) + FTC_CMapCache_Lookup( FTC_CMapCache cache, + FTC_CMapDesc desc, + FT_UInt32 char_code ) + { + FTC_CMapQueryRec cquery; + FTC_CMapNode node; + FT_Error error; + FT_UInt gindex = 0; + + + if ( !cache || !desc ) + { + FT_ERROR(( "FTC_CMapCache_Lookup: bad arguments, returning 0!\n" )); + return 0; + } + + cquery.desc = desc; + cquery.char_code = char_code; + + error = ftc_cache_lookup( FTC_CACHE( cache ), + FTC_QUERY( &cquery ), + (FTC_Node*)&node ); + if ( !error ) + { + FT_UInt offset = (FT_UInt)( char_code - node->first ); + + + gindex = node->indices[offset]; + if ( gindex == FTC_CMAP_UNKNOWN ) + { + FT_Face face; + + + /* we need to use FT_Get_Char_Index */ + gindex = 0; + + error = FTC_Manager_Lookup_Face( FTC_CACHE(cache)->manager, + desc->face_id, + &face ); + if ( !error ) + { + FT_CharMap old, cmap = NULL; + FT_UInt cmap_index; + + + /* save old charmap, select new one */ + old = face->charmap; + cmap_index = FTC_CMAP_FAMILY( FTC_QUERY( &cquery )->family )->index; + cmap = face->charmaps[cmap_index]; + + FT_Set_Charmap( face, cmap ); + + /* perform lookup */ + gindex = FT_Get_Char_Index( face, char_code ); + node->indices[offset] = (FT_UInt16) gindex; + + /* restore old charmap */ + FT_Set_Charmap( face, old ); + } + } + } + + return gindex; + } + + +/* END */ Index: xc/extras/freetype2/src/cache/ftcerror.h diff -u /dev/null xc/extras/freetype2/src/cache/ftcerror.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:52 2002 +++ xc/extras/freetype2/src/cache/ftcerror.h Sun Sep 9 22:56:01 2001 @@ -0,0 +1,40 @@ +/***************************************************************************/ +/* */ +/* ftcerror.h */ +/* */ +/* Caching sub-system error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the caching sub-system error enumeration */ + /* constants. */ + /* */ + /*************************************************************************/ + +#ifndef __FTCERROR_H__ +#define __FTCERROR_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX FTC_Err_ +#define FT_ERR_BASE FT_Mod_Err_Cache + +#include FT_ERRORS_H + +#endif /* __FTCERROR_H__ */ + +/* END */ Index: xc/extras/freetype2/src/cache/ftcglyph.c diff -u xc/extras/freetype2/src/cache/ftcglyph.c:1.1.1.2 xc/extras/freetype2/src/cache/ftcglyph.c:1.1.1.5 --- xc/extras/freetype2/src/cache/ftcglyph.c:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/cache/ftcglyph.c Mon Jan 14 11:52:11 2002 @@ -4,7 +4,7 @@ /* */ /* FreeType Glyph Image (FT_Glyph) cache (body). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -24,447 +24,91 @@ #include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_DEBUG_H +#include "ftcerror.h" - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** GLYPH NODES *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* create a new glyph node, setting its cache index and ref count */ - FT_EXPORT_DEF( void ) FTC_GlyphNode_Init( FTC_GlyphNode node, - FTC_GlyphSet gset, - FT_UInt gindex ) + /* create a new chunk node, setting its cache index and ref count */ + FT_EXPORT_DEF( void ) + ftc_glyph_node_init( FTC_GlyphNode gnode, + FT_UInt gindex, + FTC_GlyphFamily gfam ) { - FTC_Glyph_Cache cache = gset->cache; - FTC_CacheNode_Data* data = FTC_CACHENODE_TO_DATA_P( &node->root ); - - - data->cache_index = (FT_UShort)cache->root.cache_index; - data->ref_count = (FT_Short) 0; - node->gset_index = (FT_UShort)gset->gset_index; - node->glyph_index = (FT_UShort)gindex; - } - - - /* Important: This function is called from the cache manager to */ - /* destroy a given cache node during `cache compression'. The */ - /* second argument is always `cache.cache_data'. Thus be */ - /* certain that the function FTC_Glyph_Cache_New() does indeed */ - /* set its `cache_data' field correctly, otherwise bad things */ - /* will happen! */ - - FT_EXPORT_DEF( void ) FTC_GlyphNode_Destroy( FTC_GlyphNode node, - FTC_Glyph_Cache cache ) - { - FT_LruNode gset_lru = cache->gsets_lru->nodes + node->gset_index; - FTC_GlyphSet gset = (FTC_GlyphSet)gset_lru->root.data; - FT_UInt hash = node->glyph_index % gset->hash_size; - - - /* remove the node from its gset's bucket list */ - { - FTC_GlyphNode* pnode = gset->buckets + hash; - FTC_GlyphNode cur; + FT_UInt len; + FT_UInt start = FTC_GLYPH_FAMILY_START( gfam, gindex ); - for (;;) - { - cur = *pnode; - if ( !cur ) - { - /* this should never happen */ - FT_ERROR(( "FTC_GlyphNode_Destroy:" - " trying to delete an unlisted node!" )); - return; - } - - if ( cur == node ) - { - *pnode = cur->gset_next; - break; - } - pnode = &cur->gset_next; - } - } - - /* destroy the node */ - gset->clazz->destroy_node( node, gset ); - } + gnode->item_start = (FT_UShort)start; + len = gfam->item_total - start; + if ( len > gfam->item_count ) + len = gfam->item_count; - /* Important: This function is called from the cache manager to */ - /* size a given cache node during `cache compression'. The */ - /* second argument is always `cache.user_data'. Thus be */ - /* certain that the function FTC_Glyph_Cache_New() does indeed */ - /* set its `user_data' field correctly, otherwise bad things */ - /* will happen! */ - - FT_EXPORT_DEF( FT_ULong ) FTC_GlyphNode_Size( FTC_GlyphNode node, - FTC_Glyph_Cache cache ) - { - FT_LruNode gset_lru = cache->gsets_lru->nodes + node->gset_index; - FTC_GlyphSet gset = (FTC_GlyphSet)gset_lru->root.data; - - - return gset->clazz->size_node( node, gset ); + gnode->item_count = (FT_UShort)len; + gfam->family.num_nodes++; } - FT_CALLBACK_TABLE_DEF - const FTC_CacheNode_Class ftc_glyph_cache_node_class = + FT_EXPORT_DEF( void ) + ftc_glyph_node_done( FTC_GlyphNode gnode, + FTC_Cache cache ) { - (FTC_CacheNode_SizeFunc) FTC_GlyphNode_Size, - (FTC_CacheNode_DestroyFunc)FTC_GlyphNode_Destroy - }; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** GLYPH SETS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_EXPORT_DEF( FT_Error ) FTC_GlyphSet_New( FTC_Glyph_Cache cache, - FT_Pointer type, - FTC_GlyphSet *aset ) - { - FT_Error error; - FT_Memory memory = cache->root.memory; - FTC_Manager manager = cache->root.manager; - FTC_GlyphSet gset = 0; - - FTC_Glyph_Cache_Class* gcache_class; - FTC_GlyphSet_Class* clazz; - - - gcache_class = (FTC_Glyph_Cache_Class*)cache->root.clazz; - clazz = gcache_class->gset_class; - - *aset = 0; - - if ( ALLOC( gset, clazz->gset_byte_size ) ) - goto Exit; - - gset->cache = cache; - gset->manager = manager; - gset->memory = memory; - gset->hash_size = FTC_GSET_HASH_SIZE_DEFAULT; - gset->clazz = clazz; - - /* allocate buckets table */ - if ( ALLOC_ARRAY( gset->buckets, gset->hash_size, FTC_GlyphNode ) ) - goto Exit; - - /* initialize gset by type if needed */ - if ( clazz->init ) - { - error = clazz->init( gset, type ); - if ( error ) - goto Exit; - } - - *aset = gset; - - Exit: - if ( error && gset ) - { - FREE( gset->buckets ); - FREE( gset ); - } - - return error; - } - - - FT_EXPORT_DEF( void ) FTC_GlyphSet_Destroy( FTC_GlyphSet gset ) - { - FTC_Glyph_Cache cache = gset->cache; - FTC_Manager manager = cache->root.manager; - FT_List glyphs_lru = &manager->global_lru; - FTC_GlyphNode* bucket = gset->buckets; - FTC_GlyphNode* bucket_limit = bucket + gset->hash_size; - FT_Memory memory = cache->root.memory; - - FTC_GlyphSet_Class* clazz = gset->clazz; - - - /* for each bucket, free the list of glyph nodes */ - for ( ; bucket < bucket_limit; bucket++ ) - { - FTC_GlyphNode node = bucket[0]; - FTC_GlyphNode next = 0; - FT_ListNode lrunode; - - - for ( ; node; node = next ) - { - next = node->gset_next; - lrunode = FTC_GLYPHNODE_TO_LRUNODE( node ); - - manager->num_bytes -= clazz->size_node( node, gset ); - manager->num_nodes--; - - FT_List_Remove( glyphs_lru, lrunode ); - - clazz->destroy_node( node, gset ); - } - - bucket[0] = 0; - } - - if ( clazz->done ) - clazz->done( gset ); + /* finalize the node */ + gnode->item_count = 0; + gnode->item_start = 0; - FREE( gset->buckets ); - FREE( gset ); + ftc_node_done( FTC_NODE( gnode ), cache ); } - FT_EXPORT_DEF( FT_Error ) FTC_GlyphSet_Lookup_Node( - FTC_GlyphSet gset, - FT_UInt glyph_index, - FTC_GlyphNode *anode ) + FT_EXPORT_DEF( FT_Bool ) + ftc_glyph_node_compare( FTC_GlyphNode gnode, + FTC_GlyphQuery gquery ) { - FTC_Glyph_Cache cache = gset->cache; - FTC_Manager manager = cache->root.manager; - FT_UInt hash_index = glyph_index % gset->hash_size; - FTC_GlyphNode* bucket = gset->buckets + hash_index; - FTC_GlyphNode* pnode = bucket; - FTC_GlyphNode node; - FT_Error error; + FT_UInt start = (FT_UInt)gnode->item_start; + FT_UInt count = (FT_UInt)gnode->item_count; - FTC_GlyphSet_Class* clazz = gset->clazz; - - - *anode = 0; - - for ( ;; ) - { - node = *pnode; - if ( !node ) - break; - - if ( (FT_UInt)node->glyph_index == glyph_index ) - { - /* we found it! -- move glyph to start of the lists */ - *pnode = node->gset_next; - node->gset_next = bucket[0]; - bucket[0] = node; - - FT_List_Up( &manager->global_lru, FTC_GLYPHNODE_TO_LRUNODE( node ) ); - *anode = node; - return 0; - } - /* go to next node in bucket */ - pnode = &node->gset_next; - } - - /* we didn't found the glyph image, we will now create a new one */ - error = clazz->new_node( gset, glyph_index, &node ); - if ( error ) - goto Exit; - - /* insert the node at the start of our bucket list */ - node->gset_next = bucket[0]; - bucket[0] = node; - - /* insert the node at the start the global LRU glyph list */ - FT_List_Insert( &manager->global_lru, FTC_GLYPHNODE_TO_LRUNODE( node ) ); - - manager->num_bytes += clazz->size_node( node, gset ); - manager->num_nodes++; - - if ( manager->num_bytes > manager->max_bytes ) - { - FTC_GlyphNode_Ref ( node ); - FTC_Manager_Compress( manager ); - FTC_GlyphNode_Unref ( node ); - } - - *anode = node; - - Exit: - return error; + return FT_BOOL( (FT_UInt)( gquery->gindex - start ) < count ); } /*************************************************************************/ /*************************************************************************/ /***** *****/ - /***** GLYPH SETS LRU CALLBACKS *****/ + /***** CHUNK SETS *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ - -#define FTC_GSET_LRU_GET_CACHE( lru ) \ - ( (FTC_Glyph_Cache)(lru)->user_data ) - -#define FTC_GSET_LRU_GET_MANAGER( lru ) \ - FTC_GSET_LRU_GET_CACHE( lru )->manager - -#define FTC_LRUNODE_GSET( node ) \ - ( (FTC_GlyphSet)(node)->root.data ) - - FT_CALLBACK_DEF - FT_Error ftc_glyph_set_lru_init( FT_Lru lru, - FT_LruNode node ) + FT_EXPORT_DEF( FT_Error ) + ftc_glyph_family_init( FTC_GlyphFamily gfam, + FT_UInt32 hash, + FT_UInt item_count, + FT_UInt item_total, + FTC_GlyphQuery gquery, + FTC_Cache cache ) { - FTC_Glyph_Cache cache = FTC_GSET_LRU_GET_CACHE( lru ); - FT_Error error; - FTC_GlyphSet gset; + FT_Error error; - error = FTC_GlyphSet_New( cache, (FT_Pointer)node->key, &gset ); + error = ftc_family_init( FTC_FAMILY( gfam ), FTC_QUERY( gquery ), cache ); if ( !error ) { - /* good, now set the gset index within the gset object */ - gset->gset_index = (FT_UInt)( node - lru->nodes ); - node->root.data = gset; + gfam->hash = hash; + gfam->item_total = item_total; + gfam->item_count = item_count; + + FTC_GLYPH_FAMILY_FOUND( gfam, gquery ); } return error; } - FT_CALLBACK_DEF - void ftc_glyph_set_lru_done( FT_Lru lru, - FT_LruNode node ) + FT_EXPORT_DEF( void ) + ftc_glyph_family_done( FTC_GlyphFamily gfam ) { - FTC_GlyphSet gset = FTC_LRUNODE_GSET( node ); - - FT_UNUSED( lru ); - - - FTC_GlyphSet_Destroy( gset ); - } - - - FT_CALLBACK_DEF - FT_Bool ftc_glyph_set_lru_compare( FT_LruNode node, - FT_LruKey key ) - { - FTC_GlyphSet gset = FTC_LRUNODE_GSET( node ); - - - return gset->clazz->compare( gset, (FT_Pointer)key ); - } - - - FT_CALLBACK_TABLE_DEF - const FT_Lru_Class ftc_glyph_set_lru_class = - { - sizeof( FT_LruRec ), - ftc_glyph_set_lru_init, - ftc_glyph_set_lru_done, - 0, /* no flush */ - ftc_glyph_set_lru_compare - }; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** GLYPH CACHE OBJECTS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_EXPORT_DEF( FT_Error ) FTC_Glyph_Cache_Init( FTC_Glyph_Cache cache ) - { - FT_Memory memory = cache->root.memory; - FT_Error error; - - FTC_Glyph_Cache_Class* gcache_clazz; - - - /* set up root node_class to be used by manager */ - cache->root.node_clazz = - (FTC_CacheNode_Class*)&ftc_glyph_cache_node_class; - - /* setup the `compare' shortcut */ - gcache_clazz = (FTC_Glyph_Cache_Class*)cache->root.clazz; - cache->compare = gcache_clazz->gset_class->compare; - - /* The following is extremely important for ftc_destroy_glyph_image() */ - /* to work properly, as the second parameter that is sent to it */ - /* through the cache manager is `cache_data' and must be set to */ - /* `cache' here. */ - /* */ - cache->root.cache_data = cache; - - error = FT_Lru_New( &ftc_glyph_set_lru_class, - FTC_MAX_GLYPH_SETS, - cache, - memory, - 1, /* pre_alloc == TRUE */ - &cache->gsets_lru ); - return error; - } - - - FT_EXPORT_DEF( void ) FTC_Glyph_Cache_Done( FTC_Glyph_Cache cache ) - { - /* discard glyph sets */ - FT_Lru_Done( cache->gsets_lru ); - } - - - FT_EXPORT_DEF( FT_Error ) FTC_Glyph_Cache_Lookup( FTC_Glyph_Cache cache, - FT_Pointer type, - FT_UInt gindex, - FTC_GlyphNode *anode ) - { - FT_Error error; - FTC_GlyphSet gset; - FTC_GlyphNode node; - FTC_Manager manager; - - - /* check for valid `desc' delayed to FT_Lru_Lookup() */ - - if ( !cache || !anode ) - return FT_Err_Invalid_Argument; - - *anode = 0; - gset = cache->last_gset; - - if ( !gset || !cache->compare( gset, type ) ) - { - error = FT_Lru_Lookup( cache->gsets_lru, - (FT_LruKey)type, - (FT_Pointer*)&gset ); - cache->last_gset = gset; - if ( error ) - goto Exit; - } - - error = FTC_GlyphSet_Lookup_Node( gset, gindex, &node ); - if ( error ) - goto Exit; - - /* now compress the manager's cache pool if needed */ - manager = cache->root.manager; - if ( manager->num_bytes > manager->max_bytes ) - { - FTC_GlyphNode_Ref ( node ); - FTC_Manager_Compress( manager ); - FTC_GlyphNode_Unref ( node ); - } - - *anode = node; - - Exit: - return error; + ftc_family_done( FTC_FAMILY( gfam ) ); } Index: xc/extras/freetype2/src/cache/ftcimage.c diff -u xc/extras/freetype2/src/cache/ftcimage.c:1.1.1.2 xc/extras/freetype2/src/cache/ftcimage.c:1.1.1.5 --- xc/extras/freetype2/src/cache/ftcimage.c:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/cache/ftcimage.c Mon Jan 14 11:52:11 2002 @@ -4,7 +4,7 @@ /* */ /* FreeType Image cache (body). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -19,36 +19,51 @@ #include <ft2build.h> #include FT_CACHE_H #include FT_CACHE_IMAGE_H +#include FT_CACHE_INTERNAL_GLYPH_H #include FT_INTERNAL_MEMORY_H +#include "ftcerror.h" + #include <string.h> /* memcmp() */ #include <stdlib.h> /* labs() */ - /* the FT_Glyph image `glyph node' type */ - typedef struct FTC_GlyphImageRec_ + /* the FT_Glyph image node type */ + typedef struct FTC_ImageNodeRec_ { - FTC_GlyphNodeRec root; - FT_Glyph ft_glyph; + FTC_GlyphNodeRec gnode; + FT_Glyph glyph; + + } FTC_ImageNodeRec, *FTC_ImageNode; - } FTC_GlyphImageRec, *FTC_GlyphImage; +#define FTC_IMAGE_NODE( x ) ( (FTC_ImageNode)( x ) ) +#define FTC_IMAGE_NODE_GINDEX( x ) FTC_GLYPH_NODE_GINDEX( x ) - /* the glyph image queue type */ - typedef struct FTC_ImageSetRec_ + + /* the glyph image query */ + typedef struct FTC_ImageQueryRec_ { - FTC_GlyphSetRec root; - FTC_Image_Desc description; + FTC_GlyphQueryRec gquery; + FTC_ImageDesc desc; + + } FTC_ImageQueryRec, *FTC_ImageQuery; - } FTC_ImageSetRec, *FTC_ImageSet; +#define FTC_IMAGE_QUERY( x ) ( (FTC_ImageQuery)( x ) ) - typedef struct FTC_Image_CacheRec_ + + /* the glyph image set type */ + typedef struct FTC_ImageFamilyRec_ { - FTC_Glyph_CacheRec root; + FTC_GlyphFamilyRec gfam; + FTC_ImageDesc desc; + + } FTC_ImageFamilyRec, *FTC_ImageFamily; - } FTC_Image_CacheRec; +#define FTC_IMAGE_FAMILY( x ) ( (FTC_ImageFamily)( x ) ) +#define FTC_IMAGE_FAMILY_MEMORY( x ) FTC_GLYPH_FAMILY_MEMORY( &(x)->gfam ) /*************************************************************************/ @@ -60,72 +75,72 @@ /*************************************************************************/ - FT_CALLBACK_DEF - void ftc_glyph_image_node_destroy( FTC_GlyphImage node, - FTC_GlyphSet gset ) + /* finalize a given glyph image node */ + FT_CALLBACK_DEF( void ) + ftc_image_node_done( FTC_ImageNode inode, + FTC_Cache cache ) { - FT_Memory memory = gset->memory; - + if ( inode->glyph ) + { + FT_Done_Glyph( inode->glyph ); + inode->glyph = NULL; + } - FT_Done_Glyph( node->ft_glyph ); - FREE( node ); + ftc_glyph_node_done( FTC_GLYPH_NODE( inode ), cache ); } + + /* initialize a new glyph image node */ + FT_CALLBACK_DEF( FT_Error ) + ftc_image_node_init( FTC_ImageNode inode, + FTC_GlyphQuery gquery, + FTC_Cache cache ) + { + FTC_ImageFamily ifam = FTC_IMAGE_FAMILY( gquery->query.family ); + FT_Error error; + FT_Face face; + FT_Size size; - FT_CALLBACK_DEF - FT_Error ftc_glyph_image_node_new( FTC_GlyphSet gset, - FT_UInt glyph_index, - FTC_GlyphImage *anode ) - { - FT_Memory memory = gset->memory; - FTC_ImageSet imageset = (FTC_ImageSet)gset; - FT_Error error; - FTC_GlyphImage node = 0; - FT_Face face; - FT_Size size; - - - /* allocate node */ - if ( ALLOC( node, sizeof ( *node ) ) ) - goto Exit; /* initialize its inner fields */ - FTC_GlyphNode_Init( FTC_GLYPHNODE( node ), gset, glyph_index ); + ftc_glyph_node_init( FTC_GLYPH_NODE( inode ), + gquery->gindex, + FTC_GLYPH_FAMILY( ifam ) ); /* we will now load the glyph image */ - error = FTC_Manager_Lookup_Size( gset->manager, - &imageset->description.font, + error = FTC_Manager_Lookup_Size( FTC_FAMILY( ifam )->cache->manager, + &ifam->desc.font, &face, &size ); if ( !error ) { - FT_UInt gindex = node->root.glyph_index; - FT_UInt load_flags = FT_LOAD_DEFAULT; - FT_UInt image_type = imageset->description.image_type; + FT_UInt gindex = FTC_GLYPH_NODE_GINDEX( inode ); + FT_UInt load_flags = FT_LOAD_DEFAULT; + FT_UInt type = ifam->desc.type; - if ( FTC_IMAGE_FORMAT( image_type ) == ftc_image_format_bitmap ) + if ( FTC_IMAGE_FORMAT( type ) == ftc_image_format_bitmap ) { load_flags |= FT_LOAD_RENDER; - if ( image_type & ftc_image_flag_monochrome ) + if ( type & ftc_image_flag_monochrome ) load_flags |= FT_LOAD_MONOCHROME; /* disable embedded bitmaps loading if necessary */ - if ( image_type & ftc_image_flag_no_sbits ) + if ( type & ftc_image_flag_no_sbits ) load_flags |= FT_LOAD_NO_BITMAP; } - else if ( FTC_IMAGE_FORMAT( image_type ) == ftc_image_format_outline ) + else if ( FTC_IMAGE_FORMAT( type ) == ftc_image_format_outline ) { /* disable embedded bitmaps loading */ load_flags |= FT_LOAD_NO_BITMAP; - if ( image_type & ftc_image_flag_unscaled ) + if ( type & ftc_image_flag_unscaled ) load_flags |= FT_LOAD_NO_SCALE; } - if ( image_type & ftc_image_flag_unhinted ) + if ( type & ftc_image_flag_unhinted ) load_flags |= FT_LOAD_NO_HINTING; - if ( image_type & ftc_image_flag_autohinted ) + if ( type & ftc_image_flag_autohinted ) load_flags |= FT_LOAD_FORCE_AUTOHINT; error = FT_Load_Glyph( face, gindex, load_flags ); @@ -140,30 +155,29 @@ error = FT_Get_Glyph( face->glyph, &glyph ); if ( !error ) - node->ft_glyph = glyph; + { + inode->glyph = glyph; + goto Exit; + } } else - error = FT_Err_Invalid_Argument; + error = FTC_Err_Invalid_Argument; } } - Exit: - if ( error && node ) - FREE( node ); + /* in case of error */ + ftc_glyph_node_done( FTC_GLYPH_NODE(inode), cache ); - *anode = node; + Exit: return error; } - /* this function is important because it is both part of */ - /* an FTC_GlyphSet_Class and an FTC_CacheNode_Class */ - /* */ - FT_CALLBACK_DEF - FT_ULong ftc_glyph_image_node_size( FTC_GlyphImage node ) + FT_CALLBACK_DEF( FT_ULong ) + ftc_image_node_weight( FTC_ImageNode inode ) { FT_ULong size = 0; - FT_Glyph glyph = node->ft_glyph; + FT_Glyph glyph = inode->glyph; switch ( glyph->format ) @@ -186,7 +200,7 @@ outg = (FT_OutlineGlyph)glyph; size = outg->outline.n_points * - ( sizeof( FT_Vector ) + sizeof ( FT_Byte ) ) + + ( sizeof ( FT_Vector ) + sizeof ( FT_Byte ) ) + outg->outline.n_contours * sizeof ( FT_Short ) + sizeof ( *outg ); } @@ -196,7 +210,7 @@ ; } - size += sizeof ( *node ); + size += sizeof ( *inode ); return size; } @@ -209,37 +223,50 @@ /*************************************************************************/ /*************************************************************************/ - - FT_CALLBACK_DEF - FT_Error ftc_image_set_init( FTC_ImageSet iset, - FTC_Image_Desc* type ) - { - iset->description = *type; - return 0; - } + FT_CALLBACK_DEF( FT_Error ) + ftc_image_family_init( FTC_ImageFamily ifam, + FTC_ImageQuery iquery, + FTC_Cache cache ) + { + FTC_Manager manager = cache->manager; + FT_Error error; + FT_Face face; + + + ifam->desc = iquery->desc; + + /* we need to compute "iquery.item_total" now */ + error = FTC_Manager_Lookup_Face( manager, + iquery->desc.font.face_id, + &face ); + if ( !error ) + { + error = ftc_glyph_family_init( FTC_GLYPH_FAMILY( ifam ), + FTC_IMAGE_DESC_HASH( &ifam->desc ), + 1, + face->num_glyphs, + FTC_GLYPH_QUERY( iquery ), + cache ); + } - FT_CALLBACK_DEF - FT_Bool ftc_image_set_compare( FTC_ImageSet iset, - FTC_Image_Desc* type ) - { - return !memcmp( &iset->description, type, sizeof ( *type ) ); + return error; } - FT_CALLBACK_TABLE_DEF - const FTC_GlyphSet_Class ftc_glyph_image_set_class = + FT_CALLBACK_DEF( FT_Bool ) + ftc_image_family_compare( FTC_ImageFamily ifam, + FTC_ImageQuery iquery ) { - sizeof( FTC_ImageSetRec ), + FT_Bool result; - (FTC_GlyphSet_InitFunc) ftc_image_set_init, - (FTC_GlyphSet_DoneFunc) 0, - (FTC_GlyphSet_CompareFunc) ftc_image_set_compare, - (FTC_GlyphSet_NewNodeFunc) ftc_glyph_image_node_new, - (FTC_GlyphSet_SizeNodeFunc) ftc_glyph_image_node_size, - (FTC_GlyphSet_DestroyNodeFunc)ftc_glyph_image_node_destroy - }; + result = FT_BOOL( FTC_IMAGE_DESC_COMPARE( &ifam->desc, &iquery->desc ) ); + if ( result ) + FTC_GLYPH_FAMILY_FOUND( ifam, iquery ); + + return result; + } /*************************************************************************/ @@ -251,48 +278,115 @@ /*************************************************************************/ + FT_CALLBACK_TABLE_DEF - const FTC_Glyph_Cache_Class ftc_glyph_image_cache_class = + const FTC_Cache_ClassRec ftc_image_cache_class = { - { - sizeof( FTC_Image_CacheRec ), - (FTC_Cache_InitFunc) FTC_Glyph_Cache_Init, - (FTC_Cache_DoneFunc) FTC_Glyph_Cache_Done - }, - (FTC_GlyphSet_Class*) &ftc_glyph_image_set_class + sizeof ( FTC_CacheRec ), + (FTC_Cache_InitFunc) ftc_cache_init, + (FTC_Cache_ClearFunc)ftc_cache_clear, + (FTC_Cache_DoneFunc) ftc_cache_done, + + sizeof ( FTC_ImageFamilyRec ), + (FTC_Family_InitFunc) ftc_image_family_init, + (FTC_Family_CompareFunc)ftc_image_family_compare, + (FTC_Family_DoneFunc) ftc_glyph_family_done, + + sizeof ( FTC_ImageNodeRec ), + (FTC_Node_InitFunc) ftc_image_node_init, + (FTC_Node_WeightFunc) ftc_image_node_weight, + (FTC_Node_CompareFunc)ftc_glyph_node_compare, + (FTC_Node_DoneFunc) ftc_image_node_done }; - FT_EXPORT_DEF( FT_Error ) FTC_Image_Cache_New( FTC_Manager manager, - FTC_Image_Cache *acache ) + /* documentation is in ftcimage.h */ + + FT_EXPORT_DEF( FT_Error ) + FTC_ImageCache_New( FTC_Manager manager, + FTC_ImageCache *acache ) { return FTC_Manager_Register_Cache( manager, - (FTC_Cache_Class*)&ftc_glyph_image_cache_class, - (FTC_Cache*)acache ); + (FTC_Cache_Class)&ftc_image_cache_class, + FTC_CACHE_P( acache ) ); } + + /* documentation is in ftcimage.h */ - FT_EXPORT_DEF( FT_Error ) FTC_Image_Cache_Lookup( FTC_Image_Cache cache, - FTC_Image_Desc* desc, - FT_UInt gindex, - FT_Glyph *aglyph ) + FT_EXPORT_DEF( FT_Error ) + FTC_ImageCache_Lookup( FTC_ImageCache cache, + FTC_ImageDesc* desc, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ) { - FT_Error error; - FTC_GlyphNode node; + FTC_ImageQueryRec iquery; + FTC_ImageNode node; + FT_Error error; - /* some argument checks are delayed to FTC_Glyph_Cache_Lookup */ - if (!aglyph) - return FT_Err_Invalid_Argument; + /* some argument checks are delayed to ftc_glyph_cache_lookup */ + if ( aglyph ) + *aglyph = NULL; + + *aglyph = NULL; - error = FTC_Glyph_Cache_Lookup( (FTC_Glyph_Cache)cache, - desc, gindex, &node ); - - if (!error) - *aglyph = ((FTC_GlyphImage)node)->ft_glyph; + if ( anode ) + *anode = NULL; + iquery.gquery.gindex = gindex; + iquery.desc = *desc; + + error = ftc_cache_lookup( FTC_CACHE( cache ), + FTC_QUERY( &iquery ), + (FTC_Node*)&node ); + if ( !error ) + { + *aglyph = node->glyph; + + if ( anode ) + { + *anode = (FTC_Node)node; + FTC_NODE( node )->ref_count++; + } + } + return error; + } + + + /* backwards-compatibility functions */ + + FT_EXPORT_DEF( FT_Error ) + FTC_Image_Cache_New( FTC_Manager manager, + FTC_Image_Cache *acache ) + { + return FTC_ImageCache_New( manager, (FTC_ImageCache*)acache ); + } + + + FT_EXPORT_DEF( FT_Error ) + FTC_Image_Cache_Lookup( FTC_Image_Cache icache, + FTC_Image_Desc* desc, + FT_UInt gindex, + FT_Glyph *aglyph ) + { + FTC_ImageDesc desc0; + + + if ( !desc ) + return FT_Err_Invalid_Argument; + + desc0.font = desc->font; + desc0.type = (FT_UInt32)desc->image_type; + + return FTC_ImageCache_Lookup( (FTC_ImageCache)icache, + &desc0, + gindex, + aglyph, + NULL ); } Index: xc/extras/freetype2/src/cache/ftcmanag.c diff -u xc/extras/freetype2/src/cache/ftcmanag.c:1.1.1.2 xc/extras/freetype2/src/cache/ftcmanag.c:1.1.1.5 --- xc/extras/freetype2/src/cache/ftcmanag.c:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/cache/ftcmanag.c Mon Jan 14 11:52:11 2002 @@ -4,7 +4,7 @@ /* */ /* FreeType Cache Manager (body). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -19,212 +19,448 @@ #include <ft2build.h> #include FT_CACHE_H #include FT_CACHE_MANAGER_H +#include FT_CACHE_INTERNAL_LRU_H #include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_DEBUG_H -#include FT_LIST_H +#include FT_SIZES_H +#include "ftcerror.h" + #undef FT_COMPONENT #define FT_COMPONENT trace_cache -#define FTC_LRU_GET_MANAGER( lru ) (FTC_Manager)lru->user_data +#define FTC_LRU_GET_MANAGER( lru ) ( (FTC_Manager)(lru)->user_data ) /*************************************************************************/ /*************************************************************************/ /***** *****/ - /***** FACE & SIZE LRU CALLBACKS *****/ + /***** FACE LRU IMPLEMENTATION *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ + typedef struct FTC_FaceNodeRec_* FTC_FaceNode; + typedef struct FTC_SizeNodeRec_* FTC_SizeNode; + - FT_CALLBACK_DEF - FT_Error ftc_manager_init_face( FT_Lru lru, - FT_LruNode node ) + typedef struct FTC_FaceNodeRec_ { - FTC_Manager manager = FTC_LRU_GET_MANAGER( lru ); - FT_Error error; - FT_Face face; + FT_LruNodeRec lru; + FT_Face face; + + } FTC_FaceNodeRec; + + + typedef struct FTC_SizeNodeRec_ + { + FT_LruNodeRec lru; + FT_Size size; + } FTC_SizeNodeRec; - error = manager->request_face( (FTC_FaceID)node->key, + + FT_CALLBACK_DEF( FT_Error ) + ftc_face_node_init( FTC_FaceNode node, + FTC_FaceID face_id, + FTC_Manager manager ) + { + FT_Error error; + + + error = manager->request_face( face_id, manager->library, manager->request_data, - (FT_Face*)&node->root.data ); + &node->face ); if ( !error ) { /* destroy initial size object; it will be re-created later */ - face = (FT_Face)node->root.data; - if ( face->size ) - FT_Done_Size( face->size ); + if ( node->face->size ) + FT_Done_Size( node->face->size ); } return error; } - /* helper function for ftc_manager_done_face() */ - FT_CALLBACK_DEF - FT_Bool ftc_manager_size_selector( FT_Lru lru, - FT_LruNode node, - FT_Pointer data ) + /* helper function for ftc_face_node_done() */ + FT_CALLBACK_DEF( FT_Bool ) + ftc_size_node_select( FTC_SizeNode node, + FT_Face face ) { - FT_UNUSED( lru ); - - return ((FT_Size)node->root.data)->face == (FT_Face)data; + return FT_BOOL( node->size->face == face ); } - FT_CALLBACK_DEF - void ftc_manager_done_face( FT_Lru lru, - FT_LruNode node ) + FT_CALLBACK_DEF( void ) + ftc_face_node_done( FTC_FaceNode node, + FTC_Manager manager ) { - FTC_Manager manager = FTC_LRU_GET_MANAGER( lru ); - FT_Face face = (FT_Face)node->root.data; + FT_Face face = node->face; /* we must begin by removing all sizes for the target face */ /* from the manager's list */ - FT_Lru_Remove_Selection( manager->sizes_lru, - ftc_manager_size_selector, - face ); + FT_LruList_Remove_Selection( manager->sizes_list, + (FT_LruNode_SelectFunc)ftc_size_node_select, + face ); /* all right, we can discard the face now */ FT_Done_Face( face ); - node->root.data = 0; + node->face = NULL; } + + FT_CALLBACK_TABLE_DEF + const FT_LruList_ClassRec ftc_face_list_class = + { + sizeof ( FT_LruListRec ), + (FT_LruList_InitFunc)0, + (FT_LruList_DoneFunc)0, + + sizeof ( FTC_FaceNodeRec ), + (FT_LruNode_InitFunc) ftc_face_node_init, + (FT_LruNode_DoneFunc) ftc_face_node_done, + (FT_LruNode_FlushFunc) 0, /* no flushing needed */ + (FT_LruNode_CompareFunc)0, /* direct comparison of FTC_FaceID handles */ + }; + - typedef struct FTC_FontRequest_ + /* documentation is in ftcache.h */ + + FT_EXPORT_DEF( FT_Error ) + FTC_Manager_Lookup_Face( FTC_Manager manager, + FTC_FaceID face_id, + FT_Face *aface ) { - FT_Face face; - FT_UShort width; - FT_UShort height; + FT_Error error; + FTC_FaceNode node; + + + if ( aface == NULL ) + return FTC_Err_Bad_Argument; + + *aface = NULL; + + if ( !manager ) + return FTC_Err_Invalid_Cache_Handle; + + error = FT_LruList_Lookup( manager->faces_list, + (FT_LruKey)face_id, + (FT_LruNode*)&node ); + if ( !error ) + *aface = node->face; + + return error; + } - } FTC_FontRequest; + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** SIZES LRU IMPLEMENTATION *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + - FT_CALLBACK_DEF - FT_Error ftc_manager_init_size( FT_Lru lru, - FT_LruNode node ) + typedef struct FTC_SizeQueryRec_ { - FTC_FontRequest* font_req = (FTC_FontRequest*)node->key; - FT_Size size; - FT_Error error; - FT_Face face = font_req->face; + FT_Face face; + FT_UInt width; + FT_UInt height; + + } FTC_SizeQueryRec, *FTC_SizeQuery; - FT_UNUSED( lru ); + FT_CALLBACK_DEF( FT_Error ) + ftc_size_node_init( FTC_SizeNode node, + FTC_SizeQuery query ) + { + FT_Face face = query->face; + FT_Size size; + FT_Error error; + - node->root.data = 0; + node->size = NULL; error = FT_New_Size( face, &size ); if ( !error ) { - face->size = size; - error = FT_Set_Pixel_Sizes( face, - font_req->width, - font_req->height ); + FT_Activate_Size( size ); + error = FT_Set_Pixel_Sizes( query->face, + query->width, + query->height ); if ( error ) FT_Done_Size( size ); else - node->root.data = size; + node->size = size; } return error; } - FT_CALLBACK_DEF - void ftc_manager_done_size( FT_Lru lru, - FT_LruNode node ) + FT_CALLBACK_DEF( void ) + ftc_size_node_done( FTC_SizeNode node ) { - FT_UNUSED( lru ); - - FT_Done_Size( (FT_Size)node->root.data ); - node->root.data = 0; + if ( node->size ) + { + FT_Done_Size( node->size ); + node->size = NULL; + } } - FT_CALLBACK_DEF - FT_Error ftc_manager_flush_size( FT_Lru lru, - FT_LruNode node, - FT_LruKey key ) + FT_CALLBACK_DEF( FT_Error ) + ftc_size_node_flush( FTC_SizeNode node, + FTC_SizeQuery query ) { - FTC_FontRequest* req = (FTC_FontRequest*)key; - FT_Size size = (FT_Size)node->root.data; - FT_Error error; + FT_Size size = node->size; + FT_Error error; - if ( size->face == req->face ) + if ( size->face == query->face ) { - size->face->size = size; /* set current size */ - error = FT_Set_Pixel_Sizes( req->face, req->width, req->height ); + FT_Activate_Size( size ); + error = FT_Set_Pixel_Sizes( query->face, query->width, query->height ); if ( error ) + { FT_Done_Size( size ); + node->size = NULL; + } } else { FT_Done_Size( size ); - node->key = key; - error = ftc_manager_init_size( lru, node ); + node->size = NULL; + + error = ftc_size_node_init( node, query ); } return error; } - FT_CALLBACK_DEF - FT_Bool ftc_manager_compare_size( FT_LruNode node, - FT_LruKey key ) + FT_CALLBACK_DEF( FT_Bool ) + ftc_size_node_compare( FTC_SizeNode node, + FTC_SizeQuery query ) { - FTC_FontRequest* req = (FTC_FontRequest*)key; - FT_Size size = (FT_Size)node->root.data; - - FT_UNUSED( node ); + FT_Size size = node->size; - return ( size->face == req->face && - size->metrics.x_ppem == req->width && - size->metrics.y_ppem == req->height ); + return FT_BOOL( size->face == query->face && + (FT_UInt)size->metrics.x_ppem == query->width && + (FT_UInt)size->metrics.y_ppem == query->height ); } FT_CALLBACK_TABLE_DEF - const FT_Lru_Class ftc_face_lru_class = + const FT_LruList_ClassRec ftc_size_list_class = { - sizeof ( FT_LruRec ), - ftc_manager_init_face, - ftc_manager_done_face, - 0, - 0 + sizeof ( FT_LruListRec ), + (FT_LruList_InitFunc)0, + (FT_LruList_DoneFunc)0, + + sizeof ( FTC_SizeNodeRec ), + (FT_LruNode_InitFunc) ftc_size_node_init, + (FT_LruNode_DoneFunc) ftc_size_node_done, + (FT_LruNode_FlushFunc) ftc_size_node_flush, + (FT_LruNode_CompareFunc)ftc_size_node_compare }; - FT_CALLBACK_TABLE_DEF - const FT_Lru_Class ftc_size_lru_class = + /* documentation is in ftcache.h */ + + FT_EXPORT_DEF( FT_Error ) + FTC_Manager_Lookup_Size( FTC_Manager manager, + FTC_Font font, + FT_Face *aface, + FT_Size *asize ) { - sizeof ( FT_LruRec ), - ftc_manager_init_size, - ftc_manager_done_size, - ftc_manager_flush_size, - ftc_manager_compare_size - }; + FT_Error error; + + + /* check for valid `manager' delayed to FTC_Manager_Lookup_Face() */ + if ( aface ) + *aface = 0; + + if ( asize ) + *asize = 0; + + error = FTC_Manager_Lookup_Face( manager, font->face_id, aface ); + if ( !error ) + { + FTC_SizeQueryRec query; + FTC_SizeNode node; + + + query.face = *aface; + query.width = font->pix_width; + query.height = font->pix_height; + + error = FT_LruList_Lookup( manager->sizes_list, + (FT_LruKey)&query, + (FT_LruNode*)&node ); + if ( !error ) + { + /* select the size as the current one for this face */ + FT_Activate_Size( node->size ); + + if ( asize ) + *asize = node->size; + } + } + + return error; + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** SET TABLE MANAGEMENT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + static void + ftc_family_table_init( FTC_FamilyTable table ) + { + table->count = 0; + table->size = 0; + table->entries = NULL; + table->free = FTC_FAMILY_ENTRY_NONE; + } + - FT_EXPORT_DEF( FT_Error ) FTC_Manager_New( FT_Library library, - FT_UInt max_faces, - FT_UInt max_sizes, - FT_ULong max_bytes, - FTC_Face_Requester requester, - FT_Pointer req_data, - FTC_Manager *amanager ) + static void + ftc_family_table_done( FTC_FamilyTable table, + FT_Memory memory ) { + FREE( table->entries ); + table->free = 0; + table->count = 0; + table->size = 0; + } + + + FT_EXPORT_DEF( FT_Error ) + ftc_family_table_alloc( FTC_FamilyTable table, + FT_Memory memory, + FTC_FamilyEntry *aentry ) + { + FTC_FamilyEntry entry; + FT_Error error = 0; + + + /* re-allocate table size when needed */ + if ( table->free == FTC_FAMILY_ENTRY_NONE && table->count >= table->size ) + { + FT_UInt old_size = table->size; + FT_UInt new_size, index; + + + if ( old_size == 0 ) + new_size = 8; + else + { + new_size = old_size * 2; + + /* check for (unlikely) overflow */ + if ( new_size < old_size ) + new_size = 65534; + } + + if ( REALLOC_ARRAY( table->entries, old_size, new_size, + FTC_FamilyEntryRec ) ) + return error; + + table->size = new_size; + + entry = table->entries + old_size; + table->free = old_size; + + for ( index = old_size; index + 1 < new_size; index++, entry++ ) + { + entry->link = index + 1; + entry->index = index; + } + + entry->link = FTC_FAMILY_ENTRY_NONE; + entry->index = index; + } + + if ( table->free != FTC_FAMILY_ENTRY_NONE ) + { + entry = table->entries + table->free; + table->free = entry->link; + } + else if ( table->count < table->size ) + { + entry = table->entries + table->count++; + } + else + { + FT_ERROR(( "ftc_family_table_alloc: internal bug!" )); + return FT_Err_Invalid_Argument; + } + + entry->link = FTC_FAMILY_ENTRY_NONE; + table->count++; + + *aentry = entry; + return error; + } + + + FT_EXPORT_DEF( void ) + ftc_family_table_free( FTC_FamilyTable table, + FT_UInt index ) + { + /* simply add it to the linked list of free entries */ + if ( index < table->count ) + { + FTC_FamilyEntry entry = table->entries + index; + + + if ( entry->link != FTC_FAMILY_ENTRY_NONE ) + FT_ERROR(( "ftc_family_table_free: internal bug!\n" )); + else + { + entry->link = table->free; + table->free = entry->index; + table->count--; + } + } + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE MANAGER ROUTINES *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + /* documentation is in ftcache.h */ + + FT_EXPORT_DEF( FT_Error ) + FTC_Manager_New( FT_Library library, + FT_UInt max_faces, + FT_UInt max_sizes, + FT_ULong max_bytes, + FTC_Face_Requester requester, + FT_Pointer req_data, + FTC_Manager *amanager ) + { FT_Error error; FT_Memory memory; FTC_Manager manager = 0; if ( !library ) - return FT_Err_Invalid_Library_Handle; + return FTC_Err_Invalid_Library_Handle; memory = library->memory; @@ -240,35 +476,38 @@ if ( max_bytes == 0 ) max_bytes = FTC_MAX_BYTES_DEFAULT; - error = FT_Lru_New( &ftc_face_lru_class, - max_faces, - manager, - memory, - 1, /* pre_alloc = TRUE */ - (FT_Lru*)&manager->faces_lru ); + error = FT_LruList_New( &ftc_face_list_class, + max_faces, + manager, + memory, + &manager->faces_list ); if ( error ) goto Exit; - error = FT_Lru_New( &ftc_size_lru_class, - max_sizes, - manager, - memory, - 1, /* pre_alloc = TRUE */ - (FT_Lru*)&manager->sizes_lru ); + error = FT_LruList_New( &ftc_size_list_class, + max_sizes, + manager, + memory, + &manager->sizes_list ); if ( error ) goto Exit; manager->library = library; - manager->max_bytes = max_bytes; + manager->max_weight = max_bytes; + manager->cur_weight = 0; + manager->request_face = requester; manager->request_data = req_data; + + ftc_family_table_init( &manager->families ); + *amanager = manager; Exit: if ( error && manager ) { - FT_Lru_Done( manager->faces_lru ); - FT_Lru_Done( manager->sizes_lru ); + FT_LruList_Destroy( manager->faces_list ); + FT_LruList_Destroy( manager->sizes_list ); FREE( manager ); } @@ -276,7 +515,10 @@ } - FT_EXPORT_DEF( void ) FTC_Manager_Done( FTC_Manager manager ) + /* documentation is in ftcache.h */ + + FT_EXPORT_DEF( void ) + FTC_Manager_Done( FTC_Manager manager ) { FT_Memory memory; FT_UInt index; @@ -295,159 +537,168 @@ if ( cache ) { - cache->clazz->done_cache( cache ); + cache->clazz->cache_done( cache ); FREE( cache ); manager->caches[index] = 0; } } + /* discard families table */ + ftc_family_table_done( &manager->families, memory ); + /* discard faces and sizes */ - FT_Lru_Done( manager->faces_lru ); - manager->faces_lru = 0; - - FT_Lru_Done( manager->sizes_lru ); - manager->sizes_lru = 0; + FT_LruList_Destroy( manager->faces_list ); + manager->faces_list = 0; + + FT_LruList_Destroy( manager->sizes_list ); + manager->sizes_list = 0; FREE( manager ); } - FT_EXPORT_DEF( void ) FTC_Manager_Reset( FTC_Manager manager ) + /* documentation is in ftcache.h */ + + FT_EXPORT_DEF( void ) + FTC_Manager_Reset( FTC_Manager manager ) { - if (manager ) + if ( manager ) { - FT_Lru_Reset( manager->sizes_lru ); - FT_Lru_Reset( manager->faces_lru ); + FT_LruList_Reset( manager->sizes_list ); + FT_LruList_Reset( manager->faces_list ); } /* XXX: FIXME: flush the caches? */ } + +#ifdef FT_DEBUG_ERROR - FT_EXPORT_DEF( FT_Error ) FTC_Manager_Lookup_Face( FTC_Manager manager, - FTC_FaceID face_id, - FT_Face *aface ) + FT_EXPORT_DEF( void ) + FTC_Manager_Check( FTC_Manager manager ) { - if ( !manager ) - return FT_Err_Invalid_Cache_Handle; + FTC_Node node, first; + - return FT_Lru_Lookup( manager->faces_lru, - (FT_LruKey)face_id, - (FT_Pointer*)aface ); - } + first = manager->nodes_list; + /* check node weights */ + if ( first ) + { + FT_ULong weight = 0; + - FT_EXPORT_DEF( FT_Error ) FTC_Manager_Lookup_Size( FTC_Manager manager, - FTC_Font font, - FT_Face *aface, - FT_Size *asize ) - { - FTC_FontRequest req; - FT_Error error; + node = first; + do + { + FTC_FamilyEntry entry = manager->families.entries + node->fam_index; + FTC_Cache cache; - /* check for valid `manager' delayed to FTC_Manager_Lookup_Face() */ + if ( (FT_UInt)node->fam_index >= manager->families.count || + entry->link != FTC_FAMILY_ENTRY_NONE ) + FT_ERROR(( "FTC_Manager_Check: invalid node (family index = %ld\n", + node->fam_index )); + else + { + cache = entry->cache; + weight += cache->clazz->node_weight( node, cache ); + } - if ( aface ) - *aface = 0; + node = node->mru_next; - if ( asize ) - *asize = 0; + } while ( node != first ); - error = FTC_Manager_Lookup_Face( manager, font->face_id, aface ); - if ( !error ) - { - FT_Size size; + if ( weight != manager->cur_weight ) + FT_ERROR(( "FTC_Manager_Check: invalid weight %ld instead of %ld\n", + manager->cur_weight, weight )); + } + /* check circular list */ + if ( first ) + { + FT_UFast count = 0; - req.face = *aface; - req.width = font->pix_width; - req.height = font->pix_height; - error = FT_Lru_Lookup( manager->sizes_lru, - (FT_LruKey)&req, - (FT_Pointer*)&size ); - if ( !error ) + node = first; + do { - /* select the size as the current one for this face */ - (*aface)->size = size; + count++; + node = node->mru_next; - if ( asize ) - *asize = size; - } - } + } while ( node != first ); - return error; + if ( count != manager->num_nodes ) + FT_ERROR(( + "FTC_Manager_Check: invalid cache node count %d instead of %d\n", + manager->num_nodes, count )); + } } +#endif /* FT_DEBUG_ERROR */ + /* `Compress' the manager's data, i.e., get rid of old cache nodes */ /* that are not referenced anymore in order to limit the total */ /* memory used by the cache. */ - FT_EXPORT_DEF( void ) FTC_Manager_Compress( FTC_Manager manager ) + + /* documentation is in ftcmanag.h */ + + FT_EXPORT_DEF( void ) + FTC_Manager_Compress( FTC_Manager manager ) { - FT_ListNode node; + FTC_Node node, first; - node = manager->global_lru.tail; - while ( manager->num_bytes > manager->max_bytes && node ) - { - FTC_CacheNode cache_node = FTC_LIST_TO_CACHENODE( node ); - FTC_CacheNode_Data* data = FTC_CACHENODE_TO_DATA_P( cache_node ); - FTC_Cache cache; - FT_ListNode prev = node->prev; + if ( !manager ) + return; + first = manager->nodes_list; - if ( data->ref_count <= 0 ) - { - /* ok, we are going to remove this node */ - FT_List_Remove( &manager->global_lru, node ); +#ifdef FT_DEBUG_ERROR + FTC_Manager_Check( manager ); - /* finalize cache node */ - cache = manager->caches[data->cache_index]; - if ( cache ) - { - FTC_CacheNode_Class* clazz = cache->node_clazz; + FT_ERROR(( "compressing, weight = %ld, max = %ld, nodes = %d\n", + manager->cur_weight, manager->max_weight, + manager->num_nodes )); +#endif + if ( manager->cur_weight < manager->max_weight || first == NULL ) + return; - manager->num_bytes -= clazz->size_node( cache_node, - cache->cache_data ); + /* go to last node - it's a circular list */ + node = first->mru_prev; + do + { + FTC_Node prev = node->mru_prev; - clazz->destroy_node( cache_node, cache->cache_data ); - } - else - { - /* this should never happen! */ - FT_ERROR(( "FTC_Manager_Compress: Cache Manager is corrupted!\n" )); - } - /* check, just in case of general corruption :-) */ - if ( manager->num_nodes <= 0 ) - FT_ERROR(( "FTC_Manager_Compress: Invalid cache node count!\n" )); - else - manager->num_nodes--; - } + prev = ( node == first ) ? NULL : node->mru_prev; + + if ( node->ref_count <= 0 ) + ftc_node_destroy( node, manager ); + node = prev; - } + + } while ( node && manager->cur_weight > manager->max_weight ); } - FT_EXPORT_DEF( FT_Error ) FTC_Manager_Register_Cache( - FTC_Manager manager, - FTC_Cache_Class* clazz, - FTC_Cache *acache ) + /* documentation is in ftcmanag.h */ + + FT_EXPORT_DEF( FT_Error ) + FTC_Manager_Register_Cache( FTC_Manager manager, + FTC_Cache_Class clazz, + FTC_Cache *acache ) { - FT_Error error = FT_Err_Invalid_Argument; + FT_Error error = FTC_Err_Invalid_Argument; + FTC_Cache cache = NULL; if ( manager && clazz && acache ) { FT_Memory memory = manager->library->memory; - FTC_Cache cache; - FT_UInt index = 0; - + FT_UInt index = 0; - /* by default, return 0 */ - *acache = 0; /* check for an empty cache slot in the manager's table */ for ( index = 0; index < FTC_MAX_CACHES; index++ ) @@ -459,34 +710,56 @@ /* return an error if there are too many registered caches */ if ( index >= FTC_MAX_CACHES ) { - error = FT_Err_Too_Many_Caches; + error = FTC_Err_Too_Many_Caches; FT_ERROR(( "FTC_Manager_Register_Cache:" )); FT_ERROR(( " too many registered caches\n" )); goto Exit; } - if ( !ALLOC( cache, clazz->cache_byte_size ) ) + if ( !ALLOC( cache, clazz->cache_size ) ) { cache->manager = manager; cache->memory = memory; cache->clazz = clazz; - /* THIS IS VERY IMPORTANT! IT WILL WRETCH THE MANAGER */ - /* IF IT IS NOT SET CORRECTLY */ + /* THIS IS VERY IMPORTANT! IT WILL WRETCH THE MANAGER */ + /* IF IT IS NOT SET CORRECTLY */ cache->cache_index = index; - if ( clazz->init_cache ) - error = clazz->init_cache( cache ); + if ( clazz->cache_init ) + { + error = clazz->cache_init( cache ); + if ( error ) + { + if ( clazz->cache_done ) + clazz->cache_done( cache ); + + FREE( cache ); + goto Exit; + } + } - if ( error ) - FREE( cache ); - else - manager->caches[index] = *acache = cache; + manager->caches[index] = cache; } } Exit: + *acache = cache; return error; + } + + + /* documentation is in ftcmanag.h */ + + FT_EXPORT_DEF( void ) + FTC_Node_Unref( FTC_Node node, + FTC_Manager manager ) + { + if ( node && (FT_UInt)node->fam_index < manager->families.count && + manager->families.entries[node->fam_index].cache ) + { + node->ref_count--; + } } Index: xc/extras/freetype2/src/cache/ftcsbits.c diff -u xc/extras/freetype2/src/cache/ftcsbits.c:1.1.1.2 xc/extras/freetype2/src/cache/ftcsbits.c:1.1.1.5 --- xc/extras/freetype2/src/cache/ftcsbits.c:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/cache/ftcsbits.c Mon Jan 14 11:52:11 2002 @@ -4,7 +4,7 @@ /* */ /* FreeType sbits manager (body). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -19,32 +19,58 @@ #include <ft2build.h> #include FT_CACHE_H #include FT_CACHE_SMALL_BITMAPS_H +#include FT_CACHE_INTERNAL_GLYPH_H #include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_DEBUG_H #include FT_ERRORS_H +#include "ftcerror.h" + #include <string.h> /* memcmp() */ + +#define FTC_SBIT_ITEMS_PER_NODE 16 -#define FTC_SBITSET_ELEMENT_COUNT 16 + typedef struct FTC_SBitNodeRec_* FTC_SBitNode; - typedef struct FTC_SBitSetRec_ + typedef struct FTC_SBitNodeRec_ { - FTC_ChunkSetRec root; - FTC_Image_Desc desc; + FTC_GlyphNodeRec gnode; + FTC_SBitRec sbits[FTC_SBIT_ITEMS_PER_NODE]; + + } FTC_SBitNodeRec; + - } FTC_SBitSetRec, *FTC_SBitSet; +#define FTC_SBIT_NODE( x ) ( (FTC_SBitNode)( x ) ) - typedef struct FTC_SBit_CacheRec_ + typedef struct FTC_SBitQueryRec_ { - FTC_Chunk_CacheRec root; + FTC_GlyphQueryRec gquery; + FTC_ImageDesc desc; - } FTC_SBit_CacheRec; + } FTC_SBitQueryRec, *FTC_SBitQuery; +#define FTC_SBIT_QUERY( x ) ( (FTC_SBitQuery)( x ) ) + + + typedef struct FTC_SBitFamilyRec_* FTC_SBitFamily; + + /* sbit family structure */ + typedef struct FTC_SBitFamilyRec_ + { + FTC_GlyphFamilyRec gfam; + FTC_ImageDesc desc; + } FTC_SBitFamilyRec; + + +#define FTC_SBIT_FAMILY( x ) ( (FTC_SBitFamily)( x ) ) +#define FTC_SBIT_FAMILY_MEMORY( x ) FTC_GLYPH_FAMILY_MEMORY( &( x )->cset ) + + /*************************************************************************/ /*************************************************************************/ /***** *****/ @@ -54,205 +80,226 @@ /*************************************************************************/ - FT_CALLBACK_DEF - void ftc_sbit_chunk_node_destroy( FTC_ChunkNode node ) + static FT_Error + ftc_sbit_copy_bitmap( FTC_SBit sbit, + FT_Bitmap* bitmap, + FT_Memory memory ) { - FTC_ChunkSet cset = node->cset; - FT_Memory memory = cset->memory; - FT_UInt count = node->num_elements; - FTC_SBit sbit = (FTC_SBit)node->elements; - - - for ( ; count > 0; sbit++, count-- ) - FREE( sbit->buffer ); - - FREE( node->elements ); - FREE( node ); - } - - - FT_CALLBACK_DEF - FT_Error ftc_bitmap_copy( FT_Memory memory, - FT_Bitmap* source, - FTC_SBit target ) - { FT_Error error; - FT_Int pitch = source->pitch; + FT_Int pitch = bitmap->pitch; FT_ULong size; if ( pitch < 0 ) pitch = -pitch; - size = (FT_ULong)( pitch * source->rows ); + size = (FT_ULong)( pitch * bitmap->rows ); - if ( !ALLOC( target->buffer, size ) ) - MEM_Copy( target->buffer, source->buffer, size ); + if ( !ALLOC( sbit->buffer, size ) ) + MEM_Copy( sbit->buffer, bitmap->buffer, size ); return error; } + + FT_CALLBACK_DEF( void ) + ftc_sbit_node_done( FTC_SBitNode snode, + FTC_Cache cache ) + { + FTC_SBit sbit = snode->sbits; + FT_UInt count = FTC_GLYPH_NODE( snode )->item_count; + FT_Memory memory = cache->memory; + + + for ( ; count > 0; sbit++, count-- ) + FREE( sbit->buffer ); + + ftc_glyph_node_done( FTC_GLYPH_NODE( snode ), cache ); + } + - FT_CALLBACK_DEF - FT_Error ftc_sbit_chunk_node_new( FTC_ChunkSet cset, - FT_UInt index, - FTC_ChunkNode *anode ) + static FT_Error + ftc_sbit_node_load( FTC_SBitNode snode, + FTC_Manager manager, + FTC_SBitFamily sfam, + FT_UInt gindex, + FT_ULong *asize ) { FT_Error error; - FT_Memory memory = cset->memory; - FTC_SBitSet sbitset = (FTC_SBitSet)cset; - FTC_ChunkNode node = 0; + FTC_GlyphNode gnode = FTC_GLYPH_NODE( snode ); + FT_Memory memory; FT_Face face; FT_Size size; + FTC_SBit sbit; + + if ( gindex < (FT_UInt)gnode->item_start || + gindex >= (FT_UInt)gnode->item_start + gnode->item_count ) + { + FT_ERROR(( "ftc_sbit_node_load: invalid glyph index" )); + return FTC_Err_Invalid_Argument; + } - /* allocate node */ - if ( ALLOC( node, sizeof ( *node ) ) ) - goto Exit; + memory = manager->library->memory; - /* initialize its inner fields */ - error = FTC_ChunkNode_Init( node, cset, index, 1 ); - if ( error ) - goto Exit; + sbit = snode->sbits + ( gindex - gnode->item_start ); - /* we will now load all glyph images for this chunk */ - error = FTC_Manager_Lookup_Size( cset->manager, - &sbitset->desc.font, + error = FTC_Manager_Lookup_Size( manager, &sfam->desc.font, &face, &size ); if ( !error ) { - FT_UInt glyph_index = index * cset->element_count; - FT_UInt load_flags = FT_LOAD_DEFAULT; - FT_UInt image_type = sbitset->desc.image_type; - FT_UInt count = node->num_elements; - FTC_SBit sbit = (FTC_SBit)node->elements; + FT_UInt load_flags = FT_LOAD_DEFAULT; + FT_UInt type = sfam->desc.type; /* determine load flags, depending on the font description's */ /* image type */ - if ( FTC_IMAGE_FORMAT( image_type ) == ftc_image_format_bitmap ) + if ( FTC_IMAGE_FORMAT( type ) == ftc_image_format_bitmap ) { - if ( image_type & ftc_image_flag_monochrome ) + if ( type & ftc_image_flag_monochrome ) load_flags |= FT_LOAD_MONOCHROME; /* disable embedded bitmaps loading if necessary */ - if ( image_type & ftc_image_flag_no_sbits ) + if ( type & ftc_image_flag_no_sbits ) load_flags |= FT_LOAD_NO_BITMAP; } else { - FT_ERROR(( "FTC_SBit_Cache: cannot load scalable glyphs in an" - " sbit cache, please check your arguments!\n" )); - error = FT_Err_Invalid_Argument; + FT_ERROR(( + "ftc_sbit_node_load: cannot load scalable glyphs in an" + " sbit cache, please check your arguments!\n" )); + error = FTC_Err_Invalid_Argument; goto Exit; } /* always render glyphs to bitmaps */ load_flags |= FT_LOAD_RENDER; - if ( image_type & ftc_image_flag_unhinted ) + if ( type & ftc_image_flag_unhinted ) load_flags |= FT_LOAD_NO_HINTING; - if ( image_type & ftc_image_flag_autohinted ) + if ( type & ftc_image_flag_autohinted ) load_flags |= FT_LOAD_FORCE_AUTOHINT; - /* load a chunk of small bitmaps in a row */ - for ( ; count > 0; count--, glyph_index++, sbit++ ) - { - /* by default, indicates a `missing' glyph */ - sbit->buffer = 0; + /* by default, indicates a `missing' glyph */ + sbit->buffer = 0; - error = FT_Load_Glyph( face, glyph_index, load_flags ); - if ( !error ) - { - FT_Int temp; - FT_GlyphSlot slot = face->glyph; - FT_Bitmap* bitmap = &slot->bitmap; - FT_Int xadvance, yadvance; + error = FT_Load_Glyph( face, gindex, load_flags ); + if ( !error ) + { + FT_Int temp; + FT_GlyphSlot slot = face->glyph; + FT_Bitmap* bitmap = &slot->bitmap; + FT_Int xadvance, yadvance; - /* check that our values fit into 8-bit containers! */ - /* If this is not the case, our bitmap is too large */ - /* and we will leave it as `missing' with sbit.buffer = 0 */ + /* check that our values fit into 8-bit containers! */ + /* If this is not the case, our bitmap is too large */ + /* and we will leave it as `missing' with sbit.buffer = 0 */ #define CHECK_CHAR( d ) ( temp = (FT_Char)d, temp == d ) #define CHECK_BYTE( d ) ( temp = (FT_Byte)d, temp == d ) + + /* XXX: FIXME: add support for vertical layouts maybe */ - /* XXX: FIXME: add support for vertical layouts maybe */ + /* horizontal advance in pixels */ + xadvance = ( slot->metrics.horiAdvance + 32 ) >> 6; + yadvance = ( slot->metrics.vertAdvance + 32 ) >> 6; + + if ( CHECK_BYTE( bitmap->rows ) && + CHECK_BYTE( bitmap->width ) && + CHECK_CHAR( bitmap->pitch ) && + CHECK_CHAR( slot->bitmap_left ) && + CHECK_CHAR( slot->bitmap_top ) && + CHECK_CHAR( xadvance ) && + CHECK_CHAR( yadvance ) ) + { + sbit->width = (FT_Byte)bitmap->width; + sbit->height = (FT_Byte)bitmap->rows; + sbit->pitch = (FT_Char)bitmap->pitch; + sbit->left = (FT_Char)slot->bitmap_left; + sbit->top = (FT_Char)slot->bitmap_top; + sbit->xadvance = (FT_Char)xadvance; + sbit->yadvance = (FT_Char)yadvance; + sbit->format = (FT_Byte)bitmap->pixel_mode; - /* horizontal advance in pixels */ - xadvance = ( slot->metrics.horiAdvance + 32 ) >> 6; - yadvance = ( slot->metrics.vertAdvance + 32 ) >> 6; - - if ( CHECK_BYTE( bitmap->rows ) && - CHECK_BYTE( bitmap->width ) && - CHECK_CHAR( bitmap->pitch ) && - CHECK_CHAR( slot->bitmap_left ) && - CHECK_CHAR( slot->bitmap_top ) && - CHECK_CHAR( xadvance ) && - CHECK_CHAR( yadvance ) ) + /* grab the bitmap when possible - this is a hack !! */ + if ( slot->flags & ft_glyph_own_bitmap ) { - sbit->width = (FT_Byte)bitmap->width; - sbit->height = (FT_Byte)bitmap->rows; - sbit->pitch = (FT_Char)bitmap->pitch; - sbit->left = (FT_Char)slot->bitmap_left; - sbit->top = (FT_Char)slot->bitmap_top; - sbit->xadvance = (FT_Char)xadvance; - sbit->yadvance = (FT_Char)yadvance; - sbit->format = (FT_Byte)bitmap->pixel_mode; - - /* grab the bitmap when possible */ - if ( slot->flags & ft_glyph_own_bitmap ) - { - slot->flags &= ~ft_glyph_own_bitmap; - sbit->buffer = bitmap->buffer; - } - else - { - /* copy the bitmap into a new buffer -- ignore error */ - ftc_bitmap_copy( memory, bitmap, sbit ); - } + slot->flags &= ~ft_glyph_own_bitmap; + sbit->buffer = bitmap->buffer; } - } - } + else + { + /* copy the bitmap into a new buffer -- ignore error */ + error = ftc_sbit_copy_bitmap( sbit, bitmap, memory ); + } - /* ignore the errors that might have occurred -- */ - /* we recognize unloaded glyphs with `sbit.buffer == 0' */ - error = 0; + /* now, compute size */ + if ( asize ) + *asize = ABS( sbit->pitch ) * sbit->height; + + } /* glyph dimensions ok */ + + } /* glyph loading successful */ + + /* ignore the errors that might have occurred -- */ + /* we mark unloaded glyphs with `sbit.buffer == 0' */ + /* and 'width == 255', 'height == 0' */ + /* */ + if ( error ) + { + sbit->width = 255; + error = 0; + /* sbit->buffer == NULL too! */ + } } Exit: - if ( error && node ) - { - FREE( node->elements ); - FREE( node ); - } + return error; + } + - *anode = node; + FT_CALLBACK_DEF( FT_Error ) + ftc_sbit_node_init( FTC_SBitNode snode, + FTC_GlyphQuery gquery, + FTC_Cache cache ) + { + FT_Error error; + + + ftc_glyph_node_init( FTC_GLYPH_NODE( snode ), + gquery->gindex, + FTC_GLYPH_FAMILY( gquery->query.family ) ); + + error = ftc_sbit_node_load( snode, + cache->manager, + FTC_SBIT_FAMILY( FTC_QUERY( gquery )->family ), + gquery->gindex, + NULL ); + if ( error ) + ftc_glyph_node_done( FTC_GLYPH_NODE( snode ), cache ); return error; } - /* this function is important because it is both part of */ - /* an FTC_ChunkSet_Class and an FTC_CacheNode_Class */ - /* */ - FT_CALLBACK_DEF - FT_ULong ftc_sbit_chunk_node_size( FTC_ChunkNode node ) - { - FT_ULong size; - FTC_ChunkSet cset = node->cset; - FT_UInt count = node->num_elements; - FT_Int pitch; - FTC_SBit sbit = (FTC_SBit)node->elements; + FT_CALLBACK_DEF( FT_ULong ) + ftc_sbit_node_weight( FTC_SBitNode snode ) + { + FTC_GlyphNode gnode = FTC_GLYPH_NODE( snode ); + FT_UInt count = gnode->item_count; + FTC_SBit sbit = snode->sbits; + FT_Int pitch; + FT_ULong size; /* the node itself */ - size = sizeof ( *node ); - + size = sizeof ( *snode ); + /* the sbit records */ - size += cset->element_count * sizeof ( FTC_SBitRec ); + size += FTC_GLYPH_NODE( snode )->item_count * sizeof ( FTC_SBitRec ); for ( ; count > 0; count--, sbit++ ) { @@ -271,70 +318,101 @@ } + FT_CALLBACK_DEF( FT_Bool ) + ftc_sbit_node_compare( FTC_SBitNode snode, + FTC_SBitQuery squery, + FTC_Cache cache ) + { + FTC_GlyphQuery gquery = FTC_GLYPH_QUERY( squery ); + FTC_GlyphNode gnode = FTC_GLYPH_NODE( snode ); + FT_Bool result; + + + result = ftc_glyph_node_compare( gnode, gquery ); + if ( result ) + { + /* check if we need to load the glyph bitmap now */ + FT_UInt gindex = gquery->gindex; + FTC_SBit sbit = snode->sbits + ( gindex - gnode->item_start ); + + + if ( sbit->buffer == NULL && sbit->width != 255 ) + { + FT_ULong size; + + + /* yes, it's safe to ignore errors here */ + ftc_sbit_node_load( snode, + cache->manager, + FTC_SBIT_FAMILY( FTC_QUERY( squery )->family ), + gindex, + &size ); + + cache->manager->cur_weight += size; + } + } + + return result; + } + + /*************************************************************************/ /*************************************************************************/ /***** *****/ - /***** SBIT CHUNK SETS *****/ + /***** SBITS FAMILIES *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ - - FT_CALLBACK_DEF - FT_Error ftc_sbit_chunk_set_sizes( FTC_ChunkSet cset, - FTC_Image_Desc* desc ) - { - FT_Error error; - FT_Face face; - - cset->element_count = FTC_SBITSET_ELEMENT_COUNT; - cset->element_size = sizeof ( FTC_SBitRec ); - - /* lookup the FT_Face to obtain the number of glyphs */ - error = FTC_Manager_Lookup_Face( cset->manager, - desc->font.face_id, &face ); + FT_CALLBACK_DEF( FT_Error ) + ftc_sbit_family_init( FTC_SBitFamily sfam, + FTC_SBitQuery squery, + FTC_Cache cache ) + { + FTC_Manager manager = cache->manager; + FT_Error error; + FT_Face face; + + + sfam->desc = squery->desc; + + /* we need to compute "cquery.item_total" now */ + error = FTC_Manager_Lookup_Face( manager, + squery->desc.font.face_id, + &face ); if ( !error ) - cset->element_max = face->num_glyphs; + { + error = ftc_glyph_family_init( FTC_GLYPH_FAMILY( sfam ), + FTC_IMAGE_DESC_HASH( &sfam->desc ), + FTC_SBIT_ITEMS_PER_NODE, + face->num_glyphs, + FTC_GLYPH_QUERY( squery ), + cache ); + } return error; } - FT_CALLBACK_DEF - FT_Error ftc_sbit_chunk_set_init( FTC_SBitSet sset, - FTC_Image_Desc* type ) + FT_CALLBACK_DEF( FT_Bool ) + ftc_sbit_family_compare( FTC_SBitFamily sfam, + FTC_SBitQuery squery ) { - sset->desc = *type; + FT_Bool result; - return 0; - } + /* we need to set the "cquery.cset" field or our query for */ + /* faster glyph comparisons in ftc_sbit_node_compare */ + /* */ + result = FT_BOOL( FTC_IMAGE_DESC_COMPARE( &sfam->desc, &squery->desc ) ); + if ( result ) + FTC_GLYPH_FAMILY_FOUND( sfam, squery ); - FT_CALLBACK_DEF - FT_Bool ftc_sbit_chunk_set_compare( FTC_SBitSet sset, - FTC_Image_Desc* type ) - { - return !memcmp( &sset->desc, type, sizeof ( *type ) ); + return result; } - FT_CALLBACK_TABLE_DEF - const FTC_ChunkSet_Class ftc_sbit_chunk_set_class = - { - sizeof( FTC_SBitSetRec ), - - (FTC_ChunkSet_InitFunc) ftc_sbit_chunk_set_init, - (FTC_ChunkSet_DoneFunc) 0, - (FTC_ChunkSet_CompareFunc) ftc_sbit_chunk_set_compare, - (FTC_ChunkSet_SizesFunc) ftc_sbit_chunk_set_sizes, - - (FTC_ChunkSet_NewNodeFunc) ftc_sbit_chunk_node_new, - (FTC_ChunkSet_SizeNodeFunc) ftc_sbit_chunk_node_size, - (FTC_ChunkSet_DestroyNodeFunc)ftc_sbit_chunk_node_destroy - }; - - /*************************************************************************/ /*************************************************************************/ /***** *****/ @@ -345,49 +423,112 @@ FT_CALLBACK_TABLE_DEF - const FTC_Chunk_Cache_Class ftc_sbit_cache_class = + const FTC_Cache_ClassRec ftc_sbit_cache_class = { - { - sizeof( FTC_SBit_CacheRec ), - (FTC_Cache_InitFunc)FTC_Chunk_Cache_Init, - (FTC_Cache_DoneFunc)FTC_Chunk_Cache_Done - }, - (FTC_ChunkSet_Class*)&ftc_sbit_chunk_set_class + sizeof ( FTC_CacheRec ), + (FTC_Cache_InitFunc) ftc_cache_init, + (FTC_Cache_ClearFunc)ftc_cache_clear, + (FTC_Cache_DoneFunc) ftc_cache_done, + + sizeof ( FTC_SBitFamilyRec ), + (FTC_Family_InitFunc) ftc_sbit_family_init, + (FTC_Family_CompareFunc)ftc_sbit_family_compare, + (FTC_Family_DoneFunc) ftc_glyph_family_done, + + sizeof ( FTC_SBitNodeRec ), + (FTC_Node_InitFunc) ftc_sbit_node_init, + (FTC_Node_WeightFunc) ftc_sbit_node_weight, + (FTC_Node_CompareFunc)ftc_sbit_node_compare, + (FTC_Node_DoneFunc) ftc_sbit_node_done }; - FT_EXPORT_DEF( FT_Error ) FTC_SBit_Cache_New( FTC_Manager manager, - FTC_SBit_Cache *acache ) - { - return FTC_Manager_Register_Cache( - manager, - (FTC_Cache_Class*)&ftc_sbit_cache_class, - (FTC_Cache*)acache ); + /* documentation is in ftcsbits.h */ + + FT_EXPORT_DEF( FT_Error ) + FTC_SBitCache_New( FTC_Manager manager, + FTC_SBitCache *acache ) + { + return FTC_Manager_Register_Cache( manager, + &ftc_sbit_cache_class, + (FTC_Cache*)acache ); } - FT_EXPORT_DEF( FT_Error ) FTC_SBit_Cache_Lookup( FTC_SBit_Cache cache, - FTC_Image_Desc* desc, - FT_UInt gindex, - FTC_SBit *ansbit ) + /* documentation is in ftcsbits.h */ + + FT_EXPORT_DEF( FT_Error ) + FTC_SBitCache_Lookup( FTC_SBitCache cache, + FTC_ImageDesc* desc, + FT_UInt gindex, + FTC_SBit *ansbit, + FTC_Node *anode ) { - FT_Error error; - FTC_ChunkNode node; - FT_UInt cindex; + FT_Error error; + FTC_SBitQueryRec squery; + FTC_SBitNode node; - /* argument checks delayed to FTC_Chunk_Cache_Lookup */ + /* other argument checks delayed to ftc_cache_lookup */ if ( !ansbit ) - return FT_Err_Invalid_Argument; - - *ansbit = 0; - error = FTC_Chunk_Cache_Lookup( &cache->root, desc, gindex, - &node, &cindex ); + return FTC_Err_Invalid_Argument; + + *ansbit = NULL; + + if ( anode ) + *anode = NULL; + + squery.gquery.gindex = gindex; + squery.desc = *desc; + + error = ftc_cache_lookup( FTC_CACHE( cache ), + FTC_QUERY( &squery ), + (FTC_Node*)&node ); if ( !error ) - *ansbit = (FTC_SBit)node->elements + cindex; - + { + *ansbit = node->sbits + ( gindex - FTC_GLYPH_NODE( node )->item_start ); + + if ( anode ) + { + *anode = FTC_NODE( node ); + FTC_NODE( node )->ref_count++; + } + } return error; } - + + + /* backwards-compatibility functions */ + + FT_EXPORT_DEF( FT_Error ) + FTC_SBit_Cache_New( FTC_Manager manager, + FTC_SBit_Cache *acache ) + { + return FTC_SBitCache_New( manager, (FTC_SBitCache*)acache ); + } + + + FT_EXPORT_DEF( FT_Error ) + FTC_SBit_Cache_Lookup( FTC_SBit_Cache cache, + FTC_Image_Desc* desc, + FT_UInt gindex, + FTC_SBit *ansbit ) + { + FTC_ImageDesc desc0; + + + if ( !desc ) + return FT_Err_Invalid_Argument; + + desc0.font = desc->font; + desc0.type = (FT_UInt32)desc->image_type; + + return FTC_SBitCache_Lookup( (FTC_SBitCache)cache, + &desc0, + gindex, + ansbit, + NULL ); + } + /* END */ Index: xc/extras/freetype2/src/cache/ftlru.c diff -u xc/extras/freetype2/src/cache/ftlru.c:1.1.1.2 xc/extras/freetype2/src/cache/ftlru.c:1.1.1.5 --- xc/extras/freetype2/src/cache/ftlru.c:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/cache/ftlru.c Mon Jan 14 11:52:11 2002 @@ -4,7 +4,7 @@ /* */ /* Simple LRU list-cache (body). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -22,315 +22,315 @@ #include FT_LIST_H #include FT_INTERNAL_OBJECTS_H +#include "ftcerror.h" - static - void lru_build_free_list( FT_LruNode nodes, - FT_UInt count, - FT_List free_list ) - { - FT_LruNode node = nodes; - FT_LruNode limit = node + count; - - - free_list->head = free_list->tail = 0; - for ( ; node < limit; node++ ) - FT_List_Add( free_list, (FT_ListNode)node ); - } - - FT_EXPORT_DEF( FT_Error ) FT_Lru_New( const FT_Lru_Class* clazz, - FT_UInt max_elements, - FT_Pointer user_data, - FT_Memory memory, - FT_Bool pre_alloc, - FT_Lru *anlru ) + FT_EXPORT_DEF( FT_Error ) + FT_LruList_New( FT_LruList_Class clazz, + FT_UInt max_nodes, + FT_Pointer user_data, + FT_Memory memory, + FT_LruList *alist ) { - FT_Error error; - FT_Lru lru; + FT_Error error; + FT_LruList list; - if ( !anlru ) - return FT_Err_Invalid_Argument; + if ( !alist || !clazz ) + return FTC_Err_Invalid_Argument; - *anlru = 0; - if ( !ALLOC( lru, sizeof ( *lru ) ) ) + *alist = NULL; + if ( !ALLOC( list, clazz->list_size ) ) { - if ( pre_alloc ) + /* initialize common fields */ + list->clazz = clazz; + list->memory = memory; + list->max_nodes = max_nodes; + list->data = user_data; + + if ( clazz->list_init ) { - /* allocate static array of lru list nodes */ - if ( ALLOC_ARRAY( lru->nodes, max_elements, FT_LruNodeRec ) ) + error = clazz->list_init( list ); + if ( error ) { - FREE( lru ); - goto Exit; - } + if ( clazz->list_done ) + clazz->list_done( list ); - /* build the `free_nodes' list from the array */ - lru_build_free_list( lru->nodes, max_elements, &lru->free_nodes ); + FREE( list ); + } } - /* initialize common fields */ - lru->clazz = (FT_Lru_Class*)clazz; - lru->max_elements = max_elements; - lru->memory = memory; - lru->user_data = user_data; - - *anlru = lru; + *alist = list; } - Exit: return error; } - FT_EXPORT_DEF( void ) FT_Lru_Reset( FT_Lru lru ) + FT_EXPORT_DEF( void ) + FT_LruList_Destroy( FT_LruList list ) { - FT_ListNode node; - FT_Lru_Class* clazz; - FT_Memory memory; + FT_Memory memory; + FT_LruList_Class clazz; - if ( !lru ) + if ( !list ) return; - - node = lru->elements.head; - clazz = lru->clazz; - memory = lru->memory; - while ( node ) - { - FT_ListNode next = node->next; + memory = list->memory; + clazz = list->clazz; + FT_LruList_Reset( list ); - clazz->done_element( lru, (FT_LruNode)node ); - if ( !lru->nodes ) - FREE( node ); + if ( clazz->list_done ) + clazz->list_done( list ); - node = next; - } - - /* rebuild free list if necessary */ - if ( lru->nodes ) - lru_build_free_list( lru->nodes, lru->max_elements, &lru->free_nodes ); - - lru->elements.head = lru->elements.tail = 0; - lru->num_elements = 0; + FREE( list ); } - FT_EXPORT_DEF( void ) FT_Lru_Done( FT_Lru lru ) + FT_EXPORT_DEF( void ) + FT_LruList_Reset( FT_LruList list ) { - FT_Memory memory; + FT_LruNode node; + FT_LruList_Class clazz; + FT_Memory memory; - if ( !lru ) + if ( !list ) return; - memory = lru->memory; + node = list->nodes; + clazz = list->clazz; + memory = list->memory; - FT_Lru_Reset( lru ); + while ( node ) + { + FT_LruNode next = node->next; - FREE( lru->nodes ); - FREE( lru ); - } + if ( clazz->node_done ) + clazz->node_done( node, list->data ); - FT_EXPORT_DEF( FT_Error ) FT_Lru_Lookup_Node( FT_Lru lru, - FT_LruKey key, - FT_LruNode *anode ) - { - FT_Error error = 0; - FT_ListNode node; - FT_Lru_Class* clazz; - FT_LruNode found = 0; - FT_Memory memory; + FREE( node ); + node = next; + } + list->nodes = NULL; + list->num_nodes = 0; + } - if ( !lru || !key || !anode ) - return FT_Err_Invalid_Argument; - node = lru->elements.head; - clazz = lru->clazz; - memory = lru->memory; + FT_EXPORT_DEF( FT_Error ) + FT_LruList_Lookup( FT_LruList list, + FT_LruKey key, + FT_LruNode *anode ) + { + FT_Error error = 0; + FT_LruNode node, *pnode; + FT_LruList_Class clazz; + FT_LruNode* plast; + FT_LruNode result = NULL; + FT_Memory memory; + + + if ( !list || !key || !anode ) + return FTC_Err_Invalid_Argument; + + pnode = &list->nodes; + plast = pnode; + node = NULL; + clazz = list->clazz; + memory = list->memory; - if ( clazz->compare_element ) + if ( clazz->node_compare ) { - for ( ; node; node = node->next ) - if ( clazz->compare_element( (FT_LruNode)node, key ) ) - { - found = (FT_LruNode)node; + for (;;) + { + node = *pnode; + if ( node == NULL ) break; - } + + if ( clazz->node_compare( node, key, list->data ) ) + break; + + plast = pnode; + pnode = &(*pnode)->next; + } } else { - for ( ; node; node = node->next ) - if ( ((FT_LruNode)node)->key == key ) - { - found = (FT_LruNode)node; + for (;;) + { + node = *pnode; + if ( node == NULL ) break; - } + + if ( node->key == key ) + break; + + plast = pnode; + pnode = &(*pnode)->next; + } } - if ( !found ) + if ( node ) { - /* we haven't found the relevant element. We will now try */ - /* to create a new one. */ - if ( lru->num_elements >= lru->max_elements ) + /* move element to top of list */ + if ( list->nodes != node ) { - /* this lru list is full; we will now flush */ - /* the oldest node */ - FT_LruNode lru_node; + *pnode = node->next; + node->next = list->nodes; + list->nodes = node; + } + result = node; + goto Exit; + } + /* we haven't found the relevant element. We will now try */ + /* to create a new one. */ + /* */ - node = lru->elements.tail; - lru_node = (FT_LruNode)node; - found = lru_node; + /* first, check if our list if full, when appropriate */ + if ( list->max_nodes > 0 && list->num_nodes >= list->max_nodes ) + { + /* this list list is full; we will now flush */ + /* the oldest node, if there's one! */ + FT_LruNode last = *plast; - if ( clazz->flush_element ) - error = clazz->flush_element( lru, lru_node, key ); - else - { - clazz->done_element( lru, lru_node ); - lru_node->key = key; - node->data = 0; - error = clazz->init_element( lru, lru_node ); - } - if ( !error ) + if ( last ) + { + if ( clazz->node_flush ) { - /* now, move element to top of list */ - FT_List_Up( &lru->elements, node ); + error = clazz->node_flush( last, key, list->data ); } else { - /* in case of error, the node must be discarded */ - FT_List_Remove( &lru->elements, node ); - lru->num_elements--; - - if ( lru->nodes ) - FT_List_Insert( &lru->free_nodes, node ); - else - FREE( lru_node ); + if ( clazz->node_done ) + clazz->node_done( last, list->data ); - found = 0; + last->key = key; + error = clazz->node_init( last, key, list->data ); } - } - else - { - FT_LruNode lru_node; - - /* create a new lru list node, then the element for it */ - if ( lru->nodes ) + if ( !error ) { - node = lru->free_nodes.head; - lru_node = (FT_LruNode)node; - lru_node->key = key; - - error = clazz->init_element( lru, lru_node ); - if ( error ) - goto Exit; + /* move it to the top of the list */ + *plast = NULL; + last->next = list->nodes; + list->nodes = last; - FT_List_Remove( &lru->free_nodes, node ); + result = last; + goto Exit; } - else - { - if ( ALLOC( lru_node, sizeof ( *lru_node ) ) ) - goto Exit; - lru_node->key = key; - error = clazz->init_element( lru, lru_node ); - if ( error ) - { - FREE( lru_node ); - goto Exit; - } - } + /* in case of error during the flush or done/init cycle, */ + /* we need to discard the node */ + if ( clazz->node_done ) + clazz->node_done( last, list->data ); + + *plast = NULL; + list->num_nodes--; - found = lru_node; - node = (FT_ListNode)lru_node; - FT_List_Insert( &lru->elements, node ); - lru->num_elements++; + FREE( last ); + goto Exit; } } + /* otherwise, simply allocate a new node */ + if ( ALLOC( node, clazz->node_size ) ) + goto Exit; + + node->key = key; + error = clazz->node_init( node, key, list->data ); + if ( error ) + { + FREE( node ); + goto Exit; + } + + result = node; + node->next = list->nodes; + list->nodes = node; + list->num_nodes++; + Exit: - *anode = found; + *anode = result; return error; } - FT_EXPORT_DEF( FT_Error ) FT_Lru_Lookup( FT_Lru lru, - FT_LruKey key, - FT_Pointer *anobject ) + FT_EXPORT_DEF( void ) + FT_LruList_Remove( FT_LruList list, + FT_LruNode node ) { - FT_Error error; - FT_LruNode node; + FT_LruNode *pnode; - /* check for valid `lru' and `key' delayed to FT_Lru_Lookup_Node() */ - - if ( !anobject ) - return FT_Err_Invalid_Argument; - - *anobject = 0; - error = FT_Lru_Lookup_Node( lru, key, &node ); - if ( !error ) - *anobject = node->root.data; - - return error; - } - - - FT_EXPORT_DEF( void ) FT_Lru_Remove_Node( FT_Lru lru, - FT_LruNode node ) - { - if ( !lru || !node ) + if ( !list || !node ) return; - if ( lru->num_elements > 0 ) + pnode = &list->nodes; + for (;;) { - FT_List_Remove( &lru->elements, (FT_ListNode)node ); - lru->clazz->done_element( lru, node ); - - if ( lru->nodes ) - FT_List_Insert( &lru->free_nodes, (FT_ListNode)node ); - else + if ( *pnode == node ) { - FT_Memory memory = lru->memory; + FT_Memory memory = list->memory; + FT_LruList_Class clazz = list->clazz; + + *pnode = node->next; + node->next = NULL; + if ( clazz->node_done ) + clazz->node_done( node, list->data ); + FREE( node ); + list->num_nodes--; + break; } - lru->num_elements--; + pnode = &(*pnode)->next; } } - FT_EXPORT_DEF( void ) FT_Lru_Remove_Selection( FT_Lru lru, - FT_Lru_Selector selector, - FT_Pointer data ) + FT_EXPORT_DEF( void ) + FT_LruList_Remove_Selection( FT_LruList list, + FT_LruNode_SelectFunc select_func, + FT_Pointer select_data ) { - if ( !lru || !selector ) + FT_LruNode *pnode, node; + FT_LruList_Class clazz; + FT_Memory memory; + + + if ( !list || !select_func ) return; - if ( lru->num_elements > 0 ) - { - FT_ListNode node = lru->elements.head; - FT_ListNode next; + memory = list->memory; + clazz = list->clazz; + pnode = &list->nodes; + for (;;) + { + node = *pnode; + if ( node == NULL ) + break; - while ( node ) + if ( select_func( node, select_data, list->data ) ) { - next = node->next; - if ( selector( lru, (FT_LruNode)node, data ) ) - { - /* remove this element from the list, and destroy it */ - FT_Lru_Remove_Node( lru, (FT_LruNode)node ); - } - node = next; + *pnode = node->next; + node->next = NULL; + + if ( clazz->node_done ) + clazz->node_done( node, list ); + + FREE( node ); } + else + pnode = &(*pnode)->next; } } Index: xc/extras/freetype2/src/cache/rules.mk diff -u xc/extras/freetype2/src/cache/rules.mk:1.1.1.2 xc/extras/freetype2/src/cache/rules.mk:1.1.1.4 --- xc/extras/freetype2/src/cache/rules.mk:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/cache/rules.mk Mon Jan 14 11:52:11 2002 @@ -30,17 +30,19 @@ # Cache_DRV_SRC := $(CACHE_DIR_)ftlru.c \ $(CACHE_DIR_)ftcmanag.c \ + $(CACHE_DIR_)ftccache.c \ $(CACHE_DIR_)ftcglyph.c \ - $(CACHE_DIR_)ftcchunk.c \ $(CACHE_DIR_)ftcsbits.c \ - $(CACHE_DIR_)ftcimage.c + $(CACHE_DIR_)ftcimage.c \ + $(CACHE_DIR_)ftccmap.c # Cache driver headers # Cache_DRV_H := $(CACHE_H_DIR_)ftlru.h \ $(CACHE_H_DIR_)ftcmanag.h \ $(CACHE_H_DIR_)ftcglyph.h \ - $(CACHE_H_DIR_)ftcimage.h + $(CACHE_H_DIR_)ftcimage.h \ + $(CACHE_DIR_)ftcerror.h # Cache driver object(s) Index: xc/extras/freetype2/src/cff/Jamfile diff -u /dev/null xc/extras/freetype2/src/cff/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:53 2002 +++ xc/extras/freetype2/src/cff/Jamfile Sun Sep 9 22:56:01 2001 @@ -0,0 +1,23 @@ +# FreeType 2 src/cff Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src cff ; + +SubDirHdrs [ FT2_SubDir src cff ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = cffdrivr cffgload cffload cffobjs cffparse ; + } + else + { + _sources = cff ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/cff Jamfile Index: xc/extras/freetype2/src/cff/cff.c diff -u xc/extras/freetype2/src/cff/cff.c:1.1.1.2 xc/extras/freetype2/src/cff/cff.c:1.1.1.3 --- xc/extras/freetype2/src/cff/cff.c:1.1.1.2 Tue May 15 23:45:32 2001 +++ xc/extras/freetype2/src/cff/cff.c Sun Dec 16 12:49:28 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType OpenType driver component (body only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/cff/cffdrivr.c diff -u xc/extras/freetype2/src/cff/cffdrivr.c:1.1.1.1 xc/extras/freetype2/src/cff/cffdrivr.c:1.1.1.4 --- xc/extras/freetype2/src/cff/cffdrivr.c:1.1.1.1 Tue May 15 23:45:32 2001 +++ xc/extras/freetype2/src/cff/cffdrivr.c Mon Jan 14 11:52:11 2002 @@ -4,7 +4,7 @@ /* */ /* OpenType font driver implementation (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -22,12 +22,14 @@ #include FT_INTERNAL_STREAM_H #include FT_INTERNAL_SFNT_H #include FT_TRUETYPE_IDS_H -#include FT_INTERNAL_CFF_ERRORS_H #include "cffdrivr.h" #include "cffgload.h" #include "cffload.h" +#include "cfferrs.h" + + /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -88,11 +90,11 @@ /* */ /* They can be implemented by format-specific interfaces. */ /* */ - static - FT_Error Get_Kerning( TT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_Vector* kerning ) + static FT_Error + Get_Kerning( TT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_Vector* kerning ) { TT_Kern_0_Pair* pair; @@ -170,17 +172,17 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - static - FT_Error Load_Glyph( CFF_GlyphSlot slot, - CFF_Size size, - FT_UShort glyph_index, - FT_UInt load_flags ) + static FT_Error + Load_Glyph( CFF_GlyphSlot slot, + CFF_Size size, + FT_UShort glyph_index, + FT_UInt load_flags ) { FT_Error error; if ( !slot ) - return CFF_Err_Invalid_Glyph_Handle; + return CFF_Err_Invalid_Slot_Handle; /* check whether we want a scaled outline or bitmap */ if ( !size ) @@ -219,11 +221,11 @@ /*************************************************************************/ /*************************************************************************/ - static - FT_Error get_cff_glyph_name( CFF_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ) + static FT_Error + cff_get_glyph_name( CFF_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ) { CFF_Font* font = (CFF_Font*)face->extra.data; FT_Memory memory = FT_FACE_MEMORY(face); @@ -241,7 +243,7 @@ FT_ERROR(( " cannot open CFF & CEF fonts\n" )); FT_ERROR(( " " )); FT_ERROR(( " without the `PSNames' module\n" )); - error = FT_Err_Unknown_File_Format; + error = CFF_Err_Unknown_File_Format; goto Exit; } @@ -274,7 +276,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* Get_Char_Index */ + /* cff_get_char_index */ /* */ /* <Description> */ /* Uses a charmap to return a given character code's glyph index. */ @@ -286,9 +288,9 @@ /* <Return> */ /* Glyph index. 0 means `undefined character code'. */ /* */ - static - FT_UInt cff_get_char_index( TT_CharMap charmap, - FT_Long charcode ) + static FT_UInt + cff_get_char_index( TT_CharMap charmap, + FT_Long charcode ) { FT_Error error; CFF_Face face; @@ -316,6 +318,58 @@ /*************************************************************************/ + /* */ + /* <Function> */ + /* cff_get_name_index */ + /* */ + /* <Description> */ + /* Uses the psnames module and the CFF font's charset to to return a */ + /* a given glyph name's glyph index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* glyph_name :: The glyph name. */ + /* */ + /* <Return> */ + /* Glyph index. 0 means `undefined character code'. */ + /* */ + static FT_UInt + cff_get_name_index( CFF_Face face, + FT_String* glyph_name ) + { + CFF_Font* cff; + CFF_Charset* charset; + PSNames_Interface* psnames; + FT_String* name; + FT_UShort sid; + FT_UInt i; + + + cff = face->extra.data; + charset = &cff->charset; + + psnames = (PSNames_Interface*)FT_Get_Module_Interface( + face->root.driver->root.library, "psnames" ); + + for ( i = 0; i < cff->num_glyphs; i++ ) + { + sid = charset->sids[i]; + + if ( sid > 390 ) + name = CFF_Get_Name( &cff->string_index, sid - 391 ); + else + name = (FT_String *)psnames->adobe_std_strings( sid ); + + if ( !strcmp( glyph_name, name ) ) + return i; + } + + return 0; + } + + + /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ /**** ****/ @@ -327,15 +381,20 @@ /*************************************************************************/ /*************************************************************************/ - static - FT_Module_Interface cff_get_interface( CFF_Driver driver, - const char* interface ) + static FT_Module_Interface + cff_get_interface( CFF_Driver driver, + const char* interface ) { FT_Module sfnt; #ifndef FT_CONFIG_OPTION_NO_GLYPH_NAMES + if ( strcmp( (const char*)interface, "glyph_name" ) == 0 ) - return (FT_Module_Interface)get_cff_glyph_name; + return (FT_Module_Interface)cff_get_glyph_name; + + if ( strcmp( (const char*)interface, "name_index" ) == 0 ) + return (FT_Module_Interface)cff_get_name_index; + #endif /* we simply pass our request to the `sfnt' module */ @@ -352,7 +411,10 @@ { /* begin with the FT_Module_Class fields */ { - ft_module_font_driver | ft_module_driver_scalable, + ft_module_font_driver | + ft_module_driver_scalable | + ft_module_driver_has_hinter, + sizeof( CFF_DriverRec ), "cff", 0x10000L, @@ -360,8 +422,8 @@ 0, /* module-specific interface */ - (FT_Module_Constructor)CFF_Init_Driver, - (FT_Module_Destructor) CFF_Done_Driver, + (FT_Module_Constructor)CFF_Driver_Init, + (FT_Module_Destructor) CFF_Driver_Done, (FT_Module_Requester) cff_get_interface, }, @@ -370,15 +432,15 @@ sizeof( FT_SizeRec ), sizeof( CFF_GlyphSlotRec ), - (FTDriver_initFace) CFF_Init_Face, - (FTDriver_doneFace) CFF_Done_Face, - (FTDriver_initSize) 0, - (FTDriver_doneSize) 0, - (FTDriver_initGlyphSlot)0, - (FTDriver_doneGlyphSlot)0, + (FTDriver_initFace) CFF_Face_Init, + (FTDriver_doneFace) CFF_Face_Done, + (FTDriver_initSize) CFF_Size_Init, + (FTDriver_doneSize) CFF_Size_Done, + (FTDriver_initGlyphSlot)CFF_GlyphSlot_Init, + (FTDriver_doneGlyphSlot)CFF_GlyphSlot_Done, - (FTDriver_setCharSizes) 0, - (FTDriver_setPixelSizes)0, + (FTDriver_setCharSizes) CFF_Size_Reset, + (FTDriver_setPixelSizes)CFF_Size_Reset, (FTDriver_loadGlyph) Load_Glyph, (FTDriver_getCharIndex) cff_get_char_index, @@ -411,7 +473,8 @@ /* format-specific interface can then be retrieved through the method */ /* interface->get_format_interface. */ /* */ - FT_EXPORT_DEF( const FT_Driver_Class* ) getDriverClass( void ) + FT_EXPORT_DEF( const FT_Driver_Class* ) + getDriverClass( void ) { return &cff_driver_class; } Index: xc/extras/freetype2/src/cff/cffdrivr.h diff -u xc/extras/freetype2/src/cff/cffdrivr.h:1.1.1.1 xc/extras/freetype2/src/cff/cffdrivr.h:1.1.1.2 --- xc/extras/freetype2/src/cff/cffdrivr.h:1.1.1.1 Tue May 15 23:45:32 2001 +++ xc/extras/freetype2/src/cff/cffdrivr.h Sun Dec 16 12:49:28 2001 @@ -4,7 +4,7 @@ /* */ /* High-level OpenType driver interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/cff/cfferrs.h diff -u /dev/null xc/extras/freetype2/src/cff/cfferrs.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:53 2002 +++ xc/extras/freetype2/src/cff/cfferrs.h Sun Sep 9 22:56:02 2001 @@ -0,0 +1,41 @@ +/***************************************************************************/ +/* */ +/* cfferrs.h */ +/* */ +/* CFF error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the CFF error enumeration constants. */ + /* */ + /*************************************************************************/ + +#ifndef __CFFERRS_H__ +#define __CFFERRS_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX CFF_Err_ +#define FT_ERR_BASE FT_Mod_Err_CFF + + +#include FT_ERRORS_H + +#endif /* __CFFERRS_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/cff/cffgload.c diff -u xc/extras/freetype2/src/cff/cffgload.c:1.1.1.1 xc/extras/freetype2/src/cff/cffgload.c:1.1.1.4 --- xc/extras/freetype2/src/cff/cffgload.c:1.1.1.1 Tue May 15 23:45:33 2001 +++ xc/extras/freetype2/src/cff/cffgload.c Mon Jan 14 11:52:12 2002 @@ -4,7 +4,7 @@ /* */ /* OpenType Glyph Loader (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,11 +23,13 @@ #include FT_INTERNAL_SFNT_H #include FT_OUTLINE_H #include FT_TRUETYPE_TAGS_H +#include FT_INTERNAL_POSTSCRIPT_HINTS_H +#include "cffobjs.h" #include "cffload.h" #include "cffgload.h" -#include FT_INTERNAL_CFF_ERRORS_H +#include "cfferrs.h" /*************************************************************************/ @@ -151,8 +153,8 @@ 2 | CFF_COUNT_CHECK_WIDTH, 2 | CFF_COUNT_CHECK_WIDTH, - 0, /* hintmask */ - 0, /* cntrmask */ + 0 | CFF_COUNT_CHECK_WIDTH, /* hintmask */ + 0 | CFF_COUNT_CHECK_WIDTH, /* cntrmask */ 0, /* dotsection */ 1, /* abs */ @@ -205,7 +207,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* CFF_Init_Builder */ + /* CFF_Builder_Init */ /* */ /* <Description> */ /* Initializes a given glyph builder. */ @@ -220,11 +222,12 @@ /* */ /* glyph :: The current glyph object. */ /* */ - static - void CFF_Init_Builder( CFF_Builder* builder, - TT_Face face, - CFF_Size size, - CFF_GlyphSlot glyph ) + static void + CFF_Builder_Init( CFF_Builder* builder, + TT_Face face, + CFF_Size size, + CFF_GlyphSlot glyph, + FT_Bool hinting ) { builder->path_begun = 0; builder->load_points = 1; @@ -242,6 +245,15 @@ builder->base = &loader->base.outline; builder->current = &loader->current.outline; FT_GlyphLoader_Rewind( loader ); + + builder->hints_globals = 0; + builder->hints_funcs = 0; + + if ( hinting && size ) + { + builder->hints_globals = size->internal; + builder->hints_funcs = glyph->root.internal->glyph_hints; + } } if ( size ) @@ -263,7 +275,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* CFF_Done_Builder */ + /* CFF_Builder_Done */ /* */ /* <Description> */ /* Finalizes a given glyph builder. Its contents can still be used */ @@ -273,8 +285,8 @@ /* <Input> */ /* builder :: A pointer to the glyph builder to finalize. */ /* */ - static - void CFF_Done_Builder( CFF_Builder* builder ) + static void + CFF_Builder_Done( CFF_Builder* builder ) { CFF_GlyphSlot glyph = builder->glyph; @@ -298,18 +310,18 @@ /* */ /* <Return> */ /* The bias value. */ - static - FT_Int cff_compute_bias( FT_UInt num_subrs ) + static FT_Int + cff_compute_bias( FT_UInt num_subrs ) { FT_Int result; if ( num_subrs < 1240 ) result = 107; - else if ( num_subrs < 33900 ) + else if ( num_subrs < 33900U ) result = 1131; else - result = 32768; + result = 32768U; return result; } @@ -333,11 +345,12 @@ /* */ /* slot :: The current glyph object. */ /* */ - FT_LOCAL_DEF - void CFF_Init_Decoder( CFF_Decoder* decoder, - TT_Face face, - CFF_Size size, - CFF_GlyphSlot slot ) + FT_LOCAL_DEF void + CFF_Init_Decoder( CFF_Decoder* decoder, + TT_Face face, + CFF_Size size, + CFF_GlyphSlot slot, + FT_Bool hinting ) { CFF_Font* cff = (CFF_Font*)face->extra.data; @@ -346,7 +359,7 @@ MEM_Set( decoder, 0, sizeof ( *decoder ) ); /* initialize builder */ - CFF_Init_Builder( &decoder->builder, face, size, slot ); + CFF_Builder_Init( &decoder->builder, face, size, slot, hinting ); /* initialize Type2 decoder */ decoder->num_globals = cff->num_global_subrs; @@ -356,9 +369,9 @@ /* this function is used to select the locals subrs array */ - FT_LOCAL_DEF - void CFF_Prepare_Decoder( CFF_Decoder* decoder, - FT_UInt glyph_index ) + FT_LOCAL_DEF void + CFF_Prepare_Decoder( CFF_Decoder* decoder, + FT_UInt glyph_index ) { CFF_Font* cff = (CFF_Font*)decoder->builder.face->extra.data; CFF_SubFont* sub = &cff->top_font; @@ -383,20 +396,20 @@ /* check that there is enough room for `count' more points */ - static - FT_Error check_points( CFF_Builder* builder, - FT_Int count ) + static FT_Error + check_points( CFF_Builder* builder, + FT_Int count ) { return FT_GlyphLoader_Check_Points( builder->loader, count, 0 ); } /* add a new point, do not check space */ - static - void add_point( CFF_Builder* builder, - FT_Pos x, - FT_Pos y, - FT_Byte flag ) + static void + add_point( CFF_Builder* builder, + FT_Pos x, + FT_Pos y, + FT_Byte flag ) { FT_Outline* outline = builder->current; @@ -409,7 +422,7 @@ point->x = x >> 16; point->y = y >> 16; - *control = flag ? FT_Curve_Tag_On : FT_Curve_Tag_Cubic; + *control = (FT_Byte)( flag ? FT_Curve_Tag_On : FT_Curve_Tag_Cubic ); builder->last = *point; } @@ -418,10 +431,10 @@ /* check space for a new on-curve point, then add it */ - static - FT_Error add_point1( CFF_Builder* builder, - FT_Pos x, - FT_Pos y ) + static FT_Error + add_point1( CFF_Builder* builder, + FT_Pos x, + FT_Pos y ) { FT_Error error; @@ -435,8 +448,8 @@ /* check room for a new contour, then add it */ - static - FT_Error add_contour( CFF_Builder* builder ) + static FT_Error + add_contour( CFF_Builder* builder ) { FT_Outline* outline = builder->current; FT_Error error; @@ -452,7 +465,8 @@ if ( !error ) { if ( outline->n_contours > 0 ) - outline->contours[outline->n_contours - 1] = outline->n_points - 1; + outline->contours[outline->n_contours - 1] = + (short)( outline->n_points - 1 ); outline->n_contours++; } @@ -462,10 +476,10 @@ /* if a path was begun, add its first on-curve point */ - static - FT_Error start_point( CFF_Builder* builder, - FT_Pos x, - FT_Pos y ) + static FT_Error + start_point( CFF_Builder* builder, + FT_Pos x, + FT_Pos y ) { FT_Error error = 0; @@ -483,8 +497,8 @@ /* close the current contour */ - static - void close_contour( CFF_Builder* builder ) + static void + close_contour( CFF_Builder* builder ) { FT_Outline* outline = builder->current; @@ -512,13 +526,14 @@ } if ( outline->n_contours > 0 ) - outline->contours[outline->n_contours - 1] = outline->n_points - 1; + outline->contours[outline->n_contours - 1] = + (short)( outline->n_points - 1 ); } - static - FT_Int cff_lookup_glyph_by_stdcharcode( CFF_Font* cff, - FT_Int charcode ) + static FT_Int + cff_lookup_glyph_by_stdcharcode( CFF_Font* cff, + FT_Int charcode ) { FT_UInt n; FT_UShort glyph_sid; @@ -528,9 +543,8 @@ if ( charcode < 0 || charcode > 255 ) return -1; - /* Get code to SID mapping from `cff_standard_encoding'. */ - glyph_sid = cff_standard_encoding[charcode]; + glyph_sid = CFF_Get_Standard_Encoding( (FT_UInt)charcode ); for ( n = 0; n < cff->num_glyphs; n++ ) { @@ -542,12 +556,12 @@ } - static - FT_Error cff_operator_seac( CFF_Decoder* decoder, - FT_Pos adx, - FT_Pos ady, - FT_Int bchar, - FT_Int achar ) + static FT_Error + cff_operator_seac( CFF_Decoder* decoder, + FT_Pos adx, + FT_Pos ady, + FT_Int bchar, + FT_Int achar ) { FT_Error error; FT_Int bchar_index, achar_index, n_base_points; @@ -655,7 +669,7 @@ FT_Outline dummy; - dummy.n_points = base->n_points - n_base_points; + dummy.n_points = (short)( base->n_points - n_base_points ); dummy.points = base->points + n_base_points; FT_Outline_Translate( &dummy, adx, ady ); @@ -685,22 +699,23 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error CFF_Parse_CharStrings( CFF_Decoder* decoder, - FT_Byte* charstring_base, - FT_Int charstring_len ) + FT_LOCAL_DEF FT_Error + CFF_Parse_CharStrings( CFF_Decoder* decoder, + FT_Byte* charstring_base, + FT_Int charstring_len ) { FT_Error error; CFF_Decoder_Zone* zone; FT_Byte* ip; FT_Byte* limit; CFF_Builder* builder = &decoder->builder; - FT_Outline* outline; FT_Pos x, y; FT_Fixed seed; FT_Fixed* stack; + T2_Hints_Funcs hinter; + /* set default width */ decoder->num_hints = 0; decoder->read_width = 1; @@ -719,18 +734,23 @@ zone = decoder->zones; stack = decoder->top; + hinter = (T2_Hints_Funcs) builder->hints_funcs; + builder->path_begun = 0; zone->base = charstring_base; limit = zone->limit = charstring_base + charstring_len; ip = zone->cursor = zone->base; - error = CFF_Err_Ok; - outline = builder->current; + error = CFF_Err_Ok; x = builder->pos_x; y = builder->pos_y; + /* begin hints recording session, if any */ + if ( hinter ) + hinter->open( hinter->hints ); + /* now, execute loop */ while ( ip < limit ) { @@ -1053,23 +1073,52 @@ case cff_op_vstem: case cff_op_hstemhm: case cff_op_vstemhm: - /* if the number of arguments is not even, the first one */ - /* is simply the glyph width, encoded as the difference */ - /* to nominalWidthX */ + /* the number of arguments is always even here */ FT_TRACE4(( op == cff_op_hstem ? " hstem" : - op == cff_op_vstem ? " vstem" : - op == cff_op_hstemhm ? " hstemhm" : - " vstemhm" )); + ( op == cff_op_vstem ? " vstem" : + ( op == cff_op_hstemhm ? " hstemhm" : " vstemhm" ) ) )); + + if ( hinter ) + hinter->stems( hinter->hints, + ( op == cff_op_hstem || op == cff_op_hstemhm ), + num_args / 2, + args ); + decoder->num_hints += num_args / 2; args = stack; break; case cff_op_hintmask: case cff_op_cntrmask: - FT_TRACE4(( op == cff_op_hintmask ? " hintmask" - : " cntrmask" )); - - decoder->num_hints += num_args / 2; + FT_TRACE4(( op == cff_op_hintmask ? " hintmask" : " cntrmask" )); + + /* implement vstem when needed -- */ + /* the specification doesn't say it, but this also works */ + /* with the 'cntrmask' operator */ + /* */ + if ( num_args > 0 ) + { + if ( hinter ) + hinter->stems( hinter->hints, + 0, + num_args / 2, + args ); + + decoder->num_hints += num_args / 2; + } + + if ( hinter ) + { + if ( op == cff_op_hintmask ) + hinter->hintmask( hinter->hints, + builder->current->n_points, + decoder->num_hints, + ip ); + else + hinter->counter( hinter->hints, + decoder->num_hints, + ip ); + } #ifdef FT_DEBUG_LEVEL_TRACE { @@ -1078,7 +1127,7 @@ FT_TRACE4(( " " )); for ( maskbyte = 0; - maskbyte < ( decoder->num_hints + 7 ) >> 3; + maskbyte < (FT_UInt)(( decoder->num_hints + 7 ) >> 3); maskbyte++, ip++ ) { FT_TRACE4(( "%02X", *ip )); @@ -1617,6 +1666,18 @@ close_contour( builder ); + /* close hints recording session */ + if ( hinter ) + { + if (hinter->close( hinter->hints, builder->current->n_points ) ) + goto Syntax_Error; + + /* apply hints to the loaded glyph outline now */ + hinter->apply( hinter->hints, + builder->current, + (PSH_Globals)builder->hints_globals ); + } + /* add current outline to the glyph slot */ FT_GlyphLoader_Add( builder->loader ); @@ -2047,9 +2108,9 @@ #if 0 /* unused until we support pure CFF fonts */ - FT_LOCAL_DEF - FT_Error CFF_Compute_Max_Advance( TT_Face face, - FT_Int* max_advance ) + FT_LOCAL_DEF FT_Error + CFF_Compute_Max_Advance( TT_Face face, + FT_Int* max_advance ) { FT_Error error = 0; CFF_Decoder decoder; @@ -2060,7 +2121,7 @@ *max_advance = 0; /* Initialize load decoder */ - CFF_Init_Decoder( &decoder, face, 0, 0 ); + CFF_Init_Decoder( &decoder, face, 0, 0, 0 ); decoder.builder.metrics_only = 1; decoder.builder.load_points = 0; @@ -2114,11 +2175,11 @@ /*************************************************************************/ - FT_LOCAL_DEF - FT_Error CFF_Load_Glyph( CFF_GlyphSlot glyph, - CFF_Size size, - FT_Int glyph_index, - FT_Int load_flags ) + FT_LOCAL_DEF FT_Error + CFF_Load_Glyph( CFF_GlyphSlot glyph, + CFF_Size size, + FT_Int glyph_index, + FT_Int load_flags ) { FT_Error error; CFF_Decoder decoder; @@ -2144,8 +2205,8 @@ glyph->root.outline.n_points = 0; glyph->root.outline.n_contours = 0; - hinting = ( load_flags & FT_LOAD_NO_SCALE ) == 0 && - ( load_flags & FT_LOAD_NO_HINTING ) == 0; + hinting = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE ) == 0 && + ( load_flags & FT_LOAD_NO_HINTING ) == 0 ); glyph->root.format = ft_glyph_format_outline; /* by default */ @@ -2154,7 +2215,7 @@ FT_ULong charstring_len; - CFF_Init_Decoder( &decoder, face, size, glyph ); + CFF_Init_Decoder( &decoder, face, size, glyph, hinting ); decoder.builder.no_recurse = (FT_Bool)( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ); @@ -2182,7 +2243,7 @@ } /* save new glyph tables */ - CFF_Done_Builder( &decoder.builder ); + CFF_Builder_Done( &decoder.builder ); } font_matrix = cff->top_font.font_dict.font_matrix; @@ -2198,8 +2259,8 @@ if ( load_flags & FT_LOAD_NO_RECURSE ) { FT_Slot_Internal internal = glyph->root.internal; - + glyph->root.metrics.horiBearingX = decoder.builder.left_bearing.x; glyph->root.metrics.horiAdvance = decoder.glyph_width; internal->glyph_matrix = font_matrix; @@ -2250,11 +2311,12 @@ /* First of all, scale the points */ - for ( n = cur->n_points; n > 0; n--, vec++ ) - { - vec->x = FT_MulFix( vec->x, x_scale ); - vec->y = FT_MulFix( vec->y, y_scale ); - } + if ( !hinting ) + for ( n = cur->n_points; n > 0; n--, vec++ ) + { + vec->x = FT_MulFix( vec->x, x_scale ); + vec->y = FT_MulFix( vec->y, y_scale ); + } FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); @@ -2264,6 +2326,15 @@ metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale ); metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale ); + + if ( hinting ) + { + metrics->horiAdvance = ( metrics->horiAdvance + 32 ) & -64; + metrics->vertAdvance = ( metrics->vertAdvance + 32 ) & -64; + + metrics->vertBearingX = ( metrics->vertBearingX + 32 ) & -64; + metrics->vertBearingY = ( metrics->vertBearingY + 32 ) & -64; + } } /* compute the other metrics */ Index: xc/extras/freetype2/src/cff/cffgload.h diff -u xc/extras/freetype2/src/cff/cffgload.h:1.1.1.1 xc/extras/freetype2/src/cff/cffgload.h:1.1.1.3 --- xc/extras/freetype2/src/cff/cffgload.h:1.1.1.1 Tue May 15 23:45:33 2001 +++ xc/extras/freetype2/src/cff/cffgload.h Mon Jan 14 11:52:12 2002 @@ -4,7 +4,7 @@ /* */ /* OpenType Glyph Loader (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -112,6 +112,9 @@ FT_Error error; /* only used for memory errors */ FT_Bool metrics_only; + void* hints_funcs; /* hinter-specific */ + void* hints_globals; /* hinter-specific */ + } CFF_Builder; @@ -164,35 +167,36 @@ } CFF_Decoder; - FT_LOCAL - void CFF_Init_Decoder( CFF_Decoder* decoder, - TT_Face face, - CFF_Size size, - CFF_GlyphSlot slot ); - - FT_LOCAL - void CFF_Prepare_Decoder( CFF_Decoder* decoder, - FT_UInt glyph_index ); + FT_LOCAL void + CFF_Init_Decoder( CFF_Decoder* decoder, + TT_Face face, + CFF_Size size, + CFF_GlyphSlot slot, + FT_Bool hinting ); + + FT_LOCAL void + CFF_Prepare_Decoder( CFF_Decoder* decoder, + FT_UInt glyph_index ); #if 0 /* unused until we support pure CFF fonts */ /* Compute the maximum advance width of a font through quick parsing */ - FT_LOCAL - FT_Error CFF_Compute_Max_Advance( TT_Face face, - FT_Int* max_advance ); + FT_LOCAL FT_Error + CFF_Compute_Max_Advance( TT_Face face, + FT_Int* max_advance ); #endif /* 0 */ - FT_LOCAL - FT_Error CFF_Parse_CharStrings( CFF_Decoder* decoder, - FT_Byte* charstring_base, - FT_Int charstring_len ); - - FT_LOCAL - FT_Error CFF_Load_Glyph( CFF_GlyphSlot glyph, - CFF_Size size, - FT_Int glyph_index, - FT_Int load_flags ); + FT_LOCAL FT_Error + CFF_Parse_CharStrings( CFF_Decoder* decoder, + FT_Byte* charstring_base, + FT_Int charstring_len ); + + FT_LOCAL FT_Error + CFF_Load_Glyph( CFF_GlyphSlot glyph, + CFF_Size size, + FT_Int glyph_index, + FT_Int load_flags ); FT_END_HEADER Index: xc/extras/freetype2/src/cff/cffload.c diff -u xc/extras/freetype2/src/cff/cffload.c:1.1.1.1 xc/extras/freetype2/src/cff/cffload.c:1.1.1.4 --- xc/extras/freetype2/src/cff/cffload.c:1.1.1.1 Tue May 15 23:45:33 2001 +++ xc/extras/freetype2/src/cff/cffload.c Mon Jan 14 11:52:12 2002 @@ -2,9 +2,9 @@ /* */ /* cffload.c */ /* */ -/* OpenType and CFF data/program tables loader (body) */ +/* OpenType and CFF data/program tables loader (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -21,25 +21,16 @@ #include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_STREAM_H #include FT_INTERNAL_POSTSCRIPT_NAMES_H -#include FT_INTERNAL_CFF_ERRORS_H #include FT_TRUETYPE_TAGS_H #include "cffload.h" #include "cffparse.h" +#include "cfferrs.h" - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cffload - - static - const FT_UShort cff_isoadobe_charset[229] = +#if 1 + static const FT_UShort cff_isoadobe_charset[229] = { 0, 1, @@ -272,8 +263,7 @@ 228 }; - static - const FT_UShort cff_expert_charset[166] = + static const FT_UShort cff_expert_charset[166] = { 0, 1, @@ -443,8 +433,7 @@ 378 }; - static - const FT_UShort cff_expertsubset_charset[87] = + static const FT_UShort cff_expertsubset_charset[87] = { 0, 1, @@ -535,8 +524,7 @@ 346 }; - static - const FT_UShort cff_standard_encoding[256] = + static const FT_UShort cff_standard_encoding[256] = { 0, 0, @@ -796,8 +784,7 @@ 0 }; - static - const FT_UShort cff_expert_encoding[256] = + static const FT_UShort cff_expert_encoding[256] = { 0, 0, @@ -1056,12 +1043,30 @@ 377, 378 }; +#endif + + FT_LOCAL_DEF FT_UShort + CFF_Get_Standard_Encoding( FT_UInt charcode ) + { + return (FT_UShort)(charcode < 256 ? cff_standard_encoding[charcode] : 0); + } + + /*************************************************************************/ + /* */ + /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ + /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ + /* messages during execution. */ + /* */ +#undef FT_COMPONENT +#define FT_COMPONENT trace_cffload + + /* read a CFF offset from memory */ - static - FT_ULong cff_get_offset( FT_Byte* p, - FT_Byte off_size ) + static FT_ULong + cff_get_offset( FT_Byte* p, + FT_Byte off_size ) { FT_ULong result; @@ -1076,10 +1081,10 @@ } - static - FT_Error cff_new_index( CFF_Index* index, - FT_Stream stream, - FT_Bool load ) + static FT_Error + cff_new_index( CFF_Index* index, + FT_Stream stream, + FT_Bool load ) { FT_Error error; FT_Memory memory = stream->memory; @@ -1149,8 +1154,8 @@ } - static - void cff_done_index( CFF_Index* index ) + static void + cff_done_index( CFF_Index* index ) { if ( index->stream ) { @@ -1167,9 +1172,9 @@ } - static - FT_Error cff_explicit_index( CFF_Index* index, - FT_Byte*** table ) + static FT_Error + cff_explicit_index( CFF_Index* index, + FT_Byte*** table ) { FT_Error error = 0; FT_Memory memory = index->stream->memory; @@ -1199,11 +1204,11 @@ } - FT_LOCAL_DEF - FT_Error CFF_Access_Element( CFF_Index* index, - FT_UInt element, - FT_Byte** pbytes, - FT_ULong* pbyte_len ) + FT_LOCAL_DEF FT_Error + CFF_Access_Element( CFF_Index* index, + FT_UInt element, + FT_Byte** pbytes, + FT_ULong* pbyte_len ) { FT_Error error = 0; @@ -1264,9 +1269,9 @@ } - FT_LOCAL_DEF - void CFF_Forget_Element( CFF_Index* index, - FT_Byte** pbytes ) + FT_LOCAL_DEF void + CFF_Forget_Element( CFF_Index* index, + FT_Byte** pbytes ) { if ( index->bytes == 0 ) { @@ -1278,9 +1283,9 @@ } - FT_LOCAL_DEF - FT_String* CFF_Get_Name( CFF_Index* index, - FT_UInt element ) + FT_LOCAL_DEF FT_String* + CFF_Get_Name( CFF_Index* index, + FT_UInt element ) { FT_Memory memory = index->stream->memory; FT_Byte* bytes; @@ -1305,10 +1310,10 @@ } - FT_LOCAL_DEF - FT_String* CFF_Get_String( CFF_Index* index, - FT_UInt sid, - PSNames_Interface* interface ) + FT_LOCAL_DEF FT_String* + CFF_Get_String( CFF_Index* index, + FT_UInt sid, + PSNames_Interface* interface ) { /* if it is not a standard string, return it */ if ( sid > 390 ) @@ -1349,9 +1354,9 @@ /*************************************************************************/ - static - void CFF_Done_FD_Select( CFF_FD_Select* select, - FT_Stream stream ) + static void + CFF_Done_FD_Select( CFF_FD_Select* select, + FT_Stream stream ) { if ( select->data ) RELEASE_Frame( select->data ); @@ -1362,11 +1367,11 @@ } - static - FT_Error CFF_Load_FD_Select( CFF_FD_Select* select, - FT_UInt num_glyphs, - FT_Stream stream, - FT_ULong offset ) + static FT_Error + CFF_Load_FD_Select( CFF_FD_Select* select, + FT_UInt num_glyphs, + FT_Stream stream, + FT_ULong offset ) { FT_Error error; FT_Byte format; @@ -1406,9 +1411,9 @@ } - FT_LOCAL_DEF - FT_Byte CFF_Get_FD( CFF_FD_Select* select, - FT_UInt glyph_index ) + FT_LOCAL_DEF FT_Byte + CFF_Get_FD( CFF_FD_Select* select, + FT_UInt glyph_index ) { FT_Byte fd = 0; @@ -1476,9 +1481,9 @@ /*************************************************************************/ /*************************************************************************/ - static - void CFF_Done_Encoding( CFF_Encoding* encoding, - FT_Stream stream ) + static void + CFF_Done_Encoding( CFF_Encoding* encoding, + FT_Stream stream ) { FT_Memory memory = stream->memory; @@ -1492,9 +1497,9 @@ } - static - void CFF_Done_Charset( CFF_Charset* charset, - FT_Stream stream ) + static void + CFF_Done_Charset( CFF_Charset* charset, + FT_Stream stream ) { FT_Memory memory = stream->memory; @@ -1506,12 +1511,12 @@ } - static - FT_Error CFF_Load_Charset( CFF_Charset* charset, - FT_UInt num_glyphs, - FT_Stream stream, - FT_ULong base_offset, - FT_ULong offset ) + static FT_Error + CFF_Load_Charset( CFF_Charset* charset, + FT_UInt num_glyphs, + FT_Stream stream, + FT_ULong base_offset, + FT_ULong offset ) { FT_Memory memory = stream->memory; FT_Error error = 0; @@ -1588,7 +1593,7 @@ default: FT_ERROR(( "CFF_Load_Charset: invalid table format!\n" )); - error = FT_Err_Invalid_File_Format; + error = CFF_Err_Invalid_File_Format; goto Exit; } } @@ -1610,7 +1615,7 @@ { FT_ERROR(("CFF_Load_Charset: implicit charset not equal to\n" "predefined charset (Adobe ISO-Latin)!\n" )); - error = FT_Err_Invalid_File_Format; + error = CFF_Err_Invalid_File_Format; goto Exit; } @@ -1619,7 +1624,7 @@ goto Exit; /* Copy the predefined charset into the allocated memory. */ - MEM_Copy( charset->sids, cff_isoadobe_charset, + MEM_Copy( charset->sids, cff_isoadobe_charset, num_glyphs * sizeof ( FT_UShort ) ); break; @@ -1629,7 +1634,7 @@ { FT_ERROR(( "CFF_Load_Charset: implicit charset not equal to\n" "predefined charset (Adobe Expert)!\n" )); - error = FT_Err_Invalid_File_Format; + error = CFF_Err_Invalid_File_Format; goto Exit; } @@ -1648,7 +1653,7 @@ { FT_ERROR(( "CFF_Load_Charset: implicit charset not equal to\n" "predefined charset (Adobe Expert Subset)!\n" )); - error = FT_Err_Invalid_File_Format; + error = CFF_Err_Invalid_File_Format; goto Exit; } @@ -1663,7 +1668,7 @@ break; default: - error = FT_Err_Invalid_File_Format; + error = CFF_Err_Invalid_File_Format; goto Exit; } } @@ -1685,13 +1690,13 @@ } - static - FT_Error CFF_Load_Encoding( CFF_Encoding* encoding, - CFF_Charset* charset, - FT_UInt num_glyphs, - FT_Stream stream, - FT_ULong base_offset, - FT_ULong offset ) + static FT_Error + CFF_Load_Encoding( CFF_Encoding* encoding, + CFF_Charset* charset, + FT_UInt num_glyphs, + FT_Stream stream, + FT_ULong base_offset, + FT_ULong offset ) { FT_Memory memory = stream->memory; FT_Error error = 0; @@ -1704,7 +1709,7 @@ /* Check for charset->sids. If we do not have this, we fail. */ if ( !charset->sids ) { - error = FT_Err_Invalid_File_Format; + error = CFF_Err_Invalid_File_Format; goto Exit; } @@ -1757,7 +1762,7 @@ goto Exit; /* Assign code to GID mapping. */ - encoding->codes[glyph_code] = j; + encoding->codes[glyph_code] = (FT_UShort)j; /* Assign code to SID mapping. */ encoding->sids[glyph_code] = charset->sids[j]; @@ -1768,8 +1773,8 @@ case 1: { FT_Byte nleft; - FT_Byte i = 1; - FT_Byte k; + FT_UInt i = 1; + FT_UInt k; /* Parse the Format1 ranges. */ @@ -1790,11 +1795,11 @@ for ( k = i; k < nleft + i; k++, glyph_code++ ) { /* Make sure k is not too big. */ - if ( (FT_UInt)k > num_glyphs ) + if ( k > num_glyphs ) goto Exit; /* Assign code to GID mapping. */ - encoding->codes[glyph_code] = k; + encoding->codes[glyph_code] = (FT_UShort)k; /* Assign code to SID mapping. */ encoding->sids[glyph_code] = charset->sids[k]; @@ -1805,7 +1810,7 @@ default: FT_ERROR(( "CFF_Load_Encoding: invalid table format!\n" )); - error = FT_Err_Invalid_File_Format; + error = CFF_Err_Invalid_File_Format; goto Exit; } @@ -1841,7 +1846,7 @@ } /* Now, make the assignment. */ - encoding->codes[glyph_code] = glyph_id; + encoding->codes[glyph_code] = (FT_UShort)glyph_id; } } } @@ -1883,7 +1888,7 @@ encoding->sids [j] = 0; } else - encoding->codes[j] = i; + encoding->codes[j] = (FT_UShort)i; } } break; @@ -1914,16 +1919,15 @@ encoding->sids [j] = 0; } else - encoding->codes[j] = i; + encoding->codes[j] = (FT_UShort)i; } } break; default: FT_ERROR(( "CFF_Load_Encoding: invalid table format!\n" )); - error = FT_Err_Invalid_File_Format; + error = CFF_Err_Invalid_File_Format; goto Exit; - break; } } @@ -1950,12 +1954,12 @@ } - static - FT_Error CFF_Load_SubFont( CFF_SubFont* font, - CFF_Index* index, - FT_UInt font_index, - FT_Stream stream, - FT_ULong base_offset ) + static FT_Error + CFF_Load_SubFont( CFF_SubFont* font, + CFF_Index* index, + FT_UInt font_index, + FT_Stream stream, + FT_ULong base_offset ) { FT_Error error; CFF_Parser parser; @@ -2038,9 +2042,9 @@ } - static - void CFF_Done_SubFont( FT_Memory memory, - CFF_SubFont* subfont ) + static void + CFF_Done_SubFont( FT_Memory memory, + CFF_SubFont* subfont ) { if ( subfont ) { @@ -2050,10 +2054,10 @@ } - FT_LOCAL_DEF - FT_Error CFF_Load_Font( FT_Stream stream, - FT_Int face_index, - CFF_Font* font ) + FT_LOCAL_DEF FT_Error + CFF_Load_Font( FT_Stream stream, + FT_Int face_index, + CFF_Font* font ) { static const FT_Frame_Field cff_header_fields[] = { @@ -2091,7 +2095,7 @@ font->absolute_offsize > 4 ) { FT_TRACE2(( "[not a CFF font header!]\n" )); - error = FT_Err_Unknown_File_Format; + error = CFF_Err_Unknown_File_Format; goto Exit; } @@ -2189,7 +2193,7 @@ if ( dict->charstrings_offset == 0 ) { FT_ERROR(( "CFF_Load_Font: no charstrings offset!\n" )); - error = FT_Err_Unknown_File_Format; + error = CFF_Err_Unknown_File_Format; goto Exit; } @@ -2215,7 +2219,7 @@ base_offset, dict->charset_offset ); if ( error ) goto Exit; - + error = CFF_Load_Encoding( &font->encoding, &font->charset, font->num_glyphs, @@ -2224,7 +2228,7 @@ dict->encoding_offset ); if ( error ) goto Exit; - + /* get the font name */ font->font_name = CFF_Get_Name( &font->name_index, face_index ); @@ -2233,8 +2237,8 @@ } - FT_LOCAL_DEF - void CFF_Done_Font( CFF_Font* font ) + FT_LOCAL_DEF void + CFF_Done_Font( CFF_Font* font ) { FT_Memory memory = font->memory; FT_UInt index; @@ -2246,9 +2250,15 @@ cff_done_index( &font->name_index ); cff_done_index( &font->charstrings_index ); - /* release font dictionaries */ - for ( index = 0; index < font->num_subfonts; index++ ) - CFF_Done_SubFont( memory, font->subfonts[index] ); + /* release font dictionaries, but only if working with */ + /* a CID keyed CFF font */ + if ( font->num_subfonts > 0 ) + { + for ( index = 0; index < font->num_subfonts; index++ ) + CFF_Done_SubFont( memory, font->subfonts[index] ); + + FREE( font->subfonts ); + } CFF_Done_Encoding( &font->encoding, font->stream ); CFF_Done_Charset( &font->charset, font->stream ); Index: xc/extras/freetype2/src/cff/cffload.h diff -u xc/extras/freetype2/src/cff/cffload.h:1.1.1.1 xc/extras/freetype2/src/cff/cffload.h:1.1.1.4 --- xc/extras/freetype2/src/cff/cffload.h:1.1.1.1 Tue May 15 23:45:33 2001 +++ xc/extras/freetype2/src/cff/cffload.h Mon Jan 14 11:52:12 2002 @@ -4,7 +4,7 @@ /* */ /* OpenType & CFF data/program tables loader (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,39 +27,43 @@ FT_BEGIN_HEADER - FT_LOCAL - FT_String* CFF_Get_Name( CFF_Index* index, - FT_UInt element ); + FT_LOCAL FT_UShort + CFF_Get_Standard_Encoding( FT_UInt charcode ); - FT_LOCAL - FT_String* CFF_Get_String( CFF_Index* index, - FT_UInt sid, - PSNames_Interface* interface ); + FT_LOCAL FT_String* + CFF_Get_Name( CFF_Index* index, + FT_UInt element ); - FT_LOCAL - FT_Error CFF_Access_Element( CFF_Index* index, - FT_UInt element, - FT_Byte** pbytes, - FT_ULong* pbyte_len ); + FT_LOCAL FT_String* + CFF_Get_String( CFF_Index* index, + FT_UInt sid, + PSNames_Interface* interface ); - FT_LOCAL - void CFF_Forget_Element( CFF_Index* index, - FT_Byte** pbytes ); + FT_LOCAL FT_Error + CFF_Access_Element( CFF_Index* index, + FT_UInt element, + FT_Byte** pbytes, + FT_ULong* pbyte_len ); - FT_LOCAL - FT_Error CFF_Load_Font( FT_Stream stream, - FT_Int face_index, - CFF_Font* font ); + FT_LOCAL void + CFF_Forget_Element( CFF_Index* index, + FT_Byte** pbytes ); - FT_LOCAL - void CFF_Done_Font( CFF_Font* font ); + FT_LOCAL FT_Error + CFF_Load_Font( FT_Stream stream, + FT_Int face_index, + CFF_Font* font ); - FT_LOCAL - FT_Byte CFF_Get_FD( CFF_FD_Select* select, - FT_UInt glyph_index ); + FT_LOCAL void + CFF_Done_Font( CFF_Font* font ); + + + FT_LOCAL FT_Byte + CFF_Get_FD( CFF_FD_Select* select, + FT_UInt glyph_index ); FT_END_HEADER Index: xc/extras/freetype2/src/cff/cffobjs.c diff -u xc/extras/freetype2/src/cff/cffobjs.c:1.1.1.1 xc/extras/freetype2/src/cff/cffobjs.c:1.1.1.4 --- xc/extras/freetype2/src/cff/cffobjs.c:1.1.1.1 Tue May 15 23:45:33 2001 +++ xc/extras/freetype2/src/cff/cffobjs.c Mon Jan 14 11:52:12 2002 @@ -4,7 +4,7 @@ /* */ /* OpenType objects manager (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -25,10 +25,12 @@ #include FT_TRUETYPE_TAGS_H #include FT_INTERNAL_SFNT_H #include FT_INTERNAL_POSTSCRIPT_NAMES_H +#include FT_INTERNAL_POSTSCRIPT_HINTS_H #include "cffobjs.h" #include "cffload.h" -#include FT_INTERNAL_CFF_ERRORS_H +#include "cfferrs.h" + #include <string.h> /* for strlen() */ @@ -42,15 +44,192 @@ #define FT_COMPONENT trace_cffobjs + + /*************************************************************************/ /* */ + /* SIZE FUNCTIONS */ + /* */ + /* Note that we store the global hints in the size's "internal" root */ + /* field. */ + /* */ + /*************************************************************************/ + + + static PSH_Globals_Funcs + CFF_Size_Get_Globals_Funcs( CFF_Size size ) + { + CFF_Face face = (CFF_Face)size->face; + CFF_Font* font = face->extra.data; + PSHinter_Interface* pshinter = font->pshinter; + FT_Module module; + + + module = FT_Get_Module( size->face->driver->root.library, + "pshinter" ); + return ( module && pshinter && pshinter->get_globals_funcs ) + ? pshinter->get_globals_funcs( module ) + : 0; + } + + + FT_LOCAL_DEF void + CFF_Size_Done( CFF_Size size ) + { + if ( size->internal ) + { + PSH_Globals_Funcs funcs; + + + funcs = CFF_Size_Get_Globals_Funcs( size ); + if ( funcs ) + funcs->destroy( (PSH_Globals)size->internal ); + + size->internal = 0; + } + } + + + FT_LOCAL_DEF FT_Error + CFF_Size_Init( CFF_Size size ) + { + FT_Error error = 0; + PSH_Globals_Funcs funcs = CFF_Size_Get_Globals_Funcs( size ); + + + if ( funcs ) + { + PSH_Globals globals; + CFF_Face face = (CFF_Face)size->face; + CFF_Font* font = face->extra.data; + CFF_SubFont* subfont = &font->top_font; + + CFF_Private* cpriv = &subfont->private_dict; + T1_Private priv; + + + /* IMPORTANT: The CFF and Type1 private dictionaries have */ + /* slightly different structures; we need to */ + /* synthetize a type1 dictionary on the fly here. */ + + { + FT_UInt n, count; + + + MEM_Set( &priv, 0, sizeof ( priv ) ); + + count = priv.num_blue_values = cpriv->num_blue_values; + for ( n = 0; n < count; n++ ) + priv.blue_values[n] = (FT_Short) cpriv->blue_values[n]; + + count = priv.num_other_blues = cpriv->num_other_blues; + for ( n = 0; n < count; n++ ) + priv.other_blues[n] = (FT_Short) cpriv->other_blues[n]; + + count = priv.num_family_blues = cpriv->num_family_blues; + for ( n = 0; n < count; n++ ) + priv.family_blues[n] = (FT_Short) cpriv->family_blues[n]; + + count = priv.num_family_other_blues = cpriv->num_family_other_blues; + for ( n = 0; n < count; n++ ) + priv.family_other_blues[n] = (FT_Short) cpriv->family_other_blues[n]; + + priv.blue_scale = cpriv->blue_scale; + priv.blue_shift = cpriv->blue_shift; + priv.blue_fuzz = cpriv->blue_fuzz; + + priv.standard_width[0] = (FT_UShort) cpriv->standard_width; + priv.standard_height[0] = (FT_UShort) cpriv->standard_height; + + count = priv.num_snap_widths = cpriv->num_snap_widths; + for ( n = 0; n < count; n++ ) + priv.snap_widths[n] = (FT_Short) cpriv->snap_widths[n]; + + count = priv.num_snap_heights = cpriv->num_snap_heights; + for ( n = 0; n < count; n++ ) + priv.snap_heights[n] = (FT_Short) cpriv->snap_heights[n]; + + priv.force_bold = cpriv->force_bold; + priv.language_group = cpriv->language_group; + priv.lenIV = cpriv->lenIV; + } + + error = funcs->create( size->face->memory, &priv, &globals ); + if ( !error ) + size->internal = (FT_Size_Internal)(void*)globals; + } + + return error; + } + + + FT_LOCAL_DEF FT_Error + CFF_Size_Reset( CFF_Size size ) + { + PSH_Globals_Funcs funcs = CFF_Size_Get_Globals_Funcs( size ); + FT_Error error = 0; + + + if ( funcs ) + error = funcs->set_scale( (PSH_Globals)size->internal, + size->metrics.x_scale, + size->metrics.y_scale, + 0, 0 ); + return error; + } + + + /*************************************************************************/ + /* */ + /* SLOT FUNCTIONS */ + /* */ + /*************************************************************************/ + + FT_LOCAL_DEF void + CFF_GlyphSlot_Done( CFF_GlyphSlot slot ) + { + slot->root.internal->glyph_hints = 0; + } + + + FT_LOCAL_DEF FT_Error + CFF_GlyphSlot_Init( CFF_GlyphSlot slot ) + { + CFF_Face face = (CFF_Face)slot->root.face; + CFF_Font* font = face->extra.data; + PSHinter_Interface* pshinter = font->pshinter; + + + if ( pshinter ) + { + FT_Module module; + + + module = FT_Get_Module( slot->root.face->driver->root.library, + "pshinter" ); + if ( module ) + { + T2_Hints_Funcs funcs; + + + funcs = pshinter->get_t2_funcs( module ); + slot->root.internal->glyph_hints = (void*)funcs; + } + } + + return 0; + } + + + /*************************************************************************/ + /* */ /* FACE FUNCTIONS */ /* */ /*************************************************************************/ - static - FT_String* CFF_StrCopy( FT_Memory memory, - const FT_String* source ) + static FT_String* + CFF_StrCopy( FT_Memory memory, + const FT_String* source ) { FT_Error error; FT_String* result = 0; @@ -70,10 +249,10 @@ /* this function is used to build a Unicode charmap from the glyph names */ /* in a file */ - static - FT_Error CFF_Build_Unicode_Charmap( CFF_Face face, - FT_ULong base_offset, - PSNames_Interface* psnames ) + static FT_Error + CFF_Build_Unicode_Charmap( CFF_Face face, + FT_ULong base_offset, + PSNames_Interface* psnames ) { CFF_Font* font = (CFF_Font*)face->extra.data; FT_Memory memory = FT_FACE_MEMORY(face); @@ -187,9 +366,9 @@ #endif /* 0 */ - static - FT_Encoding find_encoding( int platform_id, - int encoding_id ) + static FT_Encoding + find_encoding( int platform_id, + int encoding_id ) { typedef struct TEncoding { @@ -239,7 +418,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* CFF_Init_Face */ + /* CFF_Face_Init */ /* */ /* <Description> */ /* Initializes a given OpenType face object. */ @@ -259,18 +438,19 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL - FT_Error CFF_Init_Face( FT_Stream stream, - CFF_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - FT_Error error; - SFNT_Interface* sfnt; - PSNames_Interface* psnames; - FT_Bool pure_cff = 1; - FT_Bool sfnt_format = 0; + FT_LOCAL_DEF FT_Error + CFF_Face_Init( FT_Stream stream, + CFF_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ) + { + FT_Error error; + SFNT_Interface* sfnt; + PSNames_Interface* psnames; + PSHinter_Interface* pshinter; + FT_Bool pure_cff = 1; + FT_Bool sfnt_format = 0; sfnt = (SFNT_Interface*)FT_Get_Module_Interface( @@ -281,6 +461,9 @@ psnames = (PSNames_Interface*)FT_Get_Module_Interface( face->root.driver->root.library, "psnames" ); + pshinter = (PSHinter_Interface*)FT_Get_Module_Interface( + face->root.driver->root.library, "pshinter" ); + /* create input stream from resource */ if ( FILE_Seek( 0 ) ) goto Exit; @@ -336,7 +519,7 @@ /* rewind to start of file; we are going to load a pure-CFF font */ if ( FILE_Seek( 0 ) ) goto Exit; - error = FT_Err_Ok; + error = CFF_Err_Ok; } /* now load and parse the CFF table in the file */ @@ -345,23 +528,24 @@ FT_Memory memory = face->root.memory; FT_Face root; FT_UInt flags; - FT_ULong base_offset; if ( ALLOC( cff, sizeof ( *cff ) ) ) goto Exit; - base_offset = FILE_Pos(); - face->extra.data = cff; error = CFF_Load_Font( stream, face_index, cff ); if ( error ) goto Exit; + cff->pshinter = pshinter; + /* Complement the root flags with some interesting information. */ /* Note that this is only necessary for pure CFF and CEF fonts. */ + + root = &face->root; + root->num_glyphs = cff->num_glyphs; - root = &face->root; if ( pure_cff ) { CFF_Font_Dict* dict = &cff->top_font.font_dict; @@ -370,7 +554,7 @@ /* we need the `PSNames' module for pure-CFF and CEF formats */ if ( !psnames ) { - FT_ERROR(( "CFF_Init_Face:" )); + FT_ERROR(( "CFF_Face_Init:" )); FT_ERROR(( " cannot open CFF & CEF fonts\n" )); FT_ERROR(( " " )); FT_ERROR(( " without the `PSNames' module\n" )); @@ -387,10 +571,11 @@ root->num_glyphs = cff->charstrings_index.count; /* set global bbox, as well as EM size */ - root->bbox = dict->font_bbox; - root->ascender = (FT_Short)( root->bbox.yMax >> 16 ); - root->descender = (FT_Short)( root->bbox.yMin >> 16 ); - root->height = ( ( root->ascender - root->descender ) * 12 ) / 10; + root->bbox = dict->font_bbox; + root->ascender = (FT_Short)( root->bbox.yMax >> 16 ); + root->descender = (FT_Short)( root->bbox.yMin >> 16 ); + root->height = (FT_Short)( + ( ( root->ascender - root->descender ) * 12 ) / 10 ); if ( dict->units_per_em ) root->units_per_EM = dict->units_per_em; @@ -476,8 +661,8 @@ charmap->root.face = (FT_Face)face; - charmap->root.platform_id = platform; - charmap->root.encoding_id = encoding; + charmap->root.platform_id = (FT_UShort)platform; + charmap->root.encoding_id = (FT_UShort)encoding; charmap->root.encoding = find_encoding( platform, encoding ); /* now, set root->charmap with a unicode charmap */ @@ -496,7 +681,7 @@ return error; Bad_Format: - error = FT_Err_Unknown_File_Format; + error = CFF_Err_Unknown_File_Format; goto Exit; } @@ -504,7 +689,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* CFF_Done_Face */ + /* CFF_Face_Done */ /* */ /* <Description> */ /* Finalizes a given face object. */ @@ -512,8 +697,8 @@ /* <Input> */ /* face :: A pointer to the face object to destroy. */ /* */ - FT_LOCAL - void CFF_Done_Face( CFF_Face face ) + FT_LOCAL_DEF void + CFF_Face_Done( CFF_Face face ) { FT_Memory memory = face->root.memory; SFNT_Interface* sfnt = (SFNT_Interface*)face->sfnt; @@ -538,7 +723,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* CFF_Init_Driver */ + /* CFF_Driver_Init */ /* */ /* <Description> */ /* Initializes a given OpenType driver object. */ @@ -549,8 +734,8 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error CFF_Init_Driver( CFF_Driver driver ) + FT_LOCAL_DEF FT_Error + CFF_Driver_Init( CFF_Driver driver ) { /* init extension registry if needed */ @@ -571,7 +756,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* CFF_Done_Driver */ + /* CFF_Driver_Done */ /* */ /* <Description> */ /* Finalizes a given OpenType driver. */ @@ -579,8 +764,8 @@ /* <Input> */ /* driver :: A handle to the target OpenType driver. */ /* */ - FT_LOCAL_DEF - void CFF_Done_Driver( CFF_Driver driver ) + FT_LOCAL_DEF void + CFF_Driver_Done( CFF_Driver driver ) { /* destroy extensions registry if needed */ Index: xc/extras/freetype2/src/cff/cffobjs.h diff -u xc/extras/freetype2/src/cff/cffobjs.h:1.1.1.1 xc/extras/freetype2/src/cff/cffobjs.h:1.1.1.4 --- xc/extras/freetype2/src/cff/cffobjs.h:1.1.1.1 Tue May 15 23:45:33 2001 +++ xc/extras/freetype2/src/cff/cffobjs.h Mon Jan 14 11:52:12 2002 @@ -4,7 +4,7 @@ /* */ /* OpenType objects manager (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,7 +23,6 @@ #include <ft2build.h> #include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_CFF_TYPES_H -#include FT_INTERNAL_CFF_ERRORS_H #include FT_INTERNAL_POSTSCRIPT_NAMES_H @@ -110,30 +109,45 @@ } CFF_DriverRec; + FT_LOCAL FT_Error + CFF_Size_Init( CFF_Size size ); + + FT_LOCAL void + CFF_Size_Done( CFF_Size size ); + + FT_LOCAL FT_Error + CFF_Size_Reset( CFF_Size size ); + + FT_LOCAL void + CFF_GlyphSlot_Done( CFF_GlyphSlot slot ); + + FT_LOCAL FT_Error + CFF_GlyphSlot_Init( CFF_GlyphSlot slot ); + /*************************************************************************/ /* */ /* Face functions */ /* */ - FT_LOCAL - FT_Error CFF_Init_Face( FT_Stream stream, - CFF_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); + FT_LOCAL FT_Error + CFF_Face_Init( FT_Stream stream, + CFF_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); - FT_LOCAL - void CFF_Done_Face( CFF_Face face ); + FT_LOCAL void + CFF_Face_Done( CFF_Face face ); /*************************************************************************/ /* */ /* Driver functions */ /* */ - FT_LOCAL - FT_Error CFF_Init_Driver( CFF_Driver driver ); + FT_LOCAL FT_Error + CFF_Driver_Init( CFF_Driver driver ); - FT_LOCAL - void CFF_Done_Driver( CFF_Driver driver ); + FT_LOCAL void + CFF_Driver_Done( CFF_Driver driver ); FT_END_HEADER Index: xc/extras/freetype2/src/cff/cffparse.c diff -u xc/extras/freetype2/src/cff/cffparse.c:1.1.1.1 xc/extras/freetype2/src/cff/cffparse.c:1.1.1.3 --- xc/extras/freetype2/src/cff/cffparse.c:1.1.1.1 Tue May 15 23:45:33 2001 +++ xc/extras/freetype2/src/cff/cffparse.c Sun Dec 16 12:49:29 2001 @@ -4,7 +4,7 @@ /* */ /* CFF token stream parser (body) */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,10 +18,11 @@ #include <ft2build.h> #include "cffparse.h" -#include FT_INTERNAL_CFF_ERRORS_H #include FT_INTERNAL_STREAM_H +#include "cfferrs.h" + /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -32,10 +33,6 @@ #define FT_COMPONENT trace_cffparse -#define CFF_Err_Stack_Underflow FT_Err_Invalid_Argument -#define CFF_Err_Syntax_Error FT_Err_Invalid_Argument - - enum { cff_kind_none = 0, @@ -66,10 +63,10 @@ } CFF_Field_Handler; - FT_LOCAL_DEF - void CFF_Parser_Init( CFF_Parser* parser, - FT_UInt code, - void* object ) + FT_LOCAL_DEF void + CFF_Parser_Init( CFF_Parser* parser, + FT_UInt code, + void* object ) { MEM_Set( parser, 0, sizeof ( *parser ) ); @@ -80,9 +77,9 @@ /* read an integer */ - static - FT_Long cff_parse_integer( FT_Byte* start, - FT_Byte* limit ) + static FT_Long + cff_parse_integer( FT_Byte* start, + FT_Byte* limit ) { FT_Byte* p = start; FT_Int v = *p++; @@ -139,16 +136,16 @@ /* read a real */ - static - FT_Fixed cff_parse_real( FT_Byte* start, - FT_Byte* limit, - FT_Int power_ten ) + static FT_Fixed + cff_parse_real( FT_Byte* start, + FT_Byte* limit, + FT_Int power_ten ) { FT_Byte* p = start; FT_Long num, divider, result, exp; FT_Int sign = 0, exp_sign = 0; - FT_Byte nib; - FT_Byte phase; + FT_UInt nib; + FT_UInt phase; result = 0; @@ -287,8 +284,8 @@ /* read a number, either integer or real */ - static - FT_Long cff_parse_num( FT_Byte** d ) + static FT_Long + cff_parse_num( FT_Byte** d ) { return ( **d == 30 ? ( cff_parse_real ( d[0], d[1], 0 ) >> 16 ) : cff_parse_integer( d[0], d[1] ) ); @@ -296,8 +293,8 @@ /* read a floating point number, either integer or real */ - static - FT_Fixed cff_parse_fixed( FT_Byte** d ) + static FT_Fixed + cff_parse_fixed( FT_Byte** d ) { return ( **d == 30 ? cff_parse_real ( d[0], d[1], 0 ) : cff_parse_integer( d[0], d[1] ) << 16 ); @@ -305,16 +302,16 @@ /* read a floating point number, either integer or real, */ /* but return 1000 times the number read in. */ - static - FT_Fixed cff_parse_fixed_thousand( FT_Byte** d ) + static FT_Fixed + cff_parse_fixed_thousand( FT_Byte** d ) { return **d == 30 ? cff_parse_real ( d[0], d[1], 3 ) : (FT_Fixed)FT_MulFix( cff_parse_integer( d[0], d[1] ) << 16, 1000 ); } - static - FT_Error cff_parse_font_matrix( CFF_Parser* parser ) + static FT_Error + cff_parse_font_matrix( CFF_Parser* parser ) { CFF_Font_Dict* dict = (CFF_Font_Dict*)parser->object; FT_Matrix* matrix = &dict->font_matrix; @@ -338,8 +335,7 @@ temp = ABS( matrix->yy ); - *upm = (FT_UShort)( FT_DivFix( 0x10000L, - FT_DivFix( temp, 1000 ) ) >> 16 ); + *upm = (FT_UShort)FT_DivFix( 0x10000L, FT_DivFix( temp, 1000 ) ); if ( temp != 0x10000L ) { @@ -362,8 +358,8 @@ } - static - FT_Error cff_parse_font_bbox( CFF_Parser* parser ) + static FT_Error + cff_parse_font_bbox( CFF_Parser* parser ) { CFF_Font_Dict* dict = (CFF_Font_Dict*)parser->object; FT_BBox* bbox = &dict->font_bbox; @@ -386,8 +382,8 @@ } - static - FT_Error cff_parse_private_dict( CFF_Parser* parser ) + static FT_Error + cff_parse_private_dict( CFF_Parser* parser ) { CFF_Font_Dict* dict = (CFF_Font_Dict*)parser->object; FT_Byte** data = parser->stack; @@ -407,8 +403,8 @@ } - static - FT_Error cff_parse_cid_ros( CFF_Parser* parser ) + static FT_Error + cff_parse_cid_ros( CFF_Parser* parser ) { CFF_Font_Dict* dict = (CFF_Font_Dict*)parser->object; FT_Byte** data = parser->stack; @@ -483,10 +479,10 @@ }; - FT_LOCAL_DEF - FT_Error CFF_Parser_Run( CFF_Parser* parser, - FT_Byte* start, - FT_Byte* limit ) + FT_LOCAL_DEF FT_Error + CFF_Parser_Run( CFF_Parser* parser, + FT_Byte* start, + FT_Byte* limit ) { FT_Byte* p = start; FT_Error error = CFF_Err_Ok; @@ -499,7 +495,7 @@ while ( p < limit ) { - FT_Byte v = *p; + FT_UInt v = *p; if ( v >= 27 && v != 31 ) Index: xc/extras/freetype2/src/cff/cffparse.h diff -u xc/extras/freetype2/src/cff/cffparse.h:1.1.1.1 xc/extras/freetype2/src/cff/cffparse.h:1.1.1.2 --- xc/extras/freetype2/src/cff/cffparse.h:1.1.1.1 Tue May 15 23:45:33 2001 +++ xc/extras/freetype2/src/cff/cffparse.h Sun Dec 16 12:49:29 2001 @@ -4,7 +4,7 @@ /* */ /* CFF token stream parser (specification) */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -49,15 +49,15 @@ } CFF_Parser; - FT_LOCAL - void CFF_Parser_Init( CFF_Parser* parser, - FT_UInt code, - void* object ); - - FT_LOCAL - FT_Error CFF_Parser_Run( CFF_Parser* parser, - FT_Byte* start, - FT_Byte* limit ); + FT_LOCAL void + CFF_Parser_Init( CFF_Parser* parser, + FT_UInt code, + void* object ); + + FT_LOCAL FT_Error + CFF_Parser_Run( CFF_Parser* parser, + FT_Byte* start, + FT_Byte* limit ); FT_END_HEADER Index: xc/extras/freetype2/src/cff/cfftoken.h diff -u xc/extras/freetype2/src/cff/cfftoken.h:1.1.1.1 xc/extras/freetype2/src/cff/cfftoken.h:1.1.1.2 --- xc/extras/freetype2/src/cff/cfftoken.h:1.1.1.1 Tue May 15 23:45:32 2001 +++ xc/extras/freetype2/src/cff/cfftoken.h Sun Dec 16 12:49:29 2001 @@ -4,7 +4,7 @@ /* */ /* CFF token definitions */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/cff/rules.mk diff -u xc/extras/freetype2/src/cff/rules.mk:1.1.1.2 xc/extras/freetype2/src/cff/rules.mk:1.1.1.3 --- xc/extras/freetype2/src/cff/rules.mk:1.1.1.2 Tue May 15 23:45:32 2001 +++ xc/extras/freetype2/src/cff/rules.mk Sun Sep 9 22:56:03 2001 @@ -33,7 +33,8 @@ # CFF driver headers # CFF_DRV_H := $(CFF_DRV_SRC:%.c=%.h) \ - $(CFF_DIR_)cfftoken.h + $(CFF_DIR_)cfftoken.h \ + $(CFF_DIR_)cfferrs.h # CFF driver object(s) Index: xc/extras/freetype2/src/cff/t2driver.c diff -u xc/extras/freetype2/src/cff/t2driver.c:1.1.1.1 xc/extras/freetype2/src/cff/t2driver.c:removed --- xc/extras/freetype2/src/cff/t2driver.c:1.1.1.1 Fri Dec 8 16:26:20 2000 +++ xc/extras/freetype2/src/cff/t2driver.c Fri Jan 18 15:21:54 2002 @@ -1,378 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2driver.c */ -/* */ -/* OpenType font driver implementation (body). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <freetype/freetype.h> -#include <freetype/internal/ftdebug.h> -#include <freetype/internal/ftstream.h> -#include <freetype/internal/sfnt.h> -#include <freetype/ttnameid.h> - -#include <freetype/internal/t2errors.h> - - -#ifdef FT_FLAT_COMPILE - -#include "t2driver.h" -#include "t2gload.h" - -#else - -#include <cff/t2driver.h> -#include <cff/t2gload.h> - -#endif - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t2driver - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** F A C E S ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#undef PAIR_TAG -#define PAIR_TAG( left, right ) ( ( (FT_ULong)left << 16 ) | \ - (FT_ULong)right ) - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Get_Kerning */ - /* */ - /* <Description> */ - /* A driver method used to return the kerning vector between two */ - /* glyphs of the same face. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* left_glyph :: The index of the left glyph in the kern pair. */ - /* */ - /* right_glyph :: The index of the right glyph in the kern pair. */ - /* */ - /* <Output> */ - /* kerning :: The kerning vector. This is in font units for */ - /* scalable formats, and in pixels for fixed-sizes */ - /* formats. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Only horizontal layouts (left-to-right & right-to-left) are */ - /* supported by this function. Other layouts, or more sophisticated */ - /* kernings, are out of scope of this method (the basic driver */ - /* interface is meant to be simple). */ - /* */ - /* They can be implemented by format-specific interfaces. */ - /* */ - static - FT_Error Get_Kerning( TT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_Vector* kerning ) - { - TT_Kern_0_Pair* pair; - - - if ( !face ) - return T2_Err_Invalid_Face_Handle; - - kerning->x = 0; - kerning->y = 0; - - if ( face->kern_pairs ) - { - /* there are some kerning pairs in this font file! */ - FT_ULong search_tag = PAIR_TAG( left_glyph, right_glyph ); - FT_Long left, right; - - - left = 0; - right = face->num_kern_pairs - 1; - - while ( left <= right ) - { - FT_Int middle = left + ( ( right - left ) >> 1 ); - FT_ULong cur_pair; - - - pair = face->kern_pairs + middle; - cur_pair = PAIR_TAG( pair->left, pair->right ); - - if ( cur_pair == search_tag ) - goto Found; - - if ( cur_pair < search_tag ) - left = middle + 1; - else - right = middle - 1; - } - } - - Exit: - return T2_Err_Ok; - - Found: - kerning->x = pair->value; - goto Exit; - } - - -#undef PAIR_TAG - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Load_Glyph */ - /* */ - /* <Description> */ - /* A driver method used to load a glyph within a given glyph slot. */ - /* */ - /* <Input> */ - /* slot :: A handle to the target slot object where the glyph */ - /* will be loaded. */ - /* */ - /* size :: A handle to the source face size at which the glyph */ - /* must be scaled, loaded, etc. */ - /* */ - /* glyph_index :: The index of the glyph in the font file. */ - /* */ - /* load_flags :: A flag indicating what to load for this glyph. The */ - /* FTLOAD_??? constants can be used to control the */ - /* glyph loading process (e.g., whether the outline */ - /* should be scaled, whether to load bitmaps or not, */ - /* whether to hint the outline, etc). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static - FT_Error Load_Glyph( T2_GlyphSlot slot, - T2_Size size, - FT_UShort glyph_index, - FT_UInt load_flags ) - { - FT_Error error; - - - if ( !slot ) - return T2_Err_Invalid_Glyph_Handle; - - /* check whether we want a scaled outline or bitmap */ - if ( !size ) - load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; - - if ( load_flags & FT_LOAD_NO_SCALE ) - size = NULL; - - /* reset the size object if necessary */ - if ( size ) - { - /* these two object must have the same parent */ - if ( size->face != slot->root.face ) - return T2_Err_Invalid_Face_Handle; - } - - /* now load the glyph outline if necessary */ - error = T2_Load_Glyph( slot, size, glyph_index, load_flags ); - - /* force drop-out mode to 2 - irrelevant now */ - /* slot->outline.dropout_mode = 2; */ - - return error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** C H A R A C T E R M A P P I N G S ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Get_Char_Index */ - /* */ - /* <Description> */ - /* Uses a charmap to return a given character code's glyph index. */ - /* */ - /* <Input> */ - /* charmap :: A handle to the source charmap object. */ - /* charcode :: The character code. */ - /* */ - /* <Return> */ - /* Glyph index. 0 means `undefined character code'. */ - /* */ - static - FT_UInt t2_get_char_index( TT_CharMap charmap, - FT_Long charcode ) - { - FT_Error error; - T2_Face face; - TT_CMapTable* cmap; - - - cmap = &charmap->cmap; - face = (T2_Face)charmap->root.face; - - /* Load table if needed */ - if ( !cmap->loaded ) - { - SFNT_Interface* sfnt = (SFNT_Interface*)face->sfnt; - - - error = sfnt->load_charmap( face, cmap, face->root.stream ); - if ( error ) - return 0; - - cmap->loaded = TRUE; - } - - return ( cmap->get_index ? cmap->get_index( cmap, charcode ) : 0 ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** D R I V E R I N T E R F A C E ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - static - FT_Module_Interface t2_get_interface( T2_Driver driver, - const char* interface ) - { - FT_Module sfnt; - - - /* we simply pass our request to the `sfnt' module */ - sfnt = FT_Get_Module( driver->root.root.library, "sfnt" ); - - return sfnt ? sfnt->clazz->get_interface( sfnt, interface ) : 0; - } - - - /* The FT_DriverInterface structure is defined in ftdriver.h. */ - - FT_CALLBACK_TABLE_DEF - const FT_Driver_Class cff_driver_class = - { - /* begin with the FT_Module_Class fields */ - { - ft_module_font_driver | ft_module_driver_scalable, - sizeof( T2_DriverRec ), - "cff", - 0x10000L, - 0x20000L, - - 0, /* module-specific interface */ - - (FT_Module_Constructor)T2_Init_Driver, - (FT_Module_Destructor) T2_Done_Driver, - (FT_Module_Requester) t2_get_interface, - }, - - /* now the specific driver fields */ - sizeof( TT_FaceRec ), - sizeof( FT_SizeRec ), - sizeof( T2_GlyphSlotRec ), - - (FTDriver_initFace) T2_Init_Face, - (FTDriver_doneFace) T2_Done_Face, - (FTDriver_initSize) 0, - (FTDriver_doneSize) 0, - (FTDriver_initGlyphSlot)0, - (FTDriver_doneGlyphSlot)0, - - (FTDriver_setCharSizes) 0, - (FTDriver_setPixelSizes)0, - - (FTDriver_loadGlyph) Load_Glyph, - (FTDriver_getCharIndex) t2_get_char_index, - - (FTDriver_getKerning) Get_Kerning, - (FTDriver_attachFile) 0, - (FTDriver_getAdvances) 0 - }; - - -#ifdef FT_CONFIG_OPTION_DYNAMIC_DRIVERS - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* getDriverClass */ - /* */ - /* <Description> */ - /* This function is used when compiling the TrueType driver as a */ - /* shared library (`.DLL' or `.so'). It will be used by the */ - /* high-level library of FreeType to retrieve the address of the */ - /* driver's generic interface. */ - /* */ - /* It shouldn't be implemented in a static build, as each driver must */ - /* have the same function as an exported entry point. */ - /* */ - /* <Return> */ - /* The address of the TrueType's driver generic interface. The */ - /* format-specific interface can then be retrieved through the method */ - /* interface->get_format_interface. */ - /* */ - FT_EXPORT_DEF( const FT_Driver_Class* ) getDriverClass( void ) - { - return &cff_driver_class; - } - - -#endif /* CONFIG_OPTION_DYNAMIC_DRIVERS */ - - -/* END */ Index: xc/extras/freetype2/src/cff/t2driver.h diff -u xc/extras/freetype2/src/cff/t2driver.h:1.1.1.1 xc/extras/freetype2/src/cff/t2driver.h:removed --- xc/extras/freetype2/src/cff/t2driver.h:1.1.1.1 Fri Dec 8 16:26:20 2000 +++ xc/extras/freetype2/src/cff/t2driver.h Fri Jan 18 15:21:54 2002 @@ -1,41 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2driver.h */ -/* */ -/* High-level OpenType driver interface (specification). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef T2DRIVER_H -#define T2DRIVER_H - -#include <freetype/internal/ftdriver.h> - -#ifdef __cplusplus - extern "C" { -#endif - - - FT_CALLBACK_TABLE - const FT_Driver_Class cff_driver_class; - - -#ifdef __cplusplus - } -#endif - - -#endif /* T2DRIVER_H */ - - -/* END */ Index: xc/extras/freetype2/src/cff/t2gload.c diff -u xc/extras/freetype2/src/cff/t2gload.c:1.1.1.1 xc/extras/freetype2/src/cff/t2gload.c:removed --- xc/extras/freetype2/src/cff/t2gload.c:1.1.1.1 Fri Dec 8 16:26:20 2000 +++ xc/extras/freetype2/src/cff/t2gload.c Fri Jan 18 15:21:54 2002 @@ -1,2089 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2gload.c */ -/* */ -/* OpenType Glyph Loader (body). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <freetype/internal/ftdebug.h> -#include <freetype/internal/ftcalc.h> -#include <freetype/internal/ftstream.h> -#include <freetype/internal/sfnt.h> -#include <freetype/ftoutln.h> -#include <freetype/tttags.h> - - -#ifdef FT_FLAT_COMPILE - -#include "t2load.h" -#include "t2gload.h" - -#else - -#include <cff/t2load.h> -#include <cff/t2gload.h> - -#endif - - -#include <freetype/internal/t2errors.h> - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t2gload - - - typedef enum T2_Operator_ - { - t2_op_unknown = 0, - - t2_op_rmoveto, - t2_op_hmoveto, - t2_op_vmoveto, - - t2_op_rlineto, - t2_op_hlineto, - t2_op_vlineto, - - t2_op_rrcurveto, - t2_op_hhcurveto, - t2_op_hvcurveto, - t2_op_rcurveline, - t2_op_rlinecurve, - t2_op_vhcurveto, - t2_op_vvcurveto, - - t2_op_flex, - t2_op_hflex, - t2_op_hflex1, - t2_op_flex1, - - t2_op_endchar, - - t2_op_hstem, - t2_op_vstem, - t2_op_hstemhm, - t2_op_vstemhm, - - t2_op_hintmask, - t2_op_cntrmask, - - t2_op_abs, - t2_op_add, - t2_op_sub, - t2_op_div, - t2_op_neg, - t2_op_random, - t2_op_mul, - t2_op_sqrt, - - t2_op_blend, - - t2_op_drop, - t2_op_exch, - t2_op_index, - t2_op_roll, - t2_op_dup, - - t2_op_put, - t2_op_get, - t2_op_store, - t2_op_load, - - t2_op_and, - t2_op_or, - t2_op_not, - t2_op_eq, - t2_op_ifelse, - - t2_op_callsubr, - t2_op_callgsubr, - t2_op_return, - - /* do not remove */ - t2_op_max - - } T2_Operator; - - -#define T2_COUNT_CHECK_WIDTH 0x80 -#define T2_COUNT_EXACT 0x40 -#define T2_COUNT_CLEAR_STACK 0x20 - - - static const FT_Byte t2_argument_counts[] = - { - 0, /* unknown */ - - 2 | T2_COUNT_CHECK_WIDTH | T2_COUNT_EXACT, /* rmoveto */ - 1 | T2_COUNT_CHECK_WIDTH | T2_COUNT_EXACT, - 1 | T2_COUNT_CHECK_WIDTH | T2_COUNT_EXACT, - - 0 | T2_COUNT_CLEAR_STACK, /* rlineto */ - 0 | T2_COUNT_CLEAR_STACK, - 0 | T2_COUNT_CLEAR_STACK, - - 0 | T2_COUNT_CLEAR_STACK, /* rrcurveto */ - 0 | T2_COUNT_CLEAR_STACK, - 0 | T2_COUNT_CLEAR_STACK, - 0 | T2_COUNT_CLEAR_STACK, - 0 | T2_COUNT_CLEAR_STACK, - 0 | T2_COUNT_CLEAR_STACK, - 0 | T2_COUNT_CLEAR_STACK, - - 13, /* flex */ - 7, - 9, - 11, - - 0 | T2_COUNT_CHECK_WIDTH, /* endchar */ - - 2 | T2_COUNT_CHECK_WIDTH, /* hstem */ - 2 | T2_COUNT_CHECK_WIDTH, - 2 | T2_COUNT_CHECK_WIDTH, - 2 | T2_COUNT_CHECK_WIDTH, - - 0, /* hintmask */ - 0, /* cntrmask */ - - 1, /* abs */ - 2, - 2, - 2, - 1, - 0, - 2, - 1, - - 1, /* blend */ - - 1, /* drop */ - 2, - 1, - 2, - 1, - - 2, /* put */ - 1, - 4, - 3, - - 2, /* and */ - 2, - 1, - 2, - 4, - - 1, /* callsubr */ - 1, - 0 - }; - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********** *********/ - /********** *********/ - /********** GENERIC CHARSTRING PARSING *********/ - /********** *********/ - /********** *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T2_Init_Builder */ - /* */ - /* <Description> */ - /* Initializes a given glyph builder. */ - /* */ - /* <InOut> */ - /* builder :: A pointer to the glyph builder to initialize. */ - /* */ - /* <Input> */ - /* face :: The current face object. */ - /* */ - /* size :: The current size object. */ - /* */ - /* glyph :: The current glyph object. */ - /* */ - static - void T2_Init_Builder( T2_Builder* builder, - TT_Face face, - T2_Size size, - T2_GlyphSlot glyph ) - { - builder->path_begun = 0; - builder->load_points = 1; - - builder->face = face; - builder->glyph = glyph; - builder->memory = face->root.memory; - - if ( glyph ) - { - FT_GlyphLoader* loader = glyph->root.internal->loader; - - - builder->loader = loader; - builder->base = &loader->base.outline; - builder->current = &loader->current.outline; - FT_GlyphLoader_Rewind( loader ); - } - - if ( size ) - { - builder->scale_x = size->metrics.x_scale; - builder->scale_y = size->metrics.y_scale; - } - - builder->pos_x = 0; - builder->pos_y = 0; - - builder->left_bearing.x = 0; - builder->left_bearing.y = 0; - builder->advance.x = 0; - builder->advance.y = 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T2_Done_Builder */ - /* */ - /* <Description> */ - /* Finalizes a given glyph builder. Its contents can still be used */ - /* after the call, but the function saves important information */ - /* within the corresponding glyph slot. */ - /* */ - /* <Input> */ - /* builder :: A pointer to the glyph builder to finalize. */ - /* */ - static - void T2_Done_Builder( T2_Builder* builder ) - { - T2_GlyphSlot glyph = builder->glyph; - - - if ( glyph ) - glyph->root.outline = *builder->base; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* t2_compute_bias */ - /* */ - /* <Description> */ - /* Computes the bias value in dependence of the number of glyph */ - /* subroutines. */ - /* */ - /* <Input> */ - /* num_subrs :: The number of glyph subroutines. */ - /* */ - /* <Return> */ - /* The bias value. */ - static - FT_Int t2_compute_bias( FT_UInt num_subrs ) - { - FT_Int result; - - - if ( num_subrs < 1240 ) - result = 107; - else if ( num_subrs < 33900 ) - result = 1131; - else - result = 32768; - - return result; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T2_Init_Decoder */ - /* */ - /* <Description> */ - /* Initializes a given glyph decoder. */ - /* */ - /* <InOut> */ - /* decoder :: A pointer to the glyph builder to initialize. */ - /* */ - /* <Input> */ - /* face :: The current face object. */ - /* */ - /* size :: The current size object. */ - /* */ - /* slot :: The current glyph object. */ - /* */ - FT_LOCAL_DEF - void T2_Init_Decoder( T2_Decoder* decoder, - TT_Face face, - T2_Size size, - T2_GlyphSlot slot ) - { - CFF_Font* cff = (CFF_Font*)face->extra.data; - - - /* clear everything */ - MEM_Set( decoder, 0, sizeof ( *decoder ) ); - - /* initialize builder */ - T2_Init_Builder( &decoder->builder, face, size, slot ); - - /* initialize Type2 decoder */ - decoder->num_globals = cff->num_global_subrs; - decoder->globals = cff->global_subrs; - decoder->globals_bias = t2_compute_bias( decoder->num_globals ); - } - - - /* this function is used to select the locals subrs array */ - FT_LOCAL_DEF - void T2_Prepare_Decoder( T2_Decoder* decoder, - FT_UInt glyph_index ) - { - CFF_Font* cff = (CFF_Font*)decoder->builder.face->extra.data; - CFF_SubFont* sub = &cff->top_font; - - - /* manage CID fonts */ - if ( cff->num_subfonts >= 1 ) - { - FT_Byte fd_index = CFF_Get_FD( &cff->fd_select, glyph_index ); - - - sub = cff->subfonts[fd_index]; - } - - decoder->num_locals = sub->num_local_subrs; - decoder->locals = sub->local_subrs; - decoder->locals_bias = t2_compute_bias( decoder->num_locals ); - - decoder->glyph_width = sub->private_dict.default_width; - decoder->nominal_width = sub->private_dict.nominal_width; - } - - - /* check that there is enough room for `count' more points */ - static - FT_Error check_points( T2_Builder* builder, - FT_Int count ) - { - return FT_GlyphLoader_Check_Points( builder->loader, count, 0 ); - } - - - /* add a new point, do not check space */ - static - void add_point( T2_Builder* builder, - FT_Pos x, - FT_Pos y, - FT_Byte flag ) - { - FT_Outline* outline = builder->current; - - - if ( builder->load_points ) - { - FT_Vector* point = outline->points + outline->n_points; - FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points; - - - point->x = x >> 16; - point->y = y >> 16; - *control = flag ? FT_Curve_Tag_On : FT_Curve_Tag_Cubic; - - builder->last = *point; - } - outline->n_points++; - } - - - /* check space for a new on-curve point, then add it */ - static - FT_Error add_point1( T2_Builder* builder, - FT_Pos x, - FT_Pos y ) - { - FT_Error error; - - - error = check_points( builder, 1 ); - if ( !error ) - add_point( builder, x, y, 1 ); - - return error; - } - - - /* check room for a new contour, then add it */ - static - FT_Error add_contour( T2_Builder* builder ) - { - FT_Outline* outline = builder->current; - FT_Error error; - - - if ( !builder->load_points ) - { - outline->n_contours++; - return T2_Err_Ok; - } - - error = FT_GlyphLoader_Check_Points( builder->loader, 0, 1 ); - if ( !error ) - { - if ( outline->n_contours > 0 ) - outline->contours[outline->n_contours - 1] = outline->n_points - 1; - - outline->n_contours++; - } - - return error; - } - - - /* if a path was begun, add its first on-curve point */ - static - FT_Error start_point( T2_Builder* builder, - FT_Pos x, - FT_Pos y ) - { - FT_Error error = 0; - - - /* test whether we are building a new contour */ - if ( !builder->path_begun ) - { - builder->path_begun = 1; - error = add_contour( builder ); - if ( !error ) - error = add_point1( builder, x, y ); - } - return error; - } - - - /* close the current contour */ - static - void close_contour( T2_Builder* builder ) - { - FT_Outline* outline = builder->current; - - /* XXXX: We must not include the last point in the path if it */ - /* is located on the first point. */ - if ( outline->n_points > 1 ) - { - FT_Int first = 0; - FT_Vector* p1 = outline->points + first; - FT_Vector* p2 = outline->points + outline->n_points - 1; - FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points - 1; - - - if ( outline->n_contours > 1 ) - { - first = outline->contours[outline->n_contours - 2] + 1; - p1 = outline->points + first; - } - - /* `delete' last point only if it coincides with the first */ - /* point and it is not a control point (which can happen). */ - if ( p1->x == p2->x && p1->y == p2->y ) - if ( *control == FT_Curve_Tag_On ) - outline->n_points--; - } - - if ( outline->n_contours > 0 ) - outline->contours[outline->n_contours - 1] = outline->n_points - 1; - } - - -#define USE_ARGS( n ) do \ - { \ - top -= n; \ - if ( top < decoder->stack ) \ - goto Stack_Underflow; \ - } while ( 0 ) - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T2_Parse_CharStrings */ - /* */ - /* <Description> */ - /* Parses a given Type 2 charstrings program. */ - /* */ - /* <InOut> */ - /* decoder :: The current Type 1 decoder. */ - /* */ - /* <Input> */ - /* charstring_base :: The base of the charstring stream. */ - /* */ - /* charstring_len :: The length in bytes of the charstring stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF - FT_Error T2_Parse_CharStrings( T2_Decoder* decoder, - FT_Byte* charstring_base, - FT_Int charstring_len ) - { - FT_Error error; - T2_Decoder_Zone* zone; - FT_Byte* ip; - FT_Byte* limit; - T2_Builder* builder = &decoder->builder; - FT_Outline* outline; - FT_Pos x, y; - FT_Fixed seed; - FT_Fixed* stack; - - - /* set default width */ - decoder->num_hints = 0; - decoder->read_width = 1; - - /* compute random seed from stack address of parameter */ - seed = (FT_Fixed)(char*)&seed ^ - (FT_Fixed)(char*)&decoder ^ - (FT_Fixed)(char*)&charstring_base; - seed = ( seed ^ ( seed >> 10 ) ^ ( seed >> 20 ) ) & 0xFFFF; - if ( seed == 0 ) - seed = 0x7384; - - /* initialize the decoder */ - decoder->top = decoder->stack; - decoder->zone = decoder->zones; - zone = decoder->zones; - stack = decoder->top; - - builder->path_begun = 0; - - zone->base = charstring_base; - limit = zone->limit = charstring_base + charstring_len; - ip = zone->cursor = zone->base; - - error = T2_Err_Ok; - outline = builder->current; - - x = builder->pos_x; - y = builder->pos_y; - - /* now, execute loop */ - while ( ip < limit ) - { - T2_Operator op; - FT_Byte v; - - - /********************************************************************/ - /* */ - /* Decode operator or operand */ - /* */ - v = *ip++; - if ( v >= 32 || v == 28 ) - { - FT_Int shift = 16; - FT_Int32 val; - - - /* this is an operand, push it on the stack */ - if ( v == 28 ) - { - if ( ip + 1 >= limit ) - goto Syntax_Error; - val = (FT_Short)( ( (FT_Short)ip[0] << 8 ) | ip[1] ); - ip += 2; - } - else if ( v < 247 ) - val = (FT_Long)v - 139; - else if ( v < 251 ) - { - if ( ip >= limit ) - goto Syntax_Error; - val = ( (FT_Long)v - 247 ) * 256 + *ip++ + 108; - } - else if ( v < 255 ) - { - if ( ip >= limit ) - goto Syntax_Error; - val = -( (FT_Long)v - 251 ) * 256 - *ip++ - 108; - } - else - { - if ( ip + 3 >= limit ) - goto Syntax_Error; - val = ( (FT_Int32)ip[0] << 24 ) | - ( (FT_Int32)ip[1] << 16 ) | - ( (FT_Int32)ip[2] << 8 ) | - ip[3]; - ip += 4; - shift = 0; - } - if ( decoder->top - stack >= T2_MAX_OPERANDS ) - goto Stack_Overflow; - - val <<= shift; - *decoder->top++ = val; - -#ifdef FT_DEBUG_LEVEL_TRACE - if ( !( val & 0xFFFF ) ) - FT_TRACE4(( " %d", (FT_Int32)( val >> 16 ) )); - else - FT_TRACE4(( " %.2f", val/65536.0 )); -#endif - - } - else - { - FT_Fixed* args = decoder->top; - FT_Int num_args = args - decoder->stack; - FT_Int req_args; - - - /* find operator */ - op = t2_op_unknown; - - switch ( v ) - { - case 1: - op = t2_op_hstem; - break; - case 3: - op = t2_op_vstem; - break; - case 4: - op = t2_op_vmoveto; - break; - case 5: - op = t2_op_rlineto; - break; - case 6: - op = t2_op_hlineto; - break; - case 7: - op = t2_op_vlineto; - break; - case 8: - op = t2_op_rrcurveto; - break; - case 10: - op = t2_op_callsubr; - break; - case 11: - op = t2_op_return; - break; - case 12: - { - if ( ip >= limit ) - goto Syntax_Error; - v = *ip++; - - switch ( v ) - { - case 3: - op = t2_op_and; - break; - case 4: - op = t2_op_or; - break; - case 5: - op = t2_op_not; - break; - case 8: - op = t2_op_store; - break; - case 9: - op = t2_op_abs; - break; - case 10: - op = t2_op_add; - break; - case 11: - op = t2_op_sub; - break; - case 12: - op = t2_op_div; - break; - case 13: - op = t2_op_load; - break; - case 14: - op = t2_op_neg; - break; - case 15: - op = t2_op_eq; - break; - case 18: - op = t2_op_drop; - break; - case 20: - op = t2_op_put; - break; - case 21: - op = t2_op_get; - break; - case 22: - op = t2_op_ifelse; - break; - case 23: - op = t2_op_random; - break; - case 24: - op = t2_op_mul; - break; - case 26: - op = t2_op_sqrt; - break; - case 27: - op = t2_op_dup; - break; - case 28: - op = t2_op_exch; - break; - case 29: - op = t2_op_index; - break; - case 30: - op = t2_op_roll; - break; - case 34: - op = t2_op_hflex; - break; - case 35: - op = t2_op_flex; - break; - case 36: - op = t2_op_hflex1; - break; - case 37: - op = t2_op_flex1; - break; - default: - /* decrement ip for syntax error message */ - ip--; - } - } - break; - case 14: - op = t2_op_endchar; - break; - case 16: - op = t2_op_blend; - break; - case 18: - op = t2_op_hstemhm; - break; - case 19: - op = t2_op_hintmask; - break; - case 20: - op = t2_op_cntrmask; - break; - case 21: - op = t2_op_rmoveto; - break; - case 22: - op = t2_op_hmoveto; - break; - case 23: - op = t2_op_vstemhm; - break; - case 24: - op = t2_op_rcurveline; - break; - case 25: - op = t2_op_rlinecurve; - break; - case 26: - op = t2_op_vvcurveto; - break; - case 27: - op = t2_op_hhcurveto; - break; - case 29: - op = t2_op_callgsubr; - break; - case 30: - op = t2_op_vhcurveto; - break; - case 31: - op = t2_op_hvcurveto; - break; - default: - ; - } - if ( op == t2_op_unknown ) - goto Syntax_Error; - - /* check arguments */ - req_args = t2_argument_counts[op]; - if ( req_args & T2_COUNT_CHECK_WIDTH ) - { - args = stack; - - if ( num_args > 0 && decoder->read_width ) - { - /* If `nominal_width' is non-zero, the number is really a */ - /* difference against `nominal_width'. Else, the number here */ - /* is truly a width, not a difference against `nominal_width'. */ - /* If the font does not set `nominal_width', then */ - /* `nominal_width' defaults to zero, and so we can set */ - /* `glyph_width' to `nominal_width' plus number on the stack */ - /* -- for either case. */ - - FT_Int set_width_ok; - - - switch ( op ) - { - case t2_op_hmoveto: - case t2_op_vmoveto: - set_width_ok = num_args & 2; - break; - - case t2_op_hstem: - case t2_op_vstem: - case t2_op_hstemhm: - case t2_op_vstemhm: - case t2_op_endchar: - case t2_op_rmoveto: - set_width_ok = num_args & 1; - break; - - default: - set_width_ok = 0; - break; - } - - if ( set_width_ok ) - { - decoder->glyph_width = decoder->nominal_width + - ( stack[0] >> 16 ); - num_args--; - args++; - } - } - - decoder->read_width = 0; - req_args = 0; - } - - req_args &= 15; - if ( num_args < req_args ) - goto Stack_Underflow; - args -= req_args; - num_args -= req_args; - - switch ( op ) - { - case t2_op_hstem: - case t2_op_vstem: - case t2_op_hstemhm: - case t2_op_vstemhm: - /* if the number of arguments is not even, the first one */ - /* is simply the glyph width, encoded as the difference */ - /* to nominalWidthX */ - FT_TRACE4(( op == t2_op_hstem ? " hstem" : - op == t2_op_vstem ? " vstem" : - op == t2_op_hstemhm ? " hstemhm" : - " vstemhm" )); - decoder->num_hints += num_args / 2; - args = stack; - break; - - case t2_op_hintmask: - case t2_op_cntrmask: - FT_TRACE4(( op == t2_op_hintmask ? " hintmask" - : " cntrmask" )); - - decoder->num_hints += num_args / 2; - ip += ( decoder->num_hints + 7 ) >> 3; - if ( ip >= limit ) - goto Syntax_Error; - args = stack; - break; - - case t2_op_rmoveto: - FT_TRACE4(( " rmoveto" )); - - close_contour( builder ); - builder->path_begun = 0; - x += args[0]; - y += args[1]; - args = stack; - break; - - case t2_op_vmoveto: - FT_TRACE4(( " vmoveto" )); - - close_contour( builder ); - builder->path_begun = 0; - y += args[0]; - args = stack; - break; - - case t2_op_hmoveto: - FT_TRACE4(( " hmoveto" )); - - close_contour( builder ); - builder->path_begun = 0; - x += args[0]; - args = stack; - break; - - case t2_op_rlineto: - FT_TRACE4(( " rlineto" )); - - if ( start_point ( builder, x, y ) || - check_points( builder, num_args / 2 ) ) - goto Memory_Error; - - if ( num_args < 2 || num_args & 1 ) - goto Stack_Underflow; - - args = stack; - while ( args < decoder->top ) - { - x += args[0]; - y += args[1]; - add_point( builder, x, y, 1 ); - args += 2; - } - args = stack; - break; - - case t2_op_hlineto: - case t2_op_vlineto: - { - FT_Int phase = ( op == t2_op_hlineto ); - - - FT_TRACE4(( op == t2_op_hlineto ? " hlineto" - : " vlineto" )); - - if ( start_point ( builder, x, y ) || - check_points( builder, num_args ) ) - goto Memory_Error; - - args = stack; - while (args < decoder->top ) - { - if ( phase ) - x += args[0]; - else - y += args[0]; - - if ( add_point1( builder, x, y ) ) - goto Memory_Error; - - args++; - phase ^= 1; - } - args = stack; - } - break; - - case t2_op_rrcurveto: - FT_TRACE4(( " rrcurveto" )); - - /* check number of arguments; must be a multiple of 6 */ - if ( num_args % 6 != 0 ) - goto Stack_Underflow; - - if ( start_point ( builder, x, y ) || - check_points( builder, num_args / 2 ) ) - goto Memory_Error; - - args = stack; - while ( args < decoder->top ) - { - x += args[0]; - y += args[1]; - add_point( builder, x, y, 0 ); - x += args[2]; - y += args[3]; - add_point( builder, x, y, 0 ); - x += args[4]; - y += args[5]; - add_point( builder, x, y, 1 ); - args += 6; - } - args = stack; - break; - - case t2_op_vvcurveto: - FT_TRACE4(( " vvcurveto" )); - - if ( start_point ( builder, x, y ) ) - goto Memory_Error; - - args = stack; - if ( num_args & 1 ) - { - x += args[0]; - args++; - num_args--; - } - - if ( num_args % 4 != 0 ) - goto Stack_Underflow; - - if ( check_points( builder, 3 * ( num_args / 4 ) ) ) - goto Memory_Error; - - while ( args < decoder->top ) - { - y += args[0]; - add_point( builder, x, y, 0 ); - x += args[1]; - y += args[2]; - add_point( builder, x, y, 0 ); - y += args[3]; - add_point( builder, x, y, 1 ); - args += 4; - } - args = stack; - break; - - case t2_op_hhcurveto: - FT_TRACE4(( " hhcurveto" )); - - if ( start_point ( builder, x, y ) ) - goto Memory_Error; - - args = stack; - if ( num_args & 1 ) - { - y += args[0]; - args++; - num_args--; - } - - if ( num_args % 4 != 0 ) - goto Stack_Underflow; - - if ( check_points( builder, 3 * ( num_args / 4 ) ) ) - goto Memory_Error; - - while ( args < decoder->top ) - { - x += args[0]; - add_point( builder, x, y, 0 ); - x += args[1]; - y += args[2]; - add_point( builder, x, y, 0 ); - x += args[3]; - add_point( builder, x, y, 1 ); - args += 4; - } - args = stack; - break; - - case t2_op_vhcurveto: - case t2_op_hvcurveto: - { - FT_Int phase; - - - FT_TRACE4(( op == t2_op_vhcurveto ? " vhcurveto" - : " hvcurveto" )); - - if ( start_point ( builder, x, y ) ) - goto Memory_Error; - - args = stack; - if (num_args < 4 || ( num_args % 4 ) > 1 ) - goto Stack_Underflow; - - if ( check_points( builder, ( num_args / 4 ) * 3 ) ) - goto Stack_Underflow; - - phase = ( op == t2_op_hvcurveto ); - - while ( num_args >= 4 ) - { - num_args -= 4; - if ( phase ) - { - x += args[0]; - add_point( builder, x, y, 0 ); - x += args[1]; - y += args[2]; - add_point( builder, x, y, 0 ); - y += args[3]; - if ( num_args == 1 ) - x += args[4]; - add_point( builder, x, y, 1 ); - } - else - { - y += args[0]; - add_point( builder, x, y, 0 ); - x += args[1]; - y += args[2]; - add_point( builder, x, y, 0 ); - x += args[3]; - if ( num_args == 1 ) - y += args[4]; - add_point( builder, x, y, 1 ); - } - args += 4; - phase ^= 1; - } - args = stack; - } - break; - - case t2_op_rlinecurve: - { - FT_Int num_lines = ( num_args - 6 ) / 2; - - - FT_TRACE4(( " rlinecurve" )); - - if ( num_args < 8 || ( num_args - 6 ) & 1 ) - goto Stack_Underflow; - - if ( start_point( builder, x, y ) || - check_points( builder, num_lines + 3 ) ) - goto Memory_Error; - - args = stack; - - /* first, add the line segments */ - while ( num_lines > 0 ) - { - x += args[0]; - y += args[1]; - add_point( builder, x, y, 1 ); - args += 2; - num_lines--; - } - - /* then the curve */ - x += args[0]; - y += args[1]; - add_point( builder, x, y, 0 ); - x += args[2]; - y += args[3]; - add_point( builder, x, y, 0 ); - x += args[4]; - y += args[5]; - add_point( builder, x, y, 1 ); - args = stack; - } - break; - - case t2_op_rcurveline: - { - FT_Int num_curves = ( num_args - 2 ) / 6; - - - FT_TRACE4(( " rcurveline" )); - - if ( num_args < 8 || ( num_args - 2 ) % 6 ) - goto Stack_Underflow; - - if ( start_point ( builder, x, y ) || - check_points( builder, num_curves*3 + 2 ) ) - goto Memory_Error; - - args = stack; - - /* first, add the curves */ - while ( num_curves > 0 ) - { - x += args[0]; - y += args[1]; - add_point( builder, x, y, 0 ); - x += args[2]; - y += args[3]; - add_point( builder, x, y, 0 ); - x += args[4]; - y += args[5]; - add_point( builder, x, y, 1 ); - args += 6; - num_curves--; - } - - /* then the final line */ - x += args[0]; - y += args[1]; - add_point( builder, x, y, 1 ); - args = stack; - } - break; - - case t2_op_hflex1: - { - FT_Pos start_y; - - - FT_TRACE4(( " hflex1" )); - - args = stack; - - /* adding five more points; 4 control points, 1 on-curve point */ - /* make sure we have enough space for the start point if it */ - /* needs to be added.. */ - if ( start_point( builder, x, y ) || - check_points( builder, 6 ) ) - goto Memory_Error; - - /* Record the starting point's y postion for later use */ - start_y = y; - - /* first control point */ - x += args[0]; - y += args[1]; - add_point( builder, x, y, 0 ); - - /* second control point */ - x += args[2]; - y += args[3]; - add_point( builder, x, y, 0 ); - - /* join point; on curve, with y-value the same as the last */ - /* control point's y-value */ - x += args[4]; - add_point( builder, x, y, 1 ); - - /* third control point, with y-value the same as the join */ - /* point's y-value */ - x += args[5]; - add_point( builder, x, y, 0 ); - - /* fourth control point */ - x += args[6]; - y += args[7]; - add_point( builder, x, y, 0 ); - - /* ending point, with y-value the same as the start */ - x += args[8]; - y = start_y; - add_point( builder, x, y, 1 ); - - args = stack; - break; - } - - case t2_op_hflex: - { - FT_Pos start_y; - - - FT_TRACE4(( " hflex" )); - - args = stack; - - /* adding six more points; 4 control points, 2 on-curve points */ - if ( start_point( builder, x, y ) || - check_points ( builder, 6 ) ) - goto Memory_Error; - - /* record the starting point's y-position for later use */ - start_y = y; - - /* first control point */ - x += args[0]; - add_point( builder, x, y, 0 ); - - /* second control point */ - x += args[1]; - y += args[2]; - add_point( builder, x, y, 0 ); - - /* join point; on curve, with y-value the same as the last */ - /* control point's y-value */ - x += args[3]; - add_point( builder, x, y, 1 ); - - /* third control point, with y-value the same as the join */ - /* point's y-value */ - x += args[4]; - add_point( builder, x, y, 0 ); - - /* fourth control point */ - x += args[5]; - y = start_y; - add_point( builder, x, y, 0 ); - - /* ending point, with y-value the same as the start point's */ - /* y-value -- we don't add this point, though */ - x += args[6]; - add_point( builder, x, y, 1 ); - - args = stack; - break; - } - - case t2_op_flex1: - { - FT_Pos start_x, start_y; /* record start x, y values for alter */ - /* use */ - FT_Int dx = 0, dy = 0; /* used in horizontal/vertical */ - /* algorithm below */ - FT_Int horizontal, count; - - - FT_TRACE4(( " flex1" )); - - /* adding six more points; 4 control points, 2 on-curve points */ - if ( start_point( builder, x, y ) || - check_points( builder, 6 ) ) - goto Memory_Error; - - /* record the starting point's x, y postion for later use */ - start_x = x; - start_y = y; - - /* XXX: figure out whether this is supposed to be a horizontal */ - /* or vertical flex; the Type 2 specification is vague... */ - - args = stack; - - /* grab up to the last argument */ - for ( count = 5; count > 0; count-- ) - { - dx += args[0]; - dy += args[1]; - args += 2; - } - - /* rewind */ - args = stack; - - if ( dx < 0 ) dx = -dx; - if ( dy < 0 ) dy = -dy; - - /* strange test, but here it is... */ - horizontal = ( dx > dy ); - - for ( count = 5; count > 0; count-- ) - { - x += args[0]; - y += args[1]; - add_point( builder, x, y, (FT_Bool)( count == 3 ) ); - args += 2; - } - - /* is last operand an x- or y-delta? */ - if ( horizontal ) - { - x += args[0]; - y = start_y; - } - else - { - x = start_x; - y += args[0]; - } - - add_point( builder, x, y, 1 ); - - args = stack; - break; - } - - case t2_op_flex: - { - FT_UInt count; - - - FT_TRACE4(( " flex" )); - - if ( start_point( builder, x, y ) || - check_points( builder, 6 ) ) - goto Memory_Error; - - args = stack; - for ( count = 6; count > 0; count-- ) - { - x += args[0]; - y += args[1]; - add_point( builder, x, y, - (FT_Bool)( count == 3 || count == 0 ) ); - args += 2; - } - - args = stack; - } - break; - - case t2_op_endchar: - FT_TRACE4(( " endchar" )); - - close_contour( builder ); - - /* add current outline to the glyph slot */ - FT_GlyphLoader_Add( builder->loader ); - - /* return now! */ - FT_TRACE4(( "\n\n" )); - return T2_Err_Ok; - - case t2_op_abs: - FT_TRACE4(( " abs" )); - - if ( args[0] < 0 ) - args[0] = -args[0]; - args++; - break; - - case t2_op_add: - FT_TRACE4(( " add" )); - - args[0] += args[1]; - args++; - break; - - case t2_op_sub: - FT_TRACE4(( " sub" )); - - args[0] -= args[1]; - args++; - break; - - case t2_op_div: - FT_TRACE4(( " div" )); - - args[0] = FT_DivFix( args[0], args[1] ); - args++; - break; - - case t2_op_neg: - FT_TRACE4(( " neg" )); - - args[0] = -args[0]; - args++; - break; - - case t2_op_random: - { - FT_Fixed rand; - - - FT_TRACE4(( " rand" )); - - rand = seed; - if ( rand >= 0x8000 ) - rand++; - - args[0] = rand; - seed = FT_MulFix( seed, 0x10000L - seed ); - if ( seed == 0 ) - seed += 0x2873; - args++; - } - break; - - case t2_op_mul: - FT_TRACE4(( " mul" )); - - args[0] = FT_MulFix( args[0], args[1] ); - args++; - break; - - case t2_op_sqrt: - FT_TRACE4(( " sqrt" )); - - if ( args[0] > 0 ) - { - FT_Int count = 9; - FT_Fixed root = args[0]; - FT_Fixed new_root; - - - for (;;) - { - new_root = ( root + FT_DivFix(args[0],root) + 1 ) >> 1; - if ( new_root == root || count <= 0 ) - break; - root = new_root; - } - args[0] = new_root; - } - else - args[0] = 0; - args++; - break; - - case t2_op_drop: - /* nothing */ - FT_TRACE4(( " drop" )); - - break; - - case t2_op_exch: - { - FT_Fixed tmp; - - - FT_TRACE4(( " exch" )); - - tmp = args[0]; - args[0] = args[1]; - args[1] = tmp; - args += 2; - } - break; - - case t2_op_index: - { - FT_Int index = args[0] >> 16; - - - FT_TRACE4(( " index" )); - - if ( index < 0 ) - index = 0; - else if ( index > num_args - 2 ) - index = num_args - 2; - args[0] = args[-( index + 1 )]; - args++; - } - break; - - case t2_op_roll: - { - FT_Int count = (FT_Int)( args[0] >> 16 ); - FT_Int index = (FT_Int)( args[1] >> 16 ); - - - FT_TRACE4(( " roll" )); - - if ( count <= 0 ) - count = 1; - - args -= count; - if ( args < stack ) - goto Stack_Underflow; - - if ( index >= 0 ) - { - while ( index > 0 ) - { - FT_Fixed tmp = args[count - 1]; - FT_Int i; - - - for ( i = count - 2; i >= 0; i-- ) - args[i + 1] = args[i]; - args[0] = tmp; - index--; - } - } - else - { - while ( index < 0 ) - { - FT_Fixed tmp = args[0]; - FT_Int i; - - - for ( i = 0; i < count - 1; i++ ) - args[i] = args[i + 1]; - args[count - 1] = tmp; - index++; - } - } - args += count; - } - break; - - case t2_op_dup: - FT_TRACE4(( " dup" )); - - args[1] = args[0]; - args++; - break; - - case t2_op_put: - { - FT_Fixed val = args[0]; - FT_Int index = (FT_Int)( args[1] >> 16 ); - - - FT_TRACE4(( " put" )); - - if ( index >= 0 && index < decoder->len_buildchar ) - decoder->buildchar[index] = val; - } - break; - - case t2_op_get: - { - FT_Int index = (FT_Int)( args[0] >> 16 ); - FT_Fixed val = 0; - - - FT_TRACE4(( " get" )); - - if ( index >= 0 && index < decoder->len_buildchar ) - val = decoder->buildchar[index]; - - args[0] = val; - args++; - } - break; - - case t2_op_store: - FT_TRACE4(( " store ")); - - goto Unimplemented; - - case t2_op_load: - FT_TRACE4(( " load" )); - - goto Unimplemented; - - case t2_op_and: - { - FT_Fixed cond = args[0] && args[1]; - - - FT_TRACE4(( " and" )); - - args[0] = cond ? 0x10000L : 0; - args++; - } - break; - - case t2_op_or: - { - FT_Fixed cond = args[0] || args[1]; - - - FT_TRACE4(( " or" )); - - args[0] = cond ? 0x10000L : 0; - args++; - } - break; - - case t2_op_eq: - { - FT_Fixed cond = !args[0]; - - - FT_TRACE4(( " eq" )); - - args[0] = cond ? 0x10000L : 0; - args++; - } - break; - - case t2_op_ifelse: - { - FT_Fixed cond = (args[2] <= args[3]); - - - FT_TRACE4(( " ifelse" )); - - if ( !cond ) - args[0] = args[1]; - args++; - } - break; - - case t2_op_callsubr: - { - FT_UInt index = (FT_UInt)( ( args[0] >> 16 ) + - decoder->locals_bias ); - - - FT_TRACE4(( " callsubr(%d)", index )); - - if ( index >= decoder->num_locals ) - { - FT_ERROR(( "T2_Parse_CharStrings:" )); - FT_ERROR(( " invalid local subr index\n" )); - goto Syntax_Error; - } - - if ( zone - decoder->zones >= T2_MAX_SUBRS_CALLS ) - { - FT_ERROR(( "T2_Parse_CharStrings: too many nested subrs\n" )); - goto Syntax_Error; - } - - zone->cursor = ip; /* save current instruction pointer */ - - zone++; - zone->base = decoder->locals[index]; - zone->limit = decoder->locals[index+1]; - zone->cursor = zone->base; - - if ( !zone->base ) - { - FT_ERROR(( "T2_Parse_CharStrings: invoking empty subrs!\n" )); - goto Syntax_Error; - } - - decoder->zone = zone; - ip = zone->base; - limit = zone->limit; - } - break; - - case t2_op_callgsubr: - { - FT_UInt index = (FT_UInt)( ( args[0] >> 16 ) + - decoder->globals_bias ); - - - FT_TRACE4(( " callgsubr(%d)", index )); - - if ( index >= decoder->num_globals ) - { - FT_ERROR(( "T2_Parse_CharStrings:" )); - FT_ERROR(( " invalid global subr index\n" )); - goto Syntax_Error; - } - - if ( zone - decoder->zones >= T2_MAX_SUBRS_CALLS ) - { - FT_ERROR(( "T2_Parse_CharStrings: too many nested subrs\n" )); - goto Syntax_Error; - } - - zone->cursor = ip; /* save current instruction pointer */ - - zone++; - zone->base = decoder->globals[index]; - zone->limit = decoder->globals[index+1]; - zone->cursor = zone->base; - - if ( !zone->base ) - { - FT_ERROR(( "T2_Parse_CharStrings: invoking empty subrs!\n" )); - goto Syntax_Error; - } - - decoder->zone = zone; - ip = zone->base; - limit = zone->limit; - } - break; - - case t2_op_return: - FT_TRACE4(( " return" )); - - if ( decoder->zone <= decoder->zones ) - { - FT_ERROR(( "T2_Parse_CharStrings: unexpected return\n" )); - goto Syntax_Error; - } - - decoder->zone--; - zone = decoder->zone; - ip = zone->cursor; - limit = zone->limit; - break; - - default: - Unimplemented: - FT_ERROR(( "Unimplemented opcode: %d", ip[-1] )); - - if ( ip[-1] == 12 ) - FT_ERROR(( " %d", ip[0] )); - FT_ERROR(( "\n" )); - - return T2_Err_Unimplemented_Feature; - } - - decoder->top = args; - - } /* general operator processing */ - - } /* while ip < limit */ - - FT_TRACE4(( "..end..\n\n" )); - - return error; - - Syntax_Error: - FT_TRACE4(( "T2_Parse_CharStrings: syntax error!" )); - return T2_Err_Invalid_File_Format; - - Stack_Underflow: - FT_TRACE4(( "T2_Parse_CharStrings: stack underflow!" )); - return T2_Err_Too_Few_Arguments; - - Stack_Overflow: - FT_TRACE4(( "T2_Parse_CharStrings: stack overflow!" )); - return T2_Err_Stack_Overflow; - - Memory_Error: - return builder->error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********** *********/ - /********** *********/ - /********** COMPUTE THE MAXIMUM ADVANCE WIDTH *********/ - /********** *********/ - /********** The following code is in charge of computing *********/ - /********** the maximum advance width of the font. It *********/ - /********** quickly processes each glyph charstring to *********/ - /********** extract the value from either a `sbw' or `seac' *********/ - /********** operator. *********/ - /********** *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#if 0 /* unused until we support pure CFF fonts */ - - - FT_LOCAL_DEF - FT_Error T2_Compute_Max_Advance( TT_Face face, - FT_Int* max_advance ) - { - FT_Error error = 0; - T2_Decoder decoder; - FT_Int glyph_index; - CFF_Font* cff = (CFF_Font*)face->other; - - - *max_advance = 0; - - /* Initialize load decoder */ - T2_Init_Decoder( &decoder, face, 0, 0 ); - - decoder.builder.metrics_only = 1; - decoder.builder.load_points = 0; - - /* For each glyph, parse the glyph charstring and extract */ - /* the advance width. */ - for ( glyph_index = 0; glyph_index < face->root.num_glyphs; - glyph_index++ ) - { - FT_Byte* charstring; - FT_ULong charstring_len; - - - /* now get load the unscaled outline */ - error = T2_Access_Element( &cff->charstrings_index, glyph_index, - &charstring, &charstring_len ); - if ( !error ) - { - T2_Prepare_Decoder( &decoder, glyph_index ); - error = T2_Parse_CharStrings( &decoder, charstring, charstring_len ); - - T2_Forget_Element( &cff->charstrings_index, &charstring ); - } - - /* ignore the error if one has occurred -- skip to next glyph */ - error = 0; - } - - *max_advance = decoder.builder.advance.x; - - return T2_Err_Ok; - } - - -#endif /* 0 */ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********** *********/ - /********** *********/ - /********** UNHINTED GLYPH LOADER *********/ - /********** *********/ - /********** The following code is in charge of loading a *********/ - /********** single outline. It completely ignores hinting *********/ - /********** and is used when FT_LOAD_NO_HINTING is set. *********/ - /********** *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_LOCAL_DEF - FT_Error T2_Load_Glyph( T2_GlyphSlot glyph, - T2_Size size, - FT_Int glyph_index, - FT_Int load_flags ) - { - FT_Error error; - T2_Decoder decoder; - TT_Face face = (TT_Face)glyph->root.face; - FT_Bool hinting; - CFF_Font* cff = (CFF_Font*)face->extra.data; - - - if ( load_flags & FT_LOAD_NO_RECURSE ) - load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; - - glyph->x_scale = 0x10000L; - glyph->y_scale = 0x10000L; - if ( size ) - { - glyph->x_scale = size->metrics.x_scale; - glyph->y_scale = size->metrics.y_scale; - } - - glyph->root.outline.n_points = 0; - glyph->root.outline.n_contours = 0; - - hinting = ( load_flags & FT_LOAD_NO_SCALE ) == 0 && - ( load_flags & FT_LOAD_NO_HINTING ) == 0; - - glyph->root.format = ft_glyph_format_outline; /* by default */ - - { - FT_Byte* charstring; - FT_ULong charstring_len; - - - T2_Init_Decoder( &decoder, face, size, glyph ); - - decoder.builder.no_recurse = - (FT_Bool)( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ); - - /* now load the unscaled outline */ - error = T2_Access_Element( &cff->charstrings_index, glyph_index, - &charstring, &charstring_len ); - if ( !error ) - { - T2_Prepare_Decoder( &decoder, glyph_index ); - error = T2_Parse_CharStrings( &decoder, charstring, charstring_len ); - - T2_Forget_Element( &cff->charstrings_index, &charstring ); - } - - /* save new glyph tables */ - T2_Done_Builder( &decoder.builder ); - } - - /* Now, set the metrics -- this is rather simple, as */ - /* the left side bearing is the xMin, and the top side */ - /* bearing the yMax. */ - if ( !error ) - { - /* for composite glyphs, return only left side bearing and */ - /* advance width */ - if ( glyph->root.format == ft_glyph_format_composite ) - { - glyph->root.metrics.horiBearingX = decoder.builder.left_bearing.x; - glyph->root.metrics.horiAdvance = decoder.glyph_width; - } - else - { - FT_BBox cbox; - FT_Glyph_Metrics* metrics = &glyph->root.metrics; - - - /* copy the _unscaled_ advance width */ - metrics->horiAdvance = decoder.glyph_width; - glyph->root.linearHoriAdvance = decoder.glyph_width; - - /* make up vertical metrics */ - metrics->vertBearingX = 0; - metrics->vertBearingY = 0; - metrics->vertAdvance = 0; - - glyph->root.linearVertAdvance = 0; - - glyph->root.format = ft_glyph_format_outline; - - glyph->root.outline.flags = 0; - if ( size && size->metrics.y_ppem < 24 ) - glyph->root.outline.flags |= ft_outline_high_precision; - - glyph->root.outline.flags |= ft_outline_reverse_fill; - - if ( ( load_flags & FT_LOAD_NO_SCALE ) == 0 ) - { - /* scale the outline and the metrics */ - FT_Int n; - FT_Outline* cur = &glyph->root.outline; - FT_Vector* vec = cur->points; - FT_Fixed x_scale = glyph->x_scale; - FT_Fixed y_scale = glyph->y_scale; - - - /* First of all, scale the points */ - for ( n = cur->n_points; n > 0; n--, vec++ ) - { - vec->x = FT_MulFix( vec->x, x_scale ); - vec->y = FT_MulFix( vec->y, y_scale ); - } - - FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); - - /* Then scale the metrics */ - metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); - metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale ); - - metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale ); - metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale ); - } - -#if 0 - /* apply the font matrix */ - FT_Outline_Transform( &glyph->root.outline, cff->font_matrix ); -#endif - - /* compute the other metrics */ - FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); - - /* grid fit the bounding box if necessary */ - if ( hinting ) - { - cbox.xMin &= -64; - cbox.yMin &= -64; - cbox.xMax = ( cbox.xMax + 63 ) & -64; - cbox.yMax = ( cbox.yMax + 63 ) & -64; - } - - metrics->width = cbox.xMax - cbox.xMin; - metrics->height = cbox.yMax - cbox.yMin; - - metrics->horiBearingX = cbox.xMin; - metrics->horiBearingY = cbox.yMax; - } - } - - return error; - } - - -/* END */ Index: xc/extras/freetype2/src/cff/t2gload.h diff -u xc/extras/freetype2/src/cff/t2gload.h:1.1.1.1 xc/extras/freetype2/src/cff/t2gload.h:removed --- xc/extras/freetype2/src/cff/t2gload.h:1.1.1.1 Fri Dec 8 16:26:20 2000 +++ xc/extras/freetype2/src/cff/t2gload.h Fri Jan 18 15:21:54 2002 @@ -1,213 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2gload.h */ -/* */ -/* OpenType Glyph Loader (specification). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef T2GLOAD_H -#define T2GLOAD_H - -#include <freetype/freetype.h> - - -#ifdef FT_FLAT_COMPILE - -#include "t2objs.h" - -#else - -#include <cff/t2objs.h> - -#endif - - -#ifdef __cplusplus - extern "C" { -#endif - - -#define T2_MAX_OPERANDS 48 -#define T2_MAX_SUBRS_CALLS 32 - - - /*************************************************************************/ - /* */ - /* <Structure> */ - /* T2_Builder */ - /* */ - /* <Description> */ - /* A structure used during glyph loading to store its outline. */ - /* */ - /* <Fields> */ - /* memory :: The current memory object. */ - /* */ - /* face :: The current face object. */ - /* */ - /* glyph :: The current glyph slot. */ - /* */ - /* current :: The current glyph outline. */ - /* */ - /* base :: The base glyph outline. */ - /* */ - /* max_points :: maximum points in builder outline */ - /* */ - /* max_contours :: Maximal number of contours in builder outline. */ - /* */ - /* last :: The last point position. */ - /* */ - /* scale_x :: The horizontal scale (FUnits to sub-pixels). */ - /* */ - /* scale_y :: The vertical scale (FUnits to sub-pixels). */ - /* */ - /* pos_x :: The horizontal translation (if composite glyph). */ - /* */ - /* pos_y :: The vertical translation (if composite glyph). */ - /* */ - /* left_bearing :: The left side bearing point. */ - /* */ - /* advance :: The horizontal advance vector. */ - /* */ - /* bbox :: Unused. */ - /* */ - /* path_begun :: A flag which indicates that a new path has begun. */ - /* */ - /* load_points :: If this flag is not set, no points are loaded. */ - /* */ - /* no_recurse :: Set but not used. */ - /* */ - /* error :: An error code that is only used to report memory */ - /* allocation problems. */ - /* */ - /* metrics_only :: A boolean indicating that we only want to compute */ - /* the metrics of a given glyph, not load all of its */ - /* points. */ - /* */ - typedef struct T2_Builder_ - { - FT_Memory memory; - TT_Face face; - T2_GlyphSlot glyph; - FT_GlyphLoader* loader; - FT_Outline* base; - FT_Outline* current; - - FT_Vector last; - - FT_Fixed scale_x; - FT_Fixed scale_y; - - FT_Pos pos_x; - FT_Pos pos_y; - - FT_Vector left_bearing; - FT_Vector advance; - - FT_BBox bbox; /* bounding box */ - FT_Bool path_begun; - FT_Bool load_points; - FT_Bool no_recurse; - - FT_Error error; /* only used for memory errors */ - FT_Bool metrics_only; - - } T2_Builder; - - - /* execution context charstring zone */ - - typedef struct T2_Decoder_Zone_ - { - FT_Byte* base; - FT_Byte* limit; - FT_Byte* cursor; - - } T2_Decoder_Zone; - - - typedef struct T2_Decoder_ - { - T2_Builder builder; - CFF_Font* cff; - - FT_Fixed stack[T2_MAX_OPERANDS + 1]; - FT_Fixed* top; - - T2_Decoder_Zone zones[T2_MAX_SUBRS_CALLS + 1]; - T2_Decoder_Zone* zone; - - FT_Int flex_state; - FT_Int num_flex_vectors; - FT_Vector flex_vectors[7]; - - FT_Pos glyph_width; - FT_Pos nominal_width; - - FT_Bool read_width; - FT_Int num_hints; - FT_Fixed* buildchar; - FT_Int len_buildchar; - - FT_UInt num_locals; - FT_UInt num_globals; - - FT_Int locals_bias; - FT_Int globals_bias; - - FT_Byte** locals; - FT_Byte** globals; - - } T2_Decoder; - - - FT_LOCAL - void T2_Init_Decoder( T2_Decoder* decoder, - TT_Face face, - T2_Size size, - T2_GlyphSlot slot ); - - FT_LOCAL - void T2_Prepare_Decoder( T2_Decoder* decoder, - FT_UInt glyph_index ); - -#if 0 /* unused until we support pure CFF fonts */ - - /* Compute the maximum advance width of a font through quick parsing */ - FT_LOCAL - FT_Error T2_Compute_Max_Advance( TT_Face face, - FT_Int* max_advance ); - -#endif /* 0 */ - - FT_LOCAL - FT_Error T2_Parse_CharStrings( T2_Decoder* decoder, - FT_Byte* charstring_base, - FT_Int charstring_len ); - - FT_LOCAL - FT_Error T2_Load_Glyph( T2_GlyphSlot glyph, - T2_Size size, - FT_Int glyph_index, - FT_Int load_flags ); - - -#ifdef __cplusplus - } -#endif - - -#endif /* T2GLOAD_H */ - - -/* END */ Index: xc/extras/freetype2/src/cff/t2load.c diff -u xc/extras/freetype2/src/cff/t2load.c:1.1.1.1 xc/extras/freetype2/src/cff/t2load.c:removed --- xc/extras/freetype2/src/cff/t2load.c:1.1.1.1 Fri Dec 8 16:26:20 2000 +++ xc/extras/freetype2/src/cff/t2load.c Fri Jan 18 15:21:54 2002 @@ -1,762 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2load.c */ -/* */ -/* TrueType glyph data/program tables loader (body). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <freetype/internal/ftdebug.h> -#include <freetype/internal/ftobjs.h> -#include <freetype/internal/ftstream.h> -#include <freetype/internal/psnames.h> - -#include <freetype/internal/t2errors.h> -#include <freetype/tttags.h> - - -#ifdef FT_FLAT_COMPILE - -#include "t2load.h" -#include "t2parse.h" - -#else - -#include <cff/t2load.h> -#include <cff/t2parse.h> - -#endif - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t2load - - - /* read a CFF offset from memory */ - static - FT_ULong t2_get_offset( FT_Byte* p, - FT_Byte off_size ) - { - FT_ULong result; - - - for ( result = 0; off_size > 0; off_size-- ) - { - result <<= 8; - result |= *p++; - } - - return result; - } - - - static - FT_Error t2_new_cff_index( CFF_Index* index, - FT_Stream stream, - FT_Bool load ) - { - FT_Error error; - FT_Memory memory = stream->memory; - FT_UShort count; - - - MEM_Set( index, 0, sizeof ( *index ) ); - - index->stream = stream; - if ( !READ_UShort( count ) && - count > 0 ) - { - FT_Byte* p; - FT_Byte offsize; - FT_ULong data_size; - FT_ULong* poff; - - - /* there is at least one element; read the offset size, */ - /* then access the offset table to compute the index's total size */ - if ( READ_Byte( offsize ) ) - goto Exit; - - index->stream = stream; - index->count = count; - index->off_size = offsize; - data_size = (FT_ULong)( count + 1 ) * offsize; - - if ( ALLOC_ARRAY( index->offsets, count + 1, FT_ULong ) || - ACCESS_Frame( data_size ) ) - goto Exit; - - poff = index->offsets; - p = (FT_Byte*)stream->cursor; - - for ( ; (FT_Short)count >= 0; count-- ) - { - poff[0] = t2_get_offset( p, offsize ); - poff++; - p += offsize; - } - - FORGET_Frame(); - - index->data_offset = FILE_Pos(); - data_size = poff[-1] - 1; - - if ( load ) - { - /* load the data */ - if ( EXTRACT_Frame( data_size, index->bytes ) ) - goto Exit; - } - else - { - /* skip the data */ - if ( FILE_Skip( data_size ) ) - goto Exit; - } - } - - Exit: - if ( error ) - FREE( index->offsets ); - - return error; - } - - - static - void t2_done_cff_index( CFF_Index* index ) - { - if ( index->stream ) - { - FT_Stream stream = index->stream; - FT_Memory memory = stream->memory; - - - if ( index->bytes ) - RELEASE_Frame( index->bytes ); - - FREE( index->offsets ); - MEM_Set( index, 0, sizeof ( *index ) ); - } - } - - - static - FT_Error t2_explicit_cff_index( CFF_Index* index, - FT_Byte*** table ) - { - FT_Error error = 0; - FT_Memory memory = index->stream->memory; - FT_UInt n, offset, old_offset; - FT_Byte** t; - - - *table = 0; - - if ( index->count > 0 && !ALLOC_ARRAY( t, index->count + 1, FT_Byte* ) ) - { - old_offset = 1; - for ( n = 0; n <= index->count; n++ ) - { - offset = index->offsets[n]; - if ( !offset ) - offset = old_offset; - - t[n] = index->bytes + offset - 1; - - old_offset = offset; - } - *table = t; - } - - return error; - } - - - FT_LOCAL_DEF - FT_Error T2_Access_Element( CFF_Index* index, - FT_UInt element, - FT_Byte** pbytes, - FT_ULong* pbyte_len ) - { - FT_Error error = 0; - - - if ( index && index->count > element ) - { - /* compute start and end offsets */ - FT_ULong off1, off2 = 0; - - - off1 = index->offsets[element]; - if ( off1 ) - { - do - { - element++; - off2 = index->offsets[element]; - - } while ( off2 == 0 && element < index->count ); - - if ( !off2 ) - off1 = 0; - } - - /* access element */ - if ( off1 ) - { - *pbyte_len = off2 - off1; - - if ( index->bytes ) - { - /* this index was completely loaded in memory, that's easy */ - *pbytes = index->bytes + off1 - 1; - } - else - { - /* this index is still on disk/file, access it through a frame */ - FT_Stream stream = index->stream; - - - if ( FILE_Seek( index->data_offset + off1 - 1 ) || - EXTRACT_Frame( off2 - off1, *pbytes ) ) - goto Exit; - } - } - else - { - /* empty index element */ - *pbytes = 0; - *pbyte_len = 0; - } - } - else - error = T2_Err_Invalid_Argument; - - Exit: - return error; - } - - - FT_LOCAL_DEF - void T2_Forget_Element( CFF_Index* index, - FT_Byte** pbytes ) - { - if ( index->bytes == 0 ) - { - FT_Stream stream = index->stream; - - - RELEASE_Frame( *pbytes ); - } - } - - - FT_LOCAL_DEF - FT_String* T2_Get_Name( CFF_Index* index, - FT_UInt element ) - { - FT_Memory memory = index->stream->memory; - FT_Byte* bytes; - FT_ULong byte_len; - FT_Error error; - FT_String* name = 0; - - - error = T2_Access_Element( index, element, &bytes, &byte_len ); - if ( error ) - goto Exit; - - if ( !ALLOC( name, byte_len + 1 ) ) - { - MEM_Copy( name, bytes, byte_len ); - name[byte_len] = 0; - } - T2_Forget_Element( index, &bytes ); - - Exit: - return name; - } - - - FT_LOCAL_DEF - FT_String* T2_Get_String( CFF_Index* index, - FT_UInt sid, - PSNames_Interface* interface ) - { - /* if it is not a standard string, return it */ - if ( sid > 390 ) - return T2_Get_Name( index, sid - 391 ); - - /* that's a standard string, fetch a copy from the PSName module */ - { - FT_String* name = 0; - const char* adobe_name = interface->adobe_std_strings( sid ); - FT_UInt len; - - - if ( adobe_name ) - { - FT_Memory memory = index->stream->memory; - FT_Error error; - - - len = (FT_UInt)strlen( adobe_name ); - if ( !ALLOC( name, len + 1 ) ) - { - MEM_Copy( name, adobe_name, len ); - name[len] = 0; - } - } - - return name; - } - } - - - /*************************************************************************/ - /*************************************************************************/ - /*** ***/ - /*** FD Select table support ***/ - /*** ***/ - /*************************************************************************/ - /*************************************************************************/ - - - static - void CFF_Done_FD_Select( CFF_FD_Select* select, - FT_Stream stream ) - { - if ( select->data ) - RELEASE_Frame( select->data ); - - select->data_size = 0; - select->format = 0; - select->range_count = 0; - } - - - static - FT_Error CFF_Load_FD_Select( CFF_FD_Select* select, - FT_UInt num_glyphs, - FT_Stream stream, - FT_ULong offset ) - { - FT_Error error; - FT_Byte format; - FT_UInt num_ranges; - - - /* read format */ - if ( FILE_Seek( offset ) || READ_Byte( format ) ) - goto Exit; - - select->format = format; - select->cache_count = 0; /* clear cache */ - - switch ( format ) - { - case 0: /* format 0, that's simple */ - select->data_size = num_glyphs; - goto Load_Data; - - case 3: /* format 3, a tad more complex */ - if ( READ_UShort( num_ranges ) ) - goto Exit; - - select->data_size = num_ranges * 3 + 2; - - Load_Data: - if ( EXTRACT_Frame( select->data_size, select->data ) ) - goto Exit; - break; - - default: /* hmm... that's wrong */ - error = T2_Err_Invalid_File_Format; - } - - Exit: - return error; - } - - - FT_LOCAL_DEF - FT_Byte CFF_Get_FD( CFF_FD_Select* select, - FT_UInt glyph_index ) - { - FT_Byte fd = 0; - - - switch ( select->format ) - { - case 0: - fd = select->data[glyph_index]; - break; - - case 3: - /* first, compare to cache */ - if ( (FT_UInt)(glyph_index-select->cache_first) < select->cache_count ) - { - fd = select->cache_fd; - break; - } - - /* then, lookup the ranges array */ - { - FT_Byte* p = select->data; - FT_Byte* p_limit = p + select->data_size; - FT_Byte fd2; - FT_UInt first, limit; - - - first = NEXT_UShort( p ); - do - { - if ( glyph_index < first ) - break; - - fd2 = *p++; - limit = NEXT_UShort( p ); - - if ( glyph_index < limit ) - { - fd = fd2; - - /* update cache */ - select->cache_first = first; - select->cache_count = limit-first; - select->cache_fd = fd2; - break; - } - first = limit; - - } while ( p < p_limit ); - } - break; - - default: - ; - } - - return fd; - } - - - /*************************************************************************/ - /*************************************************************************/ - /*** ***/ - /*** CFF font support ***/ - /*** ***/ - /*************************************************************************/ - /*************************************************************************/ - - - static - FT_Error CFF_Load_SubFont( CFF_SubFont* font, - CFF_Index* index, - FT_UInt font_index, - FT_Stream stream, - FT_ULong base_offset ) - { - FT_Error error; - T2_Parser parser; - FT_Byte* dict; - FT_ULong dict_len; - CFF_Font_Dict* top = &font->font_dict; - CFF_Private* priv = &font->private_dict; - - - T2_Parser_Init( &parser, T2CODE_TOPDICT, &font->font_dict ); - - /* set defaults */ - MEM_Set( top, 0, sizeof ( *top ) ); - - top->underline_position = -100; - top->underline_thickness = 50; - top->charstring_type = 2; - top->font_matrix.xx = 0x10000L; - top->font_matrix.yy = 0x10000L; - top->cid_count = 8720; - - error = T2_Access_Element( index, font_index, &dict, &dict_len ) || - T2_Parser_Run( &parser, dict, dict + dict_len ); - - T2_Forget_Element( index, &dict ); - - if ( error ) - goto Exit; - - /* if it is a CID font, we stop there */ - if ( top->cid_registry ) - goto Exit; - - /* parse the private dictionary, if any */ - if ( top->private_offset && top->private_size ) - { - /* set defaults */ - MEM_Set( priv, 0, sizeof ( *priv ) ); - - priv->blue_shift = 7; - priv->blue_fuzz = 1; - priv->lenIV = -1; - priv->expansion_factor = (FT_Fixed)0.06 * 0x10000L; - priv->blue_scale = (FT_Fixed)0.039625 * 0x10000L; - - T2_Parser_Init( &parser, T2CODE_PRIVATE, priv ); - - if ( FILE_Seek( base_offset + font->font_dict.private_offset ) || - ACCESS_Frame( font->font_dict.private_size ) ) - goto Exit; - - error = T2_Parser_Run( &parser, - (FT_Byte*)stream->cursor, - (FT_Byte*)stream->limit ); - FORGET_Frame(); - if ( error ) - goto Exit; - } - - /* read the local subrs, if any */ - if ( priv->local_subrs_offset ) - { - if ( FILE_Seek( base_offset + top->private_offset + - priv->local_subrs_offset ) ) - goto Exit; - - error = t2_new_cff_index( &font->local_subrs_index, stream, 1 ); - if ( error ) - goto Exit; - - font->num_local_subrs = font->local_subrs_index.count; - error = t2_explicit_cff_index( &font->local_subrs_index, - &font->local_subrs ); - } - - Exit: - return error; - } - - - static - void CFF_Done_SubFont( FT_Memory memory, - CFF_SubFont* subfont ) - { - if ( subfont ) - { - t2_done_cff_index( &subfont->local_subrs_index ); - FREE( subfont->local_subrs ); - } - } - - - FT_LOCAL_DEF - FT_Error T2_Load_CFF_Font( FT_Stream stream, - FT_Int face_index, - CFF_Font* font ) - { - static const FT_Frame_Field cff_header_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE CFF_Font - - FT_FRAME_START( 4 ), - FT_FRAME_BYTE( version_major ), - FT_FRAME_BYTE( version_minor ), - FT_FRAME_BYTE( header_size ), - FT_FRAME_BYTE( absolute_offsize ), - FT_FRAME_END - }; - - FT_Error error; - FT_Memory memory = stream->memory; - FT_ULong base_offset; - CFF_Font_Dict* dict; - - - MEM_Set( font, 0, sizeof ( *font ) ); - font->stream = stream; - font->memory = memory; - dict = &font->top_font.font_dict; - base_offset = FILE_Pos(); - - /* read CFF font header */ - if ( READ_Fields( cff_header_fields, font ) ) - goto Exit; - - /* check format */ - if ( font->version_major != 1 || - font->header_size < 4 || - font->absolute_offsize > 4 ) - { - FT_TRACE2(( "[not a CFF font header!]\n" )); - error = FT_Err_Unknown_File_Format; - goto Exit; - } - - /* skip the rest of the header */ - if ( FILE_Skip( font->header_size - 4 ) ) - goto Exit; - - /* read the name, top dict, string and global subrs index */ - error = t2_new_cff_index( &font->name_index, stream, 0 ) || - t2_new_cff_index( &font->font_dict_index, stream, 0 ) || - t2_new_cff_index( &font->string_index, stream, 0 ) || - t2_new_cff_index( &font->global_subrs_index, stream, 1 ); - if ( error ) - goto Exit; - - /* well, we don't really forget the `disabled' fonts... */ - font->num_faces = font->name_index.count; - if ( face_index >= (FT_Int)font->num_faces ) - { - FT_ERROR(( "T2_Load_CFF_Font: incorrect face index = %d\n", - face_index )); - error = T2_Err_Invalid_Argument; - } - - /* in case of a font format check, simply exit now */ - if ( face_index < 0 ) - goto Exit; - - /* now, parse the top-level font dictionary */ - error = CFF_Load_SubFont( &font->top_font, - &font->font_dict_index, - face_index, - stream, - base_offset ); - if ( error ) - goto Exit; - - /* now, check for a CID font */ - if ( dict->cid_registry ) - { - CFF_Index fd_index; - CFF_SubFont* sub; - FT_UInt index; - - - /* this is a CID-keyed font, we must now allocate a table of */ - /* sub-fonts, then load each of them separately */ - if ( FILE_Seek( base_offset + dict->cid_fd_array_offset ) ) - goto Exit; - - error = t2_new_cff_index( &fd_index, stream, 0 ); - if ( error ) - goto Exit; - - if ( fd_index.count > CFF_MAX_CID_FONTS ) - { - FT_ERROR(( "T2_Load_CFF_Font: FD array too large in CID font\n" )); - goto Fail_CID; - } - - /* allocate & read each font dict independently */ - font->num_subfonts = fd_index.count; - if ( ALLOC_ARRAY( sub, fd_index.count, CFF_SubFont ) ) - goto Fail_CID; - - /* setup pointer table */ - for ( index = 0; index < fd_index.count; index++ ) - font->subfonts[index] = sub + index; - - /* now load each sub font independently */ - for ( index = 0; index < fd_index.count; index++ ) - { - sub = font->subfonts[index]; - error = CFF_Load_SubFont( sub, &fd_index, index, - stream, base_offset ); - if ( error ) - goto Fail_CID; - } - - /* now load the FD Select array */ - error = CFF_Load_FD_Select( &font->fd_select, - dict->cid_count, - stream, - base_offset + dict->cid_fd_select_offset ); - - Fail_CID: - t2_done_cff_index( &fd_index ); - - if ( error ) - goto Exit; - } - else - font->num_subfonts = 0; - - /* read the charstrings index now */ - if ( dict->charstrings_offset == 0 ) - { - FT_ERROR(( "T2_Load_CFF_Font: no charstrings offset!\n" )); - error = FT_Err_Unknown_File_Format; - goto Exit; - } - - if ( FILE_Seek( base_offset + dict->charstrings_offset ) ) - goto Exit; - - error = t2_new_cff_index( &font->charstrings_index, stream, 0 ); - if ( error ) - goto Exit; - - /* explicit the global subrs */ - font->num_global_subrs = font->global_subrs_index.count; - font->num_glyphs = font->charstrings_index.count; - - error = t2_explicit_cff_index( &font->global_subrs_index, - &font->global_subrs ) ; - - if ( error ) - goto Exit; - - /* get the font name */ - font->font_name = T2_Get_Name( &font->name_index, face_index ); - - Exit: - return error; - } - - - FT_LOCAL_DEF - void T2_Done_CFF_Font( CFF_Font* font ) - { - FT_Memory memory = font->memory; - FT_UInt index; - - - t2_done_cff_index( &font->global_subrs_index ); - t2_done_cff_index( &font->string_index ); - t2_done_cff_index( &font->font_dict_index ); - t2_done_cff_index( &font->name_index ); - t2_done_cff_index( &font->charstrings_index ); - - /* release font dictionaries */ - for ( index = 0; index < font->num_subfonts; index++ ) - CFF_Done_SubFont( memory, font->subfonts[index] ); - - CFF_Done_SubFont( memory, &font->top_font ); - - CFF_Done_FD_Select( &font->fd_select, font->stream ); - - FREE( font->global_subrs ); - FREE( font->font_name ); - } - - -/* END */ Index: xc/extras/freetype2/src/cff/t2load.h diff -u xc/extras/freetype2/src/cff/t2load.h:1.1.1.1 xc/extras/freetype2/src/cff/t2load.h:removed --- xc/extras/freetype2/src/cff/t2load.h:1.1.1.1 Fri Dec 8 16:26:20 2000 +++ xc/extras/freetype2/src/cff/t2load.h Fri Jan 18 15:21:54 2002 @@ -1,69 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2load.h */ -/* */ -/* OpenType glyph data/program tables loader (specification). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef T2LOAD_H -#define T2LOAD_H - -#include <freetype/internal/t2types.h> -#include <freetype/internal/psnames.h> - -#ifdef __cplusplus - extern "C" { -#endif - - FT_LOCAL - FT_String* T2_Get_Name( CFF_Index* index, - FT_UInt element ); - - FT_LOCAL - FT_String* T2_Get_String( CFF_Index* index, - FT_UInt sid, - PSNames_Interface* interface ); - - FT_LOCAL - FT_Error T2_Access_Element( CFF_Index* index, - FT_UInt element, - FT_Byte** pbytes, - FT_ULong* pbyte_len ); - - FT_LOCAL - void T2_Forget_Element( CFF_Index* index, - FT_Byte** pbytes ); - - FT_LOCAL - FT_Error T2_Load_CFF_Font( FT_Stream stream, - FT_Int face_index, - CFF_Font* font ); - - FT_LOCAL - void T2_Done_CFF_Font( CFF_Font* font ); - - FT_LOCAL - FT_Byte CFF_Get_FD( CFF_FD_Select* select, - FT_UInt glyph_index ); - - -#ifdef __cplusplus - } -#endif - - -#endif /* T2LOAD_H */ - - -/* END */ Index: xc/extras/freetype2/src/cff/t2objs.c diff -u xc/extras/freetype2/src/cff/t2objs.c:1.1.1.1 xc/extras/freetype2/src/cff/t2objs.c:removed --- xc/extras/freetype2/src/cff/t2objs.c:1.1.1.1 Fri Dec 8 16:26:21 2000 +++ xc/extras/freetype2/src/cff/t2objs.c Fri Jan 18 15:21:54 2002 @@ -1,604 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2objs.c */ -/* */ -/* OpenType objects manager (body). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <freetype/internal/ftdebug.h> -#include <freetype/internal/ftcalc.h> -#include <freetype/internal/ftstream.h> -#include <freetype/fterrors.h> -#include <freetype/ttnameid.h> -#include <freetype/tttags.h> - -#include <freetype/internal/sfnt.h> -#include <freetype/internal/psnames.h> - - -#ifdef FT_FLAT_COMPILE - -#include "t2objs.h" -#include "t2load.h" - -#else - -#include <cff/t2objs.h> -#include <cff/t2load.h> - -#endif - - -#include <freetype/internal/t2errors.h> - -#include <string.h> /* for strlen() */ - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t2objs - - - /*************************************************************************/ - /* */ - /* FACE FUNCTIONS */ - /* */ - /*************************************************************************/ - - static - FT_String* T2_StrCopy( FT_Memory memory, - const FT_String* source ) - { - FT_Error error; - FT_String* result = 0; - FT_Int len = (FT_Int)strlen( source ); - - - if ( !ALLOC( result, len + 1 ) ) - { - MEM_Copy( result, source, len ); - result[len] = 0; - } - return result; - } - - -#if 0 - - /* this function is used to build a Unicode charmap from the glyph names */ - /* in a file */ - static - FT_Error CFF_Build_Unicode_Charmap( T2_Face face, - FT_ULong base_offset, - PSNames_Interface* psnames ) - { - CFF_Font* font = (CFF_Font*)face->extra.data; - FT_Memory memory = FT_FACE_MEMORY(face); - FT_UInt n, num_glyphs = face->root.num_glyphs; - const char** glyph_names; - FT_Error error; - CFF_Font_Dict* dict = &font->top_font.font_dict; - FT_ULong charset_offset; - FT_Byte format; - FT_Stream stream = face->root.stream; - - - charset_offset = dict->charset_offset; - if ( !charset_offset ) - { - FT_ERROR(( "CFF.Build_Unicode_Charmap: charset table is missing\n" )); - error = T2_Err_Invalid_File_Format; - goto Exit; - } - - /* allocate the charmap */ - if ( ALLOC( face->charmap, ... - - /* seek to charset table and allocate glyph names table */ - if ( FILE_Seek( base_offset + charset_offset ) || - ALLOC_ARRAY( glyph_names, num_glyphs, const char* ) ) - goto Exit; - - /* now, read each glyph name and store it in the glyph name table */ - if ( READ_Byte( format ) ) - goto Fail; - - switch ( format ) - { - case 0: /* format 0 - one SID per glyph */ - { - const char** gname = glyph_names; - const char** limit = gname + num_glyphs; - - if ( ACCESS_Frame( num_glyphs*2 ) ) - goto Fail; - - for ( ; gname < limit; gname++ ) - gname[0] = T2_Get_String( &font->string_index, - GET_UShort(), - psnames ); - FORGET_Frame(); - break; - } - - case 1: /* format 1 - sequential ranges */ - case 2: /* format 2 - sequential ranges with 16-bit counts */ - { - const char** gname = glyph_names; - const char** limit = gname + num_glyphs; - FT_UInt len = 3; - - if (format == 2) - len++; - - while (gname < limit) - { - FT_UInt first; - FT_UInt count; - - if ( ACCESS_Frame( len ) ) - goto Fail; - - first = GET_UShort(); - if (format == 3) - count = GET_UShort(); - else - count = GET_Byte(); - - FORGET_Frame(); - - for ( ; count > 0; count-- ) - { - gname[0] = T2_Get_String( &font->string_index, - first, - psnames ); - gname++; - first++; - } - } - break; - } - - default: /* unknown charset format! */ - FT_ERROR(( "CFF: unknown charset format!\n" )); - error = T2_Err_Invalid_File_Format; - goto Fail; - } - - /* all right, the glyph names were loaded, we now need to create */ - /* the corresponding unicode charmap.. */ - - Fail: - for ( n = 0; n < num_glyphs; n++ ) - FREE( glyph_names[n] ); - - FREE( glyph_names ); - - Exit: - return error; - } - -#endif /* 0 */ - - - static - FT_Encoding find_encoding( int platform_id, - int encoding_id ) - { - typedef struct TEncoding - { - int platform_id; - int encoding_id; - FT_Encoding encoding; - - } TEncoding; - - static - const TEncoding tt_encodings[] = - { - { TT_PLATFORM_ISO, -1, ft_encoding_unicode }, - - { TT_PLATFORM_APPLE_UNICODE, -1, ft_encoding_unicode }, - - { TT_PLATFORM_MACINTOSH, TT_MAC_ID_ROMAN, ft_encoding_apple_roman }, - - { TT_PLATFORM_MICROSOFT, TT_MS_ID_UNICODE_CS, ft_encoding_unicode }, - { TT_PLATFORM_MICROSOFT, TT_MS_ID_SJIS, ft_encoding_sjis }, - { TT_PLATFORM_MICROSOFT, TT_MS_ID_GB2312, ft_encoding_gb2312 }, - { TT_PLATFORM_MICROSOFT, TT_MS_ID_BIG_5, ft_encoding_big5 }, - { TT_PLATFORM_MICROSOFT, TT_MS_ID_WANSUNG, ft_encoding_wansung }, - { TT_PLATFORM_MICROSOFT, TT_MS_ID_JOHAB, ft_encoding_johab } - }; - - const TEncoding *cur, *limit; - - - cur = tt_encodings; - limit = cur + sizeof ( tt_encodings ) / sizeof ( tt_encodings[0] ); - - for ( ; cur < limit; cur++ ) - { - if ( cur->platform_id == platform_id ) - { - if ( cur->encoding_id == encoding_id || - cur->encoding_id == -1 ) - return cur->encoding; - } - } - - return ft_encoding_none; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T2_Init_Face */ - /* */ - /* <Description> */ - /* Initializes a given OpenType face object. */ - /* */ - /* <Input> */ - /* stream :: The source font stream. */ - /* */ - /* face_index :: The index of the font face in the resource. */ - /* */ - /* num_params :: Number of additional generic parameters. Ignored. */ - /* */ - /* params :: Additional generic parameters. Ignored. */ - /* */ - /* <InOut> */ - /* face :: The newly built face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL - FT_Error T2_Init_Face( FT_Stream stream, - T2_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - FT_Error error; - SFNT_Interface* sfnt; - PSNames_Interface* psnames; - FT_Bool pure_cff = 1; - FT_Bool sfnt_format = 0; - - - sfnt = (SFNT_Interface*)FT_Get_Module_Interface( - face->root.driver->root.library, "sfnt" ); - if ( !sfnt ) - goto Bad_Format; - - psnames = (PSNames_Interface*)FT_Get_Module_Interface( - face->root.driver->root.library, "psnames" ); - - /* create input stream from resource */ - if ( FILE_Seek( 0 ) ) - goto Exit; - - /* check that we have a valid OpenType file */ - error = sfnt->init_face( stream, face, face_index, num_params, params ); - if ( !error ) - { - if ( face->format_tag != 0x4F54544FL ) /* `OTTO'; OpenType/CFF font */ - { - FT_TRACE2(( "[not a valid OpenType/CFF font]\n" )); - goto Bad_Format; - } - - /* If we are performing a simple font format check, exit immediately */ - if ( face_index < 0 ) - return T2_Err_Ok; - - sfnt_format = 1; - - /* now, the font can be either an OpenType/CFF font, or a SVG CEF */ - /* font in the later case; it doesn't have a `head' table */ - error = face->goto_table( face, TTAG_head, stream, 0 ); - if ( !error ) - { - pure_cff = 0; - - /* Load font directory */ - error = sfnt->load_face( stream, face, - face_index, num_params, params ); - if ( error ) - goto Exit; - } - else - { - /* load the `cmap' table by hand */ - error = sfnt->load_charmaps( face, stream ); - if ( error ) - goto Exit; - - /* XXX: for now, we don't load the GPOS table, as OpenType Layout */ - /* support will be added later to FreeType 2 as a separate module */ - } - - /* now, load the CFF part of the file */ - error = face->goto_table( face, TTAG_CFF, stream, 0 ); - if ( error ) - goto Exit; - } - else - { - /* rewind to start of file; we are going to load a pure-CFF font */ - if ( FILE_Seek( 0 ) ) - goto Exit; - error = FT_Err_Ok; - } - - /* now load and parse the CFF table in the file */ - { - CFF_Font* cff; - FT_Memory memory = face->root.memory; - FT_Face root; - FT_UInt flags; - FT_ULong base_offset; - - - if ( ALLOC( cff, sizeof ( *cff ) ) ) - goto Exit; - - base_offset = FILE_Pos(); - - face->extra.data = cff; - error = T2_Load_CFF_Font( stream, face_index, cff ); - if ( error ) - goto Exit; - - /* Complement the root flags with some interesting information. */ - /* Note that this is only necessary for pure CFF and CEF fonts */ - - root = &face->root; - if ( pure_cff ) - { - CFF_Font_Dict* dict = &cff->top_font.font_dict; - - - /* we need the `PSNames' module for pure-CFF and CEF formats */ - if ( !psnames ) - { - FT_ERROR(( "T2_Init_Face:" )); - FT_ERROR(( " cannot open CFF & CEF fonts\n" )); - FT_ERROR(( " " )); - FT_ERROR(( " without the `PSNames' module\n" )); - goto Bad_Format; - } - - /* Set up num_faces. */ - root->num_faces = cff->num_faces; - - /* compute number of glyphs */ - if ( dict->cid_registry ) - root->num_glyphs = dict->cid_count; - else - root->num_glyphs = cff->charstrings_index.count; - - /* set global bbox, as well as EM size */ - root->units_per_EM = 1000; - root->bbox = dict->font_bbox; - root->ascender = (FT_Short)root->bbox.yMax; - root->descender = (FT_Short)root->bbox.yMin; - root->height = ( ( root->ascender - root->descender ) * 12 ) / 10; - - /* retrieve font family & style name */ - root->family_name = T2_Get_Name( &cff->name_index, face_index ); - if ( dict->cid_registry ) - { - root->style_name = T2_StrCopy( memory, "Regular" ); /* XXXX */ - } - else - { - root->style_name = T2_Get_String( &cff->string_index, - dict->weight, - psnames ); - } - - /*******************************************************************/ - /* */ - /* Compute face flags. */ - /* */ - flags = FT_FACE_FLAG_SCALABLE | /* scalable outlines */ - FT_FACE_FLAG_HORIZONTAL; /* horizontal data */ - - if ( sfnt_format ) - flags |= FT_FACE_FLAG_SFNT; - - /* fixed width font? */ - if ( dict->is_fixed_pitch ) - flags |= FT_FACE_FLAG_FIXED_WIDTH; - -/* XXXX: WE DO NOT SUPPORT KERNING METRICS IN THE GPOS TABLE FOR NOW */ -#if 0 - /* kerning available? */ - if ( face->kern_pairs ) - flags |= FT_FACE_FLAG_KERNING; -#endif - - root->face_flags = flags; - - /*******************************************************************/ - /* */ - /* Compute style flags. */ - /* */ - flags = 0; - - if ( dict->italic_angle ) - flags |= FT_STYLE_FLAG_ITALIC; - - /* XXX: may not be correct */ - if ( cff->top_font.private_dict.force_bold ) - flags |= FT_STYLE_FLAG_BOLD; - - root->style_flags = flags; - - /* set the charmaps if any */ - if ( sfnt_format ) - { - /*****************************************************************/ - /* */ - /* Polish the charmaps. */ - /* */ - /* Try to set the charmap encoding according to the platform & */ - /* encoding ID of each charmap. */ - /* */ - TT_CharMap charmap; - FT_Int n; - - - charmap = face->charmaps; - root->num_charmaps = face->num_charmaps; - - /* allocate table of pointers */ - if ( ALLOC_ARRAY( root->charmaps, root->num_charmaps, FT_CharMap ) ) - goto Exit; - - for ( n = 0; n < root->num_charmaps; n++, charmap++ ) - { - FT_Int platform = charmap->cmap.platformID; - FT_Int encoding = charmap->cmap.platformEncodingID; - - - charmap->root.face = (FT_Face)face; - charmap->root.platform_id = platform; - charmap->root.encoding_id = encoding; - charmap->root.encoding = find_encoding( platform, encoding ); - - /* now, set root->charmap with a unicode charmap */ - /* wherever available */ - if ( !root->charmap && - charmap->root.encoding == ft_encoding_unicode ) - root->charmap = (FT_CharMap)charmap; - - root->charmaps[n] = (FT_CharMap)charmap; - } - } - } - } - - Exit: - return error; - - Bad_Format: - error = FT_Err_Unknown_File_Format; - goto Exit; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T2_Done_Face */ - /* */ - /* <Description> */ - /* Finalizes a given face object. */ - /* */ - /* <Input> */ - /* face :: A pointer to the face object to destroy. */ - /* */ - FT_LOCAL - void T2_Done_Face( T2_Face face ) - { - FT_Memory memory = face->root.memory; - SFNT_Interface* sfnt = (SFNT_Interface*)face->sfnt; - - - if ( sfnt ) - sfnt->done_face( face ); - - { - CFF_Font* cff = (CFF_Font*)face->extra.data; - - - if ( cff ) - { - T2_Done_CFF_Font( cff ); - FREE( face->extra.data ); - } - } - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T2_Init_Driver */ - /* */ - /* <Description> */ - /* Initializes a given OpenType driver object. */ - /* */ - /* <Input> */ - /* driver :: A handle to the target driver object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF - FT_Error T2_Init_Driver( T2_Driver driver ) - { - /* init extension registry if needed */ - -#ifdef TT_CONFIG_OPTION_EXTEND_ENGINE - - return TT_Init_Extensions( driver ); - -#else - - FT_UNUSED( driver ); - - return T2_Err_Ok; - -#endif - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T2_Done_Driver */ - /* */ - /* <Description> */ - /* Finalizes a given OpenType driver. */ - /* */ - /* <Input> */ - /* driver :: A handle to the target OpenType driver. */ - /* */ - FT_LOCAL_DEF - void T2_Done_Driver( T2_Driver driver ) - { - /* destroy extensions registry if needed */ - -#ifdef TT_CONFIG_OPTION_EXTEND_ENGINE - - TT_Done_Extensions( driver ); - -#else - - FT_UNUSED( driver ); - -#endif - } - - -/* END */ Index: xc/extras/freetype2/src/cff/t2objs.h diff -u xc/extras/freetype2/src/cff/t2objs.h:1.1.1.1 xc/extras/freetype2/src/cff/t2objs.h:removed --- xc/extras/freetype2/src/cff/t2objs.h:1.1.1.1 Fri Dec 8 16:26:21 2000 +++ xc/extras/freetype2/src/cff/t2objs.h Fri Jan 18 15:21:54 2002 @@ -1,148 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2objs.h */ -/* */ -/* OpenType objects manager (specification). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef T2OBJS_H -#define T2OBJS_H - - -#include <freetype/internal/ftobjs.h> -#include <freetype/internal/t2types.h> -#include <freetype/internal/t2errors.h> -#include <freetype/internal/psnames.h> - -#ifdef __cplusplus - extern "C" { -#endif - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* T2_Driver */ - /* */ - /* <Description> */ - /* A handle to an OpenType driver object. */ - /* */ - typedef struct T2_DriverRec_* T2_Driver; - - typedef TT_Face T2_Face; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* T2_Size */ - /* */ - /* <Description> */ - /* A handle to an OpenType size object. */ - /* */ - typedef FT_Size T2_Size; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* T2_GlyphSlot */ - /* */ - /* <Description> */ - /* A handle to an OpenType glyph slot object. */ - /* */ - typedef struct T2_GlyphSlotRec_ - { - FT_GlyphSlotRec root; - - FT_Bool hint; - FT_Bool scaled; - - FT_Fixed x_scale; - FT_Fixed y_scale; - - } T2_GlyphSlotRec, *T2_GlyphSlot; - - - - /*************************************************************************/ - /* */ - /* Subglyph transformation record. */ - /* */ - typedef struct T2_Transform_ - { - FT_Fixed xx, xy; /* transformation matrix coefficients */ - FT_Fixed yx, yy; - FT_F26Dot6 ox, oy; /* offsets */ - - } T2_Transform; - - - /* this is only used in the case of a pure CFF font with no charmap */ - typedef struct T2_CharMapRec_ - { - TT_CharMapRec root; - PS_Unicodes unicodes; - - } T2_CharMapRec, *T2_CharMap; - - - /***********************************************************************/ - /* */ - /* TrueType driver class. */ - /* */ - typedef struct T2_DriverRec_ - { - FT_DriverRec root; - - void* extension_component; - - } T2_DriverRec; - - - /*************************************************************************/ - /* */ - /* Face functions */ - /* */ - FT_LOCAL - FT_Error T2_Init_Face( FT_Stream stream, - T2_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - FT_LOCAL - void T2_Done_Face( T2_Face face ); - - - /*************************************************************************/ - /* */ - /* Driver functions */ - /* */ - FT_LOCAL - FT_Error T2_Init_Driver( T2_Driver driver ); - - FT_LOCAL - void T2_Done_Driver( T2_Driver driver ); - - -#ifdef __cplusplus - } -#endif - - -#endif /* T2OBJS_H */ - - -/* END */ Index: xc/extras/freetype2/src/cff/t2parse.c diff -u xc/extras/freetype2/src/cff/t2parse.c:1.1.1.1 xc/extras/freetype2/src/cff/t2parse.c:removed --- xc/extras/freetype2/src/cff/t2parse.c:1.1.1.1 Fri Dec 8 16:26:21 2000 +++ xc/extras/freetype2/src/cff/t2parse.c Fri Jan 18 15:21:54 2002 @@ -1,655 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2parse.c */ -/* */ -/* OpenType parser (body). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifdef FT_FLAT_COMPILE - -#include "t2parse.h" - -#else - -#include <cff/t2parse.h> - -#endif - - -#include <freetype/internal/t2errors.h> -#include <freetype/internal/ftstream.h> - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t2parse - - -#define T2_Err_Stack_Underflow FT_Err_Invalid_Argument -#define T2_Err_Syntax_Error FT_Err_Invalid_Argument - - - enum - { - t2_kind_none = 0, - t2_kind_num, - t2_kind_fixed, - t2_kind_string, - t2_kind_bool, - t2_kind_delta, - t2_kind_callback, - - t2_kind_max /* do not remove */ - }; - - - /* now generate handlers for the most simple fields */ - typedef FT_Error (*T2_Field_Reader)( T2_Parser* parser ); - - typedef struct T2_Field_Handler_ - { - int kind; - int code; - FT_UInt offset; - FT_Byte size; - T2_Field_Reader reader; - FT_UInt array_max; - FT_UInt count_offset; - - } T2_Field_Handler; - - - FT_LOCAL_DEF - void T2_Parser_Init( T2_Parser* parser, - FT_UInt code, - void* object ) - { - MEM_Set( parser, 0, sizeof ( *parser ) ); - - parser->top = parser->stack; - parser->object_code = code; - parser->object = object; - } - - - /* reads an integer */ - static - FT_Long parse_t2_integer( FT_Byte* start, - FT_Byte* limit ) - { - FT_Byte* p = start; - FT_Int v = *p++; - FT_Long val = 0; - - - if ( v == 28 ) - { - if ( p + 2 > limit ) - goto Bad; - - val = (FT_Short)( ( (FT_Int)p[0] << 8 ) | p[1] ); - p += 2; - } - else if ( v == 29 ) - { - if ( p + 4 > limit ) - goto Bad; - - val = ( (FT_Long)p[0] << 24 ) | - ( (FT_Long)p[1] << 16 ) | - ( (FT_Long)p[2] << 8 ) | - p[3]; - p += 4; - } - else if ( v < 247 ) - { - val = v - 139; - } - else if ( v < 251 ) - { - if ( p + 1 > limit ) - goto Bad; - - val = ( v - 247 ) * 256 + p[0] + 108; - p++; - } - else - { - if ( p + 1 > limit ) - goto Bad; - - val = -( v - 251 ) * 256 - p[0] - 108; - p++; - } - - Exit: - return val; - - Bad: - val = 0; - goto Exit; - } - - - /* read a real */ - static - FT_Fixed parse_t2_real( FT_Byte* start, - FT_Byte* limit, - FT_Int power_ten ) - { - FT_Byte* p = start; - FT_Long num, divider, result, exp; - FT_Int sign = 0, exp_sign = 0; - FT_Byte nib; - FT_Byte phase; - - - result = 0; - num = 0; - divider = 1; - - /* first of all, read the integer part */ - phase = 4; - - for (;;) - { - - /* If we entered this iteration with phase == 4, we need to */ - /* read a new byte. This also skips past the intial 0x1E. */ - if ( phase ) - p++; - - /* Make sure we don't read past the end. */ - if ( p >= limit ) - goto Bad; - - /* Get the nibble. */ - nib = ( p[0] >> phase ) & 0xF; - phase = 4 - phase; - - if ( nib == 0xE ) - sign = 1; - else if ( nib > 9 ) - break; - else - result = result * 10 + nib; - } - - /* read decimal part, if any */ - if ( nib == 0xa ) - for (;;) - { - - /* If we entered this iteration with phase == 4, we need */ - /* to read a new byte. */ - if ( phase ) - p++; - - /* Make sure we don't read past the end. */ - if ( p >= limit ) - goto Bad; - - /* Get the nibble. */ - nib = ( p[0] >> phase ) & 0xF; - phase = 4 - phase; - if ( nib >= 10 ) - break; - - if (divider < 10000000L) - { - num = num * 10 + nib; - divider *= 10; - } - } - - /* read exponent, if any */ - if ( nib == 12 ) - { - exp_sign = 1; - nib = 11; - } - - if ( nib == 11 ) - { - exp = 0; - - for (;;) - { - /* If we entered this iteration with phase == 4, we need */ - /* to read a new byte. */ - if ( phase ) - p++; - - /* Make sure we don't read past the end. */ - if ( p >= limit ) - goto Bad; - - /* Get the nibble. */ - nib = ( p[0] >> phase ) & 0xF; - phase = 4 - phase; - if ( nib >= 10 ) - break; - - exp = exp * 10 + nib; - } - - if ( exp_sign ) - exp = -exp; - - power_ten += exp; - } - - /* raise to power of ten if needed */ - while ( power_ten > 0 ) - { - result = result * 10; - num = num * 10; - - power_ten--; - } - - while ( power_ten < 0 ) - { - result = result / 10; - divider = divider * 10; - - power_ten++; - } - - if ( num ) - result += FT_DivFix( num, divider ); - - if ( sign ) - result = -result; - - Exit: - return result; - - Bad: - result = 0; - goto Exit; - } - - - /* read a number, either integer or real */ - static - FT_Long t2_parse_num( FT_Byte** d ) - { - return ( **d == 30 ? ( parse_t2_real( d[0], d[1], 0 ) >> 16 ) - : parse_t2_integer( d[0], d[1] ) ); - } - - - /* reads a floating point number, either integer or real */ - static - FT_Fixed t2_parse_fixed( FT_Byte** d ) - { - return ( **d == 30 ? parse_t2_real( d[0], d[1], 0 ) - : parse_t2_integer( d[0], d[1] ) << 16 ); - } - - - static - FT_Error parse_font_matrix( T2_Parser* parser ) - { - CFF_Font_Dict* dict = (CFF_Font_Dict*)parser->object; - FT_Matrix* matrix = &dict->font_matrix; - FT_Byte** data = parser->stack; - FT_Error error; - - - error = T2_Err_Stack_Underflow; - - if ( parser->top >= parser->stack + 4 ) - { - matrix->xx = t2_parse_fixed( data++ ); - matrix->yx = t2_parse_fixed( data++ ); - matrix->xy = t2_parse_fixed( data++ ); - matrix->yy = t2_parse_fixed( data ); - error = T2_Err_Ok; - } - - return error; - } - - - static - FT_Error parse_font_bbox( T2_Parser* parser ) - { - CFF_Font_Dict* dict = (CFF_Font_Dict*)parser->object; - FT_BBox* bbox = &dict->font_bbox; - FT_Byte** data = parser->stack; - FT_Error error; - - - error = T2_Err_Stack_Underflow; - - if ( parser->top >= parser->stack + 4 ) - { - bbox->xMin = t2_parse_num( data++ ); - bbox->yMin = t2_parse_num( data++ ); - bbox->xMax = t2_parse_num( data++ ); - bbox->yMax = t2_parse_num( data ); - error = T2_Err_Ok; - } - - return error; - } - - - static - FT_Error parse_private_dict( T2_Parser* parser ) - { - CFF_Font_Dict* dict = (CFF_Font_Dict*)parser->object; - FT_Byte** data = parser->stack; - FT_Error error; - - - error = T2_Err_Stack_Underflow; - - if ( parser->top >= parser->stack + 2 ) - { - dict->private_size = t2_parse_num( data++ ); - dict->private_offset = t2_parse_num( data ); - error = T2_Err_Ok; - } - - return error; - } - - - static - FT_Error parse_cid_ros( T2_Parser* parser ) - { - CFF_Font_Dict* dict = (CFF_Font_Dict*)parser->object; - FT_Byte** data = parser->stack; - FT_Error error; - - - error = T2_Err_Stack_Underflow; - - if ( parser->top >= parser->stack + 3 ) - { - dict->cid_registry = (FT_UInt)t2_parse_num( data++ ); - dict->cid_ordering = (FT_UInt)t2_parse_num( data++ ); - dict->cid_supplement = (FT_ULong)t2_parse_num( data ); - error = T2_Err_Ok; - } - - return error; - } - - -#define T2_FIELD_NUM( code, name ) \ - T2_FIELD( code, name, t2_kind_num ) -#define T2_FIELD_FIXED( code, name ) \ - T2_FIELD( code, name, t2_kind_fixed ) -#define T2_FIELD_STRING( code, name ) \ - T2_FIELD( code, name, t2_kind_string ) -#define T2_FIELD_BOOL( code, name ) \ - T2_FIELD( code, name, t2_kind_bool ) -#define T2_FIELD_DELTA( code, name, max ) \ - T2_FIELD( code, name, t2_kind_delta ) - -#define T2_FIELD_CALLBACK( code, name ) \ - { \ - t2_kind_callback, \ - code | T2CODE, \ - 0, 0, \ - parse_ ## name, \ - 0, 0 \ - }, - -#undef T2_FIELD -#define T2_FIELD( code, name, kind ) \ - { \ - kind, \ - code | T2CODE, \ - FT_FIELD_OFFSET( name ), \ - FT_FIELD_SIZE( name ), \ - 0, 0, 0 \ - }, - -#undef T2_FIELD_DELTA -#define T2_FIELD_DELTA( code, name, max ) \ - { \ - t2_kind_delta, \ - code | T2CODE, \ - FT_FIELD_OFFSET( name ), \ - FT_FIELD_SIZE_DELTA( name ), \ - 0, \ - max, \ - FT_FIELD_OFFSET( num_ ## name ) \ - }, - -#define T2CODE_TOPDICT 0x1000 -#define T2CODE_PRIVATE 0x2000 - - static const T2_Field_Handler t2_field_handlers[] = - { - -#ifdef FT_FLAT_COMPILE - -#include "t2tokens.h" - -#else - -#include <cff/t2tokens.h> - -#endif - - { 0, 0, 0, 0, 0, 0, 0 } - }; - - - FT_LOCAL_DEF - FT_Error T2_Parser_Run( T2_Parser* parser, - FT_Byte* start, - FT_Byte* limit ) - { - FT_Byte* p = start; - FT_Error error = T2_Err_Ok; - - - parser->top = parser->stack; - parser->start = start; - parser->limit = limit; - parser->cursor = start; - - while ( p < limit ) - { - FT_Byte v = *p; - - - if ( v >= 27 && v != 31 ) - { - /* it's a number; we will push its position on the stack */ - if ( parser->top - parser->stack >= T2_MAX_STACK_DEPTH ) - goto Stack_Overflow; - - *parser->top ++ = p; - - /* now, skip it */ - if ( v == 30 ) - { - /* skip real number */ - p++; - for (;;) - { - if ( p >= limit ) - goto Syntax_Error; - v = p[0] >> 4; - if ( v == 15 ) - break; - v = p[0] & 0xF; - if ( v == 15 ) - break; - p++; - } - } - else if ( v == 28 ) - p += 2; - else if ( v == 29 ) - p += 4; - else if ( v > 246 ) - p += 1; - } - else - { - /* This is not a number, hence it's an operator. Compute its code */ - /* and look for it in our current list. */ - - FT_UInt code; - FT_UInt num_args = (FT_UInt) - ( parser->top - parser->stack ); - const T2_Field_Handler* field; - - - /* first of all, a trivial check */ - if ( num_args < 1 ) - goto Stack_Underflow; - - *parser->top = p; - code = v; - if ( v == 12 ) - { - /* two byte operator */ - p++; - code = 0x100 | p[0]; - } - code = code | parser->object_code; - - for ( field = t2_field_handlers; field->kind; field++ ) - { - if ( field->code == (FT_Int)code ) - { - /* we found our field's handler; read it */ - FT_Long val; - FT_Byte* q = (FT_Byte*)parser->object + field->offset; - - switch ( field->kind ) - { - case t2_kind_bool: - case t2_kind_string: - case t2_kind_num: - val = t2_parse_num( parser->stack ); - goto Store_Number; - - case t2_kind_fixed: - val = t2_parse_fixed( parser->stack ); - - Store_Number: - switch ( field->size ) - { - case 1: - *(FT_Byte*)q = (FT_Byte)val; - break; - - case 2: - *(FT_Short*)q = (FT_Short)val; - break; - - case 4: - *(FT_Int32*)q = (FT_Int)val; - break; - - default: /* for 64-bit systems where long is 8 bytes */ - *(FT_Long*)q = val; - } - break; - - case t2_kind_delta: - { - FT_Byte* qcount = (FT_Byte*)parser->object + - field->count_offset; - - FT_Byte** data = parser->stack; - - - if ( num_args > field->array_max ) - num_args = field->array_max; - - /* store count */ - *qcount = (FT_Byte)num_args; - - val = 0; - while ( num_args > 0 ) - { - val += t2_parse_num( data++ ); - switch ( field->size ) - { - case 1: - *(FT_Byte*)q = (FT_Byte)val; - break; - - case 2: - *(FT_Short*)q = (FT_Short)val; - break; - - case 4: - *(FT_Int32*)q = (FT_Int)val; - break; - - default: /* for 64-bit systems */ - *(FT_Long*)q = val; - } - - q += field->size; - num_args--; - } - } - break; - - default: /* callback */ - error = field->reader( parser ); - if ( error ) - goto Exit; - } - goto Found; - } - } - - /* this is an unknown operator, or it is unsupported; */ - /* we will ignore it for now. */ - - Found: - /* clear stack */ - parser->top = parser->stack; - } - p++; - } - - Exit: - return error; - - Stack_Overflow: - error = T2_Err_Invalid_Argument; - goto Exit; - - Stack_Underflow: - error = T2_Err_Invalid_Argument; - goto Exit; - - Syntax_Error: - error = T2_Err_Invalid_Argument; - goto Exit; - } - - -/* END */ Index: xc/extras/freetype2/src/cff/t2parse.h diff -u xc/extras/freetype2/src/cff/t2parse.h:1.1.1.1 xc/extras/freetype2/src/cff/t2parse.h:removed --- xc/extras/freetype2/src/cff/t2parse.h:1.1.1.1 Fri Dec 8 16:26:21 2000 +++ xc/extras/freetype2/src/cff/t2parse.h Fri Jan 18 15:21:54 2002 @@ -1,70 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2parse.h */ -/* */ -/* OpenType parser (specification). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef T2PARSE_H -#define T2PARSE_H - -#include <freetype/internal/t2types.h> -#include <freetype/internal/ftobjs.h> - -#define T2_MAX_STACK_DEPTH 96 - -#define T2CODE_TOPDICT 0x1000 -#define T2CODE_PRIVATE 0x2000 - - -#ifdef __cplusplus - extern "C" { -#endif - - - typedef struct T2_Parser_ - { - FT_Byte* start; - FT_Byte* limit; - FT_Byte* cursor; - - FT_Byte* stack[T2_MAX_STACK_DEPTH + 1]; - FT_Byte** top; - - FT_UInt object_code; - void* object; - - } T2_Parser; - - - FT_LOCAL - void T2_Parser_Init( T2_Parser* parser, - FT_UInt code, - void* object ); - - FT_LOCAL - FT_Error T2_Parser_Run( T2_Parser* parser, - FT_Byte* start, - FT_Byte* limit ); - - -#ifdef __cplusplus - } -#endif - - -#endif /* T2PARSE_H */ - - -/* END */ Index: xc/extras/freetype2/src/cff/t2tokens.h diff -u xc/extras/freetype2/src/cff/t2tokens.h:1.1.1.1 xc/extras/freetype2/src/cff/t2tokens.h:removed --- xc/extras/freetype2/src/cff/t2tokens.h:1.1.1.1 Fri Dec 8 16:26:21 2000 +++ xc/extras/freetype2/src/cff/t2tokens.h Fri Jan 18 15:21:54 2002 @@ -1,96 +0,0 @@ -/***************************************************************************/ -/* */ -/* t2tokens.h */ -/* */ -/* OpenType token definitions (specification only). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#undef FT_STRUCTURE -#define FT_STRUCTURE CFF_Font_Dict -#undef T2CODE -#define T2CODE T2CODE_TOPDICT - - T2_FIELD_STRING ( 0, version ) - T2_FIELD_STRING ( 1, notice ) - T2_FIELD_STRING ( 0x100, copyright ) - T2_FIELD_STRING ( 2, full_name ) - T2_FIELD_STRING ( 3, family_name ) - T2_FIELD_STRING ( 4, weight ) - T2_FIELD_BOOL ( 0x101, is_fixed_pitch ) - T2_FIELD_FIXED ( 0x102, italic_angle ) - T2_FIELD_NUM ( 0x103, underline_position ) - T2_FIELD_NUM ( 0x104, underline_thickness ) - T2_FIELD_NUM ( 0x105, paint_type ) - T2_FIELD_NUM ( 0x106, charstring_type ) - T2_FIELD_CALLBACK( 0x107, font_matrix ) - T2_FIELD_NUM ( 13, unique_id ) - T2_FIELD_CALLBACK( 5, font_bbox ) - T2_FIELD_NUM ( 0x108, stroke_width ) - T2_FIELD_NUM ( 15, charset_offset ) - T2_FIELD_NUM ( 16, encoding_offset ) - T2_FIELD_NUM ( 17, charstrings_offset ) - T2_FIELD_CALLBACK( 18, private_dict ) - T2_FIELD_NUM ( 0x114, synthetic_base ) - T2_FIELD_STRING ( 0x115, postscript ) - T2_FIELD_STRING ( 0x116, base_font_name ) - -#if 0 - T2_FIELD_DELTA ( 0x117, base_font_blend, 16 ) - T2_FIELD_CALLBACK( 0x118, multiple_master ) - T2_FIELD_CALLBACK( 0x119, blend_axit_types ) -#endif - - T2_FIELD_CALLBACK( 0x11E, cid_ros ) - T2_FIELD_NUM ( 0x11F, cid_font_version ) - T2_FIELD_NUM ( 0x120, cid_font_revision ) - T2_FIELD_NUM ( 0x121, cid_font_type ) - T2_FIELD_NUM ( 0x122, cid_count ) - T2_FIELD_NUM ( 0x123, cid_uid_base ) - T2_FIELD_NUM ( 0x124, cid_fd_array_offset ) - T2_FIELD_NUM ( 0x125, cid_fd_select_offset ) - T2_FIELD_STRING ( 0x126, cid_font_name ) - -#if 0 - T2_FIELD_NUM ( 0x127, chameleon ) -#endif - - -#undef FT_STRUCTURE -#define FT_STRUCTURE CFF_Private -#undef T2CODE -#define T2CODE T2CODE_PRIVATE - - T2_FIELD_DELTA( 6, blue_values, 14 ) - T2_FIELD_DELTA( 7, other_blues, 10 ) - T2_FIELD_DELTA( 8, family_blues, 14 ) - T2_FIELD_DELTA( 9, family_other_blues, 10 ) - T2_FIELD_FIXED( 0x109, blue_scale ) - T2_FIELD_NUM ( 0x10A, blue_shift ) - T2_FIELD_NUM ( 0x10B, blue_fuzz ) - T2_FIELD_NUM ( 10, standard_width ) - T2_FIELD_NUM ( 11, standard_height ) - T2_FIELD_DELTA( 0x10C, snap_widths, 13 ) - T2_FIELD_DELTA( 0x10D, snap_heights, 13 ) - T2_FIELD_BOOL ( 0x10E, force_bold ) - T2_FIELD_FIXED( 0x10F, force_bold_threshold ) - T2_FIELD_NUM ( 0x110, lenIV ) - T2_FIELD_NUM ( 0x111, language_group ) - T2_FIELD_FIXED( 0x112, expansion_factor ) - T2_FIELD_NUM ( 0x113, initial_random_seed ) - T2_FIELD_NUM ( 19, local_subrs_offset ) - T2_FIELD_NUM ( 20, default_width ) - T2_FIELD_NUM ( 21, nominal_width ) - - -/* END */ Index: xc/extras/freetype2/src/cid/Jamfile diff -u /dev/null xc/extras/freetype2/src/cid/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:54 2002 +++ xc/extras/freetype2/src/cid/Jamfile Sun Sep 9 22:56:03 2001 @@ -0,0 +1,23 @@ +# FreeType 2 src/cid Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src cid ; + +SubDirHdrs [ FT2_SubDir src cid ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = cidobjs cidload cidgload cidriver cidparse ; + } + else + { + _sources = type1cid ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/cid Jamfile Index: xc/extras/freetype2/src/cid/cidafm.c diff -u xc/extras/freetype2/src/cid/cidafm.c:1.1.1.1 xc/extras/freetype2/src/cid/cidafm.c:removed --- xc/extras/freetype2/src/cid/cidafm.c:1.1.1.1 Fri Dec 8 16:26:21 2000 +++ xc/extras/freetype2/src/cid/cidafm.c Fri Jan 18 15:21:54 2002 @@ -1,293 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidafm.c */ -/* */ -/* AFM support for CID-keyed fonts (body). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifdef FT_FLAT_COMPILE - -#include "cidafm.h" - -#else - -#include <cid/cidafm.h> - -#endif - - -#include <freetype/internal/ftstream.h> -#include <freetype/internal/t1types.h> -#include <freetype/internal/t1errors.h> - -#include <stdlib.h> /* for qsort() */ -#include <string.h> /* for strcmp() */ -#include <ctype.h> /* for isalnum() */ - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cidafm - - - FT_LOCAL_DEF - void CID_Done_AFM( FT_Memory memory, - CID_AFM* afm ) - { - FREE( afm->kern_pairs ); - afm->num_pairs = 0; - } - - -#undef IS_KERN_PAIR -#define IS_KERN_PAIR( p ) ( p[0] == 'K' && p[1] == 'P' ) - -#define IS_ALPHANUM( c ) ( isalnum( c ) || \ - c == '_' || \ - c == '.' ) - - - /* read a glyph name and return the equivalent glyph index */ - static - FT_UInt afm_atoindex( FT_Byte** start, - FT_Byte* limit, - T1_Font* type1 ) - { - FT_Byte* p = *start; - FT_Int len; - FT_UInt result = 0; - char temp[64]; - - - /* skip whitespace */ - while ( ( *p == ' ' || *p == '\t' || *p == ':' || *p == ';' ) && - p < limit ) - p++; - *start = p; - - /* now, read glyph name */ - while ( IS_ALPHANUM( *p ) && p < limit ) - p++; - - len = p - *start; - - if ( len > 0 && len < 64 ) - { - FT_Int n; - - - /* copy glyph name to intermediate array */ - MEM_Copy( temp, *start, len ); - temp[len] = 0; - - /* lookup glyph name in face array */ - for ( n = 0; n < type1->num_glyphs; n++ ) - { - char* gname = (char*)type1->glyph_names[n]; - - - if ( gname && gname[0] == temp[0] && strcmp( gname, temp ) == 0 ) - { - result = n; - break; - } - } - } - *start = p; - return result; - } - - - /* read an integer */ - static - int afm_atoi( FT_Byte** start, - FT_Byte* limit ) - { - FT_Byte* p = *start; - int sum = 0; - int sign = 1; - - - /* skip everything that is not a number */ - while ( p < limit && !isdigit( *p ) ) - { - sign = 1; - if ( *p == '-' ) - sign = -1; - - p++; - } - - while ( p < limit && isdigit( *p ) ) - { - sum = sum * 10 + ( *p - '0' ); - p++; - } - *start = p; - - return sum * sign; - } - - -#undef KERN_INDEX -#define KERN_INDEX( g1, g2 ) ( ( (FT_ULong)g1 << 16 ) | g2 ) - - - /* compare two kerning pairs */ - static - int compare_kern_pairs( const void* a, - const void* b ) - { - CID_Kern_Pair* pair1 = (CID_Kern_Pair*)a; - CID_Kern_Pair* pair2 = (CID_Kern_Pair*)b; - - FT_ULong index1 = KERN_INDEX( pair1->glyph1, pair1->glyph2 ); - FT_ULong index2 = KERN_INDEX( pair2->glyph1, pair2->glyph2 ); - - - return ( index1 - index2 ); - } - - - /* parse an AFM file -- for now, only read the kerning pairs */ - FT_LOCAL_DEF - FT_Error CID_Read_AFM( FT_Face cid_face, - FT_Stream stream ) - { - FT_Error error; - FT_Memory memory = stream->memory; - FT_Byte* start; - FT_Byte* limit; - FT_Byte* p; - FT_Int count = 0; - CID_Kern_Pair* pair; - T1_Font* type1 = &((T1_Face)t1_face)->type1; - CID_AFM* afm = 0; - - - if ( ACCESS_Frame( stream->size ) ) - return error; - - start = (FT_Byte*)stream->cursor; - limit = (FT_Byte*)stream->limit; - p = start; - - /* we are now going to count the occurrences of `KP' or `KPX' in */ - /* the AFM file. */ - count = 0; - for ( p = start; p < limit - 3; p++ ) - { - if ( IS_KERN_PAIR( p ) ) - count++; - } - - /* Actually, kerning pairs are simply optional! */ - if ( count == 0 ) - goto Exit; - - /* allocate the pairs */ - if ( ALLOC( afm, sizeof ( *afm ) ) || - ALLOC_ARRAY( afm->kern_pairs, count, CID_Kern_Pair ) ) - goto Exit; - - /* now, read each kern pair */ - pair = afm->kern_pairs; - afm->num_pairs = count; - - /* save in face object */ - ((T1_Face)t1_face)->afm_data = afm; - - for ( p = start; p < limit - 3; p++ ) - { - if ( IS_KERN_PAIR( p ) ) - { - FT_Byte* q; - - - /* skip keyword (`KP' or `KPX') */ - q = p + 2; - if ( *q == 'X' ) - q++; - - pair->glyph1 = afm_atoindex( &q, limit, type1 ); - pair->glyph2 = afm_atoindex( &q, limit, type1 ); - pair->kerning.x = afm_atoi( &q, limit ); - - pair->kerning.y = 0; - if ( p[2] != 'X' ) - pair->kerning.y = afm_atoi( &q, limit ); - - pair++; - } - } - - /* now, sort the kern pairs according to their glyph indices */ - qsort( afm->kern_pairs, count, sizeof ( CID_Kern_Pair ), - compare_kern_pairs ); - - Exit: - if ( error ) - FREE( afm ); - - FORGET_Frame(); - - return error; - } - - - /* find the kerning for a given glyph pair */ - FT_LOCAL_DEF - void CID_Get_Kerning( CID_AFM* afm, - FT_UInt glyph1, - FT_UInt glyph2, - FT_Vector* kerning ) - { - CID_Kern_Pair *min, *mid, *max; - FT_ULong index = KERN_INDEX( glyph1, glyph2 ); - - - /* simple binary search */ - min = afm->kern_pairs; - max = min + afm->num_pairs - 1; - - while ( min <= max ) - { - FT_ULong midi; - - - mid = min + ( max - min ) / 2; - midi = KERN_INDEX( mid->glyph1, mid->glyph2 ); - if ( midi == index ) - { - *kerning = mid->kerning; - return; - } - - if ( midi < index ) - min = mid + 1; - else - max = mid - 1; - } - - kerning->x = 0; - kerning->y = 0; - } - - -/* END */ Index: xc/extras/freetype2/src/cid/cidafm.h diff -u xc/extras/freetype2/src/cid/cidafm.h:1.1.1.1 xc/extras/freetype2/src/cid/cidafm.h:removed --- xc/extras/freetype2/src/cid/cidafm.h:1.1.1.1 Fri Dec 8 16:26:21 2000 +++ xc/extras/freetype2/src/cid/cidafm.h Fri Jan 18 15:21:54 2002 @@ -1,78 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidafm.h */ -/* */ -/* AFM support for CID-keyed fonts (specification). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef CIDAFM_H -#define CIDAFM_H - - -#ifdef FT_FLAT_COMPILE - -#include "cidobjs.h" - -#else - -#include <cid/cidobjs.h> - -#endif - - -#ifdef __cplusplus - extern "C" { -#endif - - - typedef struct CID_Kern_Pair_ - { - FT_UInt glyph1; - FT_UInt glyph2; - FT_Vector kerning; - - } CID_Kern_Pair; - - typedef struct CID_AFM_ - { - FT_UInt num_pairs; - CID_Kern_Pair* kern_pairs; - - } CID_AFM; - - - FT_LOCAL - FT_Error CID_Read_AFM( FT_Face cid_face, - FT_Stream stream ); - - FT_LOCAL - void CID_Done_AFM( FT_Memory memory, - CID_AFM* afm ); - - FT_LOCAL - void CID_Get_Kerning( CID_AFM* afm, - FT_UInt glyph1, - FT_UInt glyph2, - FT_Vector* kerning ); - - -#ifdef __cplusplus - } -#endif - - -#endif /* CIDAFM_H */ - - -/* END */ Index: xc/extras/freetype2/src/cid/ciderrs.h diff -u /dev/null xc/extras/freetype2/src/cid/ciderrs.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:54 2002 +++ xc/extras/freetype2/src/cid/ciderrs.h Sun Sep 9 22:56:03 2001 @@ -0,0 +1,40 @@ +/***************************************************************************/ +/* */ +/* ciderrs.h */ +/* */ +/* CID error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the CID error enumeration constants. */ + /* */ + /*************************************************************************/ + +#ifndef __CIDERRS_H__ +#define __CIDERRS_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX CID_Err_ +#define FT_ERR_BASE FT_Mod_Err_CID + +#include FT_ERRORS_H + +#endif /* __CIDERRS_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/cid/cidgload.c diff -u xc/extras/freetype2/src/cid/cidgload.c:1.1.1.2 xc/extras/freetype2/src/cid/cidgload.c:1.1.1.5 --- xc/extras/freetype2/src/cid/cidgload.c:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/cid/cidgload.c Mon Jan 14 11:52:12 2002 @@ -4,7 +4,7 @@ /* */ /* CID-keyed Type1 Glyph Loader (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,7 +23,9 @@ #include FT_INTERNAL_STREAM_H #include FT_OUTLINE_H +#include "ciderrs.h" + /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -34,9 +36,9 @@ #define FT_COMPONENT trace_cidgload - FT_CALLBACK_DEF - FT_Error cid_load_glyph( T1_Decoder* decoder, - FT_UInt glyph_index ) + FT_CALLBACK_DEF( FT_Error ) + cid_load_glyph( T1_Decoder* decoder, + FT_UInt glyph_index ) { CID_Face face = (CID_Face)decoder->builder.face; CID_Info* cid = &face->cid; @@ -136,9 +138,9 @@ /*************************************************************************/ - FT_LOCAL_DEF - FT_Error CID_Compute_Max_Advance( CID_Face face, - FT_Int* max_advance ) + FT_LOCAL_DEF FT_Error + CID_Compute_Max_Advance( CID_Face face, + FT_Int* max_advance ) { FT_Error error; T1_Decoder decoder; @@ -156,6 +158,7 @@ 0, /* glyph slot */ 0, /* glyph names! XXX */ 0, /* blend == 0 */ + 0, /* hinting == 0 */ cid_load_glyph ); if ( error ) return error; @@ -175,7 +178,7 @@ *max_advance = decoder.builder.advance.x; - return T1_Err_Ok; + return CID_Err_Ok; } @@ -198,11 +201,11 @@ /*************************************************************************/ - FT_LOCAL_DEF - FT_Error CID_Load_Glyph( CID_GlyphSlot glyph, - CID_Size size, - FT_Int glyph_index, - FT_Int load_flags ) + FT_LOCAL_DEF FT_Error + CID_Load_Glyph( CID_GlyphSlot glyph, + CID_Size size, + FT_Int glyph_index, + FT_Int load_flags ) { FT_Error error; T1_Decoder decoder; @@ -223,8 +226,8 @@ glyph->root.outline.n_points = 0; glyph->root.outline.n_contours = 0; - hinting = ( load_flags & FT_LOAD_NO_SCALE ) == 0 && - ( load_flags & FT_LOAD_NO_HINTING ) == 0; + hinting = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE ) == 0 && + ( load_flags & FT_LOAD_NO_HINTING ) == 0 ); glyph->root.format = ft_glyph_format_outline; @@ -235,11 +238,12 @@ (FT_GlyphSlot)glyph, 0, /* glyph names -- XXX */ 0, /* blend == 0 */ + hinting, cid_load_glyph ); /* set up the decoder */ - decoder.builder.no_recurse = - ( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ); + decoder.builder.no_recurse = FT_BOOL( + ( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ) ); error = cid_load_glyph( &decoder, glyph_index ); @@ -263,8 +267,8 @@ if ( load_flags & FT_LOAD_NO_RECURSE ) { FT_Slot_Internal internal = glyph->root.internal; - - + + glyph->root.metrics.horiBearingX = decoder.builder.left_bearing.x; glyph->root.metrics.horiAdvance = decoder.builder.advance.x; @@ -312,11 +316,12 @@ /* First of all, scale the points */ - for ( n = cur->n_points; n > 0; n--, vec++ ) - { - vec->x = FT_MulFix( vec->x, x_scale ); - vec->y = FT_MulFix( vec->y, y_scale ); - } + if ( !hinting ) + for ( n = cur->n_points; n > 0; n--, vec++ ) + { + vec->x = FT_MulFix( vec->x, x_scale ); + vec->y = FT_MulFix( vec->y, y_scale ); + } FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); @@ -326,6 +331,15 @@ metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale ); metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale ); + + if ( hinting ) + { + metrics->horiAdvance = ( metrics->horiAdvance + 32 ) & -64; + metrics->vertAdvance = ( metrics->vertAdvance + 32 ) & -64; + + metrics->vertBearingX = ( metrics->vertBearingX + 32 ) & -64; + metrics->vertBearingY = ( metrics->vertBearingY + 32 ) & -64; + } } /* compute the other metrics */ Index: xc/extras/freetype2/src/cid/cidgload.h diff -u xc/extras/freetype2/src/cid/cidgload.h:1.1.1.2 xc/extras/freetype2/src/cid/cidgload.h:1.1.1.3 --- xc/extras/freetype2/src/cid/cidgload.h:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/cid/cidgload.h Sun Dec 16 12:49:29 2001 @@ -4,7 +4,7 @@ /* */ /* OpenType Glyph Loader (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -30,17 +30,17 @@ #if 0 /* Compute the maximum advance width of a font through quick parsing */ - FT_LOCAL - FT_Error CID_Compute_Max_Advance( CID_Face face, - FT_Int* max_advance ); + FT_LOCAL FT_Error + CID_Compute_Max_Advance( CID_Face face, + FT_Int* max_advance ); #endif /* 0 */ - FT_LOCAL - FT_Error CID_Load_Glyph( CID_GlyphSlot glyph, - CID_Size size, - FT_Int glyph_index, - FT_Int load_flags ); + FT_LOCAL FT_Error + CID_Load_Glyph( CID_GlyphSlot glyph, + CID_Size size, + FT_Int glyph_index, + FT_Int load_flags ); FT_END_HEADER Index: xc/extras/freetype2/src/cid/cidload.c diff -u xc/extras/freetype2/src/cid/cidload.c:1.1.1.2 xc/extras/freetype2/src/cid/cidload.c:1.1.1.5 --- xc/extras/freetype2/src/cid/cidload.c:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/cid/cidload.c Mon Jan 14 11:52:13 2002 @@ -4,7 +4,7 @@ /* */ /* CID-keyed Type1 font loader (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -21,9 +21,11 @@ #include FT_CONFIG_CONFIG_H #include FT_MULTIPLE_MASTERS_H #include FT_INTERNAL_TYPE1_TYPES_H -#include FT_INTERNAL_TYPE1_ERRORS_H + #include "cidload.h" +#include "ciderrs.h" + #include <stdio.h> #include <ctype.h> /* for isspace(), isalnum() */ @@ -39,9 +41,9 @@ /* read a single offset */ - FT_LOCAL_DEF - FT_Long cid_get_offset( FT_Byte** start, - FT_Byte offsize ) + FT_LOCAL_DEF FT_Long + cid_get_offset( FT_Byte** start, + FT_Byte offsize ) { FT_Long result; FT_Byte* p = *start; @@ -58,18 +60,18 @@ } - FT_LOCAL_DEF - void cid_decrypt( FT_Byte* buffer, - FT_Int length, - FT_UShort seed ) + FT_LOCAL_DEF void + cid_decrypt( FT_Byte* buffer, + FT_Offset length, + FT_UShort seed ) { while ( length > 0 ) { FT_Byte plain; - plain = ( *buffer ^ ( seed >> 8 ) ); - seed = ( *buffer + seed ) * 52845 + 22719; + plain = (FT_Byte)( *buffer ^ ( seed >> 8 ) ); + seed = (FT_UShort)( ( *buffer + seed ) * 52845U + 22719 ); *buffer++ = plain; length--; } @@ -85,10 +87,10 @@ /*************************************************************************/ - static - FT_Error cid_load_keyword( CID_Face face, - CID_Loader* loader, - const T1_Field* keyword ) + static FT_Error + cid_load_keyword( CID_Face face, + CID_Loader* loader, + const T1_Field* keyword ) { FT_Error error; CID_Parser* parser = &loader->parser; @@ -125,7 +127,7 @@ { FT_ERROR(( "cid_load_keyword: invalid use of `%s'!\n", keyword->ident )); - error = T1_Err_Syntax_Error; + error = CID_Err_Syntax_Error; goto Exit; } @@ -156,9 +158,9 @@ } - FT_CALLBACK_DEF - FT_Error parse_font_bbox( CID_Face face, - CID_Parser* parser ) + FT_CALLBACK_DEF( FT_Error ) + parse_font_bbox( CID_Face face, + CID_Parser* parser ) { FT_Fixed temp[4]; FT_BBox* bbox = &face->cid.font_bbox; @@ -170,14 +172,14 @@ bbox->xMax = FT_RoundFix( temp[2] ); bbox->yMax = FT_RoundFix( temp[3] ); - return T1_Err_Ok; /* this is a callback function; */ + return CID_Err_Ok; /* this is a callback function; */ /* we must return an error code */ } - FT_CALLBACK_DEF - FT_Error parse_font_matrix( CID_Face face, - CID_Parser* parser ) + FT_CALLBACK_DEF( FT_Error ) + parse_font_matrix( CID_Face face, + CID_Parser* parser ) { FT_Matrix* matrix; FT_Vector* offset; @@ -201,7 +203,7 @@ /* `1000/temp_scale', because temp_scale was already multiplied by */ /* 1000 (in t1_tofixed(), from psobjs.c). */ root->units_per_EM = (FT_UShort)( FT_DivFix( 0x10000L, - FT_DivFix( temp_scale, 1000 ) ) >> 16 ); + FT_DivFix( temp_scale, 1000 ) ) ); /* we need to scale the values by 1.0/temp[3] */ if ( temp_scale != 0x10000L ) @@ -224,18 +226,18 @@ offset->y = temp[5] >> 16; } - return T1_Err_Ok; /* this is a callback function; */ + return CID_Err_Ok; /* this is a callback function; */ /* we must return an error code */ } - FT_CALLBACK_DEF - FT_Error parse_fd_array( CID_Face face, - CID_Parser* parser ) + FT_CALLBACK_DEF( FT_Error ) + parse_fd_array( CID_Face face, + CID_Parser* parser ) { CID_Info* cid = &face->cid; FT_Memory memory = face->root.memory; - FT_Error error = T1_Err_Ok; + FT_Error error = CID_Err_Ok; FT_Long num_dicts; @@ -271,7 +273,7 @@ const T1_Field cid_field_records[] = { -#include "cidtokens.h" +#include "cidtoken.h" T1_FIELD_CALLBACK( "FontBBox", parse_font_bbox ) T1_FIELD_CALLBACK( "FDArray", parse_fd_array ) @@ -280,21 +282,20 @@ }; - static - int is_alpha( char c ) + static int + is_alpha( char c ) { return ( isalnum( (int)c ) || c == '.' || c == '_' ); } - - static - FT_Error cid_parse_dict( CID_Face face, - CID_Loader* loader, - FT_Byte* base, - FT_Long size ) + static FT_Error + cid_parse_dict( CID_Face face, + CID_Loader* loader, + FT_Byte* base, + FT_Long size ) { CID_Parser* parser = &loader->parser; @@ -386,8 +387,8 @@ /* read the subrmap and the subrs of each font dict */ - static - FT_Error cid_read_subrs( CID_Face face ) + static FT_Error + cid_read_subrs( CID_Face face ) { CID_Info* cid = &face->cid; FT_Memory memory = face->root.memory; @@ -445,7 +446,7 @@ if ( FILE_Seek( cid->data_offset + offsets[0] ) || FILE_Read( subr->code[0], data_len ) ) - goto Exit; + goto Fail; /* set up pointers */ for ( count = 1; count <= num_subrs; count++ ) @@ -493,9 +494,9 @@ } - static - void t1_init_loader( CID_Loader* loader, - CID_Face face ) + static void + t1_init_loader( CID_Loader* loader, + CID_Face face ) { FT_UNUSED( face ); @@ -503,8 +504,8 @@ } - static - void t1_done_loader( CID_Loader* loader ) + static void + t1_done_loader( CID_Loader* loader ) { CID_Parser* parser = &loader->parser; @@ -514,8 +515,8 @@ } - FT_LOCAL_DEF - FT_Error CID_Open_Face( CID_Face face ) + FT_LOCAL_DEF FT_Error + CID_Open_Face( CID_Face face ) { CID_Loader loader; CID_Parser* parser; Index: xc/extras/freetype2/src/cid/cidload.h diff -u xc/extras/freetype2/src/cid/cidload.h:1.1.1.2 xc/extras/freetype2/src/cid/cidload.h:1.1.1.3 --- xc/extras/freetype2/src/cid/cidload.h:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/cid/cidload.h Sun Dec 16 12:49:29 2001 @@ -4,7 +4,7 @@ /* */ /* CID-keyed Type1 font loader (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -36,17 +36,17 @@ } CID_Loader; - FT_LOCAL - FT_Long cid_get_offset( FT_Byte** start, - FT_Byte offsize ); - - FT_LOCAL - void cid_decrypt( FT_Byte* buffer, - FT_Int length, - FT_UShort seed ); + FT_LOCAL FT_Long + cid_get_offset( FT_Byte** start, + FT_Byte offsize ); + + FT_LOCAL void + cid_decrypt( FT_Byte* buffer, + FT_Offset length, + FT_UShort seed ); - FT_LOCAL - FT_Error CID_Open_Face( CID_Face face ); + FT_LOCAL FT_Error + CID_Open_Face( CID_Face face ); FT_END_HEADER Index: xc/extras/freetype2/src/cid/cidobjs.c diff -u xc/extras/freetype2/src/cid/cidobjs.c:1.1.1.2 xc/extras/freetype2/src/cid/cidobjs.c:1.1.1.5 --- xc/extras/freetype2/src/cid/cidobjs.c:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/cid/cidobjs.c Mon Jan 14 11:52:13 2002 @@ -4,7 +4,7 @@ /* */ /* CID objects manager (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,8 +23,11 @@ #include "cidload.h" #include FT_INTERNAL_POSTSCRIPT_NAMES_H #include FT_INTERNAL_POSTSCRIPT_AUX_H +#include FT_INTERNAL_POSTSCRIPT_HINTS_H +#include "ciderrs.h" + /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -37,6 +40,132 @@ /*************************************************************************/ /* */ + /* SLOT FUNCTIONS */ + /* */ + /*************************************************************************/ + + FT_LOCAL_DEF void + CID_GlyphSlot_Done( CID_GlyphSlot slot ) + { + slot->root.internal->glyph_hints = 0; + } + + + FT_LOCAL_DEF FT_Error + CID_GlyphSlot_Init( CID_GlyphSlot slot ) + { + CID_Face face; + PSHinter_Interface* pshinter; + + + face = (CID_Face) slot->root.face; + pshinter = face->pshinter; + + if ( pshinter ) + { + FT_Module module; + + + module = FT_Get_Module( slot->root.face->driver->root.library, + "pshinter" ); + if ( module ) + { + T1_Hints_Funcs funcs; + + + funcs = pshinter->get_t1_funcs( module ); + slot->root.internal->glyph_hints = (void*)funcs; + } + } + + return 0; + } + + + /*************************************************************************/ + /* */ + /* SIZE FUNCTIONS */ + /* */ + /*************************************************************************/ + + + static PSH_Globals_Funcs + CID_Size_Get_Globals_Funcs( CID_Size size ) + { + CID_Face face = (CID_Face)size->root.face; + PSHinter_Interface* pshinter = face->pshinter; + FT_Module module; + + + module = FT_Get_Module( size->root.face->driver->root.library, + "pshinter" ); + return ( module && pshinter && pshinter->get_globals_funcs ) + ? pshinter->get_globals_funcs( module ) + : 0; + } + + + FT_LOCAL_DEF void + CID_Size_Done( CID_Size size ) + { + if ( size->root.internal ) + { + PSH_Globals_Funcs funcs; + + + funcs = CID_Size_Get_Globals_Funcs( size ); + if ( funcs ) + funcs->destroy( (PSH_Globals)size->root.internal ); + + size->root.internal = 0; + } + } + + + FT_LOCAL_DEF FT_Error + CID_Size_Init( CID_Size size ) + { + FT_Error error = 0; + PSH_Globals_Funcs funcs = CID_Size_Get_Globals_Funcs( size ); + + + if ( funcs ) + { + PSH_Globals globals; + CID_Face face = (CID_Face)size->root.face; + CID_FontDict* dict = face->cid.font_dicts + face->root.face_index; + T1_Private* priv = &dict->private_dict; + + + error = funcs->create( size->root.face->memory, priv, &globals ); + if ( !error ) + size->root.internal = (FT_Size_Internal)(void*)globals; + } + + return error; + } + + + FT_LOCAL_DEF FT_Error + CID_Size_Reset( CID_Size size ) + { + PSH_Globals_Funcs funcs = CID_Size_Get_Globals_Funcs( size ); + FT_Error error = 0; + + + if ( funcs ) + error = funcs->set_scale( (PSH_Globals)size->root.internal, + size->root.metrics.x_scale, + size->root.metrics.y_scale, + 0, 0 ); + return error; + } + + + + + /*************************************************************************/ + /* */ /* FACE FUNCTIONS */ /* */ /*************************************************************************/ @@ -45,7 +174,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* CID_Done_Face */ + /* CID_Face_Done */ /* */ /* <Description> */ /* Finalizes a given face object. */ @@ -53,8 +182,8 @@ /* <Input> */ /* face :: A pointer to the face object to destroy. */ /* */ - FT_LOCAL_DEF - void CID_Done_Face( CID_Face face ) + FT_LOCAL_DEF void + CID_Face_Done( CID_Face face ) { FT_Memory memory; @@ -67,6 +196,27 @@ memory = face->root.memory; + /* release subrs */ + if ( face->subrs ) + { + FT_Int n; + + + for ( n = 0; n < cid->num_dicts; n++ ) + { + CID_Subrs* subr = face->subrs + n; + + + if ( subr->code ) + { + FREE( subr->code[0] ); + FREE( subr->code ); + } + } + + FREE( face->subrs ); + } + /* release FontInfo strings */ FREE( info->version ); FREE( info->notice ); @@ -92,7 +242,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* CID_Init_Face */ + /* CID_Face_Init */ /* */ /* <Description> */ /* Initializes a given CID face object. */ @@ -112,16 +262,17 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error CID_Init_Face( FT_Stream stream, - CID_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) + FT_LOCAL_DEF FT_Error + CID_Face_Init( FT_Stream stream, + CID_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ) { - FT_Error error; - PSNames_Interface* psnames; - PSAux_Interface* psaux; + FT_Error error; + PSNames_Interface* psnames; + PSAux_Interface* psaux; + PSHinter_Interface* pshinter; FT_UNUSED( num_params ); FT_UNUSED( params ); @@ -144,11 +295,20 @@ if ( !psaux ) { psaux = (PSAux_Interface*)FT_Get_Module_Interface( - FT_FACE_LIBRARY( face ), "psaux" ); + FT_FACE_LIBRARY( face ), "psaux" ); face->psaux = psaux; } + pshinter = (PSHinter_Interface*)face->pshinter; + if ( !pshinter ) + { + pshinter = (PSHinter_Interface*)FT_Get_Module_Interface( + FT_FACE_LIBRARY( face ), "pshinter" ); + + face->pshinter = pshinter; + } + /* open the tokenizer; this will also check the font format */ if ( FILE_Seek( 0 ) ) goto Exit; @@ -164,8 +324,8 @@ /* check the face index */ if ( face_index != 0 ) { - FT_ERROR(( "CID_Init_Face: invalid face index\n" )); - error = T1_Err_Invalid_Argument; + FT_ERROR(( "CID_Face_Init: invalid face index\n" )); + error = CID_Err_Invalid_Argument; goto Exit; } @@ -221,14 +381,14 @@ root->num_fixed_sizes = 0; root->available_sizes = 0; - root->bbox = face->cid.font_bbox; + root->bbox = face->cid.font_bbox; if ( !root->units_per_EM ) root->units_per_EM = 1000; - root->ascender = (FT_Short)( face->cid.font_bbox.yMax >> 16 ); - root->descender = (FT_Short)( face->cid.font_bbox.yMin >> 16 ); - root->height = ( ( root->ascender + root->descender ) * 12 ) - / 10; + root->ascender = (FT_Short)( face->cid.font_bbox.yMax >> 16 ); + root->descender = (FT_Short)( face->cid.font_bbox.yMin >> 16 ); + root->height = (FT_Short)( + ( ( root->ascender + root->descender ) * 12 ) / 10 ); #if 0 @@ -340,7 +500,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* CID_Init_Driver */ + /* CID_Driver_Init */ /* */ /* <Description> */ /* Initializes a given CID driver object. */ @@ -351,19 +511,19 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error CID_Init_Driver( CID_Driver driver ) + FT_LOCAL_DEF FT_Error + CID_Driver_Init( CID_Driver driver ) { FT_UNUSED( driver ); - return T1_Err_Ok; + return CID_Err_Ok; } /*************************************************************************/ /* */ /* <Function> */ - /* CID_Done_Driver */ + /* CID_Driver_Done */ /* */ /* <Description> */ /* Finalizes a given CID driver. */ @@ -371,8 +531,8 @@ /* <Input> */ /* driver :: A handle to the target CID driver. */ /* */ - FT_LOCAL - void CID_Done_Driver( CID_Driver driver ) + FT_LOCAL_DEF void + CID_Driver_Done( CID_Driver driver ) { FT_UNUSED( driver ); } Index: xc/extras/freetype2/src/cid/cidobjs.h diff -u xc/extras/freetype2/src/cid/cidobjs.h:1.1.1.2 xc/extras/freetype2/src/cid/cidobjs.h:1.1.1.5 --- xc/extras/freetype2/src/cid/cidobjs.h:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/cid/cidobjs.h Mon Jan 14 11:52:13 2002 @@ -4,7 +4,7 @@ /* */ /* CID objects manager (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,7 +23,6 @@ #include <ft2build.h> #include FT_INTERNAL_OBJECTS_H #include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_TYPE1_ERRORS_H #include FT_INTERNAL_TYPE1_TYPES_H @@ -112,22 +111,43 @@ } CID_GlyphSlotRec; - FT_LOCAL - FT_Error CID_Init_Face( FT_Stream stream, - CID_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - FT_LOCAL - void CID_Done_Face( CID_Face face ); + FT_LOCAL void + CID_GlyphSlot_Done( CID_GlyphSlot slot ); + FT_LOCAL FT_Error + CID_GlyphSlot_Init( CID_GlyphSlot slot ); - FT_LOCAL - FT_Error CID_Init_Driver( CID_Driver driver ); - FT_LOCAL - void CID_Done_Driver( CID_Driver driver ); + FT_LOCAL void + CID_Size_Done( CID_Size size ); + + + FT_LOCAL FT_Error + CID_Size_Init( CID_Size size ); + + + FT_LOCAL FT_Error + CID_Size_Reset( CID_Size size ); + + + FT_LOCAL FT_Error + CID_Face_Init( FT_Stream stream, + CID_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); + + + FT_LOCAL void + CID_Face_Done( CID_Face face ); + + + FT_LOCAL FT_Error + CID_Driver_Init( CID_Driver driver ); + + + FT_LOCAL void + CID_Driver_Done( CID_Driver driver ); FT_END_HEADER Index: xc/extras/freetype2/src/cid/cidparse.c diff -u xc/extras/freetype2/src/cid/cidparse.c:1.1.1.2 xc/extras/freetype2/src/cid/cidparse.c:1.1.1.4 --- xc/extras/freetype2/src/cid/cidparse.c:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/cid/cidparse.c Sun Dec 16 12:49:29 2001 @@ -4,7 +4,7 @@ /* */ /* CID-keyed Type1 parser (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -21,9 +21,11 @@ #include FT_INTERNAL_CALC_H #include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_TYPE1_ERRORS_H + #include "cidparse.h" +#include "ciderrs.h" + #include <string.h> /* for strncmp() */ @@ -48,11 +50,11 @@ /*************************************************************************/ - FT_LOCAL_DEF - FT_Error CID_New_Parser( CID_Parser* parser, - FT_Stream stream, - FT_Memory memory, - PSAux_Interface* psaux ) + FT_LOCAL_DEF FT_Error + CID_New_Parser( CID_Parser* parser, + FT_Stream stream, + FT_Memory memory, + PSAux_Interface* psaux ) { FT_Error error; FT_ULong base_offset, offset, ps_len; @@ -75,7 +77,7 @@ "%!PS-Adobe-3.0 Resource-CIDFont", 31 ) ) { FT_TRACE2(( "[not a valid CID-keyed font]\n" )); - error = FT_Err_Unknown_File_Format; + error = CID_Err_Unknown_File_Format; } FORGET_Frame(); @@ -137,8 +139,8 @@ } - FT_LOCAL_DEF - void CID_Done_Parser( CID_Parser* parser ) + FT_LOCAL_DEF void + CID_Done_Parser( CID_Parser* parser ) { /* always free the private dictionary */ if ( parser->postscript ) Index: xc/extras/freetype2/src/cid/cidparse.h diff -u xc/extras/freetype2/src/cid/cidparse.h:1.1.1.2 xc/extras/freetype2/src/cid/cidparse.h:1.1.1.3 --- xc/extras/freetype2/src/cid/cidparse.h:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/cid/cidparse.h Sun Dec 16 12:49:29 2001 @@ -4,7 +4,7 @@ /* */ /* CID-keyed Type1 parser (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -55,7 +55,7 @@ /* */ /* num_dict :: The number of font dictionaries. */ /* */ - typedef struct CID_Parser_ + typedef struct CID_Parser_ { T1_Parser root; FT_Stream stream; @@ -71,14 +71,14 @@ } CID_Parser; - FT_LOCAL - FT_Error CID_New_Parser( CID_Parser* parser, - FT_Stream stream, - FT_Memory memory, - PSAux_Interface* psaux ); + FT_LOCAL FT_Error + CID_New_Parser( CID_Parser* parser, + FT_Stream stream, + FT_Memory memory, + PSAux_Interface* psaux ); - FT_LOCAL - void CID_Done_Parser( CID_Parser* parser ); + FT_LOCAL void + CID_Done_Parser( CID_Parser* parser ); /*************************************************************************/ Index: xc/extras/freetype2/src/cid/cidriver.c diff -u xc/extras/freetype2/src/cid/cidriver.c:1.1.1.2 xc/extras/freetype2/src/cid/cidriver.c:1.1.1.5 --- xc/extras/freetype2/src/cid/cidriver.c:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/cid/cidriver.c Mon Jan 14 11:52:13 2002 @@ -4,7 +4,7 @@ /* */ /* CID driver interface (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,6 +23,8 @@ #include FT_INTERNAL_STREAM_H #include FT_INTERNAL_POSTSCRIPT_NAMES_H +#include "ciderrs.h" + #include <string.h> /* for strcmp() */ @@ -35,25 +37,36 @@ #undef FT_COMPONENT #define FT_COMPONENT trace_ciddriver + - static - FT_Module_Interface CID_Get_Interface( FT_Driver driver, - const FT_String* interface ) + static const char* + cid_get_postscript_name( CID_Face face ) { + return (const char*)face->cid.cid_font_name; + } + + + static FT_Module_Interface + CID_Get_Interface( FT_Driver driver, + const FT_String* interface ) + { FT_UNUSED( driver ); FT_UNUSED( interface ); + if ( strcmp( (const char*)interface, "postscript_name" ) == 0 ) + return (FT_Module_Interface)cid_get_postscript_name; + return 0; } #if 0 /* unimplemented yet */ - static - FT_Error cid_Get_Kerning( T1_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_Vector* kerning ) + static FT_Error + cid_Get_Kerning( T1_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_Vector* kerning ) { CID_AFM* afm; @@ -65,7 +78,7 @@ if ( afm ) CID_Get_Kerning( afm, left_glyph, right_glyph, kerning ); - return T1_Err_Ok; + return CID_Err_Ok; } @@ -88,9 +101,9 @@ /* <Return> */ /* Glyph index. 0 means `undefined character code'. */ /* */ - static - FT_UInt CID_Get_Char_Index( FT_CharMap charmap, - FT_Long charcode ) + static FT_UInt + CID_Get_Char_Index( FT_CharMap charmap, + FT_Long charcode ) { T1_Face face; FT_UInt result = 0; @@ -177,7 +190,10 @@ { /* first of all, the FT_Module_Class fields */ { - ft_module_font_driver | ft_module_driver_scalable, + ft_module_font_driver | + ft_module_driver_scalable | + ft_module_driver_has_hinter , + sizeof( FT_DriverRec ), "t1cid", /* module name */ 0x10000L, /* version 1.0 of driver */ @@ -185,8 +201,8 @@ 0, - (FT_Module_Constructor)CID_Init_Driver, - (FT_Module_Destructor) CID_Done_Driver, + (FT_Module_Constructor)CID_Driver_Init, + (FT_Module_Destructor) CID_Driver_Done, (FT_Module_Requester) CID_Get_Interface }, @@ -195,16 +211,16 @@ sizeof( CID_SizeRec ), sizeof( CID_GlyphSlotRec ), - (FTDriver_initFace) CID_Init_Face, - (FTDriver_doneFace) CID_Done_Face, + (FTDriver_initFace) CID_Face_Init, + (FTDriver_doneFace) CID_Face_Done, - (FTDriver_initSize) 0, - (FTDriver_doneSize) 0, - (FTDriver_initGlyphSlot)0, - (FTDriver_doneGlyphSlot)0, + (FTDriver_initSize) CID_Size_Init, + (FTDriver_doneSize) CID_Size_Done, + (FTDriver_initGlyphSlot)CID_GlyphSlot_Init, + (FTDriver_doneGlyphSlot)CID_GlyphSlot_Done, - (FTDriver_setCharSizes) 0, - (FTDriver_setPixelSizes)0, + (FTDriver_setCharSizes) CID_Size_Reset, + (FTDriver_setPixelSizes)CID_Size_Reset, (FTDriver_loadGlyph) CID_Load_Glyph, (FTDriver_getCharIndex) CID_Get_Char_Index, @@ -238,7 +254,8 @@ /* format-specific interface can then be retrieved through the method */ /* interface->get_format_interface. */ /* */ - FT_EXPORT_DEF( const FT_Driver_Class* ) getDriverClass( void ) + FT_EXPORT_DEF( const FT_Driver_Class* ) + getDriverClass( void ) { return &t1cid_driver_class; } Index: xc/extras/freetype2/src/cid/cidriver.h diff -u xc/extras/freetype2/src/cid/cidriver.h:1.1.1.2 xc/extras/freetype2/src/cid/cidriver.h:1.1.1.3 --- xc/extras/freetype2/src/cid/cidriver.h:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/cid/cidriver.h Sun Dec 16 12:49:29 2001 @@ -4,7 +4,7 @@ /* */ /* High-level CID driver interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/cid/cidtoken.h diff -u /dev/null xc/extras/freetype2/src/cid/cidtoken.h:1.1.1.2 --- /dev/null Fri Jan 18 15:21:54 2002 +++ xc/extras/freetype2/src/cid/cidtoken.h Sun Dec 16 12:49:29 2001 @@ -0,0 +1,96 @@ +/***************************************************************************/ +/* */ +/* cidtoken.h */ +/* */ +/* CID token definitions (specification only). */ +/* */ +/* Copyright 1996-2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#undef FT_STRUCTURE +#define FT_STRUCTURE CID_Info +#undef T1CODE +#define T1CODE t1_field_cid_info + + T1_FIELD_STRING( "CIDFontName", cid_font_name ) + T1_FIELD_NUM ( "CIDFontVersion", cid_version ) + T1_FIELD_NUM ( "CIDFontType", cid_font_type ) + T1_FIELD_STRING( "Registry", registry ) + T1_FIELD_STRING( "Ordering", ordering ) + T1_FIELD_NUM ( "Supplement", supplement ) + T1_FIELD_NUM ( "UIDBase", uid_base ) + T1_FIELD_NUM ( "CIDMapOffset", cidmap_offset ) + T1_FIELD_NUM ( "FDBytes", fd_bytes ) + T1_FIELD_NUM ( "GDBytes", gd_bytes ) + T1_FIELD_NUM ( "CIDCount", cid_count ) + + +#undef FT_STRUCTURE +#define FT_STRUCTURE T1_FontInfo +#undef T1CODE +#define T1CODE t1_field_font_info + + T1_FIELD_STRING( "version", version ) + T1_FIELD_STRING( "Notice", notice ) + T1_FIELD_STRING( "FullName", full_name ) + T1_FIELD_STRING( "FamilyName", family_name ) + T1_FIELD_STRING( "Weight", weight ) + T1_FIELD_FIXED ( "ItalicAngle", italic_angle ) + T1_FIELD_BOOL ( "isFixedPitch", is_fixed_pitch ) + T1_FIELD_NUM ( "UnderlinePosition", underline_position ) + T1_FIELD_NUM ( "UnderlineThickness", underline_thickness ) + + +#undef FT_STRUCTURE +#define FT_STRUCTURE CID_FontDict +#undef T1CODE +#define T1CODE t1_field_font_dict + + T1_FIELD_NUM ( "PaintType", paint_type ) + T1_FIELD_NUM ( "FontType", font_type ) + T1_FIELD_NUM ( "SubrMapOffset", subrmap_offset ) + T1_FIELD_NUM ( "SDBytes", sd_bytes ) + T1_FIELD_NUM ( "SubrCount", num_subrs ) + T1_FIELD_NUM ( "lenBuildCharArray", len_buildchar ) + T1_FIELD_FIXED( "ForceBoldThreshold", forcebold_threshold ) + T1_FIELD_FIXED( "ExpansionFactor", expansion_factor ) + T1_FIELD_NUM ( "StrokeWidth", stroke_width ) + + +#undef FT_STRUCTURE +#define FT_STRUCTURE T1_Private +#undef T1CODE +#define T1CODE t1_field_private + + T1_FIELD_NUM ( "UniqueID", unique_id ) + T1_FIELD_NUM ( "lenIV", lenIV ) + T1_FIELD_NUM ( "LanguageGroup", language_group ) + T1_FIELD_NUM ( "password", password ) + + T1_FIELD_FIXED ( "BlueScale", blue_scale ) + T1_FIELD_NUM ( "BlueShift", blue_shift ) + T1_FIELD_NUM ( "BlueFuzz", blue_fuzz ) + + T1_FIELD_NUM_TABLE ( "BlueValues", blue_values, 14 ) + T1_FIELD_NUM_TABLE ( "OtherBlues", other_blues, 10 ) + T1_FIELD_NUM_TABLE ( "FamilyBlues", family_blues, 14 ) + T1_FIELD_NUM_TABLE ( "FamilyOtherBlues", family_other_blues, 10 ) + + T1_FIELD_NUM_TABLE2( "StdHW", standard_width, 1 ) + T1_FIELD_NUM_TABLE2( "StdVW", standard_height, 1 ) + T1_FIELD_NUM_TABLE2( "MinFeature", min_feature, 2 ) + + T1_FIELD_NUM_TABLE ( "StemSnapH", snap_widths, 12 ) + T1_FIELD_NUM_TABLE ( "StemSnapV", snap_heights, 12 ) + + +/* END */ Index: xc/extras/freetype2/src/cid/cidtokens.h diff -u xc/extras/freetype2/src/cid/cidtokens.h:1.1.1.1 xc/extras/freetype2/src/cid/cidtokens.h:removed --- xc/extras/freetype2/src/cid/cidtokens.h:1.1.1.1 Fri Dec 8 16:26:21 2000 +++ xc/extras/freetype2/src/cid/cidtokens.h Fri Jan 18 15:21:55 2002 @@ -1,96 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidtokens.h */ -/* */ -/* CID token definitions (specification only). */ -/* */ -/* Copyright 1996-2000 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#undef FT_STRUCTURE -#define FT_STRUCTURE CID_Info -#undef T1CODE -#define T1CODE t1_field_cid_info - - T1_FIELD_STRING( "CIDFontName", cid_font_name ) - T1_FIELD_NUM ( "CIDFontVersion", cid_version ) - T1_FIELD_NUM ( "CIDFontType", cid_font_type ) - T1_FIELD_STRING( "Registry", registry ) - T1_FIELD_STRING( "Ordering", ordering ) - T1_FIELD_NUM ( "Supplement", supplement ) - T1_FIELD_NUM ( "UIDBase", uid_base ) - T1_FIELD_NUM ( "CIDMapOffset", cidmap_offset ) - T1_FIELD_NUM ( "FDBytes", fd_bytes ) - T1_FIELD_NUM ( "GDBytes", gd_bytes ) - T1_FIELD_NUM ( "CIDCount", cid_count ) - - -#undef FT_STRUCTURE -#define FT_STRUCTURE T1_FontInfo -#undef T1CODE -#define T1CODE t1_field_font_info - - T1_FIELD_STRING( "version", version ) - T1_FIELD_STRING( "Notice", notice ) - T1_FIELD_STRING( "FullName", full_name ) - T1_FIELD_STRING( "FamilyName", family_name ) - T1_FIELD_STRING( "Weight", weight ) - T1_FIELD_FIXED ( "ItalicAngle", italic_angle ) - T1_FIELD_BOOL ( "isFixedPitch", is_fixed_pitch ) - T1_FIELD_NUM ( "UnderlinePosition", underline_position ) - T1_FIELD_NUM ( "UnderlineThickness", underline_thickness ) - - -#undef FT_STRUCTURE -#define FT_STRUCTURE CID_FontDict -#undef T1CODE -#define T1CODE t1_field_font_dict - - T1_FIELD_NUM ( "PaintType", paint_type ) - T1_FIELD_NUM ( "FontType", font_type ) - T1_FIELD_NUM ( "SubrMapOffset", subrmap_offset ) - T1_FIELD_NUM ( "SDBytes", sd_bytes ) - T1_FIELD_NUM ( "SubrCount", num_subrs ) - T1_FIELD_NUM ( "lenBuildCharArray", len_buildchar ) - T1_FIELD_FIXED( "ForceBoldThreshold", forcebold_threshold ) - T1_FIELD_FIXED( "ExpansionFactor", expansion_factor ) - T1_FIELD_NUM ( "StrokeWidth", stroke_width ) - - -#undef FT_STRUCTURE -#define FT_STRUCTURE T1_Private -#undef T1CODE -#define T1CODE t1_field_private - - T1_FIELD_NUM ( "UniqueID", unique_id ) - T1_FIELD_NUM ( "lenIV", lenIV ) - T1_FIELD_NUM ( "LanguageGroup", language_group ) - T1_FIELD_NUM ( "password", password ) - - T1_FIELD_FIXED ( "BlueScale", blue_scale ) - T1_FIELD_NUM ( "BlueShift", blue_shift ) - T1_FIELD_NUM ( "BlueFuzz", blue_fuzz ) - - T1_FIELD_NUM_TABLE ( "BlueValues", blue_values, 14 ) - T1_FIELD_NUM_TABLE ( "OtherBlues", other_blues, 10 ) - T1_FIELD_NUM_TABLE ( "FamilyBlues", family_blues, 14 ) - T1_FIELD_NUM_TABLE ( "FamilyOtherBlues", family_other_blues, 10 ) - - T1_FIELD_NUM_TABLE2( "StdHW", standard_width, 1 ) - T1_FIELD_NUM_TABLE2( "StdVW", standard_height, 1 ) - T1_FIELD_NUM_TABLE2( "MinFeature", min_feature, 2 ) - - T1_FIELD_NUM_TABLE ( "StemSnapH", snap_widths, 12 ) - T1_FIELD_NUM_TABLE ( "StemSnapV", snap_heights, 12 ) - - -/* END */ Index: xc/extras/freetype2/src/cid/rules.mk diff -u xc/extras/freetype2/src/cid/rules.mk:1.1.1.2 xc/extras/freetype2/src/cid/rules.mk:1.1.1.3 --- xc/extras/freetype2/src/cid/rules.mk:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/cid/rules.mk Sun Sep 9 22:56:04 2001 @@ -33,7 +33,8 @@ # CID driver headers # CID_DRV_H := $(CID_DRV_SRC:%.c=%.h) \ - $(CID_DIR_)cidtokens.h + $(CID_DIR_)cidtoken.h \ + $(CID_DIR_)ciderrs.h # CID driver object(s) Index: xc/extras/freetype2/src/cid/type1cid.c diff -u xc/extras/freetype2/src/cid/type1cid.c:1.1.1.2 xc/extras/freetype2/src/cid/type1cid.c:1.1.1.3 --- xc/extras/freetype2/src/cid/type1cid.c:1.1.1.2 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/cid/type1cid.c Sun Dec 16 12:49:29 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType OpenType driver component (body only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/pcf/Jamfile diff -u /dev/null xc/extras/freetype2/src/pcf/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:55 2002 +++ xc/extras/freetype2/src/pcf/Jamfile Sun Sep 9 22:56:04 2001 @@ -0,0 +1,23 @@ +# FreeType 2 src/pcf Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src pcf ; + +SubDirHdrs [ FT2_SubDir src pcf ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = pcfdriver pcfread pcfutil ; + } + else + { + _sources = pcf ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/pcf Jamfile Index: xc/extras/freetype2/src/pcf/pcf.c diff -u xc/extras/freetype2/src/pcf/pcf.c:1.1.1.1 xc/extras/freetype2/src/pcf/pcf.c:1.1.1.2 --- xc/extras/freetype2/src/pcf/pcf.c:1.1.1.1 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/pcf/pcf.c Sun Dec 16 12:49:29 2001 @@ -1,9 +1,9 @@ -/* pcf.c +/* pcf.c FreeType font driver for pcf fonts - Copyright 2000 by - Francesco Zappa Nardelli + Copyright 2000-2001 by + Francesco Zappa Nardelli Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal Index: xc/extras/freetype2/src/pcf/pcf.h diff -u xc/extras/freetype2/src/pcf/pcf.h:1.1.1.1 xc/extras/freetype2/src/pcf/pcf.h:1.1.1.3 --- xc/extras/freetype2/src/pcf/pcf.h:1.1.1.1 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/pcf/pcf.h Sun Dec 16 12:49:29 2001 @@ -1,9 +1,9 @@ -/* pcf.h +/* pcf.h FreeType font driver for pcf fonts - Copyright (C) 2000 by - Francesco Zappa Nardelli + Copyright (C) 2000-2001 by + Francesco Zappa Nardelli Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -45,7 +45,7 @@ } PCF_TableRec, *PCF_Table; - typedef struct PCF_TocRec_ + typedef struct PCF_TocRec_ { FT_ULong version; FT_ULong count; @@ -54,7 +54,7 @@ } PCF_TocRec, *PCF_Toc; - typedef struct PCF_ParseProperty_ + typedef struct PCF_ParseProperty_ { FT_Long name; FT_Byte isString; @@ -76,10 +76,10 @@ } value; - } PCF_PropertyRec, *PCF_Property; + } PCF_PropertyRec, *PCF_Property; - typedef struct PCF_Compressed_Metric_ + typedef struct PCF_Compressed_Metric_ { FT_Byte leftSideBearing; FT_Byte rightSideBearing; @@ -88,9 +88,9 @@ FT_Byte descent; } PCF_Compressed_MetricRec, *PCF_Compressed_Metric; - - typedef struct PCF_Metric_ + + typedef struct PCF_Metric_ { FT_Short leftSideBearing; FT_Short rightSideBearing; @@ -134,7 +134,7 @@ typedef struct PCF_FaceRec_ { FT_FaceRec root; - + char* charset_encoding; char* charset_registry; @@ -148,7 +148,7 @@ PCF_Metric metrics; FT_Long nencodings; PCF_Encoding encodings; - + FT_Short defaultChar; FT_ULong bitmapsFormat; @@ -160,8 +160,8 @@ /* XXX hack */ - static - FT_Error PCF_Done_Face( PCF_Face face ); + FT_LOCAL FT_Error + PCF_Done_Face( PCF_Face face ); /* macros for pcf font format */ @@ -173,7 +173,7 @@ ( 'c' << 16 ) | \ ( 'f' << 8 ) | 1 ) #define PCF_FORMAT_MASK 0xFFFFFF00L - + #define PCF_DEFAULT_FORMAT 0x00000000L #define PCF_INKBOUNDS 0x00000200L #define PCF_ACCEL_W_INKBOUNDS 0x00000100L @@ -225,11 +225,11 @@ #define PCF_BDF_ACCELERATORS ( 1 << 8 ) #define GLYPHPADOPTIONS 4 /* I'm not sure about this */ + + FT_LOCAL FT_Error + pcf_load_font( FT_Stream, + PCF_Face ); - FT_LOCAL - FT_Error pcf_load_font( FT_Stream, - PCF_Face ); - FT_END_HEADER Index: xc/extras/freetype2/src/pcf/pcfdriver.c diff -u xc/extras/freetype2/src/pcf/pcfdriver.c:1.1.1.1 xc/extras/freetype2/src/pcf/pcfdriver.c:1.2 --- xc/extras/freetype2/src/pcf/pcfdriver.c:1.1.1.1 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/pcf/pcfdriver.c Sun Dec 16 13:08:34 2001 @@ -2,8 +2,8 @@ FreeType font driver for pcf files - Copyright (C) 2000 by - Francesco Zappa Nardelli + Copyright (C) 2000-2001 by + Francesco Zappa Nardelli Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -27,7 +27,6 @@ #include <ft2build.h> -#include FT_ERRORS_H #include FT_INTERNAL_DEBUG_H #include FT_INTERNAL_STREAM_H #include FT_INTERNAL_OBJECTS_H @@ -36,7 +35,9 @@ #include "pcfdriver.h" #include "pcfutil.h" +#include "pcferror.h" + /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -47,15 +48,15 @@ #define FT_COMPONENT trace_pcfdriver - static - FT_Error PCF_Done_Face( PCF_Face face ) - { + FT_LOCAL_DEF FT_Error + PCF_Done_Face( PCF_Face face ) + { FT_Memory memory = FT_FACE_MEMORY( face ); PCF_Property tmp = face->properties; int i; - FREE( face->encodings ); + FREE( face->encodings ); FREE( face->metrics ); for ( i = 0; i < face->nprops; i++ ) @@ -68,41 +69,41 @@ FT_TRACE4(( "DONE_FACE!!!\n" )); - return FT_Err_Ok; + return PCF_Err_Ok; } - static - FT_Error PCF_Init_Face( FT_Stream stream, - PCF_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) + static FT_Error + PCF_Init_Face( FT_Stream stream, + PCF_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ) { - FT_Error error = FT_Err_Ok; - + FT_Error error = PCF_Err_Ok; + FT_UNUSED( num_params ); FT_UNUSED( params ); FT_UNUSED( face_index ); - + error = pcf_load_font( stream, face ); if ( error ) goto Fail; - return FT_Err_Ok; + return PCF_Err_Ok; - Fail: + Fail: FT_TRACE2(( "[not a valid PCF file]\n" )); PCF_Done_Face( face ); - return FT_Err_Unknown_File_Format; /* error */ + return PCF_Err_Unknown_File_Format; /* error */ } - static - FT_Error PCF_Set_Pixel_Size( FT_Size size ) - { + static FT_Error + PCF_Set_Pixel_Size( FT_Size size ) + { PCF_Face face = (PCF_Face)FT_SIZE_FACE( size ); @@ -111,32 +112,34 @@ if ( size->metrics.y_ppem == face->root.available_sizes->height ) { - size->metrics.ascender = face->accel.fontAscent << 6; + size->metrics.ascender = face->accel.fontAscent << 6; size->metrics.descender = face->accel.fontDescent * (-64); #if 0 size->metrics.height = face->accel.maxbounds.ascent << 6; #endif size->metrics.height = size->metrics.ascender - size->metrics.descender; - - return FT_Err_Ok; + + size->metrics.max_advance = face->accel.maxbounds.characterWidth << 6; + + return PCF_Err_Ok; } else { FT_TRACE4(( "size WRONG\n" )); - return FT_Err_Invalid_Pixel_Size; + return PCF_Err_Invalid_Pixel_Size; } } - static - FT_Error PCF_Load_Glyph( FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int load_flags ) - { + static FT_Error + PCF_Load_Glyph( FT_GlyphSlot slot, + FT_Size size, + FT_UInt glyph_index, + FT_Int load_flags ) + { PCF_Face face = (PCF_Face)FT_SIZE_FACE( size ); - FT_Error error = FT_Err_Ok; + FT_Error error = PCF_Err_Ok; FT_Memory memory = FT_FACE(face)->memory; FT_Bitmap* bitmap = &slot->bitmap; PCF_Metric metric; @@ -151,17 +154,17 @@ if ( !face ) { - error = FT_Err_Invalid_Argument; + error = PCF_Err_Invalid_Argument; goto Exit; } metric = face->metrics + glyph_index; - + bitmap->rows = metric->ascent + metric->descent; - bitmap->width = metric->characterWidth; + bitmap->width = metric->rightSideBearing - metric->leftSideBearing; bitmap->num_grays = 1; bitmap->pixel_mode = ft_pixel_mode_mono; - + FT_TRACE6(( "BIT_ORDER %d ; BYTE_ORDER %d ; GLYPH_PAD %d\n", PCF_BIT_ORDER( face->bitmapsFormat ), PCF_BYTE_ORDER( face->bitmapsFormat ), @@ -169,7 +172,7 @@ switch ( PCF_GLYPH_PAD( face->bitmapsFormat ) ) { - case 1: + case 1: bitmap->pitch = ( bitmap->width + 7 ) >> 3; break; @@ -177,16 +180,16 @@ bitmap->pitch = ( ( bitmap->width + 15 ) >> 4 ) << 1; break; - case 4: + case 4: bitmap->pitch = ( ( bitmap->width + 31 ) >> 5 ) << 2; break; - case 8: - bitmap->pitch = ( ( bitmap->width + 63 ) >> 6 ) << 3; + case 8: + bitmap->pitch = ( ( bitmap->width + 63 ) >> 6 ) << 3; break; default: - return FT_Err_Invalid_File_Format; + return PCF_Err_Invalid_File_Format; } /* XXX: to do: are there cases that need repadding the bitmap? */ @@ -202,7 +205,7 @@ if ( PCF_BIT_ORDER( face->bitmapsFormat ) != MSBFirst ) BitOrderInvert( bitmap->buffer,bytes ); - if ( ( PCF_BYTE_ORDER( face->bitmapsFormat ) != + if ( ( PCF_BYTE_ORDER( face->bitmapsFormat ) != PCF_BIT_ORDER( face->bitmapsFormat ) ) ) { switch ( PCF_SCAN_UNIT( face->bitmapsFormat ) ) @@ -220,7 +223,7 @@ } } - slot->bitmap_left = 0; + slot->bitmap_left = metric->leftSideBearing; slot->bitmap_top = metric->ascent; slot->metrics.horiAdvance = metric->characterWidth << 6 ; @@ -228,7 +231,7 @@ slot->metrics.horiBearingY = metric->ascent << 6 ; slot->metrics.width = metric->characterWidth << 6 ; slot->metrics.height = bitmap->rows << 6; - + slot->linearHoriAdvance = (FT_Fixed)bitmap->width << 16; slot->format = ft_glyph_format_bitmap; slot->flags = ft_glyph_own_bitmap; @@ -236,14 +239,14 @@ FT_TRACE4(( " --- ok\n" )); Exit: - return error; + return error; } - static - FT_UInt PCF_Get_Char_Index( FT_CharMap charmap, - FT_Long char_code ) - { + static FT_UInt + PCF_Get_Char_Index( FT_CharMap charmap, + FT_Long char_code ) + { PCF_Face face = (PCF_Face)charmap->face; PCF_Encoding en_table = face->encodings; int low, high, mid; @@ -263,8 +266,8 @@ else return en_table[mid].glyph; } - - return face->defaultChar; + + return 0; } @@ -274,35 +277,35 @@ { ft_module_font_driver, sizeof ( FT_DriverRec ), - + "pcf", 0x10000L, 0x20000L, - + 0, - + (FT_Module_Constructor)0, (FT_Module_Destructor) 0, (FT_Module_Requester) 0 }, - + sizeof( PCF_FaceRec ), sizeof( FT_SizeRec ), sizeof( FT_GlyphSlotRec ), - + (FTDriver_initFace) PCF_Init_Face, (FTDriver_doneFace) PCF_Done_Face, (FTDriver_initSize) 0, (FTDriver_doneSize) 0, (FTDriver_initGlyphSlot)0, (FTDriver_doneGlyphSlot)0, - + (FTDriver_setCharSizes) PCF_Set_Pixel_Size, (FTDriver_setPixelSizes)PCF_Set_Pixel_Size, (FTDriver_loadGlyph) PCF_Load_Glyph, (FTDriver_getCharIndex) PCF_Get_Char_Index, - + (FTDriver_getKerning) 0, (FTDriver_attachFile) 0, (FTDriver_getAdvances) 0 @@ -331,7 +334,8 @@ /* format-specific interface can then be retrieved through the method */ /* interface->get_format_interface. */ /* */ - FT_EXPORT_DEF( const FT_Driver_Class* ) getDriverClass( void ) + FT_EXPORT_DEF( const FT_Driver_Class* ) + getDriverClass( void ) { return &pcf_driver_class; } Index: xc/extras/freetype2/src/pcf/pcfdriver.h diff -u xc/extras/freetype2/src/pcf/pcfdriver.h:1.1.1.1 xc/extras/freetype2/src/pcf/pcfdriver.h:1.1.1.2 --- xc/extras/freetype2/src/pcf/pcfdriver.h:1.1.1.1 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/pcf/pcfdriver.h Sun Dec 16 12:49:29 2001 @@ -1,9 +1,9 @@ -/* pcfdriver.h +/* pcfdriver.h FreeType font driver for pcf fonts - Copyright 2000 by - Francesco Zappa Nardelli + Copyright 2000-2001 by + Francesco Zappa Nardelli Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal Index: xc/extras/freetype2/src/pcf/pcferror.h diff -u /dev/null xc/extras/freetype2/src/pcf/pcferror.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:55 2002 +++ xc/extras/freetype2/src/pcf/pcferror.h Sun Sep 9 22:56:04 2001 @@ -0,0 +1,40 @@ +/***************************************************************************/ +/* */ +/* pcferror.h */ +/* */ +/* PCF error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the PCF error enumeration constants. */ + /* */ + /*************************************************************************/ + +#ifndef __PCFERROR_H__ +#define __PCFERROR_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX PCF_Err_ +#define FT_ERR_BASE FT_Mod_Err_PCF + +#include FT_ERRORS_H + +#endif /* __PCFERROR_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/pcf/pcfread.c diff -u xc/extras/freetype2/src/pcf/pcfread.c:1.1.1.1 xc/extras/freetype2/src/pcf/pcfread.c:1.1.1.4 --- xc/extras/freetype2/src/pcf/pcfread.c:1.1.1.1 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/pcf/pcfread.c Mon Jan 14 11:52:13 2002 @@ -1,9 +1,9 @@ -/* pcfread.c +/* pcfread.c FreeType font driver for pcf fonts - Copyright 2000 by - Francesco Zappa Nardelli + Copyright 2000-2001 by + Francesco Zappa Nardelli Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -27,7 +27,6 @@ #include <ft2build.h> -#include FT_ERRORS_H #include FT_INTERNAL_DEBUG_H #include FT_INTERNAL_STREAM_H #include FT_INTERNAL_OBJECTS_H @@ -35,8 +34,11 @@ #include "pcf.h" #include "pcfdriver.h" +#include "pcferror.h" + #include <string.h> /* strlen(), strcpy() */ + /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -48,7 +50,7 @@ #if defined( FT_DEBUG_LEVEL_TRACE ) - static char* tableNames[] = + static const char* tableNames[] = { "prop", "accl", "mtrcs", "bmps", "imtrcs", "enc", "swidth", "names", "accel" @@ -56,7 +58,7 @@ #endif - static + static const FT_Frame_Field pcf_toc_header[] = { #undef FT_STRUCTURE @@ -69,7 +71,7 @@ }; - static + static const FT_Frame_Field pcf_table_header[] = { #undef FT_STRUCTURE @@ -84,30 +86,30 @@ }; - static - FT_Error pcf_read_TOC( FT_Stream stream, - PCF_Face face ) + static FT_Error + pcf_read_TOC( FT_Stream stream, + PCF_Face face ) { FT_Error error; PCF_Toc toc = &face->toc; PCF_Table tables; FT_Memory memory = FT_FACE(face)->memory; - unsigned int i; + unsigned int n; if ( FILE_Seek ( 0 ) || READ_Fields ( pcf_toc_header, toc ) ) - return FT_Err_Cannot_Open_Resource; - + return PCF_Err_Cannot_Open_Resource; + if ( toc->version != PCF_FILE_VERSION ) - return FT_Err_Invalid_File_Format; + return PCF_Err_Invalid_File_Format; if ( ALLOC( face->toc.tables, toc->count * sizeof ( PCF_TableRec ) ) ) - return FT_Err_Out_Of_Memory; + return PCF_Err_Out_Of_Memory; tables = face->toc.tables; - for ( i = 0; i < toc->count; i++ ) + for ( n = 0; n < toc->count; n++ ) { if ( READ_Fields( pcf_table_header, tables ) ) goto Exit; @@ -117,8 +119,8 @@ #if defined( FT_DEBUG_LEVEL_TRACE ) { - unsigned int i,j; - char* name = "?"; + unsigned int i, j; + const char *name = "?"; FT_TRACE4(( "Tables count: %ld\n", face->toc.count )); @@ -127,19 +129,19 @@ { for( j = 0; j < sizeof ( tableNames ) / sizeof ( tableNames[0] ); j++ ) if ( tables[i].type == (unsigned int)( 1 << j ) ) - name=tableNames[j]; + name = tableNames[j]; FT_TRACE4(( "Table %d: type=%-6s format=0x%04lX " "size=0x%06lX (%8ld) offset=0x%04lX\n", i, name, tables[i].format, - tables[i].size, tables[i].size, + tables[i].size, tables[i].size, tables[i].offset )); } } #endif - return FT_Err_Ok; + return PCF_Err_Ok; Exit: FREE( face->toc.tables ); @@ -147,7 +149,7 @@ } - static + static const FT_Frame_Field pcf_metric_header[] = { #undef FT_STRUCTURE @@ -164,7 +166,7 @@ }; - static + static const FT_Frame_Field pcf_metric_msb_header[] = { #undef FT_STRUCTURE @@ -181,7 +183,7 @@ }; - static + static const FT_Frame_Field pcf_compressed_metric_header[] = { #undef FT_STRUCTURE @@ -197,49 +199,54 @@ }; - static - FT_Error pcf_parse_metric( FT_Stream stream, - const FT_Frame_Field* header, - PCF_Metric metric ) + static FT_Error + pcf_parse_metric( FT_Stream stream, + const FT_Frame_Field* header, + PCF_Metric metric ) { - FT_Error error = FT_Err_Ok; - + FT_Error error = PCF_Err_Ok; + if ( READ_Fields( header, metric ) ) return error; - - return FT_Err_Ok; + + return PCF_Err_Ok; } - static - FT_Error pcf_parse_compressed_metric( FT_Stream stream, - PCF_Metric metric ) + static FT_Error + pcf_parse_compressed_metric( FT_Stream stream, + PCF_Metric metric ) { PCF_Compressed_MetricRec compr_metric; - FT_Error error = FT_Err_Ok; - + FT_Error error = PCF_Err_Ok; + if ( READ_Fields( pcf_compressed_metric_header, &compr_metric ) ) return error; - metric->leftSideBearing = (FT_Short)compr_metric.leftSideBearing - 0x80; - metric->rightSideBearing = (FT_Short)compr_metric.rightSideBearing - 0x80; - metric->characterWidth = (FT_Short)compr_metric.characterWidth - 0x80; - metric->ascent = (FT_Short)compr_metric.ascent - 0x80; - metric->descent = (FT_Short)compr_metric.descent - 0x80; - metric->attributes = 0; - - return FT_Err_Ok; + metric->leftSideBearing = + (FT_Short)( compr_metric.leftSideBearing - 0x80 ); + metric->rightSideBearing = + (FT_Short)( compr_metric.rightSideBearing - 0x80 ); + metric->characterWidth = + (FT_Short)( compr_metric.characterWidth - 0x80 ); + metric->ascent = + (FT_Short)( compr_metric.ascent - 0x80 ); + metric->descent = + (FT_Short)( compr_metric.descent - 0x80 ); + metric->attributes = 0; + + return PCF_Err_Ok; } - static - FT_Error pcf_get_metric( FT_Stream stream, - FT_ULong format, - PCF_Metric metric ) + static FT_Error + pcf_get_metric( FT_Stream stream, + FT_ULong format, + PCF_Metric metric ) { - FT_Error error = FT_Err_Ok; + FT_Error error = PCF_Err_Ok; if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) @@ -254,15 +261,15 @@ return error; } - - static - FT_Error pcfSeekToType( FT_Stream stream, - PCF_Table tables, - int ntables, - FT_ULong type, - FT_ULong* formatp, - FT_ULong* sizep ) + + static FT_Error + pcfSeekToType( FT_Stream stream, + PCF_Table tables, + int ntables, + FT_ULong type, + FT_ULong* formatp, + FT_ULong* sizep ) { FT_Error error; int i; @@ -272,25 +279,25 @@ if ( tables[i].type == type ) { if ( stream->pos > tables[i].offset ) - return FT_Err_Invalid_Stream_Skip; + return PCF_Err_Invalid_Stream_Skip; if ( FILE_Skip( tables[i].offset - stream->pos ) ) - return FT_Err_Invalid_Stream_Skip; + return PCF_Err_Invalid_Stream_Skip; *sizep = tables[i].size; /* unused - to be removed */ *formatp = tables[i].format; - return FT_Err_Ok; + return PCF_Err_Ok; } - return FT_Err_Invalid_File_Format; + return PCF_Err_Invalid_File_Format; } - static - FT_Bool pcfHasType( PCF_Table tables, - int ntables, - FT_ULong type ) + static FT_Bool + pcfHasType( PCF_Table tables, + int ntables, + FT_ULong type ) { int i; - + for ( i = 0; i < ntables; i++ ) if ( tables[i].type == type ) @@ -300,7 +307,7 @@ } - static + static const FT_Frame_Field pcf_property_header[] = { #undef FT_STRUCTURE @@ -314,7 +321,7 @@ }; - static + static const FT_Frame_Field pcf_property_msb_header[] = { #undef FT_STRUCTURE @@ -328,9 +335,9 @@ }; - static - PCF_Property find_property( PCF_Face face, - const FT_String* prop ) + static PCF_Property + find_property( PCF_Face face, + const FT_String* prop ) { PCF_Property properties = face->properties; FT_Bool found = 0; @@ -342,7 +349,7 @@ if ( !strcmp( properties[i].name, prop ) ) found = 1; } - + if ( found ) return properties + i - 1; else @@ -350,9 +357,9 @@ } - static - FT_Error pcf_get_properties( FT_Stream stream, - PCF_Face face ) + static FT_Error + pcf_get_properties( FT_Stream stream, + PCF_Face face ) { PCF_ParseProperty props = 0; PCF_Property properties = 0; @@ -362,10 +369,10 @@ FT_Memory memory = FT_FACE(face)->memory; FT_ULong string_size; FT_String* strings = 0; - + error = pcfSeekToType( stream, - face->toc.tables, + face->toc.tables, face->toc.count, PCF_PROPERTIES, &format, @@ -389,7 +396,7 @@ goto Bail; FT_TRACE4(( "get_prop: nprop = %d\n", nprops )); - + if ( ALLOC( props, nprops * sizeof ( PCF_ParsePropertyRec ) ) ) goto Bail; @@ -424,50 +431,50 @@ (void)READ_ULongLE( string_size ); if ( error ) goto Bail; - + FT_TRACE4(( "get_prop: string_size = %ld\n", string_size )); if ( ALLOC( strings, string_size * sizeof ( char ) ) ) goto Bail; - + error = FT_Read_Stream( stream, (FT_Byte*)strings, string_size ); if ( error ) goto Bail; if ( ALLOC( properties, nprops * sizeof ( PCF_PropertyRec ) ) ) goto Bail; - + for ( i = 0; i < nprops; i++ ) { - /* XXX: make atom */ - if ( ALLOC( properties[i].name, + /* XXX: make atom */ + if ( ALLOC( properties[i].name, ( strlen( strings + props[i].name ) + 1 ) * sizeof ( char ) ) ) goto Bail; strcpy( properties[i].name,strings + props[i].name ); - + properties[i].isString = props[i].isString; - + if ( props[i].isString ) { - if ( ALLOC( properties[i].value.atom, - ( strlen( strings + props[i].value ) + 1 ) * + if ( ALLOC( properties[i].value.atom, + ( strlen( strings + props[i].value ) + 1 ) * sizeof ( char ) ) ) goto Bail; strcpy( properties[i].value.atom, strings + props[i].value ); - } + } else properties[i].value.integer = props[i].value; } - + face->properties = properties; face->nprops = nprops; - + FREE( props ); FREE( strings ); - - return FT_Err_Ok; - + + return PCF_Err_Ok; + Bail: FREE( props ); FREE( strings ); @@ -476,11 +483,11 @@ } - static - FT_Error pcf_get_metrics( FT_Stream stream, - PCF_Face face ) - { - FT_Error error = FT_Err_Ok; + static FT_Error + pcf_get_metrics( FT_Stream stream, + PCF_Face face ) + { + FT_Error error = PCF_Err_Ok; FT_Memory memory = FT_FACE(face)->memory; FT_ULong format = 0; FT_ULong size = 0; @@ -490,19 +497,19 @@ error = pcfSeekToType( stream, - face->toc.tables, + face->toc.tables, face->toc.count, PCF_METRICS, &format, &size ); - if ( error ) + if ( error ) return error; error = READ_ULongLE( format ); if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) && !PCF_FORMAT_MATCH( format, PCF_COMPRESSED_METRICS ) ) - return FT_Err_Invalid_File_Format; + return PCF_Err_Invalid_File_Format; if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) { @@ -519,18 +526,18 @@ (void)READ_UShortLE( nmetrics ); } if ( error || nmetrics == -1 ) - return FT_Err_Invalid_File_Format; - + return PCF_Err_Invalid_File_Format; + face->nmetrics = nmetrics; if ( ALLOC( face->metrics, nmetrics * sizeof ( PCF_MetricRec ) ) ) - return FT_Err_Out_Of_Memory; + return PCF_Err_Out_Of_Memory; metrics = face->metrics; for ( i = 0; i < nmetrics; i++ ) { pcf_get_metric( stream, format, metrics + i ); - + metrics[i].bits = 0; FT_TRACE4(( "%d : width=%d, " @@ -542,7 +549,7 @@ ( metrics + i )->ascent, ( metrics + i )->descent, ( metrics + i )->attributes )); - + if ( error ) break; } @@ -553,21 +560,21 @@ } - static - FT_Error pcf_get_bitmaps( FT_Stream stream, - PCF_Face face ) + static FT_Error + pcf_get_bitmaps( FT_Stream stream, + PCF_Face face ) { - FT_Error error = FT_Err_Ok; + FT_Error error = PCF_Err_Ok; FT_Memory memory = FT_FACE(face)->memory; FT_Long* offsets; FT_Long bitmapSizes[GLYPHPADOPTIONS]; FT_ULong format, size; - int nbitmaps, i, sizebitmaps; + int nbitmaps, i, sizebitmaps = 0; char* bitmaps; error = pcfSeekToType( stream, - face->toc.tables, + face->toc.tables, face->toc.count, PCF_BITMAPS, &format, @@ -580,15 +587,15 @@ return error; format = GET_ULongLE(); if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) - return FT_Err_Invalid_File_Format; - + return PCF_Err_Invalid_File_Format; + if ( PCF_BYTE_ORDER( format ) == MSBFirst ) nbitmaps = GET_ULong(); else nbitmaps = GET_ULongLE(); FT_Forget_Frame( stream ); if ( nbitmaps != face->nmetrics ) - return FT_Err_Invalid_File_Format; + return PCF_Err_Invalid_File_Format; if ( ALLOC( offsets, nbitmaps * sizeof ( FT_ULong ) ) ) return error; @@ -596,7 +603,7 @@ if ( error ) goto Bail; for ( i = 0; i < nbitmaps; i++ ) - { + { if ( PCF_BYTE_ORDER( format ) == MSBFirst ) (void)READ_Long( offsets[i] ); else @@ -610,9 +617,9 @@ if ( error ) goto Bail; for ( i = 0; i < GLYPHPADOPTIONS; i++ ) - { + { if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - (void)READ_Long( bitmapSizes[i] ); + (void)READ_Long( bitmapSizes[i] ); else (void)READ_LongLE( bitmapSizes[i] ); if ( error ) @@ -629,10 +636,10 @@ FT_TRACE4(( "bitmap size = %d\n", sizebitmaps )); for ( i = 0; i < nbitmaps; i++ ) - face->metrics[i].bits = stream->pos + offsets[i]; - + face->metrics[i].bits = stream->pos + offsets[i]; + face->bitmapsFormat = format; - + FREE ( offsets ); return error; @@ -643,11 +650,11 @@ } - static - FT_Error pcf_get_encodings( FT_Stream stream, - PCF_Face face ) + static FT_Error + pcf_get_encodings( FT_Stream stream, + PCF_Face face ) { - FT_Error error = FT_Err_Ok; + FT_Error error = PCF_Err_Ok; FT_Memory memory = FT_FACE(face)->memory; FT_ULong format, size; int firstCol, lastCol; @@ -658,7 +665,7 @@ error = pcfSeekToType( stream, - face->toc.tables, + face->toc.tables, face->toc.count, PCF_BDF_ENCODINGS, &format, @@ -671,8 +678,8 @@ return error; format = GET_ULongLE(); if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) - return FT_Err_Invalid_File_Format; - + return PCF_Err_Invalid_File_Format; + if ( PCF_BYTE_ORDER( format ) == MSBFirst ) { firstCol = GET_Short(); @@ -698,27 +705,27 @@ nencoding = ( lastCol - firstCol + 1 ) * ( lastRow - firstRow + 1 ); if ( ALLOC( tmpEncoding, nencoding * sizeof ( PCF_EncodingRec ) ) ) - return FT_Err_Out_Of_Memory; - + return PCF_Err_Out_Of_Memory; + error = FT_Access_Frame( stream, 2 * nencoding ); if ( error ) goto Bail; - + for ( i = 0, j = 0 ; i < nencoding; i++ ) { if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - encodingOffset = GET_Short(); + encodingOffset = GET_Short(); else encodingOffset = GET_ShortLE(); - - if ( encodingOffset != 0xFFFF ) + + if ( encodingOffset != -1 ) { tmpEncoding[j].enc = ( ( ( i / ( lastCol - firstCol + 1 ) ) + firstRow ) * 256 ) + ( ( i % ( lastCol - firstCol + 1 ) ) + firstCol ); - tmpEncoding[j].glyph = encodingOffset; + tmpEncoding[j].glyph = (FT_Short)encodingOffset; j++; } @@ -749,7 +756,7 @@ } - static + static const FT_Frame_Field pcf_accel_header[] = { #undef FT_STRUCTURE @@ -771,7 +778,7 @@ }; - static + static const FT_Frame_Field pcf_accel_msb_header[] = { #undef FT_STRUCTURE @@ -793,30 +800,30 @@ }; - static - FT_Error pcf_get_accel( FT_Stream stream, - PCF_Face face, - FT_ULong type ) + static FT_Error + pcf_get_accel( FT_Stream stream, + PCF_Face face, + FT_ULong type ) { FT_ULong format, size; - FT_Error error = FT_Err_Ok; + FT_Error error = PCF_Err_Ok; PCF_Accel accel = &face->accel; error = pcfSeekToType( stream, face->toc.tables, - face->toc.count, + face->toc.count, type, &format, &size ); - if ( error ) + if ( error ) goto Bail; error = READ_ULongLE( format ); if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) && !PCF_FORMAT_MATCH( format, PCF_ACCEL_W_INKBOUNDS ) ) goto Bail; - + if ( PCF_BYTE_ORDER( format ) == MSBFirst ) { if ( READ_Fields( pcf_accel_msb_header, accel ) ) @@ -829,12 +836,12 @@ } error = pcf_get_metric( stream, format, &(accel->minbounds) ); - if ( error ) + if ( error ) goto Bail; error = pcf_get_metric( stream, format, &(accel->maxbounds) ); if ( error ) goto Bail; - + if ( PCF_FORMAT_MATCH( format, PCF_ACCEL_W_INKBOUNDS ) ) { error = pcf_get_metric( stream, format, &(accel->ink_minbounds) ); @@ -843,24 +850,24 @@ error = pcf_get_metric( stream, format, &(accel->ink_maxbounds) ); if ( error ) goto Bail; - } + } else { accel->ink_minbounds = accel->minbounds; /* I'm not sure about this */ accel->ink_maxbounds = accel->maxbounds; } return error; - + Bail: return error; } - FT_LOCAL_DEF - FT_Error pcf_load_font( FT_Stream stream, - PCF_Face face ) + FT_LOCAL_DEF FT_Error + pcf_load_font( FT_Stream stream, + PCF_Face face ) { - FT_Error error = FT_Err_Ok; + FT_Error error = PCF_Err_Ok; FT_Memory memory = FT_FACE(face)->memory; FT_Bool hasBDFAccelerators; @@ -872,18 +879,18 @@ error = pcf_get_properties( stream, face ); if ( error ) return error;; - + /* Use the old accelerators if no BDF accelerators are in the file. */ hasBDFAccelerators = pcfHasType( face->toc.tables, - face->toc.count, + face->toc.count, PCF_BDF_ACCELERATORS ); if ( !hasBDFAccelerators ) { error = pcf_get_accel( stream, face, PCF_ACCELERATORS ); - if ( error ) + if ( error ) goto Bail; } - + /* metrics */ error = pcf_get_metrics( stream, face ); if ( error ) @@ -898,13 +905,13 @@ error = pcf_get_encodings( stream, face ); if ( error ) goto Bail; - + /* BDF style accelerators (i.e. bounds based on encoded glyphs) */ if ( hasBDFAccelerators ) { error = pcf_get_accel( stream, face, PCF_BDF_ACCELERATORS ); if ( error ) - goto Bail; + goto Bail; } /* XXX: TO DO: inkmetrics and glyph_names are missing */ @@ -913,6 +920,7 @@ { FT_Face root = FT_FACE( face ); PCF_Property prop; + int size_set = 0; root->num_faces = 1; @@ -920,20 +928,20 @@ root->face_flags = FT_FACE_FLAG_FIXED_SIZES | FT_FACE_FLAG_HORIZONTAL | FT_FACE_FLAG_FAST_GLYPHS; - + if ( face->accel.constantWidth ) root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH; root->style_flags = 0; prop = find_property( face, "SLANT" ); - if ( prop != NULL ) + if ( prop != NULL ) if ( prop->isString ) if ( ( *(prop->value.atom) == 'O' ) || ( *(prop->value.atom) == 'I' ) ) root->style_flags |= FT_STYLE_FLAG_ITALIC; prop = find_property( face, "WEIGHT_NAME" ); - if ( prop != NULL ) + if ( prop != NULL ) if ( prop->isString ) if ( *(prop->value.atom) == 'B' ) root->style_flags |= FT_STYLE_FLAG_BOLD; @@ -948,7 +956,7 @@ } else if ( root->style_flags & FT_STYLE_FLAG_ITALIC ) root->style_name = (char *)"Italic"; - + prop = find_property( face, "FAMILY_NAME" ); if ( prop != NULL ) { @@ -966,35 +974,52 @@ root->family_name = 0; root->num_glyphs = face->nmetrics; - + root->num_fixed_sizes = 1; if ( ALLOC_ARRAY( root->available_sizes, 1, FT_Bitmap_Size ) ) goto Bail; - + prop = find_property( face, "PIXEL_SIZE" ); if ( prop != NULL ) { - PCF_Property xres = 0, yres = 0; + root->available_sizes->width = (FT_Short)( prop->value.integer ); + root->available_sizes->height = (FT_Short)( prop->value.integer ); + + size_set = 1; + } + else + { + prop = find_property( face, "POINT_SIZE" ); + if ( prop != NULL ) + { + PCF_Property xres = 0, yres = 0; - xres = find_property( face, "RESOLUTION_X" ); - yres = find_property( face, "RESOLUTION_Y" ); - if ( ( xres != NULL ) && ( yres != NULL ) ) - { - root->available_sizes->width = - (FT_Short)( prop->value.integer * 75 / xres->value.integer ); - root->available_sizes->height = - (FT_Short)( prop->value.integer * 75 / yres->value.integer ); + xres = find_property( face, "RESOLUTION_X" ); + yres = find_property( face, "RESOLUTION_Y" ); + + if ( ( xres != NULL ) && ( yres != NULL ) ) + { + root->available_sizes->width = + (FT_Short)( prop->value.integer * + xres->value.integer / 720 ); + root->available_sizes->height = + (FT_Short)( prop->value.integer * + yres->value.integer / 720 ); + + size_set = 1; + } } } - else - { /* XXX */ + + if (size_set == 0 ) + { #if 0 printf( "PCF Warning: Pixel Size undefined, assuming 12\n"); #endif - root->available_sizes->width = 12; + root->available_sizes->width = 12; root->available_sizes->height = 12; - } + } /* XXX: charmaps */ root->charmaps = &face->charmap_handle; @@ -1002,7 +1027,7 @@ { PCF_Property charset_registry = 0, charset_encoding = 0; - + charset_registry = find_property( face, "CHARSET_REGISTRY" ); charset_encoding = find_property( face, "CHARSET_ENCODING" ); @@ -1013,18 +1038,18 @@ if ( ( charset_registry->isString ) && ( charset_encoding->isString ) ) { - if ( ALLOC( face->charset_encoding, + if ( ALLOC( face->charset_encoding, ( strlen( charset_encoding->value.atom ) + 1 ) * - sizeof ( char ) ) ) + sizeof ( char ) ) ) goto Bail; - if ( ALLOC( face->charset_registry, + if ( ALLOC( face->charset_registry, ( strlen( charset_registry->value.atom ) + 1 ) * - sizeof ( char ) ) ) + sizeof ( char ) ) ) goto Bail; strcpy( face->charset_registry, charset_registry->value.atom ); strcpy( face->charset_encoding, charset_encoding->value.atom ); -#if 0 +#if 0 if ( !strcmp( charset_registry, "ISO10646" ) ) { face->charmap.encoding = ft_encoding_unicode; @@ -1033,25 +1058,25 @@ face->charmap.face = root; face->charmap_handle - return FT_Err_Ok; + return PCF_Err_Ok; } #endif } } } - + face->charmap.encoding = ft_encoding_none; face->charmap.platform_id = 0; face->charmap.encoding_id = 0; - face->charmap.face = root; + face->charmap.face = root; face->charmap_handle = &face->charmap; root->charmap = face->charmap_handle; - } - return FT_Err_Ok; + } + return PCF_Err_Ok; Bail: PCF_Done_Face( face ); - return FT_Err_Invalid_File_Format; + return PCF_Err_Invalid_File_Format; } Index: xc/extras/freetype2/src/pcf/pcfutil.c diff -u xc/extras/freetype2/src/pcf/pcfutil.c:1.1.1.1 xc/extras/freetype2/src/pcf/pcfutil.c:1.3 --- xc/extras/freetype2/src/pcf/pcfutil.c:1.1.1.1 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/pcf/pcfutil.c Sun Dec 16 13:01:54 2001 @@ -2,7 +2,11 @@ Copyright 1990, 1994, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -19,7 +23,7 @@ in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/extras/freetype2/src/pcf/pcfutil.c,v 1.1.1.1 2001/05/16 03:45:34 keithp Exp $ */ +/* $XFree86: xc/extras/freetype2/src/pcf/pcfutil.c,v 1.3 2001/12/16 18:01:54 keithp Exp $ */ /* * Author: Keith Packard, MIT X Consortium @@ -72,8 +76,9 @@ * Invert bit order within each BYTE of an array. */ - void BitOrderInvert( unsigned char* buf, - int nbytes ) + void + BitOrderInvert( unsigned char* buf, + int nbytes ) { const unsigned char* rev = _reverse_byte; @@ -87,8 +92,9 @@ * Invert byte order within each 16-bits of an array. */ - void TwoByteSwap( unsigned char* buf, - int nbytes ) + void + TwoByteSwap( unsigned char* buf, + int nbytes ) { unsigned char c; @@ -105,8 +111,9 @@ * Invert byte order within each 32-bits of an array. */ - void FourByteSwap( unsigned char* buf, - int nbytes ) + void + FourByteSwap( unsigned char* buf, + int nbytes ) { unsigned char c; @@ -128,12 +135,13 @@ * Repad a bitmap. */ - int RepadBitmap( char* pSrc, - char* pDst, - unsigned int srcPad, - unsigned int dstPad, - int width, - int height ) + int + RepadBitmap( char* pSrc, + char* pDst, + unsigned int srcPad, + unsigned int dstPad, + int width, + int height ) { int srcWidthBytes, dstWidthBytes; int row, col; @@ -142,7 +150,7 @@ switch ( srcPad ) { - case 1: + case 1: srcWidthBytes = ( width + 7 ) >> 3; break; @@ -150,12 +158,12 @@ srcWidthBytes = ( ( width + 15 ) >> 4 ) << 1; break; - case 4: + case 4: srcWidthBytes = ( ( width + 31 ) >> 5 ) << 2; break; - case 8: - srcWidthBytes = ( ( width + 63 ) >> 6 ) << 3; + case 8: + srcWidthBytes = ( ( width + 63 ) >> 6 ) << 3; break; default: @@ -164,7 +172,7 @@ switch ( dstPad ) { - case 1: + case 1: dstWidthBytes = ( width + 7 ) >> 3; break; @@ -172,12 +180,12 @@ dstWidthBytes = ( ( width + 15 ) >> 4 ) << 1; break; - case 4: + case 4: dstWidthBytes = ( ( width + 31 ) >> 5 ) << 2; break; - case 8: - dstWidthBytes = ( ( width + 63 ) >> 6 ) << 3; + case 8: + dstWidthBytes = ( ( width + 63 ) >> 6 ) << 3; break; default: Index: xc/extras/freetype2/src/pcf/pcfutil.h diff -u xc/extras/freetype2/src/pcf/pcfutil.h:1.1.1.1 xc/extras/freetype2/src/pcf/pcfutil.h:1.1.1.2 --- xc/extras/freetype2/src/pcf/pcfutil.h:1.1.1.1 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/pcf/pcfutil.h Sun Dec 16 12:49:30 2001 @@ -1,9 +1,9 @@ -/* pcfutil.h +/* pcfutil.h FreeType font driver for pcf fonts - Copyright 2000 by - Francesco Zappa Nardelli + Copyright 2000-2001 by + Francesco Zappa Nardelli Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -32,21 +32,25 @@ #include <ft2build.h> - void BitOrderInvert( unsigned char* buf, - int nbytes); - - void TwoByteSwap ( unsigned char* buf, - int nbytes); - - void FourByteSwap ( unsigned char* buf, - int nbytes); - - int RepadBitmap ( char* pSrc, - char* pDst, - unsigned int srcPad, - unsigned int dstPad, - int width, - int height); + void + BitOrderInvert( unsigned char* buf, + int nbytes); + + void + TwoByteSwap( unsigned char* buf, + int nbytes); + + void + FourByteSwap( unsigned char* buf, + int nbytes); + + int + RepadBitmap( char* pSrc, + char* pDst, + unsigned int srcPad, + unsigned int dstPad, + int width, + int height); #endif /* __PCFUTIL_H__ */ Index: xc/extras/freetype2/src/pcf/rules.mk diff -u xc/extras/freetype2/src/pcf/rules.mk:1.1.1.1 xc/extras/freetype2/src/pcf/rules.mk:1.1.1.2 --- xc/extras/freetype2/src/pcf/rules.mk:1.1.1.1 Tue May 15 23:45:34 2001 +++ xc/extras/freetype2/src/pcf/rules.mk Sun Sep 9 22:56:04 2001 @@ -44,7 +44,8 @@ # PCF_DRV_H := $(PCF_DIR_)pcf.h \ $(PCF_DIR_)pcfdriver.h \ - $(PCF_DIR_)pcfutil.h + $(PCF_DIR_)pcfutil.h \ + $(PCF_DIR_)pcferror.h # pcf driver object(s) # Index: xc/extras/freetype2/src/psaux/Jamfile diff -u /dev/null xc/extras/freetype2/src/psaux/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:55 2002 +++ xc/extras/freetype2/src/psaux/Jamfile Sun Sep 9 22:56:04 2001 @@ -0,0 +1,23 @@ +# FreeType 2 src/psaux Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src psaux ; + +SubDirHdrs [ FT2_SubDir src psaux ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = psauxmod psobjs t1decode ; + } + else + { + _sources = psaux ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/psaux Jamfile Index: xc/extras/freetype2/src/psaux/psaux.c diff -u xc/extras/freetype2/src/psaux/psaux.c:1.1.1.2 xc/extras/freetype2/src/psaux/psaux.c:1.1.1.3 --- xc/extras/freetype2/src/psaux/psaux.c:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/psaux/psaux.c Sun Dec 16 12:49:30 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType auxiliary PostScript driver component (body only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/psaux/psauxerr.h diff -u /dev/null xc/extras/freetype2/src/psaux/psauxerr.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:55 2002 +++ xc/extras/freetype2/src/psaux/psauxerr.h Sun Sep 9 22:56:04 2001 @@ -0,0 +1,41 @@ +/***************************************************************************/ +/* */ +/* psauxerr.h */ +/* */ +/* PS auxiliary module error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the PS auxiliary module error enumeration */ + /* constants. */ + /* */ + /*************************************************************************/ + +#ifndef __PSAUXERR_H__ +#define __PSAUXERR_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX PSaux_Err_ +#define FT_ERR_BASE FT_Mod_Err_PSaux + +#include FT_ERRORS_H + +#endif /* __PSAUXERR_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/psaux/psauxmod.c diff -u xc/extras/freetype2/src/psaux/psauxmod.c:1.1.1.2 xc/extras/freetype2/src/psaux/psauxmod.c:1.1.1.3 --- xc/extras/freetype2/src/psaux/psauxmod.c:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/psaux/psauxmod.c Sun Dec 16 12:49:30 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType auxiliary PostScript module implementation (body). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/psaux/psauxmod.h diff -u xc/extras/freetype2/src/psaux/psauxmod.h:1.1.1.2 xc/extras/freetype2/src/psaux/psauxmod.h:1.1.1.3 --- xc/extras/freetype2/src/psaux/psauxmod.h:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/psaux/psauxmod.h Sun Dec 16 12:49:30 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType auxiliary PostScript module implementation (specification). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/psaux/psobjs.c diff -u xc/extras/freetype2/src/psaux/psobjs.c:1.1.1.2 xc/extras/freetype2/src/psaux/psobjs.c:1.1.1.5 --- xc/extras/freetype2/src/psaux/psobjs.c:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/psaux/psobjs.c Mon Jan 14 11:52:14 2002 @@ -19,9 +19,11 @@ #include <ft2build.h> #include FT_INTERNAL_POSTSCRIPT_AUX_H #include FT_INTERNAL_DEBUG_H -#include FT_ERRORS_H + #include "psobjs.h" +#include "psauxerr.h" + /*************************************************************************/ /*************************************************************************/ @@ -51,10 +53,10 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error PS_Table_New( PS_Table* table, - FT_Int count, - FT_Memory memory ) + FT_LOCAL_DEF FT_Error + PS_Table_New( PS_Table* table, + FT_Int count, + FT_Memory memory ) { FT_Error error; @@ -80,9 +82,9 @@ } - static - void shift_elements( PS_Table* table, - FT_Byte* old_base ) + static void + shift_elements( PS_Table* table, + FT_Byte* old_base ) { FT_Long delta = (FT_Long)( table->block - old_base ); FT_Byte** offset = table->elements; @@ -97,9 +99,9 @@ } - static - FT_Error reallocate_t1_table( PS_Table* table, - FT_Int new_size ) + static FT_Error + reallocate_t1_table( PS_Table* table, + FT_Int new_size ) { FT_Memory memory = table->memory; FT_Byte* old_base = table->block; @@ -120,7 +122,7 @@ table->capacity = new_size; - return FT_Err_Ok; + return PSaux_Err_Ok; } @@ -146,31 +148,39 @@ /* FreeType error code. 0 means success. An error is returned if a */ /* reallocation fails. */ /* */ - FT_LOCAL_DEF - FT_Error PS_Table_Add( PS_Table* table, - FT_Int index, - void* object, - FT_Int length ) + FT_LOCAL_DEF FT_Error + PS_Table_Add( PS_Table* table, + FT_Int index, + void* object, + FT_Int length ) { if ( index < 0 || index > table->max_elems ) { FT_ERROR(( "PS_Table_Add: invalid index\n" )); - return FT_Err_Invalid_Argument; + return PSaux_Err_Invalid_Argument; } /* grow the base block if needed */ if ( table->cursor + length > table->capacity ) { - FT_Error error; - FT_Int new_size = table->capacity; + FT_Error error; + FT_Offset new_size = table->capacity; + FT_Long in_offset; + + + in_offset = (FT_Long)((FT_Byte*)object - table->block); + if ( (FT_ULong)in_offset >= table->capacity ) + in_offset = -1; - while ( new_size < table->cursor + length ) new_size += 1024; error = reallocate_t1_table( table, new_size ); if ( error ) return error; + + if ( in_offset >= 0 ) + object = table->block + in_offset; } /* add the object to the base block and adjust offset */ @@ -179,7 +189,7 @@ MEM_Copy( table->block + table->cursor, object, length ); table->cursor += length; - return FT_Err_Ok; + return PSaux_Err_Ok; } @@ -198,8 +208,8 @@ /* This function does NOT release the heap's memory block. It is up */ /* to the caller to clean it, or reference it in its own structures. */ /* */ - FT_LOCAL_DEF - void PS_Table_Done( PS_Table* table ) + FT_LOCAL_DEF void + PS_Table_Done( PS_Table* table ) { FT_Memory memory = table->memory; FT_Error error; @@ -220,8 +230,8 @@ } - FT_LOCAL_DEF - void PS_Table_Release( PS_Table* table ) + FT_LOCAL_DEF void + PS_Table_Release( PS_Table* table ) { FT_Memory memory = table->memory; @@ -251,8 +261,8 @@ #define IS_T1_SPACE( c ) ( IS_T1_WHITESPACE( c ) || IS_T1_LINESPACE( c ) ) - FT_LOCAL_DEF - void T1_Skip_Spaces( T1_Parser* parser ) + FT_LOCAL_DEF void + T1_Skip_Spaces( T1_Parser* parser ) { FT_Byte* cur = parser->cursor; FT_Byte* limit = parser->limit; @@ -271,8 +281,8 @@ } - FT_LOCAL_DEF - void T1_Skip_Alpha( T1_Parser* parser ) + FT_LOCAL_DEF void + T1_Skip_Alpha( T1_Parser* parser ) { FT_Byte* cur = parser->cursor; FT_Byte* limit = parser->limit; @@ -291,9 +301,9 @@ } - FT_LOCAL_DEF - void T1_ToToken( T1_Parser* parser, - T1_Token* token ) + FT_LOCAL_DEF void + T1_ToToken( T1_Parser* parser, + T1_Token* token ) { FT_Byte* cur; FT_Byte* limit; @@ -374,11 +384,11 @@ } - FT_LOCAL_DEF - void T1_ToTokenArray( T1_Parser* parser, - T1_Token* tokens, - FT_UInt max_tokens, - FT_Int* pnum_tokens ) + FT_LOCAL_DEF void + T1_ToTokenArray( T1_Parser* parser, + T1_Token* tokens, + FT_UInt max_tokens, + FT_Int* pnum_tokens ) { T1_Token master; @@ -420,9 +430,9 @@ } - static - FT_Long t1_toint( FT_Byte** cursor, - FT_Byte* limit ) + static FT_Long + t1_toint( FT_Byte** cursor, + FT_Byte* limit ) { FT_Long result = 0; FT_Byte* cur = *cursor; @@ -465,10 +475,10 @@ } - static - FT_Long t1_tofixed( FT_Byte** cursor, - FT_Byte* limit, - FT_Long power_ten ) + static FT_Long + t1_tofixed( FT_Byte** cursor, + FT_Byte* limit, + FT_Long power_ten ) { FT_Byte* cur = *cursor; FT_Long num, divider, result; @@ -555,11 +565,11 @@ } - static - FT_Int t1_tocoordarray( FT_Byte** cursor, - FT_Byte* limit, - FT_Int max_coords, - FT_Short* coords ) + static FT_Int + t1_tocoordarray( FT_Byte** cursor, + FT_Byte* limit, + FT_Int max_coords, + FT_Short* coords ) { FT_Byte* cur = *cursor; FT_Int count = 0; @@ -614,12 +624,12 @@ } - static - FT_Int t1_tofixedarray( FT_Byte** cursor, - FT_Byte* limit, - FT_Int max_values, - FT_Fixed* values, - FT_Int power_ten ) + static FT_Int + t1_tofixedarray( FT_Byte** cursor, + FT_Byte* limit, + FT_Int max_values, + FT_Fixed* values, + FT_Int power_ten ) { FT_Byte* cur = *cursor; FT_Int count = 0; @@ -675,10 +685,10 @@ #if 0 - static - FT_String* t1_tostring( FT_Byte** cursor, - FT_Byte* limit, - FT_Memory memory ) + static FT_String* + t1_tostring( FT_Byte** cursor, + FT_Byte* limit, + FT_Memory memory ) { FT_Byte* cur = *cursor; FT_Int len = 0; @@ -735,9 +745,9 @@ #endif /* 0 */ - static - int t1_tobool( FT_Byte** cursor, - FT_Byte* limit ) + static int + t1_tobool( FT_Byte** cursor, + FT_Byte* limit ) { FT_Byte* cur = *cursor; FT_Bool result = 0; @@ -770,12 +780,12 @@ /* Load a simple field (i.e. non-table) into the current list of objects */ - FT_LOCAL_DEF - FT_Error T1_Load_Field( T1_Parser* parser, - const T1_Field* field, - void** objects, - FT_UInt max_objects, - FT_ULong* pflags ) + FT_LOCAL_DEF FT_Error + T1_Load_Field( T1_Parser* parser, + const T1_Field* field, + void** objects, + FT_UInt max_objects, + FT_ULong* pflags ) { T1_Token token; FT_Byte* cur; @@ -877,13 +887,13 @@ FT_UNUSED( pflags ); #endif - error = FT_Err_Ok; + error = PSaux_Err_Ok; Exit: return error; Fail: - error = FT_Err_Invalid_File_Format; + error = PSaux_Err_Invalid_File_Format; goto Exit; } @@ -891,12 +901,12 @@ #define T1_MAX_TABLE_ELEMENTS 32 - FT_LOCAL_DEF - FT_Error T1_Load_Field_Table( T1_Parser* parser, - const T1_Field* field, - void** objects, - FT_UInt max_objects, - FT_ULong* pflags ) + FT_LOCAL_DEF FT_Error + T1_Load_Field_Table( T1_Parser* parser, + const T1_Field* field, + void** objects, + FT_UInt max_objects, + FT_ULong* pflags ) { T1_Token elements[T1_MAX_TABLE_ELEMENTS]; T1_Token* token; @@ -923,7 +933,8 @@ old_limit = parser->limit; /* we store the elements count */ - *(FT_Byte*)( (FT_Byte*)objects[0] + field->count_offset ) = num_elements; + *(FT_Byte*)( (FT_Byte*)objects[0] + field->count_offset ) = + (FT_Byte)num_elements; /* we now load each element, adjusting the field.offset on each one */ token = elements; @@ -949,41 +960,41 @@ return error; Fail: - error = FT_Err_Invalid_File_Format; + error = PSaux_Err_Invalid_File_Format; goto Exit; } - FT_LOCAL_DEF - FT_Long T1_ToInt( T1_Parser* parser ) + FT_LOCAL_DEF FT_Long + T1_ToInt( T1_Parser* parser ) { return t1_toint( &parser->cursor, parser->limit ); } - FT_LOCAL_DEF - FT_Fixed T1_ToFixed( T1_Parser* parser, - FT_Int power_ten ) + FT_LOCAL_DEF FT_Fixed + T1_ToFixed( T1_Parser* parser, + FT_Int power_ten ) { return t1_tofixed( &parser->cursor, parser->limit, power_ten ); } - FT_LOCAL_DEF - FT_Int T1_ToCoordArray( T1_Parser* parser, - FT_Int max_coords, - FT_Short* coords ) + FT_LOCAL_DEF FT_Int + T1_ToCoordArray( T1_Parser* parser, + FT_Int max_coords, + FT_Short* coords ) { return t1_tocoordarray( &parser->cursor, parser->limit, max_coords, coords ); } - FT_LOCAL_DEF - FT_Int T1_ToFixedArray( T1_Parser* parser, - FT_Int max_values, - FT_Fixed* values, - FT_Int power_ten ) + FT_LOCAL_DEF FT_Int + T1_ToFixedArray( T1_Parser* parser, + FT_Int max_values, + FT_Fixed* values, + FT_Int power_ten ) { return t1_tofixedarray( &parser->cursor, parser->limit, max_values, values, power_ten ); @@ -992,15 +1003,15 @@ #if 0 - FT_LOCAL_DEF - FT_String* T1_ToString( T1_Parser* parser ) + FT_LOCAL_DEF FT_String* + T1_ToString( T1_Parser* parser ) { return t1_tostring( &parser->cursor, parser->limit, parser->memory ); } - FT_LOCAL_DEF - FT_Bool T1_ToBool( T1_Parser* parser ) + FT_LOCAL_DEF FT_Bool + T1_ToBool( T1_Parser* parser ) { return t1_tobool( &parser->cursor, parser->limit ); } @@ -1008,11 +1019,11 @@ #endif /* 0 */ - FT_LOCAL_DEF - void T1_Init_Parser( T1_Parser* parser, - FT_Byte* base, - FT_Byte* limit, - FT_Memory memory ) + FT_LOCAL_DEF void + T1_Init_Parser( T1_Parser* parser, + FT_Byte* base, + FT_Byte* limit, + FT_Memory memory ) { parser->error = 0; parser->base = base; @@ -1023,8 +1034,8 @@ } - FT_LOCAL_DEF - void T1_Done_Parser( T1_Parser* parser ) + FT_LOCAL_DEF void + T1_Done_Parser( T1_Parser* parser ) { FT_UNUSED( parser ); } @@ -1056,11 +1067,12 @@ /* */ /* glyph :: The current glyph object. */ /* */ - FT_LOCAL_DEF - void T1_Builder_Init( T1_Builder* builder, - FT_Face face, - FT_Size size, - FT_GlyphSlot glyph ) + FT_LOCAL_DEF void + T1_Builder_Init( T1_Builder* builder, + FT_Face face, + FT_Size size, + FT_GlyphSlot glyph, + FT_Bool hinting ) { builder->path_begun = 0; builder->load_points = 1; @@ -1078,6 +1090,12 @@ builder->base = &loader->base.outline; builder->current = &loader->current.outline; FT_GlyphLoader_Rewind( loader ); + + builder->hints_globals = size->internal; + builder->hints_funcs = 0; + + if ( hinting ) + builder->hints_funcs = glyph->internal->glyph_hints; } if ( size ) @@ -1111,8 +1129,8 @@ /* <Input> */ /* builder :: A pointer to the glyph builder to finalize. */ /* */ - FT_LOCAL_DEF - void T1_Builder_Done( T1_Builder* builder ) + FT_LOCAL_DEF void + T1_Builder_Done( T1_Builder* builder ) { FT_GlyphSlot glyph = builder->glyph; @@ -1123,20 +1141,20 @@ /* check that there is enough room for `count' more points */ - FT_LOCAL_DEF - FT_Error T1_Builder_Check_Points( T1_Builder* builder, - FT_Int count ) + FT_LOCAL_DEF FT_Error + T1_Builder_Check_Points( T1_Builder* builder, + FT_Int count ) { return FT_GlyphLoader_Check_Points( builder->loader, count, 0 ); } /* add a new point, do not check space */ - FT_LOCAL_DEF - void T1_Builder_Add_Point( T1_Builder* builder, - FT_Pos x, - FT_Pos y, - FT_Byte flag ) + FT_LOCAL_DEF void + T1_Builder_Add_Point( T1_Builder* builder, + FT_Pos x, + FT_Pos y, + FT_Byte flag ) { FT_Outline* outline = builder->current; @@ -1154,7 +1172,7 @@ } point->x = x; point->y = y; - *control = flag ? FT_Curve_Tag_On : FT_Curve_Tag_Cubic; + *control = (FT_Byte)( flag ? FT_Curve_Tag_On : FT_Curve_Tag_Cubic ); builder->last = *point; } @@ -1163,10 +1181,10 @@ /* check space for a new on-curve point, then add it */ - FT_LOCAL_DEF - FT_Error T1_Builder_Add_Point1( T1_Builder* builder, - FT_Pos x, - FT_Pos y ) + FT_LOCAL_DEF FT_Error + T1_Builder_Add_Point1( T1_Builder* builder, + FT_Pos x, + FT_Pos y ) { FT_Error error; @@ -1180,8 +1198,8 @@ /* check room for a new contour, then add it */ - FT_LOCAL_DEF - FT_Error T1_Builder_Add_Contour( T1_Builder* builder ) + FT_LOCAL_DEF FT_Error + T1_Builder_Add_Contour( T1_Builder* builder ) { FT_Outline* outline = builder->current; FT_Error error; @@ -1190,14 +1208,15 @@ if ( !builder->load_points ) { outline->n_contours++; - return FT_Err_Ok; + return PSaux_Err_Ok; } error = FT_GlyphLoader_Check_Points( builder->loader, 0, 1 ); if ( !error ) { if ( outline->n_contours > 0 ) - outline->contours[outline->n_contours - 1] = outline->n_points - 1; + outline->contours[outline->n_contours - 1] = + (short)( outline->n_points - 1 ); outline->n_contours++; } @@ -1207,10 +1226,10 @@ /* if a path was begun, add its first on-curve point */ - FT_LOCAL_DEF - FT_Error T1_Builder_Start_Point( T1_Builder* builder, - FT_Pos x, - FT_Pos y ) + FT_LOCAL_DEF FT_Error + T1_Builder_Start_Point( T1_Builder* builder, + FT_Pos x, + FT_Pos y ) { FT_Error error = 0; @@ -1228,8 +1247,8 @@ /* close the current contour */ - FT_LOCAL_DEF - void T1_Builder_Close_Contour( T1_Builder* builder ) + FT_LOCAL_DEF void + T1_Builder_Close_Contour( T1_Builder* builder ) { FT_Outline* outline = builder->current; @@ -1258,7 +1277,8 @@ } if ( outline->n_contours > 0 ) - outline->contours[outline->n_contours - 1] = outline->n_points - 1; + outline->contours[outline->n_contours - 1] = + (short)( outline->n_points - 1 ); } @@ -1270,18 +1290,18 @@ /*************************************************************************/ /*************************************************************************/ - FT_LOCAL_DEF - void T1_Decrypt( FT_Byte* buffer, - FT_Int length, - FT_UShort seed ) + FT_LOCAL_DEF void + T1_Decrypt( FT_Byte* buffer, + FT_Offset length, + FT_UShort seed ) { while ( length > 0 ) { FT_Byte plain; - plain = ( *buffer ^ ( seed >> 8 ) ); - seed = ( *buffer + seed ) * 52845 + 22719; + plain = (FT_Byte)( *buffer ^ ( seed >> 8 ) ); + seed = (FT_UShort)( ( *buffer + seed ) * 52845U + 22719 ); *buffer++ = plain; length--; } Index: xc/extras/freetype2/src/psaux/psobjs.h diff -u xc/extras/freetype2/src/psaux/psobjs.h:1.1.1.2 xc/extras/freetype2/src/psaux/psobjs.h:1.1.1.4 --- xc/extras/freetype2/src/psaux/psobjs.h:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/psaux/psobjs.h Mon Jan 14 11:52:14 2002 @@ -4,7 +4,7 @@ /* */ /* Auxiliary functions for PostScript fonts (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -46,23 +46,23 @@ const T1_Builder_Funcs t1_builder_funcs; - FT_LOCAL - FT_Error PS_Table_New( PS_Table* table, - FT_Int count, - FT_Memory memory ); - - FT_LOCAL - FT_Error PS_Table_Add( PS_Table* table, - FT_Int index, - void* object, - FT_Int length ); + FT_LOCAL FT_Error + PS_Table_New( PS_Table* table, + FT_Int count, + FT_Memory memory ); + + FT_LOCAL FT_Error + PS_Table_Add( PS_Table* table, + FT_Int index, + void* object, + FT_Int length ); - FT_LOCAL - void PS_Table_Done( PS_Table* table ); + FT_LOCAL void + PS_Table_Done( PS_Table* table ); - FT_LOCAL - void PS_Table_Release( PS_Table* table ); + FT_LOCAL void + PS_Table_Release( PS_Table* table ); /*************************************************************************/ @@ -74,65 +74,65 @@ /*************************************************************************/ - FT_LOCAL - void T1_Skip_Spaces( T1_Parser* parser ); + FT_LOCAL void + T1_Skip_Spaces( T1_Parser* parser ); - FT_LOCAL - void T1_Skip_Alpha( T1_Parser* parser ); + FT_LOCAL void + T1_Skip_Alpha( T1_Parser* parser ); - FT_LOCAL - void T1_ToToken( T1_Parser* parser, - T1_Token* token ); - - FT_LOCAL - void T1_ToTokenArray( T1_Parser* parser, - T1_Token* tokens, - FT_UInt max_tokens, - FT_Int* pnum_tokens ); - - FT_LOCAL - FT_Error T1_Load_Field( T1_Parser* parser, - const T1_Field* field, - void** objects, - FT_UInt max_objects, - FT_ULong* pflags ); - - FT_LOCAL - FT_Error T1_Load_Field_Table( T1_Parser* parser, - const T1_Field* field, - void** objects, - FT_UInt max_objects, - FT_ULong* pflags ); - - FT_LOCAL - FT_Long T1_ToInt( T1_Parser* parser ); - - - FT_LOCAL - FT_Fixed T1_ToFixed( T1_Parser* parser, - FT_Int power_ten ); - - - FT_LOCAL - FT_Int T1_ToCoordArray( T1_Parser* parser, - FT_Int max_coords, - FT_Short* coords ); - - FT_LOCAL - FT_Int T1_ToFixedArray( T1_Parser* parser, - FT_Int max_values, - FT_Fixed* values, - FT_Int power_ten ); - - - FT_LOCAL - void T1_Init_Parser( T1_Parser* parser, - FT_Byte* base, - FT_Byte* limit, - FT_Memory memory ); + FT_LOCAL void + T1_ToToken( T1_Parser* parser, + T1_Token* token ); + + FT_LOCAL void + T1_ToTokenArray( T1_Parser* parser, + T1_Token* tokens, + FT_UInt max_tokens, + FT_Int* pnum_tokens ); + + FT_LOCAL FT_Error + T1_Load_Field( T1_Parser* parser, + const T1_Field* field, + void** objects, + FT_UInt max_objects, + FT_ULong* pflags ); + + FT_LOCAL FT_Error + T1_Load_Field_Table( T1_Parser* parser, + const T1_Field* field, + void** objects, + FT_UInt max_objects, + FT_ULong* pflags ); + + FT_LOCAL FT_Long + T1_ToInt( T1_Parser* parser ); + + + FT_LOCAL FT_Fixed + T1_ToFixed( T1_Parser* parser, + FT_Int power_ten ); + + + FT_LOCAL FT_Int + T1_ToCoordArray( T1_Parser* parser, + FT_Int max_coords, + FT_Short* coords ); + + FT_LOCAL FT_Int + T1_ToFixedArray( T1_Parser* parser, + FT_Int max_values, + FT_Fixed* values, + FT_Int power_ten ); + + + FT_LOCAL void + T1_Init_Parser( T1_Parser* parser, + FT_Byte* base, + FT_Byte* limit, + FT_Memory memory ); - FT_LOCAL - void T1_Done_Parser( T1_Parser* parser ); + FT_LOCAL void + T1_Done_Parser( T1_Parser* parser ); /*************************************************************************/ @@ -143,42 +143,43 @@ /*************************************************************************/ /*************************************************************************/ - FT_LOCAL - void T1_Builder_Init( T1_Builder* builder, - FT_Face face, - FT_Size size, - FT_GlyphSlot glyph ); - - FT_LOCAL - void T1_Builder_Done( T1_Builder* builder ); - - FT_LOCAL - FT_Error T1_Builder_Check_Points( T1_Builder* builder, - FT_Int count ); - - FT_LOCAL - void T1_Builder_Add_Point( T1_Builder* builder, - FT_Pos x, - FT_Pos y, - FT_Byte flag ); - - FT_LOCAL - FT_Error T1_Builder_Add_Point1( T1_Builder* builder, - FT_Pos x, - FT_Pos y ); - - FT_LOCAL - FT_Error T1_Builder_Add_Contour( T1_Builder* builder ); - - - FT_LOCAL - FT_Error T1_Builder_Start_Point( T1_Builder* builder, - FT_Pos x, - FT_Pos y ); + FT_LOCAL void + T1_Builder_Init( T1_Builder* builder, + FT_Face face, + FT_Size size, + FT_GlyphSlot glyph, + FT_Bool hinting ); + + FT_LOCAL void + T1_Builder_Done( T1_Builder* builder ); + + FT_LOCAL FT_Error + T1_Builder_Check_Points( T1_Builder* builder, + FT_Int count ); + + FT_LOCAL void + T1_Builder_Add_Point( T1_Builder* builder, + FT_Pos x, + FT_Pos y, + FT_Byte flag ); + + FT_LOCAL FT_Error + T1_Builder_Add_Point1( T1_Builder* builder, + FT_Pos x, + FT_Pos y ); + + FT_LOCAL FT_Error + T1_Builder_Add_Contour( T1_Builder* builder ); + + + FT_LOCAL FT_Error + T1_Builder_Start_Point( T1_Builder* builder, + FT_Pos x, + FT_Pos y ); - FT_LOCAL - void T1_Builder_Close_Contour( T1_Builder* builder ); + FT_LOCAL void + T1_Builder_Close_Contour( T1_Builder* builder ); /*************************************************************************/ @@ -189,10 +190,10 @@ /*************************************************************************/ /*************************************************************************/ - FT_LOCAL - void T1_Decrypt( FT_Byte* buffer, - FT_Int length, - FT_UShort seed ); + FT_LOCAL void + T1_Decrypt( FT_Byte* buffer, + FT_Offset length, + FT_UShort seed ); FT_END_HEADER Index: xc/extras/freetype2/src/psaux/rules.mk diff -u xc/extras/freetype2/src/psaux/rules.mk:1.1.1.2 xc/extras/freetype2/src/psaux/rules.mk:1.1.1.3 --- xc/extras/freetype2/src/psaux/rules.mk:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/psaux/rules.mk Sun Sep 9 22:56:04 2001 @@ -32,7 +32,8 @@ # PSAUX driver headers # -PSAUX_DRV_H := $(PSAUX_DRV_SRC:%c=%h) +PSAUX_DRV_H := $(PSAUX_DRV_SRC:%c=%h) \ + $(PSAUX_DIR_)psauxerr.h # PSAUX driver object(s) Index: xc/extras/freetype2/src/psaux/t1decode.c diff -u xc/extras/freetype2/src/psaux/t1decode.c:1.1.1.2 xc/extras/freetype2/src/psaux/t1decode.c:1.1.1.5 --- xc/extras/freetype2/src/psaux/t1decode.c:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/psaux/t1decode.c Mon Jan 14 11:52:14 2002 @@ -4,7 +4,7 @@ /* */ /* PostScript Type 1 decoding routines (body). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,11 +18,14 @@ #include <ft2build.h> #include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_TYPE1_ERRORS_H +#include FT_INTERNAL_POSTSCRIPT_HINTS_H #include FT_OUTLINE_H + #include "t1decode.h" #include "psobjs.h" +#include "psauxerr.h" + /*************************************************************************/ /* */ @@ -117,9 +120,9 @@ /* A glyph index in the font face. Returns -1 if the corresponding */ /* glyph wasn't found. */ /* */ - static - FT_Int t1_lookup_glyph_by_stdcharcode( T1_Decoder* decoder, - FT_Int charcode ) + static FT_Int + t1_lookup_glyph_by_stdcharcode( T1_Decoder* decoder, + FT_Int charcode ) { FT_UInt n; const FT_String* glyph_name; @@ -138,7 +141,8 @@ FT_String* name = (FT_String*)decoder->glyph_names[n]; - if ( name && strcmp( name,glyph_name ) == 0 ) + if ( name && name[0] == glyph_name[0] && + strcmp( name,glyph_name ) == 0 ) return n; } @@ -170,13 +174,13 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - static - FT_Error t1operator_seac( T1_Decoder* decoder, - FT_Pos asb, - FT_Pos adx, - FT_Pos ady, - FT_Int bchar, - FT_Int achar ) + static FT_Error + t1operator_seac( T1_Decoder* decoder, + FT_Pos asb, + FT_Pos adx, + FT_Pos ady, + FT_Int bchar, + FT_Int achar ) { FT_Error error; FT_Int bchar_index, achar_index, n_base_points; @@ -193,7 +197,7 @@ { FT_ERROR(( "t1operator_seac:" )); FT_ERROR(( " glyph names table not available in this font!\n" )); - return T1_Err_Syntax_Error; + return PSaux_Err_Syntax_Error; } bchar_index = t1_lookup_glyph_by_stdcharcode( decoder, bchar ); @@ -203,7 +207,7 @@ { FT_ERROR(( "t1operator_seac:" )); FT_ERROR(( " invalid seac character code arguments\n" )); - return T1_Err_Syntax_Error; + return PSaux_Err_Syntax_Error; } /* if we are trying to load a composite glyph, do not load the */ @@ -242,6 +246,7 @@ glyph->format = ft_glyph_format_composite; loader->current.num_subglyphs = 2; + goto Exit; } /* First load `bchar' in builder */ @@ -264,6 +269,9 @@ decoder->builder.left_bearing.x = 0; decoder->builder.left_bearing.y = 0; + decoder->builder.pos_x = adx - asb; + decoder->builder.pos_y = ady; + /* Now load `achar' on top of */ /* the base outline */ error = T1_Decoder_Parse_Glyph( decoder, achar_index ); @@ -276,17 +284,23 @@ decoder->builder.left_bearing = left_bearing; decoder->builder.advance = advance; + /* XXX: old code doesn't work with postscript hinter */ +#if 0 /* Finally, move the accent */ if ( decoder->builder.load_points ) { FT_Outline dummy; - dummy.n_points = base->n_points - n_base_points; - dummy.points = base->points + n_base_points; + dummy.n_points = (short)( base->n_points - n_base_points ); + dummy.points = base->points + n_base_points; FT_Outline_Translate( &dummy, adx - asb, ady ); } +#else + decoder->builder.pos_x = 0; + decoder->builder.pos_y = 0; +#endif Exit: return error; @@ -311,20 +325,21 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error T1_Decoder_Parse_Charstrings( T1_Decoder* decoder, - FT_Byte* charstring_base, - FT_UInt charstring_len ) + FT_LOCAL_DEF FT_Error + T1_Decoder_Parse_Charstrings( T1_Decoder* decoder, + FT_Byte* charstring_base, + FT_UInt charstring_len ) { FT_Error error; T1_Decoder_Zone* zone; FT_Byte* ip; FT_Byte* limit; T1_Builder* builder = &decoder->builder; - FT_Outline* outline; - FT_Pos x, y; + FT_Pos x, y, orig_x, orig_y; + T1_Hints_Funcs hinter; + /* we don't want to touch the source code -- use macro trick */ #define start_point T1_Builder_Start_Point #define check_points T1_Builder_Check_Points @@ -340,15 +355,20 @@ builder->path_begun = 0; + hinter = (T1_Hints_Funcs) builder->hints_funcs; + zone->base = charstring_base; limit = zone->limit = charstring_base + charstring_len; ip = zone->cursor = zone->base; + + error = PSaux_Err_Ok; - error = FT_Err_Ok; - outline = builder->current; + x = orig_x = builder->pos_x; + y = orig_y = builder->pos_y; - x = builder->pos_x; - y = builder->pos_y; + /* begin hints recording session, if any */ + if ( hinter ) + hinter->open( hinter->hints ); /* now, execute loop */ while ( ip < limit ) @@ -613,6 +633,10 @@ goto Syntax_Error; } ip += 2; + + if ( hinter ) + hinter->reset( hinter->hints, builder->current->n_points ); + break; case 12: @@ -707,13 +731,25 @@ FT_TRACE4(( " endchar" )); close_contour( builder ); - + + /* close hints recording session */ + if ( hinter ) + { + if (hinter->close( hinter->hints, builder->current->n_points )) + goto Syntax_Error; + + /* apply hints to the loaded glyph outline now */ + hinter->apply( hinter->hints, + builder->current, + (PSH_Globals)builder->hints_globals ); + } + /* add current outline to the glyph slot */ FT_GlyphLoader_Add( builder->loader ); /* return now! */ FT_TRACE4(( "\n\n" )); - return FT_Err_Ok; + return PSaux_Err_Ok; case op_hsbw: FT_TRACE4(( " hsbw" )); @@ -722,14 +758,14 @@ builder->advance.x = top[1]; builder->advance.y = 0; - builder->last.x = x = top[0]; - builder->last.y = y = 0; + orig_x = builder->last.x = x = builder->pos_x + top[0]; + orig_y = builder->last.y = y = builder->pos_y; /* the `metrics_only' indicates that we only want to compute */ /* the glyph's metrics (lsb + advance width), not load the */ /* rest of it; so exit immediately */ if ( builder->metrics_only ) - return FT_Err_Ok; + return PSaux_Err_Ok; break; @@ -746,14 +782,14 @@ builder->advance.x = top[2]; builder->advance.y = top[3]; - builder->last.x = x = top[0]; - builder->last.y = y = top[1]; + builder->last.x = x = builder->pos_x + top[0]; + builder->last.y = y = builder->pos_y + top[1]; /* the `metrics_only' indicates that we only want to compute */ /* the glyph's metrics (lsb + advance width), not load the */ /* rest of it; so exit immediately */ if ( builder->metrics_only ) - return FT_Err_Ok; + return PSaux_Err_Ok; break; @@ -925,7 +961,7 @@ { /* We are using subroutines from a CID font. We must adjust */ /* for the seed bytes. */ - zone->base += ( decoder->lenIV >= 0 ? decoder->lenIV : 0 ); + zone->base += ( decoder->lenIV >= 0 ? decoder->lenIV : 0 ); zone->limit = decoder->subrs[index + 1]; } @@ -973,22 +1009,50 @@ case op_hstem: FT_TRACE4(( " hstem" )); + + /* record horizontal hint */ + if ( hinter ) + { + /* top[0] += builder->left_bearing.y; */ + hinter->stem( hinter->hints, 1, top ); + } break; case op_hstem3: FT_TRACE4(( " hstem3" )); + /* record horizontal counter-controlled hints */ + if ( hinter ) + hinter->stem3( hinter->hints, 1, top ); + break; case op_vstem: FT_TRACE4(( " vstem" )); + /* record vertical hint */ + if ( hinter ) + { + top[0] += orig_x; + hinter->stem( hinter->hints, 0, top ); + } + break; case op_vstem3: FT_TRACE4(( " vstem3" )); + /* record vertical counter-controlled hints */ + if ( hinter ) + { + FT_Pos dx = orig_x; + + top[0] += dx; + top[2] += dx; + top[4] += dx; + hinter->stem3( hinter->hints, 0, top ); + } break; case op_setcurrentpoint: @@ -1011,35 +1075,39 @@ } /* while ip < limit */ FT_TRACE4(( "..end..\n\n" )); + return error; Syntax_Error: - return T1_Err_Syntax_Error; + return PSaux_Err_Syntax_Error; Stack_Underflow: - return T1_Err_Stack_Underflow; + return PSaux_Err_Stack_Underflow; Memory_Error: return builder->error; } - FT_LOCAL_DEF - FT_Error T1_Decoder_Parse_Glyph( T1_Decoder* decoder, - FT_UInt glyph ) + /* parse a single Type 1 glyph */ + FT_LOCAL_DEF FT_Error + T1_Decoder_Parse_Glyph( T1_Decoder* decoder, + FT_UInt glyph ) { return decoder->parse_callback( decoder, glyph ); } - FT_LOCAL_DEF - FT_Error T1_Decoder_Init( T1_Decoder* decoder, - FT_Face face, - FT_Size size, - FT_GlyphSlot slot, - FT_Byte** glyph_names, - T1_Blend* blend, - T1_Decoder_Callback parse_callback ) + /* initialise T1 decoder */ + FT_LOCAL_DEF FT_Error + T1_Decoder_Init( T1_Decoder* decoder, + FT_Face face, + FT_Size size, + FT_GlyphSlot slot, + FT_Byte** glyph_names, + T1_Blend* blend, + FT_Bool hinting, + T1_Decoder_Callback parse_callback ) { MEM_Set( decoder, 0, sizeof ( *decoder ) ); @@ -1054,12 +1122,12 @@ { FT_ERROR(( "T1_Decoder_Init: " )); FT_ERROR(( "the `psnames' module is not available\n" )); - return FT_Err_Unimplemented_Feature; + return PSaux_Err_Unimplemented_Feature; } decoder->psnames = psnames; } - T1_Builder_Init( &decoder->builder, face, size, slot ); + T1_Builder_Init( &decoder->builder, face, size, slot, hinting ); decoder->num_glyphs = face->num_glyphs; decoder->glyph_names = glyph_names; @@ -1072,8 +1140,9 @@ } - FT_LOCAL_DEF - void T1_Decoder_Done( T1_Decoder* decoder ) + /* finalize T1 decoder */ + FT_LOCAL_DEF void + T1_Decoder_Done( T1_Decoder* decoder ) { T1_Builder_Done( &decoder->builder ); } Index: xc/extras/freetype2/src/psaux/t1decode.h diff -u xc/extras/freetype2/src/psaux/t1decode.h:1.1.1.2 xc/extras/freetype2/src/psaux/t1decode.h:1.1.1.4 --- xc/extras/freetype2/src/psaux/t1decode.h:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/psaux/t1decode.h Mon Jan 14 11:52:14 2002 @@ -4,7 +4,7 @@ /* */ /* PostScript Type 1 decoding routines (specification). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -33,26 +33,27 @@ const T1_Decoder_Funcs t1_decoder_funcs; - FT_LOCAL - FT_Error T1_Decoder_Parse_Glyph( T1_Decoder* decoder, - FT_UInt glyph_index ); - - FT_LOCAL - FT_Error T1_Decoder_Parse_Charstrings( T1_Decoder* decoder, - FT_Byte* base, - FT_UInt len ); - - FT_LOCAL - FT_Error T1_Decoder_Init( T1_Decoder* decoder, - FT_Face face, - FT_Size size, - FT_GlyphSlot slot, - FT_Byte** glyph_names, - T1_Blend* blend, - T1_Decoder_Callback parse_glyph ); + FT_LOCAL FT_Error + T1_Decoder_Parse_Glyph( T1_Decoder* decoder, + FT_UInt glyph_index ); + + FT_LOCAL FT_Error + T1_Decoder_Parse_Charstrings( T1_Decoder* decoder, + FT_Byte* base, + FT_UInt len ); + + FT_LOCAL FT_Error + T1_Decoder_Init( T1_Decoder* decoder, + FT_Face face, + FT_Size size, + FT_GlyphSlot slot, + FT_Byte** glyph_names, + T1_Blend* blend, + FT_Bool hinting, + T1_Decoder_Callback parse_glyph ); - FT_LOCAL - void T1_Decoder_Done( T1_Decoder* decoder ); + FT_LOCAL void + T1_Decoder_Done( T1_Decoder* decoder ); FT_END_HEADER Index: xc/extras/freetype2/src/pshinter/Jamfile diff -u /dev/null xc/extras/freetype2/src/pshinter/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:55 2002 +++ xc/extras/freetype2/src/pshinter/Jamfile Mon Jan 14 11:52:14 2002 @@ -0,0 +1,23 @@ +# FreeType 2 src/pshinter Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src pshinter ; + +SubDirHdrs [ FT2_SubDir src pshinter ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = pshrec pshglob pshalgo1 pshalgo2 pshmod ; + } + else + { + _sources = pshinter ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/pshinter Jamfile Index: xc/extras/freetype2/src/pshinter/descrip.mms diff -u /dev/null xc/extras/freetype2/src/pshinter/descrip.mms:1.1.1.1 --- /dev/null Fri Jan 18 15:21:55 2002 +++ xc/extras/freetype2/src/pshinter/descrip.mms Mon Jan 14 11:52:14 2002 @@ -0,0 +1,23 @@ +# +# FreeType 2 PSHinter driver compilation rules for OpenVMS +# + + +# Copyright 2001 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.psnames]) + +OBJS=pshinter.obj + +all : $(OBJS) + library [--.lib]freetype.olb $(OBJS) + +# EOF \ No newline at end of file Index: xc/extras/freetype2/src/pshinter/module.mk diff -u /dev/null xc/extras/freetype2/src/pshinter/module.mk:1.1.1.1 --- /dev/null Fri Jan 18 15:21:55 2002 +++ xc/extras/freetype2/src/pshinter/module.mk Mon Jan 14 11:52:14 2002 @@ -0,0 +1,22 @@ +# +# FreeType 2 PSHinter module definition +# + + +# Copyright 1996-2001 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +make_module_list: add_pshinter_module + +add_pshinter_module: + $(OPEN_DRIVER)pshinter_module_class$(CLOSE_DRIVER) + $(ECHO_DRIVER)pshinter $(ECHO_DRIVER_DESC)Postscript hinter module$(ECHO_DRIVER_DONE) + +# EOF Index: xc/extras/freetype2/src/pshinter/pshalgo.h diff -u /dev/null xc/extras/freetype2/src/pshinter/pshalgo.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:55 2002 +++ xc/extras/freetype2/src/pshinter/pshalgo.h Mon Jan 14 11:52:14 2002 @@ -0,0 +1,44 @@ +/***************************************************************************/ +/* */ +/* pshalgo.h */ +/* */ +/* This header file defines the used hinting algorithm. */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used */ +/* modified and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSHALGO_H__ +#define __PSHALGO_H__ + +FT_BEGIN_HEADER + +/* define to choose hinting algorithm */ +#define PSH_ALGORITHM_2 + +#ifdef PSH_ALGORITHM_1 + +#include "pshalgo1.h" +#define PS_HINTS_APPLY_FUNC ps1_hints_apply + +#else + +#include "pshalgo2.h" +#define PS_HINTS_APPLY_FUNC ps2_hints_apply + +#endif + +FT_END_HEADER + +#endif /* __PSHALGO_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/pshinter/pshalgo1.c diff -u /dev/null xc/extras/freetype2/src/pshinter/pshalgo1.c:1.1.1.1 --- /dev/null Fri Jan 18 15:21:55 2002 +++ xc/extras/freetype2/src/pshinter/pshalgo1.c Mon Jan 14 11:52:14 2002 @@ -0,0 +1,782 @@ +/***************************************************************************/ +/* */ +/* pshalgo1.c */ +/* */ +/* PostScript hinting algorithm 1 (body). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used */ +/* modified and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#include <ft2build.h> +#include FT_INTERNAL_OBJECTS_H +#include FT_INTERNAL_DEBUG_H +#include "pshalgo1.h" + +#undef FT_COMPONENT +#define FT_COMPONENT trace_pshalgo1 + +#ifdef DEBUG_HINTER + extern PSH1_Hint_Table ps1_debug_hint_table = 0; + extern PSH1_HintFunc ps1_debug_hint_func = 0; +#endif + + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** BASIC HINTS RECORDINGS *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + + /* return true iff two stem hints overlap */ + static FT_Int + psh1_hint_overlap( PSH1_Hint hint1, + PSH1_Hint hint2 ) + { + return ( hint1->org_pos + hint1->org_len >= hint2->org_pos && + hint2->org_pos + hint2->org_len >= hint1->org_pos ); + } + + + /* destroy hints table */ + static void + psh1_hint_table_done( PSH1_Hint_Table table, + FT_Memory memory ) + { + FREE( table->zones ); + table->num_zones = 0; + table->zone = 0; + + FREE( table->sort ); + FREE( table->hints ); + table->num_hints = 0; + table->max_hints = 0; + table->sort_global = 0; + } + + + /* deactivate all hints in a table */ + static void + psh1_hint_table_deactivate( PSH1_Hint_Table table ) + { + FT_UInt count = table->max_hints; + PSH1_Hint hint = table->hints; + + + for ( ; count > 0; count--, hint++ ) + { + psh1_hint_deactivate( hint ); + hint->order = -1; + } + } + + + /* internal function used to record a new hint */ + static void + psh1_hint_table_record( PSH1_Hint_Table table, + FT_UInt index ) + { + PSH1_Hint hint = table->hints + index; + + + if ( index >= table->max_hints ) + { + FT_ERROR(( "%s.activate: invalid hint index %d\n", index )); + return; + } + + /* ignore active hints */ + if ( psh1_hint_is_active( hint ) ) + return; + + psh1_hint_activate( hint ); + + /* now scan the current active hint set in order to determine */ + /* if we are overlapping with another segment */ + { + PSH1_Hint* sorted = table->sort_global; + FT_UInt count = table->num_hints; + PSH1_Hint hint2; + + + hint->parent = 0; + for ( ; count > 0; count--, sorted++ ) + { + hint2 = sorted[0]; + + if ( psh1_hint_overlap( hint, hint2 ) ) + { + hint->parent = hint2; + break; + } + } + } + + if ( table->num_hints < table->max_hints ) + table->sort_global[table->num_hints++] = hint; + else + FT_ERROR(( "%s.activate: too many sorted hints! BUG!\n", + "ps.fitter" )); + } + + + static void + psh1_hint_table_record_mask( PSH1_Hint_Table table, + PS_Mask hint_mask ) + { + FT_Int mask = 0, val = 0; + FT_Byte* cursor = hint_mask->bytes; + FT_UInt index, limit; + + + limit = hint_mask->num_bits; + + if ( limit != table->max_hints ) + FT_ERROR(( "%s.activate_mask: invalid bit count (%d instead of %d)\n", + "ps.fitter", hint_mask->num_bits, table->max_hints )); + + for ( index = 0; index < limit; index++ ) + { + if ( mask == 0 ) + { + val = *cursor++; + mask = 0x80; + } + + if ( val & mask ) + psh1_hint_table_record( table, index ); + + mask >>= 1; + } + } + + + /* create hints table */ + static FT_Error + psh1_hint_table_init( PSH1_Hint_Table table, + PS_Hint_Table hints, + PS_Mask_Table hint_masks, + PS_Mask_Table counter_masks, + FT_Memory memory ) + { + FT_UInt count = hints->num_hints; + FT_Error error; + + FT_UNUSED( counter_masks ); + + + /* allocate our tables */ + if ( ALLOC_ARRAY( table->sort, 2 * count, PSH1_Hint ) || + ALLOC_ARRAY( table->hints, count, PSH1_HintRec ) || + ALLOC_ARRAY( table->zones, 2 * count + 1, PSH1_ZoneRec ) ) + goto Exit; + + table->max_hints = count; + table->sort_global = table->sort + count; + table->num_hints = 0; + table->num_zones = 0; + table->zone = 0; + + /* now, initialize the "hints" array */ + { + PSH1_Hint write = table->hints; + PS_Hint read = hints->hints; + + + for ( ; count > 0; count--, write++, read++ ) + { + write->org_pos = read->pos; + write->org_len = read->len; + write->flags = read->flags; + } + } + + /* we now need to determine the initial "parent" stems; first */ + /* activate the hints that are given by the initial hint masks */ + if ( hint_masks ) + { + FT_UInt Count = hint_masks->num_masks; + PS_Mask Mask = hint_masks->masks; + + + table->hint_masks = hint_masks; + + for ( ; Count > 0; Count--, Mask++ ) + psh1_hint_table_record_mask( table, Mask ); + } + + /* now, do a linear parse in case some hints were left alone */ + if ( table->num_hints != table->max_hints ) + { + FT_UInt Index, Count; + + + FT_ERROR(( "%s.init: missing/incorrect hint masks!\n" )); + Count = table->max_hints; + for ( Index = 0; Index < Count; Index++ ) + psh1_hint_table_record( table, Index ); + } + + Exit: + return error; + } + + + static void + psh1_hint_table_activate_mask( PSH1_Hint_Table table, + PS_Mask hint_mask ) + { + FT_Int mask = 0, val = 0; + FT_Byte* cursor = hint_mask->bytes; + FT_UInt index, limit, count; + + + limit = hint_mask->num_bits; + count = 0; + + psh1_hint_table_deactivate( table ); + + for ( index = 0; index < limit; index++ ) + { + if ( mask == 0 ) + { + val = *cursor++; + mask = 0x80; + } + + if ( val & mask ) + { + PSH1_Hint hint = &table->hints[index]; + + + if ( !psh1_hint_is_active( hint ) ) + { + PSH1_Hint* sort = table->sort; + FT_UInt count2; + PSH1_Hint hint2; + + + for ( count2 = count; count2 > 0; count2--, sort++ ) + { + hint2 = sort[0]; + if ( psh1_hint_overlap( hint, hint2 ) ) + { + FT_ERROR(( "%s.activate_mask: found overlapping hints\n", + "psf.hint" )); + break; + } + } + + if ( count2 == 0 ) + { + psh1_hint_activate( hint ); + if ( count < table->max_hints ) + table->sort[count++] = hint; + else + FT_ERROR(( "%s.activate_mask: too many active hints\n", + "psf.hint" )); + } + } + } + + mask >>= 1; + } + table->num_hints = count; + + /* now, sort the hints; they are guaranteed to not overlap */ + /* so we can compare their "org_pos" field directly */ + { + FT_Int i1, i2; + PSH1_Hint hint1, hint2; + PSH1_Hint* sort = table->sort; + + + /* a simple bubble sort will do, since in 99% of cases, the hints */ + /* will be already sorted; and the sort will be linear */ + for ( i1 = 1; i1 < (FT_Int)count; i1++ ) + { + hint1 = sort[i1]; + + for ( i2 = i1 - 1; i2 >= 0; i2-- ) + { + hint2 = sort[i2]; + if ( hint2->org_pos < hint1->org_pos ) + break; + + sort[i2 + 1] = hint2; + sort[i2] = hint1; + } + } + } + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** HINTS GRID-FITTING AND OPTIMIZATION *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + +#ifdef DEBUG_HINTER + void + ps_simple_scale( PSH1_Hint_Table table, + FT_Fixed scale, + FT_Fixed delta, + FT_Int vertical ) + { + PSH1_Hint hint; + FT_UInt count; + + + for ( count = 0; count < table->num_hints; count++ ) + { + hint = table->sort[count]; + if ( psh1_hint_is_active( hint ) ) + { + hint->cur_pos = FT_MulFix( hint->org_pos, scale ) + delta; + hint->cur_len = FT_MulFix( hint->org_len, scale ); + + if ( ps1_debug_hint_func ) + ps1_debug_hint_func( hint, vertical ); + } + } + } +#endif + + + FT_LOCAL_DEF FT_Error + psh1_hint_table_optimize( PSH1_Hint_Table table, + PSH_Globals globals, + FT_Outline* outline, + FT_Int vertical ) + { + PSH_Dimension dim = &globals->dimension[vertical]; + FT_Fixed scale = dim->scale_mult; + FT_Fixed delta = dim->scale_delta; + + FT_UNUSED( outline ); + + +#ifdef DEBUG_HINTER + if ( ps_debug_no_vert_hints && vertical ) + { + ps_simple_scale( table, scale, delta, vertical ); + return 0; + } + + if ( ps_debug_no_horz_hints && !vertical ) + { + ps_simple_scale( table, scale, delta, vertical ); + return 0; + } +#endif + + /* XXXX: for now, we only scale the hints to test all other aspects */ + /* of the PostScript hinter */ + { + PSH1_Hint hint; + FT_UInt count; + + + for ( count = 0; count < table->num_hints; count++ ) + { + hint = table->sort[count]; + if ( psh1_hint_is_active( hint ) ) + { +#if 1 + FT_Pos pos = FT_MulFix( hint->org_pos, scale ) + delta; + FT_Pos len = FT_MulFix( hint->org_len, scale ); + + FT_Pos fit_center; + FT_Pos fit_len; + + PSH_AlignmentRec align; + + + /* compute fitted width/height */ + fit_len = psh_dimension_snap_width( dim, hint->org_len ); + if ( fit_len < 64 ) + fit_len = 64; + else + fit_len = ( fit_len + 32 ) & -64; + + hint->cur_len = fit_len; + + /* check blue zones for horizontal stems */ + align.align = 0; + align.align_bot = align.align_top = 0; + if ( !vertical ) + { + psh_blues_snap_stem( &globals->blues, + hint->org_pos + hint->org_len, + hint->org_pos, + &align ); + } + + switch ( align.align ) + { + case PSH_BLUE_ALIGN_TOP: + /* the top of the stem is aligned against a blue zone */ + hint->cur_pos = align.align_top - fit_len; + break; + + case PSH_BLUE_ALIGN_BOT: + /* the bottom of the stem is aligned against a blue zone */ + hint->cur_pos = align.align_bot; + break; + + case PSH_BLUE_ALIGN_TOP | PSH_BLUE_ALIGN_BOT: + /* both edges of the stem are aligned against blue zones */ + hint->cur_pos = align.align_bot; + hint->cur_len = align.align_top - align.align_bot; + break; + + default: + /* normal processing */ + if ( ( fit_len / 64 ) & 1 ) + { + /* odd number of pixels */ + fit_center = ( ( pos + ( len >> 1 ) ) & -64 ) + 32; + } + else + { + /* even number of pixels */ + fit_center = ( pos + ( len >> 1 ) + 32 ) & -64; + } + + hint->cur_pos = fit_center - ( fit_len >> 1 ); + } + +# else + + hint->cur_pos = ( FT_MulFix( hint->org_pos, scale ) + delta + 32 ) + & -64; + hint->cur_len = FT_MulFix( hint->org_len, scale ); + +# endif + +#ifdef DEBUG_HINTER + if ( ps1_debug_hint_func ) + ps1_debug_hint_func( hint, vertical ); +#endif + } + } + } + + return 0; + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** POINTS INTERPOLATION ROUTINES *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + +#define PSH1_ZONE_MIN -3200000 +#define PSH1_ZONE_MAX +3200000 + +#define xxDEBUG_ZONES + + +#ifdef DEBUG_ZONES + +#include <stdio.h> + + static void + print_zone( PSH1_Zone zone ) + { + printf( "zone [scale,delta,min,max] = [%.3f,%.3f,%d,%d]\n", + zone->scale / 65536.0, + zone->delta / 64.0, + zone->min, + zone->max ); + } + +#else +#define print_zone( x ) do { } while ( 0 ) +#endif + + /* setup interpolation zones once the hints have been grid-fitted */ + /* by the optimizer */ + static void + psh1_hint_table_setup_zones( PSH1_Hint_Table table, + FT_Fixed scale, + FT_Fixed delta ) + { + FT_UInt count; + PSH1_Zone zone; + PSH1_Hint *sort, hint, hint2; + + + zone = table->zones; + + /* special case, no hints defined */ + if ( table->num_hints == 0 ) + { + zone->scale = scale; + zone->delta = delta; + zone->min = PSH1_ZONE_MIN; + zone->max = PSH1_ZONE_MAX; + + table->num_zones = 1; + table->zone = zone; + return; + } + + /* the first zone is before the first hint */ + /* x' = (x-x0)*s + x0' = x*s + ( x0' - x0*s ) */ + + sort = table->sort; + hint = sort[0]; + + zone->scale = scale; + zone->delta = hint->cur_pos - FT_MulFix( hint->org_pos, scale ); + zone->min = PSH1_ZONE_MIN; + zone->max = hint->org_pos; + + print_zone( zone ); + + zone++; + + for ( count = table->num_hints; count > 0; count-- ) + { + FT_Fixed scale2; + + + if ( hint->org_len > 0 ) + { + /* setup a zone for inner-stem interpolation */ + /* (x' - x0') = (x - x0)*(x1'-x0')/(x1-x0) */ + /* x' = x*s2 + x0' - x0*s2 */ + + scale2 = FT_DivFix( hint->cur_len, hint->org_len ); + zone->scale = scale2; + zone->min = hint->org_pos; + zone->max = hint->org_pos + hint->org_len; + zone->delta = hint->cur_pos - FT_MulFix( zone->min, scale2 ); + + print_zone( zone ); + + zone++; + } + + if ( count == 1 ) + break; + + sort++; + hint2 = sort[0]; + + /* setup zone for inter-stem interpolation */ + /* (x'-x1') = (x-x1)*(x2'-x1')/(x2-x1) */ + /* x' = x*s3 + x1' - x1*s3 */ + + scale2 = FT_DivFix( hint2->cur_pos - (hint->cur_pos + hint->cur_len), + hint2->org_pos - (hint->org_pos + hint->org_len) ); + zone->scale = scale2; + zone->min = hint->org_pos + hint->org_len; + zone->max = hint2->org_pos; + zone->delta = hint->cur_pos + hint->cur_len - + FT_MulFix( zone->min, scale2 ); + + print_zone( zone ); + + zone++; + + hint = hint2; + } + + /* the last zone */ + zone->scale = scale; + zone->min = hint->org_pos + hint->org_len; + zone->max = PSH1_ZONE_MAX; + zone->delta = hint->cur_pos + hint->cur_len - + FT_MulFix( zone->min, scale ); + + print_zone( zone ); + + zone++; + + table->num_zones = zone - table->zones; + table->zone = table->zones; + } + + + /* tune a single coordinate with the current interpolation zones */ + static FT_Pos + psh1_hint_table_tune_coord( PSH1_Hint_Table table, + FT_Int coord ) + { + PSH1_Zone zone; + + + zone = table->zone; + + if ( coord < zone->min ) + { + do + { + if ( zone == table->zones ) + break; + + zone--; + + } while ( coord < zone->min ); + table->zone = zone; + } + else if ( coord > zone->max ) + { + do + { + if ( zone == table->zones + table->num_zones - 1 ) + break; + + zone++; + + } while ( coord > zone->max ); + table->zone = zone; + } + + return FT_MulFix( coord, zone->scale ) + zone->delta; + } + + + /* tune a given outline with current interpolation zones. */ + /* The function only works in a single dimension. */ + static void + psh1_hint_table_tune_outline( PSH1_Hint_Table table, + FT_Outline* outline, + PSH_Globals globals, + FT_Int vertical ) + + { + FT_UInt count, first, last; + PS_Mask_Table hint_masks = table->hint_masks; + PS_Mask mask; + PSH_Dimension dim = &globals->dimension[vertical]; + FT_Fixed scale = dim->scale_mult; + FT_Fixed delta = dim->scale_delta; + + + if ( hint_masks && hint_masks->num_masks > 0 ) + { + first = 0; + mask = hint_masks->masks; + count = hint_masks->num_masks; + + for ( ; count > 0; count--, mask++ ) + { + last = mask->end_point; + + if ( last > first ) + { + FT_Vector* vec; + FT_Int count2; + + + psh1_hint_table_activate_mask( table, mask ); + psh1_hint_table_optimize( table, globals, outline, vertical ); + psh1_hint_table_setup_zones( table, scale, delta ); + last = mask->end_point; + + vec = outline->points + first; + count2 = last - first; + + for ( ; count2 > 0; count2--, vec++ ) + { + FT_Pos x, *px; + + + px = vertical ? &vec->x : &vec->y; + x = *px; + + *px = psh1_hint_table_tune_coord( table, (FT_Int)x ); + } + } + + first = last; + } + } + else /* no hints in this glyph, simply scale the outline */ + { + FT_Vector* vec; + + + vec = outline->points; + count = outline->n_points; + + if ( vertical ) + { + for ( ; count > 0; count--, vec++ ) + vec->x = FT_MulFix( vec->x, scale ) + delta; + } + else + { + for ( ; count > 0; count--, vec++ ) + vec->y = FT_MulFix( vec->y, scale ) + delta; + } + } + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** HIGH-LEVEL INTERFACE *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + FT_Error + ps1_hints_apply( PS_Hints ps_hints, + FT_Outline* outline, + PSH_Globals globals ) + { + PSH1_Hint_TableRec hints; + FT_Error error = 0; + FT_Int dimension; + + + for ( dimension = 1; dimension >= 0; dimension-- ) + { + PS_Dimension dim = &ps_hints->dimension[dimension]; + + + /* initialize hints table */ + memset( &hints, 0, sizeof ( hints ) ); + error = psh1_hint_table_init( &hints, + &dim->hints, + &dim->masks, + &dim->counters, + ps_hints->memory ); + if ( error ) + goto Exit; + + psh1_hint_table_tune_outline( &hints, + outline, + globals, + dimension ); + + psh1_hint_table_done( &hints, ps_hints->memory ); + } + + Exit: + return error; + } + + +/* END */ Index: xc/extras/freetype2/src/pshinter/pshalgo1.h diff -u /dev/null xc/extras/freetype2/src/pshinter/pshalgo1.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:55 2002 +++ xc/extras/freetype2/src/pshinter/pshalgo1.h Mon Jan 14 11:52:14 2002 @@ -0,0 +1,109 @@ +/***************************************************************************/ +/* */ +/* pshalgo1.h */ +/* */ +/* PostScript hinting algorithm 1 (specification). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSHALGO1_H__ +#define __PSHALGO1_H__ + +#include "pshrec.h" + +FT_BEGIN_HEADER + + typedef struct PSH1_HintRec_* PSH1_Hint; + + typedef enum + { + PSH1_HINT_FLAG_GHOST = PS_HINT_FLAG_GHOST, + PSH1_HINT_FLAG_BOTTOM = PS_HINT_FLAG_BOTTOM, + PSH1_HINT_FLAG_ACTIVE = 4 + + } PSH1_Hint_Flags; + +#define psh1_hint_is_active( x ) \ + ( ( (x)->flags & PSH1_HINT_FLAG_ACTIVE ) != 0 ) +#define psh1_hint_is_ghost( x ) \ + ( ( (x)->flags & PSH1_HINT_FLAG_GHOST ) != 0 ) + +#define psh1_hint_activate( x ) (x)->flags |= PSH1_HINT_FLAG_ACTIVE +#define psh1_hint_deactivate( x ) (x)->flags &= ~PSH1_HINT_FLAG_ACTIVE + + typedef struct PSH1_HintRec_ + { + FT_Int org_pos; + FT_Int org_len; + FT_Pos cur_pos; + FT_Pos cur_len; + + FT_UInt flags; + + PSH1_Hint parent; + FT_Int order; + + } PSH1_HintRec; + + + /* this is an interpolation zone used for strong points; */ + /* weak points are interpolated according to their strong */ + /* neighbours */ + typedef struct PSH1_ZoneRec_ + { + FT_Fixed scale; + FT_Fixed delta; + FT_Pos min; + FT_Pos max; + + } PSH1_ZoneRec, *PSH1_Zone; + + + typedef struct PSH1_Hint_TableRec_ + { + FT_UInt max_hints; + FT_UInt num_hints; + PSH1_Hint hints; + PSH1_Hint* sort; + PSH1_Hint* sort_global; + FT_UInt num_zones; + PSH1_Zone zones; + PSH1_Zone zone; + PS_Mask_Table hint_masks; + PS_Mask_Table counter_masks; + + } PSH1_Hint_TableRec, *PSH1_Hint_Table; + + + extern FT_Error + ps1_hints_apply( PS_Hints ps_hints, + FT_Outline* outline, + PSH_Globals globals ); + + +#ifdef DEBUG_HINTER + extern PSH1_Hint_Table ps1_debug_hint_table; + + typedef void + (*PSH1_HintFunc)( PSH1_Hint hint, + FT_Bool vertical ); + + extern PSH1_HintFunc ps1_debug_hint_func; +#endif + +FT_END_HEADER + +#endif /* __PSHALGO1_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/pshinter/pshalgo2.c diff -u /dev/null xc/extras/freetype2/src/pshinter/pshalgo2.c:1.1.1.1 --- /dev/null Fri Jan 18 15:21:55 2002 +++ xc/extras/freetype2/src/pshinter/pshalgo2.c Mon Jan 14 11:52:14 2002 @@ -0,0 +1,1553 @@ +/***************************************************************************/ +/* */ +/* pshalgo2.c */ +/* */ +/* PostScript hinting algorithm 2 (body). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used */ +/* modified and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#include <ft2build.h> +#include FT_INTERNAL_OBJECTS_H +#include FT_INTERNAL_DEBUG_H +#include "pshalgo2.h" + +#undef FT_COMPONENT +#define FT_COMPONENT trace_pshalgo2 + +#ifdef DEBUG_HINTER + extern PSH2_Hint_Table ps2_debug_hint_table = 0; + extern PSH2_HintFunc ps2_debug_hint_func = 0; + extern PSH2_Glyph ps2_debug_glyph = 0; +#endif + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** BASIC HINTS RECORDINGS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /* return true iff two stem hints overlap */ + static FT_Int + psh2_hint_overlap( PSH2_Hint hint1, + PSH2_Hint hint2 ) + { + return ( hint1->org_pos + hint1->org_len >= hint2->org_pos && + hint2->org_pos + hint2->org_len >= hint1->org_pos ); + } + + + /* destroy hints table */ + static void + psh2_hint_table_done( PSH2_Hint_Table table, + FT_Memory memory ) + { + FREE( table->zones ); + table->num_zones = 0; + table->zone = 0; + + FREE( table->sort ); + FREE( table->hints ); + table->num_hints = 0; + table->max_hints = 0; + table->sort_global = 0; + } + + + /* deactivate all hints in a table */ + static void + psh2_hint_table_deactivate( PSH2_Hint_Table table ) + { + FT_UInt count = table->max_hints; + PSH2_Hint hint = table->hints; + + + for ( ; count > 0; count--, hint++ ) + { + psh2_hint_deactivate( hint ); + hint->order = -1; + } + } + + + /* internal function used to record a new hint */ + static void + psh2_hint_table_record( PSH2_Hint_Table table, + FT_UInt index ) + { + PSH2_Hint hint = table->hints + index; + + + if ( index >= table->max_hints ) + { + FT_ERROR(( "%s.activate: invalid hint index %d\n", index )); + return; + } + + /* ignore active hints */ + if ( psh2_hint_is_active( hint ) ) + return; + + psh2_hint_activate( hint ); + + /* now scan the current active hint set in order to determine */ + /* if we are overlapping with another segment */ + { + PSH2_Hint* sorted = table->sort_global; + FT_UInt count = table->num_hints; + PSH2_Hint hint2; + + + hint->parent = 0; + for ( ; count > 0; count--, sorted++ ) + { + hint2 = sorted[0]; + + if ( psh2_hint_overlap( hint, hint2 ) ) + { + hint->parent = hint2; + break; + } + } + } + + if ( table->num_hints < table->max_hints ) + table->sort_global[table->num_hints++] = hint; + else + FT_ERROR(( "%s.activate: too many sorted hints! BUG!\n", + "ps.fitter" )); + } + + + static void + psh2_hint_table_record_mask( PSH2_Hint_Table table, + PS_Mask hint_mask ) + { + FT_Int mask = 0, val = 0; + FT_Byte* cursor = hint_mask->bytes; + FT_UInt index, limit; + + + limit = hint_mask->num_bits; + + for ( index = 0; index < limit; index++ ) + { + if ( mask == 0 ) + { + val = *cursor++; + mask = 0x80; + } + + if ( val & mask ) + psh2_hint_table_record( table, index ); + + mask >>= 1; + } + } + + + /* create hints table */ + static FT_Error + psh2_hint_table_init( PSH2_Hint_Table table, + PS_Hint_Table hints, + PS_Mask_Table hint_masks, + PS_Mask_Table counter_masks, + FT_Memory memory ) + { + FT_UInt count = hints->num_hints; + FT_Error error; + + FT_UNUSED( counter_masks ); + + + /* allocate our tables */ + if ( ALLOC_ARRAY( table->sort, 2 * count, PSH2_Hint ) || + ALLOC_ARRAY( table->hints, count, PSH2_HintRec ) || + ALLOC_ARRAY( table->zones, 2 * count + 1, PSH2_ZoneRec ) ) + goto Exit; + + table->max_hints = count; + table->sort_global = table->sort + count; + table->num_hints = 0; + table->num_zones = 0; + table->zone = 0; + + /* now, initialize the "hints" array */ + { + PSH2_Hint write = table->hints; + PS_Hint read = hints->hints; + + + for ( ; count > 0; count--, write++, read++ ) + { + write->org_pos = read->pos; + write->org_len = read->len; + write->flags = read->flags; + } + } + + /* we now need to determine the initial "parent" stems; first */ + /* activate the hints that are given by the initial hint masks */ + if ( hint_masks ) + { + FT_UInt Count = hint_masks->num_masks; + PS_Mask Mask = hint_masks->masks; + + + table->hint_masks = hint_masks; + + for ( ; Count > 0; Count--, Mask++ ) + psh2_hint_table_record_mask( table, Mask ); + } + + /* now, do a linear parse in case some hints were left alone */ + if ( table->num_hints != table->max_hints ) + { + FT_UInt Index, Count; + + + FT_ERROR(( "%s.init: missing/incorrect hint masks!\n" )); + Count = table->max_hints; + for ( Index = 0; Index < Count; Index++ ) + psh2_hint_table_record( table, Index ); + } + + Exit: + return error; + } + + + static void + psh2_hint_table_activate_mask( PSH2_Hint_Table table, + PS_Mask hint_mask ) + { + FT_Int mask = 0, val = 0; + FT_Byte* cursor = hint_mask->bytes; + FT_UInt index, limit, count; + + + limit = hint_mask->num_bits; + count = 0; + + psh2_hint_table_deactivate( table ); + + for ( index = 0; index < limit; index++ ) + { + if ( mask == 0 ) + { + val = *cursor++; + mask = 0x80; + } + + if ( val & mask ) + { + PSH2_Hint hint = &table->hints[index]; + + + if ( !psh2_hint_is_active( hint ) ) + { + FT_UInt count2; + +#if 0 + PSH2_Hint* sort = table->sort; + PSH2_Hint hint2; + + for ( count2 = count; count2 > 0; count2--, sort++ ) + { + hint2 = sort[0]; + if ( psh2_hint_overlap( hint, hint2 ) ) + FT_ERROR(( "%s.activate_mask: found overlapping hints\n", + "psf.hint" )); + } +#else + count2 = 0; +#endif + + if ( count2 == 0 ) + { + psh2_hint_activate( hint ); + if ( count < table->max_hints ) + table->sort[count++] = hint; + else + FT_ERROR(( "%s.activate_mask: too many active hints\n", + "psf.hint" )); + } + } + } + + mask >>= 1; + } + table->num_hints = count; + + /* now, sort the hints; they are guaranteed to not overlap */ + /* so we can compare their "org_pos" field directly */ + { + FT_Int i1, i2; + PSH2_Hint hint1, hint2; + PSH2_Hint* sort = table->sort; + + + /* a simple bubble sort will do, since in 99% of cases, the hints */ + /* will be already sorted -- and the sort will be linear */ + for ( i1 = 1; i1 < (FT_Int)count; i1++ ) + { + hint1 = sort[i1]; + for ( i2 = i1 - 1; i2 >= 0; i2-- ) + { + hint2 = sort[i2]; + + if ( hint2->org_pos < hint1->org_pos ) + break; + + sort[i2 + 1] = hint2; + sort[i2] = hint1; + } + } + } + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** HINTS GRID-FITTING AND OPTIMIZATION *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + +#ifdef DEBUG_HINTER + static void + ps2_simple_scale( PSH2_Hint_Table table, + FT_Fixed scale, + FT_Fixed delta, + FT_Int dimension ) + { + PSH2_Hint hint; + FT_UInt count; + + + for ( count = 0; count < table->max_hints; count++ ) + { + hint = table->hints + count; + + hint->cur_pos = FT_MulFix( hint->org_pos, scale ) + delta; + hint->cur_len = FT_MulFix( hint->org_len, scale ); + + if ( ps2_debug_hint_func ) + ps2_debug_hint_func( hint, dimension ); + } + } +#endif + + + static void + psh2_hint_align( PSH2_Hint hint, + PSH_Globals globals, + FT_Int dimension ) + { + PSH_Dimension dim = &globals->dimension[dimension]; + FT_Fixed scale = dim->scale_mult; + FT_Fixed delta = dim->scale_delta; + + + if ( !psh2_hint_is_fitted(hint) ) + { + FT_Pos pos = FT_MulFix( hint->org_pos, scale ) + delta; + FT_Pos len = FT_MulFix( hint->org_len, scale ); + + FT_Pos fit_center; + FT_Pos fit_len; + + PSH_AlignmentRec align; + + + /* compute fitted width/height */ + fit_len = 0; + if ( hint->org_len ) + { + fit_len = psh_dimension_snap_width( dim, hint->org_len ); + if ( fit_len < 64 ) + fit_len = 64; + else + fit_len = ( fit_len + 32 ) & -64; + } + + hint->cur_len = fit_len; + + /* check blue zones for horizontal stems */ + align.align = 0; + align.align_bot = align.align_top = 0; + + if ( dimension == 1 ) + psh_blues_snap_stem( &globals->blues, + hint->org_pos + hint->org_len, + hint->org_pos, + &align ); + + switch ( align.align ) + { + case PSH_BLUE_ALIGN_TOP: + /* the top of the stem is aligned against a blue zone */ + hint->cur_pos = align.align_top - fit_len; + break; + + case PSH_BLUE_ALIGN_BOT: + /* the bottom of the stem is aligned against a blue zone */ + hint->cur_pos = align.align_bot; + break; + + case PSH_BLUE_ALIGN_TOP | PSH_BLUE_ALIGN_BOT: + /* both edges of the stem are aligned against blue zones */ + hint->cur_pos = align.align_bot; + hint->cur_len = align.align_top - align.align_bot; + break; + + default: + { + PSH2_Hint parent = hint->parent; + + + if ( parent ) + { + FT_Pos par_org_center, par_cur_center; + FT_Pos cur_org_center, cur_delta; + + + /* ensure that parent is already fitted */ + if ( !psh2_hint_is_fitted( parent ) ) + psh2_hint_align( parent, globals, dimension ); + + par_org_center = parent->org_pos + ( parent->org_len / 2); + par_cur_center = parent->cur_pos + ( parent->cur_len / 2); + cur_org_center = hint->org_pos + ( hint->org_len / 2); + + cur_delta = FT_MulFix( cur_org_center - par_org_center, scale ); +#if 0 + if ( cur_delta >= 0 ) + cur_delta = ( cur_delta + 16 ) & -64; + else + cur_delta = -( (-cur_delta + 16 ) & -64 ); +#endif + pos = par_cur_center + cur_delta - ( len >> 1 ); + } + + /* normal processing */ + if ( ( fit_len / 64 ) & 1 ) + { + /* odd number of pixels */ + fit_center = ( ( pos + ( len >> 1 ) ) & -64 ) + 32; + } + else + { + /* even number of pixels */ + fit_center = ( pos + ( len >> 1 ) + 32 ) & -64; + } + + hint->cur_pos = fit_center - ( fit_len >> 1 ); + } + } + + psh2_hint_set_fitted( hint ); + +#ifdef DEBUG_HINTER + if ( ps2_debug_hint_func ) + ps2_debug_hint_func( hint, dimension ); +#endif + } + } + + + static void + psh2_hint_table_align_hints( PSH2_Hint_Table table, + PSH_Globals globals, + FT_Int dimension ) + { + PSH2_Hint hint; + FT_UInt count; + +#ifdef DEBUG_HINTER + PSH_Dimension dim = &globals->dimension[dimension]; + FT_Fixed scale = dim->scale_mult; + FT_Fixed delta = dim->scale_delta; + + + if ( ps_debug_no_vert_hints && dimension == 0 ) + { + ps2_simple_scale( table, scale, delta, dimension ); + return; + } + + if ( ps_debug_no_horz_hints && dimension == 1 ) + { + ps2_simple_scale( table, scale, delta, dimension ); + return; + } +#endif + + hint = table->hints; + count = table->max_hints; + + for ( ; count > 0; count--, hint++ ) + psh2_hint_align( hint, globals, dimension ); + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** POINTS INTERPOLATION ROUTINES *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + +#define PSH2_ZONE_MIN -3200000 +#define PSH2_ZONE_MAX +3200000 + +#define xxDEBUG_ZONES + + +#ifdef DEBUG_ZONES + +#include <stdio.h> + + static void + print_zone( PSH2_Zone zone ) + { + printf( "zone [scale,delta,min,max] = [%.3f,%.3f,%d,%d]\n", + zone->scale/65536.0, + zone->delta/64.0, + zone->min, + zone->max ); + } + +#else + +#define print_zone( x ) do { } while ( 0 ) + +#endif + +#if 0 + /* setup interpolation zones once the hints have been grid-fitted */ + /* by the optimizer */ + static void + psh2_hint_table_setup_zones( PSH2_Hint_Table table, + FT_Fixed scale, + FT_Fixed delta ) + { + FT_UInt count; + PSH2_Zone zone; + PSH2_Hint *sort, hint, hint2; + + + zone = table->zones; + + /* special case, no hints defined */ + if ( table->num_hints == 0 ) + { + zone->scale = scale; + zone->delta = delta; + zone->min = PSH2_ZONE_MIN; + zone->max = PSH2_ZONE_MAX; + + table->num_zones = 1; + table->zone = zone; + return; + } + + /* the first zone is before the first hint */ + /* x' = (x-x0)*s + x0' = x*s + ( x0' - x0*s ) */ + sort = table->sort; + hint = sort[0]; + + zone->scale = scale; + zone->delta = hint->cur_pos - FT_MulFix( hint->org_pos, scale ); + zone->min = PSH2_ZONE_MIN; + zone->max = hint->org_pos; + + print_zone( zone ); + + zone++; + + for ( count = table->num_hints; count > 0; count-- ) + { + FT_Fixed scale2; + + + if ( hint->org_len > 0 ) + { + /* setup a zone for inner-stem interpolation */ + /* (x' - x0') = (x - x0)*(x1'-x0')/(x1-x0) */ + /* x' = x*s2 + x0' - x0*s2 */ + + scale2 = FT_DivFix( hint->cur_len, hint->org_len ); + zone->scale = scale2; + zone->min = hint->org_pos; + zone->max = hint->org_pos + hint->org_len; + zone->delta = hint->cur_pos - FT_MulFix( zone->min, scale2 ); + + print_zone( zone ); + + zone++; + } + + if ( count == 1 ) + break; + + sort++; + hint2 = sort[0]; + + /* setup zone for inter-stem interpolation */ + /* (x'-x1') = (x-x1)*(x2'-x1')/(x2-x1) */ + /* x' = x*s3 + x1' - x1*s3 */ + + scale2 = FT_DivFix( hint2->cur_pos - (hint->cur_pos + hint->cur_len), + hint2->org_pos - (hint->org_pos + hint->org_len) ); + zone->scale = scale2; + zone->min = hint->org_pos + hint->org_len; + zone->max = hint2->org_pos; + zone->delta = hint->cur_pos + hint->cur_len - + FT_MulFix( zone->min, scale2 ); + + print_zone( zone ); + + zone++; + + hint = hint2; + } + + /* the last zone */ + zone->scale = scale; + zone->min = hint->org_pos + hint->org_len; + zone->max = PSH2_ZONE_MAX; + zone->delta = hint->cur_pos + hint->cur_len - + FT_MulFix( zone->min, scale ); + + print_zone( zone ); + + zone++; + + table->num_zones = zone - table->zones; + table->zone = table->zones; + } +#endif + +#if 0 + /* tune a single coordinate with the current interpolation zones */ + static FT_Pos + psh2_hint_table_tune_coord( PSH2_Hint_Table table, + FT_Int coord ) + { + PSH2_Zone zone; + + + zone = table->zone; + + if ( coord < zone->min ) + { + do + { + if ( zone == table->zones ) + break; + + zone--; + + } while ( coord < zone->min ); + table->zone = zone; + } + else if ( coord > zone->max ) + { + do + { + if ( zone == table->zones + table->num_zones - 1 ) + break; + + zone++; + + } while ( coord > zone->max ); + table->zone = zone; + } + + return FT_MulFix( coord, zone->scale ) + zone->delta; + } +#endif + +#if 0 + /* tune a given outline with current interpolation zones */ + /* the function only works in a single dimension.. */ + static void + psh2_hint_table_tune_outline( PSH2_Hint_Table table, + FT_Outline* outline, + PSH_Globals globals, + FT_Int dimension ) + + { + FT_UInt count, first, last; + PS_Mask_Table hint_masks = table->hint_masks; + PS_Mask mask; + PSH_Dimension dim = &globals->dimension[dimension]; + FT_Fixed scale = dim->scale_mult; + FT_Fixed delta = dim->scale_delta; + + + if ( hint_masks && hint_masks->num_masks > 0 ) + { + first = 0; + mask = hint_masks->masks; + count = hint_masks->num_masks; + + for ( ; count > 0; count--, mask++ ) + { + last = mask->end_point; + + if ( last > first ) + { + FT_Vector* vec; + FT_Int count2; + + + psh2_hint_table_activate_mask( table, mask ); + psh2_hint_table_optimize( table, globals, outline, dimension ); + psh2_hint_table_setup_zones( table, scale, delta ); + last = mask->end_point; + + vec = outline->points + first; + count2 = last - first; + + for ( ; count2 > 0; count2--, vec++ ) + { + FT_Pos x, *px; + + + px = dimension ? &vec->y : &vec->x; + x = *px; + + *px = psh2_hint_table_tune_coord( table, (FT_Int)x ); + } + } + + first = last; + } + } + else /* no hints in this glyph, simply scale the outline */ + { + FT_Vector* vec; + + + vec = outline->points; + count = outline->n_points; + + if ( dimension == 0 ) + { + for ( ; count > 0; count--, vec++ ) + vec->x = FT_MulFix( vec->x, scale ) + delta; + } + else + { + for ( ; count > 0; count--, vec++ ) + vec->y = FT_MulFix( vec->y, scale ) + delta; + } + } + } +#endif + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** HINTER GLYPH MANAGEMENT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + static int + psh2_point_is_extremum( PSH2_Point point ) + { + PSH2_Point before = point; + PSH2_Point after = point; + FT_Pos d_before; + FT_Pos d_after; + + + do + { + before = before->prev; + if ( before == point ) + return 0; + + d_before = before->org_u - point->org_u; + + } while ( d_before == 0 ); + + do + { + after = after->next; + if ( after == point ) + return 0; + + d_after = after->org_u - point->org_u; + + } while ( d_after == 0 ); + + return ( ( d_before > 0 && d_after > 0 ) || + ( d_before < 0 && d_after < 0 ) ); + } + + + static void + psh2_glyph_done( PSH2_Glyph glyph ) + { + FT_Memory memory = glyph->memory; + + + psh2_hint_table_done( &glyph->hint_tables[1], memory ); + psh2_hint_table_done( &glyph->hint_tables[0], memory ); + + FREE( glyph->points ); + FREE( glyph->contours ); + + glyph->num_points = 0; + glyph->num_contours = 0; + + glyph->memory = 0; + } + + + static int + psh2_compute_dir( FT_Pos dx, + FT_Pos dy ) + { + FT_Pos ax, ay; + int result = PSH2_DIR_NONE; + + + ax = ( dx >= 0 ) ? dx : -dx; + ay = ( dy >= 0 ) ? dy : -dy; + + if ( ay * 12 < ax ) + { + /* |dy| <<< |dx| means a near-horizontal segment */ + result = ( dx >= 0 ) ? PSH2_DIR_RIGHT : PSH2_DIR_LEFT; + } + else if ( ax * 12 < ay ) + { + /* |dx| <<< |dy| means a near-vertical segment */ + result = ( dy >= 0 ) ? PSH2_DIR_UP : PSH2_DIR_DOWN; + } + + return result; + } + + + static FT_Error + psh2_glyph_init( PSH2_Glyph glyph, + FT_Outline* outline, + PS_Hints ps_hints, + PSH_Globals globals ) + { + FT_Error error; + FT_Memory memory; + + + /* clear all fields */ + memset( glyph, 0, sizeof ( *glyph ) ); + + memory = globals->memory; + + /* allocate and setup points + contours arrays */ + if ( ALLOC_ARRAY( glyph->points, outline->n_points, + PSH2_PointRec ) || + ALLOC_ARRAY( glyph->contours, outline->n_contours, + PSH2_ContourRec ) ) + goto Exit; + + glyph->num_points = outline->n_points; + glyph->num_contours = outline->n_contours; + + { + FT_UInt first = 0, next, n; + PSH2_Point points = glyph->points; + PSH2_Contour contour = glyph->contours; + + + for ( n = 0; n < glyph->num_contours; n++ ) + { + FT_Int count; + PSH2_Point point; + + + next = outline->contours[n] + 1; + count = next - first; + + contour->start = points + first; + contour->count = (FT_UInt)count; + + if ( count > 0 ) + { + point = points + first; + + point->prev = points + next - 1; + point->contour = contour; + + for ( ; count > 1; count-- ) + { + point[0].next = point + 1; + point[1].prev = point; + point++; + point->contour = contour; + } + point->next = points + first; + } + + contour++; + first = next; + } + } + + { + PSH2_Point points = glyph->points; + PSH2_Point point = points; + FT_Vector* vec = outline->points; + FT_UInt n; + + + for ( n = 0; n < glyph->num_points; n++, point++ ) + { + FT_Int n_prev = point->prev - points; + FT_Int n_next = point->next - points; + FT_Pos dxi, dyi, dxo, dyo; + + + if ( !( outline->tags[n] & FT_Curve_Tag_On ) ) + point->flags = PSH2_POINT_OFF; + + dxi = vec[n].x - vec[n_prev].x; + dyi = vec[n].y - vec[n_prev].y; + + point->dir_in = (FT_Char)psh2_compute_dir( dxi, dyi ); + + dxo = vec[n_next].x - vec[n].x; + dyo = vec[n_next].y - vec[n].y; + + point->dir_out = (FT_Char)psh2_compute_dir( dxo, dyo ); + + /* detect smooth points */ + if ( point->flags & PSH2_POINT_OFF ) + point->flags |= PSH2_POINT_SMOOTH; + else if ( point->dir_in != PSH2_DIR_NONE || + point->dir_out != PSH2_DIR_NONE ) + { + if ( point->dir_in == point->dir_out ) + point->flags |= PSH2_POINT_SMOOTH; + } + else + { + FT_Angle angle_in, angle_out, diff; + + + angle_in = FT_Atan2( dxi, dyi ); + angle_out = FT_Atan2( dxo, dyo ); + + diff = angle_in - angle_out; + if ( diff < 0 ) + diff = -diff; + + if ( diff > FT_ANGLE_PI ) + diff = FT_ANGLE_2PI - diff; + + if ( diff < FT_ANGLE_PI / 16 ) + point->flags |= PSH2_POINT_SMOOTH; + } + } + } + + glyph->memory = memory; + glyph->outline = outline; + glyph->globals = globals; + + /* now deal with hints tables */ + error = psh2_hint_table_init( &glyph->hint_tables [0], + &ps_hints->dimension[0].hints, + &ps_hints->dimension[0].masks, + &ps_hints->dimension[0].counters, + memory ); + if ( error ) + goto Exit; + + error = psh2_hint_table_init( &glyph->hint_tables [1], + &ps_hints->dimension[1].hints, + &ps_hints->dimension[1].masks, + &ps_hints->dimension[1].counters, + memory ); + if ( error ) + goto Exit; + + Exit: + return error; + } + + + /* load outline point coordinates into hinter glyph */ + static void + psh2_glyph_load_points( PSH2_Glyph glyph, + FT_Int dimension ) + { + FT_Vector* vec = glyph->outline->points; + PSH2_Point point = glyph->points; + FT_UInt count = glyph->num_points; + + + for ( ; count > 0; count--, point++, vec++ ) + { + point->flags &= PSH2_POINT_OFF | PSH2_POINT_SMOOTH; + point->hint = 0; + if ( dimension == 0 ) + point->org_u = vec->x; + else + point->org_u = vec->y; + +#ifdef DEBUG_HINTER + point->org_x = vec->x; + point->org_y = vec->y; +#endif + } + } + + + /* save hinted point coordinates back to outline */ + static void + psh2_glyph_save_points( PSH2_Glyph glyph, + FT_Int dimension ) + { + FT_UInt n; + PSH2_Point point = glyph->points; + FT_Vector* vec = glyph->outline->points; + char* tags = glyph->outline->tags; + + + for ( n = 0; n < glyph->num_points; n++ ) + { + if ( dimension == 0 ) + vec[n].x = point->cur_u; + else + vec[n].y = point->cur_u; + + if ( psh2_point_is_strong( point ) ) + tags[n] |= (char)((dimension == 0) ? 32 : 64); + +#ifdef DEBUG_HINTER + if ( dimension == 0 ) + { + point->cur_x = point->cur_u; + point->flags_x = point->flags; + } + else + { + point->cur_y = point->cur_u; + point->flags_y = point->flags; + } +#endif + point++; + } + } + + +#define PSH2_STRONG_THRESHOLD 10 + + + static void + psh2_hint_table_find_strong_point( PSH2_Hint_Table table, + PSH2_Point point, + FT_Int major_dir ) + { + PSH2_Hint* sort = table->sort; + FT_UInt num_hints = table->num_hints; + + + for ( ; num_hints > 0; num_hints--, sort++ ) + { + PSH2_Hint hint = sort[0]; + + + if ( ABS( point->dir_in ) == major_dir || + ABS( point->dir_out ) == major_dir ) + { + FT_Pos d; + + + d = point->org_u - hint->org_pos; + if ( ABS( d ) < PSH2_STRONG_THRESHOLD ) + { + Is_Strong: + psh2_point_set_strong( point ); + point->hint = hint; + break; + } + + d -= hint->org_len; + if ( ABS( d ) < PSH2_STRONG_THRESHOLD ) + goto Is_Strong; + } + +#if 1 + if ( point->org_u >= hint->org_pos && + point->org_u <= hint->org_pos + hint->org_len && + psh2_point_is_extremum( point ) ) + { + /* attach to hint, but don't mark as strong */ + point->hint = hint; + break; + } +#endif + } + } + + + /* find strong points in a glyph */ + static void + psh2_glyph_find_strong_points( PSH2_Glyph glyph, + FT_Int dimension ) + { + /* a point is strong if it is located on a stem */ + /* edge and has an "in" or "out" tangent to the hint's direction */ + { + PSH2_Hint_Table table = &glyph->hint_tables[dimension]; + PS_Mask mask = table->hint_masks->masks; + FT_UInt num_masks = table->hint_masks->num_masks; + FT_UInt first = 0; + FT_Int major_dir = dimension == 0 ? PSH2_DIR_UP : PSH2_DIR_RIGHT; + + + /* process secondary hints to "selected" points */ + if ( num_masks > 1 ) + { + mask++; + for ( ; num_masks > 1; num_masks--, mask++ ) + { + FT_UInt next; + FT_Int count; + + + next = mask->end_point; + count = next - first; + if ( count > 0 ) + { + PSH2_Point point = glyph->points + first; + + + psh2_hint_table_activate_mask( table, mask ); + + for ( ; count > 0; count--, point++ ) + psh2_hint_table_find_strong_point( table, point, major_dir ); + } + first = next; + } + } + + /* process primary hints for all points */ + if ( num_masks == 1 ) + { + FT_UInt count = glyph->num_points; + PSH2_Point point = glyph->points; + + + psh2_hint_table_activate_mask( table, table->hint_masks->masks ); + for ( ; count > 0; count--, point++ ) + { + if ( !psh2_point_is_strong( point ) ) + psh2_hint_table_find_strong_point( table, point, major_dir ); + } + } + + /* now, certain points may have been attached to hint and */ + /* not marked as strong; update their flags then */ + { + FT_UInt count = glyph->num_points; + PSH2_Point point = glyph->points; + + + for ( ; count > 0; count--, point++ ) + if ( point->hint && !psh2_point_is_strong( point ) ) + psh2_point_set_strong( point ); + } + } + } + + + /* interpolate strong points with the help of hinted coordinates */ + static void + psh2_glyph_interpolate_strong_points( PSH2_Glyph glyph, + FT_Int dimension ) + { + PSH_Dimension dim = &glyph->globals->dimension[dimension]; + FT_Fixed scale = dim->scale_mult; + + + { + FT_UInt count = glyph->num_points; + PSH2_Point point = glyph->points; + + + for ( ; count > 0; count--, point++ ) + { + PSH2_Hint hint = point->hint; + + + if ( hint ) + { + FT_Pos delta; + + + delta = point->org_u - hint->org_pos; + + if ( delta <= 0 ) + point->cur_u = hint->cur_pos + FT_MulFix( delta, scale ); + + else if ( delta >= hint->org_len ) + point->cur_u = hint->cur_pos + hint->cur_len + + FT_MulFix( delta - hint->org_len, scale ); + + else if ( hint->org_len > 0 ) + point->cur_u = hint->cur_pos + + FT_MulDiv( delta, hint->cur_len, hint->org_len ); + else + point->cur_u = hint->cur_pos; + + psh2_point_set_fitted( point ); + } + } + } + } + + + static void + psh2_glyph_interpolate_normal_points( PSH2_Glyph glyph, + FT_Int dimension ) + { +#if 1 + PSH_Dimension dim = &glyph->globals->dimension[dimension]; + FT_Fixed scale = dim->scale_mult; + + + /* first technique: a point is strong if it is a local extrema */ + { + FT_UInt count = glyph->num_points; + PSH2_Point point = glyph->points; + + + for ( ; count > 0; count--, point++ ) + { + if ( psh2_point_is_strong( point ) ) + continue; + + /* sometimes, some local extremas are smooth points */ + if ( psh2_point_is_smooth( point ) ) + { + if ( point->dir_in == PSH2_DIR_NONE || + point->dir_in != point->dir_out ) + continue; + + if ( !psh2_point_is_extremum( point ) ) + continue; + + point->flags &= ~PSH2_POINT_SMOOTH; + } + + /* find best enclosing point coordinates */ + { + PSH2_Point before = 0; + PSH2_Point after = 0; + + FT_Pos diff_before = -32000; + FT_Pos diff_after = 32000; + FT_Pos u = point->org_u; + + FT_Int count2 = glyph->num_points; + PSH2_Point cur = glyph->points; + + + for ( ; count2 > 0; count2--, cur++ ) + { + if ( psh2_point_is_strong( cur ) ) + { + FT_Pos diff = cur->org_u - u;; + + + if ( diff <= 0 ) + { + if ( diff > diff_before ) + { + diff_before = diff; + before = cur; + } + } + else if ( diff >= 0 ) + { + if ( diff < diff_after ) + { + diff_after = diff; + after = cur; + } + } + } + } + + if ( !before ) + { + if ( !after ) + continue; + + /* we are before the first strong point coordinate; */ + /* simply translate the point */ + point->cur_u = after->cur_u + + FT_MulFix( point->org_u - after->org_u, scale ); + } + else if ( !after ) + { + /* we are after the last strong point coordinate; */ + /* simply translate the point */ + point->cur_u = before->cur_u + + FT_MulFix( point->org_u - before->org_u, scale ); + } + else + { + if ( diff_before == 0 ) + point->cur_u = before->cur_u; + + else if ( diff_after == 0 ) + point->cur_u = after->cur_u; + + else + point->cur_u = before->cur_u + + FT_MulDiv( u - before->org_u, + after->cur_u - before->cur_u, + after->org_u - before->org_u ); + } + + psh2_point_set_fitted( point ); + } + } + } +#endif + } + + + /* interpolate other points */ + static void + psh2_glyph_interpolate_other_points( PSH2_Glyph glyph, + FT_Int dimension ) + { + PSH_Dimension dim = &glyph->globals->dimension[dimension]; + FT_Fixed scale = dim->scale_mult; + FT_Fixed delta = dim->scale_delta; + PSH2_Contour contour = glyph->contours; + FT_UInt num_contours = glyph->num_contours; + + + for ( ; num_contours > 0; num_contours--, contour++ ) + { + PSH2_Point start = contour->start; + PSH2_Point first, next, point; + FT_UInt fit_count; + + + /* count the number of strong points in this contour */ + next = start + contour->count; + fit_count = 0; + first = 0; + + for ( point = start; point < next; point++ ) + if ( psh2_point_is_fitted( point ) ) + { + if ( !first ) + first = point; + + fit_count++; + } + + /* if there are less than 2 fitted points in the contour, we */ + /* simply scale and eventually translate the contour points */ + if ( fit_count < 2 ) + { + if ( fit_count == 1 ) + delta = first->cur_u - FT_MulFix( first->org_u, scale ); + + for ( point = start; point < next; point++ ) + if ( point != first ) + point->cur_u = FT_MulFix( point->org_u, scale ) + delta; + + goto Next_Contour; + } + + /* there are more than 2 strong points in this contour; we */ + /* need to interpolate weak points between them */ + start = first; + do + { + point = first; + + /* skip consecutive fitted points */ + for (;;) + { + next = first->next; + if ( next == start ) + goto Next_Contour; + + if ( !psh2_point_is_fitted( next ) ) + break; + + first = next; + } + + /* find next fitted point after unfitted one */ + for (;;) + { + next = next->next; + if ( psh2_point_is_fitted( next ) ) + break; + } + + /* now interpolate between them */ + { + FT_Pos org_a, org_ab, cur_a, cur_ab; + FT_Pos org_c, org_ac, cur_c; + FT_Fixed scale_ab; + + + if ( first->org_u <= next->org_u ) + { + org_a = first->org_u; + cur_a = first->cur_u; + org_ab = next->org_u - org_a; + cur_ab = next->cur_u - cur_a; + } + else + { + org_a = next->org_u; + cur_a = next->cur_u; + org_ab = first->org_u - org_a; + cur_ab = first->cur_u - cur_a; + } + + scale_ab = 0x10000L; + if ( org_ab > 0 ) + scale_ab = FT_DivFix( cur_ab, org_ab ); + + point = first->next; + do + { + org_c = point->org_u; + org_ac = org_c - org_a; + + if ( org_ac <= 0 ) + { + /* on the left of the interpolation zone */ + cur_c = cur_a + FT_MulFix( org_ac, scale ); + } + else if ( org_ac >= org_ab ) + { + /* on the right on the interpolation zone */ + cur_c = cur_a + cur_ab + FT_MulFix( org_ac - org_ab, scale ); + } + else + { + /* within the interpolation zone */ + cur_c = cur_a + FT_MulFix( org_ac, scale_ab ); + } + + point->cur_u = cur_c; + + point = point->next; + + } while ( point != next ); + } + + /* keep going until all points in the contours have been processed */ + first = next; + + } while ( first != start ); + + Next_Contour: + ; + } + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** HIGH-LEVEL INTERFACE *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + FT_Error + ps2_hints_apply( PS_Hints ps_hints, + FT_Outline* outline, + PSH_Globals globals ) + { + PSH2_GlyphRec glyphrec; + PSH2_Glyph glyph = &glyphrec; + FT_Error error; + FT_Memory memory; + FT_Int dimension; + + memory = globals->memory; + +#ifdef DEBUG_HINTER + if ( ps2_debug_glyph ) + { + psh2_glyph_done( ps2_debug_glyph ); + FREE( ps2_debug_glyph ); + } + + if ( ALLOC( glyph, sizeof ( *glyph ) ) ) + return error; + + ps2_debug_glyph = glyph; +#endif + + error = psh2_glyph_init( glyph, outline, ps_hints, globals ); + if ( error ) + goto Exit; + + for ( dimension = 0; dimension < 2; dimension++ ) + { + /* load outline coordinates into glyph */ + psh2_glyph_load_points( glyph, dimension ); + + /* compute aligned stem/hints positions */ + psh2_hint_table_align_hints( &glyph->hint_tables[dimension], + glyph->globals, + dimension ); + + /* find strong points, align them, then interpolate others */ + psh2_glyph_find_strong_points( glyph, dimension ); + psh2_glyph_interpolate_strong_points( glyph, dimension ); + psh2_glyph_interpolate_normal_points( glyph, dimension ); + psh2_glyph_interpolate_other_points( glyph, dimension ); + + /* save hinted coordinates back to outline */ + psh2_glyph_save_points( glyph, dimension ); + } + + Exit: +#ifndef DEBUG_HINTER + psh2_glyph_done( glyph ); +#endif + return error; + } + + +/* END */ Index: xc/extras/freetype2/src/pshinter/pshalgo2.h diff -u /dev/null xc/extras/freetype2/src/pshinter/pshalgo2.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:56 2002 +++ xc/extras/freetype2/src/pshinter/pshalgo2.h Mon Jan 14 11:52:14 2002 @@ -0,0 +1,202 @@ +/***************************************************************************/ +/* */ +/* pshalgo2.h */ +/* */ +/* PostScript hinting algorithm 2 (specification). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSHALGO2_H__ +#define __PSHALGO2_H__ + + +#include "pshrec.h" +#include "pshglob.h" +#include FT_TRIGONOMETRY_H + + +FT_BEGIN_HEADER + + + typedef struct PSH2_HintRec_* PSH2_Hint; + + typedef enum + { + PSH2_HINT_GHOST = PS_HINT_FLAG_GHOST, + PSH2_HINT_BOTTOM = PS_HINT_FLAG_BOTTOM, + PSH2_HINT_ACTIVE = 4, + PSH2_HINT_FITTED = 8 + + } PSH2_Hint_Flags; + + +#define psh2_hint_is_active( x ) ( ( (x)->flags & PSH2_HINT_ACTIVE ) != 0 ) +#define psh2_hint_is_ghost( x ) ( ( (x)->flags & PSH2_HINT_GHOST ) != 0 ) +#define psh2_hint_is_fitted( x ) ( ( (x)->flags & PSH2_HINT_FITTED ) != 0 ) + +#define psh2_hint_activate( x ) (x)->flags |= PSH2_HINT_ACTIVE +#define psh2_hint_deactivate( x ) (x)->flags &= ~PSH2_HINT_ACTIVE +#define psh2_hint_set_fitted( x ) (x)->flags |= PSH2_HINT_FITTED + + + typedef struct PSH2_HintRec_ + { + FT_Int org_pos; + FT_Int org_len; + FT_Pos cur_pos; + FT_Pos cur_len; + FT_UInt flags; + PSH2_Hint parent; + FT_Int order; + + } PSH2_HintRec; + + + /* this is an interpolation zone used for strong points; */ + /* weak points are interpolated according to their strong */ + /* neighbours */ + typedef struct PSH2_ZoneRec_ + { + FT_Fixed scale; + FT_Fixed delta; + FT_Pos min; + FT_Pos max; + + } PSH2_ZoneRec, *PSH2_Zone; + + + typedef struct PSH2_Hint_TableRec_ + { + FT_UInt max_hints; + FT_UInt num_hints; + PSH2_Hint hints; + PSH2_Hint* sort; + PSH2_Hint* sort_global; + FT_UInt num_zones; + PSH2_Zone zones; + PSH2_Zone zone; + PS_Mask_Table hint_masks; + PS_Mask_Table counter_masks; + + } PSH2_Hint_TableRec, *PSH2_Hint_Table; + + + typedef struct PSH2_PointRec_* PSH2_Point; + typedef struct PSH2_ContourRec_* PSH2_Contour; + + enum + { + PSH2_DIR_NONE = 4, + PSH2_DIR_UP = 1, + PSH2_DIR_DOWN = -1, + PSH2_DIR_LEFT = -2, + PSH2_DIR_RIGHT = 2 + }; + + enum + { + PSH2_POINT_OFF = 1, /* point is off the curve */ + PSH2_POINT_STRONG = 2, /* point is strong */ + PSH2_POINT_SMOOTH = 4, /* point is smooth */ + PSH2_POINT_FITTED = 8 /* point is already fitted */ + }; + + + typedef struct PSH2_PointRec_ + { + PSH2_Point prev; + PSH2_Point next; + PSH2_Contour contour; + FT_UInt flags; + FT_Char dir_in; + FT_Char dir_out; + FT_Angle angle_in; + FT_Angle angle_out; + PSH2_Hint hint; + FT_Pos org_u; + FT_Pos cur_u; +#ifdef DEBUG_HINTER + FT_Pos org_x; + FT_Pos cur_x; + FT_Pos org_y; + FT_Pos cur_y; + FT_UInt flags_x; + FT_UInt flags_y; +#endif + + } PSH2_PointRec; + + +#define psh2_point_is_strong( p ) ( (p)->flags & PSH2_POINT_STRONG ) +#define psh2_point_is_fitted( p ) ( (p)->flags & PSH2_POINT_FITTED ) +#define psh2_point_is_smooth( p ) ( (p)->flags & PSH2_POINT_SMOOTH ) + +#define psh2_point_set_strong( p ) (p)->flags |= PSH2_POINT_STRONG +#define psh2_point_set_fitted( p ) (p)->flags |= PSH2_POINT_FITTED +#define psh2_point_set_smooth( p ) (p)->flags |= PSH2_POINT_SMOOTH + + + typedef struct PSH2_ContourRec_ + { + PSH2_Point start; + FT_UInt count; + + } PSH2_ContourRec; + + + typedef struct PSH2_GlyphRec_ + { + FT_UInt num_points; + FT_UInt num_contours; + + PSH2_Point points; + PSH2_Contour contours; + + FT_Memory memory; + FT_Outline* outline; + PSH_Globals globals; + PSH2_Hint_TableRec hint_tables[2]; + + FT_Bool vertical; + FT_Int major_dir; + FT_Int minor_dir; + + } PSH2_GlyphRec, *PSH2_Glyph; + + +#ifdef DEBUG_HINTER + extern PSH2_Hint_Table ps2_debug_hint_table; + + typedef void + (*PSH2_HintFunc)( PSH2_Hint hint, + FT_Bool vertical ); + + extern PSH2_HintFunc ps2_debug_hint_func; + + extern PSH2_Glyph ps2_debug_glyph; +#endif + + + extern FT_Error + ps2_hints_apply( PS_Hints ps_hints, + FT_Outline* outline, + PSH_Globals globals ); + + +FT_END_HEADER + + +#endif /* __PSHALGO2_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/pshinter/pshglob.c diff -u /dev/null xc/extras/freetype2/src/pshinter/pshglob.c:1.1.1.1 --- /dev/null Fri Jan 18 15:21:56 2002 +++ xc/extras/freetype2/src/pshinter/pshglob.c Mon Jan 14 11:52:14 2002 @@ -0,0 +1,713 @@ +/***************************************************************************/ +/* */ +/* pshglob.c */ +/* */ +/* PostScript hinter global hinting management (body). */ +/* Inspired by the new auto-hinter module. */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used */ +/* modified and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_INTERNAL_OBJECTS_H +#include "pshglob.h" + +#ifdef DEBUG_HINTER + extern PSH_Globals ps_debug_globals = 0; +#endif + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** STANDARD WIDTHS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + /* scale the widths/heights table */ + static void + psh_globals_scale_widths( PSH_Globals globals, + FT_UInt direction ) + { + PSH_Dimension dim = &globals->dimension[direction]; + PSH_Widths std = &dim->std; + FT_UInt count = std->count; + PSH_Width width = std->widths; + FT_Fixed scale = dim->scale_mult; + + + for ( ; count > 0; count--, width++ ) + { + width->cur = FT_MulFix( width->org, scale ); + width->fit = FT_RoundFix( width->cur ); + } + } + + + /* org_width is is font units, result in device pixels, 26.6 format */ + FT_LOCAL_DEF FT_Pos + psh_dimension_snap_width( PSH_Dimension dimension, + FT_Int org_width ) + { + FT_UInt n; + FT_Pos width = FT_MulFix( org_width, dimension->scale_mult ); + FT_Pos best = 64 + 32 + 2; + FT_Pos reference = width; + + + for ( n = 0; n < dimension->std.count; n++ ) + { + FT_Pos w; + FT_Pos dist; + + + w = dimension->std.widths[n].cur; + dist = width - w; + if ( dist < 0 ) + dist = -dist; + if ( dist < best ) + { + best = dist; + reference = w; + } + } + + if ( width >= reference ) + { + width -= 0x21; + if ( width < reference ) + width = reference; + } + else + { + width += 0x21; + if ( width > reference ) + width = reference; + } + + return width; + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** BLUE ZONES *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + static void + psh_blues_set_zones_0( PSH_Blues target, + FT_Bool is_others, + FT_UInt read_count, + FT_Short* read, + PSH_Blue_Table top_table, + PSH_Blue_Table bot_table ) + { + FT_UInt count_top = top_table->count; + FT_UInt count_bot = bot_table->count; + FT_Bool first = 1; + + FT_UNUSED( target ); + + + for ( ; read_count > 0; read_count -= 2 ) + { + FT_Int reference, delta; + FT_UInt count; + PSH_Blue_Zone zones, zone; + FT_Bool top; + + + /* read blue zone entry, and select target top/bottom zone */ + top = 0; + if ( first || is_others ) + { + reference = read[1]; + delta = read[0] - reference; + + zones = bot_table->zones; + count = count_bot; + first = 0; + } + else + { + reference = read[0]; + delta = read[1] - reference; + + zones = top_table->zones; + count = count_top; + top = 1; + } + + /* insert into sorted table */ + zone = zones; + for ( ; count > 0; count--, zone++ ) + { + if ( reference < zone->org_ref ) + break; + + if ( reference == zone->org_ref ) + { + FT_Int delta0 = zone->org_delta; + + + /* we have two zones on the same reference position -- */ + /* only keep the largest one */ + if ( delta < 0 ) + { + if ( delta < delta0 ) + zone->org_delta = delta; + } + else + { + if ( delta > delta0 ) + zone->org_delta = delta; + } + goto Skip; + } + } + + for ( ; count > 0; count-- ) + zone[count] = zone[count-1]; + + zone->org_ref = reference; + zone->org_delta = delta; + + if ( top ) + count_top++; + else + count_bot++; + + Skip: + read += 2; + } + + top_table->count = count_top; + bot_table->count = count_bot; + } + + + /* Re-read blue zones from the original fonts and store them into out */ + /* private structure. This function re-orders, sanitizes and */ + /* fuzz-expands the zones as well. */ + static void + psh_blues_set_zones( PSH_Blues target, + FT_UInt count, + FT_Short* blues, + FT_UInt count_others, + FT_Short* other_blues, + FT_Int fuzz, + FT_Int family ) + { + PSH_Blue_Table top_table, bot_table; + FT_Int count_top, count_bot; + + + if ( family ) + { + top_table = &target->family_top; + bot_table = &target->family_bottom; + } + else + { + top_table = &target->normal_top; + bot_table = &target->normal_bottom; + } + + /* read the input blue zones, and build two sorted tables */ + /* (one for the top zones, the other for the bottom zones) */ + top_table->count = 0; + bot_table->count = 0; + + /* first, the blues */ + psh_blues_set_zones_0( target, 0, + count, blues, top_table, bot_table ); + psh_blues_set_zones_0( target, 1, + count_others, other_blues, top_table, bot_table ); + + count_top = top_table->count; + count_bot = bot_table->count; + + /* sanitize top table */ + if ( count_top > 0 ) + { + PSH_Blue_Zone zone = top_table->zones; + + + for ( count = count_top; count > 0; count--, zone++ ) + { + FT_Int delta; + + + if ( count > 1 ) + { + delta = zone[1].org_ref - zone[0].org_ref; + if ( zone->org_delta > delta ) + zone->org_delta = delta; + } + + zone->org_bottom = zone->org_ref; + zone->org_top = zone->org_delta + zone->org_ref; + } + } + + /* sanitize bottom table */ + if ( count_bot > 0 ) + { + PSH_Blue_Zone zone = bot_table->zones; + + + for ( count = count_bot; count > 0; count--, zone++ ) + { + FT_Int delta; + + + if ( count > 1 ) + { + delta = zone[0].org_ref - zone[1].org_ref; + if ( zone->org_delta < delta ) + zone->org_delta = delta; + } + + zone->org_top = zone->org_ref; + zone->org_bottom = zone->org_delta + zone->org_ref; + } + } + + /* expand top and bottom tables with blue fuzz */ + { + FT_Int dim, top, bot, delta; + PSH_Blue_Zone zone; + + + zone = top_table->zones; + count = count_top; + + for ( dim = 1; dim >= 0; dim-- ) + { + if ( count > 0 ) + { + /* expand the bottom of the lowest zone normally */ + zone->org_bottom -= fuzz; + + /* expand the top and bottom of intermediate zones; */ + /* checking that the interval is smaller than the fuzz */ + top = zone->org_top; + + for ( count--; count > 0; count-- ) + { + bot = zone[1].org_bottom; + delta = bot - top; + + if ( delta < 2 * fuzz ) + zone[0].org_top = zone[1].org_bottom = top + delta / 2; + else + { + zone[0].org_top = top + fuzz; + zone[1].org_bottom = bot - fuzz; + } + + zone++; + top = zone->org_top; + } + + /* expand the top of the highest zone normally */ + zone->org_top = top + fuzz; + } + zone = bot_table->zones; + count = count_bot; + } + } + } + + + /* reset the blues table when the device transform changes */ + static void + psh_blues_scale_zones( PSH_Blues blues, + FT_Fixed scale, + FT_Pos delta ) + { + FT_UInt count; + FT_UInt num; + PSH_Blue_Table table = 0; + + /* */ + /* Determine whether we need to suppress overshoots or */ + /* not. We simply need to compare the vertical scale */ + /* parameter to the raw bluescale value. Here is why: */ + /* */ + /* We need to suppress overshoots for all pointsizes. */ + /* At 300dpi that satisfy: */ + /* */ + /* pointsize < 240*bluescale + 0.49 */ + /* */ + /* This corresponds to: */ + /* */ + /* pixelsize < 1000*bluescale + 49/24 */ + /* */ + /* scale*EM_Size < 1000*bluescale + 49/24 */ + /* */ + /* However, for normal Type 1 fonts, EM_Size is 1000! */ + /* We thus only check: */ + /* */ + /* scale < bluescale + 49/24000 */ + /* */ + /* which we shorten to */ + /* */ + /* "scale < bluescale" */ + /* */ + blues->no_overshoots = FT_BOOL( scale < blues->blue_scale ); + + /* */ + /* The blue threshold is the font units distance under */ + /* which overshoots are suppressed due to the BlueShift */ + /* even if the scale is greater than BlueScale. */ + /* */ + /* It is the smallest distance such that */ + /* */ + /* dist <= BlueShift && dist*scale <= 0.5 pixels */ + /* */ + { + FT_Int threshold = blues->blue_shift; + + + while ( threshold > 0 && FT_MulFix( threshold, scale ) > 32 ) + threshold --; + + blues->blue_threshold = threshold; + } + + for ( num = 0; num < 4; num++ ) + { + PSH_Blue_Zone zone; + + + switch ( num ) + { + case 0: + table = &blues->normal_top; + break; + case 1: + table = &blues->normal_bottom; + break; + case 2: + table = &blues->family_top; + break; + default: + table = &blues->family_bottom; + break; + } + + zone = table->zones; + count = table->count; + for ( ; count > 0; count--, zone++ ) + { + zone->cur_top = FT_MulFix( zone->org_top, scale ) + delta; + zone->cur_bottom = FT_MulFix( zone->org_bottom, scale ) + delta; + zone->cur_ref = FT_MulFix( zone->org_ref, scale ) + delta; + zone->cur_delta = FT_MulFix( zone->org_delta, scale ); + + /* round scaled reference position */ + zone->cur_ref = ( zone->cur_ref + 32 ) & -64; + +#if 0 + if ( zone->cur_ref > zone->cur_top ) + zone->cur_ref -= 64; + else if ( zone->cur_ref < zone->cur_bottom ) + zone->cur_ref += 64; +#endif + } + } + + /* process the families now */ + + for ( num = 0; num < 2; num++ ) + { + PSH_Blue_Zone zone1, zone2; + FT_UInt count1, count2; + PSH_Blue_Table normal, family; + + + switch ( num ) + { + case 0: + normal = &blues->normal_top; + family = &blues->family_top; + break; + + default: + normal = &blues->normal_bottom; + family = &blues->family_bottom; + } + + zone1 = normal->zones; + count1 = normal->count; + + for ( ; count1 > 0; count1--, zone1++ ) + { + /* try to find a family zone whose reference position is less */ + /* than 1 pixel far from the current zone */ + zone2 = family->zones; + count2 = family->count; + + for ( ; count2 > 0; count2--, zone2++ ) + { + if ( FT_MulFix( zone1->org_ref - zone2->org_ref, scale ) < 64 ) + { + zone1->cur_top = zone2->cur_top; + zone1->cur_bottom = zone2->cur_bottom; + zone1->cur_ref = zone2->cur_ref; + zone1->cur_delta = zone2->cur_delta; + break; + } + } + } + } + } + + + FT_LOCAL_DEF void + psh_blues_snap_stem( PSH_Blues blues, + FT_Int stem_top, + FT_Int stem_bot, + PSH_Alignment alignment ) + { + PSH_Blue_Table table; + FT_UInt count; + FT_Pos delta; + PSH_Blue_Zone zone; + FT_Int no_shoots; + + + alignment->align = 0; + + no_shoots = blues->no_overshoots; + + /* lookup stem top in top zones table */ + table = &blues->normal_top; + count = table->count; + zone = table->zones; + + for ( ; count > 0; count--, zone++ ) + { + delta = stem_top - zone->org_bottom; + if ( delta < 0 ) + break; + + if ( stem_top <= zone->org_top ) + { + if ( no_shoots || delta <= blues->blue_threshold ) + { + alignment->align |= PSH_BLUE_ALIGN_TOP; + alignment->align_top = zone->cur_ref; + } + break; + } + } + + /* look up stem bottom in bottom zones table */ + table = &blues->normal_bottom; + count = table->count; + zone = table->zones + count-1; + + for ( ; count > 0; count--, zone-- ) + { + delta = zone->org_top - stem_bot; + if ( delta < 0 ) + break; + + if ( stem_bot >= zone->org_bottom ) + { + if ( no_shoots || delta < blues->blue_shift ) + { + alignment->align |= PSH_BLUE_ALIGN_BOT; + alignment->align_bot = zone->cur_ref; + } + break; + } + } + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** GLOBAL HINTS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + static void + psh_globals_destroy( PSH_Globals globals ) + { + if ( globals ) + { + FT_Memory memory; + + + memory = globals->memory; + globals->dimension[0].std.count = 0; + globals->dimension[1].std.count = 0; + + globals->blues.normal_top.count = 0; + globals->blues.normal_bottom.count = 0; + globals->blues.family_top.count = 0; + globals->blues.family_bottom.count = 0; + + FREE( globals ); + +#ifdef DEBUG_HINTER + ps_debug_globals = 0; +#endif + } + } + + + static FT_Error + psh_globals_new( FT_Memory memory, + T1_Private* priv, + PSH_Globals *aglobals ) + { + PSH_Globals globals; + FT_Error error; + + + if ( !ALLOC( globals, sizeof ( *globals ) ) ) + { + FT_UInt count; + FT_Short* read; + + + globals->memory = memory; + + /* copy standard widths */ + { + PSH_Dimension dim = &globals->dimension[1]; + PSH_Width write = dim->std.widths; + + + write->org = priv->standard_width[1]; + write++; + + read = priv->snap_widths; + for ( count = priv->num_snap_widths; count > 0; count-- ) + { + write->org = *read; + write++; + read++; + } + + dim->std.count = write - dim->std.widths; + } + + /* copy standard heights */ + { + PSH_Dimension dim = &globals->dimension[0]; + PSH_Width write = dim->std.widths; + + + write->org = priv->standard_height[1]; + write++; + + read = priv->snap_heights; + for ( count = priv->num_snap_heights; count > 0; count-- ) + { + write->org = *read; + write++; + read++; + } + + dim->std.count = write - dim->std.widths; + } + + /* copy blue zones */ + psh_blues_set_zones( &globals->blues, priv->num_blue_values, + priv->blue_values, priv->num_other_blues, + priv->other_blues, priv->blue_fuzz, 0 ); + + psh_blues_set_zones( &globals->blues, priv->num_family_blues, + priv->family_blues, priv->num_family_other_blues, + priv->family_other_blues, priv->blue_fuzz, 1 ); + + globals->blues.blue_scale = priv->blue_scale + ? priv->blue_scale + : 0x28937L; /* 0.039625 * 0x400000L */ + + globals->blues.blue_shift = priv->blue_shift + ? priv->blue_shift + : 7; + + globals->dimension[0].scale_mult = 0; + globals->dimension[0].scale_delta = 0; + globals->dimension[1].scale_mult = 0; + globals->dimension[1].scale_delta = 0; + +#ifdef DEBUG_HINTER + ps_debug_globals = globals; +#endif + } + + *aglobals = globals; + return error; + } + + + static FT_Error + psh_globals_set_scale( PSH_Globals globals, + FT_Fixed x_scale, + FT_Fixed y_scale, + FT_Fixed x_delta, + FT_Fixed y_delta ) + { + PSH_Dimension dim = &globals->dimension[0]; + + + dim = &globals->dimension[0]; + if ( x_scale != dim->scale_mult || + x_delta != dim->scale_delta ) + { + dim->scale_mult = x_scale; + dim->scale_delta = x_delta; + + psh_globals_scale_widths( globals, 0 ); + } + + dim = &globals->dimension[1]; + if ( y_scale != dim->scale_mult || + y_delta != dim->scale_delta ) + { + dim->scale_mult = y_scale; + dim->scale_delta = y_delta; + + psh_globals_scale_widths( globals, 1 ); + psh_blues_scale_zones( &globals->blues, y_scale, y_delta ); + } + + return 0; + } + + + FT_LOCAL_DEF void + psh_globals_funcs_init( PSH_Globals_FuncsRec* funcs ) + { + funcs->create = psh_globals_new; + funcs->set_scale = psh_globals_set_scale; + funcs->destroy = psh_globals_destroy; + } + + +/* END */ Index: xc/extras/freetype2/src/pshinter/pshglob.h diff -u /dev/null xc/extras/freetype2/src/pshinter/pshglob.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:56 2002 +++ xc/extras/freetype2/src/pshinter/pshglob.h Mon Jan 14 11:52:14 2002 @@ -0,0 +1,190 @@ +/***************************************************************************/ +/* */ +/* pshglob.h */ +/* */ +/* PostScript hinter global hinting management. */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSHGLOB_H__ +#define __PSHGLOB_H__ + + +#include FT_FREETYPE_H +#include FT_INTERNAL_POSTSCRIPT_GLOBALS_H +#include FT_INTERNAL_POSTSCRIPT_HINTS_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** GLOBAL HINTS INTERNALS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* @constant: */ + /* PS_GLOBALS_MAX_BLUE_ZONES */ + /* */ + /* @description: */ + /* The maximum number of blue zones in a font global hints structure. */ + /* See @PS_Globals_BluesRec. */ + /* */ +#define PS_GLOBALS_MAX_BLUE_ZONES 16 + + + /*************************************************************************/ + /* */ + /* @constant: */ + /* PS_GLOBALS_MAX_STD_WIDTHS */ + /* */ + /* @description: */ + /* The maximum number of standard and snap widths in either the */ + /* horizontal or vertical direction. See @PS_Globals_WidthsRec. */ + /* */ +#define PS_GLOBALS_MAX_STD_WIDTHS 16 + + + /* standard and snap width */ + typedef struct PSH_WidthRec_ + { + FT_Int org; + FT_Pos cur; + FT_Pos fit; + + } PSH_WidthRec, *PSH_Width; + + + /* standard and snap widths table */ + typedef struct PSH_WidthsRec_ + { + FT_UInt count; + PSH_WidthRec widths[PS_GLOBALS_MAX_STD_WIDTHS]; + + } PSH_WidthsRec, *PSH_Widths; + + + typedef struct PSH_DimensionRec_ + { + PSH_WidthsRec std; + FT_Fixed scale_mult; + FT_Fixed scale_delta; + + } PSH_DimensionRec, *PSH_Dimension; + + + /* blue zone descriptor */ + typedef struct PSH_Blue_ZoneRec_ + { + FT_Int org_ref; + FT_Int org_delta; + FT_Int org_top; + FT_Int org_bottom; + + FT_Pos cur_ref; + FT_Pos cur_delta; + FT_Pos cur_bottom; + FT_Pos cur_top; + + } PSH_Blue_ZoneRec, *PSH_Blue_Zone; + + + typedef struct PSH_Blue_TableRec_ + { + FT_UInt count; + PSH_Blue_ZoneRec zones[PS_GLOBALS_MAX_BLUE_ZONES]; + + } PSH_Blue_TableRec, *PSH_Blue_Table; + + + /* blue zones table */ + typedef struct PSH_BluesRec_ + { + PSH_Blue_TableRec normal_top; + PSH_Blue_TableRec normal_bottom; + PSH_Blue_TableRec family_top; + PSH_Blue_TableRec family_bottom; + + FT_Fixed blue_scale; + FT_Int blue_shift; + FT_Int blue_threshold; + FT_Bool no_overshoots; + + } PSH_BluesRec, *PSH_Blues; + + + /* font globals. */ + /* dimension 0 => X coordinates + vertical hints/stems */ + /* dimension 1 => Y coordinates + horizontal hints/stems */ + typedef struct PSH_GlobalsRec_ + { + FT_Memory memory; + PSH_DimensionRec dimension[2]; + PSH_BluesRec blues; + + } PSH_GlobalsRec; + + + typedef enum + { + PSH_BLUE_ALIGN_TOP = 1, + PSH_BLUE_ALIGN_BOT = 2 + + } PSH_Blue_Align; + + + typedef struct PSH_AlignmentRec_ + { + PSH_Blue_Align align; + FT_Pos align_top; + FT_Pos align_bot; + + } PSH_AlignmentRec, *PSH_Alignment; + + + FT_LOCAL void + psh_globals_funcs_init( PSH_Globals_FuncsRec* funcs ); + + + /* snap a stem width to fitter coordinates. `org_width' is in font */ + /* units. The result is in device pixels (26.6 format). */ + FT_LOCAL FT_Pos + psh_dimension_snap_width( PSH_Dimension dimension, + FT_Int org_width ); + + /* snap a stem to one or two blue zones */ + FT_LOCAL void + psh_blues_snap_stem( PSH_Blues blues, + FT_Int stem_top, + FT_Int stem_bot, + PSH_Alignment alignment ); + /* */ + +#ifdef DEBUG_HINTER + extern PSH_Globals ps_debug_globals; +#endif + + +FT_END_HEADER + + +#endif /* __PSHGLOB_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/pshinter/pshinter.c diff -u /dev/null xc/extras/freetype2/src/pshinter/pshinter.c:1.1.1.1 --- /dev/null Fri Jan 18 15:21:56 2002 +++ xc/extras/freetype2/src/pshinter/pshinter.c Mon Jan 14 11:52:14 2002 @@ -0,0 +1,29 @@ +/***************************************************************************/ +/* */ +/* pshinter.c */ +/* */ +/* FreeType PostScript Hinting module */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#define FT_MAKE_OPTION_SINGLE_OBJECT + +#include <ft2build.h> +#include "pshrec.c" +#include "pshglob.c" +#include "pshalgo1.c" +#include "pshalgo2.c" +#include "pshmod.c" + + +/* END */ Index: xc/extras/freetype2/src/pshinter/pshmod.c diff -u /dev/null xc/extras/freetype2/src/pshinter/pshmod.c:1.1.1.1 --- /dev/null Fri Jan 18 15:21:56 2002 +++ xc/extras/freetype2/src/pshinter/pshmod.c Mon Jan 14 11:52:14 2002 @@ -0,0 +1,120 @@ +/***************************************************************************/ +/* */ +/* pshmod.c */ +/* */ +/* FreeType PostScript hinter module implementation (body). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#include <ft2build.h> +#include FT_INTERNAL_OBJECTS_H +#include "pshrec.h" +#include "pshalgo.h" + + + /* the Postscript Hinter module structure */ + typedef struct PS_Hinter_Module_Rec_ + { + FT_ModuleRec root; + PS_HintsRec ps_hints; + + PSH_Globals_FuncsRec globals_funcs; + T1_Hints_FuncsRec t1_funcs; + T2_Hints_FuncsRec t2_funcs; + + } PS_Hinter_ModuleRec, *PS_Hinter_Module; + + + /* finalize module */ + FT_CALLBACK_DEF( void ) + ps_hinter_done( PS_Hinter_Module module ) + { + module->t1_funcs.hints = NULL; + module->t2_funcs.hints = NULL; + + ps_hints_done( &module->ps_hints ); + } + + + /* initialize module, create hints recorder and the interface */ + FT_CALLBACK_DEF( FT_Error ) + ps_hinter_init( PS_Hinter_Module module ) + { + FT_Memory memory = module->root.memory; + + + ps_hints_init( &module->ps_hints, memory ); + + psh_globals_funcs_init( &module->globals_funcs ); + + t1_hints_funcs_init( &module->t1_funcs ); + module->t1_funcs.hints = (T1_Hints)&module->ps_hints; + + t2_hints_funcs_init( &module->t2_funcs ); + module->t2_funcs.hints = (T2_Hints)&module->ps_hints; + + return 0; + } + + + /* returns global hints interface */ + FT_CALLBACK_DEF( PSH_Globals_Funcs ) + pshinter_get_globals_funcs( FT_Module module ) + { + return &((PS_Hinter_Module)module)->globals_funcs; + } + + + /* return Type 1 hints interface */ + FT_CALLBACK_DEF( T1_Hints_Funcs ) + pshinter_get_t1_funcs( FT_Module module ) + { + return &((PS_Hinter_Module)module)->t1_funcs; + } + + + /* return Type 2 hints interface */ + FT_CALLBACK_DEF( T2_Hints_Funcs ) + pshinter_get_t2_funcs( FT_Module module ) + { + return &((PS_Hinter_Module)module)->t2_funcs; + } + + + FT_CALLBACK_DEF( PSHinter_Interface ) + pshinter_interface = + { + pshinter_get_globals_funcs, + pshinter_get_t1_funcs, + pshinter_get_t2_funcs + }; + + + FT_CALLBACK_TABLE_DEF + const FT_Module_Class pshinter_module_class = + { + 0, + sizeof ( PS_Hinter_ModuleRec ), + "pshinter", + 0x10000L, + 0x20000L, + + &pshinter_interface, /* module-specific interface */ + + (FT_Module_Constructor)ps_hinter_init, + (FT_Module_Destructor) ps_hinter_done, + (FT_Module_Requester) 0 /* no additional interface for now */ + }; + + +/* END */ Index: xc/extras/freetype2/src/pshinter/pshmod.h diff -u /dev/null xc/extras/freetype2/src/pshinter/pshmod.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:56 2002 +++ xc/extras/freetype2/src/pshinter/pshmod.h Mon Jan 14 11:52:14 2002 @@ -0,0 +1,39 @@ +/***************************************************************************/ +/* */ +/* pshmod.h */ +/* */ +/* PostScript hinter module interface (specification). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSHMOD_H__ +#define __PSHMOD_H__ + + +#include <ft2build.h> +#include FT_MODULE_H + + +FT_BEGIN_HEADER + + + FT_EXPORT_VAR( const FT_Module_Class ) pshinter_module_class; + + +FT_END_HEADER + + +#endif /* __PSHMOD_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/pshinter/pshrec.c diff -u /dev/null xc/extras/freetype2/src/pshinter/pshrec.c:1.1.1.1 --- /dev/null Fri Jan 18 15:21:56 2002 +++ xc/extras/freetype2/src/pshinter/pshrec.c Mon Jan 14 11:52:15 2002 @@ -0,0 +1,1211 @@ +/***************************************************************************/ +/* */ +/* pshrec.c */ +/* */ +/* FreeType PostScript hints recorder (body). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_INTERNAL_OBJECTS_H +#include FT_INTERNAL_DEBUG_H +#include "pshrec.h" +#include "pshalgo.h" + +#undef FT_COMPONENT +#define FT_COMPONENT trace_pshrec + +#ifdef DEBUG_HINTER + extern PS_Hints ps_debug_hints = 0; + extern int ps_debug_no_horz_hints = 0; + extern int ps_debug_no_vert_hints = 0; +#endif + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PS_HINT MANAGEMENT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /* destroy hints table */ + static void + ps_hint_table_done( PS_Hint_Table table, + FT_Memory memory ) + { + FREE( table->hints ); + table->num_hints = 0; + table->max_hints = 0; + } + + + /* ensure that a table can contain "count" elements */ + static FT_Error + ps_hint_table_ensure( PS_Hint_Table table, + FT_UInt count, + FT_Memory memory ) + { + FT_UInt old_max = table->max_hints; + FT_UInt new_max = count; + FT_Error error = 0; + + + if ( new_max > old_max ) + { + /* try to grow the table */ + new_max = ( new_max + 7 ) & -8; + if ( !REALLOC_ARRAY( table->hints, old_max, new_max, PS_HintRec ) ) + table->max_hints = new_max; + } + return error; + } + + + static FT_Error + ps_hint_table_alloc( PS_Hint_Table table, + FT_Memory memory, + PS_Hint *ahint ) + { + FT_Error error = 0; + FT_UInt count; + PS_Hint hint = 0; + + + count = table->num_hints; + count++; + + if ( count >= table->max_hints ) + { + error = ps_hint_table_ensure( table, count, memory ); + if ( error ) + goto Exit; + } + + hint = table->hints + count - 1; + hint->pos = 0; + hint->len = 0; + hint->flags = 0; + + table->num_hints = count; + + Exit: + *ahint = hint; + return error; + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PS_MASK MANAGEMENT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /* destroy mask */ + static void + ps_mask_done( PS_Mask mask, + FT_Memory memory ) + { + FREE( mask->bytes ); + mask->num_bits = 0; + mask->max_bits = 0; + mask->end_point = 0; + } + + + /* ensure that a mask can contain "count" bits */ + static FT_Error + ps_mask_ensure( PS_Mask mask, + FT_UInt count, + FT_Memory memory ) + { + FT_UInt old_max = ( mask->max_bits + 7 ) >> 3; + FT_UInt new_max = ( count + 7 ) >> 3; + FT_Error error = 0; + + + if ( new_max > old_max ) + { + new_max = ( new_max + 7 ) & -8; + if ( !REALLOC_ARRAY( mask->bytes, old_max, new_max, FT_Byte ) ) + mask->max_bits = new_max * 8; + } + return error; + } + + + /* test a bit value in a given mask */ + static FT_Int + ps_mask_test_bit( PS_Mask mask, + FT_Int index ) + { + if ( (FT_UInt)index >= mask->num_bits ) + return 0; + + return mask->bytes[index >> 3] & ( 0x80 >> ( index & 7 ) ); + } + + + /* clear a given bit */ + static void + ps_mask_clear_bit( PS_Mask mask, + FT_Int index ) + { + FT_Byte* p; + + + if ( (FT_UInt)index >= mask->num_bits ) + return; + + p = mask->bytes + ( index >> 3 ); + p[0] = (FT_Byte)( p[0] & ~( 0x80 >> ( index & 7 ) ) ); + } + + + /* set a given bit, possibly grow the mask */ + static FT_Error + ps_mask_set_bit( PS_Mask mask, + FT_Int index, + FT_Memory memory ) + { + FT_Error error = 0; + FT_Byte* p; + + + if ( index < 0 ) + goto Exit; + + if ( (FT_UInt)index >= mask->num_bits ) + { + error = ps_mask_ensure( mask, index + 1, memory ); + if ( error ) + goto Exit; + + mask->num_bits = index + 1; + } + + p = mask->bytes + ( index >> 3 ); + p[0] = (FT_Byte)( p[0] | ( 0x80 >> ( index & 7 ) ) ); + + Exit: + return error; + } + + + /* destroy mask table */ + static void + ps_mask_table_done( PS_Mask_Table table, + FT_Memory memory ) + { + FT_UInt count = table->max_masks; + PS_Mask mask = table->masks; + + + for ( ; count > 0; count--, mask++ ) + ps_mask_done( mask, memory ); + + FREE( table->masks ); + table->num_masks = 0; + table->max_masks = 0; + } + + + /* ensure that a mask table can contain "count" masks */ + static FT_Error + ps_mask_table_ensure( PS_Mask_Table table, + FT_UInt count, + FT_Memory memory ) + { + FT_UInt old_max = table->max_masks; + FT_UInt new_max = count; + FT_Error error = 0; + + + if ( new_max > old_max ) + { + new_max = ( new_max + 7 ) & -8; + if ( !REALLOC_ARRAY( table->masks, old_max, new_max, PS_MaskRec ) ) + table->max_masks = new_max; + } + return error; + } + + + /* allocate a new mask in a table */ + static FT_Error + ps_mask_table_alloc( PS_Mask_Table table, + FT_Memory memory, + PS_Mask *amask ) + { + FT_UInt count; + FT_Error error = 0; + PS_Mask mask = 0; + + + count = table->num_masks; + count++; + + if ( count > table->max_masks ) + { + error = ps_mask_table_ensure( table, count, memory ); + if ( error ) + goto Exit; + } + + mask = table->masks + count - 1; + mask->num_bits = 0; + mask->end_point = 0; + table->num_masks = count; + + Exit: + *amask = mask; + return error; + } + + + /* return last hint mask in a table, create one if the table is empty */ + static FT_Error + ps_mask_table_last( PS_Mask_Table table, + FT_Memory memory, + PS_Mask *amask ) + { + FT_Error error = 0; + FT_UInt count; + PS_Mask mask; + + + count = table->num_masks; + if ( count == 0 ) + { + error = ps_mask_table_alloc( table, memory, &mask ); + if ( error ) + goto Exit; + } + else + mask = table->masks + count - 1; + + Exit: + *amask = mask; + return error; + } + + + /* set a new mask to a given bit range */ + static FT_Error + ps_mask_table_set_bits( PS_Mask_Table table, + FT_Byte* source, + FT_UInt bit_pos, + FT_UInt bit_count, + FT_Memory memory ) + { + FT_Error error = 0; + PS_Mask mask; + + + /* allocate new mask, and grow it to "bit_count" bits */ + error = ps_mask_table_alloc( table, memory, &mask ); + if ( error ) + goto Exit; + + error = ps_mask_ensure( mask, bit_count, memory ); + if ( error ) + goto Exit; + + mask->num_bits = bit_count; + + /* now, copy bits */ + { + FT_Byte* read = source + ( bit_pos >> 3 ); + FT_Int rmask = 0x80 >> ( bit_pos & 7 ); + FT_Byte* write = mask->bytes; + FT_Int wmask = 0x80; + FT_Int val; + + + for ( ; bit_count > 0; bit_count-- ) + { + val = write[0] & ~wmask; + + if ( read[0] & rmask ) + val |= wmask; + + write[0] = (FT_Byte)val; + + rmask >>= 1; + if ( rmask == 0 ) + { + read++; + rmask = 0x80; + } + + wmask >>= 1; + if ( wmask == 0 ) + { + write++; + wmask = 0x80; + } + } + } + + Exit: + return error; + } + + + /* test whether two masks in a table intersect */ + static FT_Int + ps_mask_table_test_intersect( PS_Mask_Table table, + FT_Int index1, + FT_Int index2 ) + { + PS_Mask mask1 = table->masks + index1; + PS_Mask mask2 = table->masks + index2; + FT_Byte* p1 = mask1->bytes; + FT_Byte* p2 = mask2->bytes; + FT_UInt count1 = mask1->num_bits; + FT_UInt count2 = mask2->num_bits; + FT_UInt count; + + + count = ( count1 <= count2 ) ? count1 : count2; + for ( ; count >= 8; count -= 8 ) + { + if ( p1[0] & p2[0] ) + return 1; + + p1++; + p2++; + } + + if ( count == 0 ) + return 0; + + return ( p1[0] & p2[0] ) & ~( 0xFF >> count ); + } + + + /* merge two masks, used by ps_mask_table_merge_all */ + static FT_Error + ps_mask_table_merge( PS_Mask_Table table, + FT_Int index1, + FT_Int index2, + FT_Memory memory ) + { + FT_UInt temp; + FT_Error error = 0; + + + /* swap index1 and index2 so that index1 < index2 */ + if ( index1 > index2 ) + { + temp = index1; + index1 = index2; + index2 = index1; + } + + if ( index1 < index2 && index1 >= 0 && index2 < (FT_Int)table->num_masks ) + { + /* we need to merge the bitsets of index1 and index2 with a */ + /* simple union */ + PS_Mask mask1 = table->masks + index1; + PS_Mask mask2 = table->masks + index2; + FT_UInt count1 = mask1->num_bits; + FT_UInt count2 = mask2->num_bits; + FT_Int delta; + + + if ( count2 > 0 ) + { + FT_UInt pos; + FT_Byte* read; + FT_Byte* write; + + + /* if "count2" is greater than "count1", we need to grow the */ + /* first bitset, and clear the highest bits */ + if ( count2 > count1 ) + { + error = ps_mask_ensure( mask1, count2, memory ); + if ( error ) + goto Exit; + + for ( pos = count1; pos < count2; pos++ ) + ps_mask_clear_bit( mask1, pos ); + } + + /* merge (unite) the bitsets */ + read = mask2->bytes; + write = mask1->bytes; + pos = (FT_UInt)( ( count2 + 7 ) >> 3 ); + + for ( ; pos > 0; pos-- ) + { + write[0] = (FT_Byte)( write[0] | read[0] ); + write++; + read++; + } + } + + /* Now, remove "mask2" from the list. We need to keep the masks */ + /* sorted in order of importance, so move table elements. */ + mask2->num_bits = 0; + mask2->end_point = 0; + + delta = table->num_masks - 1 - index2; /* number of masks to move */ + if ( delta > 0 ) + { + /* move to end of table for reuse */ + PS_MaskRec dummy = *mask2; + + + memmove( mask2, mask2 + 1, delta * sizeof ( PS_MaskRec ) ); + + mask2[delta] = dummy; + } + + table->num_masks--; + } + else + FT_ERROR(( "ps_mask_table_merge: ignoring invalid indices (%d,%d)\n", + index1, index2 )); + + Exit: + return error; + } + + + /* Try to merge all masks in a given table. This is used to merge */ + /* all counter masks into independent counter "paths". */ + /* */ + static FT_Error + ps_mask_table_merge_all( PS_Mask_Table table, + FT_Memory memory ) + { + FT_Int index1, index2; + FT_Error error = 0; + + + for ( index1 = table->num_masks - 1; index1 > 0; index1-- ) + { + for ( index2 = index1 - 1; index2 >= 0; index2-- ) + { + if ( ps_mask_table_test_intersect( table, index1, index2 ) ) + { + error = ps_mask_table_merge( table, index2, index1, memory ); + if ( error ) + goto Exit; + + break; + } + } + } + + Exit: + return error; + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PS_DIMENSION MANAGEMENT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + /* finalize a given dimension */ + static void + ps_dimension_done( PS_Dimension dimension, + FT_Memory memory ) + { + ps_mask_table_done( &dimension->counters, memory ); + ps_mask_table_done( &dimension->masks, memory ); + ps_hint_table_done( &dimension->hints, memory ); + } + + + /* initialize a given dimension */ + static void + ps_dimension_init( PS_Dimension dimension ) + { + dimension->hints.num_hints = 0; + dimension->masks.num_masks = 0; + dimension->counters.num_masks = 0; + } + + +#if 0 + + /* set a bit at a given index in the current hint mask */ + static FT_Error + ps_dimension_set_mask_bit( PS_Dimension dim, + FT_UInt index, + FT_Memory memory ) + { + PS_Mask mask; + FT_Error error = 0; + + + /* get last hint mask */ + error = ps_mask_table_last( &dim->masks, memory, &mask ); + if ( error ) + goto Exit; + + error = ps_mask_set_bit( mask, index, memory ); + + Exit: + return error; + } + +#endif + + /* set the end point in a mask, called from "End" & "Reset" methods */ + static void + ps_dimension_end_mask( PS_Dimension dim, + FT_UInt end_point ) + { + FT_UInt count = dim->masks.num_masks; + PS_Mask mask; + + + if ( count > 0 ) + { + mask = dim->masks.masks + count - 1; + mask->end_point = end_point; + } + } + + + /* set the end point in the current mask, then create a new empty one */ + /* (called by "Reset" method) */ + static FT_Error + ps_dimension_reset_mask( PS_Dimension dim, + FT_UInt end_point, + FT_Memory memory ) + { + PS_Mask mask; + + + /* end current mask */ + ps_dimension_end_mask( dim, end_point ); + + /* allocate new one */ + return ps_mask_table_alloc( &dim->masks, memory, &mask ); + } + + + /* set a new mask, called from the "T2Stem" method */ + static FT_Error + ps_dimension_set_mask_bits( PS_Dimension dim, + const FT_Byte* source, + FT_UInt source_pos, + FT_UInt source_bits, + FT_UInt end_point, + FT_Memory memory ) + { + FT_Error error = 0; + + + /* reset current mask, if any */ + error = ps_dimension_reset_mask( dim, end_point, memory ); + if ( error ) + goto Exit; + + /* set bits in new mask */ + error = ps_mask_table_set_bits( &dim->masks, (FT_Byte*)source, + source_pos, source_bits, memory ); + + Exit: + return error; + } + + + /* add a new single stem (called from "T1Stem" method) */ + static FT_Error + ps_dimension_add_t1stem( PS_Dimension dim, + FT_Int pos, + FT_Int len, + FT_Memory memory, + FT_Int *aindex ) + { + FT_Error error = 0; + FT_UInt flags = 0; + + + /* detect ghost stem */ + if ( len < 0 ) + { + flags |= PS_HINT_FLAG_GHOST; + if ( len == -21 ) + { + flags |= PS_HINT_FLAG_BOTTOM; + pos += len; + } + len = 0; + } + + if ( aindex ) + *aindex = -1; + + /* now, lookup stem in the current hints table */ + { + PS_Mask mask; + FT_UInt index; + FT_UInt max = dim->hints.num_hints; + PS_Hint hint = dim->hints.hints; + + + for ( index = 0; index < max; index++, hint++ ) + { + if ( hint->pos == pos && hint->len == len ) + break; + } + + /* we need to create a new hint in the table */ + if ( index >= max ) + { + error = ps_hint_table_alloc( &dim->hints, memory, &hint ); + if ( error ) + goto Exit; + + hint->pos = pos; + hint->len = len; + hint->flags = flags; + } + + /* now, store the hint in the current mask */ + error = ps_mask_table_last( &dim->masks, memory, &mask ); + if ( error ) + goto Exit; + + error = ps_mask_set_bit( mask, index, memory ); + if ( error ) + goto Exit; + + if ( aindex ) + *aindex = (FT_Int)index; + } + + Exit: + return error; + } + + + /* add a "hstem3/vstem3" counter to our dimension table */ + static FT_Error + ps_dimension_add_counter( PS_Dimension dim, + FT_Int hint1, + FT_Int hint2, + FT_Int hint3, + FT_Memory memory ) + { + FT_Error error = 0; + FT_UInt count = dim->counters.num_masks; + PS_Mask counter = dim->counters.masks; + + + /* try to find an existing counter mask that already uses */ + /* one of these stems here */ + for ( ; count > 0; count--, counter++ ) + { + if ( ps_mask_test_bit( counter, hint1 ) || + ps_mask_test_bit( counter, hint2 ) || + ps_mask_test_bit( counter, hint3 ) ) + break; + } + + /* creat a new counter when needed */ + if ( count == 0 ) + { + error = ps_mask_table_alloc( &dim->counters, memory, &counter ); + if ( error ) + goto Exit; + } + + /* now, set the bits for our hints in the counter mask */ + error = ps_mask_set_bit( counter, hint1, memory ); + if ( error ) + goto Exit; + + error = ps_mask_set_bit( counter, hint2, memory ); + if ( error ) + goto Exit; + + error = ps_mask_set_bit( counter, hint3, memory ); + if ( error ) + goto Exit; + + Exit: + return error; + } + + + /* end of recording session for a given dimension */ + static FT_Error + ps_dimension_end( PS_Dimension dim, + FT_UInt end_point, + FT_Memory memory ) + { + /* end hint mask table */ + ps_dimension_end_mask( dim, end_point ); + + /* merge all counter masks into independent "paths" */ + return ps_mask_table_merge_all( &dim->counters, memory ); + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PS_RECORDER MANAGEMENT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + /* destroy hints */ + FT_LOCAL void + ps_hints_done( PS_Hints hints ) + { + FT_Memory memory = hints->memory; + + + ps_dimension_done( &hints->dimension[0], memory ); + ps_dimension_done( &hints->dimension[1], memory ); + + hints->error = 0; + hints->memory = 0; + } + + + FT_LOCAL FT_Error + ps_hints_init( PS_Hints hints, + FT_Memory memory ) + { + memset( hints, 0, sizeof ( *hints ) ); + hints->memory = memory; + return 0; + } + + + /* initialize a hints for a new session */ + static void + ps_hints_open( PS_Hints hints, + PS_Hint_Type hint_type ) + { + switch ( hint_type ) + { + case PS_HINT_TYPE_1: + case PS_HINT_TYPE_2: + hints->error = 0; + hints->hint_type = hint_type; + + ps_dimension_init( &hints->dimension[0] ); + ps_dimension_init( &hints->dimension[1] ); + break; + + default: + hints->error = FT_Err_Invalid_Argument; + hints->hint_type = hint_type; + + FT_ERROR(( "ps_hints_open: invalid charstring type!\n" )); + break; + } + } + + + /* add one or more stems to the current hints table */ + static void + ps_hints_stem( PS_Hints hints, + FT_Int dimension, + FT_UInt count, + FT_Long* stems ) + { + if ( !hints->error ) + { + /* limit "dimension" to 0..1 */ + if ( dimension < 0 || dimension > 1 ) + { + FT_ERROR(( "ps_hints_stem: invalid dimension (%d) used\n", + dimension )); + dimension = ( dimension != 0 ); + } + + /* record the stems in the current hints/masks table */ + switch ( hints->hint_type ) + { + case PS_HINT_TYPE_1: /* Type 1 "hstem" or "vstem" operator */ + case PS_HINT_TYPE_2: /* Type 2 "hstem" or "vstem" operator */ + { + PS_Dimension dim = &hints->dimension[dimension]; + + + for ( ; count > 0; count--, stems += 2 ) + { + FT_Error error; + FT_Memory memory = hints->memory; + + + error = ps_dimension_add_t1stem( dim, stems[0], stems[1], + memory, NULL ); + if ( error ) + { + FT_ERROR(( "ps_hints_stem: could not add stem" + " (%d,%d) to hints table\n", stems[0], stems[1] )); + + hints->error = error; + return; + } + } + break; + } + + default: + FT_ERROR(( "ps_hints_stem: called with invalid hint type (%d)\n", + hints->hint_type )); + break; + } + } + } + + + /* add one Type1 counter stem to the current hints table */ + static void + ps_hints_t1stem3( PS_Hints hints, + FT_Int dimension, + FT_Long* stems ) + { + FT_Error error = 0; + + + if ( !hints->error ) + { + PS_Dimension dim; + FT_Memory memory = hints->memory; + FT_Int count; + FT_Int index[3]; + + + /* limit "dimension" to 0..1 */ + if ( dimension < 0 || dimension > 1 ) + { + FT_ERROR(( "ps_hints_t1stem3: invalid dimension (%d) used\n", + dimension )); + dimension = ( dimension != 0 ); + } + + dim = &hints->dimension[dimension]; + + /* there must be 6 elements in the 'stem' array */ + if ( hints->hint_type == PS_HINT_TYPE_1 ) + { + /* add the three stems to our hints/masks table */ + for ( count = 0; count < 3; count++, stems += 2 ) + { + error = ps_dimension_add_t1stem( dim, stems[0], stems[1], + memory, &index[count] ); + if ( error ) + goto Fail; + } + + /* now, add the hints to the counters table */ + error = ps_dimension_add_counter( dim, index[0], index[1], + index[2], memory ); + if ( error ) + goto Fail; + } + else + { + FT_ERROR(( "ps_hints_t1stem3: called with invalid hint type!\n" )); + error = FT_Err_Invalid_Argument; + goto Fail; + } + } + + return; + + Fail: + FT_ERROR(( "ps_hints_t1stem3: could not add counter stems to table\n" )); + hints->error = error; + } + + + /* reset hints (only with Type 1 hints) */ + static void + ps_hints_t1reset( PS_Hints hints, + FT_UInt end_point ) + { + FT_Error error = 0; + + + if ( !hints->error ) + { + FT_Memory memory = hints->memory; + + + if ( hints->hint_type == PS_HINT_TYPE_1 ) + { + error = ps_dimension_reset_mask( &hints->dimension[0], + end_point, memory ); + if ( error ) + goto Fail; + + error = ps_dimension_reset_mask( &hints->dimension[1], + end_point, memory ); + if ( error ) + goto Fail; + } + else + { + /* invalid hint type */ + error = FT_Err_Invalid_Argument; + goto Fail; + } + } + return; + + Fail: + hints->error = error; + } + + + /* Type2 "hintmask" operator, add a new hintmask to each direction */ + static void + ps_hints_t2mask( PS_Hints hints, + FT_UInt end_point, + FT_UInt bit_count, + const FT_Byte* bytes ) + { + FT_Error error; + + + if ( !hints->error ) + { + PS_Dimension dim = hints->dimension; + FT_Memory memory = hints->memory; + FT_UInt count1 = dim[0].hints.num_hints; + FT_UInt count2 = dim[1].hints.num_hints; + + + /* check bit count; must be equal to current total hint count */ + if ( bit_count != count1 + count2 ) + { + FT_ERROR(( "ps_hints_t2mask: " + "called with invalid bitcount %d (instead of %d)\n", + bit_count, count1 + count2 )); + + /* simply ignore the operator */ + return; + } + + /* set-up new horizontal and vertical hint mask now */ + error = ps_dimension_set_mask_bits( &dim[0], bytes, 0, count1, + end_point, memory ); + if ( error ) + goto Fail; + + error = ps_dimension_set_mask_bits( &dim[1], bytes, count1, count2, + end_point, memory ); + if ( error ) + goto Fail; + } + return; + + Fail: + hints->error = error; + } + + + static void + ps_hints_t2counter( PS_Hints hints, + FT_UInt bit_count, + const FT_Byte* bytes ) + { + FT_Error error; + + + if ( !hints->error ) + { + PS_Dimension dim = hints->dimension; + FT_Memory memory = hints->memory; + FT_UInt count1 = dim[0].hints.num_hints; + FT_UInt count2 = dim[1].hints.num_hints; + + + /* check bit count, must be equal to current total hint count */ + if ( bit_count != count1 + count2 ) + { + FT_ERROR(( "ps_hints_t2counter: " + "called with invalid bitcount %d (instead of %d)\n", + bit_count, count1 + count2 )); + + /* simply ignore the operator */ + return; + } + + /* set-up new horizontal and vertical hint mask now */ + error = ps_dimension_set_mask_bits( &dim[0], bytes, 0, count1, + 0, memory ); + if ( error ) + goto Fail; + + error = ps_dimension_set_mask_bits( &dim[1], bytes, count1, count2, + 0, memory ); + if ( error ) + goto Fail; + } + return; + + Fail: + hints->error = error; + } + + + /* end recording session */ + static FT_Error + ps_hints_close( PS_Hints hints, + FT_UInt end_point ) + { + FT_Error error; + + + error = hints->error; + if ( !error ) + { + FT_Memory memory = hints->memory; + PS_Dimension dim = hints->dimension; + + + error = ps_dimension_end( &dim[0], end_point, memory ); + if ( !error ) + { + error = ps_dimension_end( &dim[1], end_point, memory ); + } + } + +#ifdef DEBUG_HINTER + if ( !error ) + ps_debug_hints = hints; +#endif + return error; + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** TYPE 1 HINTS RECORDING INTERFACE *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + static void + t1_hints_open( T1_Hints hints ) + { + ps_hints_open( (PS_Hints)hints, PS_HINT_TYPE_1 ); + } + + static void + t1_hints_stem( T1_Hints hints, + FT_Int dimension, + FT_Long* coords ) + { + ps_hints_stem( (PS_Hints)hints, dimension, 1, coords ); + } + + + FT_LOCAL_DEF void + t1_hints_funcs_init( T1_Hints_FuncsRec* funcs ) + { + memset( (char*)funcs, 0, sizeof ( *funcs ) ); + + funcs->open = (T1_Hints_OpenFunc) t1_hints_open; + funcs->close = (T1_Hints_CloseFunc) ps_hints_close; + funcs->stem = (T1_Hints_SetStemFunc) t1_hints_stem; + funcs->stem3 = (T1_Hints_SetStem3Func)ps_hints_t1stem3; + funcs->reset = (T1_Hints_ResetFunc) ps_hints_t1reset; + funcs->apply = (T1_Hints_ApplyFunc) PS_HINTS_APPLY_FUNC; + } + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** TYPE 2 HINTS RECORDING INTERFACE *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + static void + t2_hints_open( T2_Hints hints ) + { + ps_hints_open( (PS_Hints)hints, PS_HINT_TYPE_2 ); + } + + + static void + t2_hints_stems( T2_Hints hints, + FT_Int dimension, + FT_Int count, + FT_Fixed* coords ) + { + FT_Pos stems[32], y, n, total = count; + + + y = 0; + while ( total > 0 ) + { + /* determine number of stems to write */ + count = total; + if ( count > 16 ) + count = 16; + + /* compute integer stem positions in font units */ + for ( n = 0; n < count * 2; n++ ) + { + y += coords[n]; + stems[n] = ( y + 0x8000 ) >> 16; + } + + /* compute lengths */ + for ( n = 0; n < count * 2; n += 2 ) + stems[n + 1] = stems[n + 1] - stems[n]; + + /* add them to the current dimension */ + ps_hints_stem( (PS_Hints)hints, dimension, count, stems ); + + total -= count; + } + } + + + FT_LOCAL_DEF void + t2_hints_funcs_init( T2_Hints_FuncsRec* funcs ) + { + memset( funcs, 0, sizeof ( *funcs ) ); + + funcs->open = (T2_Hints_OpenFunc) t2_hints_open; + funcs->close = (T2_Hints_CloseFunc) ps_hints_close; + funcs->stems = (T2_Hints_StemsFunc) t2_hints_stems; + funcs->hintmask= (T2_Hints_MaskFunc) ps_hints_t2mask; + funcs->counter = (T2_Hints_CounterFunc)ps_hints_t2counter; + funcs->apply = (T2_Hints_ApplyFunc) PS_HINTS_APPLY_FUNC; + } + + +/* END */ Index: xc/extras/freetype2/src/pshinter/pshrec.h diff -u /dev/null xc/extras/freetype2/src/pshinter/pshrec.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:56 2002 +++ xc/extras/freetype2/src/pshinter/pshrec.h Mon Jan 14 11:52:15 2002 @@ -0,0 +1,180 @@ +/***************************************************************************/ +/* */ +/* pshrec.h */ +/* */ +/* Postscript (Type1/Type2) hints recorder (specification). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /**************************************************************************/ + /* */ + /* The functions defined here are called from the Type 1, CID and CFF */ + /* font drivers to record the hints of a given character/glyph. */ + /* */ + /* The hints are recorded in a unified format, and are later processed */ + /* by the "optimizer" and "fitter" to adjust the outlines to the pixel */ + /* grid. */ + /* */ + /**************************************************************************/ + + +#ifndef __PSHREC_H__ +#define __PSHREC_H__ + + +#include <ft2build.h> +#include FT_INTERNAL_POSTSCRIPT_HINTS_H +#include "pshglob.h" + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** GLYPH HINTS RECORDER INTERNALS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /* handle to hint record */ + typedef struct PS_HintRec_* PS_Hint; + + /* hint types */ + typedef enum + { + PS_HINT_TYPE_1 = 1, + PS_HINT_TYPE_2 = 2 + + } PS_Hint_Type; + + + /* hint flags */ + typedef enum + { + PS_HINT_FLAG_GHOST = 1, + PS_HINT_FLAG_BOTTOM = 2 + + } PS_Hint_Flags; + + + /* hint descriptor */ + typedef struct PS_HintRec_ + { + FT_Int pos; + FT_Int len; + FT_UInt flags; + + } PS_HintRec; + + +#define ps_hint_is_active( x ) ( (x)->flags & PS_HINT_FLAG_ACTIVE ) +#define ps_hint_is_ghost( x ) ( (x)->flags & PS_HINT_FLAG_GHOST ) +#define ps_hint_is_bottom( x ) ( (x)->flags & PS_HINT_FLAG_BOTTOM ) + + + /* hints table descriptor */ + typedef struct PS_Hint_TableRec_ + { + FT_UInt num_hints; + FT_UInt max_hints; + PS_Hint hints; + + } PS_Hint_TableRec, *PS_Hint_Table; + + + /* hint and counter mask descriptor */ + typedef struct PS_MaskRec_ + { + FT_UInt num_bits; + FT_UInt max_bits; + FT_Byte* bytes; + FT_UInt end_point; + + } PS_MaskRec, *PS_Mask; + + + /* masks and counters table descriptor */ + typedef struct PS_Mask_TableRec_ + { + FT_UInt num_masks; + FT_UInt max_masks; + PS_Mask masks; + + } PS_Mask_TableRec, *PS_Mask_Table; + + + /* dimension-specific hints descriptor */ + typedef struct PS_DimensionRec_ + { + PS_Hint_TableRec hints; + PS_Mask_TableRec masks; + PS_Mask_TableRec counters; + + } PS_DimensionRec, *PS_Dimension; + + + /* magic value used within PS_HintsRec */ +#define PS_HINTS_MAGIC 0x68696e74 /* "hint" */ + + + /* glyph hints descriptor */ + /* dimension 0 => X coordinates + vertical hints/stems */ + /* dimension 1 => Y coordinates + horizontal hints/stems */ + typedef struct PS_HintsRec_ + { + FT_Memory memory; + FT_Error error; + FT_UInt32 magic; + PS_Hint_Type hint_type; + PS_DimensionRec dimension[2]; + + } PS_HintsRec, *PS_Hints; + + /* */ + + /* initialize hints recorder */ + FT_LOCAL FT_Error + ps_hints_init( PS_Hints hints, + FT_Memory memory ); + + /* finalize hints recorder */ + FT_LOCAL void + ps_hints_done( PS_Hints hints ); + + /* initialize Type1 hints recorder interface */ + FT_LOCAL void + t1_hints_funcs_init( T1_Hints_FuncsRec* funcs ); + + /* initialize Type2 hints recorder interface */ + FT_LOCAL void + t2_hints_funcs_init( T2_Hints_FuncsRec* funcs ); + + +#ifdef DEBUG_HINTER + extern PS_Hints ps_debug_hints; + extern int ps_debug_no_horz_hints; + extern int ps_debug_no_vert_hints; +#endif + + /* */ + + +FT_END_HEADER + + +#endif /* __PS_HINTER_RECORD_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/pshinter/rules.mk diff -u /dev/null xc/extras/freetype2/src/pshinter/rules.mk:1.1.1.1 --- /dev/null Fri Jan 18 15:21:56 2002 +++ xc/extras/freetype2/src/pshinter/rules.mk Mon Jan 14 11:52:15 2002 @@ -0,0 +1,73 @@ +# +# FreeType 2 PSHinter driver configuration rules +# + + +# Copyright 2001 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# PSHINTER driver directory +# +PSHINTER_DIR := $(SRC_)pshinter +PSHINTER_DIR_ := $(PSHINTER_DIR)$(SEP) + + +# compilation flags for the driver +# +PSHINTER_COMPILE := $(FT_COMPILE) $I$(PSHINTER_DIR) + + +# PSHINTER driver sources (i.e., C files) +# +PSHINTER_DRV_SRC := $(PSHINTER_DIR_)pshrec.c \ + $(PSHINTER_DIR_)pshglob.c \ + $(PSHINTER_DIR_)pshmod.c \ + $(PSHINTER_DIR_)pshalgo1.c \ + $(PSHINTER_DIR_)pshalgo2.c + + +# PSHINTER driver headers +# +PSHINTER_DRV_H := $(PSHINTER_DRV_SRC:%c=%h) + + +# PSHINTER driver object(s) +# +# PSHINTER_DRV_OBJ_M is used during `multi' builds. +# PSHINTER_DRV_OBJ_S is used during `single' builds. +# +PSHINTER_DRV_OBJ_M := $(PSHINTER_DRV_SRC:$(PSHINTER_DIR_)%.c=$(OBJ_)%.$O) +PSHINTER_DRV_OBJ_S := $(OBJ_)pshinter.$O + +# PSHINTER driver source file for single build +# +PSHINTER_DRV_SRC_S := $(PSHINTER_DIR_)pshinter.c + + +# PSHINTER driver - single object +# +$(PSHINTER_DRV_OBJ_S): $(PSHINTER_DRV_SRC_S) $(PSHINTER_DRV_SRC) \ + $(FREETYPE_H) $(PSHINTER_DRV_H) + $(PSHINTER_COMPILE) $T$@ $(PSHINTER_DRV_SRC_S) + + +# PSHINTER driver - multiple objects +# +$(OBJ_)%.$O: $(PSHINTER_DIR_)%.c $(FREETYPE_H) $(PSHINTER_DRV_H) + $(PSHINTER_COMPILE) $T$@ $< + + +# update main driver object lists +# +DRV_OBJS_S += $(PSHINTER_DRV_OBJ_S) +DRV_OBJS_M += $(PSHINTER_DRV_OBJ_M) + + +# EOF Index: xc/extras/freetype2/src/psnames/Jamfile diff -u /dev/null xc/extras/freetype2/src/psnames/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:56 2002 +++ xc/extras/freetype2/src/psnames/Jamfile Sun Sep 9 22:56:05 2001 @@ -0,0 +1,23 @@ +# FreeType 2 src/psnames Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src psnames ; + +SubDirHdrs [ FT2_SubDir src psnames ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = psmodule ; + } + else + { + _sources = psnames ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/psnames Jamfile Index: xc/extras/freetype2/src/psnames/psmodule.c diff -u xc/extras/freetype2/src/psnames/psmodule.c:1.1.1.2 xc/extras/freetype2/src/psnames/psmodule.c:1.1.1.5 --- xc/extras/freetype2/src/psnames/psmodule.c:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/psnames/psmodule.c Mon Jan 14 11:52:15 2002 @@ -4,7 +4,7 @@ /* */ /* PSNames module implementation (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -19,9 +19,12 @@ #include <ft2build.h> #include FT_INTERNAL_POSTSCRIPT_NAMES_H #include FT_INTERNAL_OBJECTS_H + #include "psmodule.h" #include "pstables.h" +#include "psnamerr.h" + #include <stdlib.h> /* for qsort() */ #include <string.h> /* for strcmp(), strncpy() */ @@ -36,8 +39,8 @@ /* we do deal with glyph variants by detecting a non-initial dot in */ /* the name, as in `A.swash' or `e.final', etc. */ /* */ - static - FT_ULong PS_Unicode_Value( const char* glyph_name ) + static FT_ULong + PS_Unicode_Value( const char* glyph_name ) { FT_Int n; char first = glyph_name[0]; @@ -58,13 +61,13 @@ FT_Int count; FT_ULong value = 0; - const char* p = glyph_name + 4; + const char* p = glyph_name + 3; for ( count = 4; count > 0; count--, p++ ) { - char c = *p; - unsigned char d; + char c = *p; + unsigned int d; d = (unsigned char)c - '0'; @@ -82,10 +85,9 @@ break; value = ( value << 4 ) + d; - - if ( count == 0 ) - return value; } + if ( count == 0 ) + return value; } /* look for a non-initial dot in the glyph name in order to */ @@ -113,11 +115,11 @@ /* now, look up the glyph in the Adobe Glyph List */ for ( n = 0; n < NUM_ADOBE_GLYPHS; n++ ) { - const char* name = t1_standard_glyphs[n]; + const char* name = sid_standard_names[n]; if ( first == name[0] && strcmp( glyph_name, name ) == 0 ) - return names_to_unicode[n]; + return ps_names_to_unicode[n]; } /* not found, there is probably no Unicode value for this glyph name */ @@ -126,9 +128,9 @@ /* qsort callback to sort the unicode map */ - FT_CALLBACK_DEF - int compare_uni_maps( const void* a, - const void* b ) + FT_CALLBACK_DEF( int ) + compare_uni_maps( const void* a, + const void* b ) { PS_UniMap* map1 = (PS_UniMap*)a; PS_UniMap* map2 = (PS_UniMap*)b; @@ -139,11 +141,11 @@ /* Builds a table that maps Unicode values to glyph indices */ - static - FT_Error PS_Build_Unicode_Table( FT_Memory memory, - FT_UInt num_glyphs, - const char** glyph_names, - PS_Unicodes* table ) + static FT_Error + PS_Build_Unicode_Table( FT_Memory memory, + FT_UInt num_glyphs, + const char** glyph_names, + PS_Unicodes* table ) { FT_Error error; @@ -171,7 +173,7 @@ { uni_char = PS_Unicode_Value( gname ); - if ( uni_char && uni_char != 0xFFFF ) + if ( uni_char != 0 && uni_char != 0xFFFF ) { map->unicode = uni_char; map->glyph_index = n; @@ -192,7 +194,7 @@ { FREE( table->maps ); if ( !error ) - error = FT_Err_Invalid_Argument; /* no unicode chars here! */ + error = PSnames_Err_Invalid_Argument; /* no unicode chars here! */ } else /* sort the table in increasing order of unicode values */ @@ -205,9 +207,9 @@ } - static - FT_UInt PS_Lookup_Unicode( PS_Unicodes* table, - FT_ULong unicode ) + static FT_UInt + PS_Lookup_Unicode( PS_Unicodes* table, + FT_ULong unicode ) { PS_UniMap *min, *max, *mid; @@ -239,20 +241,20 @@ #endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */ - static - const char* PS_Macintosh_Name( FT_UInt name_index ) + static const char* + PS_Macintosh_Name( FT_UInt name_index ) { if ( name_index >= 258 ) name_index = 0; - return standard_glyph_names[mac_standard_names[name_index]]; + return ps_glyph_names[mac_standard_names[name_index]]; } - static - const char* PS_Standard_Strings( FT_UInt sid ) + static const char* + PS_Standard_Strings( FT_UInt sid ) { - return ( sid < NUM_STD_GLYPHS ? t1_standard_glyphs[sid] : 0 ); + return ( sid < NUM_SID_GLYPHS ? sid_standard_names[sid] : 0 ); } @@ -288,7 +290,7 @@ const FT_Module_Class psnames_module_class = { 0, /* this is not a font driver, nor a renderer */ - sizeof( FT_ModuleRec ), + sizeof ( FT_ModuleRec ), "psnames", /* driver name */ 0x10000L, /* driver version */ Index: xc/extras/freetype2/src/psnames/psmodule.h diff -u xc/extras/freetype2/src/psnames/psmodule.h:1.1.1.2 xc/extras/freetype2/src/psnames/psmodule.h:1.1.1.3 --- xc/extras/freetype2/src/psnames/psmodule.h:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/psnames/psmodule.h Sun Dec 16 12:49:30 2001 @@ -4,7 +4,7 @@ /* */ /* High-level PSNames module interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/psnames/psnamerr.h diff -u /dev/null xc/extras/freetype2/src/psnames/psnamerr.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:57 2002 +++ xc/extras/freetype2/src/psnames/psnamerr.h Sun Sep 9 22:56:05 2001 @@ -0,0 +1,41 @@ +/***************************************************************************/ +/* */ +/* psnamerr.h */ +/* */ +/* PS names module error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the PS names module error enumeration */ + /* constants. */ + /* */ + /*************************************************************************/ + +#ifndef __PSNAMERR_H__ +#define __PSNAMERR_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX PSnames_Err_ +#define FT_ERR_BASE FT_Mod_Err_PSnames + +#include FT_ERRORS_H + +#endif /* __PSNAMERR_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/psnames/psnames.c diff -u xc/extras/freetype2/src/psnames/psnames.c:1.1.1.2 xc/extras/freetype2/src/psnames/psnames.c:1.1.1.3 --- xc/extras/freetype2/src/psnames/psnames.c:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/psnames/psnames.c Sun Dec 16 12:49:30 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType PSNames module component (body only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/psnames/pstables.h diff -u xc/extras/freetype2/src/psnames/pstables.h:1.1.1.2 xc/extras/freetype2/src/psnames/pstables.h:1.1.1.4 --- xc/extras/freetype2/src/psnames/pstables.h:1.1.1.2 Tue May 15 23:45:44 2001 +++ xc/extras/freetype2/src/psnames/pstables.h Mon Jan 14 11:52:15 2002 @@ -4,7 +4,7 @@ /* */ /* PostScript glyph names (specification only). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -19,39 +19,12 @@ /* this file has been generated automatically -- do not edit! */ - static const char* const standard_glyph_names[] = + static const char* const ps_glyph_names[] = { ".null", - "CR", - "notequal", - "infinity", - "lessequal", - "greaterequal", - "partialdiff", - "summation", - "product", - "pi", - "integral", - "Omega", - "radical", - "approxequal", - "Delta", - "nbspace", - "lozenge", - "periodcentered", + "nonmarkingreturn", + "nonbreakingspace", "apple", - "lslash", - "franc", - "Gbreve", - "gbreve", - "Idot", - "Scedilla", - "scedilla", - "Cacute", - "cacute", - "Ccaron", - "ccaron", - "dmacron", ".notdef", "space", "exclam", @@ -166,7 +139,7 @@ "endash", "dagger", "daggerdbl", - "periodcenter", + "periodcentered", "paragraph", "bullet", "quotesinglbase", @@ -198,7 +171,7 @@ "ordmasculine", "ae", "dotlessi", - "Islash", + "lslash", "oslash", "oe", "germandbls", @@ -425,7 +398,7 @@ "OEsmall", "Oslashsmall", "Ugravesmall", - "Uacautesmall", + "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", @@ -455,12 +428,16 @@ "Aogonek", "Aringacute", "Beta", + "Cacute", "Caron", + "Ccaron", "Ccircumflex", "Cdotaccent", "Chi", "Dcaron", "Dcroat", + "Delta", + "Delta", "Dieresis", "DieresisAcute", "DieresisGrave", @@ -476,6 +453,7 @@ "Etatonos", "Euro", "Gamma", + "Gbreve", "Gcaron", "Gcircumflex", "Gcommaaccent", @@ -517,6 +495,8 @@ "Ohorn", "Ohungarumlaut", "Omacron", + "Omega", + "Omega", "Omegatonos", "Omicron", "Omicrontonos", @@ -570,6 +550,8 @@ "SF530000", "SF540000", "Sacute", + "Scedilla", + "Scedilla", "Scircumflex", "Scommaaccent", "Sigma", @@ -579,7 +561,6 @@ "Tcommaaccent", "Tcommaaccent", "Theta", - "Uacutesmall", "Ubreve", "Uhorn", "Uhungarumlaut", @@ -858,6 +839,7 @@ "angleright", "anoteleia", "aogonek", + "approxequal", "aringacute", "arrowboth", "arrowdblboth", @@ -889,7 +871,9 @@ "bracketrightbt", "bracketrightex", "bracketrighttp", + "cacute", "carriagereturn", + "ccaron", "ccircumflex", "cdotaccent", "chi", @@ -939,13 +923,16 @@ "female", "filledbox", "filledrect", + "franc", "gamma", + "gbreve", "gcaron", "gcircumflex", "gcommaaccent", "gdotaccent", "gradient", "gravecomb", + "greaterequal", "hbar", "hcircumflex", "heart", @@ -954,6 +941,8 @@ "ibreve", "ij", "imacron", + "infinity", + "integral", "integralbt", "integralex", "integraltp", @@ -976,12 +965,14 @@ "lcaron", "lcommaaccent", "ldot", + "lessequal", "lfblock", "lira", "ll", "logicaland", "logicalor", "longs", + "lozenge", "ltshade", "male", "minute", @@ -992,6 +983,7 @@ "ncaron", "ncommaaccent", "notelement", + "notequal", "notsubset", "nu", "obreve", @@ -1012,17 +1004,21 @@ "parenrightbt", "parenrightex", "parenrighttp", + "partialdiff", "perpendicular", "peseta", "phi", "phi1", + "pi", "prescription", + "product", "propersubset", "propersuperset", "proportional", "psi", "quotereversed", "racute", + "radical", "radicalex", "rcaron", "rcommaaccent", @@ -1034,6 +1030,8 @@ "rho", "rtblock", "sacute", + "scedilla", + "scedilla", "scircumflex", "scommaaccent", "second", @@ -1044,6 +1042,7 @@ "smileface", "spade", "suchthat", + "summation", "sun", "tau", "tbar", @@ -1090,18 +1089,17 @@ #endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */ - 0 + NULL }; - static const char* const * const t1_standard_glyphs = - standard_glyph_names + 31; + static const char* const * const sid_standard_names = ps_glyph_names + 4; -#define NUM_STD_GLYPHS 391 +#define NUM_SID_GLYPHS 391 #ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST -#define NUM_ADOBE_GLYPHS 1032 +#define NUM_ADOBE_GLYPHS 1058 #else #define NUM_ADOBE_GLYPHS 391 #endif @@ -1109,9 +1107,36 @@ static const unsigned short mac_standard_names[259] = { - 31, + 4, 0, 1, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 108, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, 32, 33, 34, @@ -1119,7 +1144,7 @@ 36, 37, 38, - 135, + 39, 40, 41, 42, @@ -1149,7 +1174,7 @@ 66, 67, 68, - 69, + 128, 70, 71, 72, @@ -1176,203 +1201,176 @@ 93, 94, 95, - 155, + 96, 97, 98, 99, - 100, + 177, + 179, + 181, + 182, + 190, + 193, + 199, + 204, + 207, + 205, + 206, + 209, + 208, + 210, + 211, + 214, + 212, + 213, + 215, + 218, + 216, + 217, + 219, + 220, + 223, + 221, + 222, + 224, + 226, + 229, + 227, + 228, + 116, + 165, 101, 102, - 103, + 106, + 120, + 119, + 153, + 169, + 174, + 157, + 129, + 135, + 959, + 142, + 145, + 917, + 160, + 941, + 908, 104, + 156, + 980, + 1018, + 987, + 985, + 918, + 143, + 147, + 471, + 148, + 151, + 127, + 100, + 155, + 994, 105, - 106, - 107, - 108, - 109, + 815, + 412, 110, + 124, + 125, + 2, + 178, + 180, + 195, + 146, + 152, + 115, + 141, + 109, + 123, + 69, + 12, + 163, + 948, + 231, + 202, + 103, + 107, 111, 112, 113, 114, - 115, - 116, 117, 118, - 119, - 120, 121, 122, - 123, - 124, - 125, 126, - 204, - 206, - 208, - 209, - 217, - 220, - 226, - 231, - 234, - 232, - 233, - 236, - 235, - 237, - 238, - 241, - 239, - 240, - 242, - 245, - 243, - 244, - 246, - 247, - 250, - 248, - 249, - 251, - 253, - 256, - 254, - 255, - 143, - 192, - 128, - 129, - 133, - 147, - 146, - 180, - 196, - 201, + 176, + 183, + 175, 184, - 156, - 162, - 2, - 169, - 172, - 3, + 185, + 186, 187, - 4, - 5, + 188, + 189, + 191, + 192, + 3, + 194, + 197, + 198, + 200, + 149, + 130, 131, - 183, - 6, - 7, - 8, - 9, - 10, - 170, - 174, - 11, - 175, - 178, - 154, - 127, - 182, - 12, 132, - 13, - 14, - 137, - 151, - 152, - 15, - 205, - 207, - 222, - 173, - 179, - 142, - 168, - 136, - 150, - 96, - 39, - 190, - 16, - 258, - 229, - 130, + 133, 134, + 136, + 137, 138, 139, 140, - 141, 144, - 17, - 148, - 149, - 153, - 203, - 210, - 202, - 211, - 212, - 213, - 214, - 215, - 216, - 218, - 219, - 18, - 221, - 224, + 150, + 196, 225, - 227, - 176, - 157, + 203, + 232, + 164, 158, - 159, - 160, + 171, + 201, + 230, 161, - 163, - 164, - 165, 166, + 170, + 172, + 154, + 168, + 173, + 159, + 162, 167, - 171, - 19, - 223, - 252, - 230, - 259, - 191, - 185, - 198, - 228, - 257, - 188, - 193, - 197, - 199, - 181, - 195, - 200, - 186, - 189, - 194, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, + 899, + 429, + 901, + 444, + 526, + 1006, + 404, + 847, + 406, + 849, + 868, 0 }; - static const unsigned short names_to_unicode[1033] = + static const unsigned short ps_names_to_unicode[1059] = { 0, 0x0020, @@ -1488,7 +1486,7 @@ 0x2013, 0x2020, 0x2021, - 0, + 0x00B7, 0x00B6, 0x2022, 0x201A, @@ -1520,7 +1518,7 @@ 0x00BA, 0x00E6, 0x0131, - 0, + 0x0142, 0x00F8, 0x0153, 0x00DF, @@ -1747,7 +1745,7 @@ 0xF6FA, 0xF7F8, 0xF7F9, - 0, + 0xF7FA, 0xF7FB, 0xF7FC, 0xF7FD, @@ -1777,12 +1775,16 @@ 0x0104, 0x01FA, 0x0392, + 0x0106, 0xF6CA, + 0x010C, 0x0108, 0x010A, 0x03A7, 0x010E, 0x0110, + 0x2206, + 0x2206, 0xF6CB, 0xF6CC, 0xF6CD, @@ -1798,6 +1800,7 @@ 0x0389, 0x20AC, 0x0393, + 0x011E, 0x01E6, 0x011C, 0x0122, @@ -1839,6 +1842,8 @@ 0x01A0, 0x0150, 0x014C, + 0x2126, + 0x2126, 0x038F, 0x039F, 0x038C, @@ -1892,6 +1897,8 @@ 0x256B, 0x256A, 0x015A, + 0x015E, + 0x015E, 0x015C, 0x0218, 0x03A3, @@ -1901,7 +1908,6 @@ 0x0162, 0x0162, 0x0398, - 0xF7FA, 0x016C, 0x01AF, 0x0170, @@ -2180,6 +2186,7 @@ 0x232A, 0x0387, 0x0105, + 0x2248, 0x01FB, 0x2194, 0x21D4, @@ -2211,7 +2218,9 @@ 0xF8FB, 0xF8FA, 0xF8F9, + 0x0107, 0x21B5, + 0x010D, 0x0109, 0x010B, 0x03C7, @@ -2261,13 +2270,16 @@ 0x2640, 0x25A0, 0x25AC, + 0x20A3, 0x03B3, + 0x011F, 0x01E7, 0x011D, 0x0123, 0x0121, 0x2207, 0x0300, + 0x2265, 0x0127, 0x0125, 0x2665, @@ -2276,6 +2288,8 @@ 0x012D, 0x0133, 0x012B, + 0x221E, + 0x222B, 0x2321, 0xF8F5, 0x2320, @@ -2298,12 +2312,14 @@ 0x013E, 0x013C, 0x0140, + 0x2264, 0x258C, 0x20A4, 0xF6C0, 0x2227, 0x2228, 0x017F, + 0x25CA, 0x2591, 0x2642, 0x2032, @@ -2314,6 +2330,7 @@ 0x0148, 0x0146, 0x2209, + 0x2260, 0x2284, 0x03BD, 0x014F, @@ -2334,17 +2351,21 @@ 0xF8F8, 0xF8F7, 0xF8F6, + 0x2202, 0x22A5, 0x20A7, 0x03C6, 0x03D5, + 0x03C0, 0x211E, + 0x220F, 0x2282, 0x2283, 0x221D, 0x03C8, 0x201B, 0x0155, + 0x221A, 0xF8E5, 0x0159, 0x0157, @@ -2356,6 +2377,8 @@ 0x03C1, 0x2590, 0x015B, + 0x015F, + 0x015F, 0x015D, 0x0219, 0x2033, @@ -2366,6 +2389,7 @@ 0x263A, 0x2660, 0x220B, + 0x2211, 0x263C, 0x03C4, 0x0167, @@ -2855,7 +2879,7 @@ 312, 0, 0, - 312, + 313, 0, 0, 314, Index: xc/extras/freetype2/src/psnames/rules.mk diff -u xc/extras/freetype2/src/psnames/rules.mk:1.1.1.2 xc/extras/freetype2/src/psnames/rules.mk:1.1.1.3 --- xc/extras/freetype2/src/psnames/rules.mk:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/psnames/rules.mk Sun Sep 9 22:56:05 2001 @@ -32,7 +32,8 @@ # PSNames driver headers # PSNAMES_DRV_H := $(PSNAMES_DRV_SRC:%.c=%.h) \ - $(PSNAMES_DIR_)pstables.h + $(PSNAMES_DIR_)pstables.h \ + $(PSNAMES_DIR_)psnamerr.h # PSNames driver object(s) Index: xc/extras/freetype2/src/raster/Jamfile diff -u /dev/null xc/extras/freetype2/src/raster/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:57 2002 +++ xc/extras/freetype2/src/raster/Jamfile Sun Sep 9 22:56:05 2001 @@ -0,0 +1,23 @@ +# FreeType 2 src/raster Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src raster ; + +SubDirHdrs [ FT2_SubDir src raster ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = ftraster ftrend1 ; + } + else + { + _sources = raster ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/raster Jamfile Index: xc/extras/freetype2/src/raster/ftraster.c diff -u xc/extras/freetype2/src/raster/ftraster.c:1.1.1.2 xc/extras/freetype2/src/raster/ftraster.c:1.1.1.5 --- xc/extras/freetype2/src/raster/ftraster.c:1.1.1.2 Tue May 15 23:45:42 2001 +++ xc/extras/freetype2/src/raster/ftraster.c Mon Jan 14 11:52:16 2002 @@ -4,7 +4,7 @@ /* */ /* The FreeType glyph rasterizer (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -170,20 +170,27 @@ #else /* _STANDALONE_ */ -#include <freetype/internal/ftobjs.h> -#include <freetype/internal/ftdebug.h> /* for FT_TRACE() and FT_ERROR() */ +#include FT_INTERNAL_OBJECTS_H +#include FT_INTERNAL_DEBUG_H /* for FT_TRACE() and FT_ERROR() */ -#define Raster_Err_None FT_Err_Ok -#define Raster_Err_Not_Ini FT_Err_Raster_Uninitialized -#define Raster_Err_Overflow FT_Err_Raster_Overflow -#define Raster_Err_Neg_Height FT_Err_Raster_Negative_Height -#define Raster_Err_Invalid FT_Err_Invalid_Outline -#define Raster_Err_Unsupported FT_Err_Cannot_Render_Glyph +#include "rasterrs.h" +#define Raster_Err_None Raster_Err_Ok +#define Raster_Err_Not_Ini Raster_Err_Raster_Uninitialized +#define Raster_Err_Overflow Raster_Err_Raster_Overflow +#define Raster_Err_Neg_Height Raster_Err_Raster_Negative_Height +#define Raster_Err_Invalid Raster_Err_Invalid_Outline +#define Raster_Err_Unsupported Raster_Err_Cannot_Render_Glyph + #endif /* _STANDALONE_ */ +#ifndef MEM_Set +#define MEM_Set( d, s, c ) memset( d, s, c ) +#endif + + /* FMulDiv means `Fast MulDiv'; it is used in case where `b' is */ /* typically a small value and the result of a*b is known to fit into */ /* 32 bits. */ @@ -280,11 +287,11 @@ FT_F26Dot6 X; /* current coordinate during sweep */ PProfile link; /* link to next profile - various purpose */ PLong offset; /* start of profile's data in render pool */ - Int flow; /* Profile orientation: Asc/Descending */ - Long height; /* profile's height in scanlines */ - Long start; /* profile's starting scanline */ + int flow; /* Profile orientation: Asc/Descending */ + long height; /* profile's height in scanlines */ + long start; /* profile's starting scanline */ - UShort countL; /* number of lines to step before this */ + unsigned countL; /* number of lines to step before this */ /* profile becomes drawable */ PProfile next; /* next profile in same contour, used */ @@ -340,18 +347,21 @@ /* prototypes used for sweep function dispatch */ - typedef void Function_Sweep_Init( RAS_ARGS Short* min, - Short* max ); + typedef void + Function_Sweep_Init( RAS_ARGS Short* min, + Short* max ); + + typedef void + Function_Sweep_Span( RAS_ARGS Short y, + FT_F26Dot6 x1, + FT_F26Dot6 x2, + PProfile left, + PProfile right ); - typedef void Function_Sweep_Span( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ); + typedef void + Function_Sweep_Step( RAS_ARG ); - typedef void Function_Sweep_Step( RAS_ARG ); - /* NOTE: These operations are only valid on 2's complement processors */ #define FLOOR( x ) ( (x) & -ras.precision ) @@ -436,7 +446,7 @@ /* no horizontal pass during gray */ /* rendering. */ - TPoint arcs[2 * MaxBezier + 1]; /* The Bezier stack */ + TPoint arcs[3 * MaxBezier + 1]; /* The Bezier stack */ TBand band_stack[16]; /* band stack used for sub-banding */ Int band_top; /* band stack top */ @@ -511,8 +521,8 @@ /* High :: Set to True for high precision (typically for ppem < 18), */ /* false otherwise. */ /* */ - static - void Set_High_Precision( RAS_ARGS Int High ) + static void + Set_High_Precision( RAS_ARGS Int High ) { if ( High ) { @@ -551,8 +561,8 @@ /* SUCCESS on success. FAILURE in case of overflow or of incoherent */ /* profile. */ /* */ - static - Bool New_Profile( RAS_ARGS TStates aState ) + static Bool + New_Profile( RAS_ARGS TStates aState ) { if ( !ras.fProfile ) { @@ -613,8 +623,8 @@ /* <Return> */ /* SUCCESS on success. FAILURE in case of overflow or incoherency. */ /* */ - static - Bool End_Profile( RAS_ARG ) + static Bool + End_Profile( RAS_ARG ) { Long h; PProfile oldProfile; @@ -674,8 +684,8 @@ /* <Return> */ /* SUCCESS on success. FAILURE in case of overflow. */ /* */ - static - Bool Insert_Y_Turn( RAS_ARGS Int y ) + static Bool + Insert_Y_Turn( RAS_ARGS Int y ) { PLong y_turns; Int y2, n; @@ -725,8 +735,8 @@ /* <Return> */ /* SUCCESS on success. FAILURE in case of overflow. */ /* */ - static - Bool Finalize_Profile_Table( RAS_ARG ) + static Bool + Finalize_Profile_Table( RAS_ARG ) { Int bottom, top; UShort n; @@ -791,8 +801,8 @@ /* This routine is the `beef' of this component. It is _the_ inner */ /* loop that should be optimized to hell to get the best performance. */ /* */ - static - void Split_Conic( TPoint* base ) + static void + Split_Conic( TPoint* base ) { Long a, b; @@ -828,8 +838,8 @@ /* inner loops that should be optimized like hell to get the best */ /* performance. */ /* */ - static - void Split_Cubic( TPoint* base ) + static void + Split_Cubic( TPoint* base ) { Long a, b, c, d; @@ -881,13 +891,13 @@ /* <Return> */ /* SUCCESS on success, FAILURE on render pool overflow. */ /* */ - static - Bool Line_Up( RAS_ARGS Long x1, - Long y1, - Long x2, - Long y2, - Long miny, - Long maxy ) + static Bool + Line_Up( RAS_ARGS Long x1, + Long y1, + Long x2, + Long y2, + Long miny, + Long maxy ) { Long Dx, Dy; Int e1, e2, f1, f2, size; /* XXX: is `Short' sufficient? */ @@ -945,7 +955,7 @@ ras.joint = FALSE; } - ras.joint = ( f2 == 0 ); + ras.joint = (char)( f2 == 0 ); if ( ras.fresh ) { @@ -1020,13 +1030,13 @@ /* <Return> */ /* SUCCESS on success, FAILURE on render pool overflow. */ /* */ - static - Bool Line_Down( RAS_ARGS Long x1, - Long y1, - Long x2, - Long y2, - Long miny, - Long maxy ) + static Bool + Line_Down( RAS_ARGS Long x1, + Long y1, + Long x2, + Long y2, + Long miny, + Long maxy ) { Bool result, fresh; @@ -1067,11 +1077,11 @@ /* <Return> */ /* SUCCESS on success, FAILURE on render pool overflow. */ /* */ - static - Bool Bezier_Up( RAS_ARGS Int degree, - TSplitter splitter, - Long miny, - Long maxy ) + static Bool + Bezier_Up( RAS_ARGS Int degree, + TSplitter splitter, + Long miny, + Long maxy ) { Long y1, y2, e, e2, e0; Short f1; @@ -1200,11 +1210,11 @@ /* <Return> */ /* SUCCESS on success, FAILURE on render pool overflow. */ /* */ - static - Bool Bezier_Down( RAS_ARGS Int degree, - TSplitter splitter, - Long miny, - Long maxy ) + static Bool + Bezier_Down( RAS_ARGS Int degree, + TSplitter splitter, + Long miny, + Long maxy ) { TPoint* arc = ras.arc; Bool result, fresh; @@ -1247,9 +1257,9 @@ /* SUCCESS on success, FAILURE on render pool overflow or incorrect */ /* profile. */ /* */ - static - Bool Line_To( RAS_ARGS Long x, - Long y ) + static Bool + Line_To( RAS_ARGS Long x, + Long y ) { /* First, detect a change of direction */ @@ -1341,11 +1351,11 @@ /* SUCCESS on success, FAILURE on render pool overflow or incorrect */ /* profile. */ /* */ - static - Bool Conic_To( RAS_ARGS Long cx, - Long cy, - Long x, - Long y ) + static Bool + Conic_To( RAS_ARGS Long cx, + Long cy, + Long x, + Long y ) { Long y1, y2, y3, x3, ymin, ymax; TStates state_bez; @@ -1455,13 +1465,13 @@ /* SUCCESS on success, FAILURE on render pool overflow or incorrect */ /* profile. */ /* */ - static - Bool Cubic_To( RAS_ARGS Long cx1, - Long cy1, - Long cx2, - Long cy2, - Long x, - Long y ) + static Bool + Cubic_To( RAS_ARGS Long cx1, + Long cy1, + Long cx2, + Long cy2, + Long x, + Long y ) { Long y1, y2, y3, y4, x4, ymin1, ymax1, ymin2, ymax2; TStates state_bez; @@ -1587,10 +1597,10 @@ /* <Return> */ /* SUCCESS on success, FAILURE on error. */ /* */ - static - Bool Decompose_Curve( RAS_ARGS UShort first, - UShort last, - int flipped ) + static Bool + Decompose_Curve( RAS_ARGS UShort first, + UShort last, + int flipped ) { FT_Vector v_last; FT_Vector v_control; @@ -1601,7 +1611,7 @@ FT_Vector* limit; char* tags; - char tag; /* current point's state */ + unsigned tag; /* current point's state */ points = ras.outline.points; @@ -1803,11 +1813,11 @@ /* SUCCESS on success, FAILURE if any error was encountered during */ /* rendering. */ /* */ - static - Bool Convert_Glyph( RAS_ARGS int flipped ) + static Bool + Convert_Glyph( RAS_ARGS int flipped ) { - Short i; - UShort start; + int i; + unsigned start; PProfile lastProfile; @@ -1831,7 +1841,9 @@ ras.state = Unknown; ras.gProfile = NULL; - if ( Decompose_Curve( RAS_VARS start, ras.outline.contours[i], flipped ) ) + if ( Decompose_Curve( RAS_VARS (unsigned short)start, + ras.outline.contours[i], + flipped ) ) return FAILURE; start = ras.outline.contours[i] + 1; @@ -1857,7 +1869,7 @@ if ( Finalize_Profile_Table( RAS_VAR ) ) return FAILURE; - return ( ras.top < ras.maxBuff ? SUCCESS : FAILURE ); + return (Bool)( ras.top < ras.maxBuff ? SUCCESS : FAILURE ); } @@ -1876,8 +1888,8 @@ /* */ /* Initializes an empty linked list. */ /* */ - static - void Init_Linked( TProfileList* l ) + static void + Init_Linked( TProfileList* l ) { *l = NULL; } @@ -1889,9 +1901,9 @@ /* */ /* Inserts a new profile in a linked list. */ /* */ - static - void InsNew( PProfileList list, - PProfile profile ) + static void + InsNew( PProfileList list, + PProfile profile ) { PProfile *old, current; Long x; @@ -1920,9 +1932,9 @@ /* */ /* Removes an old profile from a linked list. */ /* */ - static - void DelOld( PProfileList list, - PProfile profile ) + static void + DelOld( PProfileList list, + PProfile profile ) { PProfile *old, current; @@ -1949,16 +1961,20 @@ /*************************************************************************/ /* */ - /* Update */ + /* Sort */ /* */ - /* Update all X offsets of a drawing list. */ + /* Sorts a trace list. In 95%, the list is already sorted. We need */ + /* an algorithm which is fast in this case. Bubble sort is enough */ + /* and simple. */ /* */ - static - void Update( PProfile first ) + static void + Sort( PProfileList list ) { - PProfile current = first; + PProfile *old, current, next; + /* First, set the new X coordinate of each profile */ + current = *list; while ( current ) { current->X = *current->offset; @@ -1966,26 +1982,7 @@ current->height--; current = current->link; } - } - - - /*************************************************************************/ - /* */ - /* Sort */ - /* */ - /* Sorts a trace list. In 95%, the list is already sorted. We need */ - /* an algorithm which is fast in this case. Bubble sort is enough */ - /* and simple. */ - /* */ - static - void Sort( PProfileList list ) - { - PProfile *old, current, next; - - /* First, set the new X coordinate of each profile */ - Update( *list ); - /* Then sort them */ old = list; current = *old; @@ -2029,9 +2026,9 @@ /* */ /*************************************************************************/ - static - void Vertical_Sweep_Init( RAS_ARGS Short* min, - Short* max ) + static void + Vertical_Sweep_Init( RAS_ARGS Short* min, + Short* max ) { Long pitch = ras.target.pitch; @@ -2048,15 +2045,15 @@ } - static - void Vertical_Sweep_Span( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ) + static void + Vertical_Sweep_Span( RAS_ARGS Short y, + FT_F26Dot6 x1, + FT_F26Dot6 x2, + PProfile left, + PProfile right ) { Long e1, e2; - Short c1, c2; + int c1, c2; Byte f1, f2; Byte* target; @@ -2084,11 +2081,11 @@ c1 = (Short)( e1 >> 3 ); c2 = (Short)( e2 >> 3 ); - f1 = (unsigned char)0xFF >> ( e1 & 7 ); - f2 = ~( (unsigned char)0x7F >> ( e2 & 7 ) ); + f1 = (Byte) ( 0xFF >> ( e1 & 7 ) ); + f2 = (Byte) ~( 0x7F >> ( e2 & 7 ) ); - if ( ras.gray_min_x > c1 ) ras.gray_min_x = c1; - if ( ras.gray_max_x < c2 ) ras.gray_max_x = c2; + if ( ras.gray_min_x > c1 ) ras.gray_min_x = (short)c1; + if ( ras.gray_max_x < c2 ) ras.gray_max_x = (short)c2; target = ras.bTarget + ras.traceOfs + c1; c2 -= c1; @@ -2114,12 +2111,12 @@ } - static - void Vertical_Sweep_Drop( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ) + static void + Vertical_Sweep_Drop( RAS_ARGS Short y, + FT_F26Dot6 x1, + FT_F26Dot6 x2, + PProfile left, + PProfile right ) { Long e1, e2; Short c1, f1; @@ -2225,8 +2222,8 @@ } - static - void Vertical_Sweep_Step( RAS_ARG ) + static void + Vertical_Sweep_Step( RAS_ARG ) { ras.traceOfs += ras.traceIncr; } @@ -2241,9 +2238,9 @@ /* */ /***********************************************************************/ - static - void Horizontal_Sweep_Init( RAS_ARGS Short* min, - Short* max ) + static void + Horizontal_Sweep_Init( RAS_ARGS Short* min, + Short* max ) { /* nothing, really */ FT_UNUSED( raster ); @@ -2252,12 +2249,12 @@ } - static - void Horizontal_Sweep_Span( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ) + static void + Horizontal_Sweep_Span( RAS_ARGS Short y, + FT_F26Dot6 x1, + FT_F26Dot6 x2, + PProfile left, + PProfile right ) { Long e1, e2; PByte bits; @@ -2295,12 +2292,12 @@ } - static - void Horizontal_Sweep_Drop( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ) + static void + Horizontal_Sweep_Drop( RAS_ARGS Short y, + FT_F26Dot6 x1, + FT_F26Dot6 x2, + PProfile left, + PProfile right ) { Long e1, e2; PByte bits; @@ -2391,8 +2388,8 @@ } - static - void Horizontal_Sweep_Step( RAS_ARG ) + static void + Horizontal_Sweep_Step( RAS_ARG ) { /* Nothing, really */ FT_UNUSED( raster ); @@ -2418,9 +2415,9 @@ /* */ /*************************************************************************/ - static - void Vertical_Gray_Sweep_Init( RAS_ARGS Short* min, - Short* max ) + static void + Vertical_Gray_Sweep_Init( RAS_ARGS Short* min, + Short* max ) { Long pitch, byte_len; @@ -2445,8 +2442,8 @@ } - static - void Vertical_Gray_Sweep_Step( RAS_ARG ) + static void + Vertical_Gray_Sweep_Step( RAS_ARG ) { Int c1, c2; PByte pix, bit, bit2; @@ -2534,12 +2531,12 @@ } - static - void Horizontal_Gray_Sweep_Span( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ) + static void + Horizontal_Gray_Sweep_Span( RAS_ARGS Short y, + FT_F26Dot6 x1, + FT_F26Dot6 x2, + PProfile left, + PProfile right ) { /* nothing, really */ FT_UNUSED( raster ); @@ -2551,12 +2548,12 @@ } - static - void Horizontal_Gray_Sweep_Drop( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ) + static void + Horizontal_Gray_Sweep_Drop( RAS_ARGS Short y, + FT_F26Dot6 x1, + FT_F26Dot6 x2, + PProfile left, + PProfile right ) { Long e1, e2; PByte pixel; @@ -2644,8 +2641,8 @@ /* */ /*************************************************************************/ - static - Bool Draw_Sweep( RAS_ARG ) + static Bool + Draw_Sweep( RAS_ARG ) { Short y, y_change, y_height; @@ -2753,7 +2750,7 @@ Sort( &draw_right ); y_change = (Short)ras.sizeBuff[-ras.numTurns--]; - y_height = y_change - y; + y_height = (Short)( y_change - y ); while ( y < y_change ) { @@ -2896,8 +2893,8 @@ /* <Return> */ /* Renderer error code. */ /* */ - static - int Render_Single_Pass( RAS_ARGS Bool flipped ) + static int + Render_Single_Pass( RAS_ARGS Bool flipped ) { Short i, j, k; @@ -2927,7 +2924,7 @@ i = ras.band_stack[ras.band_top].y_min; j = ras.band_stack[ras.band_top].y_max; - k = ( i + j ) / 2; + k = (Short)( ( i + j ) / 2 ); if ( ras.band_top >= 7 || k < i ) { @@ -2940,7 +2937,7 @@ ras.band_stack[ras.band_top + 1].y_min = k; ras.band_stack[ras.band_top + 1].y_max = j; - ras.band_stack[ras.band_top].y_max = k - 1; + ras.band_stack[ras.band_top].y_max = (Short)( k - 1 ); ras.band_top++; } @@ -2968,8 +2965,8 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error Render_Glyph( RAS_ARG ) + FT_LOCAL_DEF FT_Error + Render_Glyph( RAS_ARG ) { FT_Error error; @@ -2978,7 +2975,8 @@ ft_outline_high_precision ); ras.scale_shift = ras.precision_shift; ras.dropOutControl = 2; - ras.second_pass = !( ras.outline.flags & ft_outline_single_pass ); + ras.second_pass = (FT_Byte)( !( ras.outline.flags & + ft_outline_single_pass ) ); /* Vertical Sweep */ ras.Proc_Sweep_Init = Vertical_Sweep_Init; @@ -2988,9 +2986,9 @@ ras.band_top = 0; ras.band_stack[0].y_min = 0; - ras.band_stack[0].y_max = ras.target.rows - 1; + ras.band_stack[0].y_max = (short)( ras.target.rows - 1 ); - ras.bWidth = ras.target.width; + ras.bWidth = (unsigned short)ras.target.width; ras.bTarget = (Byte*)ras.target.buffer; if ( ( error = Render_Single_Pass( RAS_VARS 0 ) ) != 0 ) @@ -3006,13 +3004,13 @@ ras.band_top = 0; ras.band_stack[0].y_min = 0; - ras.band_stack[0].y_max = ras.target.width - 1; + ras.band_stack[0].y_max = (short)( ras.target.width - 1 ); if ( ( error = Render_Single_Pass( RAS_VARS 1 ) ) != 0 ) return error; } - return FT_Err_Ok; + return Raster_Err_Ok; } @@ -3030,8 +3028,8 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error Render_Gray_Glyph( RAS_ARG ) + FT_LOCAL_DEF FT_Error + Render_Gray_Glyph( RAS_ARG ) { Long pixel_width; FT_Error error; @@ -3085,7 +3083,7 @@ return error; } - return FT_Err_Ok; + return Raster_Err_Ok; } #else /* FT_RASTER_OPTION_ANTI_ALIASING */ @@ -3095,14 +3093,14 @@ { FT_UNUSED_RASTER; - return FT_Err_Cannot_Render_Glyph; + return Raster_Err_Cannot_Render_Glyph; } #endif /* FT_RASTER_OPTION_ANTI_ALIASING */ - static - void ft_black_init( TRaster_Instance* raster ) + static void + ft_black_init( TRaster_Instance* raster ) { FT_UInt n; FT_ULong c; @@ -3140,23 +3138,23 @@ #ifdef _STANDALONE_ - static - int ft_black_new( void* memory, - FT_Raster *araster ) + static int + ft_black_new( void* memory, + FT_Raster *araster ) { static FT_RasterRec_ the_raster; *araster = &the_raster; - memset( &the_raster, sizeof ( the_raster ), 0 ); + MEM_Set( &the_raster, sizeof ( the_raster ), 0 ); ft_black_init( &the_raster ); return 0; } - static - void ft_black_done( FT_Raster raster ) + static void + ft_black_done( FT_Raster raster ) { /* nothing */ raster->init = 0; @@ -3166,9 +3164,9 @@ #else /* _STANDALONE_ */ - static - int ft_black_new( FT_Memory memory, - TRaster_Instance** araster ) + static int + ft_black_new( FT_Memory memory, + TRaster_Instance** araster ) { FT_Error error; TRaster_Instance* raster; @@ -3187,8 +3185,8 @@ } - static - void ft_black_done( TRaster_Instance* raster ) + static void + ft_black_done( TRaster_Instance* raster ) { FT_Memory memory = (FT_Memory)raster->memory; FREE( raster ); @@ -3198,10 +3196,10 @@ #endif /* _STANDALONE_ */ - static - void ft_black_reset( TRaster_Instance* raster, - const char* pool_base, - long pool_size ) + static void + ft_black_reset( TRaster_Instance* raster, + const char* pool_base, + long pool_size ) { if ( raster && pool_base && pool_size >= 4096 ) { @@ -3212,10 +3210,10 @@ } - static - void ft_black_set_mode( TRaster_Instance* raster, - unsigned long mode, - const char* palette ) + static void + ft_black_set_mode( TRaster_Instance* raster, + unsigned long mode, + const char* palette ) { #ifdef FT_RASTER_OPTION_ANTI_ALIASING @@ -3239,9 +3237,9 @@ } - static - int ft_black_render( TRaster_Instance* raster, - FT_Raster_Params* params ) + static int + ft_black_render( TRaster_Instance* raster, + FT_Raster_Params* params ) { FT_Outline* outline = (FT_Outline*)params->source; FT_Bitmap* target_map = params->target; Index: xc/extras/freetype2/src/raster/ftraster.h diff -u xc/extras/freetype2/src/raster/ftraster.h:1.1.1.2 xc/extras/freetype2/src/raster/ftraster.h:1.1.1.3 --- xc/extras/freetype2/src/raster/ftraster.h:1.1.1.2 Tue May 15 23:45:42 2001 +++ xc/extras/freetype2/src/raster/ftraster.h Sun Dec 16 12:49:31 2001 @@ -4,7 +4,7 @@ /* */ /* The FreeType glyph rasterizer (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used */ Index: xc/extras/freetype2/src/raster/ftrend1.c diff -u xc/extras/freetype2/src/raster/ftrend1.c:1.1.1.2 xc/extras/freetype2/src/raster/ftrend1.c:1.1.1.5 --- xc/extras/freetype2/src/raster/ftrend1.c:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/raster/ftrend1.c Mon Jan 14 11:52:16 2002 @@ -4,7 +4,7 @@ /* */ /* The FreeType glyph rasterizer interface (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -22,10 +22,12 @@ #include "ftrend1.h" #include "ftraster.h" +#include "rasterrs.h" + /* initialize renderer -- init its raster */ - static - FT_Error ft_raster1_init( FT_Renderer render ) + static FT_Error + ft_raster1_init( FT_Renderer render ) { FT_Library library = FT_MODULE_LIBRARY( render ); @@ -34,15 +36,15 @@ library->raster_pool, library->raster_pool_size ); - return FT_Err_Ok; + return Raster_Err_Ok; } /* set render-specific mode */ - static - FT_Error ft_raster1_set_mode( FT_Renderer render, - FT_ULong mode_tag, - FT_Pointer data ) + static FT_Error + ft_raster1_set_mode( FT_Renderer render, + FT_ULong mode_tag, + FT_Pointer data ) { /* we simply pass it to the raster */ return render->clazz->raster_class->raster_set_mode( render->raster, @@ -52,18 +54,18 @@ /* transform a given glyph image */ - static - FT_Error ft_raster1_transform( FT_Renderer render, - FT_GlyphSlot slot, - FT_Matrix* matrix, - FT_Vector* delta ) + static FT_Error + ft_raster1_transform( FT_Renderer render, + FT_GlyphSlot slot, + FT_Matrix* matrix, + FT_Vector* delta ) { - FT_Error error = FT_Err_Ok; + FT_Error error = Raster_Err_Ok; if ( slot->format != render->glyph_format ) { - error = FT_Err_Invalid_Argument; + error = Raster_Err_Invalid_Argument; goto Exit; } @@ -79,10 +81,10 @@ /* return the glyph's control box */ - static - void ft_raster1_get_cbox( FT_Renderer render, - FT_GlyphSlot slot, - FT_BBox* cbox ) + static void + ft_raster1_get_cbox( FT_Renderer render, + FT_GlyphSlot slot, + FT_BBox* cbox ) { MEM_Set( cbox, 0, sizeof ( *cbox ) ); @@ -92,11 +94,11 @@ /* convert a slot's glyph image into a bitmap */ - static - FT_Error ft_raster1_render( FT_Renderer render, - FT_GlyphSlot slot, - FT_UInt mode, - FT_Vector* origin ) + static FT_Error + ft_raster1_render( FT_Renderer render, + FT_GlyphSlot slot, + FT_UInt mode, + FT_Vector* origin ) { FT_Error error; FT_Outline* outline; @@ -111,7 +113,7 @@ /* check glyph image format */ if ( slot->format != render->glyph_format ) { - error = FT_Err_Invalid_Argument; + error = Raster_Err_Invalid_Argument; goto Exit; } @@ -120,13 +122,13 @@ { /* raster1 is only capable of producing monochrome bitmaps */ if ( render->clazz == &ft_raster1_renderer_class ) - return FT_Err_Cannot_Render_Glyph; + return Raster_Err_Cannot_Render_Glyph; } else { /* raster5 is only capable of producing 5-gray-levels bitmaps */ if ( render->clazz == &ft_raster5_renderer_class ) - return FT_Err_Cannot_Render_Glyph; + return Raster_Err_Cannot_Render_Glyph; } outline = &slot->outline; @@ -191,6 +193,9 @@ /* render outline into the bitmap */ error = render->raster_render( render->raster, ¶ms ); + + FT_Outline_Translate( outline, cbox.xMin, cbox.yMin ); + if ( error ) goto Exit; Index: xc/extras/freetype2/src/raster/ftrend1.h diff -u xc/extras/freetype2/src/raster/ftrend1.h:1.1.1.2 xc/extras/freetype2/src/raster/ftrend1.h:1.1.1.3 --- xc/extras/freetype2/src/raster/ftrend1.h:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/raster/ftrend1.h Sun Dec 16 12:49:31 2001 @@ -4,7 +4,7 @@ /* */ /* The FreeType glyph rasterizer interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/raster/raster.c diff -u xc/extras/freetype2/src/raster/raster.c:1.1.1.2 xc/extras/freetype2/src/raster/raster.c:1.1.1.3 --- xc/extras/freetype2/src/raster/raster.c:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/raster/raster.c Sun Dec 16 12:49:31 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType monochrome rasterer module component (body only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/raster/rasterrs.h diff -u /dev/null xc/extras/freetype2/src/raster/rasterrs.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:57 2002 +++ xc/extras/freetype2/src/raster/rasterrs.h Sun Sep 9 22:56:06 2001 @@ -0,0 +1,41 @@ +/***************************************************************************/ +/* */ +/* rasterrs.h */ +/* */ +/* monochrome renderer error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the monochrome renderer error enumeration */ + /* constants. */ + /* */ + /*************************************************************************/ + +#ifndef __RASTERRS_H__ +#define __RASTERRS_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX Raster_Err_ +#define FT_ERR_BASE FT_Mod_Err_Raster + +#include FT_ERRORS_H + +#endif /* __RASTERRS_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/raster/rules.mk diff -u xc/extras/freetype2/src/raster/rules.mk:1.1.1.2 xc/extras/freetype2/src/raster/rules.mk:1.1.1.3 --- xc/extras/freetype2/src/raster/rules.mk:1.1.1.2 Tue May 15 23:45:42 2001 +++ xc/extras/freetype2/src/raster/rules.mk Sun Sep 9 22:56:06 2001 @@ -31,7 +31,8 @@ # raster1 driver headers # -RAS1_DRV_H := $(RAS1_DRV_SRC:%.c=%.h) +RAS1_DRV_H := $(RAS1_DRV_SRC:%.c=%.h) \ + $(RAS1_DIR_)rasterrs.h # raster1 driver object(s) Index: xc/extras/freetype2/src/sfnt/Jamfile diff -u /dev/null xc/extras/freetype2/src/sfnt/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:57 2002 +++ xc/extras/freetype2/src/sfnt/Jamfile Sun Sep 9 22:56:06 2001 @@ -0,0 +1,23 @@ +# FreeType 2 src/sfnt Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src sfnt ; + +SubDirHdrs [ FT2_SubDir src sfnt ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = sfobjs sfdriver ttcmap ttpost ttload ttsbit ; + } + else + { + _sources = sfnt ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/sfnt Jamfile Index: xc/extras/freetype2/src/sfnt/rules.mk diff -u xc/extras/freetype2/src/sfnt/rules.mk:1.1.1.2 xc/extras/freetype2/src/sfnt/rules.mk:1.1.1.3 --- xc/extras/freetype2/src/sfnt/rules.mk:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/sfnt/rules.mk Sun Sep 9 22:56:06 2001 @@ -35,7 +35,8 @@ # SFNT driver headers # -SFNT_DRV_H := $(SFNT_DRV_SRC:%c=%h) +SFNT_DRV_H := $(SFNT_DRV_SRC:%c=%h) \ + $(SFNT_DIR_)sferrors.h # SFNT driver object(s) Index: xc/extras/freetype2/src/sfnt/sfdriver.c diff -u xc/extras/freetype2/src/sfnt/sfdriver.c:1.1.1.2 xc/extras/freetype2/src/sfnt/sfdriver.c:1.1.1.5 --- xc/extras/freetype2/src/sfnt/sfdriver.c:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/sfnt/sfdriver.c Mon Jan 14 11:52:22 2002 @@ -4,7 +4,7 @@ /* */ /* High-level SFNT driver interface (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -36,9 +36,9 @@ #include <string.h> /* for strcmp() */ - static - void* get_sfnt_table( TT_Face face, - FT_Sfnt_Tag tag ) + static void* + get_sfnt_table( TT_Face face, + FT_Sfnt_Tag tag ) { void* table; @@ -84,11 +84,11 @@ #ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES - static - FT_Error get_sfnt_glyph_name( TT_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ) + static FT_Error + get_sfnt_glyph_name( TT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ) { FT_String* gname; FT_Error error; @@ -111,12 +111,61 @@ } + static const char* + get_sfnt_postscript_name( TT_Face face ) + { + FT_Int n; + + + /* shouldn't happen, but just in case to avoid memory leaks */ + if ( face->root.internal->postscript_name ) + return face->root.internal->postscript_name; + + /* scan the name table to see if we have a Postscript name here, either */ + /* in Macintosh or Windows platform encodings.. */ + for ( n = 0; n < face->num_names; n++ ) + { + TT_NameRec* name = face->name_table.names + n; + + + if ( name->nameID == 6 ) + { + if ( ( name->platformID == 3 && + name->encodingID == 1 && + name->languageID == 0x409 ) || + + ( name->platformID == 1 && + name->encodingID == 0 && + name->languageID == 0 ) ) + { + FT_UInt len = name->stringLength; + FT_Error error; + FT_Memory memory = face->root.memory; + FT_String* result; + + + if ( !ALLOC( result, len + 1 ) ) + { + memcpy( result, name->string, len ); + result[len] = '\0'; + + face->root.internal->postscript_name = result; + } + return result; + } + } + } + + return NULL; + } + + #endif /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES */ - FT_CALLBACK_DEF - FT_Module_Interface SFNT_Get_Interface( FT_Module module, - const char* interface ) + FT_CALLBACK_DEF( FT_Module_Interface ) + SFNT_Get_Interface( FT_Module module, + const char* interface ) { FT_UNUSED( module ); @@ -127,6 +176,10 @@ if ( strcmp( interface, "glyph_name" ) == 0 ) return (FT_Module_Interface)get_sfnt_glyph_name; #endif + + if ( strcmp( interface, "postscript_name" ) == 0 ) + return (FT_Module_Interface)get_sfnt_postscript_name; + return 0; } Index: xc/extras/freetype2/src/sfnt/sfdriver.h diff -u xc/extras/freetype2/src/sfnt/sfdriver.h:1.1.1.2 xc/extras/freetype2/src/sfnt/sfdriver.h:1.1.1.3 --- xc/extras/freetype2/src/sfnt/sfdriver.h:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/sfnt/sfdriver.h Sun Dec 16 12:49:32 2001 @@ -4,7 +4,7 @@ /* */ /* High-level SFNT driver interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/sfnt/sferrors.h diff -u /dev/null xc/extras/freetype2/src/sfnt/sferrors.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:57 2002 +++ xc/extras/freetype2/src/sfnt/sferrors.h Sun Sep 9 22:56:06 2001 @@ -0,0 +1,39 @@ +/***************************************************************************/ +/* */ +/* sferrors.h */ +/* */ +/* SFNT error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the SFNT error enumeration constants. */ + /* */ + /*************************************************************************/ + +#ifndef __SFERRORS_H__ +#define __SFERRORS_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX SFNT_Err_ +#define FT_ERR_BASE FT_Mod_Err_SFNT + +#include FT_ERRORS_H + +#endif /* __SFERRORS_H__ */ + +/* END */ Index: xc/extras/freetype2/src/sfnt/sfnt.c diff -u xc/extras/freetype2/src/sfnt/sfnt.c:1.1.1.2 xc/extras/freetype2/src/sfnt/sfnt.c:1.1.1.3 --- xc/extras/freetype2/src/sfnt/sfnt.c:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/sfnt/sfnt.c Sun Dec 16 12:49:32 2001 @@ -4,7 +4,7 @@ /* */ /* Single object library component. */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/sfnt/sfobjs.c diff -u xc/extras/freetype2/src/sfnt/sfobjs.c:1.1.1.2 xc/extras/freetype2/src/sfnt/sfobjs.c:1.1.1.5 --- xc/extras/freetype2/src/sfnt/sfobjs.c:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/sfnt/sfobjs.c Mon Jan 14 11:52:22 2002 @@ -4,7 +4,7 @@ /* */ /* SFNT object management (base). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,9 +23,10 @@ #include FT_INTERNAL_POSTSCRIPT_NAMES_H #include FT_TRUETYPE_IDS_H #include FT_TRUETYPE_TAGS_H -#include FT_INTERNAL_TRUETYPE_ERRORS_H +#include "sferrors.h" + /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -52,9 +53,9 @@ /* <Return> */ /* Character string. NULL if no name is present. */ /* */ - static - FT_String* Get_Name( TT_Face face, - FT_UShort nameid ) + static FT_String* + Get_Name( TT_Face face, + FT_UShort nameid ) { FT_Memory memory = face->root.memory; FT_UShort n; @@ -127,9 +128,9 @@ } - static - FT_Encoding find_encoding( int platform_id, - int encoding_id ) + static FT_Encoding + find_encoding( int platform_id, + int encoding_id ) { typedef struct TEncoding { @@ -149,6 +150,7 @@ { TT_PLATFORM_MACINTOSH, TT_MAC_ID_ROMAN, ft_encoding_apple_roman }, { TT_PLATFORM_MICROSOFT, TT_MS_ID_SYMBOL_CS, ft_encoding_symbol }, + { TT_PLATFORM_MICROSOFT, TT_MS_ID_UCS_4, ft_encoding_unicode }, { TT_PLATFORM_MICROSOFT, TT_MS_ID_UNICODE_CS, ft_encoding_unicode }, { TT_PLATFORM_MICROSOFT, TT_MS_ID_SJIS, ft_encoding_sjis }, { TT_PLATFORM_MICROSOFT, TT_MS_ID_GB2312, ft_encoding_gb2312 }, @@ -177,12 +179,12 @@ } - FT_LOCAL_DEF - FT_Error SFNT_Init_Face( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) + FT_LOCAL_DEF FT_Error + SFNT_Init_Face( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ) { FT_Error error; FT_Library library = face->root.driver->root.library; @@ -199,7 +201,7 @@ sfnt = (SFNT_Interface*)FT_Get_Module_Interface( library, "sfnt" ); if ( !sfnt ) { - error = FT_Err_Invalid_File_Format; + error = SFNT_Err_Invalid_File_Format; goto Exit; } @@ -237,15 +239,15 @@ #undef LOAD_ #define LOAD_( x ) ( ( error = sfnt->load_##x( face, stream ) ) \ - != TT_Err_Ok ) + != SFNT_Err_Ok ) - FT_LOCAL_DEF - FT_Error SFNT_Load_Face( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) + FT_LOCAL_DEF FT_Error + SFNT_Load_Face( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ) { FT_Error error; FT_Bool has_outline; @@ -276,16 +278,16 @@ /* */ /* do we have outlines in there? */ - has_outline = ( ( TT_LookUp_Table( face, TTAG_glyf ) != 0 ) || - ( TT_LookUp_Table( face, TTAG_CFF ) != 0 ) ); + has_outline = FT_BOOL( ( TT_LookUp_Table( face, TTAG_glyf ) != 0 ) || + ( TT_LookUp_Table( face, TTAG_CFF ) != 0 ) ); is_apple_sbit = 0; - + #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS /* if this font doesn't contain outlines, we try to load */ /* a `bhed' table */ if ( !has_outline ) - is_apple_sbit = !LOAD_( bitmap_header ); + is_apple_sbit = FT_BOOL( !LOAD_( bitmap_header ) ); #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ @@ -296,10 +298,13 @@ /* load other tables */ if ( LOAD_( max_profile ) || - LOAD_( charmaps ) || - LOAD_( names ) || - LOAD_( psnames ) ) + LOAD_( charmaps ) ) goto Exit; + + /* the following tables are optional in PCL fonts -- */ + /* don't check for errors */ + (void)LOAD_( names ); + (void)LOAD_( psnames ); /* do not load the metrics headers and tables if this is an Apple */ /* sbit font file */ @@ -309,12 +314,12 @@ error = sfnt->load_metrics( face, stream, 0 ); if ( error ) goto Exit; - + /* try to load the `vhea' and `vmtx' tables at once */ error = sfnt->load_metrics( face, stream, 1 ); if ( error ) goto Exit; - + if ( LOAD_( os2 ) ) goto Exit; } @@ -327,8 +332,8 @@ if ( sfnt->load_sbits && LOAD_( sbits ) ) { /* return an error if this font file has no outlines */ - if ( error == TT_Err_Table_Missing && has_outline ) - error = FT_Err_Ok; + if ( error == SFNT_Err_Table_Missing && has_outline ) + error = SFNT_Err_Ok; else goto Exit; } @@ -341,7 +346,7 @@ goto Exit; #ifdef TT_CONFIG_OPTION_EXTEND_ENGINE - if ( ( error = TT_Extension_Create( face ) ) != TT_Err_Ok ) + if ( ( error = TT_Extension_Create( face ) ) != SFNT_Err_Ok ) goto Exit; #endif @@ -436,8 +441,8 @@ charmap->root.face = (FT_Face)face; - charmap->root.platform_id = platform; - charmap->root.encoding_id = encoding; + charmap->root.platform_id = (FT_UShort)platform; + charmap->root.encoding_id = (FT_UShort)encoding; charmap->root.encoding = find_encoding( platform, encoding ); /* now, set root->charmap with a unicode charmap */ @@ -537,13 +542,13 @@ root->ascender = face->horizontal.Ascender; root->descender = face->horizontal.Descender; - root->height = root->ascender - root->descender + - face->horizontal.Line_Gap; + root->height = (FT_Short)( root->ascender - root->descender + + face->horizontal.Line_Gap ); /* if the line_gap is 0, we add an extra 15% to the text height -- */ /* this computation is based on various versions of Times New Roman */ if ( face->horizontal.Line_Gap == 0 ) - root->height = ( root->height * 115 + 50 ) / 100; + root->height = (FT_Short)( ( root->height * 115 + 50 ) / 100 ); #if 0 @@ -566,9 +571,9 @@ root->max_advance_width = face->horizontal.advance_Width_Max; - root->max_advance_height = face->vertical_info + root->max_advance_height = (FT_Short)( face->vertical_info ? face->vertical.advance_Height_Max - : root->height; + : root->height ); root->underline_position = face->postscript.underlinePosition; root->underline_thickness = face->postscript.underlineThickness; @@ -586,8 +591,8 @@ #undef LOAD_ - FT_LOCAL_DEF - void SFNT_Done_Face( TT_Face face ) + FT_LOCAL_DEF void + SFNT_Done_Face( TT_Face face ) { FT_Memory memory = face->root.memory; SFNT_Interface* sfnt = (SFNT_Interface*)face->sfnt; Index: xc/extras/freetype2/src/sfnt/sfobjs.h diff -u xc/extras/freetype2/src/sfnt/sfobjs.h:1.1.1.2 xc/extras/freetype2/src/sfnt/sfobjs.h:1.1.1.3 --- xc/extras/freetype2/src/sfnt/sfobjs.h:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/sfnt/sfobjs.h Sun Dec 16 12:49:32 2001 @@ -4,7 +4,7 @@ /* */ /* SFNT object management (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -28,22 +28,22 @@ FT_BEGIN_HEADER - FT_LOCAL - FT_Error SFNT_Init_Face( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - FT_LOCAL - FT_Error SFNT_Load_Face( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); + FT_LOCAL FT_Error + SFNT_Init_Face( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); + + FT_LOCAL FT_Error + SFNT_Load_Face( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); - FT_LOCAL - void SFNT_Done_Face( TT_Face face ); + FT_LOCAL void + SFNT_Done_Face( TT_Face face ); FT_END_HEADER Index: xc/extras/freetype2/src/sfnt/ttcmap.c diff -u xc/extras/freetype2/src/sfnt/ttcmap.c:1.1.1.2 xc/extras/freetype2/src/sfnt/ttcmap.c:1.1.1.4 --- xc/extras/freetype2/src/sfnt/ttcmap.c:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/sfnt/ttcmap.c Sun Dec 16 12:49:32 2001 @@ -4,7 +4,7 @@ /* */ /* TrueType character mapping table (cmap) support (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,11 +18,12 @@ #include <ft2build.h> #include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_TRUETYPE_ERRORS_H #include "ttload.h" #include "ttcmap.h" +#include "sferrors.h" + /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -33,18 +34,29 @@ #define FT_COMPONENT trace_ttcmap - FT_CALLBACK_DEF - FT_UInt code_to_index0( TT_CMapTable* charmap, - FT_ULong char_code ); - FT_CALLBACK_DEF - FT_UInt code_to_index2( TT_CMapTable* charmap, - FT_ULong char_code ); - FT_CALLBACK_DEF - FT_UInt code_to_index4( TT_CMapTable* charmap, - FT_ULong char_code ); - FT_CALLBACK_DEF - FT_UInt code_to_index6( TT_CMapTable* charmap, - FT_ULong char_code ); + FT_CALLBACK_DEF( FT_UInt ) + code_to_index0( TT_CMapTable* charmap, + FT_ULong char_code ); + + FT_CALLBACK_DEF( FT_UInt ) + code_to_index2( TT_CMapTable* charmap, + FT_ULong char_code ); + + FT_CALLBACK_DEF( FT_UInt ) + code_to_index4( TT_CMapTable* charmap, + FT_ULong char_code ); + + FT_CALLBACK_DEF( FT_UInt ) + code_to_index6( TT_CMapTable* charmap, + FT_ULong char_code ); + + FT_CALLBACK_DEF( FT_UInt ) + code_to_index8_12( TT_CMapTable* charmap, + FT_ULong char_code ); + + FT_CALLBACK_DEF( FT_UInt ) + code_to_index10( TT_CMapTable* charmap, + FT_ULong char_code ); /*************************************************************************/ @@ -70,28 +82,32 @@ /* opened). In case of error, all partially allocated tables are */ /* released. */ /* */ - FT_LOCAL_DEF - FT_Error TT_CharMap_Load( TT_Face face, - TT_CMapTable* cmap, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_CharMap_Load( TT_Face face, + TT_CMapTable* cmap, + FT_Stream stream ) { - FT_Error error; - FT_Memory memory; - FT_UShort num_SH, num_Seg, i; - - FT_UShort u, l; - - TT_CMap0* cmap0; - TT_CMap2* cmap2; - TT_CMap4* cmap4; - TT_CMap6* cmap6; + FT_Error error; + FT_Memory memory; + FT_UShort num_SH, num_Seg, i; + FT_ULong j, n; + + FT_UShort u, l; + + TT_CMap0* cmap0; + TT_CMap2* cmap2; + TT_CMap4* cmap4; + TT_CMap6* cmap6; + TT_CMap8_12* cmap8_12; + TT_CMap10* cmap10; TT_CMap2SubHeader* cmap2sub; TT_CMap4Segment* segments; + TT_CMapGroup* groups; if ( cmap->loaded ) - return TT_Err_Ok; + return SFNT_Err_Ok; memory = stream->memory; @@ -103,9 +119,10 @@ case 0: cmap0 = &cmap->c.cmap0; - if ( ALLOC( cmap0->glyphIdArray, 256L ) || + if ( READ_UShort( cmap0->language ) || + ALLOC( cmap0->glyphIdArray, 256L ) || FILE_Read( cmap0->glyphIdArray, 256L ) ) - goto Fail; + goto Fail; cmap->get_index = code_to_index0; break; @@ -117,12 +134,14 @@ /* allocate subheader keys */ if ( ALLOC_ARRAY( cmap2->subHeaderKeys, 256, FT_UShort ) || - ACCESS_Frame( 512L ) ) + ACCESS_Frame( 2L + 512L ) ) goto Fail; + cmap2->language = GET_UShort(); + for ( i = 0; i < 256; i++ ) { - u = GET_UShort() / 8; + u = (FT_UShort)( GET_UShort() / 8 ); cmap2->subHeaderKeys[i] = u; if ( num_SH < u ) @@ -133,14 +152,17 @@ /* load subheaders */ - cmap2->numGlyphId = l = - ( ( cmap->length - 2L * ( 256 + 3 ) - num_SH * 8L ) & 0xFFFF ) / 2; + cmap2->numGlyphId = l = (FT_UShort)( + ( ( cmap->length - 2L * ( 256 + 3 ) - num_SH * 8L ) & 0xFFFF ) / 2 ); if ( ALLOC_ARRAY( cmap2->subHeaders, num_SH + 1, TT_CMap2SubHeader ) || ACCESS_Frame( ( num_SH + 1 ) * 8L ) ) + { + FREE( cmap2->subHeaderKeys ); goto Fail; + } cmap2sub = cmap2->subHeaders; @@ -150,7 +172,8 @@ cmap2sub->entryCount = GET_UShort(); cmap2sub->idDelta = GET_Short(); /* we apply the location offset immediately */ - cmap2sub->idRangeOffset = GET_UShort() - ( num_SH - i ) * 8 - 2; + cmap2sub->idRangeOffset = (FT_UShort)( + GET_UShort() - ( num_SH - i ) * 8 - 2 ); cmap2sub++; } @@ -161,7 +184,11 @@ if ( ALLOC_ARRAY( cmap2->glyphIdArray, l, FT_UShort ) || ACCESS_Frame( l * 2L ) ) + { + FREE( cmap2->subHeaders ); + FREE( cmap2->subHeaderKeys ); goto Fail; + } for ( i = 0; i < l; i++ ) cmap2->glyphIdArray[i] = GET_UShort(); @@ -176,15 +203,16 @@ /* load header */ - if ( ACCESS_Frame( 8L ) ) + if ( ACCESS_Frame( 10L ) ) goto Fail; + cmap4->language = GET_UShort(); cmap4->segCountX2 = GET_UShort(); cmap4->searchRange = GET_UShort(); cmap4->entrySelector = GET_UShort(); cmap4->rangeShift = GET_UShort(); - num_Seg = cmap4->segCountX2 / 2; + num_Seg = (FT_UShort)( cmap4->segCountX2 / 2 ); FORGET_Frame(); @@ -214,31 +242,35 @@ FORGET_Frame(); - cmap4->numGlyphId = l = - ( ( cmap->length - ( 16L + 8L * num_Seg ) ) & 0xFFFF ) / 2; + cmap4->numGlyphId = l = (FT_UShort)( + ( ( cmap->length - ( 16L + 8L * num_Seg ) ) & 0xFFFF ) / 2 ); /* load IDs */ if ( ALLOC_ARRAY( cmap4->glyphIdArray, l, FT_UShort ) || ACCESS_Frame( l * 2L ) ) + { + FREE( cmap4->segments ); goto Fail; + } for ( i = 0; i < l; i++ ) cmap4->glyphIdArray[i] = GET_UShort(); FORGET_Frame(); - cmap->get_index = code_to_index4; - cmap4->last_segment = cmap4->segments; + + cmap->get_index = code_to_index4; break; case 6: cmap6 = &cmap->c.cmap6; - if ( ACCESS_Frame( 4L ) ) + if ( ACCESS_Frame( 6L ) ) goto Fail; + cmap6->language = GET_UShort(); cmap6->firstCode = GET_UShort(); cmap6->entryCount = GET_UShort(); @@ -246,10 +278,8 @@ l = cmap6->entryCount; - if ( ALLOC_ARRAY( cmap6->glyphIdArray, - cmap6->entryCount, - FT_Short ) || - ACCESS_Frame( l * 2L ) ) + if ( ALLOC_ARRAY( cmap6->glyphIdArray, l, FT_Short ) || + ACCESS_Frame( l * 2L ) ) goto Fail; for ( i = 0; i < l; i++ ) @@ -259,12 +289,79 @@ cmap->get_index = code_to_index6; break; + case 8: + case 12: + cmap8_12 = &cmap->c.cmap8_12; + + if ( ACCESS_Frame( 8L ) ) + goto Fail; + + cmap->length = GET_ULong(); + cmap8_12->language = GET_ULong(); + + FORGET_Frame(); + + if ( cmap->format == 8 ) + if ( FILE_Skip( 8192L ) ) + goto Fail; + + if ( READ_ULong( cmap8_12->nGroups ) ) + goto Fail; + + n = cmap8_12->nGroups; + + if ( ALLOC_ARRAY( cmap8_12->groups, n, TT_CMapGroup ) || + ACCESS_Frame( n * 3 * 4L ) ) + goto Fail; + + groups = cmap8_12->groups; + + for ( j = 0; j < n; j++ ) + { + groups[j].startCharCode = GET_ULong(); + groups[j].endCharCode = GET_ULong(); + groups[j].startGlyphID = GET_ULong(); + } + + FORGET_Frame(); + + cmap8_12->last_group = cmap8_12->groups; + + cmap->get_index = code_to_index8_12; + break; + + case 10: + cmap10 = &cmap->c.cmap10; + + if ( ACCESS_Frame( 16L ) ) + goto Fail; + + cmap->length = GET_ULong(); + cmap10->language = GET_ULong(); + cmap10->startCharCode = GET_ULong(); + cmap10->numChars = GET_ULong(); + + FORGET_Frame(); + + n = cmap10->numChars; + + if ( ALLOC_ARRAY( cmap10->glyphs, n, FT_Short ) || + ACCESS_Frame( n * 2L ) ) + goto Fail; + + for ( j = 0; j < n; j++ ) + cmap10->glyphs[j] = GET_UShort(); + + FORGET_Frame(); + cmap->get_index = code_to_index10; + break; + default: /* corrupt character mapping table */ - return TT_Err_Invalid_CharMap_Format; + return SFNT_Err_Invalid_CharMap_Format; } - return TT_Err_Ok; + return SFNT_Err_Ok; Fail: TT_CharMap_Free( face, cmap ); @@ -287,15 +384,15 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_CharMap_Free( TT_Face face, - TT_CMapTable* cmap ) + FT_LOCAL_DEF FT_Error + TT_CharMap_Free( TT_Face face, + TT_CMapTable* cmap ) { FT_Memory memory; if ( !cmap ) - return TT_Err_Ok; + return SFNT_Err_Ok; memory = face->root.driver->root.memory; @@ -322,13 +419,24 @@ cmap->c.cmap6.entryCount = 0; break; + case 8: + case 12: + FREE( cmap->c.cmap8_12.groups ); + cmap->c.cmap8_12.nGroups = 0; + break; + + case 10: + FREE( cmap->c.cmap10.glyphs ); + cmap->c.cmap10.numChars = 0; + break; + default: /* invalid table format, do nothing */ ; } cmap->loaded = FALSE; - return TT_Err_Ok; + return SFNT_Err_Ok; } @@ -349,9 +457,9 @@ /* <Return> */ /* Glyph index into the glyphs array. 0 if the glyph does not exist. */ /* */ - FT_CALLBACK_DEF - FT_UInt code_to_index0( TT_CMapTable* cmap, - FT_ULong charCode ) + FT_CALLBACK_DEF( FT_UInt ) + code_to_index0( TT_CMapTable* cmap, + FT_ULong charCode ) { TT_CMap0* cmap0 = &cmap->c.cmap0; @@ -375,9 +483,9 @@ /* <Return> */ /* Glyph index into the glyphs array. 0 if the glyph does not exist. */ /* */ - FT_CALLBACK_DEF - FT_UInt code_to_index2( TT_CMapTable* cmap, - FT_ULong charCode ) + FT_CALLBACK_DEF( FT_UInt ) + code_to_index2( TT_CMapTable* cmap, + FT_ULong charCode ) { FT_UInt result, index1, offset; FT_UInt char_lo; @@ -395,28 +503,29 @@ { /* an 8-bit character code -- we use the subHeader 0 in this case */ /* to test whether the character code is in the charmap */ - if ( cmap2->subHeaderKeys[char_lo] == 0 ) - result = cmap2->glyphIdArray[char_lo]; + index1 = cmap2->subHeaderKeys[char_lo]; + if ( index1 != 0 ) + return 0; } else { /* a 16-bit character code */ index1 = cmap2->subHeaderKeys[char_hi & 0xFF]; - if ( index1 ) - { - sh2 = cmap2->subHeaders + index1; - char_lo -= sh2->firstCode; + if ( index1 == 0 ) + return 0; + } + + sh2 = cmap2->subHeaders + index1; + char_lo -= sh2->firstCode; - if ( char_lo < (FT_UInt)sh2->entryCount ) - { - offset = sh2->idRangeOffset / 2 + char_lo; - if ( offset < (FT_UInt)cmap2->numGlyphId ) - { - result = cmap2->glyphIdArray[offset]; - if ( result ) - result = ( result + sh2->idDelta ) & 0xFFFF; - } - } + if ( char_lo < (FT_UInt)sh2->entryCount ) + { + offset = sh2->idRangeOffset / 2 + char_lo; + if ( offset < (FT_UInt)cmap2->numGlyphId ) + { + result = cmap2->glyphIdArray[offset]; + if ( result ) + result = ( result + sh2->idDelta ) & 0xFFFF; } } @@ -439,9 +548,9 @@ /* <Return> */ /* Glyph index into the glyphs array. 0 if the glyph does not exist. */ /* */ - FT_CALLBACK_DEF - FT_UInt code_to_index4( TT_CMapTable* cmap, - FT_ULong charCode ) + FT_CALLBACK_DEF( FT_UInt ) + code_to_index4( TT_CMapTable* cmap, + FT_ULong charCode ) { FT_UInt result, index1, segCount; TT_CMap4* cmap4; @@ -451,23 +560,23 @@ cmap4 = &cmap->c.cmap4; result = 0; segCount = cmap4->segCountX2 / 2; - seg4 = cmap4->segments; - limit = seg4 + segCount; + limit = cmap4->segments + segCount; - /* check against the last segment */ + /* first, check against the last used segment */ + seg4 = cmap4->last_segment; /* the following is equivalent to performing two tests, as in */ /* */ /* if ( charCode >= seg4->startCount && charCode <= seg4->endCount ) */ /* */ - /* Yes, that's a bit strange, but it's faster, and the idea behind */ - /* the cache is to significantly speed up charcode to glyph index */ + /* This is a bit strange, but it is faster, and the idea behind the */ + /* cache is to significantly speed up charcode to glyph index */ /* conversion. */ - if ( (FT_ULong)(charCode - seg4->startCount) < - (FT_ULong)(seg4->endCount - seg4->startCount) ) - goto Found; + if ( (FT_ULong)( charCode - seg4->startCount ) < + (FT_ULong)( seg4->endCount - seg4->startCount ) ) + goto Found1; for ( seg4 = cmap4->segments; seg4 < limit; seg4++ ) { @@ -482,9 +591,10 @@ } return 0; - Found: + Found: cmap4->last_segment = seg4; + Found1: /* if the idRangeOffset is 0, we can compute the glyph index */ /* directly */ @@ -498,8 +608,8 @@ + ( seg4 - cmap4->segments ) - segCount ); - if ( index1 < (FT_UInt)cmap4->numGlyphId && - cmap4->glyphIdArray[index1] != 0 ) + if ( index1 < (FT_UInt)cmap4->numGlyphId && + cmap4->glyphIdArray[index1] != 0 ) result = ( cmap4->glyphIdArray[index1] + seg4->idDelta ) & 0xFFFF; } @@ -522,20 +632,122 @@ /* <Return> */ /* Glyph index into the glyphs array. 0 if the glyph does not exist. */ /* */ - FT_CALLBACK_DEF - FT_UInt code_to_index6( TT_CMapTable* cmap, - FT_ULong charCode ) + FT_CALLBACK_DEF( FT_UInt ) + code_to_index6( TT_CMapTable* cmap, + FT_ULong charCode ) { TT_CMap6* cmap6; FT_UInt result = 0; cmap6 = &cmap->c.cmap6; - result = 0; charCode -= cmap6->firstCode; if ( charCode < (FT_UInt)cmap6->entryCount ) - result = cmap6->glyphIdArray[charCode]; + result = cmap6->glyphIdArray[charCode]; + + return result; + } + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* code_to_index8_12 */ + /* */ + /* <Description> */ + /* Converts the (possibly 32bit) character code into a glyph index. */ + /* Uses format 8 or 12. */ + /* */ + /* <Input> */ + /* charCode :: The wanted character code. */ + /* cmap8_12 :: A pointer to a cmap table in format 8 or 12. */ + /* */ + /* <Return> */ + /* Glyph index into the glyphs array. 0 if the glyph does not exist. */ + /* */ + FT_CALLBACK_DEF( FT_UInt ) + code_to_index8_12( TT_CMapTable* cmap, + FT_ULong charCode ) + { + TT_CMap8_12* cmap8_12; + TT_CMapGroup *group, *limit; + + + cmap8_12 = &cmap->c.cmap8_12; + limit = cmap8_12->groups + cmap8_12->nGroups; + + /* first, check against the last used group */ + + group = cmap8_12->last_group; + + /* the following is equivalent to performing two tests, as in */ + /* */ + /* if ( charCode >= group->startCharCode && */ + /* charCode <= group->endCharCode ) */ + /* */ + /* This is a bit strange, but it is faster, and the idea behind the */ + /* cache is to significantly speed up charcode to glyph index */ + /* conversion. */ + + if ( (FT_ULong)( charCode - group->startCharCode ) < + (FT_ULong)( group->endCharCode - group->startCharCode ) ) + goto Found1; + + for ( group = cmap8_12->groups; group < limit; group++ ) + { + /* the ranges are sorted in increasing order. If we are out of */ + /* the range here, the char code isn't in the charmap, so exit. */ + + if ( charCode > group->endCharCode ) + continue; + + if ( charCode >= group->startCharCode ) + goto Found; + } + return 0; + + Found: + cmap8_12->last_group = group; + + Found1: + return group->startGlyphID + (FT_UInt)( charCode - group->startCharCode ); + } + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* code_to_index10 */ + /* */ + /* <Description> */ + /* Converts the (possibly 32bit) character code into a glyph index. */ + /* Uses format 10. */ + /* */ + /* <Input> */ + /* charCode :: The wanted character code. */ + /* cmap10 :: A pointer to a cmap table in format 10. */ + /* */ + /* <Return> */ + /* Glyph index into the glyphs array. 0 if the glyph does not exist. */ + /* */ + FT_CALLBACK_DEF( FT_UInt ) + code_to_index10( TT_CMapTable* cmap, + FT_ULong charCode ) + { + TT_CMap10* cmap10; + FT_UInt result = 0; + + + cmap10 = &cmap->c.cmap10; + charCode -= cmap10->startCharCode; + + /* the overflow trick for comparison works here also since the number */ + /* of glyphs (even if numChars is specified as ULong in the specs) in */ + /* an OpenType font is limited to 64k */ + + if ( charCode < cmap10->numChars ) + result = cmap10->glyphs[charCode]; return result; } Index: xc/extras/freetype2/src/sfnt/ttcmap.h diff -u xc/extras/freetype2/src/sfnt/ttcmap.h:1.1.1.2 xc/extras/freetype2/src/sfnt/ttcmap.h:1.1.1.3 --- xc/extras/freetype2/src/sfnt/ttcmap.h:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/sfnt/ttcmap.h Sun Dec 16 12:49:32 2001 @@ -4,7 +4,7 @@ /* */ /* TrueType character mapping table (cmap) support (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,14 +27,14 @@ FT_BEGIN_HEADER - FT_LOCAL - FT_Error TT_CharMap_Load( TT_Face face, - TT_CMapTable* cmap, - FT_Stream input ); - - FT_LOCAL - FT_Error TT_CharMap_Free( TT_Face face, - TT_CMapTable* cmap ); + FT_LOCAL FT_Error + TT_CharMap_Load( TT_Face face, + TT_CMapTable* cmap, + FT_Stream input ); + + FT_LOCAL FT_Error + TT_CharMap_Free( TT_Face face, + TT_CMapTable* cmap ); FT_END_HEADER Index: xc/extras/freetype2/src/sfnt/ttload.c diff -u xc/extras/freetype2/src/sfnt/ttload.c:1.1.1.2 xc/extras/freetype2/src/sfnt/ttload.c:1.1.1.5 --- xc/extras/freetype2/src/sfnt/ttload.c:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/sfnt/ttload.c Mon Jan 14 11:52:22 2002 @@ -5,7 +5,7 @@ /* Load the basic TrueType tables, i.e., tables that can be either in */ /* TTF or OTF fonts (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -19,13 +19,15 @@ #include <ft2build.h> #include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_TRUETYPE_ERRORS_H #include FT_INTERNAL_STREAM_H #include FT_TRUETYPE_TAGS_H #include "ttload.h" #include "ttcmap.h" +#include "sferrors.h" +#include <stdlib.h> /* for qsort */ + /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -51,9 +53,9 @@ /* <Return> */ /* A pointer to the table directory entry. 0 if not found. */ /* */ - FT_LOCAL_DEF - TT_Table* TT_LookUp_Table( TT_Face face, - FT_ULong tag ) + FT_LOCAL_DEF TT_Table* + TT_LookUp_Table( TT_Face face, + FT_ULong tag ) { TT_Table* entry; TT_Table* limit; @@ -102,11 +104,11 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Goto_Table( TT_Face face, - FT_ULong tag, - FT_Stream stream, - FT_ULong* length ) + FT_LOCAL_DEF FT_Error + TT_Goto_Table( TT_Face face, + FT_ULong tag, + FT_Stream stream, + FT_ULong* length ) { TT_Table* table; FT_Error error; @@ -122,7 +124,7 @@ goto Exit; } else - error = TT_Err_Table_Missing; + error = SFNT_Err_Table_Missing; Exit: return error; @@ -157,11 +159,11 @@ /* The header will be checked whether it is valid by looking at the */ /* values of `search_range', `entry_selector', and `range_shift'. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_SFNT_Header( TT_Face face, - FT_Stream stream, - FT_Long face_index, - SFNT_Header* sfnt ) + FT_LOCAL_DEF FT_Error + TT_Load_SFNT_Header( TT_Face face, + FT_Stream stream, + FT_Long face_index, + SFNT_Header* sfnt ) { FT_Error error; FT_ULong format_tag; @@ -233,7 +235,7 @@ /* check face index */ if ( face_index >= face->ttc_header.count ) { - error = TT_Err_Bad_Argument; + error = SFNT_Err_Bad_Argument; goto Exit; } @@ -262,7 +264,7 @@ entry_selector * 2 <= num_tables ) { FT_TRACE2(( "TT_Load_SFNT_Header: file is not SFNT!\n" )); - error = FT_Err_Unknown_File_Format; + error = SFNT_Err_Unknown_File_Format; } } @@ -292,10 +294,10 @@ /* <Note> */ /* The stream cursor must be at the font file's origin. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_Directory( TT_Face face, - FT_Stream stream, - SFNT_Header* sfnt ) + FT_LOCAL_DEF FT_Error + TT_Load_Directory( TT_Face face, + FT_Stream stream, + SFNT_Header* sfnt ) { FT_Error error; FT_Memory memory = stream->memory; @@ -386,12 +388,12 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_Any( TT_Face face, - FT_ULong tag, - FT_Long offset, - FT_Byte* buffer, - FT_ULong* length ) + FT_LOCAL_DEF FT_Error + TT_Load_Any( TT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte* buffer, + FT_ULong* length ) { FT_Error error; FT_Stream stream; @@ -405,7 +407,7 @@ table = TT_LookUp_Table( face, tag ); if ( !table ) { - error = TT_Err_Table_Missing; + error = SFNT_Err_Table_Missing; goto Exit; } @@ -420,7 +422,7 @@ { *length = size; - return TT_Err_Ok; + return SFNT_Err_Ok; } if ( length ) @@ -451,10 +453,10 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - static - FT_Error TT_Load_Generic_Header( TT_Face face, - FT_Stream stream, - FT_ULong tag ) + static FT_Error + TT_Load_Generic_Header( TT_Face face, + FT_Stream stream, + FT_ULong tag ) { FT_Error error; TT_Header* header; @@ -499,7 +501,7 @@ error = face->goto_table( face, tag, stream, 0 ); if ( error ) { - FT_TRACE2(( "TT_Load_Generic_Table: Font table is missing!\n" )); + FT_TRACE2(( "TT_Load_Generic_Header: Font table is missing!\n" )); goto Exit; } @@ -510,16 +512,16 @@ FT_TRACE2(( " Units per EM: %8u\n", header->Units_Per_EM )); FT_TRACE2(( " IndexToLoc: %8d\n", header->Index_To_Loc_Format )); - FT_TRACE2(( "TT_Load_Generic_Table: Font table loaded.\n" )); + FT_TRACE2(( "TT_Load_Generic_Header: Font table loaded.\n" )); Exit: return error; } - FT_LOCAL_DEF - FT_Error TT_Load_Header( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_Header( TT_Face face, + FT_Stream stream ) { return TT_Load_Generic_Header( face, stream, TTAG_head ); } @@ -527,9 +529,9 @@ #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - FT_LOCAL_DEF - FT_Error TT_Load_Bitmap_Header( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_Bitmap_Header( TT_Face face, + FT_Stream stream ) { return TT_Load_Generic_Header( face, stream, TTAG_bhed ); } @@ -552,9 +554,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_MaxProfile( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_MaxProfile( TT_Face face, + FT_Stream stream ) { FT_Error error; TT_MaxProfile* maxProfile = &face->max_profile; @@ -564,9 +566,15 @@ #undef FT_STRUCTURE #define FT_STRUCTURE TT_MaxProfile - FT_FRAME_START( 32 ), - FT_FRAME_ULONG ( version ), + FT_FRAME_START( 6 ), + FT_FRAME_LONG ( version ), FT_FRAME_USHORT( numGlyphs ), + FT_FRAME_END + }; + + const FT_Frame_Field maxp_fields_extra[] = + { + FT_FRAME_START( 26 ), FT_FRAME_USHORT( maxPoints ), FT_FRAME_USHORT( maxContours ), FT_FRAME_USHORT( maxCompositePoints ), @@ -580,7 +588,8 @@ FT_FRAME_USHORT( maxSizeOfInstructions ), FT_FRAME_USHORT( maxComponentElements ), FT_FRAME_USHORT( maxComponentDepth ), - FT_FRAME_END }; + FT_FRAME_END + }; FT_TRACE2(( "Load_TT_MaxProfile: %08p\n", face )); @@ -592,36 +601,58 @@ if ( READ_Fields( maxp_fields, maxProfile ) ) goto Exit; - /* XXX: an adjustment that is necessary to load certain */ - /* broken fonts like `Keystrokes MT' :-( */ - /* */ - /* We allocate 64 function entries by default when */ - /* the maxFunctionDefs field is null. */ - - if ( maxProfile->maxFunctionDefs == 0 ) - maxProfile->maxFunctionDefs = 64; - - face->root.num_glyphs = maxProfile->numGlyphs; - - face->root.internal->max_points = MAX( maxProfile->maxCompositePoints, - maxProfile->maxPoints ); - - face->root.internal->max_contours = MAX( maxProfile->maxCompositeContours, - maxProfile->maxContours ); - - face->max_components = (FT_ULong)maxProfile->maxComponentElements + - maxProfile->maxComponentDepth; - - /* XXX: some fonts have maxComponents set to 0; we will */ - /* then use 16 of them by default. */ - if ( face->max_components == 0 ) - face->max_components = 16; - - /* We also increase maxPoints and maxContours in order to support */ - /* some broken fonts. */ - face->root.internal->max_points += 8; - face->root.internal->max_contours += 4; + maxProfile->maxPoints = 0; + maxProfile->maxContours = 0; + maxProfile->maxCompositePoints = 0; + maxProfile->maxCompositeContours = 0; + maxProfile->maxZones = 0; + maxProfile->maxTwilightPoints = 0; + maxProfile->maxStorage = 0; + maxProfile->maxFunctionDefs = 0; + maxProfile->maxInstructionDefs = 0; + maxProfile->maxStackElements = 0; + maxProfile->maxSizeOfInstructions = 0; + maxProfile->maxComponentElements = 0; + maxProfile->maxComponentDepth = 0; + if ( maxProfile->version >= 0x10000L ) + { + if ( READ_Fields( maxp_fields_extra, maxProfile ) ) + goto Exit; + + /* XXX: an adjustment that is necessary to load certain */ + /* broken fonts like `Keystrokes MT' :-( */ + /* */ + /* We allocate 64 function entries by default when */ + /* the maxFunctionDefs field is null. */ + + if ( maxProfile->maxFunctionDefs == 0 ) + maxProfile->maxFunctionDefs = 64; + + face->root.num_glyphs = maxProfile->numGlyphs; + + face->root.internal->max_points = + (FT_UShort)MAX( maxProfile->maxCompositePoints, + maxProfile->maxPoints ); + + face->root.internal->max_contours = + (FT_Short)MAX( maxProfile->maxCompositeContours, + maxProfile->maxContours ); + + face->max_components = (FT_ULong)maxProfile->maxComponentElements + + maxProfile->maxComponentDepth; + + /* XXX: some fonts have maxComponents set to 0; we will */ + /* then use 16 of them by default. */ + if ( face->max_components == 0 ) + face->max_components = 16; + + /* We also increase maxPoints and maxContours in order to support */ + /* some broken fonts. */ + face->root.internal->max_points += (FT_UShort) 8; + face->root.internal->max_contours += (FT_Short) 4; + } + FT_TRACE2(( "MAXP loaded.\n" )); Exit: @@ -645,10 +676,10 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - static - FT_Error TT_Load_Metrics( TT_Face face, - FT_Stream stream, - FT_Bool vertical ) + static FT_Error + TT_Load_Metrics( TT_Face face, + FT_Stream stream, + FT_Bool vertical ) { FT_Error error; FT_Memory memory = stream->memory; @@ -679,7 +710,7 @@ /* Set number_Of_VMetrics to 0! */ FT_TRACE2(( " no vertical header in file.\n" )); face->vertical.number_Of_VMetrics = 0; - error = TT_Err_Ok; + error = SFNT_Err_Ok; goto Exit; } @@ -693,7 +724,7 @@ if ( error ) { FT_ERROR(( " no horizontal metrics in file!\n" )); - error = TT_Err_Hmtx_Table_Missing; + error = SFNT_Err_Hmtx_Table_Missing; goto Exit; } @@ -713,8 +744,8 @@ vertical ? "Vertical" : "Horizontal" )); - error = vertical ? TT_Err_Invalid_Vert_Metrics - : TT_Err_Invalid_Horiz_Metrics; + error = vertical ? SFNT_Err_Invalid_Vert_Metrics + : SFNT_Err_Invalid_Horiz_Metrics; goto Exit; } @@ -751,7 +782,7 @@ /* fonts usually only, nothing serious will happen */ if ( num_shorts > num_shorts_checked && num_shorts_checked > 0 ) { - FT_Short val = *(shorts)[num_shorts_checked - 1]; + FT_Short val = (*shorts)[num_shorts_checked - 1]; limit = *shorts + num_shorts; @@ -785,10 +816,10 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_Metrics_Header( TT_Face face, - FT_Stream stream, - FT_Bool vertical ) + FT_LOCAL_DEF FT_Error + TT_Load_Metrics_Header( TT_Face face, + FT_Stream stream, + FT_Bool vertical ) { FT_Error error; TT_HoriHeader* header; @@ -809,11 +840,11 @@ FT_FRAME_SHORT ( xMax_Extent ), FT_FRAME_SHORT ( caret_Slope_Rise ), FT_FRAME_SHORT ( caret_Slope_Run ), + FT_FRAME_SHORT ( caret_Offset ), FT_FRAME_SHORT ( Reserved[0] ), FT_FRAME_SHORT ( Reserved[1] ), FT_FRAME_SHORT ( Reserved[2] ), FT_FRAME_SHORT ( Reserved[3] ), - FT_FRAME_SHORT ( Reserved[4] ), FT_FRAME_SHORT ( metric_Data_Format ), FT_FRAME_USHORT( number_Of_HMetrics ), FT_FRAME_END @@ -831,7 +862,7 @@ error = face->goto_table( face, TTAG_vhea, stream, 0 ); if ( error ) { - error = TT_Err_Ok; + error = SFNT_Err_Ok; goto Exit; } @@ -845,7 +876,7 @@ error = face->goto_table( face, TTAG_hhea, stream, 0 ); if ( error ) { - error = TT_Err_Horiz_Header_Missing; + error = SFNT_Err_Horiz_Header_Missing; goto Exit; } @@ -884,9 +915,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_Names( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_Names( TT_Face face, + FT_Stream stream ) { FT_Error error; FT_Memory memory = stream->memory; @@ -931,7 +962,7 @@ { /* The name table is required so indicate failure. */ FT_TRACE2(( "is missing!\n" )); - error = TT_Err_Name_Table_Missing; + error = SFNT_Err_Name_Table_Missing; goto Exit; } @@ -1050,8 +1081,8 @@ /* <Input> */ /* face :: A handle to the target face object. */ /* */ - FT_LOCAL_DEF - void TT_Free_Names( TT_Face face ) + FT_LOCAL_DEF void + TT_Free_Names( TT_Face face ) { FT_Memory memory = face->root.driver->root.memory; TT_NameTable* names = &face->name_table; @@ -1085,9 +1116,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_CMap( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_CMap( TT_Face face, + FT_Stream stream ) { FT_Error error; FT_Memory memory = stream->memory; @@ -1110,10 +1141,9 @@ #undef FT_STRUCTURE #define FT_STRUCTURE TT_CMapTable - FT_FRAME_START( 6 ), + FT_FRAME_START( 4 ), FT_FRAME_USHORT( format ), FT_FRAME_USHORT( length ), - FT_FRAME_USHORT( version ), FT_FRAME_END }; @@ -1123,7 +1153,7 @@ error = face->goto_table( face, TTAG_cmap, stream, 0 ); if ( error ) { - error = TT_Err_CMap_Table_Missing; + error = SFNT_Err_CMap_Table_Missing; goto Exit; } @@ -1200,18 +1230,18 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_OS2( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_OS2( TT_Face face, + FT_Stream stream ) { FT_Error error; TT_OS2* os2; + const FT_Frame_Field os2_fields[] = + { #undef FT_STRUCTURE #define FT_STRUCTURE TT_OS2 - const FT_Frame_Field os2_fields[] = - { FT_FRAME_START( 78 ), FT_FRAME_USHORT( version ), FT_FRAME_SHORT ( xAvgCharWidth ), @@ -1289,7 +1319,7 @@ { FT_TRACE2(( "is missing!\n" )); face->os2.version = 0xFFFF; - error = TT_Err_Ok; + error = SFNT_Err_Ok; goto Exit; } @@ -1300,6 +1330,11 @@ os2->ulCodePageRange1 = 0; os2->ulCodePageRange2 = 0; + os2->sxHeight = 0; + os2->sCapHeight = 0; + os2->usDefaultChar = 0; + os2->usBreakChar = 0; + os2->usMaxContext = 0; if ( os2->version >= 0x0001 ) { @@ -1337,9 +1372,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_PostScript( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_PostScript( TT_Face face, + FT_Stream stream ) { FT_Error error; TT_Postscript* post = &face->postscript; @@ -1367,7 +1402,7 @@ error = face->goto_table( face, TTAG_post, stream, 0 ); if ( error ) - return TT_Err_Post_Table_Missing; + return SFNT_Err_Post_Table_Missing; if ( READ_Fields( post_fields, post ) ) return error; @@ -1376,7 +1411,7 @@ /* module (ttpost). */ FT_TRACE2(( "loaded\n" )); - return TT_Err_Ok; + return SFNT_Err_Ok; } @@ -1395,9 +1430,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_PCLT( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_PCLT( TT_Face face, + FT_Stream stream ) { static const FT_Frame_Field pclt_fields[] = { @@ -1434,7 +1469,7 @@ { FT_TRACE2(( "missing (optional)\n" )); pclt->Version = 0; - return TT_Err_Ok; + return SFNT_Err_Ok; } if ( READ_Fields( pclt_fields, pclt ) ) @@ -1462,9 +1497,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_Gasp( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_Gasp( TT_Face face, + FT_Stream stream ) { FT_Error error; FT_Memory memory = stream->memory; @@ -1478,7 +1513,7 @@ /* the gasp table is optional */ error = face->goto_table( face, TTAG_gasp, stream, 0 ); if ( error ) - return TT_Err_Ok; + return SFNT_Err_Ok; if ( ACCESS_Frame( 4L ) ) goto Exit; @@ -1516,6 +1551,11 @@ } + FT_CALLBACK_DEF( int ) + tt_kern_pair_compare( const void* a, + const void* b ); + + /*************************************************************************/ /* */ /* <Function> */ @@ -1534,25 +1574,25 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_Kern( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_Kern( TT_Face face, + FT_Stream stream ) { FT_Error error; FT_Memory memory = stream->memory; - FT_UInt n, num_tables, version; + FT_UInt n, num_tables; /* the kern table is optional; exit silently if it is missing */ error = face->goto_table( face, TTAG_kern, stream, 0 ); if ( error ) - return TT_Err_Ok; + return SFNT_Err_Ok; if ( ACCESS_Frame( 4L ) ) goto Exit; - version = GET_UShort(); + (void)GET_UShort(); /* version */ num_tables = GET_UShort(); FORGET_Frame(); @@ -1566,7 +1606,7 @@ if ( ACCESS_Frame( 6L ) ) goto Exit; - version = GET_UShort(); /* version */ + (void)GET_UShort(); /* version */ length = GET_UShort() - 6; /* substract header length */ coverage = GET_UShort(); @@ -1607,6 +1647,27 @@ face->num_kern_pairs = num_pairs; face->kern_table_index = n; + + /* ensure that the kerning pair table is sorted (yes, some */ + /* fonts have unsorted tables!) */ + { + FT_UInt i; + TT_Kern_0_Pair* pair0; + + + pair0 = face->kern_pairs; + + for ( i = 1; i < num_pairs; i++, pair0++ ) + { + if ( tt_kern_pair_compare( pair0, pair0 + 1 ) != -1 ) + { + qsort( (void*)face->kern_pairs, (int)num_pairs, + sizeof ( TT_Kern_0_Pair ), tt_kern_pair_compare ); + break; + } + } + } + goto Exit; } @@ -1624,6 +1685,27 @@ } +#undef TT_KERN_INDEX +#define TT_KERN_INDEX( g1, g2 ) ( ( (FT_ULong)g1 << 16 ) | g2 ) + + FT_CALLBACK_DEF( int ) + tt_kern_pair_compare( const void* a, + const void* b ) + { + TT_Kern_0_Pair* pair1 = (TT_Kern_0_Pair*)a; + TT_Kern_0_Pair* pair2 = (TT_Kern_0_Pair*)b; + + FT_ULong index1 = TT_KERN_INDEX( pair1->left, pair1->right ); + FT_ULong index2 = TT_KERN_INDEX( pair2->left, pair2->right ); + + + return ( index1 < index2 ? -1 : + ( index1 > index2 ? 1 : 0 )); + } + +#undef TT_KERN_INDEX + + /*************************************************************************/ /* */ /* <Function> */ @@ -1639,9 +1721,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_Hdmx( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_Hdmx( TT_Face face, + FT_Stream stream ) { FT_Error error; FT_Memory memory = stream->memory; @@ -1658,7 +1740,7 @@ /* this table is optional */ error = face->goto_table( face, TTAG_hdmx, stream, 0 ); if ( error ) - return TT_Err_Ok; + return SFNT_Err_Ok; if ( ACCESS_Frame( 8L ) ) goto Exit; @@ -1717,8 +1799,8 @@ /* <Input> */ /* face :: A handle to the target face object. */ /* */ - FT_LOCAL_DEF - void TT_Free_Hdmx( TT_Face face ) + FT_LOCAL_DEF void + TT_Free_Hdmx( TT_Face face ) { if ( face ) { Index: xc/extras/freetype2/src/sfnt/ttload.h diff -u xc/extras/freetype2/src/sfnt/ttload.h:1.1.1.2 xc/extras/freetype2/src/sfnt/ttload.h:1.1.1.3 --- xc/extras/freetype2/src/sfnt/ttload.h:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/sfnt/ttload.h Sun Dec 16 12:49:32 2001 @@ -5,7 +5,7 @@ /* Load the basic TrueType tables, i.e., tables that can be either in */ /* TTF or OTF fonts (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -29,101 +29,102 @@ FT_BEGIN_HEADER - FT_LOCAL - TT_Table* TT_LookUp_Table( TT_Face face, - FT_ULong tag ); + FT_LOCAL TT_Table* + TT_LookUp_Table( TT_Face face, + FT_ULong tag ); - FT_LOCAL - FT_Error TT_Goto_Table( TT_Face face, - FT_ULong tag, - FT_Stream stream, - FT_ULong* length ); + FT_LOCAL FT_Error + TT_Goto_Table( TT_Face face, + FT_ULong tag, + FT_Stream stream, + FT_ULong* length ); - FT_LOCAL - FT_Error TT_Load_SFNT_Header( TT_Face face, - FT_Stream stream, - FT_Long face_index, - SFNT_Header* sfnt ); - FT_LOCAL - FT_Error TT_Load_Directory( TT_Face face, - FT_Stream stream, - SFNT_Header* sfnt ); + FT_LOCAL FT_Error + TT_Load_SFNT_Header( TT_Face face, + FT_Stream stream, + FT_Long face_index, + SFNT_Header* sfnt ); - FT_LOCAL - FT_Error TT_Load_Any( TT_Face face, - FT_ULong tag, - FT_Long offset, - FT_Byte* buffer, - FT_ULong* length ); + FT_LOCAL FT_Error + TT_Load_Directory( TT_Face face, + FT_Stream stream, + SFNT_Header* sfnt ); + FT_LOCAL FT_Error + TT_Load_Any( TT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte* buffer, + FT_ULong* length ); - FT_LOCAL - FT_Error TT_Load_Header( TT_Face face, - FT_Stream stream ); + FT_LOCAL FT_Error + TT_Load_Header( TT_Face face, + FT_Stream stream ); - FT_LOCAL - FT_Error TT_Load_Metrics_Header( TT_Face face, - FT_Stream stream, - FT_Bool vertical ); + FT_LOCAL FT_Error + TT_Load_Metrics_Header( TT_Face face, + FT_Stream stream, + FT_Bool vertical ); - FT_LOCAL - FT_Error TT_Load_CMap( TT_Face face, - FT_Stream stream ); + FT_LOCAL FT_Error + TT_Load_CMap( TT_Face face, + FT_Stream stream ); - FT_LOCAL - FT_Error TT_Load_MaxProfile( TT_Face face, - FT_Stream stream ); + FT_LOCAL FT_Error + TT_Load_MaxProfile( TT_Face face, + FT_Stream stream ); - FT_LOCAL - FT_Error TT_Load_Names( TT_Face face, - FT_Stream stream ); + FT_LOCAL FT_Error + TT_Load_Names( TT_Face face, + FT_Stream stream ); - FT_LOCAL - FT_Error TT_Load_OS2( TT_Face face, - FT_Stream stream ); + + FT_LOCAL FT_Error + TT_Load_OS2( TT_Face face, + FT_Stream stream ); - FT_LOCAL - FT_Error TT_Load_PostScript( TT_Face face, - FT_Stream stream ); + FT_LOCAL FT_Error + TT_Load_PostScript( TT_Face face, + FT_Stream stream ); - FT_LOCAL - FT_Error TT_Load_Hdmx( TT_Face face, - FT_Stream stream ); + FT_LOCAL FT_Error + TT_Load_Hdmx( TT_Face face, + FT_Stream stream ); - FT_LOCAL - FT_Error TT_Load_PCLT( TT_Face face, - FT_Stream stream ); + FT_LOCAL FT_Error + TT_Load_PCLT( TT_Face face, + FT_Stream stream ); - FT_LOCAL - void TT_Free_Names( TT_Face face ); + FT_LOCAL void + TT_Free_Names( TT_Face face ); - FT_LOCAL - void TT_Free_Hdmx ( TT_Face face ); + FT_LOCAL void + TT_Free_Hdmx ( TT_Face face ); - FT_LOCAL - FT_Error TT_Load_Kern( TT_Face face, - FT_Stream stream ); + FT_LOCAL FT_Error + TT_Load_Kern( TT_Face face, + FT_Stream stream ); - FT_LOCAL - FT_Error TT_Load_Gasp( TT_Face face, - FT_Stream stream ); + FT_LOCAL FT_Error + TT_Load_Gasp( TT_Face face, + FT_Stream stream ); #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - FT_LOCAL - FT_Error TT_Load_Bitmap_Header( TT_Face face, - FT_Stream stream ); + FT_LOCAL FT_Error + TT_Load_Bitmap_Header( TT_Face face, + FT_Stream stream ); #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ Index: xc/extras/freetype2/src/sfnt/ttpost.c diff -u xc/extras/freetype2/src/sfnt/ttpost.c:1.1.1.2 xc/extras/freetype2/src/sfnt/ttpost.c:1.1.1.4 --- xc/extras/freetype2/src/sfnt/ttpost.c:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/sfnt/ttpost.c Sun Dec 16 12:49:32 2001 @@ -5,7 +5,7 @@ /* Postcript name table processing for TrueType and OpenType fonts */ /* (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,11 +27,11 @@ #include <ft2build.h> #include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_TRUETYPE_ERRORS_H #include FT_TRUETYPE_TAGS_H #include "ttpost.h" #include "ttload.h" +#include "sferrors.h" /*************************************************************************/ /* */ @@ -151,9 +151,9 @@ #endif /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */ - static - FT_Error Load_Format_20( TT_Face face, - FT_Stream stream ) + static FT_Error + Load_Format_20( TT_Face face, + FT_Stream stream ) { FT_Memory memory = stream->memory; FT_Error error; @@ -176,7 +176,7 @@ if ( num_glyphs > face->root.num_glyphs ) { - error = TT_Err_Invalid_File_Format; + error = SFNT_Err_Invalid_File_Format; goto Exit; } @@ -212,7 +212,7 @@ { index -= 257; if ( index > num_names ) - num_names = index; + num_names = (FT_UShort)index; } } } @@ -244,12 +244,12 @@ TT_Post_20* table = &face->postscript_names.names.format_20; - table->num_glyphs = num_glyphs; - table->num_names = num_names; + table->num_glyphs = (FT_UShort)num_glyphs; + table->num_names = (FT_UShort)num_names; table->glyph_indices = glyph_indices; table->glyph_names = name_strings; } - return TT_Err_Ok; + return SFNT_Err_Ok; Fail1: @@ -270,9 +270,9 @@ } - static - FT_Error Load_Format_25( TT_Face face, - FT_Stream stream ) + static FT_Error + Load_Format_25( TT_Face face, + FT_Stream stream ) { FT_Memory memory = stream->memory; FT_Error error; @@ -288,7 +288,7 @@ /* check the number of glyphs */ if ( num_glyphs > face->root.num_glyphs || num_glyphs > 258 ) { - error = TT_Err_Invalid_File_Format; + error = SFNT_Err_Invalid_File_Format; goto Exit; } @@ -308,7 +308,7 @@ if ( index < 0 || index > num_glyphs ) { - error = TT_Err_Invalid_File_Format; + error = SFNT_Err_Invalid_File_Format; goto Fail; } } @@ -319,11 +319,11 @@ TT_Post_25* table = &face->postscript_names.names.format_25; - table->num_glyphs = num_glyphs; + table->num_glyphs = (FT_UShort)num_glyphs; table->offsets = offset_table; } - return TT_Err_Ok; + return SFNT_Err_Ok; Fail: FREE( offset_table ); @@ -333,8 +333,8 @@ } - static - FT_Error Load_Post_Names( TT_Face face ) + static FT_Error + Load_Post_Names( TT_Face face ) { FT_Stream stream; FT_Error error; @@ -367,7 +367,7 @@ break; default: - error = TT_Err_Invalid_File_Format; + error = SFNT_Err_Invalid_File_Format; } face->postscript_names.loaded = 1; @@ -377,8 +377,8 @@ } - FT_LOCAL_DEF - void TT_Free_Post_Names( TT_Face face ) + FT_LOCAL_DEF void + TT_Free_Post_Names( TT_Face face ) { FT_Memory memory = face->root.memory; TT_Post_Names* names = &face->postscript_names; @@ -441,10 +441,10 @@ /* <Output> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Get_PS_Name( TT_Face face, - FT_UInt index, - FT_String** PSname ) + FT_LOCAL_DEF FT_Error + TT_Get_PS_Name( TT_Face face, + FT_UInt index, + FT_String** PSname ) { FT_Error error; TT_Post_Names* names; @@ -455,15 +455,15 @@ if ( !face ) - return TT_Err_Invalid_Face_Handle; + return SFNT_Err_Invalid_Face_Handle; if ( index >= (FT_UInt)face->root.num_glyphs ) - return TT_Err_Invalid_Glyph_Index; + return SFNT_Err_Invalid_Glyph_Index; #ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES psnames = (PSNames_Interface*)face->psnames; if ( !psnames ) - return TT_Err_Unimplemented_Feature; + return SFNT_Err_Unimplemented_Feature; #endif names = &face->postscript_names; @@ -527,7 +527,7 @@ break; /* nothing to do */ } - return TT_Err_Ok; + return SFNT_Err_Ok; } Index: xc/extras/freetype2/src/sfnt/ttpost.h diff -u xc/extras/freetype2/src/sfnt/ttpost.h:1.1.1.2 xc/extras/freetype2/src/sfnt/ttpost.h:1.1.1.4 --- xc/extras/freetype2/src/sfnt/ttpost.h:1.1.1.2 Tue May 15 23:45:36 2001 +++ xc/extras/freetype2/src/sfnt/ttpost.h Sun Dec 16 12:49:32 2001 @@ -5,7 +5,7 @@ /* Postcript name table processing for TrueType and OpenType fonts */ /* (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -29,17 +29,13 @@ FT_BEGIN_HEADER -#define TT_Err_Invalid_Post_Table_Format 0x0B00 -#define TT_Err_Invalid_Post_Table 0x0B01 + FT_LOCAL FT_Error + TT_Get_PS_Name( TT_Face face, + FT_UInt index, + FT_String** PSname ); - - FT_LOCAL - FT_Error TT_Get_PS_Name( TT_Face face, - FT_UInt index, - FT_String** PSname ); - - FT_LOCAL - void TT_Free_Post_Names( TT_Face face ); + FT_LOCAL void + TT_Free_Post_Names( TT_Face face ); FT_END_HEADER Index: xc/extras/freetype2/src/sfnt/ttsbit.c diff -u xc/extras/freetype2/src/sfnt/ttsbit.c:1.1.1.2 xc/extras/freetype2/src/sfnt/ttsbit.c:1.1.1.5 --- xc/extras/freetype2/src/sfnt/ttsbit.c:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/sfnt/ttsbit.c Mon Jan 14 11:52:22 2002 @@ -4,7 +4,7 @@ /* */ /* TrueType and OpenType embedded bitmap support (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,12 +18,13 @@ #include <ft2build.h> #include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_TRUETYPE_ERRORS_H #include FT_INTERNAL_STREAM_H #include FT_TRUETYPE_TAGS_H #include "ttsbit.h" +#include "sferrors.h" + /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -62,20 +63,20 @@ /* convention). A positive y offset indicates a downwards */ /* direction! */ /* */ - static - void blit_sbit( FT_Bitmap* target, - FT_Byte* source, - FT_Int line_bits, - FT_Bool byte_padded, - FT_Int x_offset, - FT_Int y_offset ) + static void + blit_sbit( FT_Bitmap* target, + FT_Byte* source, + FT_Int line_bits, + FT_Bool byte_padded, + FT_Int x_offset, + FT_Int y_offset ) { FT_Byte* line_buff; FT_Int line_incr; FT_Int height; FT_UShort acc; - FT_Byte loaded; + FT_UInt loaded; /* first of all, compute starting write position */ @@ -103,10 +104,10 @@ for ( height = target->rows; height > 0; height-- ) { - FT_Byte* cur = line_buff; /* current write cursor */ - FT_Int count = line_bits; /* # of bits to extract per line */ - FT_Byte shift = x_offset & 7; /* current write shift */ - FT_Byte space = 8 - shift; + FT_Byte* cur = line_buff; /* current write cursor */ + FT_Int count = line_bits; /* # of bits to extract per line */ + FT_Byte shift = (FT_Byte)( x_offset & 7 ); /* current write shift */ + FT_Byte space = (FT_Byte)( 8 - shift ); /* first of all, read individual source bytes */ @@ -122,7 +123,7 @@ /* ensure that there are at least 8 bits in the accumulator */ if ( loaded < 8 ) { - acc |= (FT_UShort)*source++ << ( 8 - loaded ); + acc |= (FT_UShort)((FT_UShort)*source++ << ( 8 - loaded )); loaded += 8; } @@ -130,8 +131,8 @@ val = (FT_Byte)( acc >> 8 ); if ( shift ) { - cur[0] |= val >> shift; - cur[1] |= val << space; + cur[0] |= (FT_Byte)(val >> shift); + cur[1] |= (FT_Byte)(val << space); } else cur[0] |= val; @@ -155,18 +156,18 @@ /* ensure that there are at least `count' bits in the accumulator */ - if ( loaded < count ) + if ( (FT_Int)loaded < count ) { - acc |= (FT_UShort)*source++ << ( 8 - loaded ); + acc |= (FT_UShort)((FT_UShort)*source++ << ( 8 - loaded )); loaded += 8; } /* now write remaining bits */ - val = ( (FT_Byte)( acc >> 8 ) ) & ~( 0xFF >> count ); - cur[0] |= val >> shift; + val = (FT_Byte)( ( (FT_Byte)( acc >> 8 ) ) & ~( 0xFF >> count ) ); + cur[0] |= (FT_Byte)(val >> shift); if ( count > space ) - cur[1] |= val << space; + cur[1] |= (FT_Byte)(val << space); acc <<= count; loaded -= count; @@ -174,7 +175,10 @@ /* now, skip to next line */ if ( byte_padded ) - acc = loaded = 0; /* clear accumulator on byte-padded lines */ + { + acc = 0; + loaded = 0; /* clear accumulator on byte-padded lines */ + } line_buff += line_incr; } @@ -217,9 +221,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - static - FT_Error Load_SBit_Const_Metrics( TT_SBit_Range* range, - FT_Stream stream ) + static FT_Error + Load_SBit_Const_Metrics( TT_SBit_Range* range, + FT_Stream stream ) { FT_Error error; @@ -249,10 +253,10 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - static - FT_Error Load_SBit_Range_Codes( TT_SBit_Range* range, - FT_Stream stream, - FT_Bool load_offsets ) + static FT_Error + Load_SBit_Range_Codes( TT_SBit_Range* range, + FT_Stream stream, + FT_Bool load_offsets ) { FT_Error error; FT_ULong count, n, size; @@ -312,9 +316,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - static - FT_Error Load_SBit_Range( TT_SBit_Range* range, - FT_Stream stream ) + static FT_Error + Load_SBit_Range( TT_SBit_Range* range, + FT_Stream stream ) { FT_Error error; FT_Memory memory = stream->memory; @@ -327,7 +331,7 @@ { FT_ULong num_glyphs, n; FT_Int size_elem; - FT_Bool large = ( range->index_format == 1 ); + FT_Bool large = FT_BOOL( range->index_format == 1 ); num_glyphs = range->last_glyph - range->first_glyph + 1L; @@ -363,7 +367,7 @@ break; default: - error = TT_Err_Invalid_File_Format; + error = SFNT_Err_Invalid_File_Format; } Exit: @@ -387,9 +391,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_SBit_Strikes( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_SBit_Strikes( TT_Face face, + FT_Stream stream ) { FT_Error error = 0; FT_Memory memory = stream->memory; @@ -469,7 +473,7 @@ num_strikes >= 0x10000L ) { FT_ERROR(( "TT_Load_SBit_Strikes: invalid table version!\n" )); - error = TT_Err_Invalid_File_Format; + error = SFNT_Err_Invalid_File_Format; goto Exit; } @@ -584,8 +588,8 @@ /* <Input> */ /* face :: The target face object. */ /* */ - FT_LOCAL_DEF - void TT_Free_SBit_Strikes( TT_Face face ) + FT_LOCAL_DEF void + TT_Free_SBit_Strikes( TT_Face face ) { FT_Memory memory = face->root.memory; TT_SBit_Strike* strike = face->sbit_strikes; @@ -618,19 +622,19 @@ face->num_sbit_strikes = 0; } - - FT_LOCAL_DEF - FT_Error TT_Set_SBit_Strike( TT_Face face, - FT_Int x_ppem, - FT_Int y_ppem, - FT_ULong *astrike_index ) + + FT_LOCAL_DEF FT_Error + TT_Set_SBit_Strike( TT_Face face, + FT_Int x_ppem, + FT_Int y_ppem, + FT_ULong *astrike_index ) { FT_Int i; if ( x_ppem < 0 || x_ppem > 255 || y_ppem < 1 || y_ppem > 255 ) - return TT_Err_Invalid_PPem; + return SFNT_Err_Invalid_PPem; for ( i = 0; i < face->num_sbit_strikes; i++ ) { @@ -639,11 +643,11 @@ ( face->sbit_strikes[i].x_ppem == x_ppem ) ) ) { *astrike_index = i; - return TT_Err_Ok; + return SFNT_Err_Ok; } } - return TT_Err_Invalid_PPem; + return SFNT_Err_Invalid_PPem; } @@ -669,11 +673,11 @@ /* <Return> */ /* FreeType error code. 0 means the glyph index was found. */ /* */ - static - FT_Error Find_SBit_Range( FT_UInt glyph_index, - TT_SBit_Strike* strike, - TT_SBit_Range** arange, - FT_ULong* aglyph_offset ) + static FT_Error + Find_SBit_Range( FT_UInt glyph_index, + TT_SBit_Strike* strike, + TT_SBit_Range** arange, + FT_ULong* aglyph_offset ) { TT_SBit_Range *range, *range_limit; @@ -695,7 +699,7 @@ if ( glyph_index >= (FT_UInt)range->first_glyph && glyph_index <= (FT_UInt)range->last_glyph ) { - FT_UShort delta = glyph_index - range->first_glyph; + FT_UShort delta = (FT_UShort)( glyph_index - range->first_glyph ); switch ( range->index_format ) @@ -746,7 +750,7 @@ *arange = 0; *aglyph_offset = 0; - return TT_Err_Invalid_Argument; + return SFNT_Err_Invalid_Argument; } @@ -775,21 +779,22 @@ /* */ /* <Return> */ /* FreeType error code. 0 means success. Returns */ - /* TT_Err_Invalid_Argument if no sbit exists for the requested glyph. */ + /* SFNT_Err_Invalid_Argument if no sbit exists for the requested */ + /* glyph. */ /* */ - static - FT_Error Find_SBit_Image( TT_Face face, - FT_UInt glyph_index, - FT_ULong strike_index, - TT_SBit_Range* *arange, - TT_SBit_Strike* *astrike, - FT_ULong *aglyph_offset ) + static FT_Error + Find_SBit_Image( TT_Face face, + FT_UInt glyph_index, + FT_ULong strike_index, + TT_SBit_Range* *arange, + TT_SBit_Strike* *astrike, + FT_ULong *aglyph_offset ) { FT_Error error; TT_SBit_Strike* strike; - if ( !face->sbit_strikes || + if ( !face->sbit_strikes || ( face->num_sbit_strikes <= (FT_Int)strike_index ) ) goto Fail; @@ -802,7 +807,7 @@ *astrike = strike; - return TT_Err_Ok; + return SFNT_Err_Ok; Fail: /* no embedded bitmap for this glyph in face */ @@ -810,7 +815,7 @@ *astrike = 0; *aglyph_offset = 0; - return TT_Err_Invalid_Argument; + return SFNT_Err_Invalid_Argument; } @@ -841,12 +846,12 @@ /* positioned just after the metrics header in the `EBDT' table on */ /* function exit. */ /* */ - static - FT_Error Load_SBit_Metrics( FT_Stream stream, - TT_SBit_Range* range, - TT_SBit_Metrics* metrics ) + static FT_Error + Load_SBit_Metrics( FT_Stream stream, + TT_SBit_Range* range, + TT_SBit_Metrics* metrics ) { - FT_Error error = TT_Err_Ok; + FT_Error error = SFNT_Err_Ok; switch ( range->image_format ) @@ -905,7 +910,7 @@ if ( range->index_format == 2 || range->index_format == 5 ) *metrics = range->metrics; else - return TT_Err_Invalid_File_Format; + return SFNT_Err_Invalid_File_Format; } Exit: @@ -927,9 +932,9 @@ /* */ /* metrics :: The corresponding metrics structure. */ /* */ - static - void Crop_Bitmap( FT_Bitmap* map, - TT_SBit_Metrics* metrics ) + static void + Crop_Bitmap( FT_Bitmap* map, + TT_SBit_Metrics* metrics ) { /***********************************************************************/ /* */ @@ -991,9 +996,9 @@ MEM_Move( line, line + count * line_len, ( rows - count ) * line_len ); - metrics->height -= count; - metrics->horiBearingY -= count; - metrics->vertBearingY -= count; + metrics->height = (FT_Byte)( metrics->height - count ); + metrics->horiBearingY = (FT_Char)( metrics->horiBearingY - count ); + metrics->vertBearingY = (FT_Char)( metrics->vertBearingY - count ); map->rows -= count; rows -= count; @@ -1024,7 +1029,7 @@ Found_Bottom: if ( count > 0 ) { - metrics->height -= count; + metrics->height = (FT_Byte)( metrics->height - count ); rows -= count; map->rows -= count; } @@ -1057,15 +1062,15 @@ FT_Byte* cur = line; - old = cur[0] << 1; + old = (FT_Byte)(cur[0] << 1); for ( n = 8; n < width; n += 8 ) { FT_Byte val; val = cur[1]; - cur[0] = old | ( val >> 7 ); - old = val << 1; + cur[0] = (FT_Byte)( old | ( val >> 7 ) ); + old = (FT_Byte)( val << 1 ); cur++; } cur[0] = old; @@ -1094,7 +1099,7 @@ line = (FT_Byte*)map->buffer + ( right >> 3 ); limit = line + rows * line_len; - mask = 0x80 >> ( right & 7 ); + mask = (FT_Byte)( 0x80 >> ( right & 7 ) ); for ( ; line < limit; line += line_len ) if ( line[0] & mask ) @@ -1118,14 +1123,14 @@ } - static - FT_Error Load_SBit_Single( FT_Bitmap* map, - FT_Int x_offset, - FT_Int y_offset, - FT_Int pix_bits, - FT_UShort image_format, - TT_SBit_Metrics* metrics, - FT_Stream stream ) + static FT_Error + Load_SBit_Single( FT_Bitmap* map, + FT_Int x_offset, + FT_Int y_offset, + FT_Int pix_bits, + FT_UShort image_format, + TT_SBit_Metrics* metrics, + FT_Stream stream ) { FT_Error error; @@ -1134,7 +1139,7 @@ if ( x_offset < 0 || x_offset + metrics->width > map->width || y_offset < 0 || y_offset + metrics->height > map->rows ) { - error = TT_Err_Invalid_Argument; + error = SFNT_Err_Invalid_Argument; goto Exit; } @@ -1177,7 +1182,7 @@ break; default: /* invalid format */ - return TT_Err_Invalid_File_Format; + return SFNT_Err_Invalid_File_Format; } /* Now read data and draw glyph into target pixmap */ @@ -1198,16 +1203,16 @@ } - static - FT_Error Load_SBit_Image( TT_SBit_Strike* strike, - TT_SBit_Range* range, - FT_ULong ebdt_pos, - FT_ULong glyph_offset, - FT_Bitmap* map, - FT_Int x_offset, - FT_Int y_offset, - FT_Stream stream, - TT_SBit_Metrics* metrics ) + static FT_Error + Load_SBit_Image( TT_SBit_Strike* strike, + TT_SBit_Range* range, + FT_ULong ebdt_pos, + FT_ULong glyph_offset, + FT_Bitmap* map, + FT_Int x_offset, + FT_Int y_offset, + FT_Stream stream, + TT_SBit_Metrics* metrics ) { FT_Memory memory = stream->memory; FT_Error error; @@ -1256,7 +1261,7 @@ break; default: - return TT_Err_Invalid_File_Format; + return SFNT_Err_Invalid_File_Format; } size = map->rows * map->pitch; @@ -1287,7 +1292,7 @@ break; default: /* invalid image format */ - return TT_Err_Invalid_File_Format; + return SFNT_Err_Invalid_File_Format; } /* All right, we have a compound format. First of all, read */ @@ -1390,14 +1395,14 @@ /* <Note> */ /* The `map.buffer' field is always freed before the glyph is loaded. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_SBit_Image( TT_Face face, - FT_ULong strike_index, - FT_UInt glyph_index, - FT_UInt load_flags, - FT_Stream stream, - FT_Bitmap *map, - TT_SBit_Metrics *metrics ) + FT_LOCAL_DEF FT_Error + TT_Load_SBit_Image( TT_Face face, + FT_ULong strike_index, + FT_UInt glyph_index, + FT_UInt load_flags, + FT_Stream stream, + FT_Bitmap *map, + TT_SBit_Metrics *metrics ) { FT_Error error; FT_Memory memory = stream->memory; @@ -1442,17 +1447,15 @@ { /* in case of a horizontal strike only */ FT_Int advance; - FT_Int top; advance = strike->hori.ascender - strike->hori.descender; - top = advance / 10; /* some heuristic values */ - metrics->vertBearingX = -metrics->width / 2; - metrics->vertBearingY = advance / 10; - metrics->vertAdvance = advance * 12 / 10; + metrics->vertBearingX = (FT_Char)(-metrics->width / 2 ); + metrics->vertBearingY = (FT_Char)( advance / 10 ); + metrics->vertAdvance = (FT_Char)( advance * 12 / 10 ); } /* Crop the bitmap now, unless specified otherwise */ Index: xc/extras/freetype2/src/sfnt/ttsbit.h diff -u xc/extras/freetype2/src/sfnt/ttsbit.h:1.1.1.2 xc/extras/freetype2/src/sfnt/ttsbit.h:1.1.1.3 --- xc/extras/freetype2/src/sfnt/ttsbit.h:1.1.1.2 Tue May 15 23:45:37 2001 +++ xc/extras/freetype2/src/sfnt/ttsbit.h Sun Dec 16 12:49:33 2001 @@ -4,7 +4,7 @@ /* */ /* TrueType and OpenType embedded bitmap support (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,28 +27,28 @@ FT_BEGIN_HEADER - FT_LOCAL - FT_Error TT_Load_SBit_Strikes( TT_Face face, - FT_Stream stream ); - - FT_LOCAL - void TT_Free_SBit_Strikes( TT_Face face ); - - - FT_LOCAL - FT_Error TT_Set_SBit_Strike( TT_Face face, - FT_Int x_ppem, - FT_Int y_ppem, - FT_ULong *astrike_index ); - - FT_LOCAL - FT_Error TT_Load_SBit_Image( TT_Face face, - FT_ULong strike_index, - FT_UInt glyph_index, - FT_UInt load_flags, - FT_Stream stream, - FT_Bitmap *map, - TT_SBit_Metrics *metrics ); + FT_LOCAL FT_Error + TT_Load_SBit_Strikes( TT_Face face, + FT_Stream stream ); + + FT_LOCAL void + TT_Free_SBit_Strikes( TT_Face face ); + + + FT_LOCAL FT_Error + TT_Set_SBit_Strike( TT_Face face, + FT_Int x_ppem, + FT_Int y_ppem, + FT_ULong *astrike_index ); + + FT_LOCAL FT_Error + TT_Load_SBit_Image( TT_Face face, + FT_ULong strike_index, + FT_UInt glyph_index, + FT_UInt load_flags, + FT_Stream stream, + FT_Bitmap *map, + TT_SBit_Metrics *metrics ); FT_END_HEADER Index: xc/extras/freetype2/src/smooth/Jamfile diff -u /dev/null xc/extras/freetype2/src/smooth/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:58 2002 +++ xc/extras/freetype2/src/smooth/Jamfile Sun Sep 9 22:56:07 2001 @@ -0,0 +1,23 @@ +# FreeType 2 src/smooth Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src smooth ; + +SubDirHdrs [ FT2_SubDir src smooth ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = ftgrays ftsmooth ; + } + else + { + _sources = smooth ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/smooth Jamfile Index: xc/extras/freetype2/src/smooth/ftgrays.c diff -u xc/extras/freetype2/src/smooth/ftgrays.c:1.1.1.2 xc/extras/freetype2/src/smooth/ftgrays.c:1.1.1.5 --- xc/extras/freetype2/src/smooth/ftgrays.c:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/smooth/ftgrays.c Mon Jan 14 11:52:23 2002 @@ -4,7 +4,7 @@ /* */ /* A new `perfect' anti-aliasing renderer (body). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -32,8 +32,8 @@ /* cc -c -D_STANDALONE_ ftgrays.c */ /* */ /* The renderer can be initialized with a call to */ - /* `ft_grays_raster.grays_raster_new'; an anti-aliased bitmap can be */ - /* generated with a call to `ft_grays_raster.grays_raster_render'. */ + /* `ft_gray_raster.gray_raster_new'; an anti-aliased bitmap can be */ + /* generated with a call to `ft_gray_raster.gray_raster_render'. */ /* */ /* See the comments and documentation in the file `ftimage.h' for */ /* more details on how the raster works. */ @@ -82,8 +82,13 @@ #include <string.h> /* for memcpy() */ +#include <setjmp.h> +/* experimental support for gamma correction within the rasterizer */ +#define xxxGRAYS_USE_GAMMA + + /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -94,6 +99,8 @@ #define FT_COMPONENT trace_aaraster +#define ErrRaster_MemoryOverflow -4 + #ifdef _STANDALONE_ @@ -122,19 +129,26 @@ #else /* _STANDALONE_ */ + #include <ft2build.h> #include "ftgrays.h" #include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_DEBUG_H #include FT_OUTLINE_H -#define ErrRaster_Invalid_Mode FT_Err_Cannot_Render_Glyph -#define ErrRaster_Invalid_Outline FT_Err_Invalid_Outline +#include "ftsmerrs.h" +#define ErrRaster_Invalid_Mode Smooth_Err_Cannot_Render_Glyph +#define ErrRaster_Invalid_Outline Smooth_Err_Invalid_Outline + #endif /* _STANDALONE_ */ +#ifndef MEM_Set +#define MEM_Set( d, s, c ) memset( d, s, c ) +#endif + /* define this to dump debugging information */ #define xxxDEBUG_GRAYS @@ -196,9 +210,36 @@ /* */ /* TYPE DEFINITIONS */ /* */ + + /* don't change the following types to FT_Int or FT_Pos, since we might */ + /* need to define them to "float" or "double" when experimenting with */ + /* new algorithms */ + typedef int TScan; /* integer scanline/pixel coordinate */ typedef long TPos; /* sub-pixel coordinate */ + /* determine the type used to store cell areas. This normally takes at */ + /* least PIXEL_BYTES*2 + 1. On 16-bit systems, we need to use `long' */ + /* instead of `int', otherwise bad things happen */ + +#if PIXEL_BITS <= 7 + + typedef int TArea; + +#else /* PIXEL_BITS >= 8 */ + + /* approximately determine the size of integers using an ANSI-C header */ +#include <limits.h> + +#if UINT_MAX == 0xFFFFU + typedef long TArea; +#else + typedef int TArea; +#endif + +#endif /* PIXEL_BITS >= 8 */ + + /* maximal number of gray spans in a call to the span callback */ #define FT_MAX_GRAY_SPANS 32 @@ -221,7 +262,7 @@ TScan x; TScan y; int cover; - int area; + TArea area; } TCell, *PCell; @@ -237,7 +278,7 @@ TScan min_ex, max_ex; TScan min_ey, max_ey; - int area; + TArea area; int cover; int invalid; @@ -247,7 +288,7 @@ TScan last_ey; - FT_Vector bez_stack[32 * 3]; + FT_Vector bez_stack[32 * 3 + 1]; int lev_stack[32]; FT_Outline outline; @@ -260,13 +301,18 @@ FT_Raster_Span_Func render_span; void* render_span_data; int span_y; + + int band_size; + int band_shoot; + int conic_level; + int cubic_level; - int band_size; - int band_shoot; - int conic_level; - int cubic_level; + void* memory; + jmp_buf jump_buffer; - void* memory; +#ifdef GRAYS_USE_GAMMA + FT_Byte gamma[257]; +#endif } TRaster, *PRaster; @@ -275,9 +321,9 @@ /* */ /* Initialize the cells table. */ /* */ - static - void init_cells( RAS_ARG_ void* buffer, - long byte_size ) + static void + gray_init_cells( RAS_ARG_ void* buffer, + long byte_size ) { ras.cells = (PCell)buffer; ras.max_cells = byte_size / sizeof ( TCell ); @@ -292,11 +338,12 @@ /* */ /* Compute the outline bounding box. */ /* */ - static - void compute_cbox( RAS_ARG_ FT_Outline* outline ) + static void + gray_compute_cbox( RAS_ARG ) { - FT_Vector* vec = outline->points; - FT_Vector* limit = vec + outline->n_points; + FT_Outline* outline = &ras.outline; + FT_Vector* vec = outline->points; + FT_Vector* limit = vec + outline->n_points; if ( outline->n_points <= 0 ) @@ -335,8 +382,8 @@ /* */ /* Record the current cell in the table. */ /* */ - static - int record_cell( RAS_ARG ) + static void + gray_record_cell( RAS_ARG ) { PCell cell; @@ -344,7 +391,7 @@ if ( !ras.invalid && ( ras.area | ras.cover ) ) { if ( ras.num_cells >= ras.max_cells ) - return 1; + longjmp( ras.jump_buffer, 1 ); cell = ras.cells + ras.num_cells++; cell->x = ras.ex - ras.min_ex; @@ -352,8 +399,6 @@ cell->area = ras.area; cell->cover = ras.cover; } - - return 0; } @@ -361,8 +406,8 @@ /* */ /* Set the current cell to a new position. */ /* */ - static - int set_cell( RAS_ARG_ TScan ex, + static void + gray_set_cell( RAS_ARG_ TScan ex, TScan ey ) { int invalid, record, clean; @@ -399,8 +444,8 @@ /* record the previous cell if needed (i.e., if we changed the cell */ /* position, of changed the `invalid' flag) */ - if ( ( ras.invalid != invalid || record ) && record_cell( RAS_VAR ) ) - return 1; + if ( ras.invalid != invalid || record ) + gray_record_cell( RAS_VAR ); if ( clean ) { @@ -411,7 +456,6 @@ ras.invalid = invalid; ras.ex = ex; ras.ey = ey; - return 0; } @@ -419,9 +463,9 @@ /* */ /* Start a new contour at a given cell. */ /* */ - static - void start_cell( RAS_ARG_ TScan ex, - TScan ey ) + static void + gray_start_cell( RAS_ARG_ TScan ex, + TScan ey ) { if ( ex < ras.min_ex ) ex = ras.min_ex - 1; @@ -433,7 +477,7 @@ ras.last_ey = SUBPIXELS( ey ); ras.invalid = 0; - (void)set_cell( RAS_VAR_ ex, ey ); + gray_set_cell( RAS_VAR_ ex, ey ); } @@ -441,8 +485,8 @@ /* */ /* Render a scanline as one or more cells. */ /* */ - static - int render_scanline( RAS_ARG_ TScan ey, + static void + gray_render_scanline( RAS_ARG_ TScan ey, TPos x1, TScan y1, TPos x2, @@ -462,16 +506,19 @@ /* trivial case. Happens often */ if ( y1 == y2 ) - return set_cell( RAS_VAR_ ex2, ey ); + { + gray_set_cell( RAS_VAR_ ex2, ey ); + return; + } /* everything is located in a single cell. That is easy! */ /* */ if ( ex1 == ex2 ) { delta = y2 - y1; - ras.area += ( fx1 + fx2 ) * delta; + ras.area += (TArea)( fx1 + fx2 ) * delta; ras.cover += delta; - return 0; + return; } /* ok, we'll have to render a run of adjacent cells on the same */ @@ -497,12 +544,11 @@ mod += dx; } - ras.area += ( fx1 + first ) * delta; + ras.area += (TArea)( fx1 + first ) * delta; ras.cover += delta; ex1 += incr; - if ( set_cell( RAS_VAR_ ex1, ey ) ) - goto Error; + gray_set_cell( RAS_VAR_ ex1, ey ); y1 += delta; if ( ex1 != ex2 ) @@ -528,23 +574,17 @@ delta++; } - ras.area += ONE_PIXEL * delta; + ras.area += (TArea)ONE_PIXEL * delta; ras.cover += delta; y1 += delta; ex1 += incr; - if ( set_cell( RAS_VAR_ ex1, ey ) ) - goto Error; + gray_set_cell( RAS_VAR_ ex1, ey ); } } delta = y2 - y1; - ras.area += ( fx2 + ONE_PIXEL - first ) * delta; + ras.area += (TArea)( fx2 + ONE_PIXEL - first ) * delta; ras.cover += delta; - - return 0; - - Error: - return 1; } @@ -552,8 +592,8 @@ /* */ /* Render a given line as a series of scanlines. */ /* */ - static - int render_line( RAS_ARG_ TPos to_x, + static void + gray_render_line( RAS_ARG_ TPos to_x, TPos to_y ) { TScan ey1, ey2, fy1, fy2; @@ -591,8 +631,7 @@ /* everything is on a single scanline */ if ( ey1 == ey2 ) { - if ( render_scanline( RAS_VAR_ ey1, ras.x, fy1, to_x, fy2 ) ) - goto Error; + gray_render_scanline( RAS_VAR_ ey1, ras.x, fy1, to_x, fy2 ); goto End; } @@ -618,12 +657,10 @@ } x = ras.x + delta; - if ( render_scanline( RAS_VAR_ ey1, ras.x, fy1, x, first ) ) - goto Error; + gray_render_scanline( RAS_VAR_ ey1, ras.x, fy1, x, first ); ey1 += incr; - if ( set_cell( RAS_VAR_ TRUNC( x ), ey1 ) ) - goto Error; + gray_set_cell( RAS_VAR_ TRUNC( x ), ey1 ); if ( ey1 != ey2 ) { @@ -648,34 +685,25 @@ } x2 = x + delta; - if ( render_scanline( RAS_VAR_ ey1, - x, ONE_PIXEL - first, x2, first ) ) - goto Error; + gray_render_scanline( RAS_VAR_ ey1, x, ONE_PIXEL - first, x2, first ); x = x2; + ey1 += incr; - if ( set_cell( RAS_VAR_ TRUNC( x ), ey1 ) ) - goto Error; + gray_set_cell( RAS_VAR_ TRUNC( x ), ey1 ); } } - if ( render_scanline( RAS_VAR_ ey1, - x, ONE_PIXEL - first, to_x, fy2 ) ) - goto Error; + gray_render_scanline( RAS_VAR_ ey1, x, ONE_PIXEL - first, to_x, fy2 ); End: ras.x = to_x; ras.y = to_y; ras.last_ey = SUBPIXELS( ey2 ); - - return 0; - - Error: - return 1; } - static - void split_conic( FT_Vector* base ) + static void + gray_split_conic( FT_Vector* base ) { TPos a, b; @@ -694,8 +722,8 @@ } - static - int render_conic( RAS_ARG_ FT_Vector* control, + static void + gray_render_conic( RAS_ARG_ FT_Vector* control, FT_Vector* to ) { TPos dx, dy; @@ -725,7 +753,7 @@ if ( level <= 1 ) { /* we compute the mid-point directly in order to avoid */ - /* calling split_conic() */ + /* calling gray_split_conic() */ TPos to_x, to_y, mid_x, mid_y; @@ -734,8 +762,9 @@ mid_x = ( ras.x + to_x + 2 * UPSCALE( control->x ) ) / 4; mid_y = ( ras.y + to_y + 2 * UPSCALE( control->y ) ) / 4; - return render_line( RAS_VAR_ mid_x, mid_y ) || - render_line( RAS_VAR_ to_x, to_y ); + gray_render_line( RAS_VAR_ mid_x, mid_y ); + gray_render_line( RAS_VAR_ to_x, to_y ); + return; } arc = ras.bez_stack; @@ -772,7 +801,7 @@ if ( TRUNC( min ) >= ras.max_ey || TRUNC( max ) < 0 ) goto Draw; - split_conic( arc ); + gray_split_conic( arc ); arc += 2; top++; levels[top] = levels[top - 1] = level - 1; @@ -789,20 +818,19 @@ mid_x = ( ras.x + to_x + 2 * arc[1].x ) / 4; mid_y = ( ras.y + to_y + 2 * arc[1].y ) / 4; - if ( render_line( RAS_VAR_ mid_x, mid_y ) || - render_line( RAS_VAR_ to_x, to_y ) ) - return 1; + gray_render_line( RAS_VAR_ mid_x, mid_y ); + gray_render_line( RAS_VAR_ to_x, to_y ); top--; arc -= 2; } } - return 0; + return; } - static - void split_cubic( FT_Vector* base ) + static void + gray_split_cubic( FT_Vector* base ) { TPos a, b, c, d; @@ -829,8 +857,8 @@ } - static - int render_cubic( RAS_ARG_ FT_Vector* control1, + static void + gray_render_cubic( RAS_ARG_ FT_Vector* control1, FT_Vector* control2, FT_Vector* to ) { @@ -882,8 +910,9 @@ mid_y = ( ras.y + to_y + 3 * UPSCALE( control1->y + control2->y ) ) / 8; - return render_line( RAS_VAR_ mid_x, mid_y ) || - render_line( RAS_VAR_ to_x, to_y ); + gray_render_line( RAS_VAR_ mid_x, mid_y ); + gray_render_line( RAS_VAR_ to_x, to_y ); + return; } arc = ras.bez_stack; @@ -921,7 +950,7 @@ if ( y > max ) max = y; if ( TRUNC( min ) >= ras.max_ey || TRUNC( max ) < 0 ) goto Draw; - split_cubic( arc ); + gray_split_cubic( arc ); arc += 3; top ++; levels[top] = levels[top - 1] = level - 1; @@ -938,14 +967,13 @@ mid_x = ( ras.x + to_x + 3 * ( arc[1].x + arc[2].x ) ) / 8; mid_y = ( ras.y + to_y + 3 * ( arc[1].y + arc[2].y ) ) / 8; - if ( render_line( RAS_VAR_ mid_x, mid_y ) || - render_line( RAS_VAR_ to_x, to_y ) ) - return 1; + gray_render_line( RAS_VAR_ mid_x, mid_y ); + gray_render_line( RAS_VAR_ to_x, to_y ); top --; arc -= 3; } } - return 0; + return; } @@ -975,9 +1003,9 @@ /* a simple shell sort algorithm that works directly on our */ /* cells table */ - static - void shell_sort ( PCell cells, - int count ) + static void + gray_shell_sort ( PCell cells, + int count ) { PCell i, j, limit = cells + count; TCell temp; @@ -1021,9 +1049,9 @@ #define QSORT_THRESHOLD 9 /* below this size, a sub-array will be sorted */ /* through a normal insertion sort */ - static - void quick_sort( PCell cells, - int count ) + static void + gray_quick_sort( PCell cells, + int count ) { PCell stack[40]; /* should be enough ;-) */ PCell* top; /* top of stack */ @@ -1121,8 +1149,8 @@ #ifdef DEBUG_GRAYS #ifdef DEBUG_SORT - static - int check_sort( PCell cells, + static int + gray_check_sort( PCell cells, int count ) { PCell p, q; @@ -1141,59 +1169,64 @@ #endif /* DEBUG_GRAYS */ - static - int Move_To( FT_Vector* to, + static int + gray_move_to( FT_Vector* to, FT_Raster raster ) { TPos x, y; /* record current cell, if any */ - record_cell( (PRaster)raster ); + gray_record_cell( (PRaster)raster ); /* start to a new position */ x = UPSCALE( to->x ); y = UPSCALE( to->y ); - start_cell( (PRaster)raster, TRUNC( x ), TRUNC( y ) ); + + gray_start_cell( (PRaster)raster, TRUNC( x ), TRUNC( y ) ); + ((PRaster)raster)->x = x; ((PRaster)raster)->y = y; return 0; } - static - int Line_To( FT_Vector* to, + static int + gray_line_to( FT_Vector* to, FT_Raster raster ) { - return render_line( (PRaster)raster, - UPSCALE( to->x ), UPSCALE( to->y ) ); + gray_render_line( (PRaster)raster, + UPSCALE( to->x ), UPSCALE( to->y ) ); + return 0; } - static - int Conic_To( FT_Vector* control, + static int + gray_conic_to( FT_Vector* control, FT_Vector* to, FT_Raster raster ) { - return render_conic( (PRaster)raster, control, to ); + gray_render_conic( (PRaster)raster, control, to ); + return 0; } - static - int Cubic_To( FT_Vector* control1, + static int + gray_cubic_to( FT_Vector* control1, FT_Vector* control2, FT_Vector* to, FT_Raster raster ) { - return render_cubic( (PRaster)raster, control1, control2, to ); + gray_render_cubic( (PRaster)raster, control1, control2, to ); + return 0; } - static - void grays_render_span( int y, - int count, - FT_Span* spans, - PRaster raster ) + static void + gray_render_span( int y, + int count, + FT_Span* spans, + PRaster raster ) { unsigned char* p; FT_Bitmap* map = &raster->target; @@ -1206,15 +1239,22 @@ for ( ; count > 0; count--, spans++ ) { - if ( spans->coverage ) + FT_UInt coverage = spans->coverage; + + +#ifdef GRAYS_USE_GAMMA + coverage = raster->gamma[(FT_Byte)coverage]; +#endif + + if ( coverage ) #if 1 - memset( p + spans->x, (unsigned char)spans->coverage, spans->len ); + MEM_Set( p + spans->x, (unsigned char)coverage, spans->len ); #else /* 1 */ { q = p + spans->x; limit = q + spans->len; for ( ; q < limit; q++ ) - q[0] = (unsigned char)spans->coverage; + q[0] = (unsigned char)coverage; } #endif /* 1 */ } @@ -1225,8 +1265,8 @@ #include <stdio.h> - static - void dump_cells( RAS_ARG ) + static void + gray_dump_cells( RAS_ARG ) { PCell cell, limit; int y = -1; @@ -1251,11 +1291,11 @@ #endif /* DEBUG_GRAYS */ - static - void grays_hline( RAS_ARG_ TScan x, - TScan y, - TPos area, - int acount ) + static void + gray_hline( RAS_ARG_ TScan x, + TScan y, + TPos area, + int acount ) { FT_Span* span; int count; @@ -1305,7 +1345,7 @@ (int)span->x + span->len == (int)x && span->coverage == coverage ) { - span->len += acount; + span->len = (unsigned short)( span->len + acount ); return; } @@ -1351,17 +1391,18 @@ } - static - void grays_sweep( RAS_ARG_ FT_Bitmap* target ) + static void + gray_sweep( RAS_ARG_ FT_Bitmap* target ) { - TScan x, y, cover, area; + TScan x, y, cover; + TArea area; PCell start, cur, limit; FT_UNUSED( target ); if ( ras.num_cells == 0 ) return; - + cur = ras.cells; limit = cur + ras.num_cells; @@ -1393,7 +1434,7 @@ /* individual gray pixel there */ if ( area && x >= 0 ) { - grays_hline( RAS_VAR_ x, y, cover * ( ONE_PIXEL * 2 ) - area, 1 ); + gray_hline( RAS_VAR_ x, y, cover * ( ONE_PIXEL * 2 ) - area, 1 ); x++; } @@ -1404,14 +1445,14 @@ { /* draw a gray span between the start cell and the current one */ if ( cur->x > x ) - grays_hline( RAS_VAR_ x, y, + gray_hline( RAS_VAR_ x, y, cover * ( ONE_PIXEL * 2 ), cur->x - x ); } else { /* draw a gray span until the end of the clipping region */ if ( cover && x < ras.max_ex - ras.min_ex ) - grays_hline( RAS_VAR_ x, y, + gray_hline( RAS_VAR_ x, y, cover * ( ONE_PIXEL * 2 ), ras.max_ex - x - ras.min_ex ); cover = 0; @@ -1484,7 +1525,11 @@ void* user ) { #undef SCALED +#if 0 #define SCALED( x ) ( ( (x) << shift ) - delta ) +#else +#define SCALED( x ) (x) +#endif FT_Vector v_last; FT_Vector v_control; @@ -1499,8 +1544,10 @@ int error; char tag; /* current point's state */ +#if 0 int shift = interface->shift; FT_Pos delta = interface->delta; +#endif first = 0; @@ -1688,32 +1735,52 @@ } TBand; - static - int grays_convert_glyph( RAS_ARG_ FT_Outline* outline ) + static int + gray_convert_glyph_inner( RAS_ARG ) { static const FT_Outline_Funcs interface = { - (FT_Outline_MoveTo_Func) Move_To, - (FT_Outline_LineTo_Func) Line_To, - (FT_Outline_ConicTo_Func)Conic_To, - (FT_Outline_CubicTo_Func)Cubic_To, + (FT_Outline_MoveTo_Func) gray_move_to, + (FT_Outline_LineTo_Func) gray_line_to, + (FT_Outline_ConicTo_Func)gray_conic_to, + (FT_Outline_CubicTo_Func)gray_cubic_to, 0, 0 }; + + volatile int error = 0; + + if ( setjmp( ras.jump_buffer ) == 0 ) + { + error = FT_Outline_Decompose( &ras.outline, &interface, &ras ); + gray_record_cell( RAS_VAR ); + } + else + { + error = ErrRaster_MemoryOverflow; + } + + return error; + } - TBand bands[40], *band; - int n, num_bands; - TPos min, max, max_y; - FT_BBox* clip; + + static int + gray_convert_glyph( RAS_ARG ) + { + TBand bands[40]; + volatile TBand* band; + volatile int n, num_bands; + volatile TPos min, max, max_y; + FT_BBox* clip; /* Set up state in the raster object */ - compute_cbox( RAS_VAR_ outline ); + gray_compute_cbox( RAS_VAR ); /* clip to target bitmap, exit if nothing to do */ clip = &ras.clip_box; - + if ( ras.max_ex <= clip->xMin || ras.min_ex >= clip->xMax || ras.max_ey <= clip->yMin || ras.min_ey >= clip->yMax ) return 0; @@ -1725,7 +1792,8 @@ if ( ras.max_ey > clip->yMax ) ras.max_ey = clip->yMax; /* simple heuristic used to speed-up the bezier decomposition -- see */ - /* the code in render_conic() and render_cubic() for more details */ + /* the code in gray_render_conic() and gray_render_cubic() for more */ + /* details */ ras.conic_level = 32; ras.cubic_level = 16; @@ -1773,26 +1841,32 @@ ras.min_ey = band->min; ras.max_ey = band->max; +#if 1 + error = gray_convert_glyph_inner( RAS_VAR ); +#else error = FT_Outline_Decompose( outline, &interface, &ras ) || - record_cell( RAS_VAR ); + gray_record_cell( RAS_VAR ); +#endif if ( !error ) { #ifdef SHELL_SORT - shell_sort( ras.cells, ras.num_cells ); + gray_shell_sort( ras.cells, ras.num_cells ); #else - quick_sort( ras.cells, ras.num_cells ); + gray_quick_sort( ras.cells, ras.num_cells ); #endif #ifdef DEBUG_GRAYS - check_sort( ras.cells, ras.num_cells ); - dump_cells( RAS_VAR ); + gray_check_sort( ras.cells, ras.num_cells ); + gray_dump_cells( RAS_VAR ); #endif - grays_sweep( RAS_VAR_ &ras.target ); + gray_sweep( RAS_VAR_ &ras.target ); band--; continue; } + else if ( error != ErrRaster_MemoryOverflow ) + return 1; /* render pool overflow, we will reduce the render band by half */ bottom = band->min; @@ -1827,9 +1901,9 @@ } - extern - int grays_raster_render( PRaster raster, - FT_Raster_Params* params ) + extern int + gray_raster_render( PRaster raster, + FT_Raster_Params* params ) { FT_Outline* outline = (FT_Outline*)params->source; FT_Bitmap* target_map = params->target; @@ -1873,10 +1947,10 @@ } else { - ras.clip_box.xMin = -32768; - ras.clip_box.yMin = -32768; - ras.clip_box.xMax = 32767; - ras.clip_box.yMax = 32767; + ras.clip_box.xMin = -32768L; + ras.clip_box.yMin = -32768L; + ras.clip_box.xMax = 32767L; + ras.clip_box.yMax = 32767L; } ras.outline = *outline; @@ -1886,7 +1960,7 @@ if ( target_map ) ras.target = *target_map; - ras.render_span = (FT_Raster_Span_Func)grays_render_span; + ras.render_span = (FT_Raster_Span_Func)gray_render_span; ras.render_span_data = &ras; if ( params->flags & ft_raster_flag_direct ) @@ -1895,18 +1969,47 @@ ras.render_span_data = params->user; } - return grays_convert_glyph( (PRaster)raster, outline ); + return gray_convert_glyph( (PRaster)raster ); } /**** RASTER OBJECT CREATION: In standalone mode, we simply use *****/ /**** a static object. *****/ +#ifdef GRAYS_USE_GAMMA + + /* initialize the "gamma" table. Yes, this is really a crummy function */ + /* but the results look pretty good for something that simple. */ + /* */ +#define M_MAX 255 +#define M_X 128 +#define M_Y 192 + + static void + grays_init_gamma( PRaster raster ) + { + FT_UInt x, a; + + + for ( x = 0; x < 256; x++ ) + { + if ( x <= M_X ) + a = ( x * M_Y + M_X / 2) / M_X; + else + a = M_Y + ( ( x - M_X ) * ( M_MAX - M_Y ) + + ( M_MAX - M_X ) / 2 ) / ( M_MAX - M_X ); + + raster->gamma[x] = (FT_Byte)a; + } + } + +#endif /* GRAYS_USE_GAMMA */ + #ifdef _STANDALONE_ - static - int grays_raster_new( void* memory, - FT_Raster* araster ) + static int + gray_raster_new( void* memory, + FT_Raster* araster ) { static TRaster the_raster; @@ -1914,14 +2017,18 @@ *araster = (FT_Raster)&the_raster; - memset( &the_raster, 0, sizeof ( the_raster ) ); + MEM_Set( &the_raster, 0, sizeof ( the_raster ) ); +#ifdef GRAYS_USE_GAMMA + grays_init_gamma( (PRaster)*araster ); +#endif + return 0; } - static - void grays_raster_done( FT_Raster raster ) + static void + gray_raster_done( FT_Raster raster ) { /* nothing */ FT_UNUSED( raster ); @@ -1929,9 +2036,9 @@ #else /* _STANDALONE_ */ - static - int grays_raster_new( FT_Memory memory, - FT_Raster* araster ) + static int + gray_raster_new( FT_Memory memory, + FT_Raster* araster ) { FT_Error error; PRaster raster; @@ -1942,14 +2049,18 @@ { raster->memory = memory; *araster = (FT_Raster)raster; + +#ifdef GRAYS_USE_GAMMA + grays_init_gamma( raster ); +#endif } return error; } - static - void grays_raster_done( FT_Raster raster ) + static void + gray_raster_done( FT_Raster raster ) { FT_Memory memory = (FT_Memory)((PRaster)raster)->memory; @@ -1960,16 +2071,16 @@ #endif /* _STANDALONE_ */ - static - void grays_raster_reset( FT_Raster raster, - const char* pool_base, - long pool_size ) + static void + gray_raster_reset( FT_Raster raster, + const char* pool_base, + long pool_size ) { PRaster rast = (PRaster)raster; if ( raster && pool_base && pool_size >= 4096 ) - init_cells( rast, (char*)pool_base, pool_size ); + gray_init_cells( rast, (char*)pool_base, pool_size ); rast->band_size = ( pool_size / sizeof ( TCell ) ) / 8; } @@ -1979,11 +2090,11 @@ { ft_glyph_format_outline, - (FT_Raster_New_Func) grays_raster_new, - (FT_Raster_Reset_Func) grays_raster_reset, - (FT_Raster_Set_Mode_Func)0, - (FT_Raster_Render_Func) grays_raster_render, - (FT_Raster_Done_Func) grays_raster_done + (FT_Raster_New_Func) gray_raster_new, + (FT_Raster_Reset_Func) gray_raster_reset, + (FT_Raster_Set_Mode_Func) 0, + (FT_Raster_Render_Func) gray_raster_render, + (FT_Raster_Done_Func) gray_raster_done }; Index: xc/extras/freetype2/src/smooth/ftgrays.h diff -u xc/extras/freetype2/src/smooth/ftgrays.h:1.1.1.2 xc/extras/freetype2/src/smooth/ftgrays.h:1.1.1.3 --- xc/extras/freetype2/src/smooth/ftgrays.h:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/smooth/ftgrays.h Sun Dec 16 12:49:33 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType smooth renderer declaration */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/smooth/ftsmerrs.h diff -u /dev/null xc/extras/freetype2/src/smooth/ftsmerrs.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:58 2002 +++ xc/extras/freetype2/src/smooth/ftsmerrs.h Sun Sep 9 22:56:08 2001 @@ -0,0 +1,41 @@ +/***************************************************************************/ +/* */ +/* ftsmerrs.h */ +/* */ +/* smooth renderer error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the smooth renderer error enumeration */ + /* constants. */ + /* */ + /*************************************************************************/ + +#ifndef __FTSMERRS_H__ +#define __FTSMERRS_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX Smooth_Err_ +#define FT_ERR_BASE FT_Mod_Err_Smooth + +#include FT_ERRORS_H + +#endif /* __FTSMERRS_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/smooth/ftsmooth.c diff -u xc/extras/freetype2/src/smooth/ftsmooth.c:1.1.1.2 xc/extras/freetype2/src/smooth/ftsmooth.c:1.1.1.5 --- xc/extras/freetype2/src/smooth/ftsmooth.c:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/smooth/ftsmooth.c Mon Jan 14 11:52:23 2002 @@ -4,7 +4,7 @@ /* */ /* Anti-aliasing renderer interface (body). */ /* */ -/* Copyright 2000 by */ +/* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -22,10 +22,12 @@ #include "ftsmooth.h" #include "ftgrays.h" +#include "ftsmerrs.h" + /* initialize renderer -- init its raster */ - static - FT_Error ft_smooth_init( FT_Renderer render ) + static FT_Error + ft_smooth_init( FT_Renderer render ) { FT_Library library = FT_MODULE_LIBRARY( render ); @@ -39,10 +41,10 @@ /* sets render-specific mode */ - static - FT_Error ft_smooth_set_mode( FT_Renderer render, - FT_ULong mode_tag, - FT_Pointer data ) + static FT_Error + ft_smooth_set_mode( FT_Renderer render, + FT_ULong mode_tag, + FT_Pointer data ) { /* we simply pass it to the raster */ return render->clazz->raster_class->raster_set_mode( render->raster, @@ -51,18 +53,18 @@ } /* transform a given glyph image */ - static - FT_Error ft_smooth_transform( FT_Renderer render, - FT_GlyphSlot slot, - FT_Matrix* matrix, - FT_Vector* delta ) + static FT_Error + ft_smooth_transform( FT_Renderer render, + FT_GlyphSlot slot, + FT_Matrix* matrix, + FT_Vector* delta ) { - FT_Error error = FT_Err_Ok; + FT_Error error = Smooth_Err_Ok; if ( slot->format != render->glyph_format ) { - error = FT_Err_Invalid_Argument; + error = Smooth_Err_Invalid_Argument; goto Exit; } @@ -78,10 +80,10 @@ /* return the glyph's control box */ - static - void ft_smooth_get_cbox( FT_Renderer render, - FT_GlyphSlot slot, - FT_BBox* cbox ) + static void + ft_smooth_get_cbox( FT_Renderer render, + FT_GlyphSlot slot, + FT_BBox* cbox ) { MEM_Set( cbox, 0, sizeof ( *cbox ) ); @@ -91,14 +93,14 @@ /* convert a slot's glyph image into a bitmap */ - static - FT_Error ft_smooth_render( FT_Renderer render, - FT_GlyphSlot slot, - FT_UInt mode, - FT_Vector* origin ) + static FT_Error + ft_smooth_render( FT_Renderer render, + FT_GlyphSlot slot, + FT_UInt mode, + FT_Vector* origin ) { FT_Error error; - FT_Outline* outline; + FT_Outline* outline = NULL; FT_BBox cbox; FT_UInt width, height, pitch; FT_Bitmap* bitmap; @@ -110,13 +112,13 @@ /* check glyph image format */ if ( slot->format != render->glyph_format ) { - error = FT_Err_Invalid_Argument; + error = Smooth_Err_Invalid_Argument; goto Exit; } /* check mode */ if ( mode != ft_render_mode_normal ) - return FT_Err_Cannot_Render_Glyph; + return Smooth_Err_Cannot_Render_Glyph; outline = &slot->outline; @@ -167,6 +169,9 @@ /* render outline into the bitmap */ error = render->raster_render( render->raster, ¶ms ); + + FT_Outline_Translate( outline, cbox.xMin, cbox.yMin ); + if ( error ) goto Exit; @@ -175,6 +180,9 @@ slot->bitmap_top = cbox.yMax >> 6; Exit: + if ( outline && origin ) + FT_Outline_Translate( outline, -origin->x, -origin->y ); + return error; } Index: xc/extras/freetype2/src/smooth/ftsmooth.h diff -u xc/extras/freetype2/src/smooth/ftsmooth.h:1.1.1.2 xc/extras/freetype2/src/smooth/ftsmooth.h:1.1.1.3 --- xc/extras/freetype2/src/smooth/ftsmooth.h:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/smooth/ftsmooth.h Sun Dec 16 12:49:33 2001 @@ -4,7 +4,7 @@ /* */ /* Anti-aliasing renderer interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/smooth/rules.mk diff -u xc/extras/freetype2/src/smooth/rules.mk:1.1.1.2 xc/extras/freetype2/src/smooth/rules.mk:1.1.1.3 --- xc/extras/freetype2/src/smooth/rules.mk:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/smooth/rules.mk Sun Sep 9 22:56:08 2001 @@ -31,7 +31,8 @@ # smooth driver headers # -SMOOTH_DRV_H := $(SMOOTH_DRV_SRC:%c=%h) +SMOOTH_DRV_H := $(SMOOTH_DRV_SRC:%c=%h) \ + $(SMOOTH_DIR_)ftsmerrs.h # smooth driver object(s) Index: xc/extras/freetype2/src/smooth/smooth.c diff -u xc/extras/freetype2/src/smooth/smooth.c:1.1.1.2 xc/extras/freetype2/src/smooth/smooth.c:1.1.1.3 --- xc/extras/freetype2/src/smooth/smooth.c:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/smooth/smooth.c Sun Dec 16 12:49:33 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType anti-aliasing rasterer module component (body only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/tools/cordic.py diff -u /dev/null xc/extras/freetype2/src/tools/cordic.py:1.2 --- /dev/null Fri Jan 18 15:21:58 2002 +++ xc/extras/freetype2/src/tools/cordic.py Sat Oct 27 23:32:21 2001 @@ -0,0 +1,79 @@ +# $XFree86: xc/extras/freetype2/src/tools/cordic.py,v 1.2 2001/10/28 03:32:21 tsi Exp $ +# compute arctangent table for CORDIC computations in fttrigon.c +import sys, math + +units = 180*65536 # don't change !! +scale = units/math.pi +shrink = 1.0 +comma = "" + +def calc_val( x ): + global units, shrink + angle = math.atan(x) + shrink = shrink * math.cos(angle) + return angle/math.pi * units + +def print_val( n, x ): + global comma + + lo = int(x) + hi = lo + 1 + alo = math.atan(lo) + ahi = math.atan(hi) + ax = math.atan(2.0**n) + + errlo = abs( alo - ax ) + errhi = abs( ahi - ax ) + + if ( errlo < errhi ): + hi = lo + + sys.stdout.write( comma + repr( int(hi) ) ) + comma = ", " + + +print "" +print "table of arctan( 1/2^n ) for PI = " + repr(units/65536.0) + " units" + +# compute range of "i" +r = [-1] +r = r + range(32) + +for n in r: + + if n >= 0: + x = 1.0/(2.0**n) # tangent value + else: + x = 2.0**(-n) + + angle = math.atan(x) # arctangent + angle2 = angle*scale # arctangent in FT_Angle units + + # determine which integer value for angle gives the best tangent + lo = int(angle2) + hi = lo + 1 + tlo = math.tan(lo/scale) + thi = math.tan(hi/scale) + + errlo = abs( tlo - x ) + errhi = abs( thi - x ) + + angle2 = hi + if errlo < errhi: + angle2 = lo + + if angle2 <= 0: + break + + sys.stdout.write( comma + repr( int(angle2) ) ) + comma = ", " + + shrink = shrink * math.cos( angle2/scale) + + +print +print "shrink factor = " + repr( shrink ) +print "shrink factor 2 = " + repr( shrink * (2.0**32) ) +print "expansion factor = " + repr(1/shrink) +print "" + Index: xc/extras/freetype2/src/tools/docmaker.py diff -u /dev/null xc/extras/freetype2/src/tools/docmaker.py:1.1.1.2 --- /dev/null Fri Jan 18 15:21:58 2002 +++ xc/extras/freetype2/src/tools/docmaker.py Mon Jan 14 11:52:23 2002 @@ -0,0 +1,1665 @@ +#!/usr/bin/env python +# +# DocMaker 0.1 (c) 2000-2001 David Turner <david@freetype.org> +# +# DocMaker is a very simple program used to generate the API Reference +# of programs by extracting comments from source files, and generating +# the equivalent HTML documentation. +# +# DocMaker is very similar to other tools like Doxygen, with the +# following differences: +# +# - It is written in Python (so it is slow, but easy to maintain and +# improve). +# +# - The comment syntax used by DocMaker is simpler and makes for +# clearer comments. +# +# Of course, it doesn't have all the goodies of most similar tools, +# (e.g. C++ class hierarchies), but hey, it is only 2000 lines of +# Python. +# +# DocMaker is mainly used to generate the API references of several +# FreeType packages. +# +# - David +# + +import fileinput, sys, os, time, string, glob, getopt + +# The Project's title. This can be overridden from the command line with +# the options "-t" or "--title". +# +project_title = "Project" + +# The project's filename prefix. This can be set from the command line with +# the options "-p" or "--prefix" +# +project_prefix = "" + +# The project's documentation output directory. This can be set from the +# command line with the options "-o" or "--output". +# +output_dir = None + + +# The following defines the HTML header used by all generated pages. +# +html_header_1 = """\ +<html> +<header> +<title>""" + +html_header_2= """ API Reference + + + + +

    """ + +html_header_3=""" API Reference

    +""" + +# This is recomputed later when the project title changes. +# +html_header = html_header_1 + project_title + html_header_2 + project_title + html_header_3 + + +# The HTML footer used by all generated pages. +# +html_footer = """\ + +""" + +# The header and footer used for each section. +# +section_title_header = "

    " +section_title_footer = "

    " + +# The header and footer used for code segments. +# +code_header = "
    "
    +code_footer = "
    " + +# Paragraph header and footer. +# +para_header = "

    " +para_footer = "

    " + +# Block header and footer. +# +block_header = "
    " +block_footer = "

    " + +# Description header/footer. +# +description_header = "
    " +description_footer = "

    " + +# Marker header/inter/footer combination. +# +marker_header = "
    " +marker_inter = "
    " +marker_footer = "
    " + +# Source code extracts header/footer. +# +source_header = "
    "
    +source_footer = "

    " + +# Chapter header/inter/footer. +# +chapter_header = "

    " +chapter_inter = "

      " +chapter_footer = "
    " + +current_section = None + + +# This function is used to sort the index. It is a simple lexicographical +# sort, except that it places capital letters before lowercase ones. +# +def index_sort( s1, s2 ): + if not s1: + return -1 + + if not s2: + return 1 + + l1 = len( s1 ) + l2 = len( s2 ) + m1 = string.lower( s1 ) + m2 = string.lower( s2 ) + + for i in range( l1 ): + if i >= l2 or m1[i] > m2[i]: + return 1 + + if m1[i] < m2[i]: + return -1 + + if s1[i] < s2[i]: + return -1 + + if s1[i] > s2[i]: + return 1 + + if l2 > l1: + return -1 + + return 0 + + +# Sort input_list, placing the elements of order_list in front. +# +def sort_order_list( input_list, order_list ): + new_list = order_list[:] + for id in input_list: + if not id in order_list: + new_list.append( id ) + return new_list + + +# Translate a single line of source to HTML. This will convert +# a "<" into "<.", ">" into ">.", etc. +# +def html_quote( line ): + result = string.replace( line, "&", "&" ) + result = string.replace( result, "<", "<" ) + result = string.replace( result, ">", ">" ) + return result + +# same as 'html_quote', but ignores left and right brackets +# +def html_quote0( line ): + return string.replace( line, "&", "&" ) + + +# Open the standard output to a given project documentation file. Use +# "output_dir" to determine the filename location if necessary and save the +# old stdout in a tuple that is returned by this function. +# +def open_output( filename ): + global output_dir + + if output_dir and output_dir != "": + filename = output_dir + os.sep + filename + + old_stdout = sys.stdout + new_file = open( filename, "w" ) + sys.stdout = new_file + + return ( new_file, old_stdout ) + + +# Close the output that was returned by "close_output". +# +def close_output( output ): + output[0].close() + sys.stdout = output[1] + + +# Check output directory. +# +def check_output( ): + global output_dir + if output_dir: + if output_dir != "": + if not os.path.isdir( output_dir ): + sys.stderr.write( "argument" + " '" + output_dir + "' " + + "is not a valid directory" ) + sys.exit( 2 ) + else: + output_dir = None + + +def compute_time_html( ): + global html_footer + time_string = time.asctime( time.localtime( time.time() ) ) + html_footer = "

    generated on " + time_string + "

    " + html_footer + +# The FreeType 2 reference is extracted from the source files. These +# contain various comment blocks that follow one of the following formats: +# +# /************************** +# * +# * FORMAT1 +# * +# * +# * +# * +# *************************/ +# +# /**************************/ +# /* */ +# /* FORMAT2 */ +# /* */ +# /* */ +# /* */ +# /* */ +# +# /**************************/ +# /* */ +# /* FORMAT3 */ +# /* */ +# /* */ +# /* */ +# /* */ +# /**************************/ +# +# Each block contains a list of markers; each one can be followed by +# some arbitrary text or a list of fields. Here an example: +# +# +# MyStruct +# +# +# this structure holds some data +# +# +# x :: horizontal coordinate +# y :: vertical coordinate +# +# +# This example defines three markers: 'Struct', 'Description' & 'Fields'. +# The first two markers contain arbitrary text, while the last one contains +# a list of fields. +# +# Each field is simply of the format: WORD :: TEXT... +# +# Note that typically each comment block is followed by some source code +# declaration that may need to be kept in the reference. +# +# Note that markers can alternatively be written as "@MARKER:" instead of +# "". All marker identifiers are converted to lower case during +# parsing in order to simply sorting. +# +# We associate with each block the following source lines that do not begin +# with a comment. For example, the following: +# +# /********************************** +# * +# * blabla +# * +# */ +# +# bla_bla_bla +# bilip_bilip +# +# /* - this comment acts as a separator - */ +# +# blo_blo_blo +# +# +# will only keep the first two lines of sources with +# the "blabla" block. +# +# However, the comment will be kept, with following source lines if it +# contains a starting '#' or '@' as in: +# +# /*@.....*/ +# /*#.....*/ +# /* @.....*/ +# /* #.....*/ +# + + + +############################################################################# +# +# The DocCode class is used to store source code lines. +# +# 'self.lines' contains a set of source code lines that will be dumped as +# HTML in a
     tag.
    +#
    +#   The object is filled line by line by the parser; it strips the leading
    +#   "margin" space from each input line before storing it in 'self.lines'.
    +#
    +class DocCode:
    +
    +    def __init__( self, margin = 0 ):
    +        self.lines  = []
    +        self.margin = margin
    +
    +
    +    def add( self, line ):
    +        # remove margin whitespace
    +        #
    +        if string.strip( line[: self.margin] ) == "":
    +            line = line[self.margin :]
    +        self.lines.append( line )
    +
    +
    +    def dump( self ):
    +        for line in self.lines:
    +            print "--" + line
    +        print ""
    +
    +
    +    def get_identifier( self ):
    +        # this function should never be called
    +        #
    +        return "UNKNOWN_CODE_IDENTIFIER!"
    +
    +
    +    def dump_html( self, identifiers = None ):
    +        # clean the last empty lines
    +        #
    +        l = len( self.lines ) - 1
    +        while l > 0 and string.strip( self.lines[l - 1] ) == "":
    +            l = l - 1
    +
    +        # The code footer should be directly appended to the last code
    +        # line to avoid an additional blank line.
    +        #
    +        print code_header,
    +        for line in self.lines[0 : l+1]:
    +            print '\n' + html_quote(line),
    +        print code_footer,
    +
    +
    +
    +#############################################################################
    +#
    +# The DocParagraph is used to store text paragraphs.
    +# 'self.words' is simply a list of words for the paragraph.
    +#
    +# The paragraph is filled line by line by the parser.
    +#
    +class DocParagraph:
    +
    +    def __init__( self ):
    +        self.words = []
    +
    +
    +    def add( self, line ):
    +        # Get rid of unwanted spaces in the paragraph.
    +        #
    +        # The following two lines are the same as
    +        #
    +        #   self.words.extend( string.split( line ) )
    +        #
    +        # but older Python versions don't have the `extend' attribute.
    +        #
    +        last = len( self.words )
    +        self.words[last : last] = string.split( line )
    +
    +
    +    # This function is used to retrieve the first word of a given
    +    # paragraph.
    +    #
    +    def get_identifier( self ):
    +        if self.words:
    +            return self.words[0]
    +
    +        # should never happen
    +        #
    +        return "UNKNOWN_PARA_IDENTIFIER!"
    +
    +
    +    def get_words( self ):
    +        return self.words[:]
    +
    +
    +    def dump( self, identifiers = None ):
    +        max_width = 50
    +        cursor    = 0
    +        line      = ""
    +        extra     = None
    +        alphanum  = string.lowercase + string.uppercase + string.digits + '_'
    +
    +        for word in self.words:
    +            # process cross references if needed
    +            #
    +            if identifiers and word and word[0] == '@':
    +                word = word[1 :]
    +
    +                # we need to find non-alphanumeric characters
    +                #
    +                l = len( word )
    +                i = 0
    +                while i < l and word[i] in alphanum:
    +                    i = i + 1
    +
    +                if i < l:
    +                    extra = word[i :]
    +                    word  = word[0 : i]
    +
    +                block = identifiers.get( word )
    +                if block:
    +                    word = '' + word + ''
    +                else:
    +                    word = '?' + word
    +
    +            if cursor + len( word ) + 1 > max_width:
    +                print html_quote0(line)
    +                cursor = 0
    +                line   = ""
    +
    +            line = line + word
    +            if not extra:
    +                line = line + " "
    +
    +            cursor = cursor + len( word ) + 1
    +
    +
    +            # Handle trailing periods, commas, etc. at the end of cross
    +            # references.
    +            #
    +            if extra:
    +                if cursor + len( extra ) + 1 > max_width:
    +                    print html_quote0(line)
    +                    cursor = 0
    +                    line   = ""
    +
    +                line   = line + extra + " "
    +                cursor = cursor + len( extra ) + 1
    +                extra  = None
    +
    +        if cursor > 0:
    +            print html_quote0(line)
    +
    +        # print "§" # for debugging only
    +
    +
    +    def dump_string( self ):
    +        s     = ""
    +        space = ""
    +        for word in self.words:
    +            s     = s + space + word
    +            space = " "
    +
    +        return s
    +
    +
    +    def dump_html( self, identifiers = None ):
    +        print para_header
    +        self.dump( identifiers )
    +        print para_footer
    +
    +
    +
    +#############################################################################
    +#
    +# DocContent is used to store the content of a given marker.
    +#
    +# The "self.items" list contains (field,elements) records, where "field"
    +# corresponds to a given structure field or function parameter (indicated
    +# by a "::"), or NULL for a normal section of text/code.
    +#
    +# Hence, the following example:
    +#
    +#   
    +#      This is an example of what can be put in a content section,
    +#
    +#      A second line of example text.
    +#
    +#      x :: A simple test field, with some contents.
    +#      y :: Even before, this field has some code contents.
    +#           {
    +#             y = x+2;
    +#           }
    +#
    +# should be stored as
    +#
    +#     [ ( None, [ DocParagraph, DocParagraph] ),
    +#       ( "x",  [ DocParagraph ] ),
    +#       ( "y",  [ DocParagraph, DocCode ] ) ]
    +#
    +# in 'self.items'.
    +#
    +# The DocContent object is entirely built at creation time; you must pass a
    +# list of input text lines in the "lines_list" parameter.
    +#
    +class DocContent:
    +
    +    def __init__( self, lines_list ):
    +        self.items  = []
    +        code_mode   = 0
    +        code_margin = 0
    +        text        = []
    +        paragraph   = None   # represents the current DocParagraph
    +        code        = None   # represents the current DocCode
    +
    +        elements    = []     # the list of elements for the current field;
    +                             # contains DocParagraph or DocCode objects
    +
    +        field       = None   # the current field
    +
    +        for aline in lines_list:
    +            if code_mode == 0:
    +                line   = string.lstrip( aline )
    +                l      = len( line )
    +                margin = len( aline ) - l
    +
    +                # if the line is empty, this is the end of the current
    +                # paragraph
    +                #
    +                if l == 0 or line == '{':
    +                    if paragraph:
    +                        elements.append( paragraph )
    +                        paragraph = None
    +
    +                    if line == "":
    +                        continue
    +
    +                    code_mode   = 1
    +                    code_margin = margin
    +                    code        = None
    +                    continue
    +
    +                words = string.split( line )
    +
    +                # test for a field delimiter on the start of the line, i.e.
    +                # the token `::'
    +                #
    +                if len( words ) >= 2 and words[1] == "::":
    +                    # start a new field - complete current paragraph if any
    +                    #
    +                    if paragraph:
    +                        elements.append( paragraph )
    +                        paragraph = None
    +
    +                    # append previous "field" to self.items
    +                    #
    +                    self.items.append( ( field, elements ) )
    +
    +                    # start new field and elements list
    +                    #
    +                    field    = words[0]
    +                    elements = []
    +                    words    = words[2 :]
    +
    +                # append remaining words to current paragraph
    +                #
    +                if len( words ) > 0:
    +                    line = string.join( words )
    +                    if not paragraph:
    +                        paragraph = DocParagraph()
    +                    paragraph.add( line )
    +
    +            else:
    +                # we are in code mode...
    +                #
    +                line = aline
    +
    +                # the code block ends with a line that has a single '}' on
    +                # it that is located at the same column that the opening
    +                # accolade...
    +                #
    +                if line == " " * code_margin + '}':
    +                    if code:
    +                        elements.append( code )
    +                        code = None
    +
    +                    code_mode   = 0
    +                    code_margin = 0
    +
    +                # otherwise, add the line to the current paragraph
    +                #
    +                else:
    +                    if not code:
    +                        code = DocCode()
    +                    code.add( line )
    +
    +        if paragraph:
    +            elements.append( paragraph )
    +
    +        if code:
    +            elements.append( code )
    +
    +        self.items.append( ( field, elements ) )
    +
    +
    +    def get_identifier( self ):
    +        if self.items:
    +            item = self.items[0]
    +            for element in item[1]:
    +                return element.get_identifier()
    +
    +        # should never happen
    +        #
    +        return "UNKNOWN_CONTENT_IDENTIFIER!"
    +
    +
    +    def get_title( self ):
    +        if self.items:
    +            item = self.items[0]
    +            for element in item[1]:
    +                return element.dump_string()
    +
    +        # should never happen
    +        #
    +        return "UNKNOWN_CONTENT_TITLE!"
    +
    +
    +    def dump( self ):
    +        for item in self.items:
    +            field = item[0]
    +            if field:
    +                print ""
    +
    +            for element in item[1]:
    +                element.dump()
    +
    +            if field:
    +                print ""
    +
    +
    +    def dump_html( self, identifiers = None ):
    +        n        = len( self.items )
    +        in_table = 0
    +
    +        for i in range( n ):
    +            item  = self.items[i]
    +            field = item[0]
    +
    +            if not field:
    +                if in_table:
    +                    print ""
    +                    in_table = 0
    +
    +                for element in item[1]:
    +                    element.dump_html( identifiers )
    +
    +            else:
    +                if not in_table:
    +                    print "
    " + in_table = 1 + else: + print "
    " + + print "" + field + "" + + for element in item[1]: + element.dump_html( identifiers ) + + if in_table: + print "
    " + + + def dump_html_in_table( self, identifiers = None ): + n = len( self.items ) + in_table = 0 + + for i in range( n ): + item = self.items[i] + field = item[0] + + if not field: + if item[1]: + print "" + for element in item[1]: + element.dump_html( identifiers ) + print "" + + else: + print "" + field + "" + + for element in item[1]: + element.dump_html( identifiers ) + + print "" + + + +############################################################################# +# +# The DocBlock class is used to store a given comment block. It contains +# a list of markers, as well as a list of contents for each marker. +# +# "self.items" is a list of (marker, contents) elements, where 'marker' is +# a lowercase marker string, and 'contents' is a DocContent object. +# +# "self.source" is simply a list of text lines taken from the uncommented +# source itself. +# +# Finally, "self.name" is a simple identifier used to uniquely identify +# the block. It is taken from the first word of the first paragraph of the +# first marker of a given block, i.e: +# +# Goo +# Bla bla bla +# +# will have a name of "Goo" +# +class DocBlock: + + def __init__( self, block_line_list = [], source_line_list = [] ): + self.items = [] # current ( marker, contents ) list + self.section = None # section this block belongs to + self.filename = "unknown" # filename defining this block + self.lineno = 0 # line number in filename + + marker = None # current marker + content = [] # current content lines list + alphanum = string.letters + string.digits + "_" + self.name = None + + for line in block_line_list: + line2 = string.lstrip( line ) + l = len( line2 ) + margin = len( line ) - l + + if l > 3: + ender = None + if line2[0] == '<': + ender = '>' + elif line2[0] == '@': + ender = ':' + + if ender: + i = 1 + while i < l and line2[i] in alphanum: + i = i + 1 + if i < l and line2[i] == ender: + if marker and content: + self.add( marker, content ) + marker = line2[1 : i] + content = [] + line2 = string.lstrip( line2[i+1 :] ) + l = len( line2 ) + line = " " * margin + line2 + + content.append( line ) + + if marker and content: + self.add( marker, content ) + + self.source = [] + if self.items: + self.source = source_line_list + + # now retrieve block name when possible + # + if self.items: + first = self.items[0] + self.name = first[1].get_identifier() + + + # This function adds a new element to 'self.items'. + # + # 'marker' is a marker string, or None. + # 'lines' is a list of text lines used to compute a list of + # DocContent objects. + # + def add( self, marker, lines ): + # remove the first and last empty lines from the content list + # + l = len( lines ) + if l > 0: + i = 0 + while l > 0 and string.strip( lines[l - 1] ) == "": + l = l - 1 + while i < l and string.strip( lines[i] ) == "": + i = i + 1 + lines = lines[i : l] + l = len( lines ) + + # add a new marker only if its marker and its content list + # are not empty + # + if l > 0 and marker: + content = DocContent( lines ) + self.items.append( ( string.lower( marker ), content ) ) + + + def find_content( self, marker ): + for item in self.items: + if ( item[0] == marker ): + return item[1] + return None + + + def html_address( self ): + section = self.section + if section and section.filename: + return section.filename + '#' + self.name + + return "" # this block is not in a section? + + + def location( self ): + return self.filename + ':' + str( self.lineno ) + + + def print_warning( self, message ): + sys.stderr.write( "WARNING:" + + self.location() + ": " + message + '\n' ) + + + def print_error( self, message ): + sys.stderr.write( "ERROR:" + + self.location() + ": " + message + '\n' ) + sys.exit() + + + def dump( self ): + for i in range( len( self.items ) ): + print "[" + self.items[i][0] + "]" + content = self.items[i][1] + content.dump() + + + def dump_html( self, identifiers = None ): + types = ['type', 'struct', 'functype', 'function', + 'constant', 'enum', 'macro', 'structure', 'also'] + + parameters = ['input', 'inout', 'output', 'return'] + + if not self.items: + return + + # start of a block + # + print block_header + + # place html anchor if needed + # + if self.name: + print '' + print "

    " + self.name + "

    " + print "
    " + + # print source code + # + if not self.source: + print block_footer + return + + lines = self.source + l = len( lines ) - 1 + while l >= 0 and string.strip( lines[l] ) == "": + l = l - 1 + print source_header + print "" + for line in lines[0 : l+1]: + print html_quote(line) + print source_footer + + in_table = 0 + + # dump each (marker,content) element + # + for element in self.items: + marker = element[0] + content = element[1] + + if marker == "description": + print description_header + content.dump_html( identifiers ) + print description_footer + + elif not ( marker in types ): + sys.stdout.write( marker_header ) + sys.stdout.write( marker ) + sys.stdout.write( marker_inter + '\n' ) + content.dump_html( identifiers ) + print marker_footer + + print "" + + print block_footer + + + +############################################################################# +# +# The DocSection class is used to store a given documentation section. +# +# Each section is made of an identifier, an abstract and a description. +# +# For example, look at: +# +#
    Basic_Data_Types +# +# FreeType 2 Basic Data Types +# +# <Abstract> +# Definitions of basic FreeType data types +# +# <Description> +# FreeType defines several basic data types for all its +# operations... +# +class DocSection: + + def __init__( self, block ): + self.block = block + self.name = string.lower( block.name ) + self.abstract = block.find_content( "abstract" ) + self.description = block.find_content( "description" ) + self.elements = {} + self.list = [] + self.filename = self.name + ".html" + self.chapter = None + + # sys.stderr.write( "new section '" + self.name + "'" ) + + + def add_element( self, block ): + # check that we don't have a duplicate element in this + # section + # + if self.elements.has_key( block.name ): + block.print_error( "duplicate element definition for " + + "'" + block.name + "' " + + "in section " + + "'" + self.name + "'\n" + + "previous definition in " + + "'" + self.elements[block.name].location() + "'" ) + + self.elements[block.name] = block + self.list.append( block ) + + + def print_warning( self, message ): + self.block.print_warning( message ) + + + def print_error( self, message ): + self.block.print_error( message ) + + + def dump_html( self, identifiers = None ): + """make an HTML page from a given DocSection""" + + # print HTML header + # + print html_header + + # print title + # + print section_title_header + print self.title + print section_title_footer + + # print description + # + print block_header + self.description.dump_html( identifiers ) + print block_footer + + # print elements + # + for element in self.list: + element.dump_html( identifiers ) + + print html_footer + + +class DocSectionList: + + def __init__( self ): + self.sections = {} # map section names to section objects + self.list = [] # list of sections (in creation order) + self.current_section = None # current section + self.identifiers = {} # map identifiers to blocks + + + def append_section( self, block ): + name = string.lower( block.name ) + abstract = block.find_content( "abstract" ) + + if self.sections.has_key( name ): + # There is already a section with this name in our list. We + # will try to complete it. + # + section = self.sections[name] + if section.abstract: + # This section already has an abstract defined; simply check + # that the new section doesn't provide a new one. + # + if abstract: + section.block.print_error( + "duplicate section definition for " + + "'" + name + "'\n" + + "previous definition in " + + "'" + section.block.location() + "'\n" + + "second definition in " + + "'" + block.location() + "'" ) + else: + # The old section didn't contain an abstract; we are now + # going to replace it. + # + section.abstract = abstract + section.description = block.find_content( "description" ) + section.block = block + + else: + # a new section + # + section = DocSection( block ) + self.sections[name] = section + self.list.append( section ) + + self.current_section = section + + + def append_block( self, block ): + if block.name: + section = block.find_content( "section" ) + if section: + self.append_section( block ) + + elif self.current_section: + self.current_section.add_element( block ) + block.section = self.current_section + self.identifiers[block.name] = block + + + def prepare_files( self, file_prefix = None ): + # prepare the section list, by computing section filenames and the + # index + # + if file_prefix: + prefix = file_prefix + "-" + else: + prefix = "" + + # compute section names + # + for section in self.sections.values(): + title_content = section.block.find_content( "title" ) + if title_content: + section.title = title_content.get_title() + else: + section.title = "UNKNOWN_SECTION_TITLE!" + + + # sort section elements according to the <order> marker if available + # + for section in self.sections.values(): + order = section.block.find_content( "order" ) + if order: + # sys.stderr.write( "<order> found at " + # + section.block.location() + '\n' ) + order_list = [] + for item in order.items: + for element in item[1]: + words = None + try: + words = element.get_words() + except: + section.block.print_warning( + "invalid content in <order> marker\n" ) + if words: + for word in words: + block = self.identifiers.get( word ) + if block: + if block.section == section: + order_list.append( block ) + else: + section.block.print_warning( + "invalid reference to " + + "'" + word + "' " + + "defined in other section" ) + else: + section.block.print_warning( + "invalid reference to " + + "'" + word + "'" ) + + # now sort the list of blocks according to the order list + # + new_list = order_list[:] + for block in section.list: + if not block in order_list: + new_list.append( block ) + + section.list = new_list + + # compute section filenames + # + for section in self.sections.values(): + section.filename = prefix + section.name + ".html" + + self.toc_filename = prefix + "toc.html" + self.index_filename = prefix + "index.html" + + # compute the sorted list of identifiers for the index + # + self.index = self.identifiers.keys() + self.index.sort( index_sort ) + + + def dump_html_sections( self ): + for section in self.sections.values(): + if section.filename: + output = open_output( section.filename ) + + section.dump_html( self.identifiers ) + + close_output( output ) + + + def dump_html_index( self ): + output = open_output( self.index_filename ) + + num_columns = 3 + total = len( self.index ) + line = 0 + + print html_header + print "<center><h1>General Index</h1></center>" + print "<center><table cellpadding=5><tr valign=top><td>" + + for ident in self.index: + block = self.identifiers[ident] + if block: + sys.stdout.write( '<a href="' + block.html_address() + '">' ) + sys.stdout.write( block.name ) + sys.stdout.write( '</a><br>' + '\n' ) + + if line * num_columns >= total: + print "</td><td>" + line = 0 + else: + line = line + 1 + else: + sys.stderr.write( "identifier '" + ident + + "' has no definition" + '\n' ) + + print "</tr></table></center>" + print html_footer + + close_output( output ) + + + +# Filter a given list of DocBlocks. Returns a new list of DocBlock objects +# that only contains element whose "type" (i.e. first marker) is in the +# "types" parameter. +# +class DocChapter: + + def __init__( self, block ): + self.sections_names = [] # ordered list of section names + self.sections = [] # ordered list of DocSection objects + # for this chapter + self.block = block + + # look for chapter title + content = block.find_content( "title" ) + if content: + self.title = content.get_title() + else: + self.title = "UNKNOWN CHAPTER TITLE" + + # look for section list + content = block.find_content( "sections" ) + if not content: + block.print_error( "chapter has no <sections> content" ) + + # compute list of section names + slist = [] + for item in content.items: + for element in item[1]: + try: + words = element.get_words() + l = len( slist ) + slist[l : l] = words + except: + block.print_warning( + "invalid content in <sections> marker" ) + + self.section_names = slist + + +class DocDocument: + + def __init__( self ): + self.section_list = DocSectionList() # section list object + self.chapters = [] # list of chapters + self.lost_sections = [] # list of sections with + # no chapter + + def append_block( self, block ): + if block.name: + content = block.find_content( "chapter" ) + if content: + # a chapter definition -- add it to our list + # + chapter = DocChapter( block ) + self.chapters.append( chapter ) + else: + self.section_list.append_block( block ) + + + def prepare_chapters( self ): + # check section names + # + for chapter in self.chapters: + slist = [] + for name in chapter.section_names: + section = self.section_list.sections.get( name ) + if not section: + chapter.block.print_warning( + "invalid reference to unknown section '" + name + "'" ) + else: + section.chapter = chapter + slist.append( section ) + + chapter.sections = slist + + for section in self.section_list.list: + if not section.chapter: + section.block.print_warning( + "section '" + section.name + "' is not in any chapter" ) + self.lost_sections.append( section ) + + + def prepare_files( self, file_prefix = None ): + self.section_list.prepare_files( file_prefix ) + self.prepare_chapters() + + + def dump_toc_html( self ): + # dump an html table of contents + # + output = open_output( self.section_list.toc_filename ) + + print html_header + + print "<center><h1>Table of Contents</h1></center>" + + for chapter in self.chapters: + print chapter_header + chapter.title + chapter_inter + + print "<table cellpadding=5>" + for section in chapter.sections: + if section.abstract: + print "<tr valign=top><td>" + sys.stdout.write( '<a href="' + section.filename + '">' ) + sys.stdout.write( section.title ) + sys.stdout.write( "</a></td><td>" + '\n' ) + section.abstract.dump_html( self.section_list.identifiers ) + print "</td></tr>" + + print "</table>" + + print chapter_footer + + # list lost sections + # + if self.lost_sections: + print chapter_header + "OTHER SECTIONS:" + chapter_inter + + print "<table cellpadding=5>" + for section in self.lost_sections: + if section.abstract: + print "<tr valign=top><td>" + sys.stdout.write( '<a href="' + section.filename + '">' ) + sys.stdout.write( section.title ) + sys.stdout.write( "</a></td><td>" + '\n' ) + section.abstract.dump_html( self.section_list.identifiers ) + print "</td></tr>" + + print "</table>" + + print chapter_footer + + # index + # + print chapter_header + '<a href="' + self.section_list.index_filename + '">Index</a>' + chapter_footer + + print html_footer + + close_output( output ) + + + def dump_index_html( self ): + self.section_list.dump_html_index() + + + def dump_sections_html( self ): + self.section_list.dump_html_sections() + + +def filter_blocks_by_type( block_list, types ): + new_list = [] + for block in block_list: + if block.items: + element = block.items[0] + marker = element[0] + if marker in types: + new_list.append( block ) + + return new_list + + +def filter_section_blocks( block ): + return block.section != None + + +# Perform a lexicographical comparison of two DocBlock objects. Returns -1, +# 0 or 1. +# +def block_lexicographical_compare( b1, b2 ): + if not b1.name: + return -1 + if not b2.name: + return 1 + + id1 = string.lower( b1.name ) + id2 = string.lower( b2.name ) + + if id1 < id2: + return -1 + elif id1 == id2: + return 0 + else: + return 1 + + +# Dump a list block as a single HTML page. +# +def dump_html_1( block_list ): + print html_header + + for block in block_list: + block.dump_html() + + print html_footer + + +def file_exists( pathname ): + result = 1 + try: + file = open( pathname, "r" ) + file.close() + except: + result = None + + return result + + +def add_new_block( list, filename, lineno, block_lines, source_lines ): + """add a new block to the list""" + block = DocBlock( block_lines, source_lines ) + block.filename = filename + block.lineno = lineno + list.append( block ) + + +def make_block_list( args = None ): + """parse a file and extract comments blocks from it""" + + file_list = [] + # sys.stderr.write( repr( sys.argv[1 :] ) + '\n' ) + + if not args: + args = sys.argv[1 :] + + for pathname in args: + if string.find( pathname, '*' ) >= 0: + newpath = glob.glob( pathname ) + newpath.sort() # sort files -- this is important because + # of the order of files + else: + newpath = [pathname] + + last = len( file_list ) + file_list[last : last] = newpath + + if len( file_list ) == 0: + file_list = None + else: + # now filter the file list to remove non-existing ones + file_list = filter( file_exists, file_list ) + + list = [] + block = [] + format = 0 + lineno = 0 + + # We use "format" to store the state of our parser: + # + # 0 - wait for beginning of comment + # 1 - parse comment format 1 + # 2 - parse comment format 2 + # + # 4 - wait for beginning of source (or comment?) + # 5 - process source + # + comment = [] + source = [] + state = 0 + + fileinput.close() + for line in fileinput.input( file_list ): + l = len( line ) + if l > 0 and line[l - 1] == '\012': + line = line[0 : l-1] + + # stripped version of the line + # + line2 = string.strip( line ) + l = len( line2 ) + + # if this line begins with a comment and we are processing some + # source, exit to state 0 + # + # unless we encounter something like: + # + # /*@..... + # /*#..... + # + # /* @..... + # /* #..... + # + if format >= 4 and l > 2 and line2[0 : 2] == '/*': + if l < 4 or ( line2[2] != '@' and line2[2 : 4] != ' @' and + line2[2] != '#' and line2[2 : 4] != ' #'): + add_new_block( list, fileinput.filename(), + lineno, block, source ) + format = 0 + + if format == 0: #### wait for beginning of comment #### + if l > 3 and line2[0 : 3] == '/**': + i = 3 + while i < l and line2[i] == '*': + i = i + 1 + + if i == l: + # this is '/**' followed by any number of '*', the + # beginning of a Format 1 block + # + block = [] + source = [] + format = 1 + lineno = fileinput.filelineno() + + elif i == l - 1 and line2[i] == '/': + # this is '/**' followed by any number of '*', followed + # by a '/', i.e. the beginning of a Format 2 or 3 block + # + block = [] + source = [] + format = 2 + lineno = fileinput.filelineno() + + ############################################################## + # + # FORMAT 1 + # + elif format == 1: + + # If the line doesn't begin with a "*", something went wrong, + # and we must exit, and forget the current block. + # + if l == 0 or line2[0] != '*': + block = [] + format = 0 + + # Otherwise, we test for an end of block, which is an arbitrary + # number of '*', followed by '/'. + # + else: + i = 1 + while i < l and line2[i] == '*': + i = i + 1 + + # test for the end of the block + # + if i < l and line2[i] == '/': + if block != []: + format = 4 + else: + format = 0 + else: + # otherwise simply append line to current block + # + block.append( line2[i :] ) + + continue + + ############################################################## + # + # FORMAT 2 + # + elif format == 2: + + # If the line doesn't begin with '/*' and end with '*/', this is + # the end of the format 2 format. + # + if l < 4 or line2[: 2] != '/*' or line2[-2 :] != '*/': + if block != []: + format = 4 + else: + format = 0 + else: + # remove the start and end comment delimiters, then + # right-strip the line + # + line2 = string.rstrip( line2[2 : -2] ) + + # check for end of a format2 block, i.e. a run of '*' + # + if string.count( line2, '*' ) == l - 4: + if block != []: + format = 4 + else: + format = 0 + else: + # otherwise, add the line to the current block + # + block.append( line2 ) + + continue + + if format >= 4: #### source processing #### + if l > 0: + format = 5 + + if format == 5: + source.append( line ) + + if format >= 4: + add_new_block( list, fileinput.filename(), lineno, block, source ) + + return list + + + +# This function is only used for debugging +# +def dump_block_list( list ): + """dump a comment block list""" + for block in list: + print "----------------------------------------" + for line in block[0]: + print line + for line in block[1]: + print line + + print "---------the end-----------------------" + + +def usage(): + print "\nDocMaker 0.1 Usage information\n" + print " docmaker [options] file1 [ file2 ... ]\n" + print "using the following options:\n" + print " -h : print this page" + print " -t : set project title, as in '-t \"My Project\"'" + print " -o : set output directory, as in '-o mydir'" + print " -p : set documentation prefix, as in '-p ft2'" + print "" + print " --title : same as -t, as in '--title=\"My Project\"'" + print " --output : same as -o, as in '--output=mydir'" + print " --prefix : same as -p, as in '--prefix=ft2'" + + +def main( argv ): + """main program loop""" + + global output_dir, project_title, project_prefix + global html_header, html_header1, html_header2, html_header3 + + try: + opts, args = getopt.getopt( sys.argv[1:], + "ht:o:p:", + [ "help", "title=", "output=", "prefix=" ] ) + + except getopt.GetoptError: + usage() + sys.exit( 2 ) + + if args == []: + usage() + sys.exit( 1 ) + + # process options + # + project_title = "Project" + project_prefix = None + output_dir = None + + for opt in opts: + if opt[0] in ( "-h", "--help" ): + usage() + sys.exit( 0 ) + + if opt[0] in ( "-t", "--title" ): + project_title = opt[1] + + if opt[0] in ( "-o", "--output" ): + output_dir = opt[1] + + if opt[0] in ( "-p", "--prefix" ): + project_prefix = opt[1] + + html_header = html_header_1 + project_title + html_header_2 + project_title + html_header_3 + check_output( ) + compute_time_html() + + # we begin by simply building a list of DocBlock elements + # + list = make_block_list( args ) + + # now, sort the blocks into sections + # + document = DocDocument() + for block in list: + document.append_block( block ) + + document.prepare_files( project_prefix ) + + document.dump_toc_html() + document.dump_sections_html() + document.dump_index_html() + +# if called from the command line +# +if __name__ == '__main__': + main( sys.argv ) + + +# eof Index: xc/extras/freetype2/src/tools/glnames.py diff -u /dev/null xc/extras/freetype2/src/tools/glnames.py:1.1.1.3 --- /dev/null Fri Jan 18 15:21:59 2002 +++ xc/extras/freetype2/src/tools/glnames.py Mon Jan 14 11:52:24 2002 @@ -0,0 +1,1722 @@ +#!/usr/bin/env python +# + +# +# FreeType 2 glyph name builder +# + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +"""\ + +usage: %s <output-file> + + This very simple python script is used to generate the glyph names + tables defined in the PSNames module. + + Its single argument is the name of the header file to be created. +""" + + +import sys, string + + +# This table is used to name the glyph according to the Macintosh +# specification. It is used by the TrueType Postscript names table +# +# see http://fonts.apple.com/TTRefMan/RM06/Chap6post.html +# for the official list +# +mac_standard_names = \ +[ + # 0 + ".notdef", ".null", "nonmarkingreturn", "space", "exclam", + "quotedbl", "numbersign", "dollar", "percent", "ampersand", + + # 10 + "quotesingle", "parenleft", "parenright", "asterisk", "plus", + "comma", "hyphen", "period", "slash", "zero", + + # 20 + "one", "two", "three", "four", "five", + "six", "seven", "eight", "nine", "colon", + + # 30 + "semicolon", "less", "equal", "greater", "question", + "at", "A", "B", "C", "D", + + # 40 + "E", "F", "G", "H", "I", + "J", "K", "L", "M", "N", + + # 50 + "O", "P", "Q", "R", "S", + "T", "U", "V", "W", "X", + + # 60 + "Y", "Z", "bracketleft", "backslash", "bracketright", + "asciicircum", "underscore", "grave", "a", "b", + + # 70 + "c", "d", "e", "f", "g", + "h", "i", "j", "k", "l", + + # 80 + "m", "n", "o", "p", "q", + "r", "s", "t", "u", "v", + + # 90 + "w", "x", "y", "z", "braceleft", + "bar", "braceright", "asciitilde", "Adieresis", "Aring", + + # 100 + "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", + "aacute", "agrave", "acircumflex", "adieresis", "atilde", + + # 110 + "aring", "ccedilla", "eacute", "egrave", "ecircumflex", + "edieresis", "iacute", "igrave", "icircumflex", "idieresis", + + # 120 + "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", + "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", + + # 130 + "dagger", "degree", "cent", "sterling", "section", + "bullet", "paragraph", "germandbls", "registered", "copyright", + + # 140 + "trademark", "acute", "dieresis", "notequal", "AE", + "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", + + # 150 + "yen", "mu", "partialdiff", "summation", "product", + "pi", "integral", "ordfeminine", "ordmasculine", "Omega", + + # 160 + "ae", "oslash", "questiondown", "exclamdown", "logicalnot", + "radical", "florin", "approxequal", "Delta", "guillemotleft", + + # 170 + "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", + "Otilde", "OE", "oe", "endash", "emdash", + + # 180 + "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", + "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", + + # 190 + "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", + "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", + "Acircumflex", + + # 200 + "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", + "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", + + # 210 + "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", + "dotlessi", "circumflex", "tilde", "macron", "breve", + + # 220 + "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", + "caron", "Lslash", "lslash", "Scaron", "scaron", + + # 230 + "Zcaron", "zcaron", "brokenbar", "Eth", "eth", + "Yacute", "yacute", "Thorn", "thorn", "minus", + + # 240 + "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", + "onequarter", "threequarters", "franc", "Gbreve", "gbreve", + + # 250 + "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute", + "Ccaron", "ccaron", "dcroat" +] + + +# the list of standard "SID" glyph names. For the official list, +# see Annex A of document at +# http://partners.adobe.com/asn/developer/pdfs/tn/5176.CFF.pdf +# +sid_standard_names = \ +[ + # 0 + ".notdef", "space", "exclam", "quotedbl", "numbersign", + "dollar", "percent", "ampersand", "quoteright", "parenleft", + + # 10 + "parenright", "asterisk", "plus", "comma", "hyphen", + "period", "slash", "zero", "one", "two", + + # 20 + "three", "four", "five", "six", "seven", + "eight", "nine", "colon", "semicolon", "less", + + # 30 + "equal", "greater", "question", "at", "A", + "B", "C", "D", "E", "F", + + # 40 + "G", "H", "I", "J", "K", + "L", "M", "N", "O", "P", + + # 50 + "Q", "R", "S", "T", "U", + "V", "W", "X", "Y", "Z", + + # 60 + "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", + "quoteleft", "a", "b", "c", "d", + + # 70 + "e", "f", "g", "h", "i", + "j", "k", "l", "m", "n", + + # 80 + "o", "p", "q", "r", "s", + "t", "u", "v", "w", "x", + + # 90 + "y", "z", "braceleft", "bar", "braceright", + "asciitilde", "exclamdown", "cent", "sterling", "fraction", + + # 100 + "yen", "florin", "section", "currency", "quotesingle", + "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", + + # 110 + "fl", "endash", "dagger", "daggerdbl", "periodcentered", + "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", + + # 120 + "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", + "acute", "circumflex", "tilde", "macron", "breve", + + # 130 + "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", + "ogonek", "caron", "emdash", "AE", "ordfeminine", + + # 140 + "Lslash", "Oslash", "OE", "ordmasculine", "ae", + "dotlessi", "lslash", "oslash", "oe", "germandbls", + + # 150 + "onesuperior", "logicalnot", "mu", "trademark", "Eth", + "onehalf", "plusminus", "Thorn", "onequarter", "divide", + + # 160 + "brokenbar", "degree", "thorn", "threequarters", "twosuperior", + "registered", "minus", "eth", "multiply", "threesuperior", + + # 170 + "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", + "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", + + # 180 + "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", + "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", + + # 190 + "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", + "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", + + # 200 + "aacute", "acircumflex", "adieresis", "agrave", "aring", + "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", + + # 210 + "egrave", "iacute", "icircumflex", "idieresis", "igrave", + "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", + + # 220 + "otilde", "scaron", "uacute", "ucircumflex", "udieresis", + "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", + + # 230 + "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", + "Acutesmall", + "parenleftsuperior", "parenrightsuperior", "twodotenleader", + "onedotenleader", "zerooldstyle", + + # 240 + "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", + "fiveoldstyle", + "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", + "commasuperior", + + # 250 + "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", + "bsuperior", + "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", + + # 260 + "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", + "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", + + # 270 + "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", + "Asmall", + "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", + + # 280 + "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", + "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", + + # 290 + "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", + "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", + + # 300 + "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", + "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", + "Dieresissmall", + + # 310 + "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", + "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", + "questiondownsmall", + + # 320 + "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", + "twothirds", "zerosuperior", "foursuperior", "fivesuperior", + "sixsuperior", + + # 330 + "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", + "oneinferior", + "twoinferior", "threeinferior", "fourinferior", "fiveinferior", + "sixinferior", + + # 340 + "seveninferior", "eightinferior", "nineinferior", "centinferior", + "dollarinferior", + "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", + "Acircumflexsmall", + + # 350 + "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", + "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", + "Igravesmall", + + # 360 + "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", + "Ntildesmall", + "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", + "Odieresissmall", + + # 370 + "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", + "Ucircumflexsmall", + "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", + "001.000", + + # 380 + "001.001", "001.002", "001.003", "Black", "Bold", + "Book", "Light", "Medium", "Regular", "Roman", + + # 390 + "Semibold" +] + + +# this table maps character code of the Adobe Standard Type 1 +# encoding to glyph indexes in the sid_standard_names table +# +t1_standard_encoding = \ +[ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 0, 111, 112, 113, + 114, 0, 115, 116, 117, 118, 119, 120, 121, 122, + 0, 123, 0, 124, 125, 126, 127, 128, 129, 130, + + 131, 0, 132, 133, 0, 134, 135, 136, 137, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 138, 0, 139, 0, 0, + 0, 0, 140, 141, 142, 143, 0, 0, 0, 0, + 0, 144, 0, 0, 0, 145, 0, 0, 146, 147, + + 148, 149, 0, 0, 0, 0 +] + + +# this table maps character code of the Adobe Expert Type 1 +# encoding to glyph indexes in the sid_standard_names table +# +t1_expert_encoding = \ +[ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 229, 230, 0, 231, 232, 233, 234, + 235, 236, 237, 238, 13, 14, 15, 99, 239, 240, + + 241, 242, 243, 244, 245, 246, 247, 248, 27, 28, + 249, 250, 251, 252, 0, 253, 254, 255, 256, 257, + 0, 0, 0, 258, 0, 0, 259, 260, 261, 262, + 0, 0, 263, 264, 265, 0, 266, 109, 110, 267, + 268, 269, 0, 270, 271, 272, 273, 274, 275, 276, + + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 304, 305, 306, 0, 0, 307, 308, 309, 310, + 311, 0, 312, 0, 0, 313, 0, 0, 314, 315, + 0, 0, 316, 317, 318, 0, 0, 0, 158, 155, + 163, 319, 320, 321, 322, 323, 324, 325, 0, 0, + + 326, 150, 164, 169, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + + 373, 374, 375, 376, 377, 378 +] + + +# This data has been taken literally from the file `glyphlist.txt', +# version 1.2, 22 Oct 1998. It is available from +# +# http://partners.adobe.com/asn/developer/typeforum/unicodegn.html +# +adobe_glyph_list = """\ +0041;A;LATIN CAPITAL LETTER A +00C6;AE;LATIN CAPITAL LETTER AE +01FC;AEacute;LATIN CAPITAL LETTER AE WITH ACUTE +F7E6;AEsmall;LATIN SMALL CAPITAL LETTER AE +00C1;Aacute;LATIN CAPITAL LETTER A WITH ACUTE +F7E1;Aacutesmall;LATIN SMALL CAPITAL LETTER A WITH ACUTE +0102;Abreve;LATIN CAPITAL LETTER A WITH BREVE +00C2;Acircumflex;LATIN CAPITAL LETTER A WITH CIRCUMFLEX +F7E2;Acircumflexsmall;LATIN SMALL CAPITAL LETTER A WITH CIRCUMFLEX +F6C9;Acute;CAPITAL ACUTE ACCENT +F7B4;Acutesmall;SMALL CAPITAL ACUTE ACCENT +00C4;Adieresis;LATIN CAPITAL LETTER A WITH DIAERESIS +F7E4;Adieresissmall;LATIN SMALL CAPITAL LETTER A WITH DIAERESIS +00C0;Agrave;LATIN CAPITAL LETTER A WITH GRAVE +F7E0;Agravesmall;LATIN SMALL CAPITAL LETTER A WITH GRAVE +0391;Alpha;GREEK CAPITAL LETTER ALPHA +0386;Alphatonos;GREEK CAPITAL LETTER ALPHA WITH TONOS +0100;Amacron;LATIN CAPITAL LETTER A WITH MACRON +0104;Aogonek;LATIN CAPITAL LETTER A WITH OGONEK +00C5;Aring;LATIN CAPITAL LETTER A WITH RING ABOVE +01FA;Aringacute;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +F7E5;Aringsmall;LATIN SMALL CAPITAL LETTER A WITH RING ABOVE +F761;Asmall;LATIN SMALL CAPITAL LETTER A +00C3;Atilde;LATIN CAPITAL LETTER A WITH TILDE +F7E3;Atildesmall;LATIN SMALL CAPITAL LETTER A WITH TILDE +0042;B;LATIN CAPITAL LETTER B +0392;Beta;GREEK CAPITAL LETTER BETA +F6F4;Brevesmall;SMALL CAPITAL BREVE +F762;Bsmall;LATIN SMALL CAPITAL LETTER B +0043;C;LATIN CAPITAL LETTER C +0106;Cacute;LATIN CAPITAL LETTER C WITH ACUTE +F6CA;Caron;CAPITAL CARON +F6F5;Caronsmall;SMALL CAPITAL CARON +010C;Ccaron;LATIN CAPITAL LETTER C WITH CARON +00C7;Ccedilla;LATIN CAPITAL LETTER C WITH CEDILLA +F7E7;Ccedillasmall;LATIN SMALL CAPITAL LETTER C WITH CEDILLA +0108;Ccircumflex;LATIN CAPITAL LETTER C WITH CIRCUMFLEX +010A;Cdotaccent;LATIN CAPITAL LETTER C WITH DOT ABOVE +F7B8;Cedillasmall;SMALL CAPITAL CEDILLA +03A7;Chi;GREEK CAPITAL LETTER CHI +F6F6;Circumflexsmall;SMALL CAPITAL MODIFIER LETTER CIRCUMFLEX ACCENT +F763;Csmall;LATIN SMALL CAPITAL LETTER C +0044;D;LATIN CAPITAL LETTER D +010E;Dcaron;LATIN CAPITAL LETTER D WITH CARON +0110;Dcroat;LATIN CAPITAL LETTER D WITH STROKE +2206;Delta;INCREMENT +0394;Delta;GREEK CAPITAL LETTER DELTA;Duplicate +F6CB;Dieresis;CAPITAL DIAERESIS +F6CC;DieresisAcute;CAPITAL DIAERESIS ACUTE ACCENT +F6CD;DieresisGrave;CAPITAL DIAERESIS GRAVE ACCENT +F7A8;Dieresissmall;SMALL CAPITAL DIAERESIS +F6F7;Dotaccentsmall;SMALL CAPITAL DOT ABOVE +F764;Dsmall;LATIN SMALL CAPITAL LETTER D +0045;E;LATIN CAPITAL LETTER E +00C9;Eacute;LATIN CAPITAL LETTER E WITH ACUTE +F7E9;Eacutesmall;LATIN SMALL CAPITAL LETTER E WITH ACUTE +0114;Ebreve;LATIN CAPITAL LETTER E WITH BREVE +011A;Ecaron;LATIN CAPITAL LETTER E WITH CARON +00CA;Ecircumflex;LATIN CAPITAL LETTER E WITH CIRCUMFLEX +F7EA;Ecircumflexsmall;LATIN SMALL CAPITAL LETTER E WITH CIRCUMFLEX +00CB;Edieresis;LATIN CAPITAL LETTER E WITH DIAERESIS +F7EB;Edieresissmall;LATIN SMALL CAPITAL LETTER E WITH DIAERESIS +0116;Edotaccent;LATIN CAPITAL LETTER E WITH DOT ABOVE +00C8;Egrave;LATIN CAPITAL LETTER E WITH GRAVE +F7E8;Egravesmall;LATIN SMALL CAPITAL LETTER E WITH GRAVE +0112;Emacron;LATIN CAPITAL LETTER E WITH MACRON +014A;Eng;LATIN CAPITAL LETTER ENG +0118;Eogonek;LATIN CAPITAL LETTER E WITH OGONEK +0395;Epsilon;GREEK CAPITAL LETTER EPSILON +0388;Epsilontonos;GREEK CAPITAL LETTER EPSILON WITH TONOS +F765;Esmall;LATIN SMALL CAPITAL LETTER E +0397;Eta;GREEK CAPITAL LETTER ETA +0389;Etatonos;GREEK CAPITAL LETTER ETA WITH TONOS +00D0;Eth;LATIN CAPITAL LETTER ETH +F7F0;Ethsmall;LATIN SMALL CAPITAL LETTER ETH +20AC;Euro;EURO SIGN +0046;F;LATIN CAPITAL LETTER F +F766;Fsmall;LATIN SMALL CAPITAL LETTER F +0047;G;LATIN CAPITAL LETTER G +0393;Gamma;GREEK CAPITAL LETTER GAMMA +011E;Gbreve;LATIN CAPITAL LETTER G WITH BREVE +01E6;Gcaron;LATIN CAPITAL LETTER G WITH CARON +011C;Gcircumflex;LATIN CAPITAL LETTER G WITH CIRCUMFLEX +0122;Gcommaaccent;LATIN CAPITAL LETTER G WITH CEDILLA +0120;Gdotaccent;LATIN CAPITAL LETTER G WITH DOT ABOVE +F6CE;Grave;CAPITAL GRAVE ACCENT +F760;Gravesmall;SMALL CAPITAL GRAVE ACCENT +F767;Gsmall;LATIN SMALL CAPITAL LETTER G +0048;H;LATIN CAPITAL LETTER H +25CF;H18533;BLACK CIRCLE +25AA;H18543;BLACK SMALL SQUARE +25AB;H18551;WHITE SMALL SQUARE +25A1;H22073;WHITE SQUARE +0126;Hbar;LATIN CAPITAL LETTER H WITH STROKE +0124;Hcircumflex;LATIN CAPITAL LETTER H WITH CIRCUMFLEX +F768;Hsmall;LATIN SMALL CAPITAL LETTER H +F6CF;Hungarumlaut;CAPITAL DOUBLE ACUTE ACCENT +F6F8;Hungarumlautsmall;SMALL CAPITAL DOUBLE ACUTE ACCENT +0049;I;LATIN CAPITAL LETTER I +0132;IJ;LATIN CAPITAL LIGATURE IJ +00CD;Iacute;LATIN CAPITAL LETTER I WITH ACUTE +F7ED;Iacutesmall;LATIN SMALL CAPITAL LETTER I WITH ACUTE +012C;Ibreve;LATIN CAPITAL LETTER I WITH BREVE +00CE;Icircumflex;LATIN CAPITAL LETTER I WITH CIRCUMFLEX +F7EE;Icircumflexsmall;LATIN SMALL CAPITAL LETTER I WITH CIRCUMFLEX +00CF;Idieresis;LATIN CAPITAL LETTER I WITH DIAERESIS +F7EF;Idieresissmall;LATIN SMALL CAPITAL LETTER I WITH DIAERESIS +0130;Idotaccent;LATIN CAPITAL LETTER I WITH DOT ABOVE +2111;Ifraktur;BLACK-LETTER CAPITAL I +00CC;Igrave;LATIN CAPITAL LETTER I WITH GRAVE +F7EC;Igravesmall;LATIN SMALL CAPITAL LETTER I WITH GRAVE +012A;Imacron;LATIN CAPITAL LETTER I WITH MACRON +012E;Iogonek;LATIN CAPITAL LETTER I WITH OGONEK +0399;Iota;GREEK CAPITAL LETTER IOTA +03AA;Iotadieresis;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +038A;Iotatonos;GREEK CAPITAL LETTER IOTA WITH TONOS +F769;Ismall;LATIN SMALL CAPITAL LETTER I +0128;Itilde;LATIN CAPITAL LETTER I WITH TILDE +004A;J;LATIN CAPITAL LETTER J +0134;Jcircumflex;LATIN CAPITAL LETTER J WITH CIRCUMFLEX +F76A;Jsmall;LATIN SMALL CAPITAL LETTER J +004B;K;LATIN CAPITAL LETTER K +039A;Kappa;GREEK CAPITAL LETTER KAPPA +0136;Kcommaaccent;LATIN CAPITAL LETTER K WITH CEDILLA +F76B;Ksmall;LATIN SMALL CAPITAL LETTER K +004C;L;LATIN CAPITAL LETTER L +F6BF;LL;LATIN CAPITAL LETTER LL +0139;Lacute;LATIN CAPITAL LETTER L WITH ACUTE +039B;Lambda;GREEK CAPITAL LETTER LAMDA +013D;Lcaron;LATIN CAPITAL LETTER L WITH CARON +013B;Lcommaaccent;LATIN CAPITAL LETTER L WITH CEDILLA +013F;Ldot;LATIN CAPITAL LETTER L WITH MIDDLE DOT +0141;Lslash;LATIN CAPITAL LETTER L WITH STROKE +F6F9;Lslashsmall;LATIN SMALL CAPITAL LETTER L WITH STROKE +F76C;Lsmall;LATIN SMALL CAPITAL LETTER L +004D;M;LATIN CAPITAL LETTER M +F6D0;Macron;CAPITAL MACRON +F7AF;Macronsmall;SMALL CAPITAL MACRON +F76D;Msmall;LATIN SMALL CAPITAL LETTER M +039C;Mu;GREEK CAPITAL LETTER MU +004E;N;LATIN CAPITAL LETTER N +0143;Nacute;LATIN CAPITAL LETTER N WITH ACUTE +0147;Ncaron;LATIN CAPITAL LETTER N WITH CARON +0145;Ncommaaccent;LATIN CAPITAL LETTER N WITH CEDILLA +F76E;Nsmall;LATIN SMALL CAPITAL LETTER N +00D1;Ntilde;LATIN CAPITAL LETTER N WITH TILDE +F7F1;Ntildesmall;LATIN SMALL CAPITAL LETTER N WITH TILDE +039D;Nu;GREEK CAPITAL LETTER NU +004F;O;LATIN CAPITAL LETTER O +0152;OE;LATIN CAPITAL LIGATURE OE +F6FA;OEsmall;LATIN SMALL CAPITAL LIGATURE OE +00D3;Oacute;LATIN CAPITAL LETTER O WITH ACUTE +F7F3;Oacutesmall;LATIN SMALL CAPITAL LETTER O WITH ACUTE +014E;Obreve;LATIN CAPITAL LETTER O WITH BREVE +00D4;Ocircumflex;LATIN CAPITAL LETTER O WITH CIRCUMFLEX +F7F4;Ocircumflexsmall;LATIN SMALL CAPITAL LETTER O WITH CIRCUMFLEX +00D6;Odieresis;LATIN CAPITAL LETTER O WITH DIAERESIS +F7F6;Odieresissmall;LATIN SMALL CAPITAL LETTER O WITH DIAERESIS +F6FB;Ogoneksmall;SMALL CAPITAL OGONEK +00D2;Ograve;LATIN CAPITAL LETTER O WITH GRAVE +F7F2;Ogravesmall;LATIN SMALL CAPITAL LETTER O WITH GRAVE +01A0;Ohorn;LATIN CAPITAL LETTER O WITH HORN +0150;Ohungarumlaut;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +014C;Omacron;LATIN CAPITAL LETTER O WITH MACRON +2126;Omega;OHM SIGN +03A9;Omega;GREEK CAPITAL LETTER OMEGA;Duplicate +038F;Omegatonos;GREEK CAPITAL LETTER OMEGA WITH TONOS +039F;Omicron;GREEK CAPITAL LETTER OMICRON +038C;Omicrontonos;GREEK CAPITAL LETTER OMICRON WITH TONOS +00D8;Oslash;LATIN CAPITAL LETTER O WITH STROKE +01FE;Oslashacute;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +F7F8;Oslashsmall;LATIN SMALL CAPITAL LETTER O WITH STROKE +F76F;Osmall;LATIN SMALL CAPITAL LETTER O +00D5;Otilde;LATIN CAPITAL LETTER O WITH TILDE +F7F5;Otildesmall;LATIN SMALL CAPITAL LETTER O WITH TILDE +0050;P;LATIN CAPITAL LETTER P +03A6;Phi;GREEK CAPITAL LETTER PHI +03A0;Pi;GREEK CAPITAL LETTER PI +03A8;Psi;GREEK CAPITAL LETTER PSI +F770;Psmall;LATIN SMALL CAPITAL LETTER P +0051;Q;LATIN CAPITAL LETTER Q +F771;Qsmall;LATIN SMALL CAPITAL LETTER Q +0052;R;LATIN CAPITAL LETTER R +0154;Racute;LATIN CAPITAL LETTER R WITH ACUTE +0158;Rcaron;LATIN CAPITAL LETTER R WITH CARON +0156;Rcommaaccent;LATIN CAPITAL LETTER R WITH CEDILLA +211C;Rfraktur;BLACK-LETTER CAPITAL R +03A1;Rho;GREEK CAPITAL LETTER RHO +F6FC;Ringsmall;SMALL CAPITAL RING ABOVE +F772;Rsmall;LATIN SMALL CAPITAL LETTER R +0053;S;LATIN CAPITAL LETTER S +250C;SF010000;BOX DRAWINGS LIGHT DOWN AND RIGHT +2514;SF020000;BOX DRAWINGS LIGHT UP AND RIGHT +2510;SF030000;BOX DRAWINGS LIGHT DOWN AND LEFT +2518;SF040000;BOX DRAWINGS LIGHT UP AND LEFT +253C;SF050000;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +252C;SF060000;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +2534;SF070000;BOX DRAWINGS LIGHT UP AND HORIZONTAL +251C;SF080000;BOX DRAWINGS LIGHT VERTICAL AND RIGHT +2524;SF090000;BOX DRAWINGS LIGHT VERTICAL AND LEFT +2500;SF100000;BOX DRAWINGS LIGHT HORIZONTAL +2502;SF110000;BOX DRAWINGS LIGHT VERTICAL +2561;SF190000;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +2562;SF200000;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +2556;SF210000;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +2555;SF220000;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +2563;SF230000;BOX DRAWINGS DOUBLE VERTICAL AND LEFT +2551;SF240000;BOX DRAWINGS DOUBLE VERTICAL +2557;SF250000;BOX DRAWINGS DOUBLE DOWN AND LEFT +255D;SF260000;BOX DRAWINGS DOUBLE UP AND LEFT +255C;SF270000;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +255B;SF280000;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +255E;SF360000;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +255F;SF370000;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +255A;SF380000;BOX DRAWINGS DOUBLE UP AND RIGHT +2554;SF390000;BOX DRAWINGS DOUBLE DOWN AND RIGHT +2569;SF400000;BOX DRAWINGS DOUBLE UP AND HORIZONTAL +2566;SF410000;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +2560;SF420000;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +2550;SF430000;BOX DRAWINGS DOUBLE HORIZONTAL +256C;SF440000;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +2567;SF450000;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +2568;SF460000;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +2564;SF470000;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +2565;SF480000;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +2559;SF490000;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +2558;SF500000;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +2552;SF510000;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +2553;SF520000;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +256B;SF530000;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +256A;SF540000;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +015A;Sacute;LATIN CAPITAL LETTER S WITH ACUTE +0160;Scaron;LATIN CAPITAL LETTER S WITH CARON +F6FD;Scaronsmall;LATIN SMALL CAPITAL LETTER S WITH CARON +015E;Scedilla;LATIN CAPITAL LETTER S WITH CEDILLA +F6C1;Scedilla;LATIN CAPITAL LETTER S WITH CEDILLA;Duplicate +015C;Scircumflex;LATIN CAPITAL LETTER S WITH CIRCUMFLEX +0218;Scommaaccent;LATIN CAPITAL LETTER S WITH COMMA BELOW +03A3;Sigma;GREEK CAPITAL LETTER SIGMA +F773;Ssmall;LATIN SMALL CAPITAL LETTER S +0054;T;LATIN CAPITAL LETTER T +03A4;Tau;GREEK CAPITAL LETTER TAU +0166;Tbar;LATIN CAPITAL LETTER T WITH STROKE +0164;Tcaron;LATIN CAPITAL LETTER T WITH CARON +0162;Tcommaaccent;LATIN CAPITAL LETTER T WITH CEDILLA +021A;Tcommaaccent;LATIN CAPITAL LETTER T WITH COMMA BELOW;Duplicate +0398;Theta;GREEK CAPITAL LETTER THETA +00DE;Thorn;LATIN CAPITAL LETTER THORN +F7FE;Thornsmall;LATIN SMALL CAPITAL LETTER THORN +F6FE;Tildesmall;SMALL CAPITAL SMALL TILDE +F774;Tsmall;LATIN SMALL CAPITAL LETTER T +0055;U;LATIN CAPITAL LETTER U +00DA;Uacute;LATIN CAPITAL LETTER U WITH ACUTE +F7FA;Uacutesmall;LATIN SMALL CAPITAL LETTER U WITH ACUTE +016C;Ubreve;LATIN CAPITAL LETTER U WITH BREVE +00DB;Ucircumflex;LATIN CAPITAL LETTER U WITH CIRCUMFLEX +F7FB;Ucircumflexsmall;LATIN SMALL CAPITAL LETTER U WITH CIRCUMFLEX +00DC;Udieresis;LATIN CAPITAL LETTER U WITH DIAERESIS +F7FC;Udieresissmall;LATIN SMALL CAPITAL LETTER U WITH DIAERESIS +00D9;Ugrave;LATIN CAPITAL LETTER U WITH GRAVE +F7F9;Ugravesmall;LATIN SMALL CAPITAL LETTER U WITH GRAVE +01AF;Uhorn;LATIN CAPITAL LETTER U WITH HORN +0170;Uhungarumlaut;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +016A;Umacron;LATIN CAPITAL LETTER U WITH MACRON +0172;Uogonek;LATIN CAPITAL LETTER U WITH OGONEK +03A5;Upsilon;GREEK CAPITAL LETTER UPSILON +03D2;Upsilon1;GREEK UPSILON WITH HOOK SYMBOL +03AB;Upsilondieresis;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +038E;Upsilontonos;GREEK CAPITAL LETTER UPSILON WITH TONOS +016E;Uring;LATIN CAPITAL LETTER U WITH RING ABOVE +F775;Usmall;LATIN SMALL CAPITAL LETTER U +0168;Utilde;LATIN CAPITAL LETTER U WITH TILDE +0056;V;LATIN CAPITAL LETTER V +F776;Vsmall;LATIN SMALL CAPITAL LETTER V +0057;W;LATIN CAPITAL LETTER W +1E82;Wacute;LATIN CAPITAL LETTER W WITH ACUTE +0174;Wcircumflex;LATIN CAPITAL LETTER W WITH CIRCUMFLEX +1E84;Wdieresis;LATIN CAPITAL LETTER W WITH DIAERESIS +1E80;Wgrave;LATIN CAPITAL LETTER W WITH GRAVE +F777;Wsmall;LATIN SMALL CAPITAL LETTER W +0058;X;LATIN CAPITAL LETTER X +039E;Xi;GREEK CAPITAL LETTER XI +F778;Xsmall;LATIN SMALL CAPITAL LETTER X +0059;Y;LATIN CAPITAL LETTER Y +00DD;Yacute;LATIN CAPITAL LETTER Y WITH ACUTE +F7FD;Yacutesmall;LATIN SMALL CAPITAL LETTER Y WITH ACUTE +0176;Ycircumflex;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +0178;Ydieresis;LATIN CAPITAL LETTER Y WITH DIAERESIS +F7FF;Ydieresissmall;LATIN SMALL CAPITAL LETTER Y WITH DIAERESIS +1EF2;Ygrave;LATIN CAPITAL LETTER Y WITH GRAVE +F779;Ysmall;LATIN SMALL CAPITAL LETTER Y +005A;Z;LATIN CAPITAL LETTER Z +0179;Zacute;LATIN CAPITAL LETTER Z WITH ACUTE +017D;Zcaron;LATIN CAPITAL LETTER Z WITH CARON +F6FF;Zcaronsmall;LATIN SMALL CAPITAL LETTER Z WITH CARON +017B;Zdotaccent;LATIN CAPITAL LETTER Z WITH DOT ABOVE +0396;Zeta;GREEK CAPITAL LETTER ZETA +F77A;Zsmall;LATIN SMALL CAPITAL LETTER Z +0061;a;LATIN SMALL LETTER A +00E1;aacute;LATIN SMALL LETTER A WITH ACUTE +0103;abreve;LATIN SMALL LETTER A WITH BREVE +00E2;acircumflex;LATIN SMALL LETTER A WITH CIRCUMFLEX +00B4;acute;ACUTE ACCENT +0301;acutecomb;COMBINING ACUTE ACCENT +00E4;adieresis;LATIN SMALL LETTER A WITH DIAERESIS +00E6;ae;LATIN SMALL LETTER AE +01FD;aeacute;LATIN SMALL LETTER AE WITH ACUTE +2015;afii00208;HORIZONTAL BAR +0410;afii10017;CYRILLIC CAPITAL LETTER A +0411;afii10018;CYRILLIC CAPITAL LETTER BE +0412;afii10019;CYRILLIC CAPITAL LETTER VE +0413;afii10020;CYRILLIC CAPITAL LETTER GHE +0414;afii10021;CYRILLIC CAPITAL LETTER DE +0415;afii10022;CYRILLIC CAPITAL LETTER IE +0401;afii10023;CYRILLIC CAPITAL LETTER IO +0416;afii10024;CYRILLIC CAPITAL LETTER ZHE +0417;afii10025;CYRILLIC CAPITAL LETTER ZE +0418;afii10026;CYRILLIC CAPITAL LETTER I +0419;afii10027;CYRILLIC CAPITAL LETTER SHORT I +041A;afii10028;CYRILLIC CAPITAL LETTER KA +041B;afii10029;CYRILLIC CAPITAL LETTER EL +041C;afii10030;CYRILLIC CAPITAL LETTER EM +041D;afii10031;CYRILLIC CAPITAL LETTER EN +041E;afii10032;CYRILLIC CAPITAL LETTER O +041F;afii10033;CYRILLIC CAPITAL LETTER PE +0420;afii10034;CYRILLIC CAPITAL LETTER ER +0421;afii10035;CYRILLIC CAPITAL LETTER ES +0422;afii10036;CYRILLIC CAPITAL LETTER TE +0423;afii10037;CYRILLIC CAPITAL LETTER U +0424;afii10038;CYRILLIC CAPITAL LETTER EF +0425;afii10039;CYRILLIC CAPITAL LETTER HA +0426;afii10040;CYRILLIC CAPITAL LETTER TSE +0427;afii10041;CYRILLIC CAPITAL LETTER CHE +0428;afii10042;CYRILLIC CAPITAL LETTER SHA +0429;afii10043;CYRILLIC CAPITAL LETTER SHCHA +042A;afii10044;CYRILLIC CAPITAL LETTER HARD SIGN +042B;afii10045;CYRILLIC CAPITAL LETTER YERU +042C;afii10046;CYRILLIC CAPITAL LETTER SOFT SIGN +042D;afii10047;CYRILLIC CAPITAL LETTER E +042E;afii10048;CYRILLIC CAPITAL LETTER YU +042F;afii10049;CYRILLIC CAPITAL LETTER YA +0490;afii10050;CYRILLIC CAPITAL LETTER GHE WITH UPTURN +0402;afii10051;CYRILLIC CAPITAL LETTER DJE +0403;afii10052;CYRILLIC CAPITAL LETTER GJE +0404;afii10053;CYRILLIC CAPITAL LETTER UKRAINIAN IE +0405;afii10054;CYRILLIC CAPITAL LETTER DZE +0406;afii10055;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +0407;afii10056;CYRILLIC CAPITAL LETTER YI +0408;afii10057;CYRILLIC CAPITAL LETTER JE +0409;afii10058;CYRILLIC CAPITAL LETTER LJE +040A;afii10059;CYRILLIC CAPITAL LETTER NJE +040B;afii10060;CYRILLIC CAPITAL LETTER TSHE +040C;afii10061;CYRILLIC CAPITAL LETTER KJE +040E;afii10062;CYRILLIC CAPITAL LETTER SHORT U +F6C4;afii10063;CYRILLIC SMALL LETTER GHE VARIANT +F6C5;afii10064;CYRILLIC SMALL LETTER BE VARIANT +0430;afii10065;CYRILLIC SMALL LETTER A +0431;afii10066;CYRILLIC SMALL LETTER BE +0432;afii10067;CYRILLIC SMALL LETTER VE +0433;afii10068;CYRILLIC SMALL LETTER GHE +0434;afii10069;CYRILLIC SMALL LETTER DE +0435;afii10070;CYRILLIC SMALL LETTER IE +0451;afii10071;CYRILLIC SMALL LETTER IO +0436;afii10072;CYRILLIC SMALL LETTER ZHE +0437;afii10073;CYRILLIC SMALL LETTER ZE +0438;afii10074;CYRILLIC SMALL LETTER I +0439;afii10075;CYRILLIC SMALL LETTER SHORT I +043A;afii10076;CYRILLIC SMALL LETTER KA +043B;afii10077;CYRILLIC SMALL LETTER EL +043C;afii10078;CYRILLIC SMALL LETTER EM +043D;afii10079;CYRILLIC SMALL LETTER EN +043E;afii10080;CYRILLIC SMALL LETTER O +043F;afii10081;CYRILLIC SMALL LETTER PE +0440;afii10082;CYRILLIC SMALL LETTER ER +0441;afii10083;CYRILLIC SMALL LETTER ES +0442;afii10084;CYRILLIC SMALL LETTER TE +0443;afii10085;CYRILLIC SMALL LETTER U +0444;afii10086;CYRILLIC SMALL LETTER EF +0445;afii10087;CYRILLIC SMALL LETTER HA +0446;afii10088;CYRILLIC SMALL LETTER TSE +0447;afii10089;CYRILLIC SMALL LETTER CHE +0448;afii10090;CYRILLIC SMALL LETTER SHA +0449;afii10091;CYRILLIC SMALL LETTER SHCHA +044A;afii10092;CYRILLIC SMALL LETTER HARD SIGN +044B;afii10093;CYRILLIC SMALL LETTER YERU +044C;afii10094;CYRILLIC SMALL LETTER SOFT SIGN +044D;afii10095;CYRILLIC SMALL LETTER E +044E;afii10096;CYRILLIC SMALL LETTER YU +044F;afii10097;CYRILLIC SMALL LETTER YA +0491;afii10098;CYRILLIC SMALL LETTER GHE WITH UPTURN +0452;afii10099;CYRILLIC SMALL LETTER DJE +0453;afii10100;CYRILLIC SMALL LETTER GJE +0454;afii10101;CYRILLIC SMALL LETTER UKRAINIAN IE +0455;afii10102;CYRILLIC SMALL LETTER DZE +0456;afii10103;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +0457;afii10104;CYRILLIC SMALL LETTER YI +0458;afii10105;CYRILLIC SMALL LETTER JE +0459;afii10106;CYRILLIC SMALL LETTER LJE +045A;afii10107;CYRILLIC SMALL LETTER NJE +045B;afii10108;CYRILLIC SMALL LETTER TSHE +045C;afii10109;CYRILLIC SMALL LETTER KJE +045E;afii10110;CYRILLIC SMALL LETTER SHORT U +040F;afii10145;CYRILLIC CAPITAL LETTER DZHE +0462;afii10146;CYRILLIC CAPITAL LETTER YAT +0472;afii10147;CYRILLIC CAPITAL LETTER FITA +0474;afii10148;CYRILLIC CAPITAL LETTER IZHITSA +F6C6;afii10192;CYRILLIC SMALL LETTER DE VARIANT +045F;afii10193;CYRILLIC SMALL LETTER DZHE +0463;afii10194;CYRILLIC SMALL LETTER YAT +0473;afii10195;CYRILLIC SMALL LETTER FITA +0475;afii10196;CYRILLIC SMALL LETTER IZHITSA +F6C7;afii10831;CYRILLIC SMALL LETTER PE VARIANT +F6C8;afii10832;CYRILLIC SMALL LETTER TE VARIANT +04D9;afii10846;CYRILLIC SMALL LETTER SCHWA +200E;afii299;LEFT-TO-RIGHT MARK +200F;afii300;RIGHT-TO-LEFT MARK +200D;afii301;ZERO WIDTH JOINER +066A;afii57381;ARABIC PERCENT SIGN +060C;afii57388;ARABIC COMMA +0660;afii57392;ARABIC-INDIC DIGIT ZERO +0661;afii57393;ARABIC-INDIC DIGIT ONE +0662;afii57394;ARABIC-INDIC DIGIT TWO +0663;afii57395;ARABIC-INDIC DIGIT THREE +0664;afii57396;ARABIC-INDIC DIGIT FOUR +0665;afii57397;ARABIC-INDIC DIGIT FIVE +0666;afii57398;ARABIC-INDIC DIGIT SIX +0667;afii57399;ARABIC-INDIC DIGIT SEVEN +0668;afii57400;ARABIC-INDIC DIGIT EIGHT +0669;afii57401;ARABIC-INDIC DIGIT NINE +061B;afii57403;ARABIC SEMICOLON +061F;afii57407;ARABIC QUESTION MARK +0621;afii57409;ARABIC LETTER HAMZA +0622;afii57410;ARABIC LETTER ALEF WITH MADDA ABOVE +0623;afii57411;ARABIC LETTER ALEF WITH HAMZA ABOVE +0624;afii57412;ARABIC LETTER WAW WITH HAMZA ABOVE +0625;afii57413;ARABIC LETTER ALEF WITH HAMZA BELOW +0626;afii57414;ARABIC LETTER YEH WITH HAMZA ABOVE +0627;afii57415;ARABIC LETTER ALEF +0628;afii57416;ARABIC LETTER BEH +0629;afii57417;ARABIC LETTER TEH MARBUTA +062A;afii57418;ARABIC LETTER TEH +062B;afii57419;ARABIC LETTER THEH +062C;afii57420;ARABIC LETTER JEEM +062D;afii57421;ARABIC LETTER HAH +062E;afii57422;ARABIC LETTER KHAH +062F;afii57423;ARABIC LETTER DAL +0630;afii57424;ARABIC LETTER THAL +0631;afii57425;ARABIC LETTER REH +0632;afii57426;ARABIC LETTER ZAIN +0633;afii57427;ARABIC LETTER SEEN +0634;afii57428;ARABIC LETTER SHEEN +0635;afii57429;ARABIC LETTER SAD +0636;afii57430;ARABIC LETTER DAD +0637;afii57431;ARABIC LETTER TAH +0638;afii57432;ARABIC LETTER ZAH +0639;afii57433;ARABIC LETTER AIN +063A;afii57434;ARABIC LETTER GHAIN +0640;afii57440;ARABIC TATWEEL +0641;afii57441;ARABIC LETTER FEH +0642;afii57442;ARABIC LETTER QAF +0643;afii57443;ARABIC LETTER KAF +0644;afii57444;ARABIC LETTER LAM +0645;afii57445;ARABIC LETTER MEEM +0646;afii57446;ARABIC LETTER NOON +0648;afii57448;ARABIC LETTER WAW +0649;afii57449;ARABIC LETTER ALEF MAKSURA +064A;afii57450;ARABIC LETTER YEH +064B;afii57451;ARABIC FATHATAN +064C;afii57452;ARABIC DAMMATAN +064D;afii57453;ARABIC KASRATAN +064E;afii57454;ARABIC FATHA +064F;afii57455;ARABIC DAMMA +0650;afii57456;ARABIC KASRA +0651;afii57457;ARABIC SHADDA +0652;afii57458;ARABIC SUKUN +0647;afii57470;ARABIC LETTER HEH +06A4;afii57505;ARABIC LETTER VEH +067E;afii57506;ARABIC LETTER PEH +0686;afii57507;ARABIC LETTER TCHEH +0698;afii57508;ARABIC LETTER JEH +06AF;afii57509;ARABIC LETTER GAF +0679;afii57511;ARABIC LETTER TTEH +0688;afii57512;ARABIC LETTER DDAL +0691;afii57513;ARABIC LETTER RREH +06BA;afii57514;ARABIC LETTER NOON GHUNNA +06D2;afii57519;ARABIC LETTER YEH BARREE +06D5;afii57534;ARABIC LETTER AE +20AA;afii57636;NEW SHEQEL SIGN +05BE;afii57645;HEBREW PUNCTUATION MAQAF +05C3;afii57658;HEBREW PUNCTUATION SOF PASUQ +05D0;afii57664;HEBREW LETTER ALEF +05D1;afii57665;HEBREW LETTER BET +05D2;afii57666;HEBREW LETTER GIMEL +05D3;afii57667;HEBREW LETTER DALET +05D4;afii57668;HEBREW LETTER HE +05D5;afii57669;HEBREW LETTER VAV +05D6;afii57670;HEBREW LETTER ZAYIN +05D7;afii57671;HEBREW LETTER HET +05D8;afii57672;HEBREW LETTER TET +05D9;afii57673;HEBREW LETTER YOD +05DA;afii57674;HEBREW LETTER FINAL KAF +05DB;afii57675;HEBREW LETTER KAF +05DC;afii57676;HEBREW LETTER LAMED +05DD;afii57677;HEBREW LETTER FINAL MEM +05DE;afii57678;HEBREW LETTER MEM +05DF;afii57679;HEBREW LETTER FINAL NUN +05E0;afii57680;HEBREW LETTER NUN +05E1;afii57681;HEBREW LETTER SAMEKH +05E2;afii57682;HEBREW LETTER AYIN +05E3;afii57683;HEBREW LETTER FINAL PE +05E4;afii57684;HEBREW LETTER PE +05E5;afii57685;HEBREW LETTER FINAL TSADI +05E6;afii57686;HEBREW LETTER TSADI +05E7;afii57687;HEBREW LETTER QOF +05E8;afii57688;HEBREW LETTER RESH +05E9;afii57689;HEBREW LETTER SHIN +05EA;afii57690;HEBREW LETTER TAV +FB2A;afii57694;HEBREW LETTER SHIN WITH SHIN DOT +FB2B;afii57695;HEBREW LETTER SHIN WITH SIN DOT +FB4B;afii57700;HEBREW LETTER VAV WITH HOLAM +FB1F;afii57705;HEBREW LIGATURE YIDDISH YOD YOD PATAH +05F0;afii57716;HEBREW LIGATURE YIDDISH DOUBLE VAV +05F1;afii57717;HEBREW LIGATURE YIDDISH VAV YOD +05F2;afii57718;HEBREW LIGATURE YIDDISH DOUBLE YOD +FB35;afii57723;HEBREW LETTER VAV WITH DAGESH +05B4;afii57793;HEBREW POINT HIRIQ +05B5;afii57794;HEBREW POINT TSERE +05B6;afii57795;HEBREW POINT SEGOL +05BB;afii57796;HEBREW POINT QUBUTS +05B8;afii57797;HEBREW POINT QAMATS +05B7;afii57798;HEBREW POINT PATAH +05B0;afii57799;HEBREW POINT SHEVA +05B2;afii57800;HEBREW POINT HATAF PATAH +05B1;afii57801;HEBREW POINT HATAF SEGOL +05B3;afii57802;HEBREW POINT HATAF QAMATS +05C2;afii57803;HEBREW POINT SIN DOT +05C1;afii57804;HEBREW POINT SHIN DOT +05B9;afii57806;HEBREW POINT HOLAM +05BC;afii57807;HEBREW POINT DAGESH OR MAPIQ +05BD;afii57839;HEBREW POINT METEG +05BF;afii57841;HEBREW POINT RAFE +05C0;afii57842;HEBREW PUNCTUATION PASEQ +02BC;afii57929;MODIFIER LETTER APOSTROPHE +2105;afii61248;CARE OF +2113;afii61289;SCRIPT SMALL L +2116;afii61352;NUMERO SIGN +202C;afii61573;POP DIRECTIONAL FORMATTING +202D;afii61574;LEFT-TO-RIGHT OVERRIDE +202E;afii61575;RIGHT-TO-LEFT OVERRIDE +200C;afii61664;ZERO WIDTH NON-JOINER +066D;afii63167;ARABIC FIVE POINTED STAR +02BD;afii64937;MODIFIER LETTER REVERSED COMMA +00E0;agrave;LATIN SMALL LETTER A WITH GRAVE +2135;aleph;ALEF SYMBOL +03B1;alpha;GREEK SMALL LETTER ALPHA +03AC;alphatonos;GREEK SMALL LETTER ALPHA WITH TONOS +0101;amacron;LATIN SMALL LETTER A WITH MACRON +0026;ampersand;AMPERSAND +F726;ampersandsmall;SMALL CAPITAL AMPERSAND +2220;angle;ANGLE +2329;angleleft;LEFT-POINTING ANGLE BRACKET +232A;angleright;RIGHT-POINTING ANGLE BRACKET +0387;anoteleia;GREEK ANO TELEIA +0105;aogonek;LATIN SMALL LETTER A WITH OGONEK +2248;approxequal;ALMOST EQUAL TO +00E5;aring;LATIN SMALL LETTER A WITH RING ABOVE +01FB;aringacute;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +2194;arrowboth;LEFT RIGHT ARROW +21D4;arrowdblboth;LEFT RIGHT DOUBLE ARROW +21D3;arrowdbldown;DOWNWARDS DOUBLE ARROW +21D0;arrowdblleft;LEFTWARDS DOUBLE ARROW +21D2;arrowdblright;RIGHTWARDS DOUBLE ARROW +21D1;arrowdblup;UPWARDS DOUBLE ARROW +2193;arrowdown;DOWNWARDS ARROW +F8E7;arrowhorizex;HORIZONTAL ARROW EXTENDER +2190;arrowleft;LEFTWARDS ARROW +2192;arrowright;RIGHTWARDS ARROW +2191;arrowup;UPWARDS ARROW +2195;arrowupdn;UP DOWN ARROW +21A8;arrowupdnbse;UP DOWN ARROW WITH BASE +F8E6;arrowvertex;VERTICAL ARROW EXTENDER +005E;asciicircum;CIRCUMFLEX ACCENT +007E;asciitilde;TILDE +002A;asterisk;ASTERISK +2217;asteriskmath;ASTERISK OPERATOR +F6E9;asuperior;SUPERSCRIPT LATIN SMALL LETTER A +0040;at;COMMERCIAL AT +00E3;atilde;LATIN SMALL LETTER A WITH TILDE +0062;b;LATIN SMALL LETTER B +005C;backslash;REVERSE SOLIDUS +007C;bar;VERTICAL LINE +03B2;beta;GREEK SMALL LETTER BETA +2588;block;FULL BLOCK +F8F4;braceex;CURLY BRACKET EXTENDER +007B;braceleft;LEFT CURLY BRACKET +F8F3;braceleftbt;LEFT CURLY BRACKET BOTTOM +F8F2;braceleftmid;LEFT CURLY BRACKET MID +F8F1;bracelefttp;LEFT CURLY BRACKET TOP +007D;braceright;RIGHT CURLY BRACKET +F8FE;bracerightbt;RIGHT CURLY BRACKET BOTTOM +F8FD;bracerightmid;RIGHT CURLY BRACKET MID +F8FC;bracerighttp;RIGHT CURLY BRACKET TOP +005B;bracketleft;LEFT SQUARE BRACKET +F8F0;bracketleftbt;LEFT SQUARE BRACKET BOTTOM +F8EF;bracketleftex;LEFT SQUARE BRACKET EXTENDER +F8EE;bracketlefttp;LEFT SQUARE BRACKET TOP +005D;bracketright;RIGHT SQUARE BRACKET +F8FB;bracketrightbt;RIGHT SQUARE BRACKET BOTTOM +F8FA;bracketrightex;RIGHT SQUARE BRACKET EXTENDER +F8F9;bracketrighttp;RIGHT SQUARE BRACKET TOP +02D8;breve;BREVE +00A6;brokenbar;BROKEN BAR +F6EA;bsuperior;SUPERSCRIPT LATIN SMALL LETTER B +2022;bullet;BULLET +0063;c;LATIN SMALL LETTER C +0107;cacute;LATIN SMALL LETTER C WITH ACUTE +02C7;caron;CARON +21B5;carriagereturn;DOWNWARDS ARROW WITH CORNER LEFTWARDS +010D;ccaron;LATIN SMALL LETTER C WITH CARON +00E7;ccedilla;LATIN SMALL LETTER C WITH CEDILLA +0109;ccircumflex;LATIN SMALL LETTER C WITH CIRCUMFLEX +010B;cdotaccent;LATIN SMALL LETTER C WITH DOT ABOVE +00B8;cedilla;CEDILLA +00A2;cent;CENT SIGN +F6DF;centinferior;SUBSCRIPT CENT SIGN +F7A2;centoldstyle;OLDSTYLE CENT SIGN +F6E0;centsuperior;SUPERSCRIPT CENT SIGN +03C7;chi;GREEK SMALL LETTER CHI +25CB;circle;WHITE CIRCLE +2297;circlemultiply;CIRCLED TIMES +2295;circleplus;CIRCLED PLUS +02C6;circumflex;MODIFIER LETTER CIRCUMFLEX ACCENT +2663;club;BLACK CLUB SUIT +003A;colon;COLON +20A1;colonmonetary;COLON SIGN +002C;comma;COMMA +F6C3;commaaccent;COMMA BELOW +F6E1;commainferior;SUBSCRIPT COMMA +F6E2;commasuperior;SUPERSCRIPT COMMA +2245;congruent;APPROXIMATELY EQUAL TO +00A9;copyright;COPYRIGHT SIGN +F8E9;copyrightsans;COPYRIGHT SIGN SANS SERIF +F6D9;copyrightserif;COPYRIGHT SIGN SERIF +00A4;currency;CURRENCY SIGN +F6D1;cyrBreve;CAPITAL CYRILLIC BREVE +F6D2;cyrFlex;CAPITAL CYRILLIC CIRCUMFLEX +F6D4;cyrbreve;CYRILLIC BREVE +F6D5;cyrflex;CYRILLIC CIRCUMFLEX +0064;d;LATIN SMALL LETTER D +2020;dagger;DAGGER +2021;daggerdbl;DOUBLE DAGGER +F6D3;dblGrave;CAPITAL DOUBLE GRAVE ACCENT +F6D6;dblgrave;DOUBLE GRAVE ACCENT +010F;dcaron;LATIN SMALL LETTER D WITH CARON +0111;dcroat;LATIN SMALL LETTER D WITH STROKE +00B0;degree;DEGREE SIGN +03B4;delta;GREEK SMALL LETTER DELTA +2666;diamond;BLACK DIAMOND SUIT +00A8;dieresis;DIAERESIS +F6D7;dieresisacute;DIAERESIS ACUTE ACCENT +F6D8;dieresisgrave;DIAERESIS GRAVE ACCENT +0385;dieresistonos;GREEK DIALYTIKA TONOS +00F7;divide;DIVISION SIGN +2593;dkshade;DARK SHADE +2584;dnblock;LOWER HALF BLOCK +0024;dollar;DOLLAR SIGN +F6E3;dollarinferior;SUBSCRIPT DOLLAR SIGN +F724;dollaroldstyle;OLDSTYLE DOLLAR SIGN +F6E4;dollarsuperior;SUPERSCRIPT DOLLAR SIGN +20AB;dong;DONG SIGN +02D9;dotaccent;DOT ABOVE +0323;dotbelowcomb;COMBINING DOT BELOW +0131;dotlessi;LATIN SMALL LETTER DOTLESS I +F6BE;dotlessj;LATIN SMALL LETTER DOTLESS J +22C5;dotmath;DOT OPERATOR +F6EB;dsuperior;SUPERSCRIPT LATIN SMALL LETTER D +0065;e;LATIN SMALL LETTER E +00E9;eacute;LATIN SMALL LETTER E WITH ACUTE +0115;ebreve;LATIN SMALL LETTER E WITH BREVE +011B;ecaron;LATIN SMALL LETTER E WITH CARON +00EA;ecircumflex;LATIN SMALL LETTER E WITH CIRCUMFLEX +00EB;edieresis;LATIN SMALL LETTER E WITH DIAERESIS +0117;edotaccent;LATIN SMALL LETTER E WITH DOT ABOVE +00E8;egrave;LATIN SMALL LETTER E WITH GRAVE +0038;eight;DIGIT EIGHT +2088;eightinferior;SUBSCRIPT EIGHT +F738;eightoldstyle;OLDSTYLE DIGIT EIGHT +2078;eightsuperior;SUPERSCRIPT EIGHT +2208;element;ELEMENT OF +2026;ellipsis;HORIZONTAL ELLIPSIS +0113;emacron;LATIN SMALL LETTER E WITH MACRON +2014;emdash;EM DASH +2205;emptyset;EMPTY SET +2013;endash;EN DASH +014B;eng;LATIN SMALL LETTER ENG +0119;eogonek;LATIN SMALL LETTER E WITH OGONEK +03B5;epsilon;GREEK SMALL LETTER EPSILON +03AD;epsilontonos;GREEK SMALL LETTER EPSILON WITH TONOS +003D;equal;EQUALS SIGN +2261;equivalence;IDENTICAL TO +212E;estimated;ESTIMATED SYMBOL +F6EC;esuperior;SUPERSCRIPT LATIN SMALL LETTER E +03B7;eta;GREEK SMALL LETTER ETA +03AE;etatonos;GREEK SMALL LETTER ETA WITH TONOS +00F0;eth;LATIN SMALL LETTER ETH +0021;exclam;EXCLAMATION MARK +203C;exclamdbl;DOUBLE EXCLAMATION MARK +00A1;exclamdown;INVERTED EXCLAMATION MARK +F7A1;exclamdownsmall;SMALL CAPITAL INVERTED EXCLAMATION MARK +F721;exclamsmall;SMALL CAPITAL EXCLAMATION MARK +2203;existential;THERE EXISTS +0066;f;LATIN SMALL LETTER F +2640;female;FEMALE SIGN +FB00;ff;LATIN SMALL LIGATURE FF +FB03;ffi;LATIN SMALL LIGATURE FFI +FB04;ffl;LATIN SMALL LIGATURE FFL +FB01;fi;LATIN SMALL LIGATURE FI +2012;figuredash;FIGURE DASH +25A0;filledbox;BLACK SQUARE +25AC;filledrect;BLACK RECTANGLE +0035;five;DIGIT FIVE +215D;fiveeighths;VULGAR FRACTION FIVE EIGHTHS +2085;fiveinferior;SUBSCRIPT FIVE +F735;fiveoldstyle;OLDSTYLE DIGIT FIVE +2075;fivesuperior;SUPERSCRIPT FIVE +FB02;fl;LATIN SMALL LIGATURE FL +0192;florin;LATIN SMALL LETTER F WITH HOOK +0034;four;DIGIT FOUR +2084;fourinferior;SUBSCRIPT FOUR +F734;fouroldstyle;OLDSTYLE DIGIT FOUR +2074;foursuperior;SUPERSCRIPT FOUR +2044;fraction;FRACTION SLASH +2215;fraction;DIVISION SLASH;Duplicate +20A3;franc;FRENCH FRANC SIGN +0067;g;LATIN SMALL LETTER G +03B3;gamma;GREEK SMALL LETTER GAMMA +011F;gbreve;LATIN SMALL LETTER G WITH BREVE +01E7;gcaron;LATIN SMALL LETTER G WITH CARON +011D;gcircumflex;LATIN SMALL LETTER G WITH CIRCUMFLEX +0123;gcommaaccent;LATIN SMALL LETTER G WITH CEDILLA +0121;gdotaccent;LATIN SMALL LETTER G WITH DOT ABOVE +00DF;germandbls;LATIN SMALL LETTER SHARP S +2207;gradient;NABLA +0060;grave;GRAVE ACCENT +0300;gravecomb;COMBINING GRAVE ACCENT +003E;greater;GREATER-THAN SIGN +2265;greaterequal;GREATER-THAN OR EQUAL TO +00AB;guillemotleft;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +00BB;guillemotright;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +2039;guilsinglleft;SINGLE LEFT-POINTING ANGLE QUOTATION MARK +203A;guilsinglright;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +0068;h;LATIN SMALL LETTER H +0127;hbar;LATIN SMALL LETTER H WITH STROKE +0125;hcircumflex;LATIN SMALL LETTER H WITH CIRCUMFLEX +2665;heart;BLACK HEART SUIT +0309;hookabovecomb;COMBINING HOOK ABOVE +2302;house;HOUSE +02DD;hungarumlaut;DOUBLE ACUTE ACCENT +002D;hyphen;HYPHEN-MINUS +00AD;hyphen;SOFT HYPHEN;Duplicate +F6E5;hypheninferior;SUBSCRIPT HYPHEN-MINUS +F6E6;hyphensuperior;SUPERSCRIPT HYPHEN-MINUS +0069;i;LATIN SMALL LETTER I +00ED;iacute;LATIN SMALL LETTER I WITH ACUTE +012D;ibreve;LATIN SMALL LETTER I WITH BREVE +00EE;icircumflex;LATIN SMALL LETTER I WITH CIRCUMFLEX +00EF;idieresis;LATIN SMALL LETTER I WITH DIAERESIS +00EC;igrave;LATIN SMALL LETTER I WITH GRAVE +0133;ij;LATIN SMALL LIGATURE IJ +012B;imacron;LATIN SMALL LETTER I WITH MACRON +221E;infinity;INFINITY +222B;integral;INTEGRAL +2321;integralbt;BOTTOM HALF INTEGRAL +F8F5;integralex;INTEGRAL EXTENDER +2320;integraltp;TOP HALF INTEGRAL +2229;intersection;INTERSECTION +25D8;invbullet;INVERSE BULLET +25D9;invcircle;INVERSE WHITE CIRCLE +263B;invsmileface;BLACK SMILING FACE +012F;iogonek;LATIN SMALL LETTER I WITH OGONEK +03B9;iota;GREEK SMALL LETTER IOTA +03CA;iotadieresis;GREEK SMALL LETTER IOTA WITH DIALYTIKA +0390;iotadieresistonos;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +03AF;iotatonos;GREEK SMALL LETTER IOTA WITH TONOS +F6ED;isuperior;SUPERSCRIPT LATIN SMALL LETTER I +0129;itilde;LATIN SMALL LETTER I WITH TILDE +006A;j;LATIN SMALL LETTER J +0135;jcircumflex;LATIN SMALL LETTER J WITH CIRCUMFLEX +006B;k;LATIN SMALL LETTER K +03BA;kappa;GREEK SMALL LETTER KAPPA +0137;kcommaaccent;LATIN SMALL LETTER K WITH CEDILLA +0138;kgreenlandic;LATIN SMALL LETTER KRA +006C;l;LATIN SMALL LETTER L +013A;lacute;LATIN SMALL LETTER L WITH ACUTE +03BB;lambda;GREEK SMALL LETTER LAMDA +013E;lcaron;LATIN SMALL LETTER L WITH CARON +013C;lcommaaccent;LATIN SMALL LETTER L WITH CEDILLA +0140;ldot;LATIN SMALL LETTER L WITH MIDDLE DOT +003C;less;LESS-THAN SIGN +2264;lessequal;LESS-THAN OR EQUAL TO +258C;lfblock;LEFT HALF BLOCK +20A4;lira;LIRA SIGN +F6C0;ll;LATIN SMALL LETTER LL +2227;logicaland;LOGICAL AND +00AC;logicalnot;NOT SIGN +2228;logicalor;LOGICAL OR +017F;longs;LATIN SMALL LETTER LONG S +25CA;lozenge;LOZENGE +0142;lslash;LATIN SMALL LETTER L WITH STROKE +F6EE;lsuperior;SUPERSCRIPT LATIN SMALL LETTER L +2591;ltshade;LIGHT SHADE +006D;m;LATIN SMALL LETTER M +00AF;macron;MACRON +02C9;macron;MODIFIER LETTER MACRON;Duplicate +2642;male;MALE SIGN +2212;minus;MINUS SIGN +2032;minute;PRIME +F6EF;msuperior;SUPERSCRIPT LATIN SMALL LETTER M +00B5;mu;MICRO SIGN +03BC;mu;GREEK SMALL LETTER MU;Duplicate +00D7;multiply;MULTIPLICATION SIGN +266A;musicalnote;EIGHTH NOTE +266B;musicalnotedbl;BEAMED EIGHTH NOTES +006E;n;LATIN SMALL LETTER N +0144;nacute;LATIN SMALL LETTER N WITH ACUTE +0149;napostrophe;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +0148;ncaron;LATIN SMALL LETTER N WITH CARON +0146;ncommaaccent;LATIN SMALL LETTER N WITH CEDILLA +0039;nine;DIGIT NINE +2089;nineinferior;SUBSCRIPT NINE +F739;nineoldstyle;OLDSTYLE DIGIT NINE +2079;ninesuperior;SUPERSCRIPT NINE +2209;notelement;NOT AN ELEMENT OF +2260;notequal;NOT EQUAL TO +2284;notsubset;NOT A SUBSET OF +207F;nsuperior;SUPERSCRIPT LATIN SMALL LETTER N +00F1;ntilde;LATIN SMALL LETTER N WITH TILDE +03BD;nu;GREEK SMALL LETTER NU +0023;numbersign;NUMBER SIGN +006F;o;LATIN SMALL LETTER O +00F3;oacute;LATIN SMALL LETTER O WITH ACUTE +014F;obreve;LATIN SMALL LETTER O WITH BREVE +00F4;ocircumflex;LATIN SMALL LETTER O WITH CIRCUMFLEX +00F6;odieresis;LATIN SMALL LETTER O WITH DIAERESIS +0153;oe;LATIN SMALL LIGATURE OE +02DB;ogonek;OGONEK +00F2;ograve;LATIN SMALL LETTER O WITH GRAVE +01A1;ohorn;LATIN SMALL LETTER O WITH HORN +0151;ohungarumlaut;LATIN SMALL LETTER O WITH DOUBLE ACUTE +014D;omacron;LATIN SMALL LETTER O WITH MACRON +03C9;omega;GREEK SMALL LETTER OMEGA +03D6;omega1;GREEK PI SYMBOL +03CE;omegatonos;GREEK SMALL LETTER OMEGA WITH TONOS +03BF;omicron;GREEK SMALL LETTER OMICRON +03CC;omicrontonos;GREEK SMALL LETTER OMICRON WITH TONOS +0031;one;DIGIT ONE +2024;onedotenleader;ONE DOT LEADER +215B;oneeighth;VULGAR FRACTION ONE EIGHTH +F6DC;onefitted;PROPORTIONAL DIGIT ONE +00BD;onehalf;VULGAR FRACTION ONE HALF +2081;oneinferior;SUBSCRIPT ONE +F731;oneoldstyle;OLDSTYLE DIGIT ONE +00BC;onequarter;VULGAR FRACTION ONE QUARTER +00B9;onesuperior;SUPERSCRIPT ONE +2153;onethird;VULGAR FRACTION ONE THIRD +25E6;openbullet;WHITE BULLET +00AA;ordfeminine;FEMININE ORDINAL INDICATOR +00BA;ordmasculine;MASCULINE ORDINAL INDICATOR +221F;orthogonal;RIGHT ANGLE +00F8;oslash;LATIN SMALL LETTER O WITH STROKE +01FF;oslashacute;LATIN SMALL LETTER O WITH STROKE AND ACUTE +F6F0;osuperior;SUPERSCRIPT LATIN SMALL LETTER O +00F5;otilde;LATIN SMALL LETTER O WITH TILDE +0070;p;LATIN SMALL LETTER P +00B6;paragraph;PILCROW SIGN +0028;parenleft;LEFT PARENTHESIS +F8ED;parenleftbt;LEFT PAREN BOTTOM +F8EC;parenleftex;LEFT PAREN EXTENDER +208D;parenleftinferior;SUBSCRIPT LEFT PARENTHESIS +207D;parenleftsuperior;SUPERSCRIPT LEFT PARENTHESIS +F8EB;parenlefttp;LEFT PAREN TOP +0029;parenright;RIGHT PARENTHESIS +F8F8;parenrightbt;RIGHT PAREN BOTTOM +F8F7;parenrightex;RIGHT PAREN EXTENDER +208E;parenrightinferior;SUBSCRIPT RIGHT PARENTHESIS +207E;parenrightsuperior;SUPERSCRIPT RIGHT PARENTHESIS +F8F6;parenrighttp;RIGHT PAREN TOP +2202;partialdiff;PARTIAL DIFFERENTIAL +0025;percent;PERCENT SIGN +002E;period;FULL STOP +00B7;periodcentered;MIDDLE DOT +2219;periodcentered;BULLET OPERATOR;Duplicate +F6E7;periodinferior;SUBSCRIPT FULL STOP +F6E8;periodsuperior;SUPERSCRIPT FULL STOP +22A5;perpendicular;UP TACK +2030;perthousand;PER MILLE SIGN +20A7;peseta;PESETA SIGN +03C6;phi;GREEK SMALL LETTER PHI +03D5;phi1;GREEK PHI SYMBOL +03C0;pi;GREEK SMALL LETTER PI +002B;plus;PLUS SIGN +00B1;plusminus;PLUS-MINUS SIGN +211E;prescription;PRESCRIPTION TAKE +220F;product;N-ARY PRODUCT +2282;propersubset;SUBSET OF +2283;propersuperset;SUPERSET OF +221D;proportional;PROPORTIONAL TO +03C8;psi;GREEK SMALL LETTER PSI +0071;q;LATIN SMALL LETTER Q +003F;question;QUESTION MARK +00BF;questiondown;INVERTED QUESTION MARK +F7BF;questiondownsmall;SMALL CAPITAL INVERTED QUESTION MARK +F73F;questionsmall;SMALL CAPITAL QUESTION MARK +0022;quotedbl;QUOTATION MARK +201E;quotedblbase;DOUBLE LOW-9 QUOTATION MARK +201C;quotedblleft;LEFT DOUBLE QUOTATION MARK +201D;quotedblright;RIGHT DOUBLE QUOTATION MARK +2018;quoteleft;LEFT SINGLE QUOTATION MARK +201B;quotereversed;SINGLE HIGH-REVERSED-9 QUOTATION MARK +2019;quoteright;RIGHT SINGLE QUOTATION MARK +201A;quotesinglbase;SINGLE LOW-9 QUOTATION MARK +0027;quotesingle;APOSTROPHE +0072;r;LATIN SMALL LETTER R +0155;racute;LATIN SMALL LETTER R WITH ACUTE +221A;radical;SQUARE ROOT +F8E5;radicalex;RADICAL EXTENDER +0159;rcaron;LATIN SMALL LETTER R WITH CARON +0157;rcommaaccent;LATIN SMALL LETTER R WITH CEDILLA +2286;reflexsubset;SUBSET OF OR EQUAL TO +2287;reflexsuperset;SUPERSET OF OR EQUAL TO +00AE;registered;REGISTERED SIGN +F8E8;registersans;REGISTERED SIGN SANS SERIF +F6DA;registerserif;REGISTERED SIGN SERIF +2310;revlogicalnot;REVERSED NOT SIGN +03C1;rho;GREEK SMALL LETTER RHO +02DA;ring;RING ABOVE +F6F1;rsuperior;SUPERSCRIPT LATIN SMALL LETTER R +2590;rtblock;RIGHT HALF BLOCK +F6DD;rupiah;RUPIAH SIGN +0073;s;LATIN SMALL LETTER S +015B;sacute;LATIN SMALL LETTER S WITH ACUTE +0161;scaron;LATIN SMALL LETTER S WITH CARON +015F;scedilla;LATIN SMALL LETTER S WITH CEDILLA +F6C2;scedilla;LATIN SMALL LETTER S WITH CEDILLA;Duplicate +015D;scircumflex;LATIN SMALL LETTER S WITH CIRCUMFLEX +0219;scommaaccent;LATIN SMALL LETTER S WITH COMMA BELOW +2033;second;DOUBLE PRIME +00A7;section;SECTION SIGN +003B;semicolon;SEMICOLON +0037;seven;DIGIT SEVEN +215E;seveneighths;VULGAR FRACTION SEVEN EIGHTHS +2087;seveninferior;SUBSCRIPT SEVEN +F737;sevenoldstyle;OLDSTYLE DIGIT SEVEN +2077;sevensuperior;SUPERSCRIPT SEVEN +2592;shade;MEDIUM SHADE +03C3;sigma;GREEK SMALL LETTER SIGMA +03C2;sigma1;GREEK SMALL LETTER FINAL SIGMA +223C;similar;TILDE OPERATOR +0036;six;DIGIT SIX +2086;sixinferior;SUBSCRIPT SIX +F736;sixoldstyle;OLDSTYLE DIGIT SIX +2076;sixsuperior;SUPERSCRIPT SIX +002F;slash;SOLIDUS +263A;smileface;WHITE SMILING FACE +0020;space;SPACE +00A0;space;NO-BREAK SPACE;Duplicate +2660;spade;BLACK SPADE SUIT +F6F2;ssuperior;SUPERSCRIPT LATIN SMALL LETTER S +00A3;sterling;POUND SIGN +220B;suchthat;CONTAINS AS MEMBER +2211;summation;N-ARY SUMMATION +263C;sun;WHITE SUN WITH RAYS +0074;t;LATIN SMALL LETTER T +03C4;tau;GREEK SMALL LETTER TAU +0167;tbar;LATIN SMALL LETTER T WITH STROKE +0165;tcaron;LATIN SMALL LETTER T WITH CARON +0163;tcommaaccent;LATIN SMALL LETTER T WITH CEDILLA +021B;tcommaaccent;LATIN SMALL LETTER T WITH COMMA BELOW;Duplicate +2234;therefore;THEREFORE +03B8;theta;GREEK SMALL LETTER THETA +03D1;theta1;GREEK THETA SYMBOL +00FE;thorn;LATIN SMALL LETTER THORN +0033;three;DIGIT THREE +215C;threeeighths;VULGAR FRACTION THREE EIGHTHS +2083;threeinferior;SUBSCRIPT THREE +F733;threeoldstyle;OLDSTYLE DIGIT THREE +00BE;threequarters;VULGAR FRACTION THREE QUARTERS +F6DE;threequartersemdash;THREE QUARTERS EM DASH +00B3;threesuperior;SUPERSCRIPT THREE +02DC;tilde;SMALL TILDE +0303;tildecomb;COMBINING TILDE +0384;tonos;GREEK TONOS +2122;trademark;TRADE MARK SIGN +F8EA;trademarksans;TRADE MARK SIGN SANS SERIF +F6DB;trademarkserif;TRADE MARK SIGN SERIF +25BC;triagdn;BLACK DOWN-POINTING TRIANGLE +25C4;triaglf;BLACK LEFT-POINTING POINTER +25BA;triagrt;BLACK RIGHT-POINTING POINTER +25B2;triagup;BLACK UP-POINTING TRIANGLE +F6F3;tsuperior;SUPERSCRIPT LATIN SMALL LETTER T +0032;two;DIGIT TWO +2025;twodotenleader;TWO DOT LEADER +2082;twoinferior;SUBSCRIPT TWO +F732;twooldstyle;OLDSTYLE DIGIT TWO +00B2;twosuperior;SUPERSCRIPT TWO +2154;twothirds;VULGAR FRACTION TWO THIRDS +0075;u;LATIN SMALL LETTER U +00FA;uacute;LATIN SMALL LETTER U WITH ACUTE +016D;ubreve;LATIN SMALL LETTER U WITH BREVE +00FB;ucircumflex;LATIN SMALL LETTER U WITH CIRCUMFLEX +00FC;udieresis;LATIN SMALL LETTER U WITH DIAERESIS +00F9;ugrave;LATIN SMALL LETTER U WITH GRAVE +01B0;uhorn;LATIN SMALL LETTER U WITH HORN +0171;uhungarumlaut;LATIN SMALL LETTER U WITH DOUBLE ACUTE +016B;umacron;LATIN SMALL LETTER U WITH MACRON +005F;underscore;LOW LINE +2017;underscoredbl;DOUBLE LOW LINE +222A;union;UNION +2200;universal;FOR ALL +0173;uogonek;LATIN SMALL LETTER U WITH OGONEK +2580;upblock;UPPER HALF BLOCK +03C5;upsilon;GREEK SMALL LETTER UPSILON +03CB;upsilondieresis;GREEK SMALL LETTER UPSILON WITH DIALYTIKA +03B0;upsilondieresistonos;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +03CD;upsilontonos;GREEK SMALL LETTER UPSILON WITH TONOS +016F;uring;LATIN SMALL LETTER U WITH RING ABOVE +0169;utilde;LATIN SMALL LETTER U WITH TILDE +0076;v;LATIN SMALL LETTER V +0077;w;LATIN SMALL LETTER W +1E83;wacute;LATIN SMALL LETTER W WITH ACUTE +0175;wcircumflex;LATIN SMALL LETTER W WITH CIRCUMFLEX +1E85;wdieresis;LATIN SMALL LETTER W WITH DIAERESIS +2118;weierstrass;SCRIPT CAPITAL P +1E81;wgrave;LATIN SMALL LETTER W WITH GRAVE +0078;x;LATIN SMALL LETTER X +03BE;xi;GREEK SMALL LETTER XI +0079;y;LATIN SMALL LETTER Y +00FD;yacute;LATIN SMALL LETTER Y WITH ACUTE +0177;ycircumflex;LATIN SMALL LETTER Y WITH CIRCUMFLEX +00FF;ydieresis;LATIN SMALL LETTER Y WITH DIAERESIS +00A5;yen;YEN SIGN +1EF3;ygrave;LATIN SMALL LETTER Y WITH GRAVE +007A;z;LATIN SMALL LETTER Z +017A;zacute;LATIN SMALL LETTER Z WITH ACUTE +017E;zcaron;LATIN SMALL LETTER Z WITH CARON +017C;zdotaccent;LATIN SMALL LETTER Z WITH DOT ABOVE +0030;zero;DIGIT ZERO +2080;zeroinferior;SUBSCRIPT ZERO +F730;zerooldstyle;OLDSTYLE DIGIT ZERO +2070;zerosuperior;SUPERSCRIPT ZERO +03B6;zeta;GREEK SMALL LETTER ZETA +""" + + +t1_bias = 0 +glyph_list = [] + + +def adobe_glyph_names(): + """return the list of glyph names from the adobe list""" + + lines = string.split( adobe_glyph_list, '\n' ) + glyphs = [] + + for line in lines: + if line: + fields = string.split( line, ';' ) +# print fields[0] + ' - ' + fields[1] + glyphs.append( fields[1] ) + + return glyphs + + +def adobe_glyph_values(): + """return the list of glyph names and their unicode values""" + + lines = string.split( adobe_glyph_list, '\n' ) + glyphs = [] + values = [] + + for line in lines: + if line: + fields = string.split( line, ';' ) +# print fields[0] + ' - ' + fields[1] + glyphs.append( fields[1] ) + values.append( fields[0] ) + + return glyphs, values + + +def filter_glyph_names( alist, filter ): + """filter 'alist' by taking _out_ all glyph names that are in 'filter'""" + + count = 0 + extras = [] + + for name in alist: + try: + filtered_index = filter.index( name ) + except: + extras.append( name ) + + return extras + + +def dump_mac_indices( file, all_glyphs ): + write = file.write + + write( " static const unsigned short mac_standard_names[" + \ + repr( len( mac_standard_names ) + 1 ) + "] =\n" ) + write( " {\n" ) + + for name in mac_standard_names: + write( " " + repr( all_glyphs.index( name ) ) + ",\n" ) + + write( " 0\n" ) + write( " };\n" ) + write( "\n" ) + write( "\n" ) + + +def dump_glyph_list( file, base_list, adobe_list ): + write = file.write + + name_list = [] + + write( " static const char* const ps_glyph_names[] =\n" ) + write( " {\n" ) + + for name in base_list: + write( ' "' + name + '",\n' ) + name_list.append( name ) + + write( "\n" ) + write( "#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST\n" ) + write( "\n" ) + + for name in adobe_list: + write( ' "' + name + '",\n' ) + name_list.append( name ) + + write( "\n" ) + write( "#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */\n" ) + write( "\n" ) + write( " NULL\n" ) + write( " };\n" ) + write( "\n" ) + write( "\n" ) + + return name_list + + +def dump_unicode_values( file, sid_list, adobe_list ): + """build the glyph names to unicode values table""" + + write = file.write + + agl_names, agl_unicodes = adobe_glyph_values() + + write( "\n" ) + write( " static const unsigned short ps_names_to_unicode[" + \ + repr( len( sid_list ) + len( adobe_list ) + 1 ) + "] =\n" ) + write( " {\n" ) + + for name in sid_list: + try: + index = agl_names.index( name ) + write( " 0x" + agl_unicodes[index] + ",\n" ) + except: + write( " 0,\n" ) + + write( "\n" ) + write( "#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST\n" ) + write( "\n" ) + + for name in adobe_list: + try: + index = agl_names.index( name ) + write( " 0x" + agl_unicodes[index] + ",\n" ) + except: + write( " 0,\n" ) + + write( "\n" ) + write( "#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */\n" ) + write( " 0\n" ) + write( " };\n" ) + write( "\n" ) + write( "\n" ) + write( "\n" ) + + +def dump_encoding( file, encoding_name, encoding_list ): + """dumps a given encoding""" + + write = file.write + + write( " static const unsigned short " + encoding_name + "[" + \ + repr( len( encoding_list ) + 1 ) + "] =\n" ) + write( " {\n" ) + + for value in encoding_list: + write( " " + repr( value ) + ",\n" ) + write( " 0\n" ) + write( " };\n" ) + write( "\n" ) + write( "\n" ) + + +def main(): + """main program body""" + + if len( sys.argv ) != 2: + print __doc__ % sys.argv[0] + sys.exit( 1 ) + + file = open( sys.argv[1], "w\n" ) + write = file.write + + count_sid = len( sid_standard_names ) + + # 'mac_extras' contains the list of glyph names in the Macintosh standard + # encoding which are not in either the Adobe Glyph List or the SID + # Standard Names. + # + mac_extras = filter_glyph_names( mac_standard_names, adobe_glyph_names() ) + mac_extras = filter_glyph_names( mac_extras, sid_standard_names ) + + # 'base_list' contains the first names of our final glyph names table. + # It consists of the 'mac_extras' glyph names, followed by the SID + # Standard names. + # + mac_extras_count = len( mac_extras ) + t1_bias = mac_extras_count + base_list = mac_extras + sid_standard_names + + # 'adobe_list' contains the glyph names that are in the AGL, but not in + # the base_list; they will be placed after base_list glyph names in + # our final table. + # + adobe_list = filter_glyph_names( adobe_glyph_names(), base_list ) + adobe_count = len( adobe_list ) + + write( "/***************************************************************************/\n" ) + write( "/* */\n" ) + + write( "/* %-71s*/\n" % sys.argv[1] ) + + write( "/* */\n" ) + write( "/* PostScript glyph names (specification only). */\n" ) + write( "/* */\n" ) + write( "/* Copyright 2000-2001 by */\n" ) + write( "/* David Turner, Robert Wilhelm, and Werner Lemberg. */\n" ) + write( "/* */\n" ) + write( "/* This file is part of the FreeType project, and may only be used, */\n" ) + write( "/* modified, and distributed under the terms of the FreeType project */\n" ) + write( "/* license, LICENSE.TXT. By continuing to use, modify, or distribute */\n" ) + write( "/* this file you indicate that you have read the license and */\n" ) + write( "/* understand and accept it fully. */\n" ) + write( "/* */\n" ) + write( "/***************************************************************************/\n" ) + write( "\n" ) + write( "\n" ) + write( " /* this file has been generated automatically -- do not edit! */\n" ) + write( "\n" ) + write( "\n" ) + + # dump final glyph list (mac extras + sid standard names + AGL glyph names) + # + name_list = dump_glyph_list( file, base_list, adobe_list ) + + # dump t1_standard_list + write( " static const char* const * const sid_standard_names = " \ + + "ps_glyph_names + " + repr( t1_bias ) + ";\n" ) + write( "\n" ) + write( "\n" ) + + write( "#define NUM_SID_GLYPHS " + repr( len( sid_standard_names ) ) + "\n" ) + write( "\n" ) + write( "#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST\n" ) + write( "#define NUM_ADOBE_GLYPHS " + \ + repr( len( base_list ) + len( adobe_list ) - t1_bias ) + "\n" ) + write( "#else\n" ) + write( "#define NUM_ADOBE_GLYPHS " + \ + repr( len( base_list ) - t1_bias ) + "\n" ) + write( "#endif\n" ) + write( "\n" ) + write( "\n" ) + + # dump mac indices table + dump_mac_indices( file, name_list ) + + # dump unicode values table + dump_unicode_values( file, sid_standard_names, adobe_list ) + + dump_encoding( file, "t1_standard_encoding", t1_standard_encoding ) + dump_encoding( file, "t1_expert_encoding", t1_expert_encoding ) + + write( "/* END */\n" ) + + +# Now run the main routine +# +main() + + +# END Index: xc/extras/freetype2/src/tools/test_bbox.c diff -u /dev/null xc/extras/freetype2/src/tools/test_bbox.c:1.1.1.2 --- /dev/null Fri Jan 18 15:21:59 2002 +++ xc/extras/freetype2/src/tools/test_bbox.c Sun Dec 16 12:49:34 2001 @@ -0,0 +1,160 @@ +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_BBOX_H + + +#include <time.h> /* for clock() */ + +/* SunOS 4.1.* does not define CLOCKS_PER_SEC, so include <sys/param.h> */ +/* to get the HZ macro which is the equivalent. */ +#if defined(__sun__) && !defined(SVR4) && !defined(__SVR4) +#include <sys/param.h> +#define CLOCKS_PER_SEC HZ +#endif + + static long + get_time( void ) + { + return clock() * 10000L / CLOCKS_PER_SEC; + } + + + + + /* test bbox computations */ + +#define XSCALE 65536 +#define XX(x) ((FT_Pos)(x*XSCALE)) +#define XVEC(x,y) { XX(x), XX(y) } +#define XVAL(x) ((x)/(1.0*XSCALE)) + + /* dummy outline #1 */ + static FT_Vector dummy_vec_1[4] = + { +#if 1 + XVEC( 408.9111, 535.3164 ), + XVEC( 455.8887, 634.396 ), + XVEC( -37.8765, 786.2207 ), + XVEC( 164.6074, 535.3164 ) +#else + { (FT_Int32)0x0198E93DL , (FT_Int32)0x021750FFL }, /* 408.9111, 535.3164 */ + { (FT_Int32)0x01C7E312L , (FT_Int32)0x027A6560L }, /* 455.8887, 634.3960 */ + { (FT_Int32)0xFFDA1F9EL , (FT_Int32)0x0312387FL }, /* -37.8765, 786.2207 */ + { (FT_Int32)0x00A49B7EL , (FT_Int32)0x021750FFL } /* 164.6074, 535.3164 */ +#endif + }; + + static char dummy_tag_1[4] = + { + FT_Curve_Tag_On, + FT_Curve_Tag_Cubic, + FT_Curve_Tag_Cubic, + FT_Curve_Tag_On + }; + + static short dummy_contour_1[1] = + { + 3 + }; + + static FT_Outline dummy_outline_1 = + { + 1, + 4, + dummy_vec_1, + dummy_tag_1, + dummy_contour_1, + 0 + }; + + + /* dummy outline #2 */ + static FT_Vector dummy_vec_2[4] = + { + XVEC( 100.0, 100.0 ), + XVEC( 100.0, 200.0 ), + XVEC( 200.0, 200.0 ), + XVEC( 200.0, 133.0 ) + }; + + static FT_Outline dummy_outline_2 = + { + 1, + 4, + dummy_vec_2, + dummy_tag_1, + dummy_contour_1, + 0 + }; + + + static void + dump_outline( FT_Outline* outline ) + { + FT_BBox bbox; + + /* compute and display cbox */ + FT_Outline_Get_CBox( outline, &bbox ); + printf( "cbox = [%.2f %.2f %.2f %.2f]\n", + XVAL( bbox.xMin ), + XVAL( bbox.yMin ), + XVAL( bbox.xMax ), + XVAL( bbox.yMax ) ); + + /* compute and display bbox */ + FT_Outline_Get_BBox( outline, &bbox ); + printf( "bbox = [%.2f %.2f %.2f %.2f]\n", + XVAL( bbox.xMin ), + XVAL( bbox.yMin ), + XVAL( bbox.xMax ), + XVAL( bbox.yMax ) ); + } + + + + static void + profile_outline( FT_Outline* outline, + long repeat ) + { + FT_BBox bbox; + long count; + long time0; + + time0 = get_time(); + for ( count = repeat; count > 0; count-- ) + FT_Outline_Get_CBox( outline, &bbox ); + + time0 = get_time() - time0; + printf( "time = %5.2f cbox = [%.2f %.2f %.2f %.2f]\n", + ((double)time0/10000.0), + XVAL( bbox.xMin ), + XVAL( bbox.yMin ), + XVAL( bbox.xMax ), + XVAL( bbox.yMax ) ); + + + time0 = get_time(); + for ( count = repeat; count > 0; count-- ) + FT_Outline_Get_BBox( outline, &bbox ); + + time0 = get_time() - time0; + printf( "time = %5.2f bbox = [%.2f %.2f %.2f %.2f]\n", + ((double)time0/10000.0), + XVAL( bbox.xMin ), + XVAL( bbox.yMin ), + XVAL( bbox.xMax ), + XVAL( bbox.yMax ) ); + } + +#define REPEAT 100000L + + int main( int argc, char** argv ) + { + printf( "outline #1\n" ); + profile_outline( &dummy_outline_1, REPEAT ); + + printf( "outline #2\n" ); + profile_outline( &dummy_outline_2, REPEAT ); + return 0; + } + Index: xc/extras/freetype2/src/tools/test_trig.c diff -u /dev/null xc/extras/freetype2/src/tools/test_trig.c:1.1.1.2 --- /dev/null Fri Jan 18 15:21:59 2002 +++ xc/extras/freetype2/src/tools/test_trig.c Sun Dec 16 12:49:34 2001 @@ -0,0 +1,236 @@ +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_TRIGONOMETRY_H + +#include <math.h> +#include <stdio.h> + +#define PI 3.14159265358979323846 +#define SPI (PI/FT_ANGLE_PI) + +/* the precision in 16.16 fixed float points of the checks. Expect */ +/* between 2 and 5 noise LSB bits during operations, due to */ +/* rounding errors.. */ +#define THRESHOLD 64 + + static error = 0; + + static void + test_cos( void ) + { + FT_Fixed f1, f2; + double d1, d2; + int i; + + for ( i = 0; i < FT_ANGLE_2PI; i += 0x10000 ) + { + f1 = FT_Cos(i); + d1 = f1/65536.0; + d2 = cos( i*SPI ); + f2 = (FT_Fixed)(d2*65536.0); + + if ( abs( f2-f1 ) > THRESHOLD ) + { + error = 1; + printf( "FT_Cos[%3d] = %.7f cos[%3d] = %.7f\n", + (i >> 16), f1/65536.0, (i >> 16), d2 ); + } + } + } + + + + static void + test_sin( void ) + { + FT_Fixed f1, f2; + double d1, d2; + int i; + + for ( i = 0; i < FT_ANGLE_2PI; i += 0x10000 ) + { + f1 = FT_Sin(i); + d1 = f1/65536.0; + d2 = sin( i*SPI ); + f2 = (FT_Fixed)(d2*65536.0); + + if ( abs( f2-f1 ) > THRESHOLD ) + { + error = 1; + printf( "FT_Sin[%3d] = %.7f sin[%3d] = %.7f\n", + (i >> 16), f1/65536.0, (i >> 16), d2 ); + } + } + } + + + static void + test_tan( void ) + { + FT_Fixed f1, f2; + double d1, d2; + int i; + + for ( i = 0; i < FT_ANGLE_PI2-0x2000000; i += 0x10000 ) + { + f1 = FT_Tan(i); + d1 = f1/65536.0; + d2 = tan( i*SPI ); + f2 = (FT_Fixed)(d2*65536.0); + + if ( abs( f2-f1 ) > THRESHOLD ) + { + error = 1; + printf( "FT_Tan[%3d] = %.7f tan[%3d] = %.7f\n", + (i >> 16), f1/65536.0, (i >> 16), d2 ); + } + } + } + + + static void + test_atan2( void ) + { + FT_Fixed c2, s2; + double l, a, c1, s1; + int i, j; + + for ( i = 0; i < FT_ANGLE_2PI; i += 0x10000 ) + { + l = 5.0; + a = i*SPI; + + c1 = l * cos(a); + s1 = l * sin(a); + + c2 = (FT_Fixed)(c1*65536.0); + s2 = (FT_Fixed)(s1*65536.0); + + j = FT_Atan2( c2, s2 ); + if ( j < 0 ) + j += FT_ANGLE_2PI; + + if ( abs( i - j ) > 1 ) + { + printf( "FT_Atan2( %.7f, %.7f ) = %.5f, atan = %.5f\n", + c2/65536.0, s2/65536.0, j/65536.0, i/65536.0 ); + } + } + } + + static void + test_unit( void ) + { + FT_Vector v; + double a, c1, s1; + FT_Fixed c2, s2; + int i; + + for ( i = 0; i < FT_ANGLE_2PI; i += 0x10000 ) + { + FT_Vector_Unit( &v, i ); + a = ( i*SPI ); + c1 = cos(a); + s1 = sin(a); + c2 = (FT_Fixed)(c1*65536.0); + s2 = (FT_Fixed)(s1*65536.0); + + if ( abs( v.x-c2 ) > THRESHOLD || + abs( v.y-s2 ) > THRESHOLD ) + { + error = 1; + printf( "FT_Vector_Unit[%3d] = ( %.7f, %.7f ) vec = ( %.7f, %.7f )\n", + (i >> 16), + v.x/65536.0, v.y/65536.0, + c1, s1 ); + } + } + } + + + static void + test_length( void ) + { + FT_Vector v; + FT_Fixed l, l2; + int i; + + for ( i = 0; i < FT_ANGLE_2PI; i += 0x10000 ) + { + l = (FT_Fixed)(500.0*65536.0); + v.x = (FT_Fixed)( l * cos( i*SPI ) ); + v.y = (FT_Fixed)( l * sin( i*SPI ) ); + l2 = FT_Vector_Length( &v ); + + if ( abs( l2-l ) > THRESHOLD ) + { + error = 1; + printf( "FT_Length( %.7f, %.7f ) = %.5f, length = %.5f\n", + v.x/65536.0, v.y/65536.0, l2/65536.0, l/65536.0 ); + } + } + } + + + static void + test_rotate( void ) + { + FT_Fixed c2, s2, c4, s4; + FT_Vector v; + double l, ra, a, c1, s1, cra, sra, c3, s3; + int i, j, rotate; + + for ( rotate = 0; rotate < FT_ANGLE_2PI; rotate += 0x10000 ) + { + ra = rotate*SPI; + cra = cos( ra ); + sra = sin( ra ); + + for ( i = 0; i < FT_ANGLE_2PI; i += 0x10000 ) + { + l = 500.0; + a = i*SPI; + + c1 = l * cos(a); + s1 = l * sin(a); + + v.x = c2 = (FT_Fixed)(c1*65536.0); + v.y = s2 = (FT_Fixed)(s1*65536.0); + + FT_Vector_Rotate( &v, rotate ); + + c3 = c1 * cra - s1 * sra; + s3 = c1 * sra + s1 * cra; + + c4 = (FT_Fixed)(c3*65536.0); + s4 = (FT_Fixed)(s3*65536.0); + + if ( abs( c4 - v.x ) > THRESHOLD || + abs( s4 - v.y ) > THRESHOLD ) + { + error = 1; + printf( "FT_Rotate( (%.7f,%.7f), %.5f ) = ( %.7f, %.7f ), rot = ( %.7f, %.7f )\n", + c1, s1, ra, + c2/65536.0, s2/65536.0, + c4/65536.0, s4/65536.0 ); + } + } + } + } + + + int main( void ) + { + test_cos(); + test_sin(); + test_tan(); + test_atan2(); + test_unit(); + test_length(); + test_rotate(); + + if (!error) + printf( "trigonometry test ok !\n" ); + + return !error; + } Index: xc/extras/freetype2/src/truetype/Jamfile diff -u /dev/null xc/extras/freetype2/src/truetype/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:59 2002 +++ xc/extras/freetype2/src/truetype/Jamfile Sun Sep 9 22:56:09 2001 @@ -0,0 +1,23 @@ +# FreeType 2 src/truetype Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src truetype ; + +SubDirHdrs [ FT2_SubDir src truetype ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = ttdriver ttobjs ttpload ttgload ttinterp ; + } + else + { + _sources = truetype ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/truetype Jamfile Index: xc/extras/freetype2/src/truetype/rules.mk diff -u xc/extras/freetype2/src/truetype/rules.mk:1.1.1.2 xc/extras/freetype2/src/truetype/rules.mk:1.1.1.3 --- xc/extras/freetype2/src/truetype/rules.mk:1.1.1.2 Tue May 15 23:45:40 2001 +++ xc/extras/freetype2/src/truetype/rules.mk Sun Sep 9 22:56:09 2001 @@ -34,7 +34,8 @@ # TrueType driver headers # -TT_DRV_H := $(TT_DRV_SRC:%.c=%.h) +TT_DRV_H := $(TT_DRV_SRC:%.c=%.h) \ + $(TT_DIR_)tterrors.h # TrueType driver object(s) Index: xc/extras/freetype2/src/truetype/truetype.c diff -u xc/extras/freetype2/src/truetype/truetype.c:1.1.1.2 xc/extras/freetype2/src/truetype/truetype.c:1.1.1.3 --- xc/extras/freetype2/src/truetype/truetype.c:1.1.1.2 Tue May 15 23:45:41 2001 +++ xc/extras/freetype2/src/truetype/truetype.c Sun Dec 16 12:49:34 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType TrueType driver component (body only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/truetype/ttdriver.c diff -u xc/extras/freetype2/src/truetype/ttdriver.c:1.1.1.2 xc/extras/freetype2/src/truetype/ttdriver.c:1.1.1.5 --- xc/extras/freetype2/src/truetype/ttdriver.c:1.1.1.2 Tue May 15 23:45:40 2001 +++ xc/extras/freetype2/src/truetype/ttdriver.c Mon Jan 14 11:52:24 2002 @@ -4,7 +4,7 @@ /* */ /* TrueType font driver implementation (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -21,9 +21,12 @@ #include FT_INTERNAL_STREAM_H #include FT_INTERNAL_SFNT_H #include FT_TRUETYPE_IDS_H + #include "ttdriver.h" #include "ttgload.h" +#include "tterrors.h" + /*************************************************************************/ /* */ @@ -85,11 +88,11 @@ /* */ /* They can be implemented by format-specific interfaces. */ /* */ - static - FT_Error Get_Kerning( TT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_Vector* kerning ) + static FT_Error + Get_Kerning( TT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_Vector* kerning ) { TT_Kern_0_Pair* pair; @@ -180,12 +183,12 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - static - FT_Error Set_Char_Sizes( TT_Size size, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ) + static FT_Error + Set_Char_Sizes( TT_Size size, + FT_F26Dot6 char_width, + FT_F26Dot6 char_height, + FT_UInt horz_resolution, + FT_UInt vert_resolution ) { FT_Size_Metrics* metrics = &size->root.metrics; TT_Face face = (TT_Face)size->root.face; @@ -204,8 +207,8 @@ if ( ( face->header.Flags & 8 ) == 0 ) { /* Compute pixel sizes in 26.6 units */ - dim_x = ( char_width * horz_resolution ) / 72; - dim_y = ( char_height * vert_resolution ) / 72; + dim_x = ( char_width * horz_resolution + 36 ) / 72; + dim_y = ( char_height * vert_resolution + 36 ) / 72; metrics->x_scale = FT_DivFix( dim_x, face->root.units_per_EM ); metrics->y_scale = FT_DivFix( dim_y, face->root.units_per_EM ); @@ -243,10 +246,10 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - static - FT_Error Set_Pixel_Sizes( TT_Size size, - FT_UInt pixel_width, - FT_UInt pixel_height ) + static FT_Error + Set_Pixel_Sizes( TT_Size size, + FT_UInt pixel_width, + FT_UInt pixel_height ) { FT_UNUSED( pixel_width ); FT_UNUSED( pixel_height ); @@ -288,17 +291,17 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - static - FT_Error Load_Glyph( TT_GlyphSlot slot, - TT_Size size, - FT_UShort glyph_index, - FT_UInt load_flags ) + static FT_Error + Load_Glyph( TT_GlyphSlot slot, + TT_Size size, + FT_UShort glyph_index, + FT_UInt load_flags ) { FT_Error error; if ( !slot ) - return TT_Err_Invalid_Glyph_Handle; + return TT_Err_Invalid_Slot_Handle; /* check whether we want a scaled outline or bitmap */ if ( !size ) @@ -358,9 +361,9 @@ /* <Return> */ /* Glyph index. 0 means `undefined character code'. */ /* */ - static - FT_UInt Get_Char_Index( TT_CharMap charmap, - FT_Long charcode ) + static FT_UInt + Get_Char_Index( TT_CharMap charmap, + FT_Long charcode ) { FT_Error error; TT_Face face; @@ -403,9 +406,9 @@ /*************************************************************************/ - static - FT_Module_Interface tt_get_interface( TT_Driver driver, - const char* interface ) + static FT_Module_Interface + tt_get_interface( TT_Driver driver, + const char* interface ) { FT_Module sfntd = FT_Get_Module( driver->root.root.library, "sfnt" ); @@ -496,7 +499,8 @@ /* format-specific interface can then be retrieved through the method */ /* interface->get_format_interface. */ /* */ - FT_EXPORT_DEF( const FT_Driver_Class* ) getDriverClass( void ) + FT_EXPORT_DEF( const FT_Driver_Class* ) + getDriverClass( void ) { return &tt_driver_class; } Index: xc/extras/freetype2/src/truetype/ttdriver.h diff -u xc/extras/freetype2/src/truetype/ttdriver.h:1.1.1.2 xc/extras/freetype2/src/truetype/ttdriver.h:1.1.1.3 --- xc/extras/freetype2/src/truetype/ttdriver.h:1.1.1.2 Tue May 15 23:45:40 2001 +++ xc/extras/freetype2/src/truetype/ttdriver.h Sun Dec 16 12:49:34 2001 @@ -4,7 +4,7 @@ /* */ /* High-level TrueType driver interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/truetype/tterrors.h diff -u /dev/null xc/extras/freetype2/src/truetype/tterrors.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:59 2002 +++ xc/extras/freetype2/src/truetype/tterrors.h Sun Sep 9 22:56:09 2001 @@ -0,0 +1,40 @@ +/***************************************************************************/ +/* */ +/* tterrors.h */ +/* */ +/* TrueType error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the TrueType error enumeration */ + /* constants. */ + /* */ + /*************************************************************************/ + +#ifndef __TTERRORS_H__ +#define __TTERRORS_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX TT_Err_ +#define FT_ERR_BASE FT_Mod_Err_TrueType + +#include FT_ERRORS_H + +#endif /* __TTERRORS_H__ */ + +/* END */ Index: xc/extras/freetype2/src/truetype/ttgload.c diff -u xc/extras/freetype2/src/truetype/ttgload.c:1.4 xc/extras/freetype2/src/truetype/ttgload.c:1.8 --- xc/extras/freetype2/src/truetype/ttgload.c:1.4 Wed May 16 15:12:50 2001 +++ xc/extras/freetype2/src/truetype/ttgload.c Mon Jan 14 12:01:00 2002 @@ -4,7 +4,7 @@ /* */ /* TrueType Glyph Loader (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -14,8 +14,8 @@ /* understand and accept it fully. */ /* */ /***************************************************************************/ +/* $XFree86: xc/extras/freetype2/src/truetype/ttgload.c,v 1.8 2002/01/14 17:01:00 keithp Exp $ */ - #include <ft2build.h> #include FT_INTERNAL_DEBUG_H #include FT_INTERNAL_CALC_H @@ -26,6 +26,8 @@ #include "ttgload.h" +#include "tterrors.h" + /*************************************************************************/ /* */ @@ -79,11 +81,11 @@ /* This function will much probably move to another component in the */ /* near future, but I haven't decided which yet. */ /* */ - FT_LOCAL_DEF - void TT_Get_Metrics( TT_HoriHeader* header, - FT_UInt index, - FT_Short* bearing, - FT_UShort* advance ) + FT_LOCAL_DEF void + TT_Get_Metrics( TT_HoriHeader* header, + FT_UInt index, + FT_Short* bearing, + FT_UShort* advance ) { TT_LongMetrics* longs_m; FT_UShort k = header->number_Of_HMetrics; @@ -109,12 +111,12 @@ /* `check' is true, take care of monospaced fonts by returning the */ /* advance width maximum. */ /* */ - static - void Get_HMetrics( TT_Face face, - FT_UInt index, - FT_Bool check, - FT_Short* lsb, - FT_UShort* aw ) + static void + Get_HMetrics( TT_Face face, + FT_UInt index, + FT_Bool check, + FT_Short* lsb, + FT_UShort* aw ) { TT_Get_Metrics( &face->horizontal, index, lsb, aw ); @@ -128,9 +130,9 @@ /* Returns the advance width table for a given pixel size if it is */ /* found in the font's `hdmx' table (if any). */ /* */ - static - FT_Byte* Get_Advance_Widths( TT_Face face, - FT_UShort ppem ) + static FT_Byte* + Get_Advance_Widths( TT_Face face, + FT_UShort ppem ) { FT_UShort n; @@ -143,21 +145,21 @@ #define cur_to_org( n, zone ) \ - MEM_Copy( (zone)->org, (zone)->cur, n * sizeof ( FT_Vector ) ) + MEM_Copy( (zone)->org, (zone)->cur, (n) * sizeof ( FT_Vector ) ) #define org_to_cur( n, zone ) \ - MEM_Copy( (zone)->cur, (zone)->org, n * sizeof ( FT_Vector ) ) + MEM_Copy( (zone)->cur, (zone)->org, (n) * sizeof ( FT_Vector ) ) /*************************************************************************/ /* */ /* Translates an array of coordinates. */ /* */ - static - void translate_array( FT_UInt n, - FT_Vector* coords, - FT_Pos delta_x, - FT_Pos delta_y ) + static void + translate_array( FT_UInt n, + FT_Vector* coords, + FT_Pos delta_x, + FT_Pos delta_y ) { FT_UInt k; @@ -172,14 +174,14 @@ } - static - void tt_prepare_zone( TT_GlyphZone* zone, - FT_GlyphLoad* load, - FT_UInt start_point, - FT_UInt start_contour ) + static void + tt_prepare_zone( TT_GlyphZone* zone, + FT_GlyphLoad* load, + FT_UInt start_point, + FT_UInt start_contour ) { - zone->n_points = load->outline.n_points - start_point; - zone->n_contours = load->outline.n_contours - start_contour; + zone->n_points = (FT_UShort)( load->outline.n_points - start_point ); + zone->n_contours = (FT_Short) ( load->outline.n_contours - start_contour ); zone->org = load->extra_points + start_point; zone->cur = load->outline.points + start_point; zone->tags = (FT_Byte*)load->outline.tags + start_point; @@ -199,11 +201,11 @@ /* */ /*************************************************************************/ - FT_CALLBACK_DEF - FT_Error TT_Access_Glyph_Frame( TT_Loader* loader, - FT_UInt glyph_index, - FT_ULong offset, - FT_UInt byte_count ) + FT_CALLBACK_DEF( FT_Error ) + TT_Access_Glyph_Frame( TT_Loader* loader, + FT_UInt glyph_index, + FT_ULong offset, + FT_UInt byte_count ) { FT_Error error; FT_Stream stream = loader->stream; @@ -222,8 +224,8 @@ } - FT_CALLBACK_DEF - void TT_Forget_Glyph_Frame( TT_Loader* loader ) + FT_CALLBACK_DEF( void ) + TT_Forget_Glyph_Frame( TT_Loader* loader ) { FT_Stream stream = loader->stream; @@ -232,11 +234,15 @@ } - FT_CALLBACK_DEF - FT_Error TT_Load_Glyph_Header( TT_Loader* loader ) + FT_CALLBACK_DEF( FT_Error ) + TT_Load_Glyph_Header( TT_Loader* loader ) { - FT_Stream stream = loader->stream; + FT_Stream stream = loader->stream; + FT_Int byte_len = loader->byte_len - 10; + + if ( byte_len < 0 ) + return TT_Err_Invalid_Outline; loader->n_contours = GET_Short(); @@ -250,13 +256,14 @@ loader->bbox.xMax )); FT_TRACE5(( " yMin: %4d yMax: %4d\n", loader->bbox.yMin, loader->bbox.yMax )); + loader->byte_len = byte_len; return TT_Err_Ok; } - FT_CALLBACK_DEF - FT_Error TT_Load_Simple_Glyph( TT_Loader* load ) + FT_CALLBACK_DEF( FT_Error ) + TT_Load_Simple_Glyph( TT_Loader* load ) { FT_Error error; FT_Stream stream = load->stream; @@ -267,6 +274,7 @@ TT_GlyphSlot slot = (TT_GlyphSlot)load->glyph; FT_UShort n_ins; FT_Int n, n_points; + FT_Int byte_len = load->byte_len; /* reading the contours endpoints & number of points */ @@ -275,6 +283,11 @@ short* limit = cur + n_contours; + /* check space for contours array + instructions count */ + byte_len -= 2 * ( n_contours + 1 ); + if ( byte_len < 0 ) + goto Invalid_Outline; + for ( ; cur < limit; cur++ ) cur[0] = GET_UShort(); @@ -286,7 +299,12 @@ if ( error ) goto Fail; + /* we'd better check the contours table right now */ outline = &gloader->current.outline; + + for ( cur = outline->contours + 1; cur < limit; cur++ ) + if ( cur[-1] >= cur[0] ) + goto Invalid_Outline; } /* reading the bytecode instructions */ @@ -300,14 +318,15 @@ if ( n_ins > face->max_profile.maxSizeOfInstructions ) { FT_TRACE0(( "ERROR: Too many instructions!\n" )); - error = TT_Err_Too_Many_Ins; + error = TT_Err_Too_Many_Hints; goto Fail; } - if ( stream->cursor + n_ins > stream->limit ) + byte_len -= n_ins; + if ( byte_len < 0 ) { FT_TRACE0(( "ERROR: Instruction count mismatch!\n" )); - error = TT_Err_Too_Many_Ins; + error = TT_Err_Too_Many_Hints; goto Fail; } @@ -328,22 +347,48 @@ stream->cursor += n_ins; /* reading the point tags */ - { FT_Byte* flag = (FT_Byte*)outline->tags; FT_Byte* limit = flag + n_points; FT_Byte c, count; - for ( ; flag < limit; flag++ ) + while ( flag < limit ) { - *flag = c = GET_Byte(); + if ( --byte_len < 0 ) + goto Invalid_Outline; + + *flag++ = c = GET_Byte(); if ( c & 8 ) { - for ( count = GET_Byte(); count > 0; count-- ) - *++flag = c; + if ( --byte_len < 0 ) + goto Invalid_Outline; + + count = GET_Byte(); + if ( flag + count > limit ) + goto Invalid_Outline; + + for ( ; count > 0; count-- ) + *flag++ = c; } } + + /* check that there is enough room to load the coordinates */ + for ( flag = (FT_Byte*)outline->tags; flag < limit; flag++ ) + { + if ( *flag & 2 ) + byte_len -= 1; + else if ( ( *flag & 16 ) == 0 ) + byte_len -= 2; + + if ( *flag & 4 ) + byte_len -= 1; + else if ( ( *flag & 32 ) == 0 ) + byte_len -= 2; + } + + if ( byte_len < 0 ) + goto Invalid_Outline; } /* reading the X coordinates */ @@ -406,22 +451,29 @@ for ( n = 0; n < n_points; n++ ) outline->tags[n] &= FT_Curve_Tag_On; - outline->n_points = n_points; - outline->n_contours = n_contours; + outline->n_points = (FT_UShort)n_points; + outline->n_contours = (FT_Short) n_contours; + load->byte_len = byte_len; + Fail: return error; + + Invalid_Outline: + error = TT_Err_Invalid_Outline; + goto Fail; } - FT_CALLBACK_DEF - FT_Error TT_Load_Composite_Glyph( TT_Loader* loader ) + FT_CALLBACK_DEF( FT_Error ) + TT_Load_Composite_Glyph( TT_Loader* loader ) { FT_Error error; FT_Stream stream = loader->stream; FT_GlyphLoader* gloader = loader->gloader; FT_SubGlyph* subglyph; FT_UInt num_subglyphs; + FT_Int byte_len = loader->byte_len; num_subglyphs = 0; @@ -436,6 +488,11 @@ if ( error ) goto Fail; + /* check space */ + byte_len -= 4; + if ( byte_len < 0 ) + goto Invalid_Composite; + subglyph = gloader->current.subglyphs + num_subglyphs; subglyph->arg1 = subglyph->arg2 = 0; @@ -443,6 +500,20 @@ subglyph->flags = GET_UShort(); subglyph->index = GET_UShort(); + /* check space */ + byte_len -= 2; + if ( subglyph->flags & ARGS_ARE_WORDS ) + byte_len -= 2; + if ( subglyph->flags & WE_HAVE_A_SCALE ) + byte_len -= 2; + else if ( subglyph->flags & WE_HAVE_AN_XY_SCALE ) + byte_len -= 4; + else if ( subglyph->flags & WE_HAVE_A_2X2 ) + byte_len -= 8; + + if ( byte_len < 0 ) + goto Invalid_Composite; + /* read arguments */ if ( subglyph->flags & ARGS_ARE_WORDS ) { @@ -499,13 +570,19 @@ } #endif + loader->byte_len = byte_len; + Fail: return error; + + Invalid_Composite: + error = TT_Err_Invalid_Composite; + goto Fail; } - FT_LOCAL_DEF - void TT_Init_Glyph_Loading( TT_Face face ) + FT_LOCAL_DEF void + TT_Init_Glyph_Loading( TT_Face face ) { face->access_glyph_frame = TT_Access_Glyph_Frame; face->read_glyph_header = TT_Load_Glyph_Header; @@ -525,9 +602,9 @@ /* Usually, this means scaling and hinting through bytecode */ /* interpretation. */ /* */ - static - FT_Error TT_Process_Simple_Glyph( TT_Loader* load, - FT_Bool debug ) + static FT_Error + TT_Process_Simple_Glyph( TT_Loader* load, + FT_Bool debug ) { FT_GlyphLoader* gloader = load->gloader; FT_Outline* outline = &gloader->current.outline; @@ -655,9 +732,9 @@ /* Loads a given truetype glyph. Handles composites and uses a */ /* TT_Loader object. */ /* */ - static - FT_Error load_truetype_glyph( TT_Loader* loader, - FT_UInt glyph_index ) + static FT_Error + load_truetype_glyph( TT_Loader* loader, + FT_UInt glyph_index ) { #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER @@ -668,9 +745,8 @@ TT_Face face = (TT_Face)loader->face; FT_ULong offset; FT_Int contours_count; - FT_UInt index, num_points, num_contours, count; + FT_UInt index, num_points, count; FT_Fixed x_scale, y_scale; - FT_ULong ins_offset; FT_GlyphLoader* gloader = loader->gloader; FT_Bool opened_frame = 0; @@ -684,9 +760,7 @@ } loader->glyph_index = glyph_index; - num_contours = 0; num_points = 0; - ins_offset = 0; x_scale = 0x10000L; y_scale = 0x10000L; @@ -710,6 +784,12 @@ loader->left_bearing = left_bearing; loader->advance = advance_width; + + if ( !loader->linear_def ) + { + loader->linear_def = 1; + loader->linear = advance_width; + } } offset = face->glyph_locations[index]; @@ -744,6 +824,18 @@ goto Exit; } + loader->byte_len = (FT_Int)count; + +#if 0 + /* temporary hack */ + if ( count < 10 ) + { + /* This glyph is corrupted -- it does not have a complete header */ + error = TT_Err_Invalid_Outline; + goto Fail; + } +#endif + offset = loader->glyf_offset + offset; /* access glyph frame */ @@ -1019,7 +1111,8 @@ { FT_TRACE0(( "Too many instructions (%d) in composite glyph %ld\n", n_ins, subglyph->index )); - return TT_Err_Too_Many_Ins; + error = TT_Err_Too_Many_Hints; + goto Fail; } /* read the instructions */ @@ -1041,7 +1134,7 @@ start_point, start_contour ); pts = &exec->pts; - pts->n_points = num_points + 2; + pts->n_points = (short)(num_points + 2); pts->n_contours = gloader->base.outline.n_contours; /* add phantom points */ @@ -1105,24 +1198,20 @@ } - static - void compute_glyph_metrics( TT_Loader* loader, - FT_UInt glyph_index ) + static void + compute_glyph_metrics( TT_Loader* loader, + FT_UInt glyph_index ) { FT_BBox bbox; TT_Face face = (TT_Face)loader->face; - FT_Fixed x_scale, y_scale; + FT_Fixed y_scale; TT_GlyphSlot glyph = loader->glyph; TT_Size size = (TT_Size)loader->size; - x_scale = 0x10000L; y_scale = 0x10000L; if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 ) - { - x_scale = size->root.metrics.x_scale; y_scale = size->root.metrics.y_scale; - } if ( glyph->format != ft_glyph_format_composite ) { @@ -1152,7 +1241,7 @@ /* get the device-independent horizontal advance. It is scaled later */ /* by the base layer. */ { - FT_Pos advance = loader->advance; + FT_Pos advance = loader->linear; /* the flag FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH was introduced to */ @@ -1173,6 +1262,10 @@ glyph->metrics.horiBearingY = bbox.yMax; glyph->metrics.horiAdvance = loader->pp2.x - loader->pp1.x; + /* don't forget to hint the advance when we need to */ + if ( IS_HINTED( loader->load_flags ) ) + glyph->metrics.horiAdvance = ( glyph->metrics.horiAdvance + 32 ) & -64; + /* Now take care of vertical metrics. In the case where there is */ /* no vertical information within the font (relatively common), make */ /* up some metrics by `hand'... */ @@ -1182,7 +1275,6 @@ FT_UShort advance_height; /* vertical advance height (EM units) */ FT_Pos left; /* scaled vertical left side bearing */ - FT_Pos Top; /* scaled original vertical top side bearing */ FT_Pos top; /* scaled vertical top side bearing */ FT_Pos advance; /* scaled vertical advance height */ @@ -1215,14 +1307,14 @@ /* */ if ( face->os2.version != 0xFFFF ) { - top_bearing = face->os2.sTypoLineGap / 2; + top_bearing = (FT_Short)( face->os2.sTypoLineGap / 2 ); advance_height = (FT_UShort)( face->os2.sTypoAscender - face->os2.sTypoDescender + face->os2.sTypoLineGap ); } else { - top_bearing = face->horizontal.Line_Gap / 2; + top_bearing = (FT_Short)( face->horizontal.Line_Gap / 2 ); advance_height = (FT_UShort)( face->horizontal.Ascender + face->horizontal.Descender + face->horizontal.Line_Gap ); @@ -1236,14 +1328,12 @@ /* scale the metrics */ if ( !( loader->load_flags & FT_LOAD_NO_SCALE ) ) { - Top = FT_MulFix( top_bearing, y_scale ); top = FT_MulFix( top_bearing + loader->bbox.yMax, y_scale ) - bbox.yMax; advance = FT_MulFix( advance_height, y_scale ); } else { - Top = top_bearing; top = top_bearing + loader->bbox.yMax - bbox.yMax; advance = advance_height; } @@ -1315,16 +1405,15 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_Glyph( TT_Size size, - TT_GlyphSlot glyph, - FT_UShort glyph_index, - FT_UInt load_flags ) + FT_LOCAL_DEF FT_Error + TT_Load_Glyph( TT_Size size, + TT_GlyphSlot glyph, + FT_UShort glyph_index, + FT_UInt load_flags ) { SFNT_Interface* sfnt; TT_Face face; FT_Stream stream; - FT_Memory memory; FT_Error error; TT_Loader loader; @@ -1332,7 +1421,6 @@ face = (TT_Face)glyph->face; sfnt = (SFNT_Interface*)face->sfnt; stream = face->root.stream; - memory = face->root.memory; error = 0; if ( !size || ( load_flags & FT_LOAD_NO_SCALE ) || @@ -1401,6 +1489,10 @@ #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ + /* return immediately if we only want the embedded bitmaps */ + if ( load_flags & FT_LOAD_SBITS_ONLY ) + return FT_Err_Invalid_Argument; + /* seek to the beginning of the glyph table. For Type 42 fonts */ /* the table might be accessed from a Postscript stream or something */ /* else... */ @@ -1492,4 +1584,3 @@ /* END */ - Index: xc/extras/freetype2/src/truetype/ttgload.h diff -u xc/extras/freetype2/src/truetype/ttgload.h:1.1.1.2 xc/extras/freetype2/src/truetype/ttgload.h:1.1.1.3 --- xc/extras/freetype2/src/truetype/ttgload.h:1.1.1.2 Tue May 15 23:45:40 2001 +++ xc/extras/freetype2/src/truetype/ttgload.h Sun Dec 16 12:49:35 2001 @@ -4,7 +4,7 @@ /* */ /* TrueType Glyph Loader (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -31,20 +31,20 @@ FT_BEGIN_HEADER - FT_LOCAL - void TT_Get_Metrics( TT_HoriHeader* header, - FT_UInt index, - FT_Short* bearing, - FT_UShort* advance ); - - FT_LOCAL - void TT_Init_Glyph_Loading( TT_Face face ); - - FT_LOCAL - FT_Error TT_Load_Glyph( TT_Size size, - TT_GlyphSlot glyph, - FT_UShort glyph_index, - FT_UInt load_flags ); + FT_LOCAL void + TT_Get_Metrics( TT_HoriHeader* header, + FT_UInt index, + FT_Short* bearing, + FT_UShort* advance ); + + FT_LOCAL void + TT_Init_Glyph_Loading( TT_Face face ); + + FT_LOCAL FT_Error + TT_Load_Glyph( TT_Size size, + TT_GlyphSlot glyph, + FT_UShort glyph_index, + FT_UInt load_flags ); FT_END_HEADER Index: xc/extras/freetype2/src/truetype/ttinterp.c diff -u xc/extras/freetype2/src/truetype/ttinterp.c:1.1.1.2 xc/extras/freetype2/src/truetype/ttinterp.c:1.1.1.4 --- xc/extras/freetype2/src/truetype/ttinterp.c:1.1.1.2 Tue May 15 23:45:42 2001 +++ xc/extras/freetype2/src/truetype/ttinterp.c Sun Dec 16 12:49:36 2001 @@ -4,7 +4,7 @@ /* */ /* TrueType bytecode interpreter (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -19,9 +19,12 @@ #include <ft2build.h> #include FT_INTERNAL_DEBUG_H #include FT_INTERNAL_CALC_H +#include FT_TRIGONOMETRY_H #include FT_SYSTEM_H + #include "ttinterp.h" -#include FT_INTERNAL_TRUETYPE_ERRORS_H + +#include "tterrors.h" #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER @@ -29,10 +32,8 @@ #define TT_MULFIX FT_MulFix #define TT_MULDIV FT_MulDiv - #define TT_INT64 FT_Int64 - /*************************************************************************/ /* */ /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ @@ -255,10 +256,10 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Goto_CodeRange( TT_ExecContext exec, - FT_Int range, - FT_Long IP ) + FT_LOCAL_DEF FT_Error + TT_Goto_CodeRange( TT_ExecContext exec, + FT_Int range, + FT_Long IP ) { TT_CodeRange* coderange; @@ -305,11 +306,11 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Set_CodeRange( TT_ExecContext exec, - FT_Int range, - void* base, - FT_Long length ) + FT_LOCAL_DEF FT_Error + TT_Set_CodeRange( TT_ExecContext exec, + FT_Int range, + void* base, + FT_Long length ) { FT_Assert( range >= 1 && range <= 3 ); @@ -340,9 +341,9 @@ /* <Note> */ /* Does not set the Error variable. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Clear_CodeRange( TT_ExecContext exec, - FT_Int range ) + FT_LOCAL_DEF FT_Error + TT_Clear_CodeRange( TT_ExecContext exec, + FT_Int range ) { FT_Assert( range >= 1 && range <= 3 ); @@ -379,9 +380,9 @@ /* <Note> */ /* Only the glyph loader and debugger should call this function. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Destroy_Context( TT_ExecContext exec, - FT_Memory memory ) + FT_LOCAL_DEF FT_Error + TT_Destroy_Context( TT_ExecContext exec, + FT_Memory memory ) { /* free composite load stack */ FREE( exec->loadStack ); @@ -431,10 +432,10 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - static - FT_Error Init_Context( TT_ExecContext exec, - TT_Face face, - FT_Memory memory ) + static FT_Error + Init_Context( TT_ExecContext exec, + TT_Face face, + FT_Memory memory ) { FT_Error error; @@ -499,12 +500,12 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - static - FT_Error Update_Max( FT_Memory memory, - FT_ULong* size, - FT_Long multiplier, - void** buff, - FT_ULong new_max ) + static FT_Error + Update_Max( FT_Memory memory, + FT_ULong* size, + FT_Long multiplier, + void** buff, + FT_ULong new_max ) { FT_Error error; @@ -543,10 +544,10 @@ /* <Note> */ /* Only the glyph loader and debugger should call this function. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_Context( TT_ExecContext exec, - TT_Face face, - TT_Size size ) + FT_LOCAL_DEF FT_Error + TT_Load_Context( TT_ExecContext exec, + TT_Face face, + TT_Size size ) { FT_Int i; FT_ULong tmp; @@ -646,9 +647,9 @@ /* <Note> */ /* Only the glyph loader and debugger should call this function. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Save_Context( TT_ExecContext exec, - TT_Size size ) + FT_LOCAL_DEF FT_Error + TT_Save_Context( TT_ExecContext exec, + TT_Size size ) { FT_Int i; @@ -693,9 +694,9 @@ /* <Note> */ /* Only the glyph loader and debugger should call this function. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Run_Context( TT_ExecContext exec, - FT_Bool debug ) + FT_LOCAL_DEF FT_Error + TT_Run_Context( TT_ExecContext exec, + FT_Bool debug ) { FT_Error error; @@ -753,7 +754,8 @@ /* documentation is in ttinterp.h */ - FT_EXPORT_DEF( TT_ExecContext ) TT_New_Context( TT_Face face ) + FT_EXPORT_DEF( TT_ExecContext ) + TT_New_Context( TT_Face face ) { TT_Driver driver; TT_ExecContext exec; @@ -813,8 +815,8 @@ /* <Note> */ /* Only the glyph loader and debugger should call this function. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Done_Context( TT_ExecContext exec ) + FT_LOCAL_DEF FT_Error + TT_Done_Context( TT_ExecContext exec ) { /* Nothing at all for now */ FT_UNUSED( exec ); @@ -823,10 +825,12 @@ } + /* return length of given vector */ #ifdef FT_CONFIG_OPTION_OLD_CALCS - static FT_F26Dot6 Norm( FT_F26Dot6 X, - FT_F26Dot6 Y ) + static FT_F26Dot6 + Norm( FT_F26Dot6 X, + FT_F26Dot6 Y ) { TT_INT64 T1, T2; @@ -839,6 +843,19 @@ return (FT_F26Dot6)SQRT_64( T1 ); } +#else /* !FT_CONFIG_OPTION_OLD_CALCS */ + + static FT_F26Dot6 + Norm( FT_F26Dot6 X, + FT_F26Dot6 Y ) + { + FT_Vector v; + + v.x = X; + v.y = Y; + return FT_Vector_Length( &v ); + } + #endif /* FT_CONFIG_OPTION_OLD_CALCS */ @@ -1196,8 +1213,8 @@ /* <Return> */ /* The aspect ratio in 16.16 format, always <= 1.0 . */ /* */ - static - FT_Long Current_Ratio( EXEC_OP ) + static FT_Long + Current_Ratio( EXEC_OP ) { if ( CUR.tt_metrics.ratio ) return CUR.tt_metrics.ratio; @@ -1212,29 +1229,17 @@ { FT_Long x, y; - -#ifdef FT_CONFIG_OPTION_OLD_CALCS - x = TT_MULDIV( CUR.GS.projVector.x, CUR.tt_metrics.x_ratio, 0x4000 ); y = TT_MULDIV( CUR.GS.projVector.y, CUR.tt_metrics.y_ratio, 0x4000 ); CUR.tt_metrics.ratio = Norm( x, y ); - -#else - - x = TT_MULDIV( CUR.GS.projVector.x, CUR.tt_metrics.x_ratio, 0x8000 ); - y = TT_MULDIV( CUR.GS.projVector.y, CUR.tt_metrics.y_ratio, 0x8000 ); - CUR.tt_metrics.ratio = FT_Sqrt32( x * x + y * y ) << 1; - -#endif /* FT_CONFIG_OPTION_OLD_CALCS */ - } return CUR.tt_metrics.ratio; } - static - FT_Long Current_Ppem( EXEC_OP ) + static FT_Long + Current_Ppem( EXEC_OP ) { return TT_MULFIX( CUR.tt_metrics.ppem, CURRENT_Ratio() ); } @@ -1247,47 +1252,47 @@ /*************************************************************************/ - FT_CALLBACK_DEF - FT_F26Dot6 Read_CVT( EXEC_OP_ FT_ULong index ) + FT_CALLBACK_DEF( FT_F26Dot6 ) + Read_CVT( EXEC_OP_ FT_ULong index ) { return CUR.cvt[index]; } - FT_CALLBACK_DEF - FT_F26Dot6 Read_CVT_Stretched( EXEC_OP_ FT_ULong index ) + FT_CALLBACK_DEF( FT_F26Dot6 ) + Read_CVT_Stretched( EXEC_OP_ FT_ULong index ) { return TT_MULFIX( CUR.cvt[index], CURRENT_Ratio() ); } - FT_CALLBACK_DEF - void Write_CVT( EXEC_OP_ FT_ULong index, - FT_F26Dot6 value ) + FT_CALLBACK_DEF( void ) + Write_CVT( EXEC_OP_ FT_ULong index, + FT_F26Dot6 value ) { CUR.cvt[index] = value; } - FT_CALLBACK_DEF - void Write_CVT_Stretched( EXEC_OP_ FT_ULong index, - FT_F26Dot6 value ) + FT_CALLBACK_DEF( void ) + Write_CVT_Stretched( EXEC_OP_ FT_ULong index, + FT_F26Dot6 value ) { CUR.cvt[index] = FT_DivFix( value, CURRENT_Ratio() ); } - FT_CALLBACK_DEF - void Move_CVT( EXEC_OP_ FT_ULong index, - FT_F26Dot6 value ) + FT_CALLBACK_DEF( void ) + Move_CVT( EXEC_OP_ FT_ULong index, + FT_F26Dot6 value ) { CUR.cvt[index] += value; } - FT_CALLBACK_DEF - void Move_CVT_Stretched( EXEC_OP_ FT_ULong index, - FT_F26Dot6 value ) + FT_CALLBACK_DEF( void ) + Move_CVT_Stretched( EXEC_OP_ FT_ULong index, + FT_F26Dot6 value ) { CUR.cvt[index] += FT_DivFix( value, CURRENT_Ratio() ); } @@ -1308,7 +1313,8 @@ /* <Note> */ /* This one could become a macro. */ /* */ - static FT_Short GetShortIns( EXEC_OP ) + static FT_Short + GetShortIns( EXEC_OP ) { /* Reading a byte stream so there is no endianess (DaveP) */ CUR.IP += 2; @@ -1333,9 +1339,9 @@ /* <Return> */ /* SUCCESS or FAILURE. */ /* */ - static - FT_Bool Ins_Goto_CodeRange( EXEC_OP_ FT_Int aRange, - FT_ULong aIP ) + static FT_Bool + Ins_Goto_CodeRange( EXEC_OP_ FT_Int aRange, + FT_ULong aIP ) { TT_CodeRange* range; @@ -1390,10 +1396,10 @@ /* <InOut> */ /* zone :: The affected glyph zone. */ /* */ - static - void Direct_Move( EXEC_OP_ TT_GlyphZone* zone, - FT_UShort point, - FT_F26Dot6 distance ) + static void + Direct_Move( EXEC_OP_ TT_GlyphZone* zone, + FT_UShort point, + FT_F26Dot6 distance ) { FT_F26Dot6 v; @@ -1452,10 +1458,10 @@ /*************************************************************************/ - static - void Direct_Move_X( EXEC_OP_ TT_GlyphZone* zone, - FT_UShort point, - FT_F26Dot6 distance ) + static void + Direct_Move_X( EXEC_OP_ TT_GlyphZone* zone, + FT_UShort point, + FT_F26Dot6 distance ) { FT_UNUSED_EXEC; @@ -1464,10 +1470,10 @@ } - static - void Direct_Move_Y( EXEC_OP_ TT_GlyphZone* zone, - FT_UShort point, - FT_F26Dot6 distance ) + static void + Direct_Move_Y( EXEC_OP_ TT_GlyphZone* zone, + FT_UShort point, + FT_F26Dot6 distance ) { FT_UNUSED_EXEC; @@ -1498,9 +1504,9 @@ /* the description of super round that we should add the compensation */ /* before rounding. */ /* */ - static - FT_F26Dot6 Round_None( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + static FT_F26Dot6 + Round_None( EXEC_OP_ FT_F26Dot6 distance, + FT_F26Dot6 compensation ) { FT_F26Dot6 val; @@ -1538,9 +1544,9 @@ /* <Return> */ /* Rounded distance. */ /* */ - static - FT_F26Dot6 Round_To_Grid( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + static FT_F26Dot6 + Round_To_Grid( EXEC_OP_ FT_F26Dot6 distance, + FT_F26Dot6 compensation ) { FT_F26Dot6 val; @@ -1582,9 +1588,9 @@ /* <Return> */ /* Rounded distance. */ /* */ - static - FT_F26Dot6 Round_To_Half_Grid( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + static FT_F26Dot6 + Round_To_Half_Grid( EXEC_OP_ FT_F26Dot6 distance, + FT_F26Dot6 compensation ) { FT_F26Dot6 val; @@ -1624,9 +1630,9 @@ /* <Return> */ /* Rounded distance. */ /* */ - static - FT_F26Dot6 Round_Down_To_Grid( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + static FT_F26Dot6 + Round_Down_To_Grid( EXEC_OP_ FT_F26Dot6 distance, + FT_F26Dot6 compensation ) { FT_F26Dot6 val; @@ -1668,9 +1674,9 @@ /* <Return> */ /* Rounded distance. */ /* */ - static - FT_F26Dot6 Round_Up_To_Grid( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + static FT_F26Dot6 + Round_Up_To_Grid( EXEC_OP_ FT_F26Dot6 distance, + FT_F26Dot6 compensation ) { FT_F26Dot6 val; @@ -1712,9 +1718,9 @@ /* <Return> */ /* Rounded distance. */ /* */ - static - FT_F26Dot6 Round_To_Double_Grid( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + static FT_F26Dot6 + Round_To_Double_Grid( EXEC_OP_ FT_F26Dot6 distance, + FT_F26Dot6 compensation ) { FT_F26Dot6 val; @@ -1762,9 +1768,9 @@ /* the description of super round that we should add the compensation */ /* before rounding. */ /* */ - static - FT_F26Dot6 Round_Super( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + static FT_F26Dot6 + Round_Super( EXEC_OP_ FT_F26Dot6 distance, + FT_F26Dot6 compensation ) { FT_F26Dot6 val; @@ -1810,9 +1816,9 @@ /* There is a separate function for Round_Super_45() as we may need */ /* greater precision. */ /* */ - static - FT_F26Dot6 Round_Super_45( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + static FT_F26Dot6 + Round_Super_45( EXEC_OP_ FT_F26Dot6 distance, + FT_F26Dot6 compensation ) { FT_F26Dot6 val; @@ -1849,8 +1855,8 @@ /* <Input> */ /* round_mode :: The rounding mode to be used. */ /* */ - static - void Compute_Round( EXEC_OP_ FT_Byte round_mode ) + static void + Compute_Round( EXEC_OP_ FT_Byte round_mode ) { switch ( round_mode ) { @@ -1901,9 +1907,9 @@ /* GridPeriod :: Grid period */ /* selector :: SROUND opcode */ /* */ - static - void SetSuperRound( EXEC_OP_ FT_F26Dot6 GridPeriod, - FT_Long selector ) + static void + SetSuperRound( EXEC_OP_ FT_F26Dot6 GridPeriod, + FT_Long selector ) { switch ( (FT_Int)( selector & 0xC0 ) ) { @@ -1972,9 +1978,9 @@ /* <Return> */ /* The distance in F26dot6 format. */ /* */ - static - FT_F26Dot6 Project( EXEC_OP_ FT_Vector* v1, - FT_Vector* v2 ) + static FT_F26Dot6 + Project( EXEC_OP_ FT_Vector* v1, + FT_Vector* v2 ) { return TT_MULDIV( v1->x - v2->x, CUR.GS.projVector.x, 0x4000 ) + TT_MULDIV( v1->y - v2->y, CUR.GS.projVector.y, 0x4000 ); @@ -1997,9 +2003,9 @@ /* <Return> */ /* The distance in F26dot6 format. */ /* */ - static - FT_F26Dot6 Dual_Project( EXEC_OP_ FT_Vector* v1, - FT_Vector* v2 ) + static FT_F26Dot6 + Dual_Project( EXEC_OP_ FT_Vector* v1, + FT_Vector* v2 ) { return TT_MULDIV( v1->x - v2->x, CUR.GS.dualVector.x, 0x4000 ) + TT_MULDIV( v1->y - v2->y, CUR.GS.dualVector.y, 0x4000 ); @@ -2022,9 +2028,9 @@ /* <Return> */ /* The distance in F26dot6 format. */ /* */ - static - FT_F26Dot6 Free_Project( EXEC_OP_ FT_Vector* v1, - FT_Vector* v2 ) + static FT_F26Dot6 + Free_Project( EXEC_OP_ FT_Vector* v1, + FT_Vector* v2 ) { return TT_MULDIV( v1->x - v2->x, CUR.GS.freeVector.x, 0x4000 ) + TT_MULDIV( v1->y - v2->y, CUR.GS.freeVector.y, 0x4000 ); @@ -2047,9 +2053,9 @@ /* <Return> */ /* The distance in F26dot6 format. */ /* */ - static - FT_F26Dot6 Project_x( EXEC_OP_ FT_Vector* v1, - FT_Vector* v2 ) + static FT_F26Dot6 + Project_x( EXEC_OP_ FT_Vector* v1, + FT_Vector* v2 ) { FT_UNUSED_EXEC; @@ -2073,9 +2079,9 @@ /* <Return> */ /* The distance in F26dot6 format. */ /* */ - static - FT_F26Dot6 Project_y( EXEC_OP_ FT_Vector* v1, - FT_Vector* v2 ) + static FT_F26Dot6 + Project_y( EXEC_OP_ FT_Vector* v1, + FT_Vector* v2 ) { FT_UNUSED_EXEC; @@ -2092,8 +2098,8 @@ /* Computes the projection and movement function pointers according */ /* to the current graphics state. */ /* */ - static - void Compute_Funcs( EXEC_OP ) + static void + Compute_Funcs( EXEC_OP ) { if ( CUR.GS.freeVector.x == 0x4000 ) { @@ -2184,10 +2190,10 @@ #ifdef FT_CONFIG_OPTION_OLD_CALCS - static - FT_Bool Normalize( EXEC_OP_ FT_F26Dot6 Vx, - FT_F26Dot6 Vy, - FT_UnitVector* R ) + static FT_Bool + Normalize( EXEC_OP_ FT_F26Dot6 Vx, + FT_F26Dot6 Vy, + FT_UnitVector* R ) { FT_F26Dot6 W; FT_Bool S1, S2; @@ -2280,128 +2286,23 @@ #else - static - FT_Bool Normalize( EXEC_OP_ FT_F26Dot6 Vx, - FT_F26Dot6 Vy, - FT_UnitVector* R ) + static FT_Bool + Normalize( EXEC_OP_ FT_F26Dot6 Vx, + FT_F26Dot6 Vy, + FT_UnitVector* R ) { - FT_F26Dot6 u, v, d; - FT_Int shift; - FT_ULong H, L, L2, hi, lo, med; - - - u = ABS( Vx ); - v = ABS( Vy ); - - if ( u < v ) - { - d = u; - u = v; - v = d; - } - - R->x = 0; - R->y = 0; - - /* check that we are not trying to normalise zero! */ - if ( u == 0 ) - return SUCCESS; - - /* compute (u*u + v*v) on 64 bits with two 32-bit registers [H:L] */ - hi = (FT_ULong)u >> 16; - lo = (FT_ULong)u & 0xFFFF; - med = hi * lo; - - H = hi * hi + ( med >> 15 ); - med <<= 17; - L = lo * lo + med; - if ( L < med ) - H++; - - hi = (FT_ULong)v >> 16; - lo = (FT_ULong)v & 0xFFFF; - med = hi * lo; - - H += hi * hi + ( med >> 15 ); - med <<= 17; - L2 = lo * lo + med; - if ( L2 < med ) - H++; - - L += L2; - if ( L < L2 ) - H++; - - /* if the value is smaller than 32-bits */ - if ( H == 0 ) - { - shift = 0; - while ( ( L & 0xC0000000L ) == 0 ) - { - L <<= 2; - shift++; - } - - d = FT_Sqrt32( L ); - R->x = (FT_F2Dot14)TT_MULDIV( Vx << shift, 0x4000, d ); - R->y = (FT_F2Dot14)TT_MULDIV( Vy << shift, 0x4000, d ); - } - /* if the value is greater than 64-bits */ - else - { - shift = 0; - while ( H ) - { - L = ( L >> 2 ) | ( H << 30 ); - H >>= 2; - shift++; - } - - d = FT_Sqrt32( L ); - R->x = (FT_F2Dot14)TT_MULDIV( Vx >> shift, 0x4000, d ); - R->y = (FT_F2Dot14)TT_MULDIV( Vy >> shift, 0x4000, d ); - } - - { - FT_ULong x, y, w; - FT_Int sx, sy; - + FT_Vector v; + FT_Angle angle; - sx = R->x >= 0 ? 1 : -1; - sy = R->y >= 0 ? 1 : -1; - x = (FT_ULong)sx * R->x; - y = (FT_ULong)sy * R->y; - - w = x * x + y * y; - - /* we now want to adjust (x,y) in order to have sqrt(w) == 0x4000 */ - /* which means 0x1000000 <= w < 0x1004000 */ - while ( w <= 0x10000000L ) - { - /* increment the smallest coordinate */ - if ( x < y ) - x++; - else - y++; + FT_UNUSED_EXEC; - w = x * x + y * y; - } + angle = FT_Atan2( Vx, Vy ); - while ( w >= 0x10040000L ) - { - /* decrement the smallest coordinate */ - if ( x < y ) - x--; - else - y--; + FT_Vector_Unit( &v, angle ); - w = x * x + y * y; - } + R->x = (short)(v.x >> 2); + R->y = (short)(v.y >> 2); - R->x = sx * x; - R->y = sy * y; - } - return SUCCESS; } @@ -2415,11 +2316,11 @@ /*************************************************************************/ - static - FT_Bool Ins_SxVTL( EXEC_OP_ FT_UShort aIdx1, - FT_UShort aIdx2, - FT_Int aOpc, - FT_UnitVector* Vec ) + static FT_Bool + Ins_SxVTL( EXEC_OP_ FT_UShort aIdx1, + FT_UShort aIdx2, + FT_Int aOpc, + FT_UnitVector* Vec ) { FT_Long A, B, C; FT_Vector* p1; @@ -2971,8 +2872,8 @@ /* Opcode range: 0x00-0x01 */ /* Stack: --> */ /* */ - static - void Ins_SVTCA( INS_ARG ) + static void + Ins_SVTCA( INS_ARG ) { DO_SVTCA } @@ -2984,8 +2885,8 @@ /* Opcode range: 0x02-0x03 */ /* Stack: --> */ /* */ - static - void Ins_SPVTCA( INS_ARG ) + static void + Ins_SPVTCA( INS_ARG ) { DO_SPVTCA } @@ -2997,8 +2898,8 @@ /* Opcode range: 0x04-0x05 */ /* Stack: --> */ /* */ - static - void Ins_SFVTCA( INS_ARG ) + static void + Ins_SFVTCA( INS_ARG ) { DO_SFVTCA } @@ -3010,8 +2911,8 @@ /* Opcode range: 0x06-0x07 */ /* Stack: uint32 uint32 --> */ /* */ - static - void Ins_SPVTL( INS_ARG ) + static void + Ins_SPVTL( INS_ARG ) { DO_SPVTL } @@ -3023,8 +2924,8 @@ /* Opcode range: 0x08-0x09 */ /* Stack: uint32 uint32 --> */ /* */ - static - void Ins_SFVTL( INS_ARG ) + static void + Ins_SFVTL( INS_ARG ) { DO_SFVTL } @@ -3036,8 +2937,8 @@ /* Opcode range: 0x0E */ /* Stack: --> */ /* */ - static - void Ins_SFVTPV( INS_ARG ) + static void + Ins_SFVTPV( INS_ARG ) { DO_SFVTPV } @@ -3049,8 +2950,8 @@ /* Opcode range: 0x0A */ /* Stack: f2.14 f2.14 --> */ /* */ - static - void Ins_SPVFS( INS_ARG ) + static void + Ins_SPVFS( INS_ARG ) { DO_SPVFS } @@ -3062,8 +2963,8 @@ /* Opcode range: 0x0B */ /* Stack: f2.14 f2.14 --> */ /* */ - static - void Ins_SFVFS( INS_ARG ) + static void + Ins_SFVFS( INS_ARG ) { DO_SFVFS } @@ -3075,8 +2976,8 @@ /* Opcode range: 0x0C */ /* Stack: ef2.14 --> ef2.14 */ /* */ - static - void Ins_GPV( INS_ARG ) + static void + Ins_GPV( INS_ARG ) { DO_GPV } @@ -3087,8 +2988,8 @@ /* Opcode range: 0x0D */ /* Stack: ef2.14 --> ef2.14 */ /* */ - static - void Ins_GFV( INS_ARG ) + static void + Ins_GFV( INS_ARG ) { DO_GFV } @@ -3100,8 +3001,8 @@ /* Opcode range: 0x10 */ /* Stack: uint32 --> */ /* */ - static - void Ins_SRP0( INS_ARG ) + static void + Ins_SRP0( INS_ARG ) { DO_SRP0 } @@ -3113,8 +3014,8 @@ /* Opcode range: 0x11 */ /* Stack: uint32 --> */ /* */ - static - void Ins_SRP1( INS_ARG ) + static void + Ins_SRP1( INS_ARG ) { DO_SRP1 } @@ -3126,8 +3027,8 @@ /* Opcode range: 0x12 */ /* Stack: uint32 --> */ /* */ - static - void Ins_SRP2( INS_ARG ) + static void + Ins_SRP2( INS_ARG ) { DO_SRP2 } @@ -3139,8 +3040,8 @@ /* Opcode range: 0x19 */ /* Stack: --> */ /* */ - static - void Ins_RTHG( INS_ARG ) + static void + Ins_RTHG( INS_ARG ) { DO_RTHG } @@ -3152,8 +3053,8 @@ /* Opcode range: 0x18 */ /* Stack: --> */ /* */ - static - void Ins_RTG( INS_ARG ) + static void + Ins_RTG( INS_ARG ) { DO_RTG } @@ -3164,8 +3065,8 @@ /* Opcode range: 0x3D */ /* Stack: --> */ /* */ - static - void Ins_RTDG( INS_ARG ) + static void + Ins_RTDG( INS_ARG ) { DO_RTDG } @@ -3176,8 +3077,8 @@ /* Opcode range: 0x7C */ /* Stack: --> */ /* */ - static - void Ins_RUTG( INS_ARG ) + static void + Ins_RUTG( INS_ARG ) { DO_RUTG } @@ -3189,8 +3090,8 @@ /* Opcode range: 0x7D */ /* Stack: --> */ /* */ - static - void Ins_RDTG( INS_ARG ) + static void + Ins_RDTG( INS_ARG ) { DO_RDTG } @@ -3202,8 +3103,8 @@ /* Opcode range: 0x7A */ /* Stack: --> */ /* */ - static - void Ins_ROFF( INS_ARG ) + static void + Ins_ROFF( INS_ARG ) { DO_ROFF } @@ -3215,8 +3116,8 @@ /* Opcode range: 0x76 */ /* Stack: Eint8 --> */ /* */ - static - void Ins_SROUND( INS_ARG ) + static void + Ins_SROUND( INS_ARG ) { DO_SROUND } @@ -3228,8 +3129,8 @@ /* Opcode range: 0x77 */ /* Stack: uint32 --> */ /* */ - static - void Ins_S45ROUND( INS_ARG ) + static void + Ins_S45ROUND( INS_ARG ) { DO_S45ROUND } @@ -3241,8 +3142,8 @@ /* Opcode range: 0x17 */ /* Stack: int32? --> */ /* */ - static - void Ins_SLOOP( INS_ARG ) + static void + Ins_SLOOP( INS_ARG ) { DO_SLOOP } @@ -3254,8 +3155,8 @@ /* Opcode range: 0x1A */ /* Stack: f26.6 --> */ /* */ - static - void Ins_SMD( INS_ARG ) + static void + Ins_SMD( INS_ARG ) { DO_SMD } @@ -3267,8 +3168,8 @@ /* Opcode range: 0x1D */ /* Stack: f26.6 --> */ /* */ - static - void Ins_SCVTCI( INS_ARG ) + static void + Ins_SCVTCI( INS_ARG ) { DO_SCVTCI } @@ -3280,8 +3181,8 @@ /* Opcode range: 0x1E */ /* Stack: f26.6 --> */ /* */ - static - void Ins_SSWCI( INS_ARG ) + static void + Ins_SSWCI( INS_ARG ) { DO_SSWCI } @@ -3293,8 +3194,8 @@ /* Opcode range: 0x1F */ /* Stack: int32? --> */ /* */ - static - void Ins_SSW( INS_ARG ) + static void + Ins_SSW( INS_ARG ) { DO_SSW } @@ -3306,8 +3207,8 @@ /* Opcode range: 0x4D */ /* Stack: --> */ /* */ - static - void Ins_FLIPON( INS_ARG ) + static void + Ins_FLIPON( INS_ARG ) { DO_FLIPON } @@ -3319,8 +3220,8 @@ /* Opcode range: 0x4E */ /* Stack: --> */ /* */ - static - void Ins_FLIPOFF( INS_ARG ) + static void + Ins_FLIPOFF( INS_ARG ) { DO_FLIPOFF } @@ -3332,8 +3233,8 @@ /* Opcode range: 0x7E */ /* Stack: uint32 --> */ /* */ - static - void Ins_SANGW( INS_ARG ) + static void + Ins_SANGW( INS_ARG ) { /* instruction not supported anymore */ } @@ -3345,8 +3246,8 @@ /* Opcode range: 0x5E */ /* Stack: uint32 --> */ /* */ - static - void Ins_SDB( INS_ARG ) + static void + Ins_SDB( INS_ARG ) { DO_SDB } @@ -3358,8 +3259,8 @@ /* Opcode range: 0x5F */ /* Stack: uint32 --> */ /* */ - static - void Ins_SDS( INS_ARG ) + static void + Ins_SDS( INS_ARG ) { DO_SDS } @@ -3371,8 +3272,8 @@ /* Opcode range: 0x4B */ /* Stack: --> Euint16 */ /* */ - static - void Ins_MPPEM( INS_ARG ) + static void + Ins_MPPEM( INS_ARG ) { DO_MPPEM } @@ -3384,8 +3285,8 @@ /* Opcode range: 0x4C */ /* Stack: --> Euint16 */ /* */ - static - void Ins_MPS( INS_ARG ) + static void + Ins_MPS( INS_ARG ) { DO_MPS } @@ -3397,8 +3298,8 @@ /* Opcode range: 0x20 */ /* Stack: StkElt --> StkElt StkElt */ /* */ - static - void Ins_DUP( INS_ARG ) + static void + Ins_DUP( INS_ARG ) { DO_DUP } @@ -3410,8 +3311,8 @@ /* Opcode range: 0x21 */ /* Stack: StkElt --> */ /* */ - static - void Ins_POP( INS_ARG ) + static void + Ins_POP( INS_ARG ) { /* nothing to do */ } @@ -3423,8 +3324,8 @@ /* Opcode range: 0x22 */ /* Stack: StkElt... --> */ /* */ - static - void Ins_CLEAR( INS_ARG ) + static void + Ins_CLEAR( INS_ARG ) { DO_CLEAR } @@ -3436,8 +3337,8 @@ /* Opcode range: 0x23 */ /* Stack: 2 * StkElt --> 2 * StkElt */ /* */ - static - void Ins_SWAP( INS_ARG ) + static void + Ins_SWAP( INS_ARG ) { DO_SWAP } @@ -3449,8 +3350,8 @@ /* Opcode range: 0x24 */ /* Stack: --> uint32 */ /* */ - static - void Ins_DEPTH( INS_ARG ) + static void + Ins_DEPTH( INS_ARG ) { DO_DEPTH } @@ -3462,8 +3363,8 @@ /* Opcode range: 0x25 */ /* Stack: int32 --> StkElt */ /* */ - static - void Ins_CINDEX( INS_ARG ) + static void + Ins_CINDEX( INS_ARG ) { DO_CINDEX } @@ -3475,8 +3376,8 @@ /* Opcode range: 0x59 */ /* Stack: --> */ /* */ - static - void Ins_EIF( INS_ARG ) + static void + Ins_EIF( INS_ARG ) { /* nothing to do */ } @@ -3488,8 +3389,8 @@ /* Opcode range: 0x78 */ /* Stack: StkElt int32 --> */ /* */ - static - void Ins_JROT( INS_ARG ) + static void + Ins_JROT( INS_ARG ) { DO_JROT } @@ -3501,8 +3402,8 @@ /* Opcode range: 0x1C */ /* Stack: int32 --> */ /* */ - static - void Ins_JMPR( INS_ARG ) + static void + Ins_JMPR( INS_ARG ) { DO_JMPR } @@ -3514,8 +3415,8 @@ /* Opcode range: 0x79 */ /* Stack: StkElt int32 --> */ /* */ - static - void Ins_JROF( INS_ARG ) + static void + Ins_JROF( INS_ARG ) { DO_JROF } @@ -3527,8 +3428,8 @@ /* Opcode range: 0x50 */ /* Stack: int32? int32? --> bool */ /* */ - static - void Ins_LT( INS_ARG ) + static void + Ins_LT( INS_ARG ) { DO_LT } @@ -3540,8 +3441,8 @@ /* Opcode range: 0x51 */ /* Stack: int32? int32? --> bool */ /* */ - static - void Ins_LTEQ( INS_ARG ) + static void + Ins_LTEQ( INS_ARG ) { DO_LTEQ } @@ -3553,8 +3454,8 @@ /* Opcode range: 0x52 */ /* Stack: int32? int32? --> bool */ /* */ - static - void Ins_GT( INS_ARG ) + static void + Ins_GT( INS_ARG ) { DO_GT } @@ -3566,8 +3467,8 @@ /* Opcode range: 0x53 */ /* Stack: int32? int32? --> bool */ /* */ - static - void Ins_GTEQ( INS_ARG ) + static void + Ins_GTEQ( INS_ARG ) { DO_GTEQ } @@ -3579,8 +3480,8 @@ /* Opcode range: 0x54 */ /* Stack: StkElt StkElt --> bool */ /* */ - static - void Ins_EQ( INS_ARG ) + static void + Ins_EQ( INS_ARG ) { DO_EQ } @@ -3592,8 +3493,8 @@ /* Opcode range: 0x55 */ /* Stack: StkElt StkElt --> bool */ /* */ - static - void Ins_NEQ( INS_ARG ) + static void + Ins_NEQ( INS_ARG ) { DO_NEQ } @@ -3605,8 +3506,8 @@ /* Opcode range: 0x56 */ /* Stack: f26.6 --> bool */ /* */ - static - void Ins_ODD( INS_ARG ) + static void + Ins_ODD( INS_ARG ) { DO_ODD } @@ -3618,8 +3519,8 @@ /* Opcode range: 0x57 */ /* Stack: f26.6 --> bool */ /* */ - static - void Ins_EVEN( INS_ARG ) + static void + Ins_EVEN( INS_ARG ) { DO_EVEN } @@ -3631,8 +3532,8 @@ /* Opcode range: 0x5A */ /* Stack: uint32 uint32 --> uint32 */ /* */ - static - void Ins_AND( INS_ARG ) + static void + Ins_AND( INS_ARG ) { DO_AND } @@ -3644,8 +3545,8 @@ /* Opcode range: 0x5B */ /* Stack: uint32 uint32 --> uint32 */ /* */ - static - void Ins_OR( INS_ARG ) + static void + Ins_OR( INS_ARG ) { DO_OR } @@ -3657,8 +3558,8 @@ /* Opcode range: 0x5C */ /* Stack: StkElt --> uint32 */ /* */ - static - void Ins_NOT( INS_ARG ) + static void + Ins_NOT( INS_ARG ) { DO_NOT } @@ -3670,8 +3571,8 @@ /* Opcode range: 0x60 */ /* Stack: f26.6 f26.6 --> f26.6 */ /* */ - static - void Ins_ADD( INS_ARG ) + static void + Ins_ADD( INS_ARG ) { DO_ADD } @@ -3683,8 +3584,8 @@ /* Opcode range: 0x61 */ /* Stack: f26.6 f26.6 --> f26.6 */ /* */ - static - void Ins_SUB( INS_ARG ) + static void + Ins_SUB( INS_ARG ) { DO_SUB } @@ -3696,8 +3597,8 @@ /* Opcode range: 0x62 */ /* Stack: f26.6 f26.6 --> f26.6 */ /* */ - static - void Ins_DIV( INS_ARG ) + static void + Ins_DIV( INS_ARG ) { DO_DIV } @@ -3709,8 +3610,8 @@ /* Opcode range: 0x63 */ /* Stack: f26.6 f26.6 --> f26.6 */ /* */ - static - void Ins_MUL( INS_ARG ) + static void + Ins_MUL( INS_ARG ) { DO_MUL } @@ -3722,8 +3623,8 @@ /* Opcode range: 0x64 */ /* Stack: f26.6 --> f26.6 */ /* */ - static - void Ins_ABS( INS_ARG ) + static void + Ins_ABS( INS_ARG ) { DO_ABS } @@ -3735,8 +3636,8 @@ /* Opcode range: 0x65 */ /* Stack: f26.6 --> f26.6 */ /* */ - static - void Ins_NEG( INS_ARG ) + static void + Ins_NEG( INS_ARG ) { DO_NEG } @@ -3748,8 +3649,8 @@ /* Opcode range: 0x66 */ /* Stack: f26.6 --> f26.6 */ /* */ - static - void Ins_FLOOR( INS_ARG ) + static void + Ins_FLOOR( INS_ARG ) { DO_FLOOR } @@ -3761,8 +3662,8 @@ /* Opcode range: 0x67 */ /* Stack: f26.6 --> f26.6 */ /* */ - static - void Ins_CEILING( INS_ARG ) + static void + Ins_CEILING( INS_ARG ) { DO_CEILING } @@ -3774,8 +3675,8 @@ /* Opcode range: 0x43 */ /* Stack: uint32 --> uint32 */ /* */ - static - void Ins_RS( INS_ARG ) + static void + Ins_RS( INS_ARG ) { DO_RS } @@ -3787,8 +3688,8 @@ /* Opcode range: 0x42 */ /* Stack: uint32 uint32 --> */ /* */ - static - void Ins_WS( INS_ARG ) + static void + Ins_WS( INS_ARG ) { DO_WS } @@ -3800,8 +3701,8 @@ /* Opcode range: 0x44 */ /* Stack: f26.6 uint32 --> */ /* */ - static - void Ins_WCVTP( INS_ARG ) + static void + Ins_WCVTP( INS_ARG ) { DO_WCVTP } @@ -3813,8 +3714,8 @@ /* Opcode range: 0x70 */ /* Stack: uint32 uint32 --> */ /* */ - static - void Ins_WCVTF( INS_ARG ) + static void + Ins_WCVTF( INS_ARG ) { DO_WCVTF } @@ -3826,8 +3727,8 @@ /* Opcode range: 0x45 */ /* Stack: uint32 --> f26.6 */ /* */ - static - void Ins_RCVT( INS_ARG ) + static void + Ins_RCVT( INS_ARG ) { DO_RCVT } @@ -3839,8 +3740,8 @@ /* Opcode range: 0x7F */ /* Stack: uint32 --> */ /* */ - static - void Ins_AA( INS_ARG ) + static void + Ins_AA( INS_ARG ) { /* intentionally no longer supported */ } @@ -3854,8 +3755,8 @@ /* */ /* Note: The original instruction pops a value from the stack. */ /* */ - static - void Ins_DEBUG( INS_ARG ) + static void + Ins_DEBUG( INS_ARG ) { DO_DEBUG } @@ -3867,8 +3768,8 @@ /* Opcode range: 0x68-0x6B */ /* Stack: f26.6 --> f26.6 */ /* */ - static - void Ins_ROUND( INS_ARG ) + static void + Ins_ROUND( INS_ARG ) { DO_ROUND } @@ -3880,8 +3781,8 @@ /* Opcode range: 0x6C-0x6F */ /* Stack: f26.6 --> f26.6 */ /* */ - static - void Ins_NROUND( INS_ARG ) + static void + Ins_NROUND( INS_ARG ) { DO_NROUND } @@ -3893,8 +3794,8 @@ /* Opcode range: 0x68 */ /* Stack: int32? int32? --> int32 */ /* */ - static - void Ins_MAX( INS_ARG ) + static void + Ins_MAX( INS_ARG ) { DO_MAX } @@ -3906,8 +3807,8 @@ /* Opcode range: 0x69 */ /* Stack: int32? int32? --> int32 */ /* */ - static - void Ins_MIN( INS_ARG ) + static void + Ins_MIN( INS_ARG ) { DO_MIN } @@ -3929,8 +3830,8 @@ /* Opcode range: 0x26 */ /* Stack: int32? --> StkElt */ /* */ - static - void Ins_MINDEX( INS_ARG ) + static void + Ins_MINDEX( INS_ARG ) { FT_Long L, K; @@ -3959,8 +3860,8 @@ /* Opcode range: 0x8A */ /* Stack: 3 * StkElt --> 3 * StkElt */ /* */ - static - void Ins_ROLL( INS_ARG ) + static void + Ins_ROLL( INS_ARG ) { FT_Long A, B, C; @@ -3986,8 +3887,8 @@ /*************************************************************************/ - static - FT_Bool SkipCode( EXEC_OP ) + static FT_Bool + SkipCode( EXEC_OP ) { CUR.IP += CUR.length; @@ -4019,8 +3920,8 @@ /* Opcode range: 0x58 */ /* Stack: StkElt --> */ /* */ - static - void Ins_IF( INS_ARG ) + static void + Ins_IF( INS_ARG ) { FT_Int nIfs; FT_Bool Out; @@ -4044,12 +3945,12 @@ break; case 0x1B: /* ELSE */ - Out = ( nIfs == 1 ); + Out = FT_BOOL( nIfs == 1 ); break; case 0x59: /* EIF */ nIfs--; - Out = ( nIfs == 0 ); + Out = FT_BOOL( nIfs == 0 ); break; } } while ( Out == 0 ); @@ -4062,8 +3963,8 @@ /* Opcode range: 0x1B */ /* Stack: --> */ /* */ - static - void Ins_ELSE( INS_ARG ) + static void + Ins_ELSE( INS_ARG ) { FT_Int nIfs; @@ -4106,8 +4007,8 @@ /* Opcode range: 0x2C */ /* Stack: uint32 --> */ /* */ - static - void Ins_FDEF( INS_ARG ) + static void + Ins_FDEF( INS_ARG ) { FT_ULong n; TT_DefRecord* rec; @@ -4171,8 +4072,8 @@ /* Opcode range: 0x2D */ /* Stack: --> */ /* */ - static - void Ins_ENDF( INS_ARG ) + static void + Ins_ENDF( INS_ARG ) { TT_CallRec* pRec; @@ -4219,8 +4120,8 @@ /* Opcode range: 0x2B */ /* Stack: uint32? --> */ /* */ - static - void Ins_CALL( INS_ARG ) + static void + Ins_CALL( INS_ARG ) { FT_ULong F; TT_CallRec* pCrec; @@ -4296,8 +4197,8 @@ /* Opcode range: 0x2A */ /* Stack: uint32? Eint16? --> */ /* */ - static - void Ins_LOOPCALL( INS_ARG ) + static void + Ins_LOOPCALL( INS_ARG ) { FT_ULong F; TT_CallRec* pCrec; @@ -4374,8 +4275,8 @@ /* Opcode range: 0x89 */ /* Stack: Eint8 --> */ /* */ - static - void Ins_IDEF( INS_ARG ) + static void + Ins_IDEF( INS_ARG ) { TT_DefRecord* def; TT_DefRecord* limit; @@ -4442,8 +4343,8 @@ /* Opcode range: 0x40 */ /* Stack: --> uint32... */ /* */ - static - void Ins_NPUSHB( INS_ARG ) + static void + Ins_NPUSHB( INS_ARG ) { FT_UShort L, K; @@ -4469,8 +4370,8 @@ /* Opcode range: 0x41 */ /* Stack: --> int32... */ /* */ - static - void Ins_NPUSHW( INS_ARG ) + static void + Ins_NPUSHW( INS_ARG ) { FT_UShort L, K; @@ -4499,13 +4400,13 @@ /* Opcode range: 0xB0-0xB7 */ /* Stack: --> uint32... */ /* */ - static - void Ins_PUSHB( INS_ARG ) + static void + Ins_PUSHB( INS_ARG ) { FT_UShort L, K; - L = (FT_UShort)CUR.opcode - 0xB0 + 1; + L = (FT_UShort)(CUR.opcode - 0xB0 + 1); if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) ) { @@ -4524,13 +4425,13 @@ /* Opcode range: 0xB8-0xBF */ /* Stack: --> int32... */ /* */ - static - void Ins_PUSHW( INS_ARG ) + static void + Ins_PUSHW( INS_ARG ) { FT_UShort L, K; - L = (FT_UShort)CUR.opcode - 0xB8 + 1; + L = (FT_UShort)(CUR.opcode - 0xB8 + 1); if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) ) { @@ -4565,7 +4466,8 @@ /* BULLSHIT: Measures from the original glyph must be taken along the */ /* dual projection vector! */ /* */ - static void Ins_GC( INS_ARG ) + static void + Ins_GC( INS_ARG ) { FT_ULong L; FT_F26Dot6 R; @@ -4605,8 +4507,8 @@ /* */ /* OA := OA + ( value - OA.p )/( f.p ) * f */ /* */ - static - void Ins_SCFS( INS_ARG ) + static void + Ins_SCFS( INS_ARG ) { FT_Long K; FT_UShort L; @@ -4647,8 +4549,8 @@ /* */ /* Third one: `zp0 - zp1', and not `zp2 - zp1! */ /* */ - static - void Ins_MD( INS_ARG ) + static void + Ins_MD( INS_ARG ) { FT_UShort K, L; FT_F26Dot6 D; @@ -4685,8 +4587,8 @@ /* Opcode range: 0x86-0x87 */ /* Stack: uint32 uint32 --> */ /* */ - static - void Ins_SDPVTL( INS_ARG ) + static void + Ins_SDPVTL( INS_ARG ) { FT_Long A, B, C; FT_UShort p1, p2; /* was FT_Int in pas type ERROR */ @@ -4749,8 +4651,8 @@ /* Opcode range: 0x13 */ /* Stack: uint32 --> */ /* */ - static - void Ins_SZP0( INS_ARG ) + static void + Ins_SZP0( INS_ARG ) { switch ( (FT_Int)args[0] ) { @@ -4778,8 +4680,8 @@ /* Opcode range: 0x14 */ /* Stack: uint32 --> */ /* */ - static - void Ins_SZP1( INS_ARG ) + static void + Ins_SZP1( INS_ARG ) { switch ( (FT_Int)args[0] ) { @@ -4807,8 +4709,8 @@ /* Opcode range: 0x15 */ /* Stack: uint32 --> */ /* */ - static - void Ins_SZP2( INS_ARG ) + static void + Ins_SZP2( INS_ARG ) { switch ( (FT_Int)args[0] ) { @@ -4836,8 +4738,8 @@ /* Opcode range: 0x16 */ /* Stack: uint32 --> */ /* */ - static - void Ins_SZPS( INS_ARG ) + static void + Ins_SZPS( INS_ARG ) { switch ( (FT_Int)args[0] ) { @@ -4870,8 +4772,8 @@ /* Opcode range: 0x8e */ /* Stack: int32 int32 --> */ /* */ - static - void Ins_INSTCTRL( INS_ARG ) + static void + Ins_INSTCTRL( INS_ARG ) { FT_Long K, L; @@ -4889,8 +4791,8 @@ if ( L != 0 ) L = K; - CUR.GS.instruct_control = - (FT_Byte)( CUR.GS.instruct_control & ~(FT_Byte)K ) | (FT_Byte)L; + CUR.GS.instruct_control = FT_BOOL( + ( (FT_Byte)CUR.GS.instruct_control & ~(FT_Byte)K ) | (FT_Byte)L ); } @@ -4900,8 +4802,8 @@ /* Opcode range: 0x85 */ /* Stack: uint32? --> */ /* */ - static - void Ins_SCANCTRL( INS_ARG ) + static void + Ins_SCANCTRL( INS_ARG ) { FT_Int A; @@ -4943,7 +4845,7 @@ if ( (args[0] & 0x2000) != 0 && CUR.tt_metrics.stretched ) CUR.GS.scan_control = FALSE; -} + } /*************************************************************************/ @@ -4952,8 +4854,8 @@ /* Opcode range: 0x8D */ /* Stack: uint32? --> */ /* */ - static - void Ins_SCANTYPE( INS_ARG ) + static void + Ins_SCANTYPE( INS_ARG ) { /* for compatibility with future enhancements, */ /* we must ignore new modes */ @@ -4983,8 +4885,8 @@ /* Opcode range: 0x80 */ /* Stack: uint32... --> */ /* */ - static - void Ins_FLIPPT( INS_ARG ) + static void + Ins_FLIPPT( INS_ARG ) { FT_UShort point; @@ -5028,8 +4930,8 @@ /* Opcode range: 0x81 */ /* Stack: uint32 uint32 --> */ /* */ - static - void Ins_FLIPRGON( INS_ARG ) + static void + Ins_FLIPRGON( INS_ARG ) { FT_UShort I, K, L; @@ -5056,8 +4958,8 @@ /* Opcode range: 0x82 */ /* Stack: uint32 uint32 --> */ /* */ - static - void Ins_FLIPRGOFF( INS_ARG ) + static void + Ins_FLIPRGOFF( INS_ARG ) { FT_UShort I, K, L; @@ -5078,11 +4980,11 @@ } - static - FT_Bool Compute_Point_Displacement( EXEC_OP_ FT_F26Dot6* x, - FT_F26Dot6* y, - TT_GlyphZone* zone, - FT_UShort* refp ) + static FT_Bool + Compute_Point_Displacement( EXEC_OP_ FT_F26Dot6* x, + FT_F26Dot6* y, + TT_GlyphZone* zone, + FT_UShort* refp ) { TT_GlyphZone zp; FT_UShort p; @@ -5132,11 +5034,11 @@ } - static - void Move_Zp2_Point( EXEC_OP_ FT_UShort point, - FT_F26Dot6 dx, - FT_F26Dot6 dy, - FT_Bool touch ) + static void + Move_Zp2_Point( EXEC_OP_ FT_UShort point, + FT_F26Dot6 dx, + FT_F26Dot6 dy, + FT_Bool touch ) { if ( CUR.GS.freeVector.x != 0 ) { @@ -5160,8 +5062,8 @@ /* Opcode range: 0x32-0x33 */ /* Stack: uint32... --> */ /* */ - static - void Ins_SHP( INS_ARG ) + static void + Ins_SHP( INS_ARG ) { TT_GlyphZone zp; FT_UShort refp; @@ -5213,8 +5115,8 @@ /* Opcode range: 0x34-35 */ /* Stack: uint32 --> */ /* */ - static - void Ins_SHC( INS_ARG ) + static void + Ins_SHC( INS_ARG ) { TT_GlyphZone zp; FT_UShort refp; @@ -5240,7 +5142,7 @@ if ( contour == 0 ) first_point = 0; else - first_point = CUR.pts.contours[contour - 1] + 1; + first_point = (FT_UShort)(CUR.pts.contours[contour - 1] + 1); last_point = CUR.pts.contours[contour]; @@ -5249,7 +5151,7 @@ if ( last_point > CUR.zp2.n_points ) { if ( CUR.zp2.n_points > 0 ) - last_point = CUR.zp2.n_points - 1; + last_point = (FT_UShort)(CUR.zp2.n_points - 1); else last_point = 0; } @@ -5269,8 +5171,8 @@ /* Opcode range: 0x36-37 */ /* Stack: uint32 --> */ /* */ - static - void Ins_SHZ( INS_ARG ) + static void + Ins_SHZ( INS_ARG ) { TT_GlyphZone zp; FT_UShort refp; @@ -5291,7 +5193,7 @@ return; if ( CUR.zp2.n_points > 0 ) - last_point = CUR.zp2.n_points - 1; + last_point = (FT_UShort)(CUR.zp2.n_points - 1); else last_point = 0; @@ -5310,8 +5212,8 @@ /* Opcode range: 0x38 */ /* Stack: f26.6 uint32... --> */ /* */ - static - void Ins_SHPIX( INS_ARG ) + static void + Ins_SHPIX( INS_ARG ) { FT_F26Dot6 dx, dy; FT_UShort point; @@ -5361,8 +5263,8 @@ /* Opcode range: 0x3A-0x3B */ /* Stack: f26.6 uint32 --> */ /* */ - static - void Ins_MSIRP( INS_ARG ) + static void + Ins_MSIRP( INS_ARG ) { FT_UShort point; FT_F26Dot6 distance; @@ -5404,8 +5306,8 @@ /* Opcode range: 0x2E-0x2F */ /* Stack: uint32 --> */ /* */ - static - void Ins_MDAP( INS_ARG ) + static void + Ins_MDAP( INS_ARG ) { FT_UShort point; FT_F26Dot6 cur_dist, @@ -5445,8 +5347,8 @@ /* Opcode range: 0x3E-0x3F */ /* Stack: uint32 uint32 --> */ /* */ - static - void Ins_MIAP( INS_ARG ) + static void + Ins_MIAP( INS_ARG ) { FT_ULong cvtEntry; FT_UShort point; @@ -5521,8 +5423,8 @@ /* Opcode range: 0xC0-0xDF */ /* Stack: uint32 --> */ /* */ - static - void Ins_MDRP( INS_ARG ) + static void + Ins_MDRP( INS_ARG ) { FT_UShort point; FT_F26Dot6 org_dist, distance; @@ -5602,8 +5504,8 @@ /* Opcode range: 0xE0-0xFF */ /* Stack: int32? uint32 --> */ /* */ - static - void Ins_MIRP( INS_ARG ) + static void + Ins_MIRP( INS_ARG ) { FT_UShort point; FT_ULong cvtEntry; @@ -5729,8 +5631,8 @@ /* Opcode range: 0x3C */ /* Stack: uint32 uint32... --> */ /* */ - static - void Ins_ALIGNRP( INS_ARG ) + static void + Ins_ALIGNRP( INS_ARG ) { FT_UShort point; FT_F26Dot6 distance; @@ -5782,8 +5684,8 @@ /* Opcode range: 0x0F */ /* Stack: 5 * uint32 --> */ /* */ - static - void Ins_ISECT( INS_ARG ) + static void + Ins_ISECT( INS_ARG ) { FT_UShort point, a0, a1, @@ -5864,8 +5766,8 @@ /* Opcode range: 0x27 */ /* Stack: uint32 uint32 --> */ /* */ - static - void Ins_ALIGNPTS( INS_ARG ) + static void + Ins_ALIGNPTS( INS_ARG ) { FT_UShort p1, p2; FT_F26Dot6 distance; @@ -5896,8 +5798,8 @@ /* Opcode range: 0x39 */ /* Stack: uint32... --> */ /* */ - static - void Ins_IP( INS_ARG ) + static void + Ins_IP( INS_ARG ) { FT_F26Dot6 org_a, org_b, org_x, cur_a, cur_b, cur_x, @@ -5986,8 +5888,8 @@ /* Opcode range: 0x29 */ /* Stack: uint32 --> */ /* */ - static - void Ins_UTP( INS_ARG ) + static void + Ins_UTP( INS_ARG ) { FT_UShort point; FT_Byte mask; @@ -6022,11 +5924,11 @@ }; - static - void Shift( FT_UInt p1, - FT_UInt p2, - FT_UInt p, - struct LOC_Ins_IUP* LINK ) + static void + Shift( FT_UInt p1, + FT_UInt p2, + FT_UInt p, + struct LOC_Ins_IUP* LINK ) { FT_UInt i; FT_F26Dot6 x; @@ -6042,12 +5944,12 @@ } - static - void Interp( FT_UInt p1, - FT_UInt p2, - FT_UInt ref1, - FT_UInt ref2, - struct LOC_Ins_IUP* LINK ) + static void + Interp( FT_UInt p1, + FT_UInt p2, + FT_UInt ref1, + FT_UInt ref2, + struct LOC_Ins_IUP* LINK ) { FT_UInt i; FT_F26Dot6 x, x1, x2, d1, d2; @@ -6128,8 +6030,8 @@ /* Opcode range: 0x30-0x31 */ /* Stack: --> */ /* */ - static - void Ins_IUP( INS_ARG ) + static void + Ins_IUP( INS_ARG ) { struct LOC_Ins_IUP V; FT_Byte mask; @@ -6222,8 +6124,8 @@ /* Opcode range: 0x5D,0x71,0x72 */ /* Stack: uint32 (2 * uint32)... --> */ /* */ - static - void Ins_DELTAP( INS_ARG ) + static void + Ins_DELTAP( INS_ARG ) { FT_ULong k, nump; FT_UShort A; @@ -6298,8 +6200,8 @@ /* Opcode range: 0x73,0x74,0x75 */ /* Stack: uint32 (2 * uint32)... --> */ /* */ - static - void Ins_DELTAC( INS_ARG ) + static void + Ins_DELTAC( INS_ARG ) { FT_ULong nump, k; FT_ULong A, C; @@ -6380,8 +6282,8 @@ /* */ /* XXX: According to Apple specs, bits 1 & 2 of the argument ought to be */ /* consulted before rotated/stretched info is returned. */ - static - void Ins_GETINFO( INS_ARG ) + static void + Ins_GETINFO( INS_ARG ) { FT_Long K; @@ -6405,8 +6307,8 @@ } - static - void Ins_UNKNOWN( INS_ARG ) + static void + Ins_UNKNOWN( INS_ARG ) { TT_DefRecord* def = CUR.IDefs; TT_DefRecord* limit = def + CUR.numIDefs; @@ -6765,7 +6667,8 @@ /* documentation is in ttinterp.h */ - FT_EXPORT_DEF( FT_Error ) TT_RunIns( TT_ExecContext exc ) + FT_EXPORT_DEF( FT_Error ) + TT_RunIns( TT_ExecContext exc ) { FT_Long ins_counter = 0; /* executed instructions counter */ @@ -6857,8 +6760,8 @@ FT_Short AA, BB; - AA = (FT_Short)( opcode & 1 ) << 14; - BB = AA ^ (FT_Short)0x4000; + AA = (FT_Short)( ( opcode & 1 ) << 14 ); + BB = (FT_Short)( AA ^ 0x4000 ); if ( opcode < 4 ) { Index: xc/extras/freetype2/src/truetype/ttinterp.h diff -u xc/extras/freetype2/src/truetype/ttinterp.h:1.1.1.2 xc/extras/freetype2/src/truetype/ttinterp.h:1.1.1.3 --- xc/extras/freetype2/src/truetype/ttinterp.h:1.1.1.2 Tue May 15 23:45:42 2001 +++ xc/extras/freetype2/src/truetype/ttinterp.h Sun Dec 16 12:49:36 2001 @@ -4,7 +4,7 @@ /* */ /* TrueType bytecode interpreter (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -67,25 +67,30 @@ /*************************************************************************/ /* Rounding function */ - typedef FT_F26Dot6 (*TT_Round_Func)( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ); + typedef FT_F26Dot6 + (*TT_Round_Func)( EXEC_OP_ FT_F26Dot6 distance, + FT_F26Dot6 compensation ); /* Point displacement along the freedom vector routine */ - typedef void (*TT_Move_Func)( EXEC_OP_ TT_GlyphZone* zone, - FT_UInt point, - FT_F26Dot6 distance ); + typedef void + (*TT_Move_Func)( EXEC_OP_ TT_GlyphZone* zone, + FT_UShort point, + FT_F26Dot6 distance ); /* Distance projection along one of the projection vectors */ - typedef FT_F26Dot6 (*TT_Project_Func)( EXEC_OP_ FT_Vector* v1, - FT_Vector* v2 ); + typedef FT_F26Dot6 + (*TT_Project_Func)( EXEC_OP_ FT_Vector* v1, + FT_Vector* v2 ); /* reading a cvt value. Take care of non-square pixels if necessary */ - typedef FT_F26Dot6 (*TT_Get_CVT_Func)( EXEC_OP_ FT_ULong index ); + typedef FT_F26Dot6 + (*TT_Get_CVT_Func)( EXEC_OP_ FT_ULong index ); /* setting or moving a cvt value. Take care of non-square pixels */ /* if necessary */ - typedef void (*TT_Set_CVT_Func)( EXEC_OP_ FT_ULong index, - FT_F26Dot6 value ); + typedef void + (*TT_Set_CVT_Func)( EXEC_OP_ FT_ULong index, + FT_F26Dot6 value ); /*************************************************************************/ @@ -219,20 +224,20 @@ extern const TT_GraphicsState tt_default_graphics_state; - FT_LOCAL - FT_Error TT_Goto_CodeRange( TT_ExecContext exec, - FT_Int range, - FT_Long IP ); - - FT_LOCAL - FT_Error TT_Set_CodeRange( TT_ExecContext exec, - FT_Int range, - void* base, - FT_Long length ); - - FT_LOCAL - FT_Error TT_Clear_CodeRange( TT_ExecContext exec, - FT_Int range ); + FT_LOCAL FT_Error + TT_Goto_CodeRange( TT_ExecContext exec, + FT_Int range, + FT_Long IP ); + + FT_LOCAL FT_Error + TT_Set_CodeRange( TT_ExecContext exec, + FT_Int range, + void* base, + FT_Long length ); + + FT_LOCAL FT_Error + TT_Clear_CodeRange( TT_ExecContext exec, + FT_Int range ); /*************************************************************************/ @@ -254,28 +259,29 @@ /* <Note> */ /* Only the glyph loader and debugger should call this function. */ /* */ - FT_EXPORT( TT_ExecContext ) TT_New_Context( TT_Face face ); + FT_EXPORT( TT_ExecContext ) + TT_New_Context( TT_Face face ); - FT_LOCAL - FT_Error TT_Done_Context( TT_ExecContext exec ); + FT_LOCAL FT_Error + TT_Done_Context( TT_ExecContext exec ); - FT_LOCAL - FT_Error TT_Destroy_Context( TT_ExecContext exec, - FT_Memory memory ); + FT_LOCAL FT_Error + TT_Destroy_Context( TT_ExecContext exec, + FT_Memory memory ); - FT_LOCAL - FT_Error TT_Load_Context( TT_ExecContext exec, - TT_Face face, - TT_Size size ); + FT_LOCAL FT_Error + TT_Load_Context( TT_ExecContext exec, + TT_Face face, + TT_Size size ); - FT_LOCAL - FT_Error TT_Save_Context( TT_ExecContext exec, - TT_Size ins ); + FT_LOCAL FT_Error + TT_Save_Context( TT_ExecContext exec, + TT_Size ins ); - FT_LOCAL - FT_Error TT_Run_Context( TT_ExecContext exec, - FT_Bool debug ); + FT_LOCAL FT_Error + TT_Run_Context( TT_ExecContext exec, + FT_Bool debug ); /*************************************************************************/ @@ -299,7 +305,8 @@ /* This function is publicly exported because it is directly */ /* invoked by the TrueType debugger. */ /* */ - FT_EXPORT( FT_Error ) TT_RunIns( TT_ExecContext exec ); + FT_EXPORT( FT_Error ) + TT_RunIns( TT_ExecContext exec ); FT_END_HEADER Index: xc/extras/freetype2/src/truetype/ttobjs.c diff -u xc/extras/freetype2/src/truetype/ttobjs.c:1.1.1.2 xc/extras/freetype2/src/truetype/ttobjs.c:1.1.1.4 --- xc/extras/freetype2/src/truetype/ttobjs.c:1.1.1.2 Tue May 15 23:45:41 2001 +++ xc/extras/freetype2/src/truetype/ttobjs.c Sun Dec 16 12:49:36 2001 @@ -4,7 +4,7 @@ /* */ /* Objects manager (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -24,11 +24,12 @@ #include FT_TRUETYPE_TAGS_H #include FT_INTERNAL_SFNT_H #include FT_INTERNAL_POSTSCRIPT_NAMES_H -#include FT_INTERNAL_TRUETYPE_ERRORS_H #include "ttgload.h" #include "ttpload.h" +#include "tterrors.h" + #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER #include "ttinterp.h" #endif @@ -64,8 +65,8 @@ /* <Input> */ /* zone :: A pointer to the target glyph zone. */ /* */ - FT_LOCAL_DEF - void TT_Done_GlyphZone( TT_GlyphZone* zone ) + FT_LOCAL_DEF void + TT_Done_GlyphZone( TT_GlyphZone* zone ) { FT_Memory memory = zone->memory; @@ -101,11 +102,11 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_New_GlyphZone( FT_Memory memory, - FT_UShort maxPoints, - FT_Short maxContours, - TT_GlyphZone* zone ) + FT_LOCAL_DEF FT_Error + TT_New_GlyphZone( FT_Memory memory, + FT_UShort maxPoints, + FT_Short maxContours, + TT_GlyphZone* zone ) { FT_Error error; @@ -152,12 +153,12 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL - FT_Error TT_Init_Face( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) + FT_LOCAL_DEF FT_Error + TT_Init_Face( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ) { FT_Error error; FT_Library library; @@ -207,7 +208,7 @@ return error; Bad_Format: - error = FT_Err_Unknown_File_Format; + error = TT_Err_Unknown_File_Format; goto Exit; } @@ -223,8 +224,8 @@ /* <Input> */ /* face :: A pointer to the face object to destroy. */ /* */ - FT_LOCAL - void TT_Done_Face( TT_Face face ) + FT_LOCAL_DEF void + TT_Done_Face( TT_Face face ) { FT_Memory memory = face->root.memory; FT_Stream stream = face->root.stream; @@ -276,8 +277,8 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL - FT_Error TT_Init_Size( TT_Size size ) + FT_LOCAL_DEF FT_Error + TT_Init_Size( TT_Size size ) { FT_Error error = TT_Err_Ok; @@ -463,8 +464,8 @@ /* <Input> */ /* size :: A handle to the target size object. */ /* */ - FT_LOCAL_DEF - void TT_Done_Size( TT_Size size ) + FT_LOCAL_DEF void + TT_Done_Size( TT_Size size ) { #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER @@ -518,8 +519,8 @@ /* <Input> */ /* size :: A handle to the target size object. */ /* */ - static - FT_Error Reset_Outline_Size( TT_Size size ) + static FT_Error + Reset_Outline_Size( TT_Size size ) { TT_Face face; FT_Error error = TT_Err_Ok; @@ -669,8 +670,8 @@ /* <Input> */ /* size :: A handle to the target size object. */ /* */ - static - FT_Error Reset_SBit_Size( TT_Size size ) + static FT_Error + Reset_SBit_Size( TT_Size size ) { TT_Face face; FT_Error error = TT_Err_Ok; @@ -698,8 +699,8 @@ if ( !error ) { TT_SBit_Strike* strike = face->sbit_strikes + strike_index; - - + + sbit_metrics->x_ppem = metrics->x_ppem; sbit_metrics->y_ppem = metrics->y_ppem; #if 0 @@ -710,14 +711,14 @@ sbit_metrics->x_scale = 1 << 16; sbit_metrics->y_scale = 1 << 16; #endif - + sbit_metrics->ascender = strike->hori.ascender << 6; sbit_metrics->descender = strike->hori.descender << 6; - + /* XXX: Is this correct? */ sbit_metrics->height = sbit_metrics->ascender - sbit_metrics->descender; - + /* XXX: Is this correct? */ sbit_metrics->max_advance = ( strike->hori.min_origin_SB + strike->hori.max_width + @@ -728,7 +729,7 @@ else { size->strike_index = 0xFFFF; - + sbit_metrics->x_ppem = 0; sbit_metrics->y_ppem = 0; sbit_metrics->ascender = 0; @@ -755,8 +756,8 @@ /* <Input> */ /* size :: A handle to the target size object. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Reset_Size( TT_Size size ) + FT_LOCAL_DEF FT_Error + TT_Reset_Size( TT_Size size ) { FT_Face face; FT_Error error = TT_Err_Ok; @@ -807,8 +808,8 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Init_Driver( TT_Driver driver ) + FT_LOCAL_DEF FT_Error + TT_Init_Driver( TT_Driver driver ) { FT_Error error; @@ -838,8 +839,8 @@ /* <Input> */ /* driver :: A handle to the target TrueType driver. */ /* */ - FT_LOCAL_DEF - void TT_Done_Driver( TT_Driver driver ) + FT_LOCAL_DEF void + TT_Done_Driver( TT_Driver driver ) { /* destroy extensions registry if needed */ Index: xc/extras/freetype2/src/truetype/ttobjs.h diff -u xc/extras/freetype2/src/truetype/ttobjs.h:1.1.1.2 xc/extras/freetype2/src/truetype/ttobjs.h:1.1.1.4 --- xc/extras/freetype2/src/truetype/ttobjs.h:1.1.1.2 Tue May 15 23:45:41 2001 +++ xc/extras/freetype2/src/truetype/ttobjs.h Sun Dec 16 12:49:36 2001 @@ -4,7 +4,7 @@ /* */ /* Objects manager (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,7 +23,6 @@ #include <ft2build.h> #include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_TRUETYPE_TYPES_H -#include FT_INTERNAL_TRUETYPE_ERRORS_H FT_BEGIN_HEADER @@ -108,14 +107,14 @@ #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - FT_LOCAL - void TT_Done_GlyphZone( TT_GlyphZone* zone ); + FT_LOCAL void + TT_Done_GlyphZone( TT_GlyphZone* zone ); - FT_LOCAL - FT_Error TT_New_GlyphZone( FT_Memory memory, - FT_UShort maxPoints, - FT_Short maxContours, - TT_GlyphZone* zone ); + FT_LOCAL FT_Error + TT_New_GlyphZone( FT_Memory memory, + FT_UShort maxPoints, + FT_Short maxContours, + TT_GlyphZone* zone ); #endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ @@ -379,40 +378,40 @@ /* */ /* Face functions */ /* */ - FT_LOCAL - FT_Error TT_Init_Face( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); + FT_LOCAL FT_Error + TT_Init_Face( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); - FT_LOCAL - void TT_Done_Face( TT_Face face ); + FT_LOCAL void + TT_Done_Face( TT_Face face ); /*************************************************************************/ /* */ /* Size functions */ /* */ - FT_LOCAL - FT_Error TT_Init_Size( TT_Size size ); + FT_LOCAL FT_Error + TT_Init_Size( TT_Size size ); - FT_LOCAL - void TT_Done_Size( TT_Size size ); + FT_LOCAL void + TT_Done_Size( TT_Size size ); - FT_LOCAL - FT_Error TT_Reset_Size( TT_Size size ); + FT_LOCAL FT_Error + TT_Reset_Size( TT_Size size ); /*************************************************************************/ /* */ /* Driver functions */ /* */ - FT_LOCAL - FT_Error TT_Init_Driver( TT_Driver driver ); + FT_LOCAL FT_Error + TT_Init_Driver( TT_Driver driver ); - FT_LOCAL - void TT_Done_Driver( TT_Driver driver ); + FT_LOCAL void + TT_Done_Driver( TT_Driver driver ); FT_END_HEADER Index: xc/extras/freetype2/src/truetype/ttpload.c diff -u xc/extras/freetype2/src/truetype/ttpload.c:1.1.1.2 xc/extras/freetype2/src/truetype/ttpload.c:1.1.1.4 --- xc/extras/freetype2/src/truetype/ttpload.c:1.1.1.2 Tue May 15 23:45:40 2001 +++ xc/extras/freetype2/src/truetype/ttpload.c Sun Dec 16 12:49:36 2001 @@ -4,7 +4,7 @@ /* */ /* TrueType glyph data/program tables loader (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -21,8 +21,10 @@ #include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_STREAM_H #include FT_TRUETYPE_TAGS_H + #include "ttpload.h" -#include FT_INTERNAL_TRUETYPE_ERRORS_H + +#include "tterrors.h" /*************************************************************************/ @@ -52,9 +54,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_Locations( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_Locations( TT_Face face, + FT_Stream stream ) { FT_Error error; FT_Memory memory = stream->memory; @@ -145,9 +147,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_CVT( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_CVT( TT_Face face, + FT_Stream stream ) { FT_Error error; FT_Memory memory = stream->memory; @@ -212,9 +214,9 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error TT_Load_Programs( TT_Face face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + TT_Load_Programs( TT_Face face, + FT_Stream stream ) { FT_Error error; FT_ULong table_len; Index: xc/extras/freetype2/src/truetype/ttpload.h diff -u xc/extras/freetype2/src/truetype/ttpload.h:1.1.1.2 xc/extras/freetype2/src/truetype/ttpload.h:1.1.1.3 --- xc/extras/freetype2/src/truetype/ttpload.h:1.1.1.2 Tue May 15 23:45:40 2001 +++ xc/extras/freetype2/src/truetype/ttpload.h Sun Dec 16 12:49:36 2001 @@ -4,7 +4,7 @@ /* */ /* TrueType glyph data/program tables loader (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,17 +27,17 @@ FT_BEGIN_HEADER - FT_LOCAL - FT_Error TT_Load_Locations( TT_Face face, - FT_Stream stream ); - - FT_LOCAL - FT_Error TT_Load_CVT( TT_Face face, - FT_Stream stream ); - - FT_LOCAL - FT_Error TT_Load_Programs( TT_Face face, - FT_Stream stream ); + FT_LOCAL FT_Error + TT_Load_Locations( TT_Face face, + FT_Stream stream ); + + FT_LOCAL FT_Error + TT_Load_CVT( TT_Face face, + FT_Stream stream ); + + FT_LOCAL FT_Error + TT_Load_Programs( TT_Face face, + FT_Stream stream ); FT_END_HEADER Index: xc/extras/freetype2/src/type1/Jamfile diff -u /dev/null xc/extras/freetype2/src/type1/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:21:59 2002 +++ xc/extras/freetype2/src/type1/Jamfile Sun Sep 9 22:56:11 2001 @@ -0,0 +1,23 @@ +# FreeType 2 src/type1 Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src type1 ; + +SubDirHdrs [ FT2_SubDir src type1 ] ; + +{ + local _sources ; + + if $(FT2_MULTI) + { + _sources = t1afm t1driver t1objs t1load t1gload t1parse ; + } + else + { + _sources = type1 ; + } + + Library $(FT2_LIB) : $(_sources).c ; +} + +# end of src/type1 Jamfile Index: xc/extras/freetype2/src/type1/rules.mk diff -u xc/extras/freetype2/src/type1/rules.mk:1.1.1.2 xc/extras/freetype2/src/type1/rules.mk:1.1.1.3 --- xc/extras/freetype2/src/type1/rules.mk:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/type1/rules.mk Sun Sep 9 22:56:11 2001 @@ -36,7 +36,8 @@ # Type1 driver headers # T1_DRV_H := $(T1_DRV_SRC:%.c=%.h) \ - $(T1_DIR_)t1tokens.h + $(T1_DIR_)t1tokens.h \ + $(T1_DIR_)t1errors.h # Type1 driver object(s) Index: xc/extras/freetype2/src/type1/t1afm.c diff -u xc/extras/freetype2/src/type1/t1afm.c:1.1.1.2 xc/extras/freetype2/src/type1/t1afm.c:1.1.1.4 --- xc/extras/freetype2/src/type1/t1afm.c:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/type1/t1afm.c Sun Dec 16 12:49:36 2001 @@ -4,7 +4,7 @@ /* */ /* AFM support for Type 1 fonts (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -35,12 +35,13 @@ #define FT_COMPONENT trace_t1afm - FT_LOCAL_DEF - void T1_Done_AFM( FT_Memory memory, - T1_AFM* afm ) + FT_LOCAL_DEF void + T1_Done_AFM( FT_Memory memory, + T1_AFM* afm ) { FREE( afm->kern_pairs ); afm->num_pairs = 0; + FREE( afm ); } @@ -53,10 +54,10 @@ /* read a glyph name and return the equivalent glyph index */ - static - FT_UInt afm_atoindex( FT_Byte** start, - FT_Byte* limit, - T1_Font* type1 ) + static FT_UInt + afm_atoindex( FT_Byte** start, + FT_Byte* limit, + T1_Font* type1 ) { FT_Byte* p = *start; FT_Int len; @@ -104,9 +105,9 @@ /* read an integer */ - static - int afm_atoi( FT_Byte** start, - FT_Byte* limit ) + static int + afm_atoi( FT_Byte** start, + FT_Byte* limit ) { FT_Byte* p = *start; int sum = 0; @@ -139,9 +140,9 @@ /* compare two kerning pairs */ - FT_CALLBACK_DEF - int compare_kern_pairs( const void* a, - const void* b ) + FT_CALLBACK_DEF( int ) + compare_kern_pairs( const void* a, + const void* b ) { T1_Kern_Pair* pair1 = (T1_Kern_Pair*)a; T1_Kern_Pair* pair2 = (T1_Kern_Pair*)b; @@ -155,9 +156,9 @@ /* parse an AFM file -- for now, only read the kerning pairs */ - FT_LOCAL_DEF - FT_Error T1_Read_AFM( FT_Face t1_face, - FT_Stream stream ) + FT_LOCAL_DEF FT_Error + T1_Read_AFM( FT_Face t1_face, + FT_Stream stream ) { FT_Error error; FT_Memory memory = stream->memory; @@ -202,6 +203,8 @@ /* save in face object */ ((T1_Face)t1_face)->afm_data = afm; + t1_face->face_flags |= FT_FACE_FLAG_KERNING; + for ( p = start; p < limit - 3; p++ ) { if ( IS_KERN_PAIR( p ) ) @@ -241,11 +244,11 @@ /* find the kerning for a given glyph pair */ - FT_LOCAL_DEF - void T1_Get_Kerning( T1_AFM* afm, - FT_UInt glyph1, - FT_UInt glyph2, - FT_Vector* kerning ) + FT_LOCAL_DEF void + T1_Get_Kerning( T1_AFM* afm, + FT_UInt glyph1, + FT_UInt glyph2, + FT_Vector* kerning ) { T1_Kern_Pair *min, *mid, *max; FT_ULong index = KERN_INDEX( glyph1, glyph2 ); Index: xc/extras/freetype2/src/type1/t1afm.h diff -u xc/extras/freetype2/src/type1/t1afm.h:1.1.1.2 xc/extras/freetype2/src/type1/t1afm.h:1.1.1.3 --- xc/extras/freetype2/src/type1/t1afm.h:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/type1/t1afm.h Sun Dec 16 12:49:36 2001 @@ -4,7 +4,7 @@ /* */ /* AFM support for Type 1 fonts (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -43,19 +43,19 @@ } T1_AFM; - FT_LOCAL - FT_Error T1_Read_AFM( FT_Face face, - FT_Stream stream ); - - FT_LOCAL - void T1_Done_AFM( FT_Memory memory, - T1_AFM* afm ); - - FT_LOCAL - void T1_Get_Kerning( T1_AFM* afm, - FT_UInt glyph1, - FT_UInt glyph2, - FT_Vector* kerning ); + FT_LOCAL FT_Error + T1_Read_AFM( FT_Face face, + FT_Stream stream ); + + FT_LOCAL void + T1_Done_AFM( FT_Memory memory, + T1_AFM* afm ); + + FT_LOCAL void + T1_Get_Kerning( T1_AFM* afm, + FT_UInt glyph1, + FT_UInt glyph2, + FT_Vector* kerning ); FT_END_HEADER Index: xc/extras/freetype2/src/type1/t1driver.c diff -u xc/extras/freetype2/src/type1/t1driver.c:1.1.1.2 xc/extras/freetype2/src/type1/t1driver.c:1.1.1.5 --- xc/extras/freetype2/src/type1/t1driver.c:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/type1/t1driver.c Mon Jan 14 11:52:26 2002 @@ -4,7 +4,7 @@ /* */ /* Type 1 driver interface (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -21,6 +21,8 @@ #include "t1gload.h" #include "t1load.h" +#include "t1errors.h" + #ifndef T1_CONFIG_OPTION_NO_AFM #include "t1afm.h" #endif @@ -42,11 +44,11 @@ #define FT_COMPONENT trace_t1driver - static - FT_Error get_t1_glyph_name( T1_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ) + static FT_Error + t1_get_glyph_name( T1_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ) { FT_String* gname; @@ -72,6 +74,50 @@ /*************************************************************************/ /* */ /* <Function> */ + /* t1_get_name_index */ + /* */ + /* <Description> */ + /* Uses the Type 1 font's `glyph_names' table to find a given glyph */ + /* name's glyph index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* glyph_name :: The glyph name. */ + /* */ + /* <Return> */ + /* Glyph index. 0 means `undefined character code'. */ + /* */ + static FT_UInt + t1_get_name_index( T1_Face face, + FT_String* glyph_name ) + { + FT_Int i; + FT_String* gname; + + + for ( i = 0; i < face->type1.num_glyphs; i++ ) + { + gname = face->type1.glyph_names[i]; + + if ( !strcmp( glyph_name, gname ) ) + return (FT_UInt)i; + } + + return 0; + } + + + static const char* + t1_get_ps_name( T1_Face face ) + { + return (const char*) face->type1.font_name; + } + + + /*************************************************************************/ + /* */ + /* <Function> */ /* Get_Interface */ /* */ /* <Description> */ @@ -96,15 +142,21 @@ /* isn't available (i.e., wasn't compiled in the driver at build */ /* time). */ /* */ - static - FT_Module_Interface Get_Interface( FT_Driver driver, - const FT_String* interface ) + static FT_Module_Interface + Get_Interface( FT_Driver driver, + const FT_String* interface ) { FT_UNUSED( driver ); FT_UNUSED( interface ); if ( strcmp( (const char*)interface, "glyph_name" ) == 0 ) - return (FT_Module_Interface)get_t1_glyph_name; + return (FT_Module_Interface)t1_get_glyph_name; + + if ( strcmp( (const char*)interface, "name_index" ) == 0 ) + return (FT_Module_Interface)t1_get_name_index; + + if ( strcmp( (const char*)interface, "postscript_name" ) == 0 ) + return (FT_Module_Interface)t1_get_ps_name; #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT if ( strcmp( (const char*)interface, "get_mm" ) == 0 ) @@ -154,11 +206,11 @@ /* */ /* They can be implemented by format-specific interfaces. */ /* */ - static - FT_Error Get_Kerning( T1_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_Vector* kerning ) + static FT_Error + Get_Kerning( T1_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_Vector* kerning ) { T1_AFM* afm; @@ -192,9 +244,9 @@ /* <Return> */ /* Glyph index. 0 means `undefined character code'. */ /* */ - static - FT_UInt Get_Char_Index( FT_CharMap charmap, - FT_Long charcode ) + static FT_UInt + Get_Char_Index( FT_CharMap charmap, + FT_Long charcode ) { T1_Face face; FT_UInt result = 0; @@ -279,7 +331,10 @@ const FT_Driver_Class t1_driver_class = { { - ft_module_font_driver | ft_module_driver_scalable, + ft_module_font_driver | + ft_module_driver_scalable | + ft_module_driver_has_hinter, + sizeof( FT_DriverRec ), "type1", @@ -288,8 +343,8 @@ 0, /* format interface */ - (FT_Module_Constructor)T1_Init_Driver, - (FT_Module_Destructor) T1_Done_Driver, + (FT_Module_Constructor)T1_Driver_Init, + (FT_Module_Destructor) T1_Driver_Done, (FT_Module_Requester) Get_Interface, }, @@ -297,15 +352,15 @@ sizeof( T1_SizeRec ), sizeof( T1_GlyphSlotRec ), - (FTDriver_initFace) T1_Init_Face, - (FTDriver_doneFace) T1_Done_Face, - (FTDriver_initSize) 0, - (FTDriver_doneSize) 0, - (FTDriver_initGlyphSlot)0, - (FTDriver_doneGlyphSlot)0, + (FTDriver_initFace) T1_Face_Init, + (FTDriver_doneFace) T1_Face_Done, + (FTDriver_initSize) T1_Size_Init, + (FTDriver_doneSize) T1_Size_Done, + (FTDriver_initGlyphSlot)T1_GlyphSlot_Init, + (FTDriver_doneGlyphSlot)T1_GlyphSlot_Done, - (FTDriver_setCharSizes) 0, - (FTDriver_setPixelSizes)0, + (FTDriver_setCharSizes) T1_Size_Reset, + (FTDriver_setPixelSizes)T1_Size_Reset, (FTDriver_loadGlyph) T1_Load_Glyph, (FTDriver_getCharIndex) Get_Char_Index, @@ -342,7 +397,8 @@ /* format-specific interface can then be retrieved through the method */ /* interface->get_format_interface. */ /* */ - FT_EXPORT_DEF( const FT_Driver_Class* ) getDriverClass( void ) + FT_EXPORT_DEF( const FT_Driver_Class* ) + getDriverClass( void ) { return &t1_driver_class; } Index: xc/extras/freetype2/src/type1/t1driver.h diff -u xc/extras/freetype2/src/type1/t1driver.h:1.1.1.2 xc/extras/freetype2/src/type1/t1driver.h:1.1.1.3 --- xc/extras/freetype2/src/type1/t1driver.h:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/type1/t1driver.h Sun Dec 16 12:49:36 2001 @@ -4,7 +4,7 @@ /* */ /* High-level Type 1 driver interface (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/type1/t1errors.h diff -u /dev/null xc/extras/freetype2/src/type1/t1errors.h:1.1.1.1 --- /dev/null Fri Jan 18 15:21:59 2002 +++ xc/extras/freetype2/src/type1/t1errors.h Sun Sep 9 22:56:11 2001 @@ -0,0 +1,40 @@ +/***************************************************************************/ +/* */ +/* t1errors.h */ +/* */ +/* Type 1 error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the Type 1 error enumeration constants. */ + /* */ + /*************************************************************************/ + +#ifndef __T1ERRORS_H__ +#define __T1ERRORS_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX T1_Err_ +#define FT_ERR_BASE FT_Mod_Err_Type1 + +#include FT_ERRORS_H + +#endif /* __T1ERRORS_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/type1/t1gload.c diff -u xc/extras/freetype2/src/type1/t1gload.c:1.1.1.2 xc/extras/freetype2/src/type1/t1gload.c:1.1.1.5 --- xc/extras/freetype2/src/type1/t1gload.c:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/type1/t1gload.c Mon Jan 14 11:52:26 2002 @@ -4,7 +4,7 @@ /* */ /* Type 1 Glyph Loader (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,6 +23,8 @@ #include FT_OUTLINE_H #include FT_INTERNAL_POSTSCRIPT_AUX_H +#include "t1errors.h" + #include <string.h> /* for strcmp() */ @@ -53,9 +55,9 @@ /*************************************************************************/ - FT_CALLBACK_DEF - FT_Error T1_Parse_Glyph( T1_Decoder* decoder, - FT_UInt glyph_index ) + FT_CALLBACK_DEF( FT_Error ) + T1_Parse_Glyph( T1_Decoder* decoder, + FT_UInt glyph_index ) { T1_Face face = (T1_Face)decoder->builder.face; T1_Font* type1 = &face->type1; @@ -71,9 +73,9 @@ } - FT_LOCAL_DEF - FT_Error T1_Compute_Max_Advance( T1_Face face, - FT_Int* max_advance ) + FT_LOCAL_DEF FT_Error + T1_Compute_Max_Advance( T1_Face face, + FT_Int* max_advance ) { FT_Error error; T1_Decoder decoder; @@ -91,6 +93,7 @@ 0, /* glyph slot */ (FT_Byte**)type1->glyph_names, face->blend, + 0, T1_Parse_Glyph ); if ( error ) return error; @@ -112,7 +115,7 @@ } *max_advance = decoder.builder.advance.x; - return FT_Err_Ok; + return T1_Err_Ok; } @@ -133,11 +136,11 @@ /*************************************************************************/ - FT_LOCAL_DEF - FT_Error T1_Load_Glyph( T1_GlyphSlot glyph, - T1_Size size, - FT_Int glyph_index, - FT_Int load_flags ) + FT_LOCAL_DEF FT_Error + T1_Load_Glyph( T1_GlyphSlot glyph, + T1_Size size, + FT_Int glyph_index, + FT_Int load_flags ) { FT_Error error; T1_Decoder decoder; @@ -159,8 +162,8 @@ glyph->root.outline.n_points = 0; glyph->root.outline.n_contours = 0; - hinting = ( load_flags & FT_LOAD_NO_SCALE ) == 0 && - ( load_flags & FT_LOAD_NO_HINTING ) == 0; + hinting = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE ) == 0 && + ( load_flags & FT_LOAD_NO_HINTING ) == 0 ); glyph->root.format = ft_glyph_format_outline; @@ -170,11 +173,13 @@ (FT_GlyphSlot)glyph, (FT_Byte**)type1->glyph_names, face->blend, + FT_BOOL( hinting ), T1_Parse_Glyph ); if ( error ) goto Exit; - decoder.builder.no_recurse = ( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ); + decoder.builder.no_recurse = FT_BOOL( + ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ); decoder.num_subrs = type1->num_subrs; decoder.subrs = type1->subrs; @@ -205,8 +210,8 @@ if ( load_flags & FT_LOAD_NO_RECURSE ) { FT_Slot_Internal internal = glyph->root.internal; - - + + glyph->root.metrics.horiBearingX = decoder.builder.left_bearing.x; glyph->root.metrics.horiAdvance = decoder.builder.advance.x; internal->glyph_matrix = font_matrix; @@ -236,21 +241,15 @@ if ( size && size->root.metrics.y_ppem < 24 ) glyph->root.outline.flags |= ft_outline_high_precision; - /* apply the font matrix */ +#if 1 + /* apply the font matrix, if any */ FT_Outline_Transform( &glyph->root.outline, &font_matrix ); FT_Outline_Translate( &glyph->root.outline, font_offset.x, font_offset.y ); +#endif -#if 0 - - glyph->root.outline.second_pass = TRUE; - glyph->root.outline.high_precision = size->root.metrics.y_ppem < 24; - glyph->root.outline.dropout_mode = 2; - -#endif /* 0 */ - if ( ( load_flags & FT_LOAD_NO_SCALE ) == 0 ) { /* scale the outline and the metrics */ @@ -261,12 +260,13 @@ FT_Fixed y_scale = glyph->y_scale; - /* First of all, scale the points */ - for ( n = cur->n_points; n > 0; n--, vec++ ) - { - vec->x = FT_MulFix( vec->x, x_scale ); - vec->y = FT_MulFix( vec->y, y_scale ); - } + /* First of all, scale the points, if we are not hinting */ + if ( !hinting ) + for ( n = cur->n_points; n > 0; n--, vec++ ) + { + vec->x = FT_MulFix( vec->x, x_scale ); + vec->y = FT_MulFix( vec->y, y_scale ); + } FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); @@ -276,6 +276,15 @@ metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale ); metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale ); + + if ( hinting ) + { + metrics->horiAdvance = ( metrics->horiAdvance + 32 ) & -64; + metrics->vertAdvance = ( metrics->vertAdvance + 32 ) & -64; + + metrics->vertBearingX = ( metrics->vertBearingX + 32 ) & -64; + metrics->vertBearingY = ( metrics->vertBearingY + 32 ) & -64; + } } /* compute the other metrics */ @@ -296,7 +305,7 @@ metrics->horiBearingX = cbox.xMin; metrics->horiBearingY = cbox.yMax; } - + /* Set control data to the glyph charstrings. Note that this is */ /* _not_ zero-terminated. */ glyph->root.control_data = type1->charstrings [glyph_index]; Index: xc/extras/freetype2/src/type1/t1gload.h diff -u xc/extras/freetype2/src/type1/t1gload.h:1.1.1.2 xc/extras/freetype2/src/type1/t1gload.h:1.1.1.3 --- xc/extras/freetype2/src/type1/t1gload.h:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/type1/t1gload.h Sun Dec 16 12:49:36 2001 @@ -4,7 +4,7 @@ /* */ /* Type 1 Glyph Loader (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,15 +27,15 @@ FT_BEGIN_HEADER - FT_LOCAL - FT_Error T1_Compute_Max_Advance( T1_Face face, - FT_Int* max_advance ); - - FT_LOCAL - FT_Error T1_Load_Glyph( T1_GlyphSlot glyph, - T1_Size size, - FT_Int glyph_index, - FT_Int load_flags ); + FT_LOCAL FT_Error + T1_Compute_Max_Advance( T1_Face face, + FT_Int* max_advance ); + + FT_LOCAL FT_Error + T1_Load_Glyph( T1_GlyphSlot glyph, + T1_Size size, + FT_Int glyph_index, + FT_Int load_flags ); FT_END_HEADER Index: xc/extras/freetype2/src/type1/t1load.c diff -u xc/extras/freetype2/src/type1/t1load.c:1.1.1.2 xc/extras/freetype2/src/type1/t1load.c:1.1.1.5 --- xc/extras/freetype2/src/type1/t1load.c:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/type1/t1load.c Mon Jan 14 11:52:27 2002 @@ -4,7 +4,7 @@ /* */ /* Type 1 font loader (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -66,10 +66,11 @@ #include FT_CONFIG_CONFIG_H #include FT_MULTIPLE_MASTERS_H #include FT_INTERNAL_TYPE1_TYPES_H -#include FT_INTERNAL_TYPE1_ERRORS_H #include "t1load.h" +#include "t1errors.h" + #include <string.h> /* for strncmp(), strcmp() */ #include <ctype.h> /* for isalnum() */ @@ -95,10 +96,10 @@ /*************************************************************************/ /*************************************************************************/ - static - FT_Error t1_allocate_blend( T1_Face face, - FT_UInt num_designs, - FT_UInt num_axis ) + static FT_Error + t1_allocate_blend( T1_Face face, + FT_UInt num_designs, + FT_UInt num_axis ) { T1_Blend* blend; FT_Memory memory = face->root.memory; @@ -179,9 +180,9 @@ } - FT_LOCAL_DEF - FT_Error T1_Get_Multi_Master( T1_Face face, - FT_Multi_Master* master ) + FT_LOCAL_DEF FT_Error + T1_Get_Multi_Master( T1_Face face, + FT_Multi_Master* master ) { T1_Blend* blend = face->blend; FT_UInt n; @@ -211,10 +212,10 @@ } - FT_LOCAL_DEF - FT_Error T1_Set_MM_Blend( T1_Face face, - FT_UInt num_coords, - FT_Fixed* coords ) + FT_LOCAL_DEF FT_Error + T1_Set_MM_Blend( T1_Face face, + FT_UInt num_coords, + FT_Fixed* coords ) { T1_Blend* blend = face->blend; FT_Error error; @@ -226,7 +227,7 @@ if ( blend && blend->num_axis == num_coords ) { /* recompute the weight vector from the blend coordinates */ - error = FT_Err_Ok; + error = T1_Err_Ok; for ( n = 0; n < blend->num_designs; n++ ) { @@ -251,16 +252,16 @@ blend->weight_vector[n] = result; } - error = FT_Err_Ok; + error = T1_Err_Ok; } return error; } - FT_LOCAL_DEF - FT_Error T1_Set_MM_Design( T1_Face face, - FT_UInt num_coords, - FT_Long* coords ) + FT_LOCAL_DEF FT_Error + T1_Set_MM_Design( T1_Face face, + FT_UInt num_coords, + FT_Long* coords ) { T1_Blend* blend = face->blend; FT_Error error; @@ -327,8 +328,8 @@ } - FT_LOCAL_DEF - void T1_Done_Blend( T1_Face face ) + FT_LOCAL_DEF void + T1_Done_Blend( T1_Face face ) { FT_Memory memory = face->root.memory; T1_Blend* blend = face->blend; @@ -379,9 +380,9 @@ } - static - void parse_blend_axis_types( T1_Face face, - T1_Loader* loader ) + static void + parse_blend_axis_types( T1_Face face, + T1_Loader* loader ) { T1_Token axis_tokens[ T1_MAX_MM_AXIS ]; FT_Int n, num_axis; @@ -440,9 +441,9 @@ } - static - void parse_blend_design_positions( T1_Face face, - T1_Loader* loader ) + static void + parse_blend_design_positions( T1_Face face, + T1_Loader* loader ) { T1_Token design_tokens[ T1_MAX_MM_DESIGNS ]; FT_Int num_designs; @@ -522,9 +523,9 @@ } - static - void parse_blend_design_map( T1_Face face, - T1_Loader* loader ) + static void + parse_blend_design_map( T1_Face face, + T1_Loader* loader ) { FT_Error error = 0; T1_ParserRec* parser = &loader->parser; @@ -603,9 +604,9 @@ } - static - void parse_weight_vector( T1_Face face, - T1_Loader* loader ) + static void + parse_weight_vector( T1_Face face, + T1_Loader* loader ) { FT_Error error = 0; T1_ParserRec* parser = &loader->parser; @@ -655,9 +656,9 @@ /* with a lot of Postscript garbage behind it (that's completely out */ /* of spec!); we detect it and terminate the parsing */ /* */ - static - void parse_shared_dict( T1_Face face, - T1_Loader* loader ) + static void + parse_shared_dict( T1_Face face, + T1_Loader* loader ) { T1_ParserRec* parser = &loader->parser; @@ -688,10 +689,10 @@ /*************************************************************************/ - static - FT_Error t1_load_keyword( T1_Face face, - T1_Loader* loader, - T1_Field* field ) + static FT_Error + t1_load_keyword( T1_Face face, + T1_Loader* loader, + T1_Field* field ) { FT_Error error; void* dummy_object; @@ -755,25 +756,27 @@ } - static - int is_space( FT_Byte c ) + static int + is_space( FT_Byte c ) { return ( c == ' ' || c == '\t' || c == '\r' || c == '\n' ); } - static - int is_alpha( FT_Byte c ) + static int + is_alpha( FT_Byte c ) { - return ( isalnum( c ) || c == '.' || c == '_' || c == '-' ); + /* Note: we must accept "+" as a valid character, as it is used in */ + /* embedded type1 fonts in PDF documents. */ + /* */ + return ( isalnum( c ) || c == '.' || c == '_' || c == '-' || c == '+' ); } - - static - int read_binary_data( T1_ParserRec* parser, - FT_Int* size, - FT_Byte** base ) + static int + read_binary_data( T1_ParserRec* parser, + FT_Int* size, + FT_Byte** base ) { FT_Byte* cur; FT_Byte* limit = parser->root.limit; @@ -812,9 +815,9 @@ /* the `/Encoding', `/Subrs', and `/CharStrings' */ /* dictionaries */ - static - void parse_font_name( T1_Face face, - T1_Loader* loader ) + static void + parse_font_name( T1_Face face, + T1_Loader* loader ) { T1_ParserRec* parser = &loader->parser; FT_Error error; @@ -825,6 +828,10 @@ FT_Byte* limit; + if ( face->type1.font_name ) + /* with synthetic fonts, it's possible we get here twice */ + return; + T1_Skip_Spaces( parser ); cur = parser->root.cursor; @@ -854,9 +861,9 @@ } - static - void parse_font_bbox( T1_Face face, - T1_Loader* loader ) + static void + parse_font_bbox( T1_Face face, + T1_Loader* loader ) { T1_ParserRec* parser = &loader->parser; FT_Fixed temp[4]; @@ -871,9 +878,9 @@ } - static - void parse_font_matrix( T1_Face face, - T1_Loader* loader ) + static void + parse_font_matrix( T1_Face face, + T1_Loader* loader ) { T1_ParserRec* parser = &loader->parser; FT_Matrix* matrix = &face->type1.font_matrix; @@ -891,12 +898,12 @@ temp_scale = ABS( temp[3] ); - /* Set Units per EM based on FontMatrix values. We set the value to */ - /* 1000 / temp_scale, because temp_scale was already multiplied by */ - /* 1000 (in t1_tofixed, from psobjs.c). */ + /* Set Units per EM based on FontMatrix values. We set the value to */ + /* 1000 / temp_scale, because temp_scale was already multiplied by */ + /* 1000 (in t1_tofixed, from psobjs.c). */ - root->units_per_EM = (FT_UShort)( FT_DivFix( 0x10000L, - FT_DivFix( temp_scale, 1000 ) ) >> 16 ); + root->units_per_EM = (FT_UShort)( FT_DivFix( 1000 * 0x10000L, + temp_scale ) >> 16 ); /* we need to scale the values by 1.0/temp_scale */ if ( temp_scale != 0x10000L ) @@ -920,9 +927,9 @@ } - static - void parse_encoding( T1_Face face, - T1_Loader* loader ) + static void + parse_encoding( T1_Face face, + T1_Loader* loader ) { T1_ParserRec* parser = &loader->parser; FT_Byte* cur = parser->root.cursor; @@ -954,6 +961,10 @@ FT_Error error; + if ( encode->char_index ) + /* with synthetic fonts, it's possible we get here twice */ + return; + /* read the number of entries in the encoding, should be 256 */ count = T1_ToInt( parser ); if ( parser->root.error ) @@ -1044,7 +1055,7 @@ len = (FT_Int)( cur2 - cur - 1 ); parser->root.error = T1_Add_Table( char_table, charcode, - cur + 1, len + 1 ); + cur + 1, len + 1 ); char_table->elements[charcode][len] = '\0'; if ( parser->root.error ) return; @@ -1080,9 +1091,9 @@ } - static - void parse_subrs( T1_Face face, - T1_Loader* loader ) + static void + parse_subrs( T1_Face face, + T1_Loader* loader ) { T1_ParserRec* parser = &loader->parser; PS_Table* table = &loader->subrs; @@ -1093,6 +1104,10 @@ PSAux_Interface* psaux = (PSAux_Interface*)face->psaux; + if ( loader->num_subrs ) + /* with synthetic fonts, it's possible we get here twice */ + return; + loader->num_subrs = T1_ToInt( parser ); if ( parser->root.error ) return; @@ -1165,13 +1180,14 @@ } - static - void parse_charstrings( T1_Face face, - T1_Loader* loader ) + static void + parse_charstrings( T1_Face face, + T1_Loader* loader ) { T1_ParserRec* parser = &loader->parser; PS_Table* code_table = &loader->charstrings; PS_Table* name_table = &loader->glyph_names; + PS_Table* swap_table = &loader->swap_table; FT_Memory memory = parser->root.memory; FT_Error error; @@ -1191,8 +1207,10 @@ loader->num_glyphs = T1_ToInt( parser ); if ( parser->root.error ) return; + + /* initialize tables (leaving room for addition of .notdef, */ + /* if necessary). */ - /* initialize tables, adding space for `swap' at table end */ error = psaux->ps_table_funcs->init( code_table, loader->num_glyphs + 1, memory ); @@ -1205,6 +1223,15 @@ if ( error ) goto Fail; + /* Initialize table for swapping index notdef_index and */ + /* index 0 names and codes (if necessary). */ + + error = psaux->ps_table_funcs->init( swap_table, 4, memory ); + + if ( error ) + goto Fail; + + n = 0; for (;;) { @@ -1291,44 +1318,61 @@ (const char*)name_table->elements[0] ) && notdef_found ) { - - /* Swap glyph in index 0 with /.notdef glyph. First, add index 0 */ - /* name/code to end of table. Then place notdef_index name/code into */ - /* index 0. Then take end of table name/code and place it into index */ - /* notdef_index. */ + /* Swap glyph in index 0 with /.notdef glyph. First, add index 0 */ + /* name and code entries to swap_table. Then place notdef_index name */ + /* and code entries into swap_table. Then swap name and code */ + /* entries at indices notdef_index and 0 using values stored in */ + /* swap_table. */ - error = T1_Add_Table( name_table, n, + /* Index 0 name */ + error = T1_Add_Table( swap_table, 0, name_table->elements[0], name_table->lengths [0] ); if ( error ) goto Fail; - error = T1_Add_Table( code_table, n, + + /* Index 0 code */ + error = T1_Add_Table( swap_table, 1, code_table->elements[0], code_table->lengths [0] ); if ( error ) goto Fail; - error = T1_Add_Table( name_table, 0, + /* Index notdef_index name */ + error = T1_Add_Table( swap_table, 2, name_table->elements[notdef_index], name_table->lengths [notdef_index] ); if ( error ) goto Fail; - error = T1_Add_Table( code_table, 0, + /* Index notdef_index code */ + error = T1_Add_Table( swap_table, 3, code_table->elements[notdef_index], code_table->lengths [notdef_index] ); if ( error ) goto Fail; error = T1_Add_Table( name_table, notdef_index, - name_table->elements[n], - name_table->lengths [n] ); + swap_table->elements[0], + swap_table->lengths [0] ); if ( error ) goto Fail; error = T1_Add_Table( code_table, notdef_index, - code_table->elements[n], - code_table->lengths [n] ); + swap_table->elements[1], + swap_table->lengths [1] ); + if ( error ) + goto Fail; + + error = T1_Add_Table( name_table, 0, + swap_table->elements[2], + swap_table->lengths [2] ); + if ( error ) + goto Fail; + + error = T1_Add_Table( code_table, 0, + swap_table->elements[3], + swap_table->lengths [3] ); if ( error ) goto Fail; @@ -1338,7 +1382,7 @@ /* notdef_index is already 0, or /.notdef is undefined in */ /* charstrings dictionary. Worry about /.notdef undefined. */ - /* we take index 0 and add it to the end of the table(s) */ + /* We take index 0 and add it to the end of the table(s) */ /* and add our own /.notdef glyph to index 0. */ /* 0 333 hsbw endchar */ @@ -1346,13 +1390,13 @@ char* notdef_name = (char *)".notdef"; - error = T1_Add_Table( name_table, n, + error = T1_Add_Table( swap_table, 0, name_table->elements[0], name_table->lengths [0] ); if ( error ) goto Fail; - error = T1_Add_Table( code_table, n, + error = T1_Add_Table( swap_table, 1, code_table->elements[0], code_table->lengths [0] ); if ( error ) @@ -1367,11 +1411,24 @@ if ( error ) goto Fail; + error = T1_Add_Table( name_table, n, + swap_table->elements[0], + swap_table->lengths [0] ); + if ( error ) + goto Fail; + + error = T1_Add_Table( code_table, n, + swap_table->elements[1], + swap_table->lengths [1] ); + if ( error ) + goto Fail; + /* we added a glyph. */ loader->num_glyphs = n + 1; } + return; Fail: @@ -1405,11 +1462,11 @@ }; - static - FT_Error parse_dict( T1_Face face, - T1_Loader* loader, - FT_Byte* base, - FT_Long size ) + static FT_Error + parse_dict( T1_Face face, + T1_Loader* loader, + FT_Byte* base, + FT_Long size ) { T1_ParserRec* parser = &loader->parser; @@ -1522,9 +1579,9 @@ } - static - void t1_init_loader( T1_Loader* loader, - T1_Face face ) + static void + t1_init_loader( T1_Loader* loader, + T1_Face face ) { FT_UNUSED( face ); @@ -1537,12 +1594,13 @@ loader->charstrings.init = 0; loader->glyph_names.init = 0; loader->subrs.init = 0; + loader->swap_table.init = 0; loader->fontdata = 0; } - static - void t1_done_loader( T1_Loader* loader ) + static void + t1_done_loader( T1_Loader* loader ) { T1_ParserRec* parser = &loader->parser; @@ -1551,6 +1609,7 @@ T1_Release_Table( &loader->encoding_table ); T1_Release_Table( &loader->charstrings ); T1_Release_Table( &loader->glyph_names ); + T1_Release_Table( &loader->swap_table ); T1_Release_Table( &loader->subrs ); /* finalize parser */ @@ -1558,8 +1617,8 @@ } - FT_LOCAL_DEF - FT_Error T1_Open_Face( T1_Face face ) + FT_LOCAL_DEF FT_Error + T1_Open_Face( T1_Face face ) { T1_Loader loader; T1_ParserRec* parser; @@ -1657,7 +1716,7 @@ if ( strcmp( (const char*)char_name, (const char*)glyph_name ) == 0 ) { - type1->encoding.char_index[charcode] = index; + type1->encoding.char_index[charcode] = (FT_UShort)index; type1->encoding.char_name [charcode] = (char*)glyph_name; /* Change min/max encoded char only if glyph name is */ Index: xc/extras/freetype2/src/type1/t1load.h diff -u xc/extras/freetype2/src/type1/t1load.h:1.1.1.2 xc/extras/freetype2/src/type1/t1load.h:1.1.1.4 --- xc/extras/freetype2/src/type1/t1load.h:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/type1/t1load.h Sun Dec 16 12:49:37 2001 @@ -4,7 +4,7 @@ /* */ /* Type 1 font loader (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -42,6 +42,7 @@ FT_Int num_glyphs; PS_Table glyph_names; PS_Table charstrings; + PS_Table swap_table; /* For moving .notdef glyph to index 0. */ FT_Int num_subrs; PS_Table subrs; @@ -50,27 +51,27 @@ } T1_Loader; - FT_LOCAL - FT_Error T1_Open_Face( T1_Face face ); + FT_LOCAL FT_Error + T1_Open_Face( T1_Face face ); #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT - FT_LOCAL - FT_Error T1_Get_Multi_Master( T1_Face face, - FT_Multi_Master* master ); - - FT_LOCAL - FT_Error T1_Set_MM_Blend( T1_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - FT_LOCAL - FT_Error T1_Set_MM_Design( T1_Face face, - FT_UInt num_coords, - FT_Long* coords ); + FT_LOCAL FT_Error + T1_Get_Multi_Master( T1_Face face, + FT_Multi_Master* master ); + + FT_LOCAL FT_Error + T1_Set_MM_Blend( T1_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + FT_LOCAL FT_Error + T1_Set_MM_Design( T1_Face face, + FT_UInt num_coords, + FT_Long* coords ); - FT_LOCAL - void T1_Done_Blend( T1_Face face ); + FT_LOCAL void + T1_Done_Blend( T1_Face face ); #endif /* !T1_CONFIG_OPTION_NO_MM_SUPPORT */ Index: xc/extras/freetype2/src/type1/t1objs.c diff -u xc/extras/freetype2/src/type1/t1objs.c:1.1.1.2 xc/extras/freetype2/src/type1/t1objs.c:1.1.1.5 --- xc/extras/freetype2/src/type1/t1objs.c:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/type1/t1objs.c Mon Jan 14 11:52:27 2002 @@ -4,7 +4,7 @@ /* */ /* Type 1 objects manager (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -25,6 +25,8 @@ #include "t1gload.h" #include "t1load.h" +#include "t1errors.h" + #ifndef T1_CONFIG_OPTION_NO_AFM #include "t1afm.h" #endif @@ -45,6 +47,126 @@ /*************************************************************************/ /* */ + /* SIZE FUNCTIONS */ + /* */ + /* note that we store the global hints in the size's "internal" root */ + /* field */ + /* */ + /*************************************************************************/ + + + static PSH_Globals_Funcs + T1_Size_Get_Globals_Funcs( T1_Size size ) + { + T1_Face face = (T1_Face) size->root.face; + PSHinter_Interface* pshinter = face->pshinter; + FT_Module module; + + + module = FT_Get_Module( size->root.face->driver->root.library, + "pshinter" ); + return ( module && pshinter && pshinter->get_globals_funcs ) + ? pshinter->get_globals_funcs( module ) + : 0 ; + } + + + FT_LOCAL_DEF void + T1_Size_Done( T1_Size size ) + { + if ( size->root.internal ) + { + PSH_Globals_Funcs funcs; + + + funcs = T1_Size_Get_Globals_Funcs( size ); + if ( funcs ) + funcs->destroy( (PSH_Globals)size->root.internal ); + + size->root.internal = 0; + } + } + + + FT_LOCAL_DEF FT_Error + T1_Size_Init( T1_Size size ) + { + FT_Error error = 0; + PSH_Globals_Funcs funcs = T1_Size_Get_Globals_Funcs( size ); + + + if ( funcs ) + { + PSH_Globals globals; + T1_Face face = (T1_Face)size->root.face; + + + error = funcs->create( size->root.face->memory, + &face->type1.private_dict, &globals ); + if ( !error ) + size->root.internal = (FT_Size_Internal)(void*)globals; + } + + return error; + } + + + FT_LOCAL_DEF FT_Error + T1_Size_Reset( T1_Size size ) + { + PSH_Globals_Funcs funcs = T1_Size_Get_Globals_Funcs( size ); + FT_Error error = 0; + + + if ( funcs ) + error = funcs->set_scale( (PSH_Globals)size->root.internal, + size->root.metrics.x_scale, + size->root.metrics.y_scale, + 0, 0 ); + return error; + } + + + /*************************************************************************/ + /* */ + /* SLOT FUNCTIONS */ + /* */ + /*************************************************************************/ + + FT_LOCAL_DEF void + T1_GlyphSlot_Done( T1_GlyphSlot slot ) + { + slot->root.internal->glyph_hints = 0; + } + + + FT_LOCAL_DEF FT_Error + T1_GlyphSlot_Init( T1_GlyphSlot slot ) + { + T1_Face face; + PSHinter_Interface* pshinter; + + face = (T1_Face) slot->root.face; + pshinter = face->pshinter; + if (pshinter) + { + FT_Module module; + + module = FT_Get_Module( slot->root.face->driver->root.library, "pshinter" ); + if (module) + { + T1_Hints_Funcs funcs; + + funcs = pshinter->get_t1_funcs( module ); + slot->root.internal->glyph_hints = (void*)funcs; + } + } + return 0; + } + + + /*************************************************************************/ + /* */ /* FACE FUNCTIONS */ /* */ /*************************************************************************/ @@ -53,7 +175,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* T1_Done_Face */ + /* T1_Face_Done */ /* */ /* <Description> */ /* The face object destructor. */ @@ -61,8 +183,8 @@ /* <Input> */ /* face :: A typeless pointer to the face object to destroy. */ /* */ - FT_LOCAL_DEF - void T1_Done_Face( T1_Face face ) + FT_LOCAL_DEF void + T1_Face_Done( T1_Face face ) { FT_Memory memory; T1_Font* type1 = &face->type1; @@ -125,7 +247,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* T1_Init_Face */ + /* T1_Face_Init */ /* */ /* <Description> */ /* The face object constructor. */ @@ -145,16 +267,17 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error T1_Init_Face( FT_Stream stream, - T1_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) + FT_LOCAL_DEF FT_Error + T1_Face_Init( FT_Stream stream, + T1_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ) { - FT_Error error; - PSNames_Interface* psnames; - PSAux_Interface* psaux; + FT_Error error; + PSNames_Interface* psnames; + PSAux_Interface* psaux; + PSHinter_Interface* pshinter; FT_UNUSED( num_params ); FT_UNUSED( params ); @@ -181,6 +304,15 @@ face->psaux = psaux; } + + pshinter = (PSHinter_Interface*)face->pshinter; + if ( !pshinter ) + { + pshinter = (PSHinter_Interface*) + FT_Get_Module_Interface( FT_FACE_LIBRARY( face ), "pshinter" ); + + face->pshinter = pshinter; + } /* open the tokenizer, this will also check the font format */ error = T1_Open_Face( face ); @@ -194,7 +326,7 @@ /* check the face index */ if ( face_index != 0 ) { - FT_ERROR(( "T1_Init_Face: invalid face index\n" )); + FT_ERROR(( "T1_Face_Init: invalid face index\n" )); error = T1_Err_Invalid_Argument; goto Exit; } @@ -233,15 +365,19 @@ char* full = face->type1.font_info.full_name; char* family = root->family_name; - - while ( *family && *full == *family ) + if ( full ) { - family++; - full++; + while ( *family && *full == *family ) + { + family++; + full++; + } + + root->style_name = ( *full == ' ' ? full + 1 + : (char *)"Regular" ); } - - root->style_name = ( *full == ' ' ? full + 1 - : (char *)"Regular" ); + else + root->style_name = (char *)"Regular"; } else { @@ -276,7 +412,8 @@ root->ascender = (FT_Short)( face->type1.font_bbox.yMax >> 16 ); root->descender = (FT_Short)( face->type1.font_bbox.yMin >> 16 ); - root->height = ( ( root->ascender - root->descender ) * 12 ) / 10; + root->height = (FT_Short)( + ( ( root->ascender - root->descender ) * 12 ) / 10 ); /* now compute the maximum advance width */ root->max_advance_width = @@ -289,7 +426,7 @@ /* in case of error, keep the standard width */ if ( !error ) - root->max_advance_width = max_advance; + root->max_advance_width = (FT_Short)max_advance; else error = 0; /* clear error */ } @@ -332,7 +469,7 @@ /* simply clear the error in case of failure (which really) */ /* means that out of memory or no unicode glyph names */ - error = FT_Err_Ok; + error = T1_Err_Ok; } } @@ -372,7 +509,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* T1_Init_Driver */ + /* T1_Driver_Init */ /* */ /* <Description> */ /* Initializes a given Type 1 driver object. */ @@ -383,8 +520,8 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ - FT_LOCAL_DEF - FT_Error T1_Init_Driver( T1_Driver driver ) + FT_LOCAL_DEF FT_Error + T1_Driver_Init( T1_Driver driver ) { FT_UNUSED( driver ); @@ -395,7 +532,7 @@ /*************************************************************************/ /* */ /* <Function> */ - /* T1_Done_Driver */ + /* T1_Driver_Done */ /* */ /* <Description> */ /* Finalizes a given Type 1 driver. */ @@ -403,8 +540,8 @@ /* <Input> */ /* driver :: A handle to the target Type 1 driver. */ /* */ - FT_LOCAL - void T1_Done_Driver( T1_Driver driver ) + FT_LOCAL_DEF void + T1_Driver_Done( T1_Driver driver ) { FT_UNUSED( driver ); } Index: xc/extras/freetype2/src/type1/t1objs.h diff -u xc/extras/freetype2/src/type1/t1objs.h:1.1.1.2 xc/extras/freetype2/src/type1/t1objs.h:1.1.1.5 --- xc/extras/freetype2/src/type1/t1objs.h:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/type1/t1objs.h Mon Jan 14 11:52:27 2002 @@ -4,7 +4,7 @@ /* */ /* Type 1 objects manager (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,7 +23,6 @@ #include <ft2build.h> #include FT_INTERNAL_OBJECTS_H #include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_TYPE1_ERRORS_H #include FT_INTERNAL_TYPE1_TYPES_H @@ -101,15 +100,21 @@ /* */ typedef struct T1_SizeRec_ { - FT_SizeRec root; - FT_Bool valid; - T1_Size_Hints* hints; /* defined in the hinter. This allows */ - /* us to experiment with different */ - /* hinting schemes without having to */ - /* change `t1objs' each time. */ + FT_SizeRec root; + } T1_SizeRec; + FT_LOCAL void + T1_Size_Done( T1_Size size ); + + FT_LOCAL FT_Error + T1_Size_Reset( T1_Size size ); + + FT_LOCAL FT_Error + T1_Size_Init( T1_Size size ); + + /*************************************************************************/ /* */ /* <Type> */ @@ -131,26 +136,30 @@ FT_Fixed x_scale; FT_Fixed y_scale; - T1_Glyph_Hints* hints; /* defined in the hinter */ - } T1_GlyphSlotRec; - - FT_LOCAL - FT_Error T1_Init_Face( FT_Stream stream, - T1_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - FT_LOCAL - void T1_Done_Face( T1_Face face ); + FT_LOCAL FT_Error + T1_Face_Init( FT_Stream stream, + T1_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); + + FT_LOCAL void + T1_Face_Done( T1_Face face ); + + FT_LOCAL FT_Error + T1_GlyphSlot_Init( T1_GlyphSlot slot ); + + FT_LOCAL void + T1_GlyphSlot_Done( T1_GlyphSlot slot ); - FT_LOCAL - FT_Error T1_Init_Driver( T1_Driver driver ); + FT_LOCAL FT_Error + T1_Driver_Init( T1_Driver driver ); - FT_LOCAL - void T1_Done_Driver( T1_Driver driver ); + FT_LOCAL void + T1_Driver_Done( T1_Driver driver ); FT_END_HEADER Index: xc/extras/freetype2/src/type1/t1parse.c diff -u xc/extras/freetype2/src/type1/t1parse.c:1.1.1.2 xc/extras/freetype2/src/type1/t1parse.c:1.1.1.4 --- xc/extras/freetype2/src/type1/t1parse.c:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/type1/t1parse.c Sun Dec 16 12:49:37 2001 @@ -4,7 +4,7 @@ /* */ /* Type 1 parser (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -37,10 +37,12 @@ #include FT_INTERNAL_DEBUG_H #include FT_INTERNAL_CALC_H #include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_TYPE1_ERRORS_H #include FT_INTERNAL_POSTSCRIPT_AUX_H + #include "t1parse.h" +#include "t1errors.h" + #include <string.h> /* for strncmp() */ @@ -93,10 +95,10 @@ }; - static - FT_Error read_pfb_tag( FT_Stream stream, - FT_UShort* tag, - FT_Long* size ) + static FT_Error + read_pfb_tag( FT_Stream stream, + FT_UShort* tag, + FT_Long* size ) { FT_Error error; PFB_Tag head; @@ -116,11 +118,11 @@ } - FT_LOCAL_DEF - FT_Error T1_New_Parser( T1_ParserRec* parser, - FT_Stream stream, - FT_Memory memory, - PSAux_Interface* psaux ) + FT_LOCAL_DEF FT_Error + T1_New_Parser( T1_ParserRec* parser, + FT_Stream stream, + FT_Memory memory, + PSAux_Interface* psaux ) { FT_Error error; FT_UShort tag; @@ -207,7 +209,7 @@ "%!FontType", 10 ) ) ) { FT_TRACE2(( "[not a Type1 font]\n" )); - error = FT_Err_Unknown_File_Format; + error = T1_Err_Unknown_File_Format; } else { @@ -225,8 +227,8 @@ } - FT_LOCAL_DEF - void T1_Finalize_Parser( T1_ParserRec* parser ) + FT_LOCAL_DEF void + T1_Finalize_Parser( T1_ParserRec* parser ) { FT_Memory memory = parser->root.memory; @@ -243,8 +245,8 @@ /* return the value of an hexadecimal digit */ - static - int hexa_value( char c ) + static int + hexa_value( char c ) { unsigned int d; @@ -265,9 +267,9 @@ } - FT_LOCAL_DEF - FT_Error T1_Get_Private_Dict( T1_ParserRec* parser, - PSAux_Interface* psaux ) + FT_LOCAL_DEF FT_Error + T1_Get_Private_Dict( T1_ParserRec* parser, + PSAux_Interface* psaux ) { FT_Stream stream = parser->stream; FT_Memory memory = parser->root.memory; @@ -321,7 +323,7 @@ error = read_pfb_tag( stream, &tag, &size ); if ( error || tag != 0x8002 ) { - error = FT_Err_Ok; + error = T1_Err_Ok; break; } @@ -434,7 +436,7 @@ break; /* otherwise, store byte */ - *write++ = ( hex1 << 4 ) | hexa_value( cur[1] ); + *write++ = (FT_Byte)( ( hex1 << 4 ) | hexa_value( cur[1] ) ); count++; cur++; } @@ -446,7 +448,7 @@ } /* we now decrypt the encoded binary private dictionary */ - psaux->t1_decrypt( parser->private_dict, parser->private_len, 55665 ); + psaux->t1_decrypt( parser->private_dict, parser->private_len, 55665U ); parser->root.base = parser->private_dict; parser->root.cursor = parser->private_dict; parser->root.limit = parser->root.cursor + parser->private_len; Index: xc/extras/freetype2/src/type1/t1parse.h diff -u xc/extras/freetype2/src/type1/t1parse.h:1.1.1.2 xc/extras/freetype2/src/type1/t1parse.h:1.1.1.3 --- xc/extras/freetype2/src/type1/t1parse.h:1.1.1.2 Tue May 15 23:45:39 2001 +++ xc/extras/freetype2/src/type1/t1parse.h Sun Dec 16 12:49:37 2001 @@ -4,7 +4,7 @@ /* */ /* Type 1 parser (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -112,18 +112,18 @@ (p)->root.funcs.load_field_table( &(p)->root, f, o, m, pf ) - FT_LOCAL - FT_Error T1_New_Parser( T1_ParserRec* parser, - FT_Stream stream, - FT_Memory memory, - PSAux_Interface* psaux ); - - FT_LOCAL - FT_Error T1_Get_Private_Dict( T1_ParserRec* parser, - PSAux_Interface* psaux ); + FT_LOCAL FT_Error + T1_New_Parser( T1_ParserRec* parser, + FT_Stream stream, + FT_Memory memory, + PSAux_Interface* psaux ); + + FT_LOCAL FT_Error + T1_Get_Private_Dict( T1_ParserRec* parser, + PSAux_Interface* psaux ); - FT_LOCAL - void T1_Finalize_Parser( T1_ParserRec* parser ); + FT_LOCAL void + T1_Finalize_Parser( T1_ParserRec* parser ); FT_END_HEADER Index: xc/extras/freetype2/src/type1/t1tokens.h diff -u xc/extras/freetype2/src/type1/t1tokens.h:1.1.1.1 xc/extras/freetype2/src/type1/t1tokens.h:1.1.1.2 --- xc/extras/freetype2/src/type1/t1tokens.h:1.1.1.1 Fri Dec 8 16:26:28 2000 +++ xc/extras/freetype2/src/type1/t1tokens.h Sun Dec 16 12:49:37 2001 @@ -4,7 +4,7 @@ /* */ /* Type 1 tokenizer (specification). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/type1/type1.c diff -u xc/extras/freetype2/src/type1/type1.c:1.1.1.2 xc/extras/freetype2/src/type1/type1.c:1.1.1.3 --- xc/extras/freetype2/src/type1/type1.c:1.1.1.2 Tue May 15 23:45:38 2001 +++ xc/extras/freetype2/src/type1/type1.c Sun Dec 16 12:49:37 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType Type 1 driver component (body only). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/src/winfonts/Jamfile diff -u /dev/null xc/extras/freetype2/src/winfonts/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:22:00 2002 +++ xc/extras/freetype2/src/winfonts/Jamfile Sun Sep 9 22:56:12 2001 @@ -0,0 +1,10 @@ +# FreeType 2 src/winfonts Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP src winfonts ; + +SubDirHdrs [ FT2_SubDir src winfonts ] ; + +Library $(FT2_LIB) : winfnt.c ; + +# end of src/winfonts Jamfile Index: xc/extras/freetype2/src/winfonts/fnterrs.h diff -u /dev/null xc/extras/freetype2/src/winfonts/fnterrs.h:1.1.1.1 --- /dev/null Fri Jan 18 15:22:00 2002 +++ xc/extras/freetype2/src/winfonts/fnterrs.h Sun Sep 9 22:56:12 2001 @@ -0,0 +1,41 @@ +/***************************************************************************/ +/* */ +/* fnterrs.h */ +/* */ +/* Win FNT/FON error codes (specification only). */ +/* */ +/* Copyright 2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the Windows FNT/FON error enumeration */ + /* constants. */ + /* */ + /*************************************************************************/ + +#ifndef __FNTERRS_H__ +#define __FNTERRS_H__ + +#include FT_MODULE_ERRORS_H + +#undef __FTERRORS_H__ + +#define FT_ERR_PREFIX FNT_Err_ +#define FT_ERR_BASE FT_Mod_Err_Winfonts + +#include FT_ERRORS_H + +#endif /* __FNTERRS_H__ */ + + +/* END */ Index: xc/extras/freetype2/src/winfonts/rules.mk diff -u xc/extras/freetype2/src/winfonts/rules.mk:1.1.1.2 xc/extras/freetype2/src/winfonts/rules.mk:1.1.1.3 --- xc/extras/freetype2/src/winfonts/rules.mk:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/winfonts/rules.mk Sun Sep 9 22:56:12 2001 @@ -28,7 +28,8 @@ # Windows driver headers # -FNT_DRV_H := $(FNT_DRV_SRC:%.c=%.h) +FNT_DRV_H := $(FNT_DRV_SRC:%.c=%.h) \ + $(FNT_DIR_)fnterrs.h # Windows driver object(s) Index: xc/extras/freetype2/src/winfonts/winfnt.c diff -u xc/extras/freetype2/src/winfonts/winfnt.c:1.1.1.2 xc/extras/freetype2/src/winfonts/winfnt.c:1.1.1.4 --- xc/extras/freetype2/src/winfonts/winfnt.c:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/winfonts/winfnt.c Sun Dec 16 12:49:37 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType font driver for Windows FNT/FON files */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -17,13 +17,15 @@ #include <ft2build.h> -#include FT_ERRORS_H #include FT_INTERNAL_DEBUG_H #include FT_INTERNAL_STREAM_H #include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_FNT_TYPES_H + #include "winfnt.h" +#include "fnterrs.h" + /*************************************************************************/ /* */ @@ -109,9 +111,9 @@ }; - static - void fnt_done_font( FT_Stream stream, - FNT_Font* font ) + static void + fnt_font_done( FNT_Font* font, + FT_Stream stream ) { if ( font->fnt_frame ) RELEASE_Frame( font->fnt_frame ); @@ -121,9 +123,9 @@ } - static - FT_Error fnt_load_font( FT_Stream stream, - FNT_Font* font ) + static FT_Error + fnt_font_load( FNT_Font* font, + FT_Stream stream ) { FT_Error error; WinFNT_Header* header = &font->header; @@ -139,14 +141,14 @@ header->version != 0x300 ) { FT_TRACE2(( "[not a valid FNT file]\n" )); - error = FT_Err_Unknown_File_Format; + error = FNT_Err_Unknown_File_Format; goto Exit; } if ( header->file_type & 1 ) { FT_TRACE2(( "[can't handle vector FNT fonts]\n" )); - error = FT_Err_Unknown_File_Format; + error = FNT_Err_Unknown_File_Format; goto Exit; } @@ -164,8 +166,8 @@ } - static - void fnt_done_fonts( FNT_Face face ) + static void + fnt_face_done_fonts( FNT_Face face ) { FT_Memory memory = FT_FACE(face)->memory; FT_Stream stream = FT_FACE(face)->stream; @@ -174,15 +176,15 @@ for ( ; cur < limit; cur++ ) - fnt_done_font( stream, cur ); + fnt_font_done( cur, stream ); FREE( face->fonts ); face->num_fonts = 0; } - static - FT_Error fnt_get_dll_fonts( FNT_Face face ) + static FT_Error + fnt_face_get_dll_fonts( FNT_Face face ) { FT_Error error; FT_Stream stream = FT_FACE(face)->stream; @@ -198,7 +200,7 @@ READ_Fields( winmz_header_fields, &mz_header ) ) goto Exit; - error = FT_Err_Unknown_File_Format; + error = FNT_Err_Unknown_File_Format; if ( mz_header.magic == WINFNT_MZ_MAGIC ) { /* yes, now look for a NE header in the file */ @@ -209,7 +211,7 @@ READ_Fields( winne_header_fields, &ne_header ) ) goto Exit; - error = FT_Err_Unknown_File_Format; + error = FNT_Err_Unknown_File_Format; if ( ne_header.magic == WINFNT_NE_MAGIC ) { /* good, now look in the resource table for each FNT resource */ @@ -254,7 +256,7 @@ if ( !font_count || !font_offset ) { FT_TRACE2(( "this file doesn't contain any FNT resources!\n" )); - error = FT_Err_Unknown_File_Format; + error = FNT_Err_Unknown_File_Format; goto Exit; } @@ -291,7 +293,7 @@ for ( ; cur < limit; cur++ ) { - error = fnt_load_font( stream, cur ); + error = fnt_font_load( cur, stream ); if ( error ) goto Fail; } @@ -301,32 +303,32 @@ Fail: if ( error ) - fnt_done_fonts( face ); + fnt_face_done_fonts( face ); Exit: return error; } - static - void FNT_Done_Face( FNT_Face face ) + static void + FNT_Face_Done( FNT_Face face ) { FT_Memory memory = FT_FACE_MEMORY( face ); - fnt_done_fonts( face ); + fnt_face_done_fonts( face ); FREE( face->root.available_sizes ); face->root.num_fixed_sizes = 0; } - static - FT_Error FNT_Init_Face( FT_Stream stream, - FNT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) + static FT_Error + FNT_Face_Init( FT_Stream stream, + FNT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ) { FT_Error error; FT_Memory memory = FT_FACE_MEMORY( face ); @@ -337,7 +339,7 @@ /* try to load several fonts from a DLL */ - error = fnt_get_dll_fonts( face ); + error = fnt_face_get_dll_fonts( face ); if ( error ) { /* this didn't work, now try to load a single FNT font */ @@ -352,7 +354,7 @@ font->offset = 0; font->fnt_size = stream->size; - error = fnt_load_font( stream, font ); + error = fnt_font_load( font, stream ); if ( error ) goto Fail; } @@ -431,15 +433,15 @@ Fail: if ( error ) - FNT_Done_Face( face ); + FNT_Face_Done( face ); Exit: return error; } - static - FT_Error FNT_Set_Pixel_Size( FNT_Size size ) + static FT_Error + FNT_Size_Set_Pixels( FNT_Size size ) { /* look up a font corresponding to the current pixel size */ FNT_Face face = (FNT_Face)FT_SIZE_FACE( size ); @@ -464,13 +466,13 @@ } } - return ( size->font ? FT_Err_Ok : FT_Err_Invalid_Pixel_Size ); + return ( size->font ? FNT_Err_Ok : FNT_Err_Invalid_Pixel_Size ); } - static - FT_UInt FNT_Get_Char_Index( FT_CharMap charmap, - FT_Long char_code ) + static FT_UInt + FNT_Get_Char_Index( FT_CharMap charmap, + FT_Long char_code ) { FT_Long result = char_code; @@ -493,11 +495,11 @@ } - static - FT_Error FNT_Load_Glyph( FT_GlyphSlot slot, - FNT_Size size, - FT_UInt glyph_index, - FT_Int load_flags ) + static FT_Error + FNT_Load_Glyph( FT_GlyphSlot slot, + FNT_Size size, + FT_UInt glyph_index, + FT_Int load_flags ) { FNT_Font* font = size->font; FT_Error error = 0; @@ -513,7 +515,7 @@ if ( !font ) { - error = FT_Err_Invalid_Argument; + error = FNT_Err_Invalid_Argument; goto Exit; } @@ -522,7 +524,7 @@ else glyph_index = font->header.default_char - font->header.first_char; - new_format = font->header.version == 0x300; + new_format = FT_BOOL( font->header.version == 0x300 ); len = new_format ? 6 : 4; /* jump to glyph entry */ @@ -605,15 +607,15 @@ sizeof( FNT_SizeRec ), sizeof( FT_GlyphSlotRec ), - (FTDriver_initFace) FNT_Init_Face, - (FTDriver_doneFace) FNT_Done_Face, + (FTDriver_initFace) FNT_Face_Init, + (FTDriver_doneFace) FNT_Face_Done, (FTDriver_initSize) 0, (FTDriver_doneSize) 0, (FTDriver_initGlyphSlot)0, (FTDriver_doneGlyphSlot)0, - (FTDriver_setCharSizes) FNT_Set_Pixel_Size, - (FTDriver_setPixelSizes)FNT_Set_Pixel_Size, + (FTDriver_setCharSizes) FNT_Size_Set_Pixels, + (FTDriver_setPixelSizes)FNT_Size_Set_Pixels, (FTDriver_loadGlyph) FNT_Load_Glyph, (FTDriver_getCharIndex) FNT_Get_Char_Index, @@ -646,7 +648,8 @@ /* format-specific interface can then be retrieved through the method */ /* interface->get_format_interface. */ /* */ - FT_EXPORT_DEF( const FT_Driver_Class* ) getDriverClass( void ) + FT_EXPORT_DEF( const FT_Driver_Class* ) + getDriverClass( void ) { return &winfnt_driver_class; } Index: xc/extras/freetype2/src/winfonts/winfnt.h diff -u xc/extras/freetype2/src/winfonts/winfnt.h:1.1.1.2 xc/extras/freetype2/src/winfonts/winfnt.h:1.1.1.3 --- xc/extras/freetype2/src/winfonts/winfnt.h:1.1.1.2 Tue May 15 23:45:43 2001 +++ xc/extras/freetype2/src/winfonts/winfnt.h Sun Dec 16 12:49:37 2001 @@ -4,7 +4,7 @@ /* */ /* FreeType font driver for Windows FNT/FON files */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ Index: xc/extras/freetype2/tests/Jamfile diff -u /dev/null xc/extras/freetype2/tests/Jamfile:1.1.1.1 --- /dev/null Fri Jan 18 15:22:00 2002 +++ xc/extras/freetype2/tests/Jamfile Mon Jan 14 11:52:27 2002 @@ -0,0 +1,34 @@ +# FreeType 2 src Jamfile (c) 2001 David Turner +# + +SubDir FT2_TOP tests ; + +test_programs = gview ; + +SubDirHdrs [ FT2_SubDir .. nirvana include ] ; + +NV_TOP = [ FT2_SubDir .. .. nirvana ] ; + +NIRVANA_LINKLIBS = $(NV_TOP)\\objs\\nirvana$(SUFLIB) ; + +{ + local t ; + + for t in $(test_programs) + { + Main $(t) : $(t).c ; + + LinkLibraries $(t) : $(FT2_LIB) ; + + if $(TOOLSET) = MINGW + { + LINKKLIBS on $(t)$(SUFEXE) = "-luser32 -lgdi32" ; + } + else + { + LINKLIBS on $(t)$(SUFEXE) = user32.lib gdi32.lib ; + } + + NEEDLIBS on $(t)$(SUFEXE) += $(NIRVANA_LINKLIBS) ; + } +} Index: xc/extras/freetype2/tests/gview.c diff -u /dev/null xc/extras/freetype2/tests/gview.c:1.1.1.1 --- /dev/null Fri Jan 18 15:22:00 2002 +++ xc/extras/freetype2/tests/gview.c Mon Jan 14 11:52:27 2002 @@ -0,0 +1,1334 @@ +#include <nirvana.h> +#include NV_VIEWPORT_H +#include <stdio.h> + +#include <ft2build.h> +#include FT_FREETYPE_H + +/* include FreeType internals to debug hints */ +#include <../src/pshinter/pshrec.h> +#include <../src/pshinter/pshalgo1.h> +#include <../src/pshinter/pshalgo2.h> + +#include <../src/autohint/ahtypes.h> + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** ROOT DEFINITIONS *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + + +#include <time.h> /* for clock() */ + +/* SunOS 4.1.* does not define CLOCKS_PER_SEC, so include <sys/param.h> */ +/* to get the HZ macro which is the equivalent. */ +#if defined(__sun__) && !defined(SVR4) && !defined(__SVR4) +#include <sys/param.h> +#define CLOCKS_PER_SEC HZ +#endif + +static int first_glyph = 0; + +static NV_Renderer renderer; +static NV_Painter painter; +static NV_Pixmap target; +static NV_Error error; +static NV_Memory memory; +static NVV_Display display; +static NVV_Surface surface; + +static FT_Library freetype; +static FT_Face face; + + +static NV_Pos glyph_scale; +static NV_Pos glyph_org_x; +static NV_Pos glyph_org_y; +static NV_Transform glyph_transform; /* font units -> device pixels */ +static NV_Transform size_transform; /* subpixels -> device pixels */ + +static NV_Scale grid_scale = 1.0; + +static int glyph_index; +static int pixel_size = 12; + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** OPTIONS, COLORS and OTHERS *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + +static int option_show_axis = 1; +static int option_show_dots = 1; +static int option_show_stroke = 0; +static int option_show_glyph = 1; +static int option_show_grid = 1; +static int option_show_em = 0; +static int option_show_smooth = 1; +static int option_show_blues = 0; +static int option_show_edges = 0; +static int option_show_segments = 1; +static int option_show_links = 1; +static int option_show_indices = 0; + +static int option_show_ps_hints = 1; +static int option_show_horz_hints = 1; +static int option_show_vert_hints = 1; + + +static int option_hinting = 1; + +static char temp_message[1024]; + +static NV_Path symbol_dot = NULL; +static NV_Path symbol_circle = NULL; +static NV_Path symbol_square = NULL; +static NV_Path symbol_rect_h = NULL; +static NV_Path symbol_rect_v = NULL; + + + +#define AXIS_COLOR 0xFFFF0000 +#define GRID_COLOR 0xFFD0D0D0 +#define ON_COLOR 0xFFFF2000 +#define OFF_COLOR 0xFFFF0080 +#define STRONG_COLOR 0xFF404040 +#define INTERP_COLOR 0xFF206040 +#define SMOOTH_COLOR 0xF000B040 +#define BACKGROUND_COLOR 0xFFFFFFFF +#define TEXT_COLOR 0xFF000000 +#define EM_COLOR 0x80008000 +#define BLUES_TOP_COLOR 0x4000008F +#define BLUES_BOT_COLOR 0x40008F00 + +#define GHOST_HINT_COLOR 0xE00000FF +#define STEM_HINT_COLOR 0xE02020FF +#define STEM_JOIN_COLOR 0xE020FF20 + +#define EDGE_COLOR 0xF0704070 +#define SEGMENT_COLOR 0xF0206040 +#define LINK_COLOR 0xF0FFFF00 +#define SERIF_LINK_COLOR 0xF0FF808F + +/* print message and abort program */ +static void +Panic( const char* message ) +{ + fprintf( stderr, "PANIC: %s\n", message ); + exit(1); +} + + +static void +init_symbols( void ) +{ + nv_path_new_rectangle( renderer, -1, -1, 3, 3, 0, 0, &symbol_square ); + nv_path_new_rectangle( renderer, -1, -6, 2, 12, 0, 0, &symbol_rect_v ); + nv_path_new_rectangle( renderer, -6, -1, 12, 2, 0, 0, &symbol_rect_h ); + nv_path_new_circle( renderer, 0, 0, 3., &symbol_dot ); + nv_path_stroke( symbol_dot, 0.6, + nv_path_linecap_butt, + nv_path_linejoin_miter, 1., + &symbol_circle ); + + nv_path_destroy( symbol_dot ); + nv_path_new_circle( renderer, 0, 0, 2., &symbol_dot ); + + } + +static void +done_symbols( void ) +{ + nv_path_destroy( symbol_circle ); + nv_path_destroy( symbol_dot ); + nv_path_destroy( symbol_rect_v ); + nv_path_destroy( symbol_rect_h ); + nv_path_destroy( symbol_square ); +} + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** COMMON GRID DRAWING ROUTINES *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + +static void +reset_scale( NV_Scale scale ) +{ + /* compute font units -> grid pixels scale factor */ + glyph_scale = target->width*0.75 / face->units_per_EM * scale; + + /* setup font units -> grid pixels transform */ + nv_transform_set_scale( &glyph_transform, glyph_scale, -glyph_scale ); + glyph_org_x = glyph_transform.delta.x = target->width*0.125; + glyph_org_y = glyph_transform.delta.y = target->height*0.875; + + /* setup subpixels -> grid pixels transform */ + nv_transform_set_scale( &size_transform, + glyph_scale/nv_fromfixed(face->size->metrics.x_scale), + - glyph_scale/nv_fromfixed(face->size->metrics.y_scale) ); + + size_transform.delta = glyph_transform.delta; +} + + +static void +reset_size( int pixel_size, NV_Scale scale ) +{ + FT_Set_Pixel_Sizes( face, pixel_size, pixel_size ); + reset_scale( scale ); +} + + +static void +clear_background( void ) +{ + nv_pixmap_fill_rect( target, 0, 0, target->width, target->height, + BACKGROUND_COLOR ); +} + + +static void +draw_grid( void ) +{ + int x = (int)glyph_org_x; + int y = (int)glyph_org_y; + + /* draw grid */ + if ( option_show_grid ) + { + NV_Scale min, max, x, step; + + /* draw vertical grid bars */ + step = 64. * size_transform.matrix.xx; + if (step > 1.) + { + min = max = glyph_org_x; + while ( min - step >= 0 ) min -= step; + while ( max + step < target->width ) max += step; + + for ( x = min; x <= max; x += step ) + nv_pixmap_fill_rect( target, (NV_Int)(x+.5), 0, + 1, target->height, GRID_COLOR ); + } + + /* draw horizontal grid bars */ + step = -64. * size_transform.matrix.yy; + if (step > 1.) + { + min = max = glyph_org_y; + while ( min - step >= 0 ) min -= step; + while ( max + step < target->height ) max += step; + + for ( x = min; x <= max; x += step ) + nv_pixmap_fill_rect( target, 0, (NV_Int)(x+.5), + target->width, 1, GRID_COLOR ); + } + } + + /* draw axis */ + if ( option_show_axis ) + { + nv_pixmap_fill_rect( target, x, 0, 1, target->height, AXIS_COLOR ); + nv_pixmap_fill_rect( target, 0, y, target->width, 1, AXIS_COLOR ); + } + + if ( option_show_em ) + { + NV_Path path; + NV_Path stroke; + NV_UInt units = (NV_UInt)face->units_per_EM; + + nv_path_new_rectangle( renderer, 0, 0, units, units, 0, 0, &path ); + nv_path_transform( path, &glyph_transform ); + + nv_path_stroke( path, 1.5, nv_path_linecap_butt, nv_path_linejoin_miter, + 4.0, &stroke ); + + nv_painter_set_color( painter, EM_COLOR, 256 ); + nv_painter_fill_path( painter, NULL, 0, stroke ); + + nv_path_destroy( stroke ); + nv_path_destroy( path ); + } + +} + + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** POSTSCRIPT GLOBALS ROUTINES *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + +#include <../src/pshinter/pshglob.h> + +static void +draw_ps_blue_zones( void ) +{ + if ( option_show_blues && ps_debug_globals ) + { + PSH_Blues blues = &ps_debug_globals->blues; + PSH_Blue_Table table; + NV_Vector v; + FT_Int y1, y2; + FT_UInt count; + PSH_Blue_Zone zone; + + /* draw top zones */ + table = &blues->normal_top; + count = table->count; + zone = table->zones; + + for ( ; count > 0; count--, zone++ ) + { + v.x = 0; + if ( !ps_debug_no_horz_hints ) + { + v.y = zone->cur_ref + zone->cur_delta; + nv_vector_transform( &v, &size_transform ); + } + else + { + v.y = zone->org_ref + zone->org_delta; + nv_vector_transform( &v, &glyph_transform ); + } + y1 = (int)(v.y + 0.5); + + v.x = 0; + if ( !ps_debug_no_horz_hints ) + { + v.y = zone->cur_ref; + nv_vector_transform( &v, &size_transform ); + } + else + { + v.y = zone->org_ref; + nv_vector_transform( &v, &glyph_transform ); + } + y2 = (int)(v.y + 0.5); + + nv_pixmap_fill_rect( target, 0, y1, + target->width, y2-y1+1, + BLUES_TOP_COLOR ); + +#if 0 + printf( "top [%.3f %.3f]\n", zone->cur_bottom/64.0, zone->cur_top/64.0 ); +#endif + } + + + /* draw bottom zones */ + table = &blues->normal_bottom; + count = table->count; + zone = table->zones; + + for ( ; count > 0; count--, zone++ ) + { + v.x = 0; + v.y = zone->cur_ref; + nv_vector_transform( &v, &size_transform ); + y1 = (int)(v.y + 0.5); + + v.x = 0; + v.y = zone->cur_ref + zone->cur_delta; + nv_vector_transform( &v, &size_transform ); + y2 = (int)(v.y + 0.5); + + nv_pixmap_fill_rect( target, 0, y1, + target->width, y2-y1+1, + BLUES_BOT_COLOR ); + +#if 0 + printf( "bot [%.3f %.3f]\n", zone->cur_bottom/64.0, zone->cur_top/64.0 ); +#endif + } + } +} + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** POSTSCRIPT HINTER ALGORITHM 1 ROUTINES *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + +#include <../src/pshinter/pshalgo1.h> + +static int pshint_cpos = 0; +static int pshint_vertical = -1; + +static void +draw_ps1_hint( PSH1_Hint hint, FT_Bool vertical ) +{ + int x1, x2; + NV_Vector v; + + + if ( pshint_vertical != vertical ) + { + if (vertical) + pshint_cpos = 40; + else + pshint_cpos = 10; + + pshint_vertical = vertical; + } + + if (vertical) + { + if ( !option_show_vert_hints ) + return; + + v.x = hint->cur_pos; + v.y = 0; + nv_vector_transform( &v, &size_transform ); + x1 = (int)(v.x + 0.5); + + v.x = hint->cur_pos + hint->cur_len; + v.y = 0; + nv_vector_transform( &v, &size_transform ); + x2 = (int)(v.x + 0.5); + + nv_pixmap_fill_rect( target, x1, 0, 1, target->height, + psh1_hint_is_ghost(hint) + ? GHOST_HINT_COLOR : STEM_HINT_COLOR ); + + if ( psh1_hint_is_ghost(hint) ) + { + x1 --; + x2 = x1 + 2; + } + else + nv_pixmap_fill_rect( target, x2, 0, 1, target->height, + psh1_hint_is_ghost(hint) + ? GHOST_HINT_COLOR : STEM_HINT_COLOR ); + + nv_pixmap_fill_rect( target, x1, pshint_cpos, x2+1-x1, 1, + STEM_JOIN_COLOR ); + } + else + { + if (!option_show_horz_hints) + return; + + v.y = hint->cur_pos; + v.x = 0; + nv_vector_transform( &v, &size_transform ); + x1 = (int)(v.y + 0.5); + + v.y = hint->cur_pos + hint->cur_len; + v.x = 0; + nv_vector_transform( &v, &size_transform ); + x2 = (int)(v.y + 0.5); + + nv_pixmap_fill_rect( target, 0, x1, target->width, 1, + psh1_hint_is_ghost(hint) + ? GHOST_HINT_COLOR : STEM_HINT_COLOR ); + + if ( psh1_hint_is_ghost(hint) ) + { + x1 --; + x2 = x1 + 2; + } + else + nv_pixmap_fill_rect( target, 0, x2, target->width, 1, + psh1_hint_is_ghost(hint) + ? GHOST_HINT_COLOR : STEM_HINT_COLOR ); + + nv_pixmap_fill_rect( target, pshint_cpos, x2, 1, x1+1-x2, + STEM_JOIN_COLOR ); + } + +#if 0 + printf( "[%7.3f %7.3f] %c\n", hint->cur_pos/64.0, (hint->cur_pos+hint->cur_len)/64.0, vertical ? 'v' : 'h' ); +#endif + + pshint_cpos += 10; +} + + + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** POSTSCRIPT HINTER ALGORITHM 2 ROUTINES *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + +#include <../src/pshinter/pshalgo2.h> + +static void +draw_ps2_hint( PSH2_Hint hint, FT_Bool vertical ) +{ + int x1, x2; + NV_Vector v; + + if ( pshint_vertical != vertical ) + { + if (vertical) + pshint_cpos = 40; + else + pshint_cpos = 10; + + pshint_vertical = vertical; + } + + if (vertical) + { + if ( !option_show_vert_hints ) + return; + + v.x = hint->cur_pos; + v.y = 0; + nv_vector_transform( &v, &size_transform ); + x1 = (int)(v.x + 0.5); + + v.x = hint->cur_pos + hint->cur_len; + v.y = 0; + nv_vector_transform( &v, &size_transform ); + x2 = (int)(v.x + 0.5); + + nv_pixmap_fill_rect( target, x1, 0, 1, target->height, + psh2_hint_is_ghost(hint) + ? GHOST_HINT_COLOR : STEM_HINT_COLOR ); + + if ( psh2_hint_is_ghost(hint) ) + { + x1 --; + x2 = x1 + 2; + } + else + nv_pixmap_fill_rect( target, x2, 0, 1, target->height, + psh2_hint_is_ghost(hint) + ? GHOST_HINT_COLOR : STEM_HINT_COLOR ); + + nv_pixmap_fill_rect( target, x1, pshint_cpos, x2+1-x1, 1, + STEM_JOIN_COLOR ); + } + else + { + if (!option_show_horz_hints) + return; + + v.y = hint->cur_pos; + v.x = 0; + nv_vector_transform( &v, &size_transform ); + x1 = (int)(v.y + 0.5); + + v.y = hint->cur_pos + hint->cur_len; + v.x = 0; + nv_vector_transform( &v, &size_transform ); + x2 = (int)(v.y + 0.5); + + nv_pixmap_fill_rect( target, 0, x1, target->width, 1, + psh2_hint_is_ghost(hint) + ? GHOST_HINT_COLOR : STEM_HINT_COLOR ); + + if ( psh2_hint_is_ghost(hint) ) + { + x1 --; + x2 = x1 + 2; + } + else + nv_pixmap_fill_rect( target, 0, x2, target->width, 1, + psh2_hint_is_ghost(hint) + ? GHOST_HINT_COLOR : STEM_HINT_COLOR ); + + nv_pixmap_fill_rect( target, pshint_cpos, x2, 1, x1+1-x2, + STEM_JOIN_COLOR ); + } + +#if 0 + printf( "[%7.3f %7.3f] %c\n", hint->cur_pos/64.0, (hint->cur_pos+hint->cur_len)/64.0, vertical ? 'v' : 'h' ); +#endif + + pshint_cpos += 10; +} + + +static void +ps2_draw_control_points( void ) +{ + if ( ps2_debug_glyph ) + { + PSH2_Glyph glyph = ps2_debug_glyph; + PSH2_Point point = glyph->points; + FT_UInt count = glyph->num_points; + NV_Transform transform, *trans = &transform; + NV_Path vert_rect; + NV_Path horz_rect; + NV_Path dot, circle; + + for ( ; count > 0; count--, point++ ) + { + NV_Vector vec; + + vec.x = point->cur_x; + vec.y = point->cur_y; + nv_vector_transform( &vec, &size_transform ); + + nv_transform_set_translate( trans, vec.x, vec.y ); + + if ( option_show_smooth && !psh2_point_is_smooth(point) ) + { + nv_painter_set_color( painter, SMOOTH_COLOR, 256 ); + nv_painter_fill_path( painter, trans, 0, symbol_circle ); + } + + if (option_show_horz_hints) + { + if ( point->flags_y & PSH2_POINT_STRONG ) + { + nv_painter_set_color( painter, STRONG_COLOR, 256 ); + nv_painter_fill_path( painter, trans, 0, symbol_rect_h ); + } + } + + if (option_show_vert_hints) + { + if ( point->flags_x & PSH2_POINT_STRONG ) + { + nv_painter_set_color( painter, STRONG_COLOR, 256 ); + nv_painter_fill_path( painter, trans, 0, symbol_rect_v ); + } + } + } + } +} + + +static void +ps_print_hints( void ) +{ + if ( ps_debug_hints ) + { + FT_Int dimension; + PSH_Dimension dim; + + for ( dimension = 1; dimension >= 0; dimension-- ) + { + PS_Dimension dim = &ps_debug_hints->dimension[ dimension ]; + PS_Mask mask = dim->masks.masks; + FT_UInt count = dim->masks.num_masks; + + printf( "%s hints -------------------------\n", + dimension ? "vertical" : "horizontal" ); + + for ( ; count > 0; count--, mask++ ) + { + FT_UInt index; + + printf( "mask -> %d\n", mask->end_point ); + for ( index = 0; index < mask->num_bits; index++ ) + { + if ( mask->bytes[ index >> 3 ] & (0x80 >> (index & 7)) ) + { + PS_Hint hint = dim->hints.hints + index; + + printf( "%c [%3d %3d (%4d)]\n", dimension ? "v" : "h", + hint->pos, hint->pos + hint->len, hint->len ); + } + } + } + } + } +} + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** AUTOHINTER DRAWING ROUTINES *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + +static NV_Path +ah_link_path( NV_Vector* p1, + NV_Vector* p4, + NV_Bool vertical ) +{ + NV_PathWriter writer; + NV_Vector p2, p3; + NV_Path path, stroke; + + if ( vertical ) + { + p2.x = p4->x; + p2.y = p1->y; + + p3.x = p1->x; + p3.y = p4->y; + } + else + { + p2.x = p1->x; + p2.y = p4->y; + + p3.x = p4->x; + p3.y = p1->y; + } + + nv_path_writer_new( renderer, &writer ); + nv_path_writer_moveto( writer, p1 ); + nv_path_writer_cubicto( writer, &p2, &p3, p4 ); + nv_path_writer_end( writer ); + + path = nv_path_writer_get_path( writer ); + nv_path_writer_destroy( writer ); + + nv_path_stroke( path, 1., nv_path_linecap_butt, nv_path_linejoin_round, 1., &stroke ); + + nv_path_destroy( path ); + + return stroke; +} + + +static void +ah_draw_smooth_points( void ) +{ + if ( ah_debug_hinter && option_show_smooth ) + { + AH_Outline* glyph = ah_debug_hinter->glyph; + FT_UInt count = glyph->num_points; + AH_Point* point = glyph->points; + + nv_painter_set_color( painter, SMOOTH_COLOR, 256 ); + + for ( ; count > 0; count--, point++ ) + { + if ( !( point->flags & ah_flag_weak_interpolation ) ) + { + NV_Transform transform, *trans = &transform; + NV_Vector vec; + + vec.x = point->x - ah_debug_hinter->pp1.x; + vec.y = point->y; + nv_vector_transform( &vec, &size_transform ); + + nv_transform_set_translate( &transform, vec.x, vec.y ); + nv_painter_fill_path( painter, trans, 0, symbol_circle ); + } + } + } +} + + +static void +ah_draw_edges( void ) +{ + if ( ah_debug_hinter ) + { + AH_Outline* glyph = ah_debug_hinter->glyph; + FT_UInt count; + AH_Edge* edge; + FT_Pos pp1 = ah_debug_hinter->pp1.x; + + nv_painter_set_color( painter, EDGE_COLOR, 256 ); + + if ( option_show_edges ) + { + /* draw verticla edges */ + if ( option_show_vert_hints ) + { + count = glyph->num_vedges; + edge = glyph->vert_edges; + for ( ; count > 0; count--, edge++ ) + { + NV_Vector vec; + NV_Pos x; + + vec.x = edge->pos - pp1; + vec.y = 0; + + nv_vector_transform( &vec, &size_transform ); + x = (FT_Pos)( vec.x + 0.5 ); + + nv_pixmap_fill_rect( target, x, 0, 1, target->height, EDGE_COLOR ); + } + } + + /* draw horizontal edges */ + if ( option_show_horz_hints ) + { + count = glyph->num_hedges; + edge = glyph->horz_edges; + for ( ; count > 0; count--, edge++ ) + { + NV_Vector vec; + NV_Pos x; + + vec.x = 0; + vec.y = edge->pos; + + nv_vector_transform( &vec, &size_transform ); + x = (FT_Pos)( vec.y + 0.5 ); + + nv_pixmap_fill_rect( target, 0, x, target->width, 1, EDGE_COLOR ); + } + } + } + + if ( option_show_segments ) + { + /* draw vertical segments */ + if ( option_show_vert_hints ) + { + AH_Segment* seg = glyph->vert_segments; + FT_UInt count = glyph->num_vsegments; + + for ( ; count > 0; count--, seg++ ) + { + AH_Point *first, *last; + NV_Vector v1, v2; + NV_Pos y1, y2, x; + + first = seg->first; + last = seg->last; + + v1.x = v2.x = first->x - pp1; + + if ( first->y <= last->y ) + { + v1.y = first->y; + v2.y = last->y; + } + else + { + v1.y = last->y; + v2.y = first->y; + } + + nv_vector_transform( &v1, &size_transform ); + nv_vector_transform( &v2, &size_transform ); + + y1 = (NV_Pos)( v1.y + 0.5 ); + y2 = (NV_Pos)( v2.y + 0.5 ); + x = (NV_Pos)( v1.x + 0.5 ); + + nv_pixmap_fill_rect( target, x-1, y2, 3, ABS(y1-y2)+1, SEGMENT_COLOR ); + } + } + + /* draw horizontal segments */ + if ( option_show_horz_hints ) + { + AH_Segment* seg = glyph->horz_segments; + FT_UInt count = glyph->num_hsegments; + + for ( ; count > 0; count--, seg++ ) + { + AH_Point *first, *last; + NV_Vector v1, v2; + NV_Pos y1, y2, x; + + first = seg->first; + last = seg->last; + + v1.y = v2.y = first->y; + + if ( first->x <= last->x ) + { + v1.x = first->x - pp1; + v2.x = last->x - pp1; + } + else + { + v1.x = last->x - pp1; + v2.x = first->x - pp1; + } + + nv_vector_transform( &v1, &size_transform ); + nv_vector_transform( &v2, &size_transform ); + + y1 = (NV_Pos)( v1.x + 0.5 ); + y2 = (NV_Pos)( v2.x + 0.5 ); + x = (NV_Pos)( v1.y + 0.5 ); + + nv_pixmap_fill_rect( target, y1, x-1, ABS(y1-y2)+1, 3, SEGMENT_COLOR ); + } + } + + + if ( option_show_vert_hints && option_show_links ) + { + AH_Segment* seg = glyph->vert_segments; + FT_UInt count = glyph->num_vsegments; + + for ( ; count > 0; count--, seg++ ) + { + AH_Segment* seg2 = NULL; + NV_Path link; + NV_Vector v1, v2; + + if ( seg->link ) + { + if ( seg->link > seg ) + seg2 = seg->link; + } + else if ( seg->serif ) + seg2 = seg->serif; + + if ( seg2 ) + { + v1.x = seg->first->x - pp1; + v2.x = seg2->first->x - pp1; + v1.y = (seg->first->y + seg->last->y)/2; + v2.y = (seg2->first->y + seg2->last->y)/2; + + link = ah_link_path( &v1, &v2, 1 ); + + nv_painter_set_color( painter, seg->serif ? SERIF_LINK_COLOR : LINK_COLOR, 256 ); + nv_painter_fill_path( painter, &size_transform, 0, link ); + + nv_path_destroy( link ); + } + } + } + + if ( option_show_horz_hints && option_show_links ) + { + AH_Segment* seg = glyph->horz_segments; + FT_UInt count = glyph->num_hsegments; + + for ( ; count > 0; count--, seg++ ) + { + AH_Segment* seg2 = NULL; + NV_Path link; + NV_Vector v1, v2; + + if ( seg->link ) + { + if ( seg->link > seg ) + seg2 = seg->link; + } + else if ( seg->serif ) + seg2 = seg->serif; + + if ( seg2 ) + { + v1.y = seg->first->y; + v2.y = seg2->first->y; + v1.x = (seg->first->x + seg->last->x)/2 - pp1; + v2.x = (seg2->first->x + seg2->last->x)/2 - pp1; + + link = ah_link_path( &v1, &v2, 0 ); + + nv_painter_set_color( painter, seg->serif ? SERIF_LINK_COLOR : LINK_COLOR, 256 ); + nv_painter_fill_path( painter, &size_transform, 0, link ); + + nv_path_destroy( link ); + } + } + } + } + } +} + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** MAIN LOOP(S) *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + +static void +draw_glyph( int glyph_index ) +{ + NV_Path path; + + pshint_vertical = -1; + + ps1_debug_hint_func = option_show_ps_hints ? draw_ps1_hint : 0; + ps2_debug_hint_func = option_show_ps_hints ? draw_ps2_hint : 0; + + ah_debug_hinter = NULL; + + error = FT_Load_Glyph( face, glyph_index, option_hinting + ? FT_LOAD_NO_BITMAP + : FT_LOAD_NO_BITMAP | FT_LOAD_NO_HINTING ); + if (error) Panic( "could not load glyph" ); + + if ( face->glyph->format != ft_glyph_format_outline ) + Panic( "could not load glyph outline" ); + + error = nv_path_new_from_outline( renderer, + (NV_Outline*)&face->glyph->outline, + &size_transform, + &path ); + if (error) Panic( "could not create glyph path" ); + + /* tracé du glyphe plein */ + if ( option_show_glyph ) + { + nv_painter_set_color ( painter, 0xFF404080, 128 ); + nv_painter_fill_path ( painter, 0, 0, path ); + } + + if ( option_show_stroke ) + { + NV_Path stroke; + + error = nv_path_stroke( path, 0.6, + nv_path_linecap_butt, + nv_path_linejoin_miter, + 1.0, &stroke ); + if (error) Panic( "could not stroke glyph path" ); + + nv_painter_set_color ( painter, 0xFF000040, 256 ); + nv_painter_fill_path ( painter, 0, 0, stroke ); + + nv_path_destroy( stroke ); + } + + /* tracé des points de controle */ + if ( option_show_dots ) + { + NV_Path plot; + NV_Outline out; + NV_Scale r = 2; + NV_Int n, first, last; + + nv_path_get_outline( path, NULL, memory, &out ); + + first = 0; + for ( n = 0; n < out.n_contours; n++ ) + { + int m; + NV_Transform trans; + NV_Color color; + NV_SubVector* vec; + + last = out.contours[n]; + + for ( m = first; m <= last; m++ ) + { + color = (out.tags[m] & FT_Curve_Tag_On) + ? ON_COLOR + : OFF_COLOR; + + vec = out.points + m; + + nv_transform_set_translate( &trans, vec->x/64.0, vec->y/64.0 ); + + nv_painter_set_color( painter, color, 256 ); + nv_painter_fill_path( painter, &trans, 0, symbol_dot ); + + if ( option_show_indices ) + { + char temp[5]; + + sprintf( temp, "%d", m ); + nv_pixmap_cell_text( target, vec->x/64 + 4, vec->y/64 - 4, + temp, TEXT_COLOR ); + } + } + + first = last + 1; + } + } + + ah_draw_smooth_points(); + ah_draw_edges(); + + nv_path_destroy( path ); + + /* autre infos */ + { + char temp[1024]; + char temp2[64]; + + sprintf( temp, "font name : %s (%s)", face->family_name, face->style_name ); + nv_pixmap_cell_text( target, 0, 0, temp, TEXT_COLOR ); + + FT_Get_Glyph_Name( face, glyph_index, temp2, 63 ); + temp2[63] = 0; + + sprintf( temp, "glyph %4d: %s", glyph_index, temp2 ); + nv_pixmap_cell_text( target, 0, 8, temp, TEXT_COLOR ); + + if ( temp_message[0] ) + { + nv_pixmap_cell_text( target, 0, 16, temp_message, TEXT_COLOR ); + temp_message[0] = 0; + } + } +} + + + +#define TOGGLE_OPTION(var,prefix) \ + { \ + var = !var; \ + sprintf( temp_message, prefix " is now %s", \ + var ? "on" : "off" ); \ + break; \ + } + + +#define TOGGLE_OPTION_NEG(var,prefix) \ + { \ + var = !var; \ + sprintf( temp_message, prefix " is now %s", \ + !var ? "on" : "off" ); \ + break; \ + } + + +static void +handle_event( NVV_EventRec* ev ) +{ + switch (ev->key) + { + case NVV_Key_Left: + { + if ( glyph_index > 0 ) + glyph_index--; + break; + } + + case NVV_Key_Right: + { + if ( glyph_index+1 < face->num_glyphs ) + glyph_index++; + break; + } + + case NVV_KEY('x'): + TOGGLE_OPTION( option_show_axis, "grid axis display" ) + + case NVV_KEY('s'): + TOGGLE_OPTION( option_show_stroke, "glyph stroke display" ) + + case NVV_KEY('g'): + TOGGLE_OPTION( option_show_glyph, "glyph fill display" ) + + case NVV_KEY('d'): + TOGGLE_OPTION( option_show_dots, "control points display" ) + + case NVV_KEY('e'): + TOGGLE_OPTION( option_show_em, "EM square display" ) + + case NVV_KEY('+'): + { + grid_scale *= 1.2; + reset_scale( grid_scale ); + break; + } + + case NVV_KEY('-'): + { + if (grid_scale > 0.3) + { + grid_scale /= 1.2; + reset_scale( grid_scale ); + } + break; + } + + case NVV_Key_Up: + { + pixel_size++; + reset_size( pixel_size, grid_scale ); + sprintf( temp_message, "pixel size = %d", pixel_size ); + break; + } + + case NVV_Key_Down: + { + if (pixel_size > 1) + { + pixel_size--; + reset_size( pixel_size, grid_scale ); + sprintf( temp_message, "pixel size = %d", pixel_size ); + } + break; + } + + case NVV_KEY('z'): + TOGGLE_OPTION_NEG( ps_debug_no_vert_hints, "vertical hints processing" ) + + case NVV_KEY('a'): + TOGGLE_OPTION_NEG( ps_debug_no_horz_hints, "horizontal hints processing" ) + + case NVV_KEY('Z'): + TOGGLE_OPTION( option_show_vert_hints, "vertical hints display" ) + + case NVV_KEY('A'): + TOGGLE_OPTION( option_show_horz_hints, "horizontal hints display" ) + + case NVV_KEY('S'): + TOGGLE_OPTION( option_show_smooth, "smooth points display" ); + + case NVV_KEY('i'): + TOGGLE_OPTION( option_show_indices, "point index display" ); + + case NVV_KEY('b'): + TOGGLE_OPTION( option_show_blues, "blue zones display" ); + + case NVV_KEY('h'): + TOGGLE_OPTION( option_hinting, "hinting" ) + + case NVV_KEY('H'): + ps_print_hints(); + break; + + default: + ; + } +} + + + +static void +usage() +{ + Panic( "no usage" ); +} + + +#define OPTION1(n,code) \ + case n : \ + code \ + argc--; \ + argv++; \ + break; + +#define OPTION2(n,code) \ + case n : \ + code \ + argc -= 2; \ + argv += 2; \ + break; + + +static void +parse_options( int* argc_p, char*** argv_p ) +{ + int argc = *argc_p; + char** argv = *argv_p; + + while (argc > 2 && argv[1][0] == '-') + { + switch (argv[1][1]) + { + OPTION2( 'f', first_glyph = atoi( argv[2] ); ) + + OPTION2( 's', pixel_size = atoi( argv[2] ); ) + + default: + usage(); + } + } + + *argc_p = argc; + *argv_p = argv; +} + + + +int main( int argc, char** argv ) +{ + char* filename = "/winnt/fonts/arial.ttf"; + + parse_options( &argc, &argv ); + + if ( argc >= 2 ) + filename = argv[1]; + + + /* create library */ + error = nv_renderer_new( 0, &renderer ); + if (error) Panic( "could not create Nirvana renderer" ); + + memory = nv_renderer_get_memory( renderer ); + init_symbols(); + + error = nvv_display_new( renderer, &display ); + if (error) Panic( "could not create display" ); + + error = nvv_surface_new( display, 460, 460, nv_pixmap_type_argb, &surface ); + if (error) Panic( "could not create surface" ); + + target = nvv_surface_get_pixmap( surface ); + + error = nv_painter_new( renderer, &painter ); + if (error) Panic( "could not create painter" ); + + nv_painter_set_target( painter, target ); + + clear_background(); + + error = FT_Init_FreeType( &freetype ); + if (error) Panic( "could not initialise FreeType" ); + + error = FT_New_Face( freetype, filename, 0, &face ); + if (error) Panic( "could not open font face" ); + + reset_size( pixel_size, grid_scale ); + + + nvv_surface_set_title( surface, "FreeType Glyph Viewer" ); + + { + NVV_EventRec event; + + glyph_index = first_glyph; + for ( ;; ) + { + clear_background(); + draw_grid(); + + ps_debug_hints = 0; + ah_debug_hinter = 0; + + ah_debug_disable_vert = ps_debug_no_vert_hints; + ah_debug_disable_horz = ps_debug_no_horz_hints; + + draw_ps_blue_zones(); + draw_glyph( glyph_index ); + ps2_draw_control_points(); + + nvv_surface_refresh( surface, NULL ); + + nvv_surface_listen( surface, 0, &event ); + if ( event.key == NVV_Key_Esc ) + break; + + handle_event( &event ); + switch (event.key) + { + case NVV_Key_Esc: + goto Exit; + + default: + ; + } + } + } + + Exit: + /* wait for escape */ + + + /* destroy display (and surface) */ + nvv_display_unref( display ); + + done_symbols(); + nv_renderer_unref( renderer ); + + return 0; +} Index: xc/extras/ogl-sample/README.XF86 diff -u xc/extras/ogl-sample/README.XF86:1.4 xc/extras/ogl-sample/README.XF86:1.5 --- xc/extras/ogl-sample/README.XF86:1.4 Fri May 4 14:47:27 2001 +++ xc/extras/ogl-sample/README.XF86 Mon Jan 14 17:20:12 2002 @@ -7,6 +7,7 @@ main/doc/man/macros main/doc/man/mandefs + main/doc/man/mangl main/doc/man/manglu main/doc/man/manglw main/doc/man/manrules @@ -22,4 +23,4 @@ -$XFree86: xc/extras/ogl-sample/README.XF86,v 1.4 2001/05/04 18:47:27 dawes Exp $ +$XFree86: xc/extras/ogl-sample/README.XF86,v 1.5 2002/01/14 22:20:12 dawes Exp $ Index: xc/extras/ogl-sample/main/doc/man/mangl/GNUmakefile diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/GNUmakefile:1.3 --- /dev/null Fri Jan 18 15:22:00 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/GNUmakefile Mon Jan 14 17:13:00 2002 @@ -0,0 +1,55 @@ +#!gmake +# +# License Applicability. Except to the extent portions of this file are +# made subject to an alternative license as permitted in the SGI Free +# Software License B, Version 1.1 (the "License"), the contents of this +# file are subject only to the provisions of 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, 1600 +# Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +# +# http://oss.sgi.com/projects/FreeB +# +# Note that, as provided in the License, the Software is distributed on an +# "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +# DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +# CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +# PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +# +# Original Code. The Original Code is: OpenGL Sample Implementation, +# Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +# Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +# Copyright in any portions created by third parties is as indicated +# elsewhere herein. All Rights Reserved. +# +# Additional Notice Provisions: The application programming interfaces +# established by SGI in conjunction with the Original Code are The +# OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +# April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +# 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +# Window System(R) (Version 1.3), released October 19, 1998. This software +# was created using the OpenGL(R) version 1.2.1 Sample Implementation +# published by SGI, but has not been independently verified as being +# compliant with the OpenGL(R) version 1.2.1 Specification. +# +# $Date$ $Revision$ +# $Header: //depot/main/doc/man/mangl/GNUmakefile#9 $ + +COMMONPREF = standard +include $(ROOT)/usr/include/make/commondefs + +SUBDIRS = \ + standard \ + ftn \ + html \ + html_ftn \ + $(NULL) + +default $(ALLTARGS): $(_FORCE) + $(SUBDIRS_MAKERULE) + +distoss: + $(MAKE) $(COMMONPREF)$@ + $(SUBDIRS_MAKERULE) + +include $(COMMONRULES) Index: xc/extras/ogl-sample/main/doc/man/mangl/README diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/README:1.3 --- /dev/null Fri Jan 18 15:22:00 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/README Mon Jan 14 17:13:00 2002 @@ -0,0 +1,93 @@ +This directory has GL man pages. + +./style gives some style guidelines. + +./template is a template that can be used as a starting point + when writing new man pages. + +./standard contains man page source and a Makefile for making + various targets using nroff and troff. The suffix + for man page source in this directory is '.gl'. + +Two awk scripts and m4 are run over GL man page source before it is +processed in the same way that standard man pages are. This allows +a writer to avoid most annoying troff'isms. + Several macros are provided to simplify man page writing. These +are: + +_header(name,desc) + Gives the name of the command to be used at the + top and bottom of the man page and in the _cmnd macro + (below). Also give the one line description of the + command. + +_names(base,regexp) +_names(base,regexp,noheader) + Generates the 'C SPECIFICATIONS' for all forms of + a command with the indicated base name and an + extension matching the given regular expression. + This is done by using the name and expression to search the + known GL commands. A function header is generated for + each matching command. The second form of the command, + with a third argument (any argument will do) suppresses + the generation of the 'C SPECIFICATION' section heading + for the matched names (useful when a single man page + describes diverse commands). + +_cmnd Without an argument, generates the correctly prefixed and +_cmnd(arg) capitalized base command name. Use \& (troff zero-width + space) to separate it from immediately following letters, + digits, underscores or parentheses. With an argument, it + generates the prefixed command name (currently the argument + is not matched against the known GL commands). + The command is automatically emboldened. + +_param<i> Generates the italicized <i>th parameter to the command. +_param<i>(n) Without an argument, it gets the <i>th argument to forms + of the command matching the last _names() invocation. + With an argument, gives the <i>th argument to forms of + the command matching the nth _names() invocation. + +_eqnparam<i> Same as _param, but does not italicize, and can therefore +_eqnparam<i>(n) be used in equations. + +_phead(param) Used when generating a parameter description of 'param'. + Parameter description immediately follows. + +_const(arg) Generates a prefixed and emboldened GL constant 'arg'. +_econst(arg) Same as _const but for use inside equations. + +_hex(arg) Generates "0x'arg'". + +_C_ Comment; everything following up to and including the next + newline is ignored + +_define define an M4 macro. See the M4 man page. Most of the + M4 macros having common names that could clash with words + in the text have been undefined or redefined to have + underscores preceeding their names. Be sure to use _C_ + (or M4's 'dnl') at the end of a macro definition to + avoid extraneous newlines in the troff source. + +If '_filters' is defined before the use of '_header' (see the template +for an example that is commented out) then the processed text is run +through the shell commands given in '_filters' just before being sent to +troff. Useful when tables or equations appear in the text. + +Two standard macros may be redefined in special situations. '_basename' +is the base command name. Normally it is set to the filename of the +man page being generated, sans suffix, and appears in the banner on +every page of the man page. 'gl' is automatically prepended to this +name. '_samething' is the message to be printed when there are +multiple commands under the same heading. See the template for +commented out examples. + +Troff macro names .BR and .BP appear in various manpages. These are +placeholders for .br and .bp macros that were added for the Addison +Wesley publication, but are not valid for other printings. Since these +macros are not defined anywhere, they are ignored by troff/nroff. + +A final and important note: the file MUST begin with an '_' +(probably as in '_header' or '_define(_filters,...)_C_) or +the aforementioned processing will not be applied and you will +be obliged to use the frightful standard man page troff constructs. Index: xc/extras/ogl-sample/main/doc/man/mangl/pages diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/pages:1.3 --- /dev/null Fri Jan 18 15:22:00 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/pages Mon Jan 14 17:13:00 2002 @@ -0,0 +1,105 @@ +Each line corresponds to a single manpage text body. +Lines with comma-separated command names, and with the +parenthetical (both share one page description, two +entry points) do just that: they share a single text +body, but have multiple instantiations. Lines with +comma-separated command names, and with the +parenthetical (one page, one entry point) simply share +a single page. + +Accum +AlphaFunc +Begin, End (both share one page description, two entry points) +Bitmap +BlendFunc +CallList, CallLists (one page, one entry point) +Clear +ClearAccum +ClearColor +ClearDepth +ClearIndex +ClearStencil +ClipPlane +Color, Colorv (one page, one entry point) +ColorMask +ColorMaterial +CopyPixels +CullFace +DeleteList +DepthFunc +DepthRange +Disable, Enable (both share one page description, two entry points) +DrawBuffer +DrawPixels +EdgeFlag, EdgeFlagv (one page, one entry point) +EvalCoord, EvalCoordv (one page, one entry point) +EvalMesh +EvalPoint +FeedbackBuffer +Finish +Flush +Fogv +FrontFace +Frustum +GenLists +GetClipPlane +GetImage +GetLightv +GetMapv +GetMaterialv +GetTexEnvv +GetTexGenv +Getv +Hint +IndexMask +Index, Indexv (one page, one entry point) +InitNames +IsEnabled +IsList +LightModelv +Lightv +LineStipple +LineWidth +ListBase +LoadMatrix +LoadName +LogicOp +Map1, Map2 (one page, one entry point) +MapGrid1, MapGrid2 (one page, one entry point) +Materialv +MatrixMode +MultMatrix +NewList, EndList (both share one page description, two entry points) +Normal, Normalv (one page, one entry point) +Ortho +PassThrough +PixelMap +PixelStore +PixelTransfer +PointSize +PolygonMode +PolygonStipple +PushAttrib, PopAttrib (both share one page description, two entry points) +PushMatrix, PopMatrix (both share one page description, two entry points) +PushName, PopName (both share one page description, two entry points) +RasterPos, RasterPosv (one page, one entry point) +ReadPixels +ReadSource +Rect, Rectv (one page, one entry point) +RenderMode +Rotate +Scale +Scissor +SelectBuffer +ShadeModel +StencilFunc +StencilMask +StencilOp +TexCoord, TexCoordv (one page, one entry point) +TexEnvv +TexGenv +TexImage1d, TexImage2d (one page, one entry point) +TexParameter +Translate +Vertex, Vertexv (one page, one entry point) +Viewport Index: xc/extras/ogl-sample/main/doc/man/mangl/style diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/style:1.3 --- /dev/null Fri Jan 18 15:22:00 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/style Mon Jan 14 17:13:00 2002 @@ -0,0 +1,4 @@ +The template gives the basic style. + +Don't use 'expects' in paramter descriptions; doing so will make Mark +unresponsible for his actions. Index: xc/extras/ogl-sample/main/doc/man/mangl/template diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/template:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/template Mon Jan 14 17:13:00 2002 @@ -0,0 +1,88 @@ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ $Header$ +_C_ +_C_ _define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ +_C_ Uncomment the next line if you need a different basename +_C_ _define(@<_basename>@,specialName)_C_ +_C_ +_C_ Uncomment the next line if you want to change the 'same command' message +_C_ _define(@<_samething>@,All these commands do the same thing.)_C_ +_C_ +_header(Color,one line description of command) +_names(color,[0-9]u*[bsifd]) +.SH PARAMETERS +_phead(_param1) +Description of first parameter to _cmnd +_phead(_param2) +Description of second parameter +... +_phead(_paramN) +Description of last parameter +_names(color,[0-9]u*[bsifd]v) +.SH PARAMETERS +_phead(_param1) +Description of 1st parameter of the second command form +_samething +.SH DESCRIPTION +This command does something related to the GL. +Its name is _cmnd. +_param1 is the 1st argument for the last specified command form. +So is (in this case) _param1(2). +_param1(1) is the 1st parameter +of the first command form of _cmnd. +.SH EXAMPLES +.Ex 5 + _cmnd\&(_param1, _param2, _paramN); /* Do something */ +.SH NOTES +Use of the arguments _const(SILLY_VALUE) or _hex(ffe) may cause drowsiness. +.SH ERRORS +This command may cause errors. They cannot be detected. +.SH ASSOCIATED GETS +call foo with argument bar +.br +call foo2 with argument bar2 +.SH SEE ALSO +_cmnd(c), +_cmnd(clear), +_cmnd(drawbitmap), +_cmnd(n), +_cmnd(v) +.SH BUGS +_cmnd is not actually implemented. Index: xc/extras/ogl-sample/main/doc/man/mangl/ftn/Distfile diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/ftn/Distfile:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/ftn/Distfile Mon Jan 14 17:13:14 2002 @@ -0,0 +1,144 @@ +# +# $Date$ $Revision$ +# $Header: //depot/main/doc/man/mangl/ftn/Distfile#5 $ +# + +DISTDIR_SI = /xc/doc/man/GL/gl_ftn + +DISTFILES_SI = \ + Imakefile \ + fglaccum.3gl \ + fglalphafunc.3gl \ + fglaretexturesresident.3gl \ + fglarrayelement.3gl \ + fglbegin.3gl \ + fglbindtexture.3gl \ + fglbitmap.3gl \ + fglblendfunc.3gl \ + fglcalllist.3gl \ + fglcalllists.3gl \ + fglclear.3gl \ + fglclearaccum.3gl \ + fglclearcolor.3gl \ + fglcleardepth.3gl \ + fglclearindex.3gl \ + fglclearstencil.3gl \ + fglclipplane.3gl \ + fglcolor.3gl \ + fglcolormask.3gl \ + fglcolormaterial.3gl \ + fglcolorpointer.3gl \ + fglcopypixels.3gl \ + fglcopyteximage1d.3gl \ + fglcopyteximage2d.3gl \ + fglcopytexsubimage1d.3gl \ + fglcopytexsubimage2d.3gl \ + fglcullface.3gl \ + fgldeletelists.3gl \ + fgldeletetextures.3gl \ + fgldepthfunc.3gl \ + fgldepthmask.3gl \ + fgldepthrange.3gl \ + fgldrawarrays.3gl \ + fgldrawbuffer.3gl \ + fgldrawelements.3gl \ + fgldrawpixels.3gl \ + fgledgeflag.3gl \ + fgledgeflagpointer.3gl \ + fglenable.3gl \ + fglenableclientstate.3gl \ + fglevalcoord.3gl \ + fglevalmesh.3gl \ + fglevalpoint.3gl \ + fglfeedbackbuffer.3gl \ + fglfinish.3gl \ + fglflush.3gl \ + fglfog.3gl \ + fglfrontface.3gl \ + fglfrustum.3gl \ + fglgenlists.3gl \ + fglgentextures.3gl \ + fglget.3gl \ + fglgetclipplane.3gl \ + fglgeterror.3gl \ + fglgetlight.3gl \ + fglgetmap.3gl \ + fglgetmaterial.3gl \ + fglgetpixelmap.3gl \ + fglgetpointerv.3gl \ + fglgetpolygonstipple.3gl \ + fglgetstring.3gl \ + fglgettexenv.3gl \ + fglgettexgen.3gl \ + fglgetteximage.3gl \ + fglgettexlevelparameter.3gl \ + fglgettexparameter.3gl \ + fglhint.3gl \ + fglindex.3gl \ + fglindexmask.3gl \ + fglindexpointer.3gl \ + fglinitnames.3gl \ + fglinterleavedarrays.3gl \ + fglisenabled.3gl \ + fglislist.3gl \ + fglistexture.3gl \ + fgllight.3gl \ + fgllightmodel.3gl \ + fgllinestipple.3gl \ + fgllinewidth.3gl \ + fgllistbase.3gl \ + fglloadidentity.3gl \ + fglloadmatrix.3gl \ + fglloadname.3gl \ + fgllogicop.3gl \ + fglmap1.3gl \ + fglmap2.3gl \ + fglmapgrid.3gl \ + fglmaterial.3gl \ + fglmatrixmode.3gl \ + fglmultmatrix.3gl \ + fglnewlist.3gl \ + fglnormal.3gl \ + fglnormalpointer.3gl \ + fglortho.3gl \ + fglpassthrough.3gl \ + fglpixelmap.3gl \ + fglpixelstore.3gl \ + fglpixeltransfer.3gl \ + fglpixelzoom.3gl \ + fglpointsize.3gl \ + fglpolygonmode.3gl \ + fglpolygonoffset.3gl \ + fglpolygonstipple.3gl \ + fglprioritizetextures.3gl \ + fglpushattrib.3gl \ + fglpushclientattrib.3gl \ + fglpushmatrix.3gl \ + fglpushname.3gl \ + fglrasterpos.3gl \ + fglreadbuffer.3gl \ + fglreadpixels.3gl \ + fglrect.3gl \ + fglrendermode.3gl \ + fglrotate.3gl \ + fglscale.3gl \ + fglscissor.3gl \ + fglselectbuffer.3gl \ + fglshademodel.3gl \ + fglstencilfunc.3gl \ + fglstencilmask.3gl \ + fglstencilop.3gl \ + fgltexcoord.3gl \ + fgltexcoordpointer.3gl \ + fgltexenv.3gl \ + fgltexgen.3gl \ + fglteximage1d.3gl \ + fglteximage2d.3gl \ + fgltexparameter.3gl \ + fgltexsubimage1d.3gl \ + fgltexsubimage2d.3gl \ + fgltranslate.3gl \ + fglvertex.3gl \ + fglvertexpointer.3gl \ + fglviewport.3gl \ + $(NULL) Index: xc/extras/ogl-sample/main/doc/man/mangl/ftn/GNUmakefile diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/ftn/GNUmakefile:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/ftn/GNUmakefile Mon Jan 14 17:13:14 2002 @@ -0,0 +1,102 @@ +#!gmake +# +# License Applicability. Except to the extent portions of this file are +# made subject to an alternative license as permitted in the SGI Free +# Software License B, Version 1.1 (the "License"), the contents of this +# file are subject only to the provisions of 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, 1600 +# Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +# +# http://oss.sgi.com/projects/FreeB +# +# Note that, as provided in the License, the Software is distributed on an +# "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +# DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +# CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +# PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +# +# Original Code. The Original Code is: OpenGL Sample Implementation, +# Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +# Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +# Copyright in any portions created by third parties is as indicated +# elsewhere herein. All Rights Reserved. +# +# Additional Notice Provisions: The application programming interfaces +# established by SGI in conjunction with the Original Code are The +# OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +# April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +# 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +# Window System(R) (Version 1.3), released October 19, 1998. This software +# was created using the OpenGL(R) version 1.2.1 Sample Implementation +# published by SGI, but has not been independently verified as being +# compliant with the OpenGL(R) version 1.2.1 Specification. +# +# $Date$ $Revision$ +# $Header: //depot/main/doc/man/mangl/ftn/GNUmakefile#9 $ + +# NOTES: +# - The file "lor-c.mn" contains the source for the List of Routines section +# of the C edition of the GL Reference Guide. The usual targets +# lor-c.p, lor-c.ps, and lor-c.psv exist for it; however, it does not have +# a .3g suffix because we don't want to include it as a on-line man page. +# The file should be generated!!! + +COMMONPREF = standard +include $(ROOT)/usr/include/make/commondefs + +DEPTH = ../.. +LANGOPT = f +PREFIX = gl +IDB_PATH = /usr/catman/g_man/cat3/standard + +MANPREF = man +include $(DEPTH)/mandefs + +APIFILE = $(ROOT)/usr/include/GL/gl.h + +VERSION = Version 1.2 +DATE = 10 Nov 1998 +RELEASE = 1.0 +MMFLAGS = -rs2 + +LEGALSUF1 = gl# +LEGALSUF2 = gl# +LEGALSUF3 = gl# +LEGALSUF4 = gl# + +LOCALPRINTLISTFILTER = | sed -e '/^intro\.p$$/d' | (echo intro.p ; cat ) + +default: + $(MAKE) links + $(MAKE) manpages + +headers headers_install libs libs_install install apps: + +distsi: default + $(MAKE) $(COMMONPREF)$@ + +distoss: + $(MAKE) $(COMMONPREF)$@ + +links: + cd ../standard ; \ + for i in *.gl ; do \ + ( cd ../ftn ; if test ! -L fgl$$i ; then \ + /bin/ln -s ../standard/$$i fgl$$i; fi ); \ + done + +manpages: $(patsubst %.gl,%.3gl,$(wildcard *.gl)) + +const.diff: const.awk *.gl $(ROOT)/usr/include/GL/gl.h + awk -f const.awk $(ROOT)/usr/include/GL/gl.h *.gl | \ + sort | uniq > const.diff + +clean: + rm -f *.gl + +clobber: clean + rm -f *.3gl + +include $(DEPTH)/manrules +include $(COMMONRULES) Index: xc/extras/ogl-sample/main/doc/man/mangl/ftn/Imakefile diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/ftn/Imakefile:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/ftn/Imakefile Mon Jan 14 17:13:14 2002 @@ -0,0 +1,874 @@ +XCOMM License Applicability. Except to the extent portions of this file are +XCOMM made subject to an alternative license as permitted in the SGI Free +XCOMM Software License B, Version 1.1 (the "License"), the contents of this +XCOMM file are subject only to the provisions of the License. You may not use +XCOMM this file except in compliance with the License. You may obtain a copy +XCOMM of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +XCOMM Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +XCOMM +XCOMM http://oss.sgi.com/projects/FreeB +XCOMM +XCOMM Note that, as provided in the License, the Software is distributed on an +XCOMM "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +XCOMM DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +XCOMM CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +XCOMM PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +XCOMM +XCOMM Original Code. The Original Code is: OpenGL Sample Implementation, +XCOMM Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +XCOMM Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +XCOMM Copyright in any portions created by third parties is as indicated +XCOMM elsewhere herein. All Rights Reserved. +XCOMM +XCOMM Additional Notice Provisions: The application programming interfaces +XCOMM established by SGI in conjunction with the Original Code are The +XCOMM OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +XCOMM April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +XCOMM 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +XCOMM Window System(R) (Version 1.3), released October 19, 1998. This software +XCOMM was created using the OpenGL(R) version 1.2.1 Sample Implementation +XCOMM published by SGI, but has not been independently verified as being +XCOMM compliant with the OpenGL(R) version 1.2.1 Specification. +XCOMM + +#ifdef ManPageAlias +#undef ManPageAlias +#endif +#define ManPageAlias(file,destdir,alias) @@\ +alias.$(MANSUFFIX): file.$(MANSUFFIX) @@\ + echo .so `basename destdir`/file.$(MANSUFFIX) > alias.$(MANSUFFIX) @@\ + +MANSUFFIX = 3gl + +MAN_PAGES = \ +fglAccum.$(MANSUFFIX) fglAlphaFunc.$(MANSUFFIX) \ +fglAreTexturesResident.$(MANSUFFIX) fglArrayElement.$(MANSUFFIX) \ +fglBegin.$(MANSUFFIX) fglBindTexture.$(MANSUFFIX) \ +fglBitmap.$(MANSUFFIX) fglBlendColorEXT.$(MANSUFFIX) \ +fglBlendFunc.$(MANSUFFIX) fglCallList.$(MANSUFFIX) \ +fglCallLists.$(MANSUFFIX) fglClear.$(MANSUFFIX) \ +fglClearAccum.$(MANSUFFIX) fglClearColor.$(MANSUFFIX) \ +fglClearDepth.$(MANSUFFIX) fglClearIndex.$(MANSUFFIX) \ +fglClearStencil.$(MANSUFFIX) fglClipPlane.$(MANSUFFIX) \ +fglColor3b.$(MANSUFFIX) fglColor3bv.$(MANSUFFIX) \ +fglColor3d.$(MANSUFFIX) fglColor3dv.$(MANSUFFIX) \ +fglColor3f.$(MANSUFFIX) fglColor3fv.$(MANSUFFIX) \ +fglColor3i.$(MANSUFFIX) fglColor3iv.$(MANSUFFIX) \ +fglColor3s.$(MANSUFFIX) fglColor3sv.$(MANSUFFIX) \ +fglColor3ub.$(MANSUFFIX) fglColor3ubv.$(MANSUFFIX) \ +fglColor3ui.$(MANSUFFIX) fglColor3uiv.$(MANSUFFIX) \ +fglColor3us.$(MANSUFFIX) fglColor3usv.$(MANSUFFIX) \ +fglColor4b.$(MANSUFFIX) fglColor4bv.$(MANSUFFIX) \ +fglColor4d.$(MANSUFFIX) fglColor4dv.$(MANSUFFIX) \ +fglColor4f.$(MANSUFFIX) fglColor4fv.$(MANSUFFIX) \ +fglColor4i.$(MANSUFFIX) fglColor4iv.$(MANSUFFIX) \ +fglColor4s.$(MANSUFFIX) fglColor4sv.$(MANSUFFIX) \ +fglColor4ub.$(MANSUFFIX) fglColor4ubv.$(MANSUFFIX) \ +fglColor4ui.$(MANSUFFIX) fglColor4uiv.$(MANSUFFIX) \ +fglColor4us.$(MANSUFFIX) fglColor4usv.$(MANSUFFIX) \ +fglColorMask.$(MANSUFFIX) fglColorMaterial.$(MANSUFFIX) \ +fglColorPointer.$(MANSUFFIX) fglCopyPixels.$(MANSUFFIX) \ +fglCopyTexImage1D.$(MANSUFFIX) fglCopyTexImage2D.$(MANSUFFIX) \ +fglCopyTexSubImage1D.$(MANSUFFIX) fglCopyTexSubImage2D.$(MANSUFFIX) \ +fglCullFace.$(MANSUFFIX) fglDeleteLists.$(MANSUFFIX) \ +fglDeleteTextures.$(MANSUFFIX) fglDepthFunc.$(MANSUFFIX) \ +fglDepthMask.$(MANSUFFIX) fglDepthRange.$(MANSUFFIX) \ +fglDisable.$(MANSUFFIX) fglDisableClientState.$(MANSUFFIX) \ +fglDrawArrays.$(MANSUFFIX) fglDrawBuffer.$(MANSUFFIX) \ +fglDrawElements.$(MANSUFFIX) fglDrawPixels.$(MANSUFFIX) \ +fglEdgeFlag.$(MANSUFFIX) fglEdgeFlagPointer.$(MANSUFFIX) \ +fglEdgeFlagv.$(MANSUFFIX) fglEnable.$(MANSUFFIX) \ +fglEnableClientState.$(MANSUFFIX) fglEnd.$(MANSUFFIX) \ +fglEndList.$(MANSUFFIX) fglEvalCoord1d.$(MANSUFFIX) \ +fglEvalCoord1dv.$(MANSUFFIX) fglEvalCoord1f.$(MANSUFFIX) \ +fglEvalCoord1fv.$(MANSUFFIX) fglEvalCoord2d.$(MANSUFFIX) \ +fglEvalCoord2dv.$(MANSUFFIX) fglEvalCoord2f.$(MANSUFFIX) \ +fglEvalCoord2fv.$(MANSUFFIX) fglEvalMesh1.$(MANSUFFIX) \ +fglEvalMesh2.$(MANSUFFIX) fglEvalPoint1.$(MANSUFFIX) \ +fglEvalPoint2.$(MANSUFFIX) fglFeedbackBuffer.$(MANSUFFIX) \ +fglFinish.$(MANSUFFIX) fglFlush.$(MANSUFFIX) \ +fglFogf.$(MANSUFFIX) fglFogfv.$(MANSUFFIX) \ +fglFogi.$(MANSUFFIX) fglFogiv.$(MANSUFFIX) \ +fglFrontFace.$(MANSUFFIX) fglFrustum.$(MANSUFFIX) \ +fglGenLists.$(MANSUFFIX) fglGenTextures.$(MANSUFFIX) \ +fglGetBooleanv.$(MANSUFFIX) fglGetClipPlane.$(MANSUFFIX) \ +fglGetDoublev.$(MANSUFFIX) fglGetError.$(MANSUFFIX) \ +fglGetFloatv.$(MANSUFFIX) fglGetIntegerv.$(MANSUFFIX) \ +fglGetLightfv.$(MANSUFFIX) fglGetLightiv.$(MANSUFFIX) \ +fglGetMapdv.$(MANSUFFIX) fglGetMapfv.$(MANSUFFIX) \ +fglGetMapiv.$(MANSUFFIX) fglGetMaterialfv.$(MANSUFFIX) \ +fglGetMaterialiv.$(MANSUFFIX) fglGetPixelMapfv.$(MANSUFFIX) \ +fglGetPixelMapuiv.$(MANSUFFIX) fglGetPixelMapusv.$(MANSUFFIX) \ +fglGetPointerv.$(MANSUFFIX) fglGetPolygonStipple.$(MANSUFFIX) \ +fglGetString.$(MANSUFFIX) fglGetTexEnvfv.$(MANSUFFIX) \ +fglGetTexEnviv.$(MANSUFFIX) fglGetTexGendv.$(MANSUFFIX) \ +fglGetTexGenfv.$(MANSUFFIX) fglGetTexGeniv.$(MANSUFFIX) \ +fglGetTexImage.$(MANSUFFIX) fglGetTexLevelParameterfv.$(MANSUFFIX) \ +fglGetTexLevelParameteriv.$(MANSUFFIX) fglGetTexParameterfv.$(MANSUFFIX) \ +fglGetTexParameteriv.$(MANSUFFIX) fglHint.$(MANSUFFIX) \ +fglIndexMask.$(MANSUFFIX) fglIndexPointer.$(MANSUFFIX) \ +fglIndexd.$(MANSUFFIX) fglIndexdv.$(MANSUFFIX) \ +fglIndexf.$(MANSUFFIX) fglIndexfv.$(MANSUFFIX) \ +fglIndexi.$(MANSUFFIX) fglIndexiv.$(MANSUFFIX) \ +fglIndexs.$(MANSUFFIX) fglIndexsv.$(MANSUFFIX) \ +fglIndexub.$(MANSUFFIX) fglIndexubv.$(MANSUFFIX) \ +fglInitNames.$(MANSUFFIX) fglInterleavedArrays.$(MANSUFFIX) \ +fglIsEnabled.$(MANSUFFIX) fglIsList.$(MANSUFFIX) \ +fglIsTexture.$(MANSUFFIX) fglLightModelf.$(MANSUFFIX) \ +fglLightModelfv.$(MANSUFFIX) fglLightModeli.$(MANSUFFIX) \ +fglLightModeliv.$(MANSUFFIX) fglLightf.$(MANSUFFIX) \ +fglLightfv.$(MANSUFFIX) fglLighti.$(MANSUFFIX) \ +fglLightiv.$(MANSUFFIX) fglLineStipple.$(MANSUFFIX) \ +fglLineWidth.$(MANSUFFIX) fglListBase.$(MANSUFFIX) \ +fglLoadIdentity.$(MANSUFFIX) fglLoadMatrixd.$(MANSUFFIX) \ +fglLoadMatrixf.$(MANSUFFIX) fglLoadName.$(MANSUFFIX) \ +fglLogicOp.$(MANSUFFIX) fglMap1d.$(MANSUFFIX) \ +fglMap1f.$(MANSUFFIX) fglMap2d.$(MANSUFFIX) \ +fglMap2f.$(MANSUFFIX) fglMapGrid1d.$(MANSUFFIX) \ +fglMapGrid1f.$(MANSUFFIX) fglMapGrid2d.$(MANSUFFIX) \ +fglMapGrid2f.$(MANSUFFIX) fglMaterialf.$(MANSUFFIX) \ +fglMaterialfv.$(MANSUFFIX) fglMateriali.$(MANSUFFIX) \ +fglMaterialiv.$(MANSUFFIX) fglMatrixMode.$(MANSUFFIX) \ +fglMultMatrixd.$(MANSUFFIX) fglMultMatrixf.$(MANSUFFIX) \ +fglNewList.$(MANSUFFIX) fglNormal3b.$(MANSUFFIX) \ +fglNormal3bv.$(MANSUFFIX) fglNormal3d.$(MANSUFFIX) \ +fglNormal3dv.$(MANSUFFIX) fglNormal3f.$(MANSUFFIX) \ +fglNormal3fv.$(MANSUFFIX) fglNormal3i.$(MANSUFFIX) \ +fglNormal3iv.$(MANSUFFIX) fglNormal3s.$(MANSUFFIX) \ +fglNormal3sv.$(MANSUFFIX) fglNormalPointer.$(MANSUFFIX) \ +fglOrtho.$(MANSUFFIX) fglPassThrough.$(MANSUFFIX) \ +fglPixelMapfv.$(MANSUFFIX) fglPixelMapuiv.$(MANSUFFIX) \ +fglPixelMapusv.$(MANSUFFIX) fglPixelStoref.$(MANSUFFIX) \ +fglPixelStorei.$(MANSUFFIX) fglPixelTransferf.$(MANSUFFIX) \ +fglPixelTransferi.$(MANSUFFIX) fglPixelZoom.$(MANSUFFIX) \ +fglPointSize.$(MANSUFFIX) fglPolygonMode.$(MANSUFFIX) \ +fglPolygonOffset.$(MANSUFFIX) fglPolygonStipple.$(MANSUFFIX) \ +fglPopAttrib.$(MANSUFFIX) fglPopClientAttrib.$(MANSUFFIX) \ +fglPopMatrix.$(MANSUFFIX) fglPopName.$(MANSUFFIX) \ +fglPrioritizeTextures.$(MANSUFFIX) fglPushAttrib.$(MANSUFFIX) \ +fglPushClientAttrib.$(MANSUFFIX) fglPushMatrix.$(MANSUFFIX) \ +fglPushName.$(MANSUFFIX) fglRasterPos2d.$(MANSUFFIX) \ +fglRasterPos2dv.$(MANSUFFIX) fglRasterPos2f.$(MANSUFFIX) \ +fglRasterPos2fv.$(MANSUFFIX) fglRasterPos2i.$(MANSUFFIX) \ +fglRasterPos2iv.$(MANSUFFIX) fglRasterPos2s.$(MANSUFFIX) \ +fglRasterPos2sv.$(MANSUFFIX) fglRasterPos3d.$(MANSUFFIX) \ +fglRasterPos3dv.$(MANSUFFIX) fglRasterPos3f.$(MANSUFFIX) \ +fglRasterPos3fv.$(MANSUFFIX) fglRasterPos3i.$(MANSUFFIX) \ +fglRasterPos3iv.$(MANSUFFIX) fglRasterPos3s.$(MANSUFFIX) \ +fglRasterPos3sv.$(MANSUFFIX) fglRasterPos4d.$(MANSUFFIX) \ +fglRasterPos4dv.$(MANSUFFIX) fglRasterPos4f.$(MANSUFFIX) \ +fglRasterPos4fv.$(MANSUFFIX) fglRasterPos4i.$(MANSUFFIX) \ +fglRasterPos4iv.$(MANSUFFIX) fglRasterPos4s.$(MANSUFFIX) \ +fglRasterPos4sv.$(MANSUFFIX) fglReadBuffer.$(MANSUFFIX) \ +fglReadPixels.$(MANSUFFIX) fglRectd.$(MANSUFFIX) \ +fglRectdv.$(MANSUFFIX) fglRectf.$(MANSUFFIX) \ +fglRectfv.$(MANSUFFIX) fglRecti.$(MANSUFFIX) \ +fglRectiv.$(MANSUFFIX) fglRects.$(MANSUFFIX) \ +fglRectsv.$(MANSUFFIX) fglRenderMode.$(MANSUFFIX) \ +fglRotated.$(MANSUFFIX) fglRotatef.$(MANSUFFIX) \ +fglScaled.$(MANSUFFIX) fglScalef.$(MANSUFFIX) \ +fglScissor.$(MANSUFFIX) fglSelectBuffer.$(MANSUFFIX) \ +fglShadeModel.$(MANSUFFIX) fglStencilFunc.$(MANSUFFIX) \ +fglStencilMask.$(MANSUFFIX) fglStencilOp.$(MANSUFFIX) \ +fglTexCoord1d.$(MANSUFFIX) fglTexCoord1dv.$(MANSUFFIX) \ +fglTexCoord1f.$(MANSUFFIX) fglTexCoord1fv.$(MANSUFFIX) \ +fglTexCoord1i.$(MANSUFFIX) fglTexCoord1iv.$(MANSUFFIX) \ +fglTexCoord1s.$(MANSUFFIX) fglTexCoord1sv.$(MANSUFFIX) \ +fglTexCoord2d.$(MANSUFFIX) fglTexCoord2dv.$(MANSUFFIX) \ +fglTexCoord2f.$(MANSUFFIX) fglTexCoord2fv.$(MANSUFFIX) \ +fglTexCoord2i.$(MANSUFFIX) fglTexCoord2iv.$(MANSUFFIX) \ +fglTexCoord2s.$(MANSUFFIX) fglTexCoord2sv.$(MANSUFFIX) \ +fglTexCoord3d.$(MANSUFFIX) fglTexCoord3dv.$(MANSUFFIX) \ +fglTexCoord3f.$(MANSUFFIX) fglTexCoord3fv.$(MANSUFFIX) \ +fglTexCoord3i.$(MANSUFFIX) fglTexCoord3iv.$(MANSUFFIX) \ +fglTexCoord3s.$(MANSUFFIX) fglTexCoord3sv.$(MANSUFFIX) \ +fglTexCoord4d.$(MANSUFFIX) fglTexCoord4dv.$(MANSUFFIX) \ +fglTexCoord4f.$(MANSUFFIX) fglTexCoord4fv.$(MANSUFFIX) \ +fglTexCoord4i.$(MANSUFFIX) fglTexCoord4iv.$(MANSUFFIX) \ +fglTexCoord4s.$(MANSUFFIX) fglTexCoord4sv.$(MANSUFFIX) \ +fglTexCoordPointer.$(MANSUFFIX) fglTexEnvf.$(MANSUFFIX) \ +fglTexEnvfv.$(MANSUFFIX) fglTexEnvi.$(MANSUFFIX) \ +fglTexEnviv.$(MANSUFFIX) fglTexGend.$(MANSUFFIX) \ +fglTexGendv.$(MANSUFFIX) fglTexGenf.$(MANSUFFIX) \ +fglTexGenfv.$(MANSUFFIX) fglTexGeni.$(MANSUFFIX) \ +fglTexGeniv.$(MANSUFFIX) fglTexImage1D.$(MANSUFFIX) \ +fglTexImage2D.$(MANSUFFIX) fglTexParameterf.$(MANSUFFIX) \ +fglTexParameterfv.$(MANSUFFIX) fglTexParameteri.$(MANSUFFIX) \ +fglTexParameteriv.$(MANSUFFIX) fglTexSubImage1D.$(MANSUFFIX) \ +fglTexSubImage2D.$(MANSUFFIX) fglTranslated.$(MANSUFFIX) \ +fglTranslatef.$(MANSUFFIX) fglVertex2d.$(MANSUFFIX) \ +fglVertex2dv.$(MANSUFFIX) fglVertex2f.$(MANSUFFIX) \ +fglVertex2fv.$(MANSUFFIX) fglVertex2i.$(MANSUFFIX) \ +fglVertex2iv.$(MANSUFFIX) fglVertex2s.$(MANSUFFIX) \ +fglVertex2sv.$(MANSUFFIX) fglVertex3d.$(MANSUFFIX) \ +fglVertex3dv.$(MANSUFFIX) fglVertex3f.$(MANSUFFIX) \ +fglVertex3fv.$(MANSUFFIX) fglVertex3i.$(MANSUFFIX) \ +fglVertex3iv.$(MANSUFFIX) fglVertex3s.$(MANSUFFIX) \ +fglVertex3sv.$(MANSUFFIX) fglVertex4d.$(MANSUFFIX) \ +fglVertex4dv.$(MANSUFFIX) fglVertex4f.$(MANSUFFIX) \ +fglVertex4fv.$(MANSUFFIX) fglVertex4i.$(MANSUFFIX) \ +fglVertex4iv.$(MANSUFFIX) fglVertex4s.$(MANSUFFIX) \ +fglVertex4sv.$(MANSUFFIX) fglVertexPointer.$(MANSUFFIX) \ +fglViewport.$(MANSUFFIX) + +LINK_NAMES = \ +fglAccum.$(MANSUFFIX) fglAlphaFunc.$(MANSUFFIX) \ +fglAreTexturesResident.$(MANSUFFIX) fglArrayElement.$(MANSUFFIX) \ +fglBegin.$(MANSUFFIX) fglBindTexture.$(MANSUFFIX) \ +fglBitmap.$(MANSUFFIX) fglBlendColorEXT.$(MANSUFFIX) \ +fglBlendFunc.$(MANSUFFIX) fglCallList.$(MANSUFFIX) \ +fglCallLists.$(MANSUFFIX) fglClear.$(MANSUFFIX) \ +fglClearAccum.$(MANSUFFIX) fglClearColor.$(MANSUFFIX) \ +fglClearDepth.$(MANSUFFIX) fglClearIndex.$(MANSUFFIX) \ +fglClearStencil.$(MANSUFFIX) fglClipPlane.$(MANSUFFIX) \ +fglColor3b.$(MANSUFFIX) fglColorMask.$(MANSUFFIX) \ +fglColorMaterial.$(MANSUFFIX) fglColorPointer.$(MANSUFFIX) \ +fglCopyPixels.$(MANSUFFIX) fglCopyTexImage1D.$(MANSUFFIX) \ +fglCopyTexImage2D.$(MANSUFFIX) fglCopyTexSubImage1D.$(MANSUFFIX) \ +fglCopyTexSubImage2D.$(MANSUFFIX) fglCullFace.$(MANSUFFIX) \ +fglDeleteLists.$(MANSUFFIX) fglDeleteTextures.$(MANSUFFIX) \ +fglDepthFunc.$(MANSUFFIX) fglDepthMask.$(MANSUFFIX) \ +fglDepthRange.$(MANSUFFIX) fglDrawArrays.$(MANSUFFIX) \ +fglDrawBuffer.$(MANSUFFIX) fglDrawElements.$(MANSUFFIX) \ +fglDrawPixels.$(MANSUFFIX) fglEdgeFlag.$(MANSUFFIX) \ +fglEdgeFlagPointer.$(MANSUFFIX) fglEnable.$(MANSUFFIX) \ +fglEnableClientState.$(MANSUFFIX) fglEvalCoord1d.$(MANSUFFIX) \ +fglEvalMesh1.$(MANSUFFIX) fglEvalPoint1.$(MANSUFFIX) \ +fglFeedbackBuffer.$(MANSUFFIX) fglFinish.$(MANSUFFIX) \ +fglFlush.$(MANSUFFIX) fglFogf.$(MANSUFFIX) \ +fglFrontFace.$(MANSUFFIX) fglFrustum.$(MANSUFFIX) \ +fglGenLists.$(MANSUFFIX) fglGenTextures.$(MANSUFFIX) \ +fglGetBooleanv.$(MANSUFFIX) fglGetClipPlane.$(MANSUFFIX) \ +fglGetError.$(MANSUFFIX) fglGetLightfv.$(MANSUFFIX) \ +fglGetMapdv.$(MANSUFFIX) fglGetMaterialfv.$(MANSUFFIX) \ +fglGetPixelMapfv.$(MANSUFFIX) fglGetPointerv.$(MANSUFFIX) \ +fglGetPolygonStipple.$(MANSUFFIX) fglGetString.$(MANSUFFIX) \ +fglGetTexEnvfv.$(MANSUFFIX) fglGetTexGendv.$(MANSUFFIX) \ +fglGetTexImage.$(MANSUFFIX) fglGetTexLevelParameterfv.$(MANSUFFIX) \ +fglGetTexParameterfv.$(MANSUFFIX) fglHint.$(MANSUFFIX) \ +fglIndexMask.$(MANSUFFIX) fglIndexPointer.$(MANSUFFIX) \ +fglIndexd.$(MANSUFFIX) fglInitNames.$(MANSUFFIX) \ +fglInterleavedArrays.$(MANSUFFIX) fglIsEnabled.$(MANSUFFIX) \ +fglIsList.$(MANSUFFIX) fglIsTexture.$(MANSUFFIX) \ +fglLightModelf.$(MANSUFFIX) fglLightf.$(MANSUFFIX) \ +fglLineStipple.$(MANSUFFIX) fglLineWidth.$(MANSUFFIX) \ +fglListBase.$(MANSUFFIX) fglLoadIdentity.$(MANSUFFIX) \ +fglLoadMatrixd.$(MANSUFFIX) fglLoadName.$(MANSUFFIX) \ +fglLogicOp.$(MANSUFFIX) fglMap1d.$(MANSUFFIX) \ +fglMap2d.$(MANSUFFIX) fglMapGrid1d.$(MANSUFFIX) \ +fglMaterialf.$(MANSUFFIX) fglMatrixMode.$(MANSUFFIX) \ +fglMultMatrixd.$(MANSUFFIX) fglNewList.$(MANSUFFIX) \ +fglNormal3b.$(MANSUFFIX) fglNormalPointer.$(MANSUFFIX) \ +fglOrtho.$(MANSUFFIX) fglPassThrough.$(MANSUFFIX) \ +fglPixelMapfv.$(MANSUFFIX) fglPixelStoref.$(MANSUFFIX) \ +fglPixelTransferf.$(MANSUFFIX) fglPixelZoom.$(MANSUFFIX) \ +fglPointSize.$(MANSUFFIX) fglPolygonMode.$(MANSUFFIX) \ +fglPolygonOffset.$(MANSUFFIX) fglPolygonStipple.$(MANSUFFIX) \ +fglPrioritizeTextures.$(MANSUFFIX) fglPushAttrib.$(MANSUFFIX) \ +fglPushClientAttrib.$(MANSUFFIX) fglPushMatrix.$(MANSUFFIX) \ +fglPushName.$(MANSUFFIX) fglRasterPos2d.$(MANSUFFIX) \ +fglReadBuffer.$(MANSUFFIX) fglReadPixels.$(MANSUFFIX) \ +fglRectd.$(MANSUFFIX) fglRenderMode.$(MANSUFFIX) \ +fglRotated.$(MANSUFFIX) fglScaled.$(MANSUFFIX) \ +fglScissor.$(MANSUFFIX) fglSelectBuffer.$(MANSUFFIX) \ +fglShadeModel.$(MANSUFFIX) fglStencilFunc.$(MANSUFFIX) \ +fglStencilMask.$(MANSUFFIX) fglStencilOp.$(MANSUFFIX) \ +fglTexCoord1d.$(MANSUFFIX) fglTexCoordPointer.$(MANSUFFIX) \ +fglTexEnvf.$(MANSUFFIX) fglTexGend.$(MANSUFFIX) \ +fglTexImage1D.$(MANSUFFIX) fglTexImage2D.$(MANSUFFIX) \ +fglTexParameterf.$(MANSUFFIX) fglTexSubImage1D.$(MANSUFFIX) \ +fglTexSubImage2D.$(MANSUFFIX) fglTranslated.$(MANSUFFIX) \ +fglVertex2d.$(MANSUFFIX) fglVertexPointer.$(MANSUFFIX) \ +fglViewport.$(MANSUFFIX) + +ALIAS_NAMES = \ +fglColor3bv.$(MANSUFFIX) fglColor3d.$(MANSUFFIX) \ +fglColor3dv.$(MANSUFFIX) fglColor3f.$(MANSUFFIX) \ +fglColor3fv.$(MANSUFFIX) fglColor3i.$(MANSUFFIX) \ +fglColor3iv.$(MANSUFFIX) fglColor3s.$(MANSUFFIX) \ +fglColor3sv.$(MANSUFFIX) fglColor3ub.$(MANSUFFIX) \ +fglColor3ubv.$(MANSUFFIX) fglColor3ui.$(MANSUFFIX) \ +fglColor3uiv.$(MANSUFFIX) fglColor3us.$(MANSUFFIX) \ +fglColor3usv.$(MANSUFFIX) fglColor4b.$(MANSUFFIX) \ +fglColor4bv.$(MANSUFFIX) fglColor4d.$(MANSUFFIX) \ +fglColor4dv.$(MANSUFFIX) fglColor4f.$(MANSUFFIX) \ +fglColor4fv.$(MANSUFFIX) fglColor4i.$(MANSUFFIX) \ +fglColor4iv.$(MANSUFFIX) fglColor4s.$(MANSUFFIX) \ +fglColor4sv.$(MANSUFFIX) fglColor4ub.$(MANSUFFIX) \ +fglColor4ubv.$(MANSUFFIX) fglColor4ui.$(MANSUFFIX) \ +fglColor4uiv.$(MANSUFFIX) fglColor4us.$(MANSUFFIX) \ +fglColor4usv.$(MANSUFFIX) fglDisable.$(MANSUFFIX) \ +fglDisableClientState.$(MANSUFFIX) fglEdgeFlagv.$(MANSUFFIX) \ +fglEnd.$(MANSUFFIX) fglEndList.$(MANSUFFIX) \ +fglEvalCoord1dv.$(MANSUFFIX) fglEvalCoord1f.$(MANSUFFIX) \ +fglEvalCoord1fv.$(MANSUFFIX) fglEvalCoord2d.$(MANSUFFIX) \ +fglEvalCoord2dv.$(MANSUFFIX) fglEvalCoord2f.$(MANSUFFIX) \ +fglEvalCoord2fv.$(MANSUFFIX) fglEvalMesh2.$(MANSUFFIX) \ +fglEvalPoint2.$(MANSUFFIX) fglFogfv.$(MANSUFFIX) \ +fglFogi.$(MANSUFFIX) fglFogiv.$(MANSUFFIX) \ +fglGetDoublev.$(MANSUFFIX) fglGetFloatv.$(MANSUFFIX) \ +fglGetIntegerv.$(MANSUFFIX) fglGetLightiv.$(MANSUFFIX) \ +fglGetMapfv.$(MANSUFFIX) fglGetMapiv.$(MANSUFFIX) \ +fglGetMaterialiv.$(MANSUFFIX) fglGetPixelMapuiv.$(MANSUFFIX) \ +fglGetPixelMapusv.$(MANSUFFIX) fglGetTexEnviv.$(MANSUFFIX) \ +fglGetTexGenfv.$(MANSUFFIX) fglGetTexGeniv.$(MANSUFFIX) \ +fglGetTexLevelParameteriv.$(MANSUFFIX) fglGetTexParameteriv.$(MANSUFFIX) \ +fglIndexdv.$(MANSUFFIX) fglIndexf.$(MANSUFFIX) \ +fglIndexfv.$(MANSUFFIX) fglIndexi.$(MANSUFFIX) \ +fglIndexiv.$(MANSUFFIX) fglIndexs.$(MANSUFFIX) \ +fglIndexsv.$(MANSUFFIX) fglIndexub.$(MANSUFFIX) \ +fglIndexubv.$(MANSUFFIX) fglLightModelfv.$(MANSUFFIX) \ +fglLightModeli.$(MANSUFFIX) fglLightModeliv.$(MANSUFFIX) \ +fglLightfv.$(MANSUFFIX) fglLighti.$(MANSUFFIX) \ +fglLightiv.$(MANSUFFIX) fglLoadMatrixf.$(MANSUFFIX) \ +fglMap1f.$(MANSUFFIX) fglMap2f.$(MANSUFFIX) \ +fglMapGrid1f.$(MANSUFFIX) fglMapGrid2d.$(MANSUFFIX) \ +fglMapGrid2f.$(MANSUFFIX) fglMaterialfv.$(MANSUFFIX) \ +fglMateriali.$(MANSUFFIX) fglMaterialiv.$(MANSUFFIX) \ +fglMultMatrixf.$(MANSUFFIX) fglNormal3bv.$(MANSUFFIX) \ +fglNormal3d.$(MANSUFFIX) fglNormal3dv.$(MANSUFFIX) \ +fglNormal3f.$(MANSUFFIX) fglNormal3fv.$(MANSUFFIX) \ +fglNormal3i.$(MANSUFFIX) fglNormal3iv.$(MANSUFFIX) \ +fglNormal3s.$(MANSUFFIX) fglNormal3sv.$(MANSUFFIX) \ +fglPixelMapuiv.$(MANSUFFIX) fglPixelMapusv.$(MANSUFFIX) \ +fglPixelStorei.$(MANSUFFIX) fglPixelTransferi.$(MANSUFFIX) \ +fglPopAttrib.$(MANSUFFIX) fglPopClientAttrib.$(MANSUFFIX) \ +fglPopMatrix.$(MANSUFFIX) fglPopName.$(MANSUFFIX) \ +fglRasterPos2dv.$(MANSUFFIX) fglRasterPos2f.$(MANSUFFIX) \ +fglRasterPos2fv.$(MANSUFFIX) fglRasterPos2i.$(MANSUFFIX) \ +fglRasterPos2iv.$(MANSUFFIX) fglRasterPos2s.$(MANSUFFIX) \ +fglRasterPos2sv.$(MANSUFFIX) fglRasterPos3d.$(MANSUFFIX) \ +fglRasterPos3dv.$(MANSUFFIX) fglRasterPos3f.$(MANSUFFIX) \ +fglRasterPos3fv.$(MANSUFFIX) fglRasterPos3i.$(MANSUFFIX) \ +fglRasterPos3iv.$(MANSUFFIX) fglRasterPos3s.$(MANSUFFIX) \ +fglRasterPos3sv.$(MANSUFFIX) fglRasterPos4d.$(MANSUFFIX) \ +fglRasterPos4dv.$(MANSUFFIX) fglRasterPos4f.$(MANSUFFIX) \ +fglRasterPos4fv.$(MANSUFFIX) fglRasterPos4i.$(MANSUFFIX) \ +fglRasterPos4iv.$(MANSUFFIX) fglRasterPos4s.$(MANSUFFIX) \ +fglRasterPos4sv.$(MANSUFFIX) fglRectdv.$(MANSUFFIX) \ +fglRectf.$(MANSUFFIX) fglRectfv.$(MANSUFFIX) \ +fglRecti.$(MANSUFFIX) fglRectiv.$(MANSUFFIX) \ +fglRects.$(MANSUFFIX) fglRectsv.$(MANSUFFIX) \ +fglRotatef.$(MANSUFFIX) fglScalef.$(MANSUFFIX) \ +fglTexCoord1dv.$(MANSUFFIX) fglTexCoord1f.$(MANSUFFIX) \ +fglTexCoord1fv.$(MANSUFFIX) fglTexCoord1i.$(MANSUFFIX) \ +fglTexCoord1iv.$(MANSUFFIX) fglTexCoord1s.$(MANSUFFIX) \ +fglTexCoord1sv.$(MANSUFFIX) fglTexCoord2d.$(MANSUFFIX) \ +fglTexCoord2dv.$(MANSUFFIX) fglTexCoord2f.$(MANSUFFIX) \ +fglTexCoord2fv.$(MANSUFFIX) fglTexCoord2i.$(MANSUFFIX) \ +fglTexCoord2iv.$(MANSUFFIX) fglTexCoord2s.$(MANSUFFIX) \ +fglTexCoord2sv.$(MANSUFFIX) fglTexCoord3d.$(MANSUFFIX) \ +fglTexCoord3dv.$(MANSUFFIX) fglTexCoord3f.$(MANSUFFIX) \ +fglTexCoord3fv.$(MANSUFFIX) fglTexCoord3i.$(MANSUFFIX) \ +fglTexCoord3iv.$(MANSUFFIX) fglTexCoord3s.$(MANSUFFIX) \ +fglTexCoord3sv.$(MANSUFFIX) fglTexCoord4d.$(MANSUFFIX) \ +fglTexCoord4dv.$(MANSUFFIX) fglTexCoord4f.$(MANSUFFIX) \ +fglTexCoord4fv.$(MANSUFFIX) fglTexCoord4i.$(MANSUFFIX) \ +fglTexCoord4iv.$(MANSUFFIX) fglTexCoord4s.$(MANSUFFIX) \ +fglTexCoord4sv.$(MANSUFFIX) fglTexEnvfv.$(MANSUFFIX) \ +fglTexEnvi.$(MANSUFFIX) fglTexEnviv.$(MANSUFFIX) \ +fglTexGendv.$(MANSUFFIX) fglTexGenf.$(MANSUFFIX) \ +fglTexGenfv.$(MANSUFFIX) fglTexGeni.$(MANSUFFIX) \ +fglTexGeniv.$(MANSUFFIX) fglTexParameterfv.$(MANSUFFIX) \ +fglTexParameteri.$(MANSUFFIX) fglTexParameteriv.$(MANSUFFIX) \ +fglTranslatef.$(MANSUFFIX) fglVertex2dv.$(MANSUFFIX) \ +fglVertex2f.$(MANSUFFIX) fglVertex2fv.$(MANSUFFIX) \ +fglVertex2i.$(MANSUFFIX) fglVertex2iv.$(MANSUFFIX) \ +fglVertex2s.$(MANSUFFIX) fglVertex2sv.$(MANSUFFIX) \ +fglVertex3d.$(MANSUFFIX) fglVertex3dv.$(MANSUFFIX) \ +fglVertex3f.$(MANSUFFIX) fglVertex3fv.$(MANSUFFIX) \ +fglVertex3i.$(MANSUFFIX) fglVertex3iv.$(MANSUFFIX) \ +fglVertex3s.$(MANSUFFIX) fglVertex3sv.$(MANSUFFIX) \ +fglVertex4d.$(MANSUFFIX) fglVertex4dv.$(MANSUFFIX) \ +fglVertex4f.$(MANSUFFIX) fglVertex4fv.$(MANSUFFIX) \ +fglVertex4i.$(MANSUFFIX) fglVertex4iv.$(MANSUFFIX) \ +fglVertex4s.$(MANSUFFIX) fglVertex4sv.$(MANSUFFIX) + + +AllTarget($(MAN_PAGES)) + +list: + @for i in $(MAN_PAGES); do echo $$i; done; + +install_list: + @for i in $(MAN_PAGES); do echo $(LIBMANDIR)/$$i; done; + +install:: install.man + +clean:: + $(RM) $(LINK_NAMES) $(ALIAS_NAMES) + +InstallMultipleMan($(MAN_PAGES),$(LIBMANDIR)) + +LinkFile(fglAccum.$(MANSUFFIX), fglaccum.3gl) + +LinkFile(fglAlphaFunc.$(MANSUFFIX), fglalphafunc.3gl) + +LinkFile(fglAreTexturesResident.$(MANSUFFIX), fglaretexturesresident.3gl) + +LinkFile(fglArrayElement.$(MANSUFFIX), fglarrayelement.3gl) + +LinkFile(fglBegin.$(MANSUFFIX), fglbegin.3gl) +ManPageAlias(fglBegin, $(LIBMANDIR), fglEnd) + +LinkFile(fglBindTexture.$(MANSUFFIX), fglbindtexture.3gl) + +LinkFile(fglBitmap.$(MANSUFFIX), fglbitmap.3gl) + +LinkFile(fglBlendColorEXT.$(MANSUFFIX), fglblendcolorext.3gl) + +LinkFile(fglBlendFunc.$(MANSUFFIX), fglblendfunc.3gl) + +LinkFile(fglCallList.$(MANSUFFIX), fglcalllist.3gl) + +LinkFile(fglCallLists.$(MANSUFFIX), fglcalllists.3gl) + +LinkFile(fglClear.$(MANSUFFIX), fglclear.3gl) + +LinkFile(fglClearAccum.$(MANSUFFIX), fglclearaccum.3gl) + +LinkFile(fglClearColor.$(MANSUFFIX), fglclearcolor.3gl) + +LinkFile(fglClearDepth.$(MANSUFFIX), fglcleardepth.3gl) + +LinkFile(fglClearIndex.$(MANSUFFIX), fglclearindex.3gl) + +LinkFile(fglClearStencil.$(MANSUFFIX), fglclearstencil.3gl) + +LinkFile(fglClipPlane.$(MANSUFFIX), fglclipplane.3gl) + +LinkFile(fglColor3b.$(MANSUFFIX), fglcolor.3gl) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3d) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3f) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3i) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3s) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3ub) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3ui) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3us) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4b) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4d) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4f) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4i) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4s) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4ub) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4ui) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4us) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3bv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3dv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3fv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3iv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3sv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3ubv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3uiv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor3usv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4bv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4dv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4fv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4iv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4sv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4ubv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4uiv) +ManPageAlias(fglColor3b, $(LIBMANDIR), fglColor4usv) + +LinkFile(fglColorMask.$(MANSUFFIX), fglcolormask.3gl) + +LinkFile(fglColorMaterial.$(MANSUFFIX), fglcolormaterial.3gl) + +LinkFile(fglColorPointer.$(MANSUFFIX), fglcolorpointer.3gl) + +LinkFile(fglCopyPixels.$(MANSUFFIX), fglcopypixels.3gl) + +LinkFile(fglCopyTexImage1D.$(MANSUFFIX), fglcopyteximage1d.3gl) + +LinkFile(fglCopyTexImage2D.$(MANSUFFIX), fglcopyteximage2d.3gl) + +LinkFile(fglCopyTexSubImage1D.$(MANSUFFIX), fglcopytexsubimage1d.3gl) + +LinkFile(fglCopyTexSubImage2D.$(MANSUFFIX), fglcopytexsubimage2d.3gl) + +LinkFile(fglCullFace.$(MANSUFFIX), fglcullface.3gl) + +LinkFile(fglDeleteLists.$(MANSUFFIX), fgldeletelists.3gl) + +LinkFile(fglDeleteTextures.$(MANSUFFIX), fgldeletetextures.3gl) + +LinkFile(fglDepthFunc.$(MANSUFFIX), fgldepthfunc.3gl) + +LinkFile(fglDepthMask.$(MANSUFFIX), fgldepthmask.3gl) + +LinkFile(fglDepthRange.$(MANSUFFIX), fgldepthrange.3gl) + +LinkFile(fglDrawArrays.$(MANSUFFIX), fgldrawarrays.3gl) + +LinkFile(fglDrawBuffer.$(MANSUFFIX), fgldrawbuffer.3gl) + +LinkFile(fglDrawElements.$(MANSUFFIX), fgldrawelements.3gl) + +LinkFile(fglDrawPixels.$(MANSUFFIX), fgldrawpixels.3gl) + +LinkFile(fglEdgeFlag.$(MANSUFFIX), fgledgeflag.3gl) +ManPageAlias(fglEdgeFlag, $(LIBMANDIR), fglEdgeFlagv) + +LinkFile(fglEdgeFlagPointer.$(MANSUFFIX), fgledgeflagpointer.3gl) + +LinkFile(fglEnable.$(MANSUFFIX), fglenable.3gl) +ManPageAlias(fglEnable, $(LIBMANDIR), fglDisable) + +LinkFile(fglEnableClientState.$(MANSUFFIX), fglenableclientstate.3gl) +ManPageAlias(fglEnableClientState, $(LIBMANDIR), fglDisableClientState) + +LinkFile(fglEvalCoord1d.$(MANSUFFIX), fglevalcoord.3gl) +ManPageAlias(fglEvalCoord1d, $(LIBMANDIR), fglEvalCoord1f) +ManPageAlias(fglEvalCoord1d, $(LIBMANDIR), fglEvalCoord2d) +ManPageAlias(fglEvalCoord1d, $(LIBMANDIR), fglEvalCoord2f) +ManPageAlias(fglEvalCoord1d, $(LIBMANDIR), fglEvalCoord1dv) +ManPageAlias(fglEvalCoord1d, $(LIBMANDIR), fglEvalCoord1fv) +ManPageAlias(fglEvalCoord1d, $(LIBMANDIR), fglEvalCoord2dv) +ManPageAlias(fglEvalCoord1d, $(LIBMANDIR), fglEvalCoord2fv) + +LinkFile(fglEvalMesh1.$(MANSUFFIX), fglevalmesh.3gl) +ManPageAlias(fglEvalMesh1, $(LIBMANDIR), fglEvalMesh2) + +LinkFile(fglEvalPoint1.$(MANSUFFIX), fglevalpoint.3gl) +ManPageAlias(fglEvalPoint1, $(LIBMANDIR), fglEvalPoint2) + +LinkFile(fglFeedbackBuffer.$(MANSUFFIX), fglfeedbackbuffer.3gl) + +LinkFile(fglFinish.$(MANSUFFIX), fglfinish.3gl) + +LinkFile(fglFlush.$(MANSUFFIX), fglflush.3gl) + +LinkFile(fglFogf.$(MANSUFFIX), fglfog.3gl) +ManPageAlias(fglFogf, $(LIBMANDIR), fglFogi) +ManPageAlias(fglFogf, $(LIBMANDIR), fglFogfv) +ManPageAlias(fglFogf, $(LIBMANDIR), fglFogiv) + +LinkFile(fglFrontFace.$(MANSUFFIX), fglfrontface.3gl) + +LinkFile(fglFrustum.$(MANSUFFIX), fglfrustum.3gl) + +LinkFile(fglGenLists.$(MANSUFFIX), fglgenlists.3gl) + +LinkFile(fglGenTextures.$(MANSUFFIX), fglgentextures.3gl) + +LinkFile(fglGetBooleanv.$(MANSUFFIX), fglget.3gl) +ManPageAlias(fglGetBooleanv, $(LIBMANDIR), fglGetDoublev) +ManPageAlias(fglGetBooleanv, $(LIBMANDIR), fglGetFloatv) +ManPageAlias(fglGetBooleanv, $(LIBMANDIR), fglGetIntegerv) + +LinkFile(fglGetClipPlane.$(MANSUFFIX), fglgetclipplane.3gl) + +LinkFile(fglGetError.$(MANSUFFIX), fglgeterror.3gl) + +LinkFile(fglGetLightfv.$(MANSUFFIX), fglgetlight.3gl) +ManPageAlias(fglGetLightfv, $(LIBMANDIR), fglGetLightiv) + +LinkFile(fglGetMapdv.$(MANSUFFIX), fglgetmap.3gl) +ManPageAlias(fglGetMapdv, $(LIBMANDIR), fglGetMapfv) +ManPageAlias(fglGetMapdv, $(LIBMANDIR), fglGetMapiv) + +LinkFile(fglGetMaterialfv.$(MANSUFFIX), fglgetmaterial.3gl) +ManPageAlias(fglGetMaterialfv, $(LIBMANDIR), fglGetMaterialiv) + +LinkFile(fglGetPixelMapfv.$(MANSUFFIX), fglgetpixelmap.3gl) +ManPageAlias(fglGetPixelMapfv, $(LIBMANDIR), fglGetPixelMapuiv) +ManPageAlias(fglGetPixelMapfv, $(LIBMANDIR), fglGetPixelMapusv) + +LinkFile(fglGetPointerv.$(MANSUFFIX), fglgetpointerv.3gl) + +LinkFile(fglGetPolygonStipple.$(MANSUFFIX), fglgetpolygonstipple.3gl) + +LinkFile(fglGetString.$(MANSUFFIX), fglgetstring.3gl) + +LinkFile(fglGetTexEnvfv.$(MANSUFFIX), fglgettexenv.3gl) +ManPageAlias(fglGetTexEnvfv, $(LIBMANDIR), fglGetTexEnviv) + +LinkFile(fglGetTexGendv.$(MANSUFFIX), fglgettexgen.3gl) +ManPageAlias(fglGetTexGendv, $(LIBMANDIR), fglGetTexGenfv) +ManPageAlias(fglGetTexGendv, $(LIBMANDIR), fglGetTexGeniv) + +LinkFile(fglGetTexImage.$(MANSUFFIX), fglgetteximage.3gl) + +LinkFile(fglGetTexLevelParameterfv.$(MANSUFFIX), fglgettexlevelparameter.3gl) +ManPageAlias(fglGetTexLevelParameterfv, $(LIBMANDIR), fglGetTexLevelParameteriv) + +LinkFile(fglGetTexParameterfv.$(MANSUFFIX), fglgettexparameter.3gl) +ManPageAlias(fglGetTexParameterfv, $(LIBMANDIR), fglGetTexParameteriv) + +LinkFile(fglHint.$(MANSUFFIX), fglhint.3gl) + +LinkFile(fglIndexd.$(MANSUFFIX), fglindex.3gl) +ManPageAlias(fglIndexd, $(LIBMANDIR), fglIndexf) +ManPageAlias(fglIndexd, $(LIBMANDIR), fglIndexi) +ManPageAlias(fglIndexd, $(LIBMANDIR), fglIndexs) +ManPageAlias(fglIndexd, $(LIBMANDIR), fglIndexub) +ManPageAlias(fglIndexd, $(LIBMANDIR), fglIndexdv) +ManPageAlias(fglIndexd, $(LIBMANDIR), fglIndexfv) +ManPageAlias(fglIndexd, $(LIBMANDIR), fglIndexiv) +ManPageAlias(fglIndexd, $(LIBMANDIR), fglIndexsv) +ManPageAlias(fglIndexd, $(LIBMANDIR), fglIndexubv) + +LinkFile(fglIndexMask.$(MANSUFFIX), fglindexmask.3gl) + +LinkFile(fglIndexPointer.$(MANSUFFIX), fglindexpointer.3gl) + +LinkFile(fglInitNames.$(MANSUFFIX), fglinitnames.3gl) + +LinkFile(fglInterleavedArrays.$(MANSUFFIX), fglinterleavedarrays.3gl) + +LinkFile(fglIsEnabled.$(MANSUFFIX), fglisenabled.3gl) + +LinkFile(fglIsList.$(MANSUFFIX), fglislist.3gl) + +LinkFile(fglIsTexture.$(MANSUFFIX), fglistexture.3gl) + +LinkFile(fglLightf.$(MANSUFFIX), fgllight.3gl) +ManPageAlias(fglLightf, $(LIBMANDIR), fglLighti) +ManPageAlias(fglLightf, $(LIBMANDIR), fglLightfv) +ManPageAlias(fglLightf, $(LIBMANDIR), fglLightiv) + +LinkFile(fglLightModelf.$(MANSUFFIX), fgllightmodel.3gl) +ManPageAlias(fglLightModelf, $(LIBMANDIR), fglLightModeli) +ManPageAlias(fglLightModelf, $(LIBMANDIR), fglLightModelfv) +ManPageAlias(fglLightModelf, $(LIBMANDIR), fglLightModeliv) + +LinkFile(fglLineStipple.$(MANSUFFIX), fgllinestipple.3gl) + +LinkFile(fglLineWidth.$(MANSUFFIX), fgllinewidth.3gl) + +LinkFile(fglListBase.$(MANSUFFIX), fgllistbase.3gl) + +LinkFile(fglLoadIdentity.$(MANSUFFIX), fglloadidentity.3gl) + +LinkFile(fglLoadMatrixd.$(MANSUFFIX), fglloadmatrix.3gl) +ManPageAlias(fglLoadMatrixd, $(LIBMANDIR), fglLoadMatrixf) + +LinkFile(fglLoadName.$(MANSUFFIX), fglloadname.3gl) + +LinkFile(fglLogicOp.$(MANSUFFIX), fgllogicop.3gl) + +LinkFile(fglMap1d.$(MANSUFFIX), fglmap1.3gl) +ManPageAlias(fglMap1d, $(LIBMANDIR), fglMap1f) + +LinkFile(fglMap2d.$(MANSUFFIX), fglmap2.3gl) +ManPageAlias(fglMap2d, $(LIBMANDIR), fglMap2f) + +LinkFile(fglMapGrid1d.$(MANSUFFIX), fglmapgrid.3gl) +ManPageAlias(fglMapGrid1d, $(LIBMANDIR), fglMapGrid1f) +ManPageAlias(fglMapGrid1d, $(LIBMANDIR), fglMapGrid2d) +ManPageAlias(fglMapGrid1d, $(LIBMANDIR), fglMapGrid2f) + +LinkFile(fglMaterialf.$(MANSUFFIX), fglmaterial.3gl) +ManPageAlias(fglMaterialf, $(LIBMANDIR), fglMateriali) +ManPageAlias(fglMaterialf, $(LIBMANDIR), fglMaterialfv) +ManPageAlias(fglMaterialf, $(LIBMANDIR), fglMaterialiv) + +LinkFile(fglMatrixMode.$(MANSUFFIX), fglmatrixmode.3gl) + +LinkFile(fglMultMatrixd.$(MANSUFFIX), fglmultmatrix.3gl) +ManPageAlias(fglMultMatrixd, $(LIBMANDIR), fglMultMatrixf) + +LinkFile(fglNewList.$(MANSUFFIX), fglnewlist.3gl) +ManPageAlias(fglNewList, $(LIBMANDIR), fglEndList) + +LinkFile(fglNormal3b.$(MANSUFFIX), fglnormal.3gl) +ManPageAlias(fglNormal3b, $(LIBMANDIR), fglNormal3d) +ManPageAlias(fglNormal3b, $(LIBMANDIR), fglNormal3f) +ManPageAlias(fglNormal3b, $(LIBMANDIR), fglNormal3i) +ManPageAlias(fglNormal3b, $(LIBMANDIR), fglNormal3s) +ManPageAlias(fglNormal3b, $(LIBMANDIR), fglNormal3bv) +ManPageAlias(fglNormal3b, $(LIBMANDIR), fglNormal3dv) +ManPageAlias(fglNormal3b, $(LIBMANDIR), fglNormal3fv) +ManPageAlias(fglNormal3b, $(LIBMANDIR), fglNormal3iv) +ManPageAlias(fglNormal3b, $(LIBMANDIR), fglNormal3sv) + +LinkFile(fglNormalPointer.$(MANSUFFIX), fglnormalpointer.3gl) + +LinkFile(fglOrtho.$(MANSUFFIX), fglortho.3gl) + +LinkFile(fglPassThrough.$(MANSUFFIX), fglpassthrough.3gl) + +LinkFile(fglPixelMapfv.$(MANSUFFIX), fglpixelmap.3gl) +ManPageAlias(fglPixelMapfv, $(LIBMANDIR), fglPixelMapuiv) +ManPageAlias(fglPixelMapfv, $(LIBMANDIR), fglPixelMapusv) + +LinkFile(fglPixelStoref.$(MANSUFFIX), fglpixelstore.3gl) +ManPageAlias(fglPixelStoref, $(LIBMANDIR), fglPixelStorei) + +LinkFile(fglPixelTransferf.$(MANSUFFIX), fglpixeltransfer.3gl) +ManPageAlias(fglPixelTransferf, $(LIBMANDIR), fglPixelTransferi) + +LinkFile(fglPixelZoom.$(MANSUFFIX), fglpixelzoom.3gl) + +LinkFile(fglPointSize.$(MANSUFFIX), fglpointsize.3gl) + +LinkFile(fglPolygonMode.$(MANSUFFIX), fglpolygonmode.3gl) + +LinkFile(fglPolygonOffset.$(MANSUFFIX), fglpolygonoffset.3gl) + +LinkFile(fglPolygonStipple.$(MANSUFFIX), fglpolygonstipple.3gl) + +LinkFile(fglPrioritizeTextures.$(MANSUFFIX), fglprioritizetextures.3gl) + +LinkFile(fglPushAttrib.$(MANSUFFIX), fglpushattrib.3gl) +ManPageAlias(fglPushAttrib, $(LIBMANDIR), fglPopAttrib) + +LinkFile(fglPushClientAttrib.$(MANSUFFIX), fglpushclientattrib.3gl) +ManPageAlias(fglPushClientAttrib, $(LIBMANDIR), fglPopClientAttrib) + +LinkFile(fglPushMatrix.$(MANSUFFIX), fglpushmatrix.3gl) +ManPageAlias(fglPushMatrix, $(LIBMANDIR), fglPopMatrix) + +LinkFile(fglPushName.$(MANSUFFIX), fglpushname.3gl) +ManPageAlias(fglPushName, $(LIBMANDIR), fglPopName) + +LinkFile(fglRasterPos2d.$(MANSUFFIX), fglrasterpos.3gl) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos2f) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos2i) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos2s) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos3d) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos3f) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos3i) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos3s) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos4d) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos4f) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos4i) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos4s) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos2dv) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos2fv) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos2iv) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos2sv) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos3dv) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos3fv) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos3iv) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos3sv) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos4dv) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos4fv) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos4iv) +ManPageAlias(fglRasterPos2d, $(LIBMANDIR), fglRasterPos4sv) + +LinkFile(fglReadBuffer.$(MANSUFFIX), fglreadbuffer.3gl) + +LinkFile(fglReadPixels.$(MANSUFFIX), fglreadpixels.3gl) + +LinkFile(fglRectd.$(MANSUFFIX), fglrect.3gl) +ManPageAlias(fglRectd, $(LIBMANDIR), fglRectf) +ManPageAlias(fglRectd, $(LIBMANDIR), fglRecti) +ManPageAlias(fglRectd, $(LIBMANDIR), fglRects) +ManPageAlias(fglRectd, $(LIBMANDIR), fglRectdv) +ManPageAlias(fglRectd, $(LIBMANDIR), fglRectfv) +ManPageAlias(fglRectd, $(LIBMANDIR), fglRectiv) +ManPageAlias(fglRectd, $(LIBMANDIR), fglRectsv) + +LinkFile(fglRenderMode.$(MANSUFFIX), fglrendermode.3gl) + +LinkFile(fglRotated.$(MANSUFFIX), fglrotate.3gl) +ManPageAlias(fglRotated, $(LIBMANDIR), fglRotatef) + +LinkFile(fglScaled.$(MANSUFFIX), fglscale.3gl) +ManPageAlias(fglScaled, $(LIBMANDIR), fglScalef) + +LinkFile(fglScissor.$(MANSUFFIX), fglscissor.3gl) + +LinkFile(fglSelectBuffer.$(MANSUFFIX), fglselectbuffer.3gl) + +LinkFile(fglShadeModel.$(MANSUFFIX), fglshademodel.3gl) + +LinkFile(fglStencilFunc.$(MANSUFFIX), fglstencilfunc.3gl) + +LinkFile(fglStencilMask.$(MANSUFFIX), fglstencilmask.3gl) + +LinkFile(fglStencilOp.$(MANSUFFIX), fglstencilop.3gl) + +LinkFile(fglTexCoord1d.$(MANSUFFIX), fgltexcoord.3gl) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord1f) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord1i) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord1s) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord2d) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord2f) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord2i) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord2s) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord3d) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord3f) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord3i) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord3s) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord4d) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord4f) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord4i) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord4s) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord1dv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord1fv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord1iv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord1sv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord2dv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord2fv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord2iv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord2sv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord3dv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord3fv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord3iv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord3sv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord4dv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord4fv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord4iv) +ManPageAlias(fglTexCoord1d, $(LIBMANDIR), fglTexCoord4sv) + +LinkFile(fglTexCoordPointer.$(MANSUFFIX), fgltexcoordpointer.3gl) + +LinkFile(fglTexEnvf.$(MANSUFFIX), fgltexenv.3gl) +ManPageAlias(fglTexEnvf, $(LIBMANDIR), fglTexEnvi) +ManPageAlias(fglTexEnvf, $(LIBMANDIR), fglTexEnvfv) +ManPageAlias(fglTexEnvf, $(LIBMANDIR), fglTexEnviv) + +LinkFile(fglTexGend.$(MANSUFFIX), fgltexgen.3gl) +ManPageAlias(fglTexGend, $(LIBMANDIR), fglTexGenf) +ManPageAlias(fglTexGend, $(LIBMANDIR), fglTexGeni) +ManPageAlias(fglTexGend, $(LIBMANDIR), fglTexGendv) +ManPageAlias(fglTexGend, $(LIBMANDIR), fglTexGenfv) +ManPageAlias(fglTexGend, $(LIBMANDIR), fglTexGeniv) + +LinkFile(fglTexImage1D.$(MANSUFFIX), fglteximage1d.3gl) + +LinkFile(fglTexImage2D.$(MANSUFFIX), fglteximage2d.3gl) + +LinkFile(fglTexParameterf.$(MANSUFFIX), fgltexparameter.3gl) +ManPageAlias(fglTexParameterf, $(LIBMANDIR), fglTexParameteri) +ManPageAlias(fglTexParameterf, $(LIBMANDIR), fglTexParameterfv) +ManPageAlias(fglTexParameterf, $(LIBMANDIR), fglTexParameteriv) + +LinkFile(fglTexSubImage1D.$(MANSUFFIX), fgltexsubimage1d.3gl) + +LinkFile(fglTexSubImage2D.$(MANSUFFIX), fgltexsubimage2d.3gl) + +LinkFile(fglTranslated.$(MANSUFFIX), fgltranslate.3gl) +ManPageAlias(fglTranslated, $(LIBMANDIR), fglTranslatef) + +LinkFile(fglVertex2d.$(MANSUFFIX), fglvertex.3gl) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex2f) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex2i) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex2s) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex3d) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex3f) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex3i) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex3s) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex4d) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex4f) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex4i) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex4s) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex2dv) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex2fv) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex2iv) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex2sv) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex3dv) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex3fv) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex3iv) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex3sv) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex4dv) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex4fv) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex4iv) +ManPageAlias(fglVertex2d, $(LIBMANDIR), fglVertex4sv) + +LinkFile(fglVertexPointer.$(MANSUFFIX), fglvertexpointer.3gl) + +LinkFile(fglViewport.$(MANSUFFIX), fglviewport.3gl) + Index: xc/extras/ogl-sample/main/doc/man/mangl/ftn/f diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/ftn/f:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/ftn/f Mon Jan 14 17:13:14 2002 @@ -0,0 +1 @@ +.Op + f Index: xc/extras/ogl-sample/main/doc/man/mangl/html/Distfile diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/html/Distfile:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/html/Distfile Mon Jan 14 17:13:18 2002 @@ -0,0 +1,143 @@ +# +# $Date$ $Revision$ +# $Header: //depot/main/doc/man/mangl/html/Distfile#4 $ +# + +DISTDIR_SI = /xc/doc/hardcopy/GL/html/gl + +DISTFILES_SI = \ + accum.html \ + alphafunc.html \ + aretexturesresident.html \ + arrayelement.html \ + begin.html \ + bindtexture.html \ + bitmap.html \ + blendfunc.html \ + calllist.html \ + calllists.html \ + clear.html \ + clearaccum.html \ + clearcolor.html \ + cleardepth.html \ + clearindex.html \ + clearstencil.html \ + clipplane.html \ + color.html \ + colormask.html \ + colormaterial.html \ + colorpointer.html \ + copypixels.html \ + copyteximage1d.html \ + copyteximage2d.html \ + copytexsubimage1d.html \ + copytexsubimage2d.html \ + cullface.html \ + deletelists.html \ + deletetextures.html \ + depthfunc.html \ + depthmask.html \ + depthrange.html \ + drawarrays.html \ + drawbuffer.html \ + drawelements.html \ + drawpixels.html \ + edgeflag.html \ + edgeflagpointer.html \ + enable.html \ + enableclientstate.html \ + evalcoord.html \ + evalmesh.html \ + evalpoint.html \ + feedbackbuffer.html \ + finish.html \ + flush.html \ + fog.html \ + frontface.html \ + frustum.html \ + genlists.html \ + gentextures.html \ + get.html \ + getclipplane.html \ + geterror.html \ + getlight.html \ + getmap.html \ + getmaterial.html \ + getpixelmap.html \ + getpointerv.html \ + getpolygonstipple.html \ + getstring.html \ + gettexenv.html \ + gettexgen.html \ + getteximage.html \ + gettexlevelparameter.html \ + gettexparameter.html \ + hint.html \ + index.html \ + indexmask.html \ + indexpointer.html \ + initnames.html \ + interleavedarrays.html \ + isenabled.html \ + islist.html \ + istexture.html \ + light.html \ + lightmodel.html \ + linestipple.html \ + linewidth.html \ + listbase.html \ + loadidentity.html \ + loadmatrix.html \ + loadname.html \ + logicop.html \ + map1.html \ + map2.html \ + mapgrid.html \ + material.html \ + matrixmode.html \ + multmatrix.html \ + newlist.html \ + normal.html \ + normalpointer.html \ + ortho.html \ + passthrough.html \ + pixelmap.html \ + pixelstore.html \ + pixeltransfer.html \ + pixelzoom.html \ + pointsize.html \ + polygonmode.html \ + polygonoffset.html \ + polygonstipple.html \ + prioritizetextures.html \ + pushattrib.html \ + pushclientattrib.html \ + pushmatrix.html \ + pushname.html \ + rasterpos.html \ + readbuffer.html \ + readpixels.html \ + rect.html \ + rendermode.html \ + rotate.html \ + scale.html \ + scissor.html \ + selectbuffer.html \ + shademodel.html \ + stencilfunc.html \ + stencilmask.html \ + stencilop.html \ + texcoord.html \ + texcoordpointer.html \ + texenv.html \ + texgen.html \ + teximage1d.html \ + teximage2d.html \ + texparameter.html \ + texsubimage1d.html \ + texsubimage2d.html \ + translate.html \ + vertex.html \ + vertexpointer.html \ + viewport.html \ + $(NULL) Index: xc/extras/ogl-sample/main/doc/man/mangl/html/GNUmakefile diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/html/GNUmakefile:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/html/GNUmakefile Mon Jan 14 17:13:18 2002 @@ -0,0 +1,69 @@ +#!gmake +# +# License Applicability. Except to the extent portions of this file are +# made subject to an alternative license as permitted in the SGI Free +# Software License B, Version 1.1 (the "License"), the contents of this +# file are subject only to the provisions of 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, 1600 +# Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +# +# http://oss.sgi.com/projects/FreeB +# +# Note that, as provided in the License, the Software is distributed on an +# "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +# DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +# CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +# PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +# +# Original Code. The Original Code is: OpenGL Sample Implementation, +# Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +# Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +# Copyright in any portions created by third parties is as indicated +# elsewhere herein. All Rights Reserved. +# +# Additional Notice Provisions: The application programming interfaces +# established by SGI in conjunction with the Original Code are The +# OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +# April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +# 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +# Window System(R) (Version 1.3), released October 19, 1998. This software +# was created using the OpenGL(R) version 1.2.1 Sample Implementation +# published by SGI, but has not been independently verified as being +# compliant with the OpenGL(R) version 1.2.1 Specification. +# +# $Date$ $Revision$ +# $Header: //depot/main/doc/man/mangl/html/GNUmakefile#9 $ + +COMMONPREF = standard +include $(ROOT)/usr/include/make/commondefs + +DEPTH = ../.. +LANGOPT = c +PREFIX = gl +MANSRC = ../standard + +MANPREF = man +include $(DEPTH)/mandefs + +# Dependencies are in the man page source directory +VPATH = $(shell cd $(MANSRC) ; pwd) + +default: + $(MAKE) html + +headers headers_install libs libs_install install apps: + +distsi: default + $(MAKE) $(COMMONPREF)$@ + +distoss: + $(MAKE) $(COMMONPREF)$@ + +html: $(patsubst %.3gl,%.html,$(notdir $(wildcard $(MANSRC)/*.3gl))) + +clobber: + rm -rf *.html + +include $(DEPTH)/manrules +include $(COMMONRULES) Index: xc/extras/ogl-sample/main/doc/man/mangl/html_ftn/Distfile diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/html_ftn/Distfile:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/html_ftn/Distfile Mon Jan 14 17:13:21 2002 @@ -0,0 +1,143 @@ +# +# $Date$ $Revision$ +# $Header: //depot/main/doc/man/mangl/html_ftn/Distfile#4 $ +# + +DISTDIR_SI = /xc/doc/hardcopy/GL/html/gl_ftn + +DISTFILES_SI = \ + fglaccum.html \ + fglalphafunc.html \ + fglaretexturesresident.html \ + fglarrayelement.html \ + fglbegin.html \ + fglbindtexture.html \ + fglbitmap.html \ + fglblendfunc.html \ + fglcalllist.html \ + fglcalllists.html \ + fglclear.html \ + fglclearaccum.html \ + fglclearcolor.html \ + fglcleardepth.html \ + fglclearindex.html \ + fglclearstencil.html \ + fglclipplane.html \ + fglcolor.html \ + fglcolormask.html \ + fglcolormaterial.html \ + fglcolorpointer.html \ + fglcopypixels.html \ + fglcopyteximage1d.html \ + fglcopyteximage2d.html \ + fglcopytexsubimage1d.html \ + fglcopytexsubimage2d.html \ + fglcullface.html \ + fgldeletelists.html \ + fgldeletetextures.html \ + fgldepthfunc.html \ + fgldepthmask.html \ + fgldepthrange.html \ + fgldrawarrays.html \ + fgldrawbuffer.html \ + fgldrawelements.html \ + fgldrawpixels.html \ + fgledgeflag.html \ + fgledgeflagpointer.html \ + fglenable.html \ + fglenableclientstate.html \ + fglevalcoord.html \ + fglevalmesh.html \ + fglevalpoint.html \ + fglfeedbackbuffer.html \ + fglfinish.html \ + fglflush.html \ + fglfog.html \ + fglfrontface.html \ + fglfrustum.html \ + fglgenlists.html \ + fglgentextures.html \ + fglget.html \ + fglgetclipplane.html \ + fglgeterror.html \ + fglgetlight.html \ + fglgetmap.html \ + fglgetmaterial.html \ + fglgetpixelmap.html \ + fglgetpointerv.html \ + fglgetpolygonstipple.html \ + fglgetstring.html \ + fglgettexenv.html \ + fglgettexgen.html \ + fglgetteximage.html \ + fglgettexlevelparameter.html \ + fglgettexparameter.html \ + fglhint.html \ + fglindex.html \ + fglindexmask.html \ + fglindexpointer.html \ + fglinitnames.html \ + fglinterleavedarrays.html \ + fglisenabled.html \ + fglislist.html \ + fglistexture.html \ + fgllight.html \ + fgllightmodel.html \ + fgllinestipple.html \ + fgllinewidth.html \ + fgllistbase.html \ + fglloadidentity.html \ + fglloadmatrix.html \ + fglloadname.html \ + fgllogicop.html \ + fglmap1.html \ + fglmap2.html \ + fglmapgrid.html \ + fglmaterial.html \ + fglmatrixmode.html \ + fglmultmatrix.html \ + fglnewlist.html \ + fglnormal.html \ + fglnormalpointer.html \ + fglortho.html \ + fglpassthrough.html \ + fglpixelmap.html \ + fglpixelstore.html \ + fglpixeltransfer.html \ + fglpixelzoom.html \ + fglpointsize.html \ + fglpolygonmode.html \ + fglpolygonoffset.html \ + fglpolygonstipple.html \ + fglprioritizetextures.html \ + fglpushattrib.html \ + fglpushclientattrib.html \ + fglpushmatrix.html \ + fglpushname.html \ + fglrasterpos.html \ + fglreadbuffer.html \ + fglreadpixels.html \ + fglrect.html \ + fglrendermode.html \ + fglrotate.html \ + fglscale.html \ + fglscissor.html \ + fglselectbuffer.html \ + fglshademodel.html \ + fglstencilfunc.html \ + fglstencilmask.html \ + fglstencilop.html \ + fgltexcoord.html \ + fgltexcoordpointer.html \ + fgltexenv.html \ + fgltexgen.html \ + fglteximage1d.html \ + fglteximage2d.html \ + fgltexparameter.html \ + fgltexsubimage1d.html \ + fgltexsubimage2d.html \ + fgltranslate.html \ + fglvertex.html \ + fglvertexpointer.html \ + fglviewport.html \ + $(NULL) Index: xc/extras/ogl-sample/main/doc/man/mangl/html_ftn/GNUmakefile diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/html_ftn/GNUmakefile:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/html_ftn/GNUmakefile Mon Jan 14 17:13:21 2002 @@ -0,0 +1,69 @@ +#!gmake +# +# License Applicability. Except to the extent portions of this file are +# made subject to an alternative license as permitted in the SGI Free +# Software License B, Version 1.1 (the "License"), the contents of this +# file are subject only to the provisions of 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, 1600 +# Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +# +# http://oss.sgi.com/projects/FreeB +# +# Note that, as provided in the License, the Software is distributed on an +# "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +# DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +# CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +# PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +# +# Original Code. The Original Code is: OpenGL Sample Implementation, +# Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +# Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +# Copyright in any portions created by third parties is as indicated +# elsewhere herein. All Rights Reserved. +# +# Additional Notice Provisions: The application programming interfaces +# established by SGI in conjunction with the Original Code are The +# OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +# April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +# 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +# Window System(R) (Version 1.3), released October 19, 1998. This software +# was created using the OpenGL(R) version 1.2.1 Sample Implementation +# published by SGI, but has not been independently verified as being +# compliant with the OpenGL(R) version 1.2.1 Specification. +# +# $Date$ $Revision$ +# $Header: //depot/main/doc/man/mangl/html_ftn/GNUmakefile#9 $ + +COMMONPREF = standard +include $(ROOT)/usr/include/make/commondefs + +DEPTH = ../.. +LANGOPT = c +PREFIX = gl +MANSRC = ../ftn + +MANPREF = man +include $(DEPTH)/mandefs + +# Dependencies are in the man page source directory +VPATH = $(shell cd $(MANSRC) ; pwd) + +default: + $(MAKE) html + +headers headers_install libs libs_install install apps: + +distsi: default + $(MAKE) $(COMMONPREF)$@ + +distoss: + $(MAKE) $(COMMONPREF)$@ + +html: $(patsubst %.3gl,%.html,$(notdir $(wildcard $(MANSRC)/*.3gl))) + +clobber: + rm -rf *.html + +include $(DEPTH)/manrules +include $(COMMONRULES) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/Distfile diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/Distfile:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/Distfile Mon Jan 14 17:13:28 2002 @@ -0,0 +1,144 @@ +# +# $Date$ $Revision$ +# $Header: //depot/main/doc/man/mangl/standard/Distfile#5 $ +# + +DISTDIR_SI = /xc/doc/man/GL/gl + +DISTFILES_SI = \ + Imakefile \ + accum.3gl \ + alphafunc.3gl \ + aretexturesresident.3gl \ + arrayelement.3gl \ + begin.3gl \ + bindtexture.3gl \ + bitmap.3gl \ + blendfunc.3gl \ + calllist.3gl \ + calllists.3gl \ + clear.3gl \ + clearaccum.3gl \ + clearcolor.3gl \ + cleardepth.3gl \ + clearindex.3gl \ + clearstencil.3gl \ + clipplane.3gl \ + color.3gl \ + colormask.3gl \ + colormaterial.3gl \ + colorpointer.3gl \ + copypixels.3gl \ + copyteximage1d.3gl \ + copyteximage2d.3gl \ + copytexsubimage1d.3gl \ + copytexsubimage2d.3gl \ + cullface.3gl \ + deletelists.3gl \ + deletetextures.3gl \ + depthfunc.3gl \ + depthmask.3gl \ + depthrange.3gl \ + drawarrays.3gl \ + drawbuffer.3gl \ + drawelements.3gl \ + drawpixels.3gl \ + edgeflag.3gl \ + edgeflagpointer.3gl \ + enable.3gl \ + enableclientstate.3gl \ + evalcoord.3gl \ + evalmesh.3gl \ + evalpoint.3gl \ + feedbackbuffer.3gl \ + finish.3gl \ + flush.3gl \ + fog.3gl \ + frontface.3gl \ + frustum.3gl \ + genlists.3gl \ + gentextures.3gl \ + get.3gl \ + getclipplane.3gl \ + geterror.3gl \ + getlight.3gl \ + getmap.3gl \ + getmaterial.3gl \ + getpixelmap.3gl \ + getpointerv.3gl \ + getpolygonstipple.3gl \ + getstring.3gl \ + gettexenv.3gl \ + gettexgen.3gl \ + getteximage.3gl \ + gettexlevelparameter.3gl \ + gettexparameter.3gl \ + hint.3gl \ + index.3gl \ + indexmask.3gl \ + indexpointer.3gl \ + initnames.3gl \ + interleavedarrays.3gl \ + isenabled.3gl \ + islist.3gl \ + istexture.3gl \ + light.3gl \ + lightmodel.3gl \ + linestipple.3gl \ + linewidth.3gl \ + listbase.3gl \ + loadidentity.3gl \ + loadmatrix.3gl \ + loadname.3gl \ + logicop.3gl \ + map1.3gl \ + map2.3gl \ + mapgrid.3gl \ + material.3gl \ + matrixmode.3gl \ + multmatrix.3gl \ + newlist.3gl \ + normal.3gl \ + normalpointer.3gl \ + ortho.3gl \ + passthrough.3gl \ + pixelmap.3gl \ + pixelstore.3gl \ + pixeltransfer.3gl \ + pixelzoom.3gl \ + pointsize.3gl \ + polygonmode.3gl \ + polygonoffset.3gl \ + polygonstipple.3gl \ + prioritizetextures.3gl \ + pushattrib.3gl \ + pushclientattrib.3gl \ + pushmatrix.3gl \ + pushname.3gl \ + rasterpos.3gl \ + readbuffer.3gl \ + readpixels.3gl \ + rect.3gl \ + rendermode.3gl \ + rotate.3gl \ + scale.3gl \ + scissor.3gl \ + selectbuffer.3gl \ + shademodel.3gl \ + stencilfunc.3gl \ + stencilmask.3gl \ + stencilop.3gl \ + texcoord.3gl \ + texcoordpointer.3gl \ + texenv.3gl \ + texgen.3gl \ + teximage1d.3gl \ + teximage2d.3gl \ + texparameter.3gl \ + texsubimage1d.3gl \ + texsubimage2d.3gl \ + translate.3gl \ + vertex.3gl \ + vertexpointer.3gl \ + viewport.3gl \ + $(NULL) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/GNUmakefile diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/GNUmakefile:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/GNUmakefile Mon Jan 14 17:13:28 2002 @@ -0,0 +1,97 @@ +#!gmake +# +# License Applicability. Except to the extent portions of this file are +# made subject to an alternative license as permitted in the SGI Free +# Software License B, Version 1.1 (the "License"), the contents of this +# file are subject only to the provisions of 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, 1600 +# Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +# +# http://oss.sgi.com/projects/FreeB +# +# Note that, as provided in the License, the Software is distributed on an +# "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +# DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +# CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +# PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +# +# Original Code. The Original Code is: OpenGL Sample Implementation, +# Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +# Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +# Copyright in any portions created by third parties is as indicated +# elsewhere herein. All Rights Reserved. +# +# Additional Notice Provisions: The application programming interfaces +# established by SGI in conjunction with the Original Code are The +# OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +# April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +# 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +# Window System(R) (Version 1.3), released October 19, 1998. This software +# was created using the OpenGL(R) version 1.2.1 Sample Implementation +# published by SGI, but has not been independently verified as being +# compliant with the OpenGL(R) version 1.2.1 Specification. +# +# $Date$ $Revision$ +# $Header: //depot/main/doc/man/mangl/standard/GNUmakefile#11 $ + +# NOTES: +# - The file "lor-c.mn" contains the source for the List of Routines section +# of the C edition of the GL Reference Guide. The usual targets +# lor-c.p, lor-c.ps, and lor-c.psv exist for it; however, it does not have +# a .3g suffix because we don't want to include it as a on-line man page. +# The file should be generated!!! + +COMMONPREF = standard +include $(ROOT)/usr/include/make/commondefs + +DEPTH = ../.. +LANGOPT = c +PREFIX = gl +IDB_PATH = /usr/catman/g_man/cat3/standard + +MANPREF = man +include $(DEPTH)/mandefs + +APIFILE = $(ROOT)/usr/include/GL/gl.h + +VERSION = Version 1.2 +DATE = 24 September 1999 +RELEASE = 1.2.1 +MMFLAGS = -rs2 +M4OPTS = -B8192 + +LEGALSUF1 = 3g# +LEGALSUF2 = 3g# +LEGALSUF3 = 3g# +LEGALSUF4 = 3g# + +LOCALPRINTLISTFILTER = | sed -e '/^intro\.p$$/d' | (echo intro.p ; cat ) + +default: + $(MAKE) manpages + +headers headers_install libs libs_install apps: + +distsi: default + $(MAKE) $(COMMONPREF)$@ + +distoss: + $(MAKE) $(COMMONPREF)$@ + +manpages: $(patsubst %.gl,%.3gl,$(wildcard *.gl)) + +install: manpages + for file in *.3gl; do \ + install -D -m 644 $$file ${ROOT}/usr/man/man3/gl`basename $$file .3gl`.3gl ; \ + done + +const.diff: const.awk *.gl $(ROOT)/usr/include/GL/gl.h + awk -f const.awk $(ROOT)/usr/include/GL/gl.h *.gl | \ + sort | uniq > const.diff + +clobber: + rm -f *.3gl + +include $(DEPTH)/manrules +include $(COMMONRULES) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/Imakefile diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/Imakefile:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/Imakefile Mon Jan 14 17:13:28 2002 @@ -0,0 +1,874 @@ +XCOMM License Applicability. Except to the extent portions of this file are +XCOMM made subject to an alternative license as permitted in the SGI Free +XCOMM Software License B, Version 1.1 (the "License"), the contents of this +XCOMM file are subject only to the provisions of the License. You may not use +XCOMM this file except in compliance with the License. You may obtain a copy +XCOMM of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +XCOMM Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +XCOMM +XCOMM http://oss.sgi.com/projects/FreeB +XCOMM +XCOMM Note that, as provided in the License, the Software is distributed on an +XCOMM "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +XCOMM DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +XCOMM CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +XCOMM PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +XCOMM +XCOMM Original Code. The Original Code is: OpenGL Sample Implementation, +XCOMM Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +XCOMM Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +XCOMM Copyright in any portions created by third parties is as indicated +XCOMM elsewhere herein. All Rights Reserved. +XCOMM +XCOMM Additional Notice Provisions: The application programming interfaces +XCOMM established by SGI in conjunction with the Original Code are The +XCOMM OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +XCOMM April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +XCOMM 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +XCOMM Window System(R) (Version 1.3), released October 19, 1998. This software +XCOMM was created using the OpenGL(R) version 1.2.1 Sample Implementation +XCOMM published by SGI, but has not been independently verified as being +XCOMM compliant with the OpenGL(R) version 1.2.1 Specification. +XCOMM + +#ifdef ManPageAlias +#undef ManPageAlias +#endif +#define ManPageAlias(file,destdir,alias) @@\ +alias.$(MANSUFFIX): file.$(MANSUFFIX) @@\ + echo .so `basename destdir`/file.$(MANSUFFIX) > alias.$(MANSUFFIX) @@\ + +MANSUFFIX = 3gl + +MAN_PAGES = \ +glAccum.$(MANSUFFIX) glAlphaFunc.$(MANSUFFIX) \ +glAreTexturesResident.$(MANSUFFIX) glArrayElement.$(MANSUFFIX) \ +glBegin.$(MANSUFFIX) glBindTexture.$(MANSUFFIX) \ +glBitmap.$(MANSUFFIX) glBlendColorEXT.$(MANSUFFIX) \ +glBlendFunc.$(MANSUFFIX) glCallList.$(MANSUFFIX) \ +glCallLists.$(MANSUFFIX) glClear.$(MANSUFFIX) \ +glClearAccum.$(MANSUFFIX) glClearColor.$(MANSUFFIX) \ +glClearDepth.$(MANSUFFIX) glClearIndex.$(MANSUFFIX) \ +glClearStencil.$(MANSUFFIX) glClipPlane.$(MANSUFFIX) \ +glColor3b.$(MANSUFFIX) glColor3bv.$(MANSUFFIX) \ +glColor3d.$(MANSUFFIX) glColor3dv.$(MANSUFFIX) \ +glColor3f.$(MANSUFFIX) glColor3fv.$(MANSUFFIX) \ +glColor3i.$(MANSUFFIX) glColor3iv.$(MANSUFFIX) \ +glColor3s.$(MANSUFFIX) glColor3sv.$(MANSUFFIX) \ +glColor3ub.$(MANSUFFIX) glColor3ubv.$(MANSUFFIX) \ +glColor3ui.$(MANSUFFIX) glColor3uiv.$(MANSUFFIX) \ +glColor3us.$(MANSUFFIX) glColor3usv.$(MANSUFFIX) \ +glColor4b.$(MANSUFFIX) glColor4bv.$(MANSUFFIX) \ +glColor4d.$(MANSUFFIX) glColor4dv.$(MANSUFFIX) \ +glColor4f.$(MANSUFFIX) glColor4fv.$(MANSUFFIX) \ +glColor4i.$(MANSUFFIX) glColor4iv.$(MANSUFFIX) \ +glColor4s.$(MANSUFFIX) glColor4sv.$(MANSUFFIX) \ +glColor4ub.$(MANSUFFIX) glColor4ubv.$(MANSUFFIX) \ +glColor4ui.$(MANSUFFIX) glColor4uiv.$(MANSUFFIX) \ +glColor4us.$(MANSUFFIX) glColor4usv.$(MANSUFFIX) \ +glColorMask.$(MANSUFFIX) glColorMaterial.$(MANSUFFIX) \ +glColorPointer.$(MANSUFFIX) glCopyPixels.$(MANSUFFIX) \ +glCopyTexImage1D.$(MANSUFFIX) glCopyTexImage2D.$(MANSUFFIX) \ +glCopyTexSubImage1D.$(MANSUFFIX) glCopyTexSubImage2D.$(MANSUFFIX) \ +glCullFace.$(MANSUFFIX) glDeleteLists.$(MANSUFFIX) \ +glDeleteTextures.$(MANSUFFIX) glDepthFunc.$(MANSUFFIX) \ +glDepthMask.$(MANSUFFIX) glDepthRange.$(MANSUFFIX) \ +glDisable.$(MANSUFFIX) glDisableClientState.$(MANSUFFIX) \ +glDrawArrays.$(MANSUFFIX) glDrawBuffer.$(MANSUFFIX) \ +glDrawElements.$(MANSUFFIX) glDrawPixels.$(MANSUFFIX) \ +glEdgeFlag.$(MANSUFFIX) glEdgeFlagPointer.$(MANSUFFIX) \ +glEdgeFlagv.$(MANSUFFIX) glEnable.$(MANSUFFIX) \ +glEnableClientState.$(MANSUFFIX) glEnd.$(MANSUFFIX) \ +glEndList.$(MANSUFFIX) glEvalCoord1d.$(MANSUFFIX) \ +glEvalCoord1dv.$(MANSUFFIX) glEvalCoord1f.$(MANSUFFIX) \ +glEvalCoord1fv.$(MANSUFFIX) glEvalCoord2d.$(MANSUFFIX) \ +glEvalCoord2dv.$(MANSUFFIX) glEvalCoord2f.$(MANSUFFIX) \ +glEvalCoord2fv.$(MANSUFFIX) glEvalMesh1.$(MANSUFFIX) \ +glEvalMesh2.$(MANSUFFIX) glEvalPoint1.$(MANSUFFIX) \ +glEvalPoint2.$(MANSUFFIX) glFeedbackBuffer.$(MANSUFFIX) \ +glFinish.$(MANSUFFIX) glFlush.$(MANSUFFIX) \ +glFogf.$(MANSUFFIX) glFogfv.$(MANSUFFIX) \ +glFogi.$(MANSUFFIX) glFogiv.$(MANSUFFIX) \ +glFrontFace.$(MANSUFFIX) glFrustum.$(MANSUFFIX) \ +glGenLists.$(MANSUFFIX) glGenTextures.$(MANSUFFIX) \ +glGetBooleanv.$(MANSUFFIX) glGetClipPlane.$(MANSUFFIX) \ +glGetDoublev.$(MANSUFFIX) glGetError.$(MANSUFFIX) \ +glGetFloatv.$(MANSUFFIX) glGetIntegerv.$(MANSUFFIX) \ +glGetLightfv.$(MANSUFFIX) glGetLightiv.$(MANSUFFIX) \ +glGetMapdv.$(MANSUFFIX) glGetMapfv.$(MANSUFFIX) \ +glGetMapiv.$(MANSUFFIX) glGetMaterialfv.$(MANSUFFIX) \ +glGetMaterialiv.$(MANSUFFIX) glGetPixelMapfv.$(MANSUFFIX) \ +glGetPixelMapuiv.$(MANSUFFIX) glGetPixelMapusv.$(MANSUFFIX) \ +glGetPointerv.$(MANSUFFIX) glGetPolygonStipple.$(MANSUFFIX) \ +glGetString.$(MANSUFFIX) glGetTexEnvfv.$(MANSUFFIX) \ +glGetTexEnviv.$(MANSUFFIX) glGetTexGendv.$(MANSUFFIX) \ +glGetTexGenfv.$(MANSUFFIX) glGetTexGeniv.$(MANSUFFIX) \ +glGetTexImage.$(MANSUFFIX) glGetTexLevelParameterfv.$(MANSUFFIX) \ +glGetTexLevelParameteriv.$(MANSUFFIX) glGetTexParameterfv.$(MANSUFFIX) \ +glGetTexParameteriv.$(MANSUFFIX) glHint.$(MANSUFFIX) \ +glIndexMask.$(MANSUFFIX) glIndexPointer.$(MANSUFFIX) \ +glIndexd.$(MANSUFFIX) glIndexdv.$(MANSUFFIX) \ +glIndexf.$(MANSUFFIX) glIndexfv.$(MANSUFFIX) \ +glIndexi.$(MANSUFFIX) glIndexiv.$(MANSUFFIX) \ +glIndexs.$(MANSUFFIX) glIndexsv.$(MANSUFFIX) \ +glIndexub.$(MANSUFFIX) glIndexubv.$(MANSUFFIX) \ +glInitNames.$(MANSUFFIX) glInterleavedArrays.$(MANSUFFIX) \ +glIsEnabled.$(MANSUFFIX) glIsList.$(MANSUFFIX) \ +glIsTexture.$(MANSUFFIX) glLightModelf.$(MANSUFFIX) \ +glLightModelfv.$(MANSUFFIX) glLightModeli.$(MANSUFFIX) \ +glLightModeliv.$(MANSUFFIX) glLightf.$(MANSUFFIX) \ +glLightfv.$(MANSUFFIX) glLighti.$(MANSUFFIX) \ +glLightiv.$(MANSUFFIX) glLineStipple.$(MANSUFFIX) \ +glLineWidth.$(MANSUFFIX) glListBase.$(MANSUFFIX) \ +glLoadIdentity.$(MANSUFFIX) glLoadMatrixd.$(MANSUFFIX) \ +glLoadMatrixf.$(MANSUFFIX) glLoadName.$(MANSUFFIX) \ +glLogicOp.$(MANSUFFIX) glMap1d.$(MANSUFFIX) \ +glMap1f.$(MANSUFFIX) glMap2d.$(MANSUFFIX) \ +glMap2f.$(MANSUFFIX) glMapGrid1d.$(MANSUFFIX) \ +glMapGrid1f.$(MANSUFFIX) glMapGrid2d.$(MANSUFFIX) \ +glMapGrid2f.$(MANSUFFIX) glMaterialf.$(MANSUFFIX) \ +glMaterialfv.$(MANSUFFIX) glMateriali.$(MANSUFFIX) \ +glMaterialiv.$(MANSUFFIX) glMatrixMode.$(MANSUFFIX) \ +glMultMatrixd.$(MANSUFFIX) glMultMatrixf.$(MANSUFFIX) \ +glNewList.$(MANSUFFIX) glNormal3b.$(MANSUFFIX) \ +glNormal3bv.$(MANSUFFIX) glNormal3d.$(MANSUFFIX) \ +glNormal3dv.$(MANSUFFIX) glNormal3f.$(MANSUFFIX) \ +glNormal3fv.$(MANSUFFIX) glNormal3i.$(MANSUFFIX) \ +glNormal3iv.$(MANSUFFIX) glNormal3s.$(MANSUFFIX) \ +glNormal3sv.$(MANSUFFIX) glNormalPointer.$(MANSUFFIX) \ +glOrtho.$(MANSUFFIX) glPassThrough.$(MANSUFFIX) \ +glPixelMapfv.$(MANSUFFIX) glPixelMapuiv.$(MANSUFFIX) \ +glPixelMapusv.$(MANSUFFIX) glPixelStoref.$(MANSUFFIX) \ +glPixelStorei.$(MANSUFFIX) glPixelTransferf.$(MANSUFFIX) \ +glPixelTransferi.$(MANSUFFIX) glPixelZoom.$(MANSUFFIX) \ +glPointSize.$(MANSUFFIX) glPolygonMode.$(MANSUFFIX) \ +glPolygonOffset.$(MANSUFFIX) glPolygonStipple.$(MANSUFFIX) \ +glPopAttrib.$(MANSUFFIX) glPopClientAttrib.$(MANSUFFIX) \ +glPopMatrix.$(MANSUFFIX) glPopName.$(MANSUFFIX) \ +glPrioritizeTextures.$(MANSUFFIX) glPushAttrib.$(MANSUFFIX) \ +glPushClientAttrib.$(MANSUFFIX) glPushMatrix.$(MANSUFFIX) \ +glPushName.$(MANSUFFIX) glRasterPos2d.$(MANSUFFIX) \ +glRasterPos2dv.$(MANSUFFIX) glRasterPos2f.$(MANSUFFIX) \ +glRasterPos2fv.$(MANSUFFIX) glRasterPos2i.$(MANSUFFIX) \ +glRasterPos2iv.$(MANSUFFIX) glRasterPos2s.$(MANSUFFIX) \ +glRasterPos2sv.$(MANSUFFIX) glRasterPos3d.$(MANSUFFIX) \ +glRasterPos3dv.$(MANSUFFIX) glRasterPos3f.$(MANSUFFIX) \ +glRasterPos3fv.$(MANSUFFIX) glRasterPos3i.$(MANSUFFIX) \ +glRasterPos3iv.$(MANSUFFIX) glRasterPos3s.$(MANSUFFIX) \ +glRasterPos3sv.$(MANSUFFIX) glRasterPos4d.$(MANSUFFIX) \ +glRasterPos4dv.$(MANSUFFIX) glRasterPos4f.$(MANSUFFIX) \ +glRasterPos4fv.$(MANSUFFIX) glRasterPos4i.$(MANSUFFIX) \ +glRasterPos4iv.$(MANSUFFIX) glRasterPos4s.$(MANSUFFIX) \ +glRasterPos4sv.$(MANSUFFIX) glReadBuffer.$(MANSUFFIX) \ +glReadPixels.$(MANSUFFIX) glRectd.$(MANSUFFIX) \ +glRectdv.$(MANSUFFIX) glRectf.$(MANSUFFIX) \ +glRectfv.$(MANSUFFIX) glRecti.$(MANSUFFIX) \ +glRectiv.$(MANSUFFIX) glRects.$(MANSUFFIX) \ +glRectsv.$(MANSUFFIX) glRenderMode.$(MANSUFFIX) \ +glRotated.$(MANSUFFIX) glRotatef.$(MANSUFFIX) \ +glScaled.$(MANSUFFIX) glScalef.$(MANSUFFIX) \ +glScissor.$(MANSUFFIX) glSelectBuffer.$(MANSUFFIX) \ +glShadeModel.$(MANSUFFIX) glStencilFunc.$(MANSUFFIX) \ +glStencilMask.$(MANSUFFIX) glStencilOp.$(MANSUFFIX) \ +glTexCoord1d.$(MANSUFFIX) glTexCoord1dv.$(MANSUFFIX) \ +glTexCoord1f.$(MANSUFFIX) glTexCoord1fv.$(MANSUFFIX) \ +glTexCoord1i.$(MANSUFFIX) glTexCoord1iv.$(MANSUFFIX) \ +glTexCoord1s.$(MANSUFFIX) glTexCoord1sv.$(MANSUFFIX) \ +glTexCoord2d.$(MANSUFFIX) glTexCoord2dv.$(MANSUFFIX) \ +glTexCoord2f.$(MANSUFFIX) glTexCoord2fv.$(MANSUFFIX) \ +glTexCoord2i.$(MANSUFFIX) glTexCoord2iv.$(MANSUFFIX) \ +glTexCoord2s.$(MANSUFFIX) glTexCoord2sv.$(MANSUFFIX) \ +glTexCoord3d.$(MANSUFFIX) glTexCoord3dv.$(MANSUFFIX) \ +glTexCoord3f.$(MANSUFFIX) glTexCoord3fv.$(MANSUFFIX) \ +glTexCoord3i.$(MANSUFFIX) glTexCoord3iv.$(MANSUFFIX) \ +glTexCoord3s.$(MANSUFFIX) glTexCoord3sv.$(MANSUFFIX) \ +glTexCoord4d.$(MANSUFFIX) glTexCoord4dv.$(MANSUFFIX) \ +glTexCoord4f.$(MANSUFFIX) glTexCoord4fv.$(MANSUFFIX) \ +glTexCoord4i.$(MANSUFFIX) glTexCoord4iv.$(MANSUFFIX) \ +glTexCoord4s.$(MANSUFFIX) glTexCoord4sv.$(MANSUFFIX) \ +glTexCoordPointer.$(MANSUFFIX) glTexEnvf.$(MANSUFFIX) \ +glTexEnvfv.$(MANSUFFIX) glTexEnvi.$(MANSUFFIX) \ +glTexEnviv.$(MANSUFFIX) glTexGend.$(MANSUFFIX) \ +glTexGendv.$(MANSUFFIX) glTexGenf.$(MANSUFFIX) \ +glTexGenfv.$(MANSUFFIX) glTexGeni.$(MANSUFFIX) \ +glTexGeniv.$(MANSUFFIX) glTexImage1D.$(MANSUFFIX) \ +glTexImage2D.$(MANSUFFIX) glTexParameterf.$(MANSUFFIX) \ +glTexParameterfv.$(MANSUFFIX) glTexParameteri.$(MANSUFFIX) \ +glTexParameteriv.$(MANSUFFIX) glTexSubImage1D.$(MANSUFFIX) \ +glTexSubImage2D.$(MANSUFFIX) glTranslated.$(MANSUFFIX) \ +glTranslatef.$(MANSUFFIX) glVertex2d.$(MANSUFFIX) \ +glVertex2dv.$(MANSUFFIX) glVertex2f.$(MANSUFFIX) \ +glVertex2fv.$(MANSUFFIX) glVertex2i.$(MANSUFFIX) \ +glVertex2iv.$(MANSUFFIX) glVertex2s.$(MANSUFFIX) \ +glVertex2sv.$(MANSUFFIX) glVertex3d.$(MANSUFFIX) \ +glVertex3dv.$(MANSUFFIX) glVertex3f.$(MANSUFFIX) \ +glVertex3fv.$(MANSUFFIX) glVertex3i.$(MANSUFFIX) \ +glVertex3iv.$(MANSUFFIX) glVertex3s.$(MANSUFFIX) \ +glVertex3sv.$(MANSUFFIX) glVertex4d.$(MANSUFFIX) \ +glVertex4dv.$(MANSUFFIX) glVertex4f.$(MANSUFFIX) \ +glVertex4fv.$(MANSUFFIX) glVertex4i.$(MANSUFFIX) \ +glVertex4iv.$(MANSUFFIX) glVertex4s.$(MANSUFFIX) \ +glVertex4sv.$(MANSUFFIX) glVertexPointer.$(MANSUFFIX) \ +glViewport.$(MANSUFFIX) + +LINK_NAMES = \ +glAccum.$(MANSUFFIX) glAlphaFunc.$(MANSUFFIX) \ +glAreTexturesResident.$(MANSUFFIX) glArrayElement.$(MANSUFFIX) \ +glBegin.$(MANSUFFIX) glBindTexture.$(MANSUFFIX) \ +glBitmap.$(MANSUFFIX) glBlendColorEXT.$(MANSUFFIX) \ +glBlendFunc.$(MANSUFFIX) glCallList.$(MANSUFFIX) \ +glCallLists.$(MANSUFFIX) glClear.$(MANSUFFIX) \ +glClearAccum.$(MANSUFFIX) glClearColor.$(MANSUFFIX) \ +glClearDepth.$(MANSUFFIX) glClearIndex.$(MANSUFFIX) \ +glClearStencil.$(MANSUFFIX) glClipPlane.$(MANSUFFIX) \ +glColor3b.$(MANSUFFIX) glColorMask.$(MANSUFFIX) \ +glColorMaterial.$(MANSUFFIX) glColorPointer.$(MANSUFFIX) \ +glCopyPixels.$(MANSUFFIX) glCopyTexImage1D.$(MANSUFFIX) \ +glCopyTexImage2D.$(MANSUFFIX) glCopyTexSubImage1D.$(MANSUFFIX) \ +glCopyTexSubImage2D.$(MANSUFFIX) glCullFace.$(MANSUFFIX) \ +glDeleteLists.$(MANSUFFIX) glDeleteTextures.$(MANSUFFIX) \ +glDepthFunc.$(MANSUFFIX) glDepthMask.$(MANSUFFIX) \ +glDepthRange.$(MANSUFFIX) glDrawArrays.$(MANSUFFIX) \ +glDrawBuffer.$(MANSUFFIX) glDrawElements.$(MANSUFFIX) \ +glDrawPixels.$(MANSUFFIX) glEdgeFlag.$(MANSUFFIX) \ +glEdgeFlagPointer.$(MANSUFFIX) glEnable.$(MANSUFFIX) \ +glEnableClientState.$(MANSUFFIX) glEvalCoord1d.$(MANSUFFIX) \ +glEvalMesh1.$(MANSUFFIX) glEvalPoint1.$(MANSUFFIX) \ +glFeedbackBuffer.$(MANSUFFIX) glFinish.$(MANSUFFIX) \ +glFlush.$(MANSUFFIX) glFogf.$(MANSUFFIX) \ +glFrontFace.$(MANSUFFIX) glFrustum.$(MANSUFFIX) \ +glGenLists.$(MANSUFFIX) glGenTextures.$(MANSUFFIX) \ +glGetBooleanv.$(MANSUFFIX) glGetClipPlane.$(MANSUFFIX) \ +glGetError.$(MANSUFFIX) glGetLightfv.$(MANSUFFIX) \ +glGetMapdv.$(MANSUFFIX) glGetMaterialfv.$(MANSUFFIX) \ +glGetPixelMapfv.$(MANSUFFIX) glGetPointerv.$(MANSUFFIX) \ +glGetPolygonStipple.$(MANSUFFIX) glGetString.$(MANSUFFIX) \ +glGetTexEnvfv.$(MANSUFFIX) glGetTexGendv.$(MANSUFFIX) \ +glGetTexImage.$(MANSUFFIX) glGetTexLevelParameterfv.$(MANSUFFIX) \ +glGetTexParameterfv.$(MANSUFFIX) glHint.$(MANSUFFIX) \ +glIndexMask.$(MANSUFFIX) glIndexPointer.$(MANSUFFIX) \ +glIndexd.$(MANSUFFIX) glInitNames.$(MANSUFFIX) \ +glInterleavedArrays.$(MANSUFFIX) glIsEnabled.$(MANSUFFIX) \ +glIsList.$(MANSUFFIX) glIsTexture.$(MANSUFFIX) \ +glLightModelf.$(MANSUFFIX) glLightf.$(MANSUFFIX) \ +glLineStipple.$(MANSUFFIX) glLineWidth.$(MANSUFFIX) \ +glListBase.$(MANSUFFIX) glLoadIdentity.$(MANSUFFIX) \ +glLoadMatrixd.$(MANSUFFIX) glLoadName.$(MANSUFFIX) \ +glLogicOp.$(MANSUFFIX) glMap1d.$(MANSUFFIX) \ +glMap2d.$(MANSUFFIX) glMapGrid1d.$(MANSUFFIX) \ +glMaterialf.$(MANSUFFIX) glMatrixMode.$(MANSUFFIX) \ +glMultMatrixd.$(MANSUFFIX) glNewList.$(MANSUFFIX) \ +glNormal3b.$(MANSUFFIX) glNormalPointer.$(MANSUFFIX) \ +glOrtho.$(MANSUFFIX) glPassThrough.$(MANSUFFIX) \ +glPixelMapfv.$(MANSUFFIX) glPixelStoref.$(MANSUFFIX) \ +glPixelTransferf.$(MANSUFFIX) glPixelZoom.$(MANSUFFIX) \ +glPointSize.$(MANSUFFIX) glPolygonMode.$(MANSUFFIX) \ +glPolygonOffset.$(MANSUFFIX) glPolygonStipple.$(MANSUFFIX) \ +glPrioritizeTextures.$(MANSUFFIX) glPushAttrib.$(MANSUFFIX) \ +glPushClientAttrib.$(MANSUFFIX) glPushMatrix.$(MANSUFFIX) \ +glPushName.$(MANSUFFIX) glRasterPos2d.$(MANSUFFIX) \ +glReadBuffer.$(MANSUFFIX) glReadPixels.$(MANSUFFIX) \ +glRectd.$(MANSUFFIX) glRenderMode.$(MANSUFFIX) \ +glRotated.$(MANSUFFIX) glScaled.$(MANSUFFIX) \ +glScissor.$(MANSUFFIX) glSelectBuffer.$(MANSUFFIX) \ +glShadeModel.$(MANSUFFIX) glStencilFunc.$(MANSUFFIX) \ +glStencilMask.$(MANSUFFIX) glStencilOp.$(MANSUFFIX) \ +glTexCoord1d.$(MANSUFFIX) glTexCoordPointer.$(MANSUFFIX) \ +glTexEnvf.$(MANSUFFIX) glTexGend.$(MANSUFFIX) \ +glTexImage1D.$(MANSUFFIX) glTexImage2D.$(MANSUFFIX) \ +glTexParameterf.$(MANSUFFIX) glTexSubImage1D.$(MANSUFFIX) \ +glTexSubImage2D.$(MANSUFFIX) glTranslated.$(MANSUFFIX) \ +glVertex2d.$(MANSUFFIX) glVertexPointer.$(MANSUFFIX) \ +glViewport.$(MANSUFFIX) + +ALIAS_NAMES = \ +glColor3bv.$(MANSUFFIX) glColor3d.$(MANSUFFIX) \ +glColor3dv.$(MANSUFFIX) glColor3f.$(MANSUFFIX) \ +glColor3fv.$(MANSUFFIX) glColor3i.$(MANSUFFIX) \ +glColor3iv.$(MANSUFFIX) glColor3s.$(MANSUFFIX) \ +glColor3sv.$(MANSUFFIX) glColor3ub.$(MANSUFFIX) \ +glColor3ubv.$(MANSUFFIX) glColor3ui.$(MANSUFFIX) \ +glColor3uiv.$(MANSUFFIX) glColor3us.$(MANSUFFIX) \ +glColor3usv.$(MANSUFFIX) glColor4b.$(MANSUFFIX) \ +glColor4bv.$(MANSUFFIX) glColor4d.$(MANSUFFIX) \ +glColor4dv.$(MANSUFFIX) glColor4f.$(MANSUFFIX) \ +glColor4fv.$(MANSUFFIX) glColor4i.$(MANSUFFIX) \ +glColor4iv.$(MANSUFFIX) glColor4s.$(MANSUFFIX) \ +glColor4sv.$(MANSUFFIX) glColor4ub.$(MANSUFFIX) \ +glColor4ubv.$(MANSUFFIX) glColor4ui.$(MANSUFFIX) \ +glColor4uiv.$(MANSUFFIX) glColor4us.$(MANSUFFIX) \ +glColor4usv.$(MANSUFFIX) glDisable.$(MANSUFFIX) \ +glDisableClientState.$(MANSUFFIX) glEdgeFlagv.$(MANSUFFIX) \ +glEnd.$(MANSUFFIX) glEndList.$(MANSUFFIX) \ +glEvalCoord1dv.$(MANSUFFIX) glEvalCoord1f.$(MANSUFFIX) \ +glEvalCoord1fv.$(MANSUFFIX) glEvalCoord2d.$(MANSUFFIX) \ +glEvalCoord2dv.$(MANSUFFIX) glEvalCoord2f.$(MANSUFFIX) \ +glEvalCoord2fv.$(MANSUFFIX) glEvalMesh2.$(MANSUFFIX) \ +glEvalPoint2.$(MANSUFFIX) glFogfv.$(MANSUFFIX) \ +glFogi.$(MANSUFFIX) glFogiv.$(MANSUFFIX) \ +glGetDoublev.$(MANSUFFIX) glGetFloatv.$(MANSUFFIX) \ +glGetIntegerv.$(MANSUFFIX) glGetLightiv.$(MANSUFFIX) \ +glGetMapfv.$(MANSUFFIX) glGetMapiv.$(MANSUFFIX) \ +glGetMaterialiv.$(MANSUFFIX) glGetPixelMapuiv.$(MANSUFFIX) \ +glGetPixelMapusv.$(MANSUFFIX) glGetTexEnviv.$(MANSUFFIX) \ +glGetTexGenfv.$(MANSUFFIX) glGetTexGeniv.$(MANSUFFIX) \ +glGetTexLevelParameteriv.$(MANSUFFIX) glGetTexParameteriv.$(MANSUFFIX) \ +glIndexdv.$(MANSUFFIX) glIndexf.$(MANSUFFIX) \ +glIndexfv.$(MANSUFFIX) glIndexi.$(MANSUFFIX) \ +glIndexiv.$(MANSUFFIX) glIndexs.$(MANSUFFIX) \ +glIndexsv.$(MANSUFFIX) glIndexub.$(MANSUFFIX) \ +glIndexubv.$(MANSUFFIX) glLightModelfv.$(MANSUFFIX) \ +glLightModeli.$(MANSUFFIX) glLightModeliv.$(MANSUFFIX) \ +glLightfv.$(MANSUFFIX) glLighti.$(MANSUFFIX) \ +glLightiv.$(MANSUFFIX) glLoadMatrixf.$(MANSUFFIX) \ +glMap1f.$(MANSUFFIX) glMap2f.$(MANSUFFIX) \ +glMapGrid1f.$(MANSUFFIX) glMapGrid2d.$(MANSUFFIX) \ +glMapGrid2f.$(MANSUFFIX) glMaterialfv.$(MANSUFFIX) \ +glMateriali.$(MANSUFFIX) glMaterialiv.$(MANSUFFIX) \ +glMultMatrixf.$(MANSUFFIX) glNormal3bv.$(MANSUFFIX) \ +glNormal3d.$(MANSUFFIX) glNormal3dv.$(MANSUFFIX) \ +glNormal3f.$(MANSUFFIX) glNormal3fv.$(MANSUFFIX) \ +glNormal3i.$(MANSUFFIX) glNormal3iv.$(MANSUFFIX) \ +glNormal3s.$(MANSUFFIX) glNormal3sv.$(MANSUFFIX) \ +glPixelMapuiv.$(MANSUFFIX) glPixelMapusv.$(MANSUFFIX) \ +glPixelStorei.$(MANSUFFIX) glPixelTransferi.$(MANSUFFIX) \ +glPopAttrib.$(MANSUFFIX) glPopClientAttrib.$(MANSUFFIX) \ +glPopMatrix.$(MANSUFFIX) glPopName.$(MANSUFFIX) \ +glRasterPos2dv.$(MANSUFFIX) glRasterPos2f.$(MANSUFFIX) \ +glRasterPos2fv.$(MANSUFFIX) glRasterPos2i.$(MANSUFFIX) \ +glRasterPos2iv.$(MANSUFFIX) glRasterPos2s.$(MANSUFFIX) \ +glRasterPos2sv.$(MANSUFFIX) glRasterPos3d.$(MANSUFFIX) \ +glRasterPos3dv.$(MANSUFFIX) glRasterPos3f.$(MANSUFFIX) \ +glRasterPos3fv.$(MANSUFFIX) glRasterPos3i.$(MANSUFFIX) \ +glRasterPos3iv.$(MANSUFFIX) glRasterPos3s.$(MANSUFFIX) \ +glRasterPos3sv.$(MANSUFFIX) glRasterPos4d.$(MANSUFFIX) \ +glRasterPos4dv.$(MANSUFFIX) glRasterPos4f.$(MANSUFFIX) \ +glRasterPos4fv.$(MANSUFFIX) glRasterPos4i.$(MANSUFFIX) \ +glRasterPos4iv.$(MANSUFFIX) glRasterPos4s.$(MANSUFFIX) \ +glRasterPos4sv.$(MANSUFFIX) glRectdv.$(MANSUFFIX) \ +glRectf.$(MANSUFFIX) glRectfv.$(MANSUFFIX) \ +glRecti.$(MANSUFFIX) glRectiv.$(MANSUFFIX) \ +glRects.$(MANSUFFIX) glRectsv.$(MANSUFFIX) \ +glRotatef.$(MANSUFFIX) glScalef.$(MANSUFFIX) \ +glTexCoord1dv.$(MANSUFFIX) glTexCoord1f.$(MANSUFFIX) \ +glTexCoord1fv.$(MANSUFFIX) glTexCoord1i.$(MANSUFFIX) \ +glTexCoord1iv.$(MANSUFFIX) glTexCoord1s.$(MANSUFFIX) \ +glTexCoord1sv.$(MANSUFFIX) glTexCoord2d.$(MANSUFFIX) \ +glTexCoord2dv.$(MANSUFFIX) glTexCoord2f.$(MANSUFFIX) \ +glTexCoord2fv.$(MANSUFFIX) glTexCoord2i.$(MANSUFFIX) \ +glTexCoord2iv.$(MANSUFFIX) glTexCoord2s.$(MANSUFFIX) \ +glTexCoord2sv.$(MANSUFFIX) glTexCoord3d.$(MANSUFFIX) \ +glTexCoord3dv.$(MANSUFFIX) glTexCoord3f.$(MANSUFFIX) \ +glTexCoord3fv.$(MANSUFFIX) glTexCoord3i.$(MANSUFFIX) \ +glTexCoord3iv.$(MANSUFFIX) glTexCoord3s.$(MANSUFFIX) \ +glTexCoord3sv.$(MANSUFFIX) glTexCoord4d.$(MANSUFFIX) \ +glTexCoord4dv.$(MANSUFFIX) glTexCoord4f.$(MANSUFFIX) \ +glTexCoord4fv.$(MANSUFFIX) glTexCoord4i.$(MANSUFFIX) \ +glTexCoord4iv.$(MANSUFFIX) glTexCoord4s.$(MANSUFFIX) \ +glTexCoord4sv.$(MANSUFFIX) glTexEnvfv.$(MANSUFFIX) \ +glTexEnvi.$(MANSUFFIX) glTexEnviv.$(MANSUFFIX) \ +glTexGendv.$(MANSUFFIX) glTexGenf.$(MANSUFFIX) \ +glTexGenfv.$(MANSUFFIX) glTexGeni.$(MANSUFFIX) \ +glTexGeniv.$(MANSUFFIX) glTexParameterfv.$(MANSUFFIX) \ +glTexParameteri.$(MANSUFFIX) glTexParameteriv.$(MANSUFFIX) \ +glTranslatef.$(MANSUFFIX) glVertex2dv.$(MANSUFFIX) \ +glVertex2f.$(MANSUFFIX) glVertex2fv.$(MANSUFFIX) \ +glVertex2i.$(MANSUFFIX) glVertex2iv.$(MANSUFFIX) \ +glVertex2s.$(MANSUFFIX) glVertex2sv.$(MANSUFFIX) \ +glVertex3d.$(MANSUFFIX) glVertex3dv.$(MANSUFFIX) \ +glVertex3f.$(MANSUFFIX) glVertex3fv.$(MANSUFFIX) \ +glVertex3i.$(MANSUFFIX) glVertex3iv.$(MANSUFFIX) \ +glVertex3s.$(MANSUFFIX) glVertex3sv.$(MANSUFFIX) \ +glVertex4d.$(MANSUFFIX) glVertex4dv.$(MANSUFFIX) \ +glVertex4f.$(MANSUFFIX) glVertex4fv.$(MANSUFFIX) \ +glVertex4i.$(MANSUFFIX) glVertex4iv.$(MANSUFFIX) \ +glVertex4s.$(MANSUFFIX) glVertex4sv.$(MANSUFFIX) + + +AllTarget($(MAN_PAGES)) + +list: + @for i in $(MAN_PAGES); do echo $$i; done; + +install_list: + @for i in $(MAN_PAGES); do echo $(LIBMANDIR)/$$i; done; + +install:: install.man + +clean:: + $(RM) $(LINK_NAMES) $(ALIAS_NAMES) + +InstallMultipleMan($(MAN_PAGES),$(LIBMANDIR)) + +LinkFile(glAccum.$(MANSUFFIX), accum.3gl) + +LinkFile(glAlphaFunc.$(MANSUFFIX), alphafunc.3gl) + +LinkFile(glAreTexturesResident.$(MANSUFFIX), aretexturesresident.3gl) + +LinkFile(glArrayElement.$(MANSUFFIX), arrayelement.3gl) + +LinkFile(glBegin.$(MANSUFFIX), begin.3gl) +ManPageAlias(glBegin, $(LIBMANDIR), glEnd) + +LinkFile(glBindTexture.$(MANSUFFIX), bindtexture.3gl) + +LinkFile(glBitmap.$(MANSUFFIX), bitmap.3gl) + +LinkFile(glBlendColorEXT.$(MANSUFFIX), blendcolorext.3gl) + +LinkFile(glBlendFunc.$(MANSUFFIX), blendfunc.3gl) + +LinkFile(glCallList.$(MANSUFFIX), calllist.3gl) + +LinkFile(glCallLists.$(MANSUFFIX), calllists.3gl) + +LinkFile(glClear.$(MANSUFFIX), clear.3gl) + +LinkFile(glClearAccum.$(MANSUFFIX), clearaccum.3gl) + +LinkFile(glClearColor.$(MANSUFFIX), clearcolor.3gl) + +LinkFile(glClearDepth.$(MANSUFFIX), cleardepth.3gl) + +LinkFile(glClearIndex.$(MANSUFFIX), clearindex.3gl) + +LinkFile(glClearStencil.$(MANSUFFIX), clearstencil.3gl) + +LinkFile(glClipPlane.$(MANSUFFIX), clipplane.3gl) + +LinkFile(glColor3b.$(MANSUFFIX), color.3gl) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3d) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3f) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3i) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3s) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3ub) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3ui) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3us) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4b) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4d) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4f) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4i) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4s) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4ub) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4ui) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4us) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3bv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3dv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3fv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3iv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3sv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3ubv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3uiv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor3usv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4bv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4dv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4fv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4iv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4sv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4ubv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4uiv) +ManPageAlias(glColor3b, $(LIBMANDIR), glColor4usv) + +LinkFile(glColorMask.$(MANSUFFIX), colormask.3gl) + +LinkFile(glColorMaterial.$(MANSUFFIX), colormaterial.3gl) + +LinkFile(glColorPointer.$(MANSUFFIX), colorpointer.3gl) + +LinkFile(glCopyPixels.$(MANSUFFIX), copypixels.3gl) + +LinkFile(glCopyTexImage1D.$(MANSUFFIX), copyteximage1d.3gl) + +LinkFile(glCopyTexImage2D.$(MANSUFFIX), copyteximage2d.3gl) + +LinkFile(glCopyTexSubImage1D.$(MANSUFFIX), copytexsubimage1d.3gl) + +LinkFile(glCopyTexSubImage2D.$(MANSUFFIX), copytexsubimage2d.3gl) + +LinkFile(glCullFace.$(MANSUFFIX), cullface.3gl) + +LinkFile(glDeleteLists.$(MANSUFFIX), deletelists.3gl) + +LinkFile(glDeleteTextures.$(MANSUFFIX), deletetextures.3gl) + +LinkFile(glDepthFunc.$(MANSUFFIX), depthfunc.3gl) + +LinkFile(glDepthMask.$(MANSUFFIX), depthmask.3gl) + +LinkFile(glDepthRange.$(MANSUFFIX), depthrange.3gl) + +LinkFile(glDrawArrays.$(MANSUFFIX), drawarrays.3gl) + +LinkFile(glDrawBuffer.$(MANSUFFIX), drawbuffer.3gl) + +LinkFile(glDrawElements.$(MANSUFFIX), drawelements.3gl) + +LinkFile(glDrawPixels.$(MANSUFFIX), drawpixels.3gl) + +LinkFile(glEdgeFlag.$(MANSUFFIX), edgeflag.3gl) +ManPageAlias(glEdgeFlag, $(LIBMANDIR), glEdgeFlagv) + +LinkFile(glEdgeFlagPointer.$(MANSUFFIX), edgeflagpointer.3gl) + +LinkFile(glEnable.$(MANSUFFIX), enable.3gl) +ManPageAlias(glEnable, $(LIBMANDIR), glDisable) + +LinkFile(glEnableClientState.$(MANSUFFIX), enableclientstate.3gl) +ManPageAlias(glEnableClientState, $(LIBMANDIR), glDisableClientState) + +LinkFile(glEvalCoord1d.$(MANSUFFIX), evalcoord.3gl) +ManPageAlias(glEvalCoord1d, $(LIBMANDIR), glEvalCoord1f) +ManPageAlias(glEvalCoord1d, $(LIBMANDIR), glEvalCoord2d) +ManPageAlias(glEvalCoord1d, $(LIBMANDIR), glEvalCoord2f) +ManPageAlias(glEvalCoord1d, $(LIBMANDIR), glEvalCoord1dv) +ManPageAlias(glEvalCoord1d, $(LIBMANDIR), glEvalCoord1fv) +ManPageAlias(glEvalCoord1d, $(LIBMANDIR), glEvalCoord2dv) +ManPageAlias(glEvalCoord1d, $(LIBMANDIR), glEvalCoord2fv) + +LinkFile(glEvalMesh1.$(MANSUFFIX), evalmesh.3gl) +ManPageAlias(glEvalMesh1, $(LIBMANDIR), glEvalMesh2) + +LinkFile(glEvalPoint1.$(MANSUFFIX), evalpoint.3gl) +ManPageAlias(glEvalPoint1, $(LIBMANDIR), glEvalPoint2) + +LinkFile(glFeedbackBuffer.$(MANSUFFIX), feedbackbuffer.3gl) + +LinkFile(glFinish.$(MANSUFFIX), finish.3gl) + +LinkFile(glFlush.$(MANSUFFIX), flush.3gl) + +LinkFile(glFogf.$(MANSUFFIX), fog.3gl) +ManPageAlias(glFogf, $(LIBMANDIR), glFogi) +ManPageAlias(glFogf, $(LIBMANDIR), glFogfv) +ManPageAlias(glFogf, $(LIBMANDIR), glFogiv) + +LinkFile(glFrontFace.$(MANSUFFIX), frontface.3gl) + +LinkFile(glFrustum.$(MANSUFFIX), frustum.3gl) + +LinkFile(glGenLists.$(MANSUFFIX), genlists.3gl) + +LinkFile(glGenTextures.$(MANSUFFIX), gentextures.3gl) + +LinkFile(glGetBooleanv.$(MANSUFFIX), get.3gl) +ManPageAlias(glGetBooleanv, $(LIBMANDIR), glGetDoublev) +ManPageAlias(glGetBooleanv, $(LIBMANDIR), glGetFloatv) +ManPageAlias(glGetBooleanv, $(LIBMANDIR), glGetIntegerv) + +LinkFile(glGetClipPlane.$(MANSUFFIX), getclipplane.3gl) + +LinkFile(glGetError.$(MANSUFFIX), geterror.3gl) + +LinkFile(glGetLightfv.$(MANSUFFIX), getlight.3gl) +ManPageAlias(glGetLightfv, $(LIBMANDIR), glGetLightiv) + +LinkFile(glGetMapdv.$(MANSUFFIX), getmap.3gl) +ManPageAlias(glGetMapdv, $(LIBMANDIR), glGetMapfv) +ManPageAlias(glGetMapdv, $(LIBMANDIR), glGetMapiv) + +LinkFile(glGetMaterialfv.$(MANSUFFIX), getmaterial.3gl) +ManPageAlias(glGetMaterialfv, $(LIBMANDIR), glGetMaterialiv) + +LinkFile(glGetPixelMapfv.$(MANSUFFIX), getpixelmap.3gl) +ManPageAlias(glGetPixelMapfv, $(LIBMANDIR), glGetPixelMapuiv) +ManPageAlias(glGetPixelMapfv, $(LIBMANDIR), glGetPixelMapusv) + +LinkFile(glGetPointerv.$(MANSUFFIX), getpointerv.3gl) + +LinkFile(glGetPolygonStipple.$(MANSUFFIX), getpolygonstipple.3gl) + +LinkFile(glGetString.$(MANSUFFIX), getstring.3gl) + +LinkFile(glGetTexEnvfv.$(MANSUFFIX), gettexenv.3gl) +ManPageAlias(glGetTexEnvfv, $(LIBMANDIR), glGetTexEnviv) + +LinkFile(glGetTexGendv.$(MANSUFFIX), gettexgen.3gl) +ManPageAlias(glGetTexGendv, $(LIBMANDIR), glGetTexGenfv) +ManPageAlias(glGetTexGendv, $(LIBMANDIR), glGetTexGeniv) + +LinkFile(glGetTexImage.$(MANSUFFIX), getteximage.3gl) + +LinkFile(glGetTexLevelParameterfv.$(MANSUFFIX), gettexlevelparameter.3gl) +ManPageAlias(glGetTexLevelParameterfv, $(LIBMANDIR), glGetTexLevelParameteriv) + +LinkFile(glGetTexParameterfv.$(MANSUFFIX), gettexparameter.3gl) +ManPageAlias(glGetTexParameterfv, $(LIBMANDIR), glGetTexParameteriv) + +LinkFile(glHint.$(MANSUFFIX), hint.3gl) + +LinkFile(glIndexd.$(MANSUFFIX), index.3gl) +ManPageAlias(glIndexd, $(LIBMANDIR), glIndexf) +ManPageAlias(glIndexd, $(LIBMANDIR), glIndexi) +ManPageAlias(glIndexd, $(LIBMANDIR), glIndexs) +ManPageAlias(glIndexd, $(LIBMANDIR), glIndexub) +ManPageAlias(glIndexd, $(LIBMANDIR), glIndexdv) +ManPageAlias(glIndexd, $(LIBMANDIR), glIndexfv) +ManPageAlias(glIndexd, $(LIBMANDIR), glIndexiv) +ManPageAlias(glIndexd, $(LIBMANDIR), glIndexsv) +ManPageAlias(glIndexd, $(LIBMANDIR), glIndexubv) + +LinkFile(glIndexMask.$(MANSUFFIX), indexmask.3gl) + +LinkFile(glIndexPointer.$(MANSUFFIX), indexpointer.3gl) + +LinkFile(glInitNames.$(MANSUFFIX), initnames.3gl) + +LinkFile(glInterleavedArrays.$(MANSUFFIX), interleavedarrays.3gl) + +LinkFile(glIsEnabled.$(MANSUFFIX), isenabled.3gl) + +LinkFile(glIsList.$(MANSUFFIX), islist.3gl) + +LinkFile(glIsTexture.$(MANSUFFIX), istexture.3gl) + +LinkFile(glLightf.$(MANSUFFIX), light.3gl) +ManPageAlias(glLightf, $(LIBMANDIR), glLighti) +ManPageAlias(glLightf, $(LIBMANDIR), glLightfv) +ManPageAlias(glLightf, $(LIBMANDIR), glLightiv) + +LinkFile(glLightModelf.$(MANSUFFIX), lightmodel.3gl) +ManPageAlias(glLightModelf, $(LIBMANDIR), glLightModeli) +ManPageAlias(glLightModelf, $(LIBMANDIR), glLightModelfv) +ManPageAlias(glLightModelf, $(LIBMANDIR), glLightModeliv) + +LinkFile(glLineStipple.$(MANSUFFIX), linestipple.3gl) + +LinkFile(glLineWidth.$(MANSUFFIX), linewidth.3gl) + +LinkFile(glListBase.$(MANSUFFIX), listbase.3gl) + +LinkFile(glLoadIdentity.$(MANSUFFIX), loadidentity.3gl) + +LinkFile(glLoadMatrixd.$(MANSUFFIX), loadmatrix.3gl) +ManPageAlias(glLoadMatrixd, $(LIBMANDIR), glLoadMatrixf) + +LinkFile(glLoadName.$(MANSUFFIX), loadname.3gl) + +LinkFile(glLogicOp.$(MANSUFFIX), logicop.3gl) + +LinkFile(glMap1d.$(MANSUFFIX), map1.3gl) +ManPageAlias(glMap1d, $(LIBMANDIR), glMap1f) + +LinkFile(glMap2d.$(MANSUFFIX), map2.3gl) +ManPageAlias(glMap2d, $(LIBMANDIR), glMap2f) + +LinkFile(glMapGrid1d.$(MANSUFFIX), mapgrid.3gl) +ManPageAlias(glMapGrid1d, $(LIBMANDIR), glMapGrid1f) +ManPageAlias(glMapGrid1d, $(LIBMANDIR), glMapGrid2d) +ManPageAlias(glMapGrid1d, $(LIBMANDIR), glMapGrid2f) + +LinkFile(glMaterialf.$(MANSUFFIX), material.3gl) +ManPageAlias(glMaterialf, $(LIBMANDIR), glMateriali) +ManPageAlias(glMaterialf, $(LIBMANDIR), glMaterialfv) +ManPageAlias(glMaterialf, $(LIBMANDIR), glMaterialiv) + +LinkFile(glMatrixMode.$(MANSUFFIX), matrixmode.3gl) + +LinkFile(glMultMatrixd.$(MANSUFFIX), multmatrix.3gl) +ManPageAlias(glMultMatrixd, $(LIBMANDIR), glMultMatrixf) + +LinkFile(glNewList.$(MANSUFFIX), newlist.3gl) +ManPageAlias(glNewList, $(LIBMANDIR), glEndList) + +LinkFile(glNormal3b.$(MANSUFFIX), normal.3gl) +ManPageAlias(glNormal3b, $(LIBMANDIR), glNormal3d) +ManPageAlias(glNormal3b, $(LIBMANDIR), glNormal3f) +ManPageAlias(glNormal3b, $(LIBMANDIR), glNormal3i) +ManPageAlias(glNormal3b, $(LIBMANDIR), glNormal3s) +ManPageAlias(glNormal3b, $(LIBMANDIR), glNormal3bv) +ManPageAlias(glNormal3b, $(LIBMANDIR), glNormal3dv) +ManPageAlias(glNormal3b, $(LIBMANDIR), glNormal3fv) +ManPageAlias(glNormal3b, $(LIBMANDIR), glNormal3iv) +ManPageAlias(glNormal3b, $(LIBMANDIR), glNormal3sv) + +LinkFile(glNormalPointer.$(MANSUFFIX), normalpointer.3gl) + +LinkFile(glOrtho.$(MANSUFFIX), ortho.3gl) + +LinkFile(glPassThrough.$(MANSUFFIX), passthrough.3gl) + +LinkFile(glPixelMapfv.$(MANSUFFIX), pixelmap.3gl) +ManPageAlias(glPixelMapfv, $(LIBMANDIR), glPixelMapuiv) +ManPageAlias(glPixelMapfv, $(LIBMANDIR), glPixelMapusv) + +LinkFile(glPixelStoref.$(MANSUFFIX), pixelstore.3gl) +ManPageAlias(glPixelStoref, $(LIBMANDIR), glPixelStorei) + +LinkFile(glPixelTransferf.$(MANSUFFIX), pixeltransfer.3gl) +ManPageAlias(glPixelTransferf, $(LIBMANDIR), glPixelTransferi) + +LinkFile(glPixelZoom.$(MANSUFFIX), pixelzoom.3gl) + +LinkFile(glPointSize.$(MANSUFFIX), pointsize.3gl) + +LinkFile(glPolygonMode.$(MANSUFFIX), polygonmode.3gl) + +LinkFile(glPolygonOffset.$(MANSUFFIX), polygonoffset.3gl) + +LinkFile(glPolygonStipple.$(MANSUFFIX), polygonstipple.3gl) + +LinkFile(glPrioritizeTextures.$(MANSUFFIX), prioritizetextures.3gl) + +LinkFile(glPushAttrib.$(MANSUFFIX), pushattrib.3gl) +ManPageAlias(glPushAttrib, $(LIBMANDIR), glPopAttrib) + +LinkFile(glPushClientAttrib.$(MANSUFFIX), pushclientattrib.3gl) +ManPageAlias(glPushClientAttrib, $(LIBMANDIR), glPopClientAttrib) + +LinkFile(glPushMatrix.$(MANSUFFIX), pushmatrix.3gl) +ManPageAlias(glPushMatrix, $(LIBMANDIR), glPopMatrix) + +LinkFile(glPushName.$(MANSUFFIX), pushname.3gl) +ManPageAlias(glPushName, $(LIBMANDIR), glPopName) + +LinkFile(glRasterPos2d.$(MANSUFFIX), rasterpos.3gl) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos2f) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos2i) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos2s) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos3d) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos3f) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos3i) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos3s) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos4d) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos4f) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos4i) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos4s) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos2dv) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos2fv) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos2iv) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos2sv) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos3dv) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos3fv) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos3iv) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos3sv) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos4dv) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos4fv) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos4iv) +ManPageAlias(glRasterPos2d, $(LIBMANDIR), glRasterPos4sv) + +LinkFile(glReadBuffer.$(MANSUFFIX), readbuffer.3gl) + +LinkFile(glReadPixels.$(MANSUFFIX), readpixels.3gl) + +LinkFile(glRectd.$(MANSUFFIX), rect.3gl) +ManPageAlias(glRectd, $(LIBMANDIR), glRectf) +ManPageAlias(glRectd, $(LIBMANDIR), glRecti) +ManPageAlias(glRectd, $(LIBMANDIR), glRects) +ManPageAlias(glRectd, $(LIBMANDIR), glRectdv) +ManPageAlias(glRectd, $(LIBMANDIR), glRectfv) +ManPageAlias(glRectd, $(LIBMANDIR), glRectiv) +ManPageAlias(glRectd, $(LIBMANDIR), glRectsv) + +LinkFile(glRenderMode.$(MANSUFFIX), rendermode.3gl) + +LinkFile(glRotated.$(MANSUFFIX), rotate.3gl) +ManPageAlias(glRotated, $(LIBMANDIR), glRotatef) + +LinkFile(glScaled.$(MANSUFFIX), scale.3gl) +ManPageAlias(glScaled, $(LIBMANDIR), glScalef) + +LinkFile(glScissor.$(MANSUFFIX), scissor.3gl) + +LinkFile(glSelectBuffer.$(MANSUFFIX), selectbuffer.3gl) + +LinkFile(glShadeModel.$(MANSUFFIX), shademodel.3gl) + +LinkFile(glStencilFunc.$(MANSUFFIX), stencilfunc.3gl) + +LinkFile(glStencilMask.$(MANSUFFIX), stencilmask.3gl) + +LinkFile(glStencilOp.$(MANSUFFIX), stencilop.3gl) + +LinkFile(glTexCoord1d.$(MANSUFFIX), texcoord.3gl) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord1f) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord1i) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord1s) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord2d) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord2f) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord2i) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord2s) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord3d) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord3f) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord3i) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord3s) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord4d) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord4f) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord4i) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord4s) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord1dv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord1fv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord1iv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord1sv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord2dv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord2fv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord2iv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord2sv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord3dv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord3fv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord3iv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord3sv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord4dv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord4fv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord4iv) +ManPageAlias(glTexCoord1d, $(LIBMANDIR), glTexCoord4sv) + +LinkFile(glTexCoordPointer.$(MANSUFFIX), texcoordpointer.3gl) + +LinkFile(glTexEnvf.$(MANSUFFIX), texenv.3gl) +ManPageAlias(glTexEnvf, $(LIBMANDIR), glTexEnvi) +ManPageAlias(glTexEnvf, $(LIBMANDIR), glTexEnvfv) +ManPageAlias(glTexEnvf, $(LIBMANDIR), glTexEnviv) + +LinkFile(glTexGend.$(MANSUFFIX), texgen.3gl) +ManPageAlias(glTexGend, $(LIBMANDIR), glTexGenf) +ManPageAlias(glTexGend, $(LIBMANDIR), glTexGeni) +ManPageAlias(glTexGend, $(LIBMANDIR), glTexGendv) +ManPageAlias(glTexGend, $(LIBMANDIR), glTexGenfv) +ManPageAlias(glTexGend, $(LIBMANDIR), glTexGeniv) + +LinkFile(glTexImage1D.$(MANSUFFIX), teximage1d.3gl) + +LinkFile(glTexImage2D.$(MANSUFFIX), teximage2d.3gl) + +LinkFile(glTexParameterf.$(MANSUFFIX), texparameter.3gl) +ManPageAlias(glTexParameterf, $(LIBMANDIR), glTexParameteri) +ManPageAlias(glTexParameterf, $(LIBMANDIR), glTexParameterfv) +ManPageAlias(glTexParameterf, $(LIBMANDIR), glTexParameteriv) + +LinkFile(glTexSubImage1D.$(MANSUFFIX), texsubimage1d.3gl) + +LinkFile(glTexSubImage2D.$(MANSUFFIX), texsubimage2d.3gl) + +LinkFile(glTranslated.$(MANSUFFIX), translate.3gl) +ManPageAlias(glTranslated, $(LIBMANDIR), glTranslatef) + +LinkFile(glVertex2d.$(MANSUFFIX), vertex.3gl) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex2f) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex2i) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex2s) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex3d) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex3f) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex3i) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex3s) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex4d) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex4f) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex4i) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex4s) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex2dv) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex2fv) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex2iv) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex2sv) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex3dv) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex3fv) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex3iv) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex3sv) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex4dv) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex4fv) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex4iv) +ManPageAlias(glVertex2d, $(LIBMANDIR), glVertex4sv) + +LinkFile(glVertexPointer.$(MANSUFFIX), vertexpointer.3gl) + +LinkFile(glViewport.$(MANSUFFIX), viewport.3gl) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/RULES diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/RULES:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/RULES Mon Jan 14 17:13:28 2002 @@ -0,0 +1,89 @@ +Rules for Open GL man pages: + + * Describe commands that differ only by a suffix on the same + page. Do this regardless of whether the commands take the + same or different arguments. For example, all 24 Vertex + commands are described on one page. + + Issue - current tools like to separate v and non-v commands. + + * Describe commands that operate in obvious pairs on the same + page. For example, Begin and End, or PushMatrix and PopMatrix. + + * Use the _header(desc) macro to begin a manpage. Write the + 1-line command description "desc" using the imperative tense. + For example: + + _header(Operate on the accumulation buffer) + + not + _header(Operates on the accumulation buffer) + + * The order of the entries on a manpage is + + header + PARAMETERS (unless the command takes no parameters) + DESCRIPTION + EXAMPLE (optional) + ERRORS (optional) + SEE ALSO + BUGS (optional) + NOTES (optional) + + * Use the _phead(param) macro to describe each parameter or + group of parameters. + + * Begin the description of in-only parameters with the phrase + "Specifies". + + * Begin the description of out-only parameters with the phrase + "Returns". + + * Begin the description of in-and-out parameters with the + phrase "Specifies and returns". If there is a difference + between what is specified and what is returned, use two + paragraphs for the description, the first beginning with + "Specifies" and the second beginning with "Returns". + + * Group like parameters into a single description. For example + "x,y Specify the x and y coordinates ...", or + "r,g,b Return the red, green, and blue color values ..." + + Possible tools issue. + + * Include the default value in the description of parameters + that directly specify GL state. + + * Refer to parameters using the _param# macro, never explicitly + by name. Note that this rules out clever English tricks that + count on the macro evaluating to a particular string. For + example, one cannot say "The second parameter is a floating + point _param2", where it is expected that _param2 will evaluate + to the string "value". + + * Use _cmnd to refer to the command being described. + + * Use _cmnd(basename) to refer to another command. Note that + basename does not include any prefix, it is added automatically + by the _cmnd() macro. + + * Use _const(basename) to refer to a constant. Note that + basename does not include any prefix, it is added automatically + by the _const() macro. + + * Use _hex(value) to refer to a hexidecimal value. + (This should not be required very often in the Open GL.) + + * List commands in the see also section in alphabetical order. + Include commands that return all the state that is set by + the command being documented. + +Limitations of the alpha release: + + * The header, command syntax, parameter descriptions, and see + also sections will be complete. + + * The command description may not be complete, but it will at + least exist. + + * The example section may not exist. Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/accum.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/accum.gl:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/accum.gl Mon Jan 14 17:13:28 2002 @@ -0,0 +1,171 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Accum,operate on the accumulation buffer) +_names(Accum) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the accumulation buffer operation. +Symbolic constants +_const(ACCUM), +_const(LOAD), +_const(ADD), +_const(MULT), +and +_const(RETURN) are accepted. +_phead(_param2) +Specifies a floating-point value used in the accumulation buffer operation. +_param1 determines how _param2 is used. +.SH DESCRIPTION +The accumulation buffer is an extended-range color buffer. +Images are not rendered into it. +Rather, +images rendered into one of the color buffers +are added to the contents of the accumulation buffer after rendering. +Effects such as antialiasing (of points, lines, and polygons), +motion blur, +and depth of field can be created +by accumulating images generated with different transformation matrices. +.P +Each pixel in the accumulation buffer consists of +red, green, blue, and alpha values. +The number of bits per component in the accumulation buffer +depends on the implementation. You can examine this number +by calling _cmnd(GetIntegerv) four times, +with arguments _const(ACCUM_RED_BITS), +_const(ACCUM_GREEN_BITS), +_const(ACCUM_BLUE_BITS), +and _const(ACCUM_ALPHA_BITS). +Regardless of the number of bits per component, +the range of values stored by each component is [\-1,\ 1]. +The accumulation buffer pixels are mapped one-to-one with frame buffer pixels. +.P +_cmnd operates on the accumulation buffer. +The first argument, _param1, +is a symbolic constant that selects an accumulation buffer operation. +The second argument, _param2, +is a floating-point value to be used in that operation. +Five operations are specified: +_const(ACCUM), _const(LOAD), _const(ADD), +_const(MULT), and _const(RETURN). +.P +All accumulation buffer operations are limited +to the area of the current scissor box and applied identically to +the red, green, blue, and alpha components of each pixel. +If a _cmnd operation results in a value outside the range [\-1,\ 1], +the contents of an accumulation buffer pixel component are undefined. +.P +The operations are as follows: +.TP 14 +_const(ACCUM) +Obtains R, G, B, and A values +from the buffer currently selected for reading (see _cmnd(ReadBuffer)). +Each component value is divided by $2 sup n^-^1$, +where $n$ is the number of bits allocated to each color component +in the currently selected buffer. +The result is a floating-point value in the range [0,\ 1], +which is multiplied by _param2 and added to the corresponding pixel component +in the accumulation buffer, +thereby updating the accumulation buffer. +.TP +_const(LOAD) +Similar to _const(ACCUM), +except that the current value in the accumulation buffer is not used +in the calculation of the new value. +That is, the R, G, B, and A values from the currently selected buffer +are divided by $2 sup n^-^1$, +multiplied by _param2, +and then stored in the corresponding accumulation buffer cell, +overwriting the current value. +.TP +_const(ADD) +Adds _param2 to each R, G, B, and A +in the accumulation buffer. +.TP +_const(MULT) +Multiplies each R, G, B, and A +in the accumulation buffer by _param2 and returns the scaled component +to its corresponding accumulation buffer location. +.TP +_const(RETURN) +Transfers accumulation buffer values +to the color buffer or buffers currently selected for writing. +Each R, G, B, and A component is multiplied by _param2, +then multiplied by $2 sup n^-^1$, +clamped to the range [0,$~2 sup n^-^1 $], and stored +in the corresponding display buffer cell. +The only fragment operations that are applied to this transfer are +pixel ownership, +scissor, +dithering, +and color writemasks. +.P +To clear the accumulation buffer, call _cmnd(ClearAccum) with R, G, B, +and A values to set it to, then call _cmnd(Clear) with the +accumulation buffer enabled. +.SH NOTES +Only pixels within the current scissor box are updated by a +_cmnd operation. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if there is no accumulation buffer. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of +_cmnd(Begin) and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(ACCUM_RED_BITS) +.br +_cmnd(Get) with argument _const(ACCUM_GREEN_BITS) +.br +_cmnd(Get) with argument _const(ACCUM_BLUE_BITS) +.br +_cmnd(Get) with argument _const(ACCUM_ALPHA_BITS) +.SH SEE ALSO +_cmnd(Clear), +_cmnd(ClearAccum), +_cmnd(CopyPixels), +_cmnd(DrawBuffer), +_cmnd(Get), +_cmnd(ReadBuffer), +_cmnd(ReadPixels), +_cmnd(Scissor), +_cmnd(StencilOp) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/activetextureARB.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/activetextureARB.gl:1.3 --- /dev/null Fri Jan 18 15:22:01 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/activetextureARB.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,71 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn|tbl)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ActiveTextureARB, select active texture unit) +_names(ActiveTextureARB) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies which texture unit to make active. The number +of texture units is implementation dependent, but must be at least +two. _param1 must be one of _arbconstidx(TEXTURE), where +0 \(<= $ i $ < _arbconst(MAX_TEXTURE_UNITS), which is an +implementation-dependent value. The intial value is _arbconst(TEXTURE0). +.SH DESCRIPTION +_cmnd selects which texture unit subsequent texture state calls will +affect. The number of texture units an implementation supports is +implementation dependent, but must be at least 2. +.P +Vertex arrays are client-side GL resources, which are selected by the +_cmnd(ClientActiveTextureARB) routine. +.SH NOTES +_cmnd is only supported if _arbstring(multitexture) is included in the +string returned by _cmnd(GetString) when called with the argument +_const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not one of +_arbconstidx(TEXTURE), +.br +where 0 \(<= $ i $ < _arbconst(MAX_TEXTURE_UNITS). +.SH SEE ALSO +_cmnd(ClientActiveTextureARB), +_cmnd(GetIntegerv), +_cmnd(MultiTexCoordARB), +_cmnd(TexParameter) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/alphafunc.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/alphafunc.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/alphafunc.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,129 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(AlphaFunc,specify the alpha test function) +_names(AlphaFunc) +.SH PARAMETERS +_phead(_param1) +Specifies the alpha comparison function. +Symbolic constants +_const(NEVER), +_const(LESS), +_const(EQUAL), +_const(LEQUAL), +_const(GREATER), +_const(NOTEQUAL), +_const(GEQUAL), and +_const(ALWAYS) are accepted. The initial value is _const(ALWAYS). +_phead(_param2) +Specifies the reference value that incoming alpha values are compared to. +This value is clamped to the range [0,\ 1], +where 0 represents the lowest possible alpha value +and 1 the highest possible value. +The initial reference value is 0. +.SH DESCRIPTION +The alpha test discards fragments depending on the outcome of a comparison +between an incoming fragment's alpha value and a constant reference value. +_cmnd specifies the reference value and the comparison function. +The comparison is performed only if alpha testing is enabled. By +default, it is not enabled. +(See +_cmnd(Enable) and _cmnd(Disable) of _const(ALPHA_TEST).) +.P +_param1 and _param2 specify the conditions under which +the pixel is drawn. +The incoming alpha value is compared to _param2 +using the function specified by _param1. +If the value passes the comparison, +the incoming fragment is drawn +if it also passes subsequent stencil and depth buffer tests. +If the value fails the comparison, +no change is made to the frame buffer at that pixel location. The +comparison functions are as follows: +.TP 18 +_const(NEVER) +Never passes. +.TP +_const(LESS) +Passes if the incoming alpha value is less than the reference value. +.TP +_const(EQUAL) +Passes if the incoming alpha value is equal to the reference value. +.TP +_const(LEQUAL) +Passes if the incoming alpha value is less than or equal to the reference value. +.TP +_const(GREATER) +Passes if the incoming alpha value is greater than the reference value. +.TP +_const(NOTEQUAL) +Passes if the incoming alpha value is not equal to the reference value. +.TP +_const(GEQUAL) +Passes if the incoming alpha value is greater than or equal to +the reference value. +.TP +_const(ALWAYS) +Always passes (initial value). +.P +_cmnd operates on all pixel write operations, +including those resulting from the scan conversion of points, +lines, +polygons, +and bitmaps, +and from pixel draw and copy operations. +_cmnd does not affect screen clear operations. +.SH NOTES +Alpha testing is performed only in RGBA mode. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(ALPHA_TEST_FUNC) +.br +_cmnd(Get) with argument _const(ALPHA_TEST_REF) +.br +_cmnd(IsEnabled) with argument _const(ALPHA_TEST) +.SH SEE ALSO +_cmnd(BlendFunc), +_cmnd(Clear), +_cmnd(DepthFunc), +_cmnd(Enable), +_cmnd(StencilFunc) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/aretexturesresident.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/aretexturesresident.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/aretexturesresident.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,107 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(AreTexturesResident,determine if textures are loaded in texture memory) +_names(AreTexturesResident) +.SH PARAMETERS +_define(@<__n>@,@<_param1>@)_C_ +_define(@<__textures>@,@<_param2>@)_C_ +_define(@<__residences>@,@<_param3>@)_C_ +_phead(__n) +Specifies the number of textures to be queried. +_phead(__textures) +Specifies an array containing the names of the textures to be queried. +_phead(__residences) +Specifies an array in which the texture residence status is returned. +The residence status of a texture named by an element of __textures is +returned in the corresponding element of __residences. +.SH DESCRIPTION +GL establishes +a ``working set'' of textures that are resident in texture memory. +These textures can be bound to a texture target much more efficiently +than textures that are not resident. +.P +_cmnd queries the texture residence status of the __n textures named by +the elements of __textures. +If all the named textures are resident, +_cmnd returns _const(TRUE), +and the contents of __residences are undisturbed. +If not all the named textures are resident, _cmnd returns _const(FALSE), +and detailed status is returned in the __n elements of __residences. +If an element of __residences is _const(TRUE), then the texture named by +the corresponding element of __textures is resident. +.P +The residence status of a single bound texture may also be queried +by calling +_cmnd(GetTexParameter) with the \f2target\fP argument set to the +target to which the texture is bound, and the \f2pname\fP argument +set to _const(TEXTURE_RESIDENT). +This is the only way that the residence status of a default texture can be +queried. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +_cmnd returns the residency status of the textures at the time of +invocation. It does not guarantee that the textures will remain +resident at any other time. +.P +If textures reside in virtual memory (there is no texture memory), they +are considered always resident. +.P +Some implementations may not load a texture until the first use of +that texture. +.SH ERRORS +_const(INVALID_VALUE) is generated if __n is negative. +.P +_const(INVALID_VALUE) is generated if any element in __textures +is 0 or does not name a texture. In that case, the function returns +_const(FALSE) and the contents of _param3 is indeterminate. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetTexParameter) with parameter name _const(TEXTURE_RESIDENT) +retrieves the residence status of a currently bound texture. +.SH SEE ALSO +_cmnd(BindTexture), +_cmnd(GetTexParameter), +_cmnd(PrioritizeTextures), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/arrayelement.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/arrayelement.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/arrayelement.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,107 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ +_C_ Anything on a line after _C_ is ignored +_C_ +_C_ A real line follows. +_C_ +_define(_filters,tbl|eqn)_C_ +_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ +_C_ Use GL not OpenGL +_C_ +_C_ Don't change the ordering of the main headers. +_C_ +_C_ C specification (or fortran) is handled automatically +_C_ +_C_ .TH is automatically added to the top of this file. +_C_ +_C_ Below, use current tense, active do not capitalize the first word and dont +_C_ use a period. +_C_ +_C_ The function name must appear in (APIFILE) (usually gl.h) as set in +_C_ Makefile. +_header(ArrayElement,render a vertex using the specified vertex array element) +_names(ArrayElement) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies an index into the enabled vertex data arrays. +.SH DESCRIPTION +_cmnd commands are used within _cmnd(Begin)/_cmnd(End) pairs to +specify vertex and attribute data for point, line, and polygon +primitives. If _const(VERTEX_ARRAY) is enabled when _cmnd is called, a +single vertex is drawn, using +vertex and attribute data taken from location _param1 of the enabled +arrays. If _const(VERTEX_ARRAY) is not enabled, no drawing occurs but +the attributes corresponding to the enabled arrays are modified. +.P +Use _cmnd to construct primitives by indexing vertex data, rather than +by streaming through arrays of data in first-to-last order. Because +each call specifies only a single vertex, it is possible to explicitly +specify per-primitive attributes such as a single normal per +individual triangle. +.P +Changes made to array data between the execution of _cmnd(Begin) and the +corresponding execution of _cmnd(End) may affect calls to _cmnd that are made +within the same _cmnd(Begin)/_cmnd(End) period in non-sequential ways. +That is, a call to +.br +_cmnd that precedes a change to array data may +access the changed data, and a call that follows a change to array data +may access original data. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +_cmnd is included in display lists. If _cmnd is entered into a +display list, the necessary array data (determined by the array +pointers and enables) is also entered into the display list. Because +the array pointers and enables are client-side state, their values +affect display lists when the lists are created, not when the lists +are executed. +.SH SEE ALSO +_cmnd(ClientActiveTextureARB), +_cmnd(ColorPointer), +_cmnd(DrawArrays), +_cmnd(EdgeFlagPointer), +_cmnd(GetPointerv), +_cmnd(IndexPointer), +_cmnd(InterleavedArrays), +_cmnd(NormalPointer), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/begin.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/begin.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/begin.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,230 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_header(Begin,delimit the vertices of a primitive or a group of like primitives) +_names(Begin) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the primitive or primitives that will be created from vertices +presented between _cmnd(Begin) and the subsequent _cmnd(End). +Ten symbolic constants are accepted: +_const(POINTS), +_const(LINES), +_const(LINE_STRIP), +_const(LINE_LOOP), +_const(TRIANGLES), +_const(TRIANGLE_STRIP), +_const(TRIANGLE_FAN), +_const(QUADS), +_const(QUAD_STRIP), and +_const(POLYGON). +_names(End) +.SH DESCRIPTION +_cmnd(Begin) and _cmnd(End) delimit the vertices that define a primitive or +a group of like primitives. +_cmnd(Begin) accepts a single argument that specifies in which of ten ways the +vertices are interpreted. +Taking $n$ as an integer count starting at one, +and $N$ as the total number of vertices specified, +the interpretations are as follows: +.TP 23 +_const(POINTS) +Treats each vertex as a single point. +Vertex $n$ defines point $n$. +$N$ points are drawn. +.TP +_const(LINES) +Treats each pair of vertices as an independent line segment. +Vertices $2n^-^1$ and $2n$ define line $n$. +$N/2$ lines are drawn. +.TP +_const(LINE_STRIP) +Draws a connected group of line segments from the first vertex +to the last. +Vertices $n$ and $n~+~1$ define line $n$. +$N^-^1$ lines are drawn. +.TP +_const(LINE_LOOP) +Draws a connected group of line segments from the first vertex +to the last, +then back to the first. +Vertices $n$ and $n~+~1$ define line $n$. +The last line, however, is defined by vertices $N$ and $1$. +$N$ lines are drawn. +.TP +_const(TRIANGLES) +Treats each triplet of vertices as an independent triangle. +Vertices $3n^-^2$, $3n^-^1$, and $3n$ define triangle $n$. +$N/3$ triangles are drawn. +.BP +.TP +_const(TRIANGLE_STRIP) +Draws a connected group of triangles. One triangle is defined for each +vertex presented after the first two vertices. For odd $n$, vertices +$n$, $n~+~1$, and $n~+~2$ define triangle $n$. For even $n$, vertices +$n~+~1$, $n$, and $n~+~2$ define triangle $n$. $N^-^2$ triangles are +drawn. +.TP +_const(TRIANGLE_FAN) +Draws a connected group of triangles. +One triangle is defined for each vertex presented after the first two vertices. +Vertices $1$, +$n~+~1$, +and $n~+~2$ define triangle $n$. +$N^-^2$ triangles are drawn. +.TP +_const(QUADS) +Treats each group of four vertices as an independent quadrilateral. +Vertices $4n^-^3$, $4n^-^2$, $4n^-^1$, and $4n$ +define quadrilateral $n$. +$N/4$ quadrilaterals are drawn. +.TP +_const(QUAD_STRIP) +Draws a connected group of quadrilaterals. +One quadrilateral is defined for each pair of vertices presented +after the first pair. +Vertices $2n^-^1$, $2n$, $2n~+~2$, and $2n~+~1$ define quadrilateral $n$. +$N/2^-^1$ quadrilaterals are drawn. +Note that the order in which vertices are used to construct a quadrilateral +from strip data is different from that used with independent data. +.TP +_const(POLYGON) +Draws a single, +convex polygon. +Vertices $1$ through $N$ define this polygon. +.P +Only a subset of GL commands can be used between _cmnd(Begin) and _cmnd(End). +The commands are +_cmnd(Vertex), +_cmnd(Color), +_cmnd(Index), +_cmnd(Normal), +_cmnd(TexCoord), +_cmnd(EvalCoord), +_cmnd(EvalPoint), +_cmnd(ArrayElement), +_cmnd(Material), and +_cmnd(EdgeFlag). +Also, +it is acceptable to use +_cmnd(CallList) or +_cmnd(CallLists) to execute +display lists that include only the preceding commands. +If any other GL command is executed between _cmnd(Begin) and _cmnd(End), +the error flag is set and the command is ignored. +.P +Regardless of the value chosen for _param1(1), +there is no limit to the number of vertices that can be defined +between _cmnd(Begin) and _cmnd(End). +Lines, +triangles, +quadrilaterals, +and polygons that are incompletely specified are not drawn. +Incomplete specification results when either too few vertices are +provided to specify even a single primitive or when an incorrect multiple +of vertices is specified. The incomplete primitive is ignored; the rest are drawn. +.P +The minimum specification of vertices +for each primitive is as follows: +1 for a point, +2 for a line, +3 for a triangle, +4 for a quadrilateral, +and 3 for a polygon. +Modes that require a certain multiple of vertices are +_const(LINES) (2), +_const(TRIANGLES) (3), +_const(QUADS) (4), +and _const(QUAD_STRIP) (2). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1(1) is set to an unaccepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd(Begin) is executed between a +_cmnd(Begin) +and the corresponding execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if _cmnd(End) is executed without being +preceded by a _cmnd(Begin). +.P +_const(INVALID_OPERATION) is generated if a command other than +_cmnd(Vertex), +_cmnd(Color), +_cmnd(Index), +_cmnd(Normal), +_cmnd(TexCoord), +_cmnd(EvalCoord), +_cmnd(EvalPoint), +_cmnd(ArrayElement), +_cmnd(Material), +_cmnd(EdgeFlag), +_cmnd(CallList), or +_cmnd(CallLists) is executed between +the execution of _cmnd(Begin) and the corresponding +execution _cmnd(End). +.P +Execution of +_cmnd(EnableClientState), +_cmnd(DisableClientState), +_cmnd(EdgeFlagPointer), +_cmnd(TexCoordPointer), +_cmnd(ColorPointer), +_cmnd(IndexPointer), +_cmnd(NormalPointer), +.br +_cmnd(VertexPointer), +_cmnd(InterleavedArrays), or +_cmnd(PixelStore) is not allowed after a call to _cmnd(Begin) and before +the corresponding call to _cmnd(End), +but an error may or may not be generated. +.SH SEE ALSO +_cmnd(ArrayElement), +_cmnd(CallList), +_cmnd(CallLists), +_cmnd(Color), +_cmnd(EdgeFlag), +_cmnd(EvalCoord), +.br +_cmnd(EvalPoint), +_cmnd(Index), +_cmnd(Material), +_cmnd(Normal), +_cmnd(TexCoord), +_cmnd(Vertex) + + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/bindtexture.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/bindtexture.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/bindtexture.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,129 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(BindTexture,bind a named texture to a texturing target) +_names(BindTexture) +.SH PARAMETERS +_phead(_param1) +Specifies the target to which the texture is bound. +Must be either +_const(TEXTURE_1D), +_const(TEXTURE_2D), or +_const(TEXTURE_3D). +_phead(_param2) +Specifies the name of a texture. +.SH DESCRIPTION +_cmnd lets you create or use a named texture. Calling _cmnd with +.br +_param1 set to +_const(TEXTURE_1D), _const(TEXTURE_2D), _const(TEXTURE_3D) and _param2 +set to the name +of the newtexture binds the texture name to the target. +When a texture is bound to a target, the previous binding for that +target is automatically broken. +.P +Texture names are unsigned integers. The value zero is reserved to +represent the default texture for each texture target. +Texture names and the corresponding texture contents are local to +the shared display-list space (see _cmnd(XCreateContext)) of the current +GL rendering context; +two rendering contexts share texture names only if they +also share display lists. +.P +You may use _cmnd(GenTextures) to generate a set of new texture names. +.P +When a texture is first bound, it assumes the dimensionality of its +target: A texture first bound to _const(TEXTURE_1D) becomes +one-dimensional, and a texture first bound to _const(TEXTURE_2D) becomes +two-dimensional, and a texture first bound to _const(TEXTURE_3D) becomes +a three-dimensional texture. The state of a one-dimensional texture +immediately after it is first bound is equivalent to the state of the +default _const(TEXTURE_1D) at GL initialization, and similarly for +two-, and three-dimensional textures. +.P +While a texture is bound, GL operations on the target to which it is +bound affect the bound texture, and queries of the target to which it +is bound return state from the bound texture. If texture mapping of +the dimensionality of the target to which a texture is bound is +active, the bound texture is used. +In effect, the texture targets become aliases for the textures currently +bound to them, and the texture name zero refers to the default textures +that were bound to them at initialization. +.P +A texture binding created with _cmnd remains active until a different +texture is bound to the same target, or until the bound texture is +deleted with _cmnd(DeleteTextures). +.P +Once created, a named texture may be re-bound to the target of the +matching dimensionality as often as needed. +It is usually much faster to use _cmnd to bind an existing named +texture to one of the texture targets than it is to reload the texture image +using _cmnd(TexImage1D), _cmnd(TexImage2D), or _cmnd(TexImage3D). +For additional control over performance, use +_cmnd(PrioritizeTextures). +.P +_cmnd is included in display lists. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not one of the allowable +values. +.P +_const(INVALID_OPERATION) is generated if _param2 has a dimensionality +that doesn't match that of _param1. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(TEXTURE_BINDING_1D) +.br +_cmnd(Get) with argument _const(TEXTURE_BINDING_2D) +.br +_cmnd(Get) with argument _const(TEXTURE_BINDING_3D) +.SH SEE ALSO +_cmnd(AreTexturesResident), +_cmnd(DeleteTextures), +_cmnd(GenTextures), +_cmnd(Get), +.br +_cmnd(GetTexParameter), +_cmnd(IsTexture), +_cmnd(PrioritizeTextures), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/bitmap.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/bitmap.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/bitmap.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,139 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_header(Bitmap,draw a bitmap) +_names(Bitmap) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1 _param2) +Specify the pixel width and height of the bitmap image. +_phead(_param3 _param4) +Specify the location of the origin in the bitmap image. +The origin is measured from the lower left corner of the bitmap, +with right and up being the positive axes. +_phead(_param5 _param6) +Specify the \f2x\fP and \f2y\fP offsets to be added to the current raster position +after the bitmap is drawn. +_phead(_param7) +Specifies the address of the bitmap image. +.SH DESCRIPTION +A bitmap is a binary image. +When drawn, +the bitmap is positioned relative to the current raster position, +and frame buffer pixels corresponding to 1's in the bitmap are +written using the current raster color or index. +Frame buffer pixels corresponding to 0's in the bitmap are not modified. +.P +_cmnd takes seven arguments. +The first pair specifies the width and height of the bitmap image. +The second pair specifies the location of the bitmap origin relative +to the lower left corner of the bitmap image. +The third pair of arguments specifies \f2x\fP and \f2y\fP offsets to be added +to the current raster position after the bitmap has been drawn. +The final argument is a pointer to the bitmap image itself. +.P +The bitmap image is interpreted like image data for the _cmnd(DrawPixels) +command, +with _param1 and _param2 corresponding to the width and height arguments +of that command, +and with \f2type\fP set to _const(BITMAP) +and \f2format\fP set to _const(COLOR_INDEX). +.BP +Modes specified using _cmnd(PixelStore) affect the +interpretation of bitmap image data; +modes specified using _cmnd(PixelTransfer) do not. +.P +If the current raster position is invalid, _cmnd is ignored. +Otherwise, +the lower left corner of the bitmap image is positioned at the window coordinates +.ce +.sp +$ x sub w ~=~ \(lf ~ x sub r ~-~ x sub o ~ \(rf $ +.br +.sp +.ce +$ y sub w ~=~ \(lf ~ y sub r ~-~ y sub o ~ \(rf $ +.sp +where $ ( x sub r , y sub r ) $ is the raster position +and $ ( x sub o , y sub o ) $ is the bitmap origin. +Fragments are then generated for each pixel corresponding to a 1 (one) +in the bitmap image. +These fragments are generated using the current raster \f2z\fP coordinate, +color or color index, and current raster texture coordinates. +They are then treated just as if they had been generated +by a point, line, or polygon, +including texture mapping, +.br +fogging, +and all per-fragment operations such as alpha and depth testing. +.P +After the bitmap has been drawn, +the \f2x\fP and \f2y\fP coordinates of the current raster position are offset by +_param5 and _param6. +No change is made to the \f2z\fP coordinate of the current raster position, +or to the current raster color, texture coordinates, or index. +.SH NOTES +To set a valid raster position outside the viewport, first set a valid +raster position inside the viewport, then call _cmnd(Bitmap) with NULL +as the _param7 parameter and with _param5 and _param6 set to +the offsets of the new raster position. This technique is useful when +panning an image around the viewport. +.SH ERRORS +_const(INVALID_VALUE) is generated if _param1 or _param2 is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) and the corresponding execution of +_cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(CURRENT_RASTER_POSITION) +.br +_cmnd(Get) with argument _const(CURRENT_RASTER_COLOR) +.br +_cmnd(Get) with argument _const(CURRENT_RASTER_DISTANCE) +.br +_cmnd(Get) with argument _const(CURRENT_RASTER_INDEX) +.br +_cmnd(Get) with argument _const(CURRENT_RASTER_TEXTURE_COORDS) +.br +_cmnd(Get) with argument _const(CURRENT_RASTER_POSITION_VALID) +.SH SEE ALSO +_cmnd(DrawPixels), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(RasterPos) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/blendcolor.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/blendcolor.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/blendcolor.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,66 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(BlendColor, set the blend color) +_names(BlendColor) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1 _param2 _param3 _param4) +specify the components of _const(BLEND_COLOR) +.SH DESCRIPTION +The _const(BLEND_COLOR) may be used to calculate the source and destination +blending factors. The color components are clamped to the range [0,\ 1] +before being stored. See _cmnd(BlendFunc) for a complete description of the +blending operations. +Initially the _const(BLEND_COLOR) is set to (0, 0, 0, 0). +.SH NOTES +_cmnd is part of the _arbstring(imaging) subset. _cmnd is present only +if _arbstring(imaging) is returned when _cmnd(GetString) is called with +_const(EXTENSIONS) as its argument. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.P +.SH ASSOCIATED GETS +_cmnd(Get) with an argument of _const(BLEND_COLOR) +.SH SEE ALSO +_cmnd(BlendEquation), +_cmnd(BlendFunc), +_cmnd(GetString) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/blendequation.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/blendequation.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/blendequation.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,164 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(BlendEquation, set the blend equation) +_names(BlendEquation) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +specifies how source and destination colors are combined. +It must be _const(FUNC_ADD), _const(FUNC_SUBTRACT), +_const(FUNC_REVERSE_SUBTRACT), _const(MIN), _const(MAX). + +.SH DESCRIPTION +The blend equation determines how a new pixel (the ``source'' color) +is combined with a pixel already in the framebuffer (the ``destination'' +color). +.TP +_const(MIN) +sets the blend equation so that each component of the result color +is the minimum of the corresponding components of the source and destination +colors. +.TP +_const(MAX) +sets the blend equation so that each component of the result color +is the maximum of the corresponding components of the source and destination +colors. +.P +The remaining blend equations use the source and destination blend factors +specified by _cmnd(BlendFunc). +See _cmnd(BlendFunc) for a description of the various blend factors. +.P +In the equations that follow, source and destination +color components are referred to as +$(R sub s, G sub s, B sub s, A sub s )$ +and +$(R sub d, G sub d, B sub d, A sub d )$, +respectively. +The result color is referred to as +$(R sub r, G sub r, B sub r, A sub r )$. +The source and destination blend factors are denoted +$(s sub R, s sub G, s sub B, s sub A )$ and +$(d sub R, d sub G, d sub B, d sub A )$, respectively. +For these equations all color components are understood to have values +in the range [0,\ 1]. +.TP +_const(FUNC_ADD) +sets the blend equation so that the source and destination +data are added. +Each component of the source color is +multiplied by the corresponding source factor, then +each component of the destination color is multiplied +by the corresponding destination factor. +The result is the componentwise sum of the two products, clamped to the +range [0,\ 1]. +.P +.RS +.nf +.IP +$Rr ~=~ mark min (1, ~R sub s~s sub R ~+~ R sub d~d sub R )$ +$Gr ~=~ lineup min (1, ~G sub s~s sub G ~+~ G sub d~d sub G )$ +$Br ~=~ lineup min (1, ~B sub s~s sub B ~+~ B sub d~d sub B )$ +$Ar ~=~ lineup min (1, ~A sub s~s sub A ~+~ A sub d~d sub A )$ +.fi +.RE +.TP +_const(FUNC_SUBTRACT) +Is like _const(FUNC_ADD) except the product of the destination factor and +the destination color is componentwise subtracted from the product of the +source factor and the source color. +The result is clamped to the range [0,\ 1]. +.RS +.nf +.IP +$Rr ~=~ mark max (0 , ~R sub s~s sub R ~-~ R sub d~d sub R )$ +$Gr ~=~ lineup max (0 , ~G sub s~s sub G ~-~ G sub d~d sub G )$ +$Br ~=~ lineup max (0 , ~B sub s~s sub B ~-~ B sub d~d sub B )$ +$Ar ~=~ lineup max (0 , ~A sub s~s sub A ~-~ A sub d~d sub A )$ +.fi +.RE +.TP +_const(FUNC_REVERSE_SUBTRACT) +Is like _const(FUNC_ADD) except the product of the source factor and the +source color is componentwise subtracted from the product of the destination +factor and the destination color. +The result is clamped to the range [0,\ 1]. +.RS +.nf +.IP +$Rr ~=~ mark max (0 , ~R sub d~d sub R ~-~ R sub s~s sub R )$ +$Gr ~=~ lineup max (0 , ~G sub d~d sub G ~-~ G sub s~s sub G )$ +$Br ~=~ lineup max (0 , ~B sub d~d sub B ~-~ B sub s~s sub B )$ +$Ar ~=~ lineup max (0 , ~A sub d~d sub A ~-~ A sub s~s sub A )$ +.fi +.RE +.P +The _const(MIN) and _const(MAX) equations are useful for applications +that analyze +.br +image data (image thresholding against a constant color, +for example). +The _const(FUNC_ADD) equation is useful +for antialiasing and transparency, among other things. +.P +Initially, the blend equation is set to _const(FUNC_ADD). +.P +.SH NOTES +_cmnd is part of the _arbstring(imaging) subset. _cmnd is present only +if _arbstring(imaging) is returned when _cmnd(GetString) is called with +_const(EXTENSIONS) as its argument. +.P +The _const(MIN), and _const(MAX) equations do not use +the source or destination factors, only the source and destination colors. +.P +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not one of +_const(FUNC_ADD), _const(FUNC_SUBTRACT), _const(FUNC_REVERSE_SUBTRACT), +_const(MAX), or _const(MIN). +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +.TP +_cmnd(Get) with an argument of _const(BLEND_EQUATION) +.SH SEE ALSO +_cmnd(GetString), +_cmnd(BlendColor), +_cmnd(BlendFunc) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/blendfunc.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/blendfunc.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/blendfunc.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,265 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(BlendFunc, specify pixel arithmetic) +_names(BlendFunc) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies how the red, green, blue, +and alpha source blending factors are computed. +The following symbolic constants are accepted: +_const(ZERO), +_const(ONE), +_const(DST_COLOR), +_const(ONE_MINUS_DST_COLOR), +_const(SRC_ALPHA), +_const(ONE_MINUS_SRC_ALPHA), +_const(DST_ALPHA), +_const(ONE_MINUS_DST_ALPHA), and +_const(SRC_ALPHA_SATURATE). +The initial value is _const(ONE). +.TE + +Additionally, if the _arbstring(imaging) extension is supported, the +following constants are accepted: +_const(CONSTANT_COLOR), +_const(ONE_MINUS_CONSTANT_COLOR), +_const(CONSTANT_ALPHA), +_const(ONE_MINUS_CONSTANT_ALPHA). +_phead(_param2) +Specifies how the red, green, blue, +and alpha destination blending factors are computed. +Eight symbolic constants are accepted: +_const(ZERO), +_const(ONE), +_const(SRC_COLOR), +_const(ONE_MINUS_SRC_COLOR), +_const(SRC_ALPHA), +_const(ONE_MINUS_SRC_ALPHA), +_const(DST_ALPHA), and +_const(ONE_MINUS_DST_ALPHA). +The initial value is _const(ZERO). +.TE + +Additionally, if the _arbstring(imaging) extension is supported, the +following constants are accepted: +_const(CONSTANT_COLOR), +_const(ONE_MINUS_CONSTANT_COLOR), +_const(CONSTANT_ALPHA), +_const(ONE_MINUS_CONSTANT_ALPHA). +.SH DESCRIPTION +In RGBA mode, pixels can be drawn using a function that blends +the incoming (source) RGBA values with the RGBA values +that are already in the frame buffer (the destination values). +Blending is initially disabled. +Use _cmnd(Enable) and _cmnd(Disable) with argument _const(BLEND) +to enable and disable blending. +.P +_cmnd defines the operation of blending when it is enabled. +_param1 specifies which of nine methods is used to scale the +source color components. +_param2 specifies which of eight methods is used to scale the +destination color components. +The eleven possible methods are described in the following table. +Each method defines four scale factors, +one each for red, green, blue, and alpha. +.P +In the table and in subsequent equations, source and destination +color components are referred to as +$(R sub s , G sub s , B sub s , A sub s )$ and +$(R sub d , G sub d , B sub d , A sub d )$. +The color specified by _cmnd(BlendColor) is referred to as +$(R sub c , G sub c , B sub c , A sub c )$. +They are understood to have integer values between 0 and +$(k sub R , k sub G , k sub B , k sub A )$, +where +.P +.RS +.ce +$k sub c ~=~ 2 sup m sub c - 1$ +.RE +.P +and +$(m sub R , m sub G , m sub B , m sub A )$ +is the number of red, +green, +blue, +and alpha bitplanes. +.P +Source and destination scale factors are referred to as +$(s sub R , s sub G , s sub B , s sub A )$ and +$(d sub R , d sub G , d sub B , d sub A )$. +The scale factors described in the table, +denoted $(f sub R , f sub G , f sub B , f sub A )$, +represent either source or destination factors. +All scale factors have range [0,\ 1]. +.P +.TS +center; +lb cb +l c . +_ +Parameter $(f sub R , ~~ f sub G , ~~ f sub B , ~~ f sub A )$ +_ +_const(ZERO) $(0, ~0, ~0, ~0 )$ +_const(ONE) $(1, ~1, ~1, ~1 )$ +_const(SRC_COLOR) $(R sub s / k sub R , ~G sub s / k sub G , ~B sub s / k sub B , ~A sub s / k sub A )$ +_const(ONE_MINUS_SRC_COLOR) $(1, ~1, ~1, ~1 ) ~-~ (R sub s / k sub R , ~G sub s / k sub G , ~B sub s / k sub B , ~A sub s / k sub A )$ +_const(DST_COLOR) $(R sub d / k sub R , ~G sub d / k sub G , ~B sub d / k sub B , ~A sub d / k sub A )$ +_const(ONE_MINUS_DST_COLOR) $(1, ~1, ~1, ~1 ) ~-~ (R sub d / k sub R , ~G sub d / k sub G , ~B sub d / k sub B , ~A sub d / k sub A )$ +_const(SRC_ALPHA) $(A sub s / k sub A , ~A sub s / k sub A , ~A sub s / k sub A , ~A sub s / k sub A )$ +_const(ONE_MINUS_SRC_ALPHA) $(1, ~1, ~1, ~1 ) ~-~ (A sub s / k sub A , ~A sub s / k sub A , ~A sub s / k sub A , ~A sub s / k sub A )$ +_const(DST_ALPHA) $(A sub d / k sub A , ~A sub d / k sub A , ~A sub d / k sub A , ~A sub d / k sub A )$ +_const(ONE_MINUS_DST_ALPHA) $(1, ~1, ~1, ~1 ) ~-~ (A sub d / k sub A , ~A sub d / k sub A , ~A sub d / k sub A , ~A sub d / k sub A )$ +_const(SRC_ALPHA_SATURATE) $(i, ~i, ~i, ~1 )$ +_const(CONSTANT_COLOR) $(R sub c, G sub c, B sub c, A sub c)$ +_const(ONE_MINUS_CONSTANT_COLOR) $(1, ~1, ~1, ~1 ) ~-~ (R sub c, G sub c, B sub c, A sub c)$ +_const(CONSTANT_ALPHA) $(A sub c, A sub c, A sub c, A sub c)$ +_const(ONE_MINUS_CONSTANT_ALPHA) $(1, ~1, ~1, ~1 ) ~-~ (A sub c, A sub c, A sub c, A sub c)$ +_ +.TE +.sp +In the table, +.P +.RS +.nf +.IP +$i ~=~ min (A sub s , ~k sub A ~-~ A sub d ) ~/~ k sub A$ +.fi +.RE +.P +To determine the blended RGBA values of a pixel when drawing in RGBA mode, +the system uses the following equations: +.P +.RS +.nf +.IP +$R sub d ~=~ mark min ( k sub R, ~R sub s~s sub R~+~R sub d~d sub R )$ +$G sub d ~=~ lineup min ( k sub G, ~G sub s~s sub G~+~G sub d~d sub G )$ +$B sub d ~=~ lineup min ( k sub B, ~B sub s~s sub B~+~B sub d~d sub B )$ +$A sub d ~=~ lineup min ( k sub A, ~A sub s~s sub A~+~A sub d~d sub A )$ +.fi +.RE +.P +Despite the apparent precision of the above equations, +blending arithmetic is not exactly specified, +because blending operates with imprecise integer color values. +However, +a blend factor that should be equal to 1 +is guaranteed not to modify its multiplicand, +and a blend factor equal to 0 reduces its multiplicand to 0. +For example, +when _param1 is _const(SRC_ALPHA), +_param2 is _const(ONE_MINUS_SRC_ALPHA), +and $A sub s$ is equal to $k sub A$, +the equations reduce to simple replacement: +.P +.RS +.nf +.IP +$R sub d ~=~ mark R sub s$ +$G sub d ~=~ lineup G sub s$ +$B sub d ~=~ lineup B sub s$ +$A sub d ~=~ lineup A sub s$ +.fi +.RE +.P +.SH EXAMPLES +.P +Transparency is best implemented using blend function +(_const(SRC_ALPHA), _const(ONE_MINUS_SRC_ALPHA)) +with primitives sorted from farthest to nearest. +Note that this transparency calculation does not require +the presence of alpha bitplanes in the frame buffer. +.P +Blend function +(_const(SRC_ALPHA), _const(ONE_MINUS_SRC_ALPHA)) +is also useful for rendering antialiased points and lines +in arbitrary order. +.P +Polygon antialiasing is optimized using blend function +.br +(_const(SRC_ALPHA_SATURATE), _const(ONE)) +with polygons sorted from nearest to farthest. +(See the _cmnd(Enable), _cmnd(Disable) reference page and the +_const(POLYGON_SMOOTH) argument for information on polygon antialiasing.) +Destination alpha bitplanes, +which must be present for this blend function to operate correctly, +store the accumulated coverage. +.SH NOTES +Incoming (source) alpha is correctly thought of as a material opacity, +ranging from 1.0 ($K sub A$), representing complete opacity, +to 0.0 (0), representing complete +transparency. +.P +When more than one color buffer is enabled for drawing, +the GL performs blending separately for each enabled buffer, +using the contents of that buffer for destination color. +(See _cmnd(DrawBuffer).) +.P +Blending affects only RGBA rendering. +It is ignored by color index renderers. +.P +_const(CONSTANT_COLOR), _const(ONE_MINUS_CONSTANT_COLOR), +_const(CONSTANT_ALPHA), _const(ONE_MINUS_CONSTANT_ALPHA) are only +available if the _arbstring(imaging) is supported by your implementation. +.SH ERRORS +_const(INVALID_ENUM) is generated if either _param1 or _param2 is not an +accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(BLEND_SRC) +.br +_cmnd(Get) with argument _const(BLEND_DST) +.br +_cmnd(IsEnabled) with argument _const(BLEND) +.br +.SH SEE ALSO +_cmnd(AlphaFunc), +_cmnd(BlendColor), +_cmnd(BlendEquation), +_cmnd(Clear), +_cmnd(DrawBuffer), +_cmnd(Enable), +_cmnd(LogicOp), +_cmnd(StencilFunc) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/c diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/c:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/c Mon Jan 14 17:13:29 2002 @@ -0,0 +1,2 @@ +.Op + c +.ds BN \f6Graphics Reference, C Edition\f1 Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/calllist.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/calllist.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/calllist.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,78 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_header(CallList,execute a display list) +_names(CallList) +.SH PARAMETERS +_phead(_param1) +Specifies the integer name of the display list to be executed. +.SH DESCRIPTION +_cmnd causes the named display list to be executed. +The commands saved in the display list are executed in order, +just as if they were called without using a display list. +If _param1 has not been defined as a display list, +_cmnd is ignored. +.P +_cmnd can appear inside a display list. +To avoid the possibility of infinite recursion resulting from display lists +calling one another, +a limit is placed on the nesting level of display +lists during display-list execution. +This limit is at least 64, and it depends on the implementation. +.P +GL state is not saved and restored across a call to _cmnd. +Thus, +changes made to GL state during the execution of a display list +remain after execution of the display list is completed. +Use _cmnd(PushAttrib), +_cmnd(PopAttrib), +_cmnd(PushMatrix), +and _cmnd(PopMatrix) to preserve GL state across _cmnd calls. +.SH NOTES +Display lists can be executed between a call to _cmnd(Begin) +and the corresponding call to _cmnd(End), +as long as the display list includes only commands that are allowed +in this interval. +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MAX_LIST_NESTING) +.br +_cmnd(IsList) +.SH SEE ALSO +_cmnd(CallLists), +_cmnd(DeleteLists), +_cmnd(GenLists), +_cmnd(NewList), +_cmnd(PushAttrib), +_cmnd(PushMatrix) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/calllists.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/calllists.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/calllists.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,178 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_header(CallLists,execute a list of display lists) +_names(CallLists) +.SH PARAMETERS +_phead(_param1) +Specifies the number of display lists to be executed. +_phead(_param2) +Specifies the type of values in _param3. +Symbolic constants +_const(BYTE), +_const(UNSIGNED_BYTE), +_const(SHORT), +_const(UNSIGNED_SHORT), +_const(INT), +_const(UNSIGNED_INT), +_const(FLOAT), +_const(2_BYTES), +_const(3_BYTES), and +_const(4_BYTES) are accepted. +_phead(_param3) +Specifies the address of an array of name offsets in the display list. +The pointer type is void because the offsets can be bytes, +shorts, +ints, +or floats, +depending on the value of _param2. +.SH DESCRIPTION +_cmnd causes each display list in the list of names passed as _param3 +to be executed. +As a result, +the commands saved in each display list are executed in order, +just as if they were called without using a display list. +Names of display lists that have not been defined are ignored. +.P +_cmnd provides an efficient means for executing more than one display list. +_param2 allows lists with various name formats to be accepted. +The formats are as follows: +.TP 25 +_const(BYTE) +_param3 is treated as an array of signed bytes, +each in the range \-128 through 127. +.TP +_const(UNSIGNED_BYTE) +_param3 is treated as an array of unsigned bytes, +each in the range 0 through 255. +.TP +_const(SHORT) +_param3 is treated as an array of signed two-byte integers, +each in the range \-32768 through 32767. +.TP +_const(UNSIGNED_SHORT) +_param3 is treated as an array of unsigned two-byte integers, +each in the range 0 through 65535. +.TP +_const(INT) +_param3 is treated as an array of signed four-byte integers. +.TP +_const(UNSIGNED_INT) +_param3 is treated as an array of unsigned four-byte integers. +.TP +_const(FLOAT) +_param3 is treated as an array of four-byte floating-point values. +.TP +_const(2_BYTES) +_param3 is treated as an array of unsigned bytes. +Each pair of bytes specifies a single display-list name. +The value of the pair is computed as 256 times the unsigned value +of the first byte plus the unsigned value of the second byte. +.TP +_const(3_BYTES) +_param3 is treated as an array of unsigned bytes. +Each triplet of bytes specifies a single display-list name. +The value of the triplet is computed as 65536 times the unsigned value +of the first byte, +plus 256 times the unsigned value of the second byte, +plus the unsigned value of the third byte. +.TP +_const(4_BYTES) +_param3 is treated as an array of unsigned bytes. +Each quadruplet of bytes specifies a single display-list name. +The value of the quadruplet is computed as 16777216 times the unsigned value +of the first byte, +plus 65536 times the unsigned value of the second byte, +plus 256 times the unsigned value of the third byte, +plus the unsigned value of the fourth byte. +.P +The list of display-list names is not null-terminated. +Rather, +_param1 specifies how many names are to be taken from _param3. +.P +An additional level of indirection is made available with the +_cmnd(ListBase) command, +which specifies an unsigned offset that is added to each display-list +name specified in _param3 before that display list is executed. +.P +_cmnd can appear inside a display list. +To avoid the possibility of infinite recursion resulting from display lists +calling one another, +a limit is placed on the nesting level of display +lists during display-list execution. +This limit must be at least 64, and it depends on the implementation. +.P +GL state is not saved and restored across a call to _cmnd. +Thus, +changes made to GL state during the execution of the display lists +remain after execution is completed. +Use _cmnd(PushAttrib), +_cmnd(PopAttrib), +_cmnd(PushMatrix), +and _cmnd(PopMatrix) to preserve GL state across _cmnd calls. +.SH NOTES +Display lists can be executed between a call to _cmnd(Begin) +and the corresponding call to _cmnd(End), +as long as the display list includes only commands that are allowed +in this interval. +.SH ERRORS +_const(INVALID_VALUE) is generated if _param1 is negative. +.P +_const(INVALID_ENUM) is generated if _param2 is not one of +_const(BYTE), +_const(UNSIGNED_BYTE), +_const(SHORT), +_const(UNSIGNED_SHORT), +_const(INT), +_const(UNSIGNED_INT), +_const(FLOAT), +_const(2_BYTES), +_const(3_BYTES), +_const(4_BYTES). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(LIST_BASE) +.br +_cmnd(Get) with argument _const(MAX_LIST_NESTING) +.br +_cmnd(IsList) +.SH SEE ALSO +_cmnd(CallList), +_cmnd(DeleteLists), +_cmnd(GenLists), +_cmnd(ListBase), +_cmnd(NewList), +_cmnd(PushAttrib), +.br +_cmnd(PushMatrix) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/clear.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/clear.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/clear.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,116 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Clear,clear buffers to preset values) +_names(Clear) +.SH PARAMETERS +_phead(_param1) +Bitwise OR of masks that indicate the buffers to be cleared. +The four masks are +_const(COLOR_BUFFER_BIT), +_const(DEPTH_BUFFER_BIT), +_const(ACCUM_BUFFER_BIT), and +_const(STENCIL_BUFFER_BIT). +.SH DESCRIPTION +_cmnd sets the bitplane area of the window to values previously selected +by _cmnd(ClearColor), _cmnd(ClearIndex), _cmnd(ClearDepth), +_cmnd(ClearStencil), and _cmnd(ClearAccum). +Multiple color buffers can be cleared simultaneously by selecting +more than one buffer at a time using _cmnd(DrawBuffer). +.P +The pixel ownership test, +the scissor test, +dithering, and the buffer writemasks affect the operation of _cmnd. +The scissor box bounds the cleared region. +Alpha function, +blend function, +logical operation, +stenciling, +texture mapping, +and depth-buffering are ignored by _cmnd. +.P +_cmnd takes a single argument that is the bitwise OR of several +values indicating which buffer is to be cleared. +.P +The values are as follows: +.TP 28 +_const(COLOR_BUFFER_BIT) +Indicates the buffers currently enabled for color +writing. +.TP +_const(DEPTH_BUFFER_BIT) +Indicates the depth buffer. +.TP +_const(ACCUM_BUFFER_BIT) +Indicates the accumulation buffer. +.TP +_const(STENCIL_BUFFER_BIT) +Indicates the stencil buffer. +.P +The value to which each buffer is cleared depends on the setting of the +clear value for that buffer. +.SH NOTES +If a buffer is not present, +then a _cmnd directed at that buffer has no effect. +.SH ERRORS +_const(INVALID_VALUE) is generated if any bit other than the four defined +bits is set in _param1. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(ACCUM_CLEAR_VALUE) +.br +_cmnd(Get) with argument _const(DEPTH_CLEAR_VALUE) +.br +_cmnd(Get) with argument _const(INDEX_CLEAR_VALUE) +.br +_cmnd(Get) with argument _const(COLOR_CLEAR_VALUE) +.br +_cmnd(Get) with argument _const(STENCIL_CLEAR_VALUE) +.SH SEE ALSO +_cmnd(ClearAccum), +_cmnd(ClearColor), +_cmnd(ClearDepth), +_cmnd(ClearIndex), +_cmnd(ClearStencil), +_cmnd(ColorMask), +_cmnd(DepthMask), +_cmnd(DrawBuffer), +_cmnd(Scissor), +_cmnd(StencilMask) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/clearaccum.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/clearaccum.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/clearaccum.gl Mon Jan 14 17:13:29 2002 @@ -0,0 +1,59 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ClearAccum,specify clear values for the accumulation buffer) +_names(ClearAccum) +.SH PARAMETERS +_phead(_param1 _param2 _param3 _param4) +Specify the red, green, blue, and alpha values used when the +accumulation buffer is cleared. +The initial values are all 0. +.SH DESCRIPTION +_cmnd specifies the red, green, blue, and alpha values used by _cmnd(Clear) +to clear the accumulation buffer. +.P +Values specified by _cmnd are clamped to the +range [-1,\ 1]. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(ACCUM_CLEAR_VALUE) +.SH SEE ALSO +_cmnd(Accum), +_cmnd(Clear) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/clearcolor.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/clearcolor.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/clearcolor.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,58 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ClearColor,specify clear values for the color buffers) +_names(ClearColor) +.SH PARAMETERS +_phead(_param1 _param2 _param3 _param4) +Specify the red, green, blue, and alpha values used when the +color buffers are cleared. +The initial values are all 0. +.SH DESCRIPTION +_cmnd specifies the red, +green, +blue, +and alpha values used by _cmnd(Clear) to clear the color buffers. +Values specified by _cmnd are clamped to the range [0,\ 1]. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(COLOR_CLEAR_VALUE) +.SH SEE ALSO +_cmnd(Clear) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/cleardepth.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/cleardepth.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/cleardepth.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,54 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ClearDepth,specify the clear value for the depth buffer) +_names(ClearDepth) +.SH PARAMETERS +_phead(_param1) +Specifies the depth value used when the depth buffer is cleared. The +initial value is 1. +.SH DESCRIPTION +_cmnd specifies the depth value used by _cmnd(Clear) to clear the depth buffer. +Values specified by _cmnd are clamped to the range [0,\ 1]. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(DEPTH_CLEAR_VALUE) +.SH SEE ALSO +_cmnd(Clear) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/clearindex.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/clearindex.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/clearindex.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,65 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ClearIndex,specify the clear value for the color index buffers) +_names(ClearIndex) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the index used when the color index buffers are cleared. +The initial value is 0. +.SH DESCRIPTION +_cmnd specifies the index used by _cmnd(Clear) +to clear the color index buffers. +_param1 is not clamped. +Rather, +_param1 is converted to a fixed-point value with unspecified precision +to the right of the binary point. +The integer part of this value is then masked with $2 sup m^-^1$, +where $m$ is the number of bits in a color index stored in the frame buffer. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(INDEX_CLEAR_VALUE) +.br +_cmnd(Get) with argument _const(INDEX_BITS) +.SH SEE ALSO +_cmnd(Clear) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/clearstencil.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/clearstencil.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/clearstencil.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,63 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ClearStencil,specify the clear value for the stencil buffer) +_names(ClearStencil) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the index used when the stencil buffer is cleared. +The initial value is 0. +.SH DESCRIPTION +_cmnd specifies the index used by _cmnd(Clear) to clear the stencil buffer. +_param1 is masked with $2 sup m^-^1$, +where $m$ is the number of bits in the stencil buffer. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(STENCIL_CLEAR_VALUE) +.br +_cmnd(Get) with argument _const(STENCIL_BITS) +.SH SEE ALSO +_cmnd(Clear), +_cmnd(StencilFunc), +_cmnd(StencilOp), +_cmnd(StencilMask) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/clientactivetextureARB.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/clientactivetextureARB.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/clientactivetextureARB.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,72 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn|tbl)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ClientActiveTextureARB, select active texture unit) +_names(ClientActiveTextureARB) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies which texture unit to make active. The number +of texture units is implementation dependent, but must be at least +two. _param1 must be one of _arbconstidx(TEXTURE) +where 0 \(<= $ i $ < _arbconst(MAX_TEXTURE_UNITS), which is an +implementation-dependent value. The initial value is +_arbconst(TEXTURE0). +.SH DESCRIPTION +_cmnd selects the vertex array client state parameters to be modified by +_cmnd(TexCoordPointer), and enabled or disabled with +_cmnd(EnableClientState) or _cmnd(DisableClientState), respectively, +when called with a parameter of _const(TEXTURE_COORD_ARRAY). +.SH NOTES +_cmnd is supported only if _arbstring(multitexture) is included in the +string returned by _cmnd(GetString) when called with the argument +_const(EXTENSIONS). +.P +_cmnd sets _arbconst(CLIENT_ACTIVE_TEXTURE) to the active texture unit. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not one of +_arbconstidx(TEXTURE), where +0 \(<= $ i $ < _arbconst(MAX_TEXTURE_UNITS). +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(DisableClientState), +_cmnd(EnableClientState), +_cmnd(MultiTexCoordARB), +_cmnd(TexCoordPointer) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/clipplane.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/clipplane.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/clipplane.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,96 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ClipPlane,specify a plane against which all geometry is clipped) +_names(ClipPlane) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies which clipping plane is being positioned. +Symbolic names of the form _const(CLIP_PLANE)\f2i\fP, +where \f2i\fP is an integer between 0 and _const(MAX_CLIP_PLANES)$^-^1$, +are accepted. +_phead(_param2) +Specifies the address of an array of four double-precision floating-point values. +These values are interpreted as a plane equation. +.SH DESCRIPTION +Geometry is always clipped against the boundaries of a six-plane frustum +in \f2x\fP, \f2y\fP, and \f2z\fP. +_cmnd allows the specification of additional planes, +not necessarily perpendicular to the \f2x\fP, \f2y\fP, or \f2z\fP axis, +against which all geometry is clipped. +To determine the maximum number of additional clipping planes, call +_cmnd(GetIntegerv) with argument _const(MAX_CLIP_PLANES). All +implementations support at least six such clipping planes. +Because the resulting clipping region is the intersection +of the defined half-spaces, +it is always convex. +.P +_cmnd specifies a half-space using a four-component plane equation. +When _cmnd is called, +_param2 is transformed by the inverse of the modelview matrix +and stored in the resulting eye coordinates. +Subsequent changes to the modelview matrix have no effect on the +stored plane-equation components. +If the dot product of the eye coordinates of a vertex with the +stored plane equation components is positive or zero, +the vertex is \f2in\f1 with respect to that clipping plane. +Otherwise, it is \f2out\fP. +.P +To enable and disable clipping planes, call +_cmnd(Enable) and _cmnd(Disable) with the argument +_const(CLIP_PLANE)\f2i\fP, +where \f2i\fP is the plane number. +.P +All clipping planes are initially defined as (0, 0, 0, 0) in eye coordinates +and are disabled. +.SH NOTES +It is always the case that _const(CLIP_PLANE)$i$ = _const(CLIP_PLANE0)$~+~i$. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetClipPlane) +.br +_cmnd(IsEnabled) with argument _const(CLIP_PLANE)\f2i\fP +.SH SEE ALSO +_cmnd(Enable) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/color.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/color.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/color.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,104 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Color, set the current color) +_names(Color,[34]u*[bsifd]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1 _param2 _param3) +Specify new red, green, and blue values for the current color. +_phead(_param4) +Specifies a new alpha value for the current color. +Included only in the four-argument _cmnd(Color4) commands. +_names(Color,[34]u*[bsifd]v) +.SH PARAMETERS +_phead(_param1) +Specifies a pointer to an array that contains red, green, blue, +and (sometimes) alpha values. +.SH DESCRIPTION +The GL stores both a current single-valued color index +and a current four-valued RGBA color. +_cmnd sets a new four-valued RGBA color. +_cmnd has two major variants: +_cmnd(Color3) and _cmnd(Color4). +_cmnd(Color3) variants specify new red, +green, +and blue values explicitly +and set the current alpha value to 1.0 (full intensity) implicitly. +_cmnd(Color4) variants specify all four color components explicitly. +.P +_cmnd(Color3b), _cmnd(Color4b), +_cmnd(Color3s), _cmnd(Color4s), _cmnd(Color3i), and _cmnd(Color4i) take +three or four signed byte, short, or long integers as arguments. +When \f3v\fP is appended to the name, +the color commands can take a pointer to an array of such values. +.P +Current color values are stored in floating-point format, +with unspecified mantissa and exponent sizes. +Unsigned integer color components, +when specified, +are linearly mapped to floating-point values such that the largest +representable value maps to 1.0 (full intensity), +and 0 maps to 0.0 (zero intensity). +Signed integer color components, +when specified, +are linearly mapped to floating-point values such that the most positive +representable value maps to 1.0, +and the most negative representable value maps to \-1.0. (Note that +this mapping does not convert 0 precisely to 0.0.) +Floating-point values are mapped directly. +.P +Neither floating-point nor signed integer values are clamped +to the range [0,1] before the current color is updated. +However, +color components are clamped to this range before they are interpolated +or written into a color buffer. +.SH NOTES +The initial value for the current color is (1, 1, 1, 1). +.P +The current color can be updated at any time. +In particular, +_cmnd can be called between a call to _cmnd(Begin) and the corresponding +call to _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(CURRENT_COLOR) +.br +_cmnd(Get) with argument _const(RGBA_MODE) +.SH SEE ALSO +_cmnd(Index) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/colormask.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/colormask.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/colormask.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,74 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ _define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ColorMask,enable and disable writing of frame buffer color components) +_names(ColorMask) +.SH PARAMETERS +_phead(_param1 _param2 _param3 _param4) +Specify whether red, green, blue, and alpha can or cannot be written +into the frame buffer. +The initial values are all _const(TRUE), +indicating that the color components can be written. +.SH DESCRIPTION +_cmnd specifies whether the individual color components in the frame buffer +can or cannot be written. +If _param1 is _const(FALSE), +for example, +no change is made to the red component of any pixel in any of the +color buffers, +regardless of the drawing operation attempted. +.P +Changes to individual bits of components cannot be controlled. +Rather, +changes are either enabled or disabled for entire color components. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(COLOR_WRITEMASK) +.br +_cmnd(Get) with argument _const(RGBA_MODE) +.SH SEE ALSO +_cmnd(Clear), +_cmnd(Color), +_cmnd(ColorPointer), +_cmnd(DepthMask), +_cmnd(Index), +_cmnd(IndexPointer), +_cmnd(IndexMask), +_cmnd(StencilMask) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/colormaterial.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/colormaterial.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/colormaterial.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,109 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ColorMaterial,cause a material color to track the current color) +_names(ColorMaterial) +.SH PARAMETERS +_phead(_param1) +Specifies whether front, +back, +or both front and back material parameters should track the current color. +Accepted values are +_const(FRONT), +_const(BACK), +and _const(FRONT_AND_BACK). +The initial value is _const(FRONT_AND_BACK). +_phead(_param2) +Specifies which of several material parameters track the current color. +Accepted values are +_const(EMISSION), +_const(AMBIENT), +_const(DIFFUSE), +_const(SPECULAR), +and _const(AMBIENT_AND_DIFFUSE). +The initial value is _const(AMBIENT_AND_DIFFUSE). +.SH DESCRIPTION +_cmnd specifies which material parameters track the current color. +When _const(COLOR_MATERIAL) is enabled, +the material parameter or parameters specified by _param2, +of the material or materials specified by _param1, +track the current color at all times. +.P +To enable and disable _const(COLOR_MATERIAL), call +_cmnd(Enable) and _cmnd(Disable) with argument _const(COLOR_MATERIAL). +_const(COLOR_MATERIAL) is initially disabled. +.SH NOTES +_cmnd makes it possible to change a subset of material parameters for each +vertex using only the _cmnd(Color) command, +without calling _cmnd(Material). +If only such a subset of parameters is to be specified for each +vertex, calling _cmnd is preferable to calling _cmnd(Material). +.P +Call _cmnd before enabling _const(COLOR_MATERIAL). +.P +Calling _cmnd(DrawElements), _cmnd(DrawArrays), or _cmnd(DrawRangeElements) +may leave the current color indeterminate, if the color array is enabled. +If +_cmnd is enabled while the current color is indeterminate, the +lighting material state specified by _param1 and _param2 is also indeterminate. +.P +If the GL version is 1.1 or greater, and _const(COLOR_MATERIAL) is +enabled, evaluated color values affect the results of the lighting +equation as if the current color were being modified, but no change is +made to the tracking lighting parameter of the current color. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 or _param2 is not an +accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed between +the execution of _cmnd(Begin) and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(IsEnabled) with argument _const(COLOR_MATERIAL) +.br +_cmnd(Get) with argument _const(COLOR_MATERIAL_PARAMETER) +.br +_cmnd(Get) with argument _const(COLOR_MATERIAL_FACE) +.SH SEE ALSO +_cmnd(Color), +_cmnd(ColorPointer), +_cmnd(DrawArrays), +_cmnd(DrawElements), +_cmnd(DrawRangeElements), +_cmnd(Enable), +_cmnd(Light), +_cmnd(LightModel), +_cmnd(Material) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/colorpointer.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/colorpointer.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/colorpointer.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,146 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ A real line follows. +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ Use GL not OpenGL +_C_ Don't change the ordering of the main headers. +_C_ C specification (or fortran) is handled automatically +_C_ .TH is automatically added to the top of this file. +_C_ Below, use current tense, active do not capitalize the first word and dont +_C_ use a period. +_C_ the function name must appear in (APIFILE) (usually gl.h) as set in +_C_ Makefile. +_header(ColorPointer,define an array of colors) +_names(ColorPointer) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the number of components per color. Must be 3 or 4. +The initial value is 4. +_phead(_param2) +Specifies the data type of each color component in the array. +Symbolic constants +_const(BYTE), +_const(UNSIGNED_BYTE), +_const(SHORT), +_const(UNSIGNED_SHORT), +_const(INT), +_const(UNSIGNED_INT), +_const(FLOAT), +and +_const(DOUBLE) +are accepted. +The initial value is _const(FLOAT). +_phead(_param3) +Specifies the byte offset between consecutive colors. +If _param3 is 0 (the initial value), the colors are understood to be +tightly packed in the array. The initial value is 0. +_phead(_param4) +Specifies a pointer to the first component of the first color element +in the array. +.SH DESCRIPTION +_cmnd specifies the location and data format of an array of color components +to use when rendering. +_param1 specifies the number of components per color, and must be 3 or 4. +_param2 specifies the data type of each color component, and _param3 +specifies the byte stride from one color to the next allowing vertices and +attributes to be packed into a single array or stored in separate arrays. +(Single-array storage may be more efficient on some implementations; +see _cmnd(InterleavedArrays).) +.P +When a color array is specified, +_param1, _param2, _param3, and _param4 are saved as client-side +state. +.P +To enable and disable the color array, call _cmnd(EnableClientState) and +.br +_cmnd(DisableClientState) with the argument _const(COLOR_ARRAY). If +enabled, the color array is used when _cmnd(DrawArrays), +_cmnd(DrawElements), _cmnd(DrawRangeElements), or _cmnd(ArrayElement) is +called. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +The color array is initially disabled and isn't accessed when +_cmnd(ArrayElement), _cmnd(DrawArrays), _cmnd(DrawRangeElements), +or _cmnd(DrawElements) is called. +.P +Execution of _cmnd is not allowed between the execution of +_cmnd(Begin) and the corresponding execution of _cmnd(End), +but an error may or may not be generated. If no error is generated, +the operation is undefined. +.P +_cmnd is typically implemented on the client side. +.P +Color array parameters are client-side state and are therefore not saved +or restored by _cmnd(PushAttrib) and _cmnd(PopAttrib). +Use _cmnd(PushClientAttrib) and _cmnd(PopClientAttrib) instead. +.SH ERRORS +_const(INVALID_VALUE) is generated if _param1 is not 3 or 4. +.P +_const(INVALID_ENUM) is generated if _param2 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param3 is negative. +.SH ASSOCIATED GETS +_cmnd(IsEnabled) with argument _const(COLOR_ARRAY) +.br +_cmnd(Get) with argument _const(COLOR_ARRAY_SIZE) +.br +_cmnd(Get) with argument _const(COLOR_ARRAY_TYPE) +.br +_cmnd(Get) with argument _const(COLOR_ARRAY_STRIDE) +.br +_cmnd(GetPointerv) with argument _const(COLOR_ARRAY_POINTER) +.SH SEE ALSO +_C_ no queries or gets listed above, alphabetize commands, +_C_ seperate with commas not .br. no command appears in the associated gets +_C_ as well as in SEE ALSO. +_cmnd(ArrayElement), +_cmnd(DrawArrays), +_cmnd(DrawElements), +_cmnd(EdgeFlagPointer), +_cmnd(Enable), +_cmnd(GetPointerv), +_cmnd(IndexPointer), +_cmnd(InterleavedArrays), +_cmnd(NormalPointer), +_cmnd(PopClientAttrib), +_cmnd(PushClientAttrib), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/colorsubtable.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/colorsubtable.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/colorsubtable.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,128 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(ColorSubTable,respecify a portion of a color table) +_names(ColorSubTable) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__start>@,@<_param2>@)_C_ +_define(@<__count>@,@<_param3>@)_C_ +_define(@<__format>@,@<_param4>@)_C_ +_define(@<__type>@,@<_param5>@)_C_ +_define(@<__table>@,@<_param6>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be one of +_const(COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), or +_const(POST_COLOR_MATRIX_COLOR_TABLE). +_phead(__start) +The starting index of the portion of the color table to be replaced. +_phead(__count) +The number of table entries to replace. +_phead(__format) +The format of the pixel data in __table. +The allowable values are +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(LUMINANCE), +_const(LUMINANCE_ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), and +_const(BGRA). +_phead(__type) +The type of the pixel data in __table. +The allowable values are +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV). +_phead(__table) +Pointer to a one-dimensional array of pixel data that is processed to +replace the specified region of the color table. +.SH DESCRIPTION +_cmnd is used to respecify a contiguous portion of a color table previously +defined using _cmnd(ColorTable). The pixels referenced by __table replace the +portion of the existing table from indices __start to +$_eqnparam2~+~_eqnparam3~-~1$, inclusive. This region may not include any +entries outside the range of the color table as it was originally specified. +It is not an error to specify a subtexture with width of 0, but such a +specification has no effect. +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.P +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not one of the allowable +values. +.P +_const(INVALID_VALUE) is generated if $_eqnparam2~+~_eqnparam3~>~width$. +.P +_const(INVALID_ENUM) is generated if __format is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __type is not one of the allowable +values. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetColorTable), +_cmnd(GetColorTableParameter) +.SH SEE ALSO +_cmnd(ColorSubTable), +_cmnd(ColorTableParameter), +_cmnd(CopyColorTable), +_cmnd(CopyColorSubTable), +_cmnd(GetColorTable) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/colortable.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/colortable.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/colortable.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,318 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(ColorTable,define a color lookup table) +_names(ColorTable) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__internalformat>@,@<_param2>@)_C_ +_define(@<__width>@,@<_param3>@)_C_ +_define(@<__format>@,@<_param4>@)_C_ +_define(@<__type>@,@<_param5>@)_C_ +_define(@<__table>@,@<_param6>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be one of +_const(COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), +_const(POST_COLOR_MATRIX_COLOR_TABLE), +_const(PROXY_COLOR_TABLE), +_const(PROXY_POST_CONVOLUTION_COLOR_TABLE), +or +_const(PROXY_POST_COLOR_MATRIX_COLOR_TABLE). +_phead(__internalformat) +The internal format of the color table. +The allowable values are +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(INTENSITY), +_const(INTENSITY4), +_const(INTENSITY8), +_const(INTENSITY12), +_const(INTENSITY16), +_const(R3_G3_B2), +_const(RGB), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), and +_const(RGBA16). +_phead(__width) +The number of entries in the color lookup table specified by __table. +_phead(__format) +The format of the pixel data in __table. +The allowable values are +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(LUMINANCE), +_const(LUMINANCE_ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), and +_const(BGRA). +_phead(__type) +The type of the pixel data in __table. +The allowable values are +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV). +_phead(__table) +Pointer to a one-dimensional array of pixel data that is processed to +build the color table. +.SH DESCRIPTION +_cmnd may be used in two ways: +to test the actual size and color resolution of a lookup table +given a particular set of parameters, +or to load the contents of a color lookup +table. +Use the targets _const(PROXY_*) for the first case +and the other targets for the second case. +.P +If __target is _const(COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), +or +_const(POST_COLOR_MATRIX_COLOR_TABLE), +_cmnd builds a color lookup table from an array of pixels. +The pixel array specified by __width, __format, __type, and __table +is extracted from memory and +processed just as if _cmnd(DrawPixels) were called, but processing +stops after the final expansion to RGBA is completed. +.P +The four scale parameters and the four bias parameters that are defined +for the table are then used to scale and bias the R, G, B, and A components +of each pixel. +(Use _cmnd(ColorTableParameter) to set these scale and bias +parameters.) +.P +Next, the R, G, B, and A values are clamped to the range [0,\ 1]. +Each pixel is then converted to the internal format specified by +__internalformat. +This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal format (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.P +.TS +center; +lb cb cb cb cb cb cb +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +_const(ALPHA) A +_const(LUMINANCE) R +_const(LUMINANCE_ALPHA) A R +_const(INTENSITY) R +_const(RGB) R G B +_const(RGBA) R G B A +_ +.TE +.P +Finally, the red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in the color table. +They form a one-dimensional table with indices in the range +[0,\ __width\ \-\ 1]. +.P +If __target is _const(PROXY_*), +_cmnd recomputes and stores the values of the proxy color table's state +variables +_const(COLOR_TABLE_FORMAT), +_const(COLOR_TABLE_WIDTH), +_const(COLOR_TABLE_RED_SIZE), +_const(COLOR_TABLE_GREEN_SIZE), +_const(COLOR_TABLE_BLUE_SIZE), +_const(COLOR_TABLE_ALPHA_SIZE), +_const(COLOR_TABLE_LUMINANCE_SIZE), and +_const(COLOR_TABLE_INTENSITY_SIZE). +There is no effect on the image or state of any actual color table. +If the specified color table is too large to be supported, then all the +proxy state variables listed above are set to zero. +Otherwise, the color table could be supported by _cmnd +using the corresponding non-proxy target, +and the proxy state variables are set as if that target were being defined. +.P +The proxy state variables can be retrieved by calling +_cmnd(GetColorTableParameter) with a target of +_const(PROXY_*). +This allows the application to decide if a particular _cmnd +command would succeed, and to determine what the resulting color table +attributes would be. +.P +If a color table is enabled, and its width is non-zero, then its +contents are used to replace a subset of the components of each RGBA +pixel group, based on the internal format of the table. +.P +Each pixel group has color components (R, G, B, A) +that are in the range [0.0,\ 1.0]. +The color components are rescaled to +the size of the color lookup table to form an index. +Then a subset of the components based on the internal format of the table are +replaced by the table entry selected by that index. +If the color components and contents of the table are represented as follows: +.P +.TS +center; +cb cb +c l. +_ +Representation Meaning +_ +\f7r\fP Table index computed from \f7R\fP +\f7g\fP Table index computed from \f7G\fP +\f7b\fP Table index computed from \f7B\fP +\f7a\fP Table index computed from \f7A\fP +\f7L[i]\fP Luminance value at table index \f7i\fP +\f7I[i]\fP Intensity value at table index \f7i\fP +\f7R[i]\fP Red value at table index \f7i\fP +\f7G[i]\fP Green value at table index \f7i\fP +\f7B[i]\fP Blue value at table index \f7i\fP +\f7A[i]\fP Alpha value at table index \f7i\fP +_ +.TE +.P +then the result of color table lookup is as follows: +.P +.ne 10 +.TS +center; +l l s s s +l l l l l +l l l l l. +_ + Resulting Texture Components +Table Internal Format R G B A +_ +_const(ALPHA) R G B A[a] +_const(LUMINANCE) L[r] L[g] L[b] At +_const(LUMINANCE_ALPHA) L[r] L[g] L[b] A[a] +_const(INTENSITY) I[r] I[g] I[b] I[a] +_const(RGB) R[r] G[g] B[b] A +_const(RGBA) R[r] G[g] B[b] A[a] +_ +.TE +.P +When _const(COLOR_TABLE) is enabled, the colors resulting from +the pixel map operation (if it is enabled) are mapped +by the color lookup table before being passed to the convolution +operation. The colors resulting from the convolution operation +are modified by the post convolution color lookup table when +_const(POST_CONVOLUTION_COLOR_TABLE) +is enabled. These modified colors are then sent to the color matrix operation. +Finally, if _const(POST_COLOR_MATRIX_COLOR_TABLE) +is enabled, the colors resulting from the color matrix operation +are mapped by the post color matrix color lookup table before being +used by the histogram operation. +.P +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.P +If __target is set to _const(COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), +or _const(POST_COLOR_MATRIX_COLOR_TABLE), +then __width must be a power of two or a _const(INVALID_VALUE) +error is generated. +.P +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __internalformat is not one of the +allowable values. +.P +_const(INVALID_VALUE) is generated if __width is less than zero. +.P +_const(INVALID_ENUM) is generated if __format is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __type is not one of the allowable +values. +.P +_const(TABLE_TOO_LARGE) is generated if the requested color table +is too large to be supported by the implementation, and __target is +not a _const(PROXY_*) target. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetColorTableParameter) +.SH SEE ALSO +_cmnd(ColorSubTable), +_cmnd(ColorTableParameter), +_cmnd(CopyColorTable), +_cmnd(CopyColorSubTable), +_cmnd(GetColorTable) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/colortableparameter.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/colortableparameter.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/colortableparameter.gl Mon Jan 14 17:13:30 2002 @@ -0,0 +1,95 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl | eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ColorTableParameter, set color lookup table parameters) +_names(ColorTableParameter,[fi]v) +.EQ +delim $$ +.EN +.SH PARAMETERS +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__pname>@,@<_param2>@)_C_ +_define(@<__params>@,@<_param3>@)_C_ +_phead(__target) +The target color table. +Must be +_const(COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), or +_const(POST_COLOR_MATRIX_COLOR_TABLE). +_phead(__pname) +The symbolic name of a texture color lookup table parameter. +Must be one of +_const(COLOR_TABLE_SCALE) or +_const(COLOR_TABLE_BIAS). +_phead(__params) +A pointer to an array where the values of the parameters are stored. +.SH DESCRIPTION +_cmnd is used to specify the scale factors and bias terms applied to +color components when they are loaded into a color table. __target +indicates which color table the scale and bias terms apply to; it +must be set to +_const(COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), or +_const(POST_COLOR_MATRIX_COLOR_TABLE). +.P +__pname must be _const(COLOR_TABLE_SCALE) to set the +scale factors. +In this case, __params points to an array of four values, which are +the scale factors for red, green, blue, and alpha, in that order. +.P +__pname must be _const(COLOR_TABLE_BIAS) to set the +bias terms. In this case, +__params points to an array of four values, which are the bias +terms for red, green, blue, and alpha, in that order. +.P +The color tables themselves are specified by +calling _cmnd(ColorTable). +.SH NOTES +_cmnd is available only if _arbstring(imaging) is returned from calling +_cmnd(GetString) with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target or __pname is not +an acceptable value. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetColorTableParameter) +.SH SEE ALSO +_cmnd(ColorTable), +_cmnd(PixelTransfer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/const.awk diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/const.awk:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/const.awk Mon Jan 14 17:13:30 2002 @@ -0,0 +1,106 @@ +# License Applicability. Except to the extent portions of this file are +# made subject to an alternative license as permitted in the SGI Free +# Software License B, Version 1.1 (the "License"), the contents of this +# file are subject only to the provisions of 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, 1600 +# Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +# +# http://oss.sgi.com/projects/FreeB +# +# Note that, as provided in the License, the Software is distributed on an +# "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +# DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +# CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +# PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +# +# Original Code. The Original Code is: OpenGL Sample Implementation, +# Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +# Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +# Copyright in any portions created by third parties is as indicated +# elsewhere herein. All Rights Reserved. +# +# Additional Notice Provisions: The application programming interfaces +# established by SGI in conjunction with the Original Code are The +# OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +# April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +# 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +# Window System(R) (Version 1.3), released October 19, 1998. This software +# was created using the OpenGL(R) version 1.2.1 Sample Implementation +# published by SGI, but has not been independently verified as being +# compliant with the OpenGL(R) version 1.2.1 Specification. +# +# $Date$ $Revision$ +# $Header$ + +# compare manpages to gl.h +# +# awk -f check.awk /usr/include/GL/gl.h *.gl +# +# only checks constants for now - routine names would be nice + +BEGIN { + mode = 0; +} + +# +# look for definitions in gl.h +# +$1 == "#define" { + if (NF > 2) { + token = substr($2,4); + IsDefined[token] = 1; + } + continue; +} + +# +# ignore comments in tex source +# +substr($1,1,3) == "_C_" { + continue; +} + +# +# check each field for a _const macro, extract the string when found +# + { + for (i=1; i <= length($0); i++) { + c = substr($0,i,1); + if (substr($0,i,6) == "_const") { + mode = 1; + i += 5; + } + else if (mode == 1) { + if (c == "(") { + mode = 2; + newtoken = ""; + } + } + else if (mode == 2) { + if (c == ")") { + IsSpecified[newtoken] = 1; + if (!IsDefined[newtoken]) { + printf("not in gl.h: "); + printf("%-20s ",FILENAME); + printf("%s\n",newtoken); + } + mode = 0; + } + else if (c == " ") { + } + else { + newtoken = sprintf("%s%s",newtoken,c); + } + } + + } +} + +END { + for (s in IsDefined) { + if (!IsSpecified[s]) { + printf("not in the manpages: %s\n",s); + } + } +} Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/convolutionfilter1d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/convolutionfilter1d.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/convolutionfilter1d.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,232 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(ConvolutionFilter1D,define a one-dimensional convolution filter) +_names(ConvolutionFilter1D) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__internalformat>@,@<_param2>@)_C_ +_define(@<__width>@,@<_param3>@)_C_ +_define(@<__format>@,@<_param4>@)_C_ +_define(@<__type>@,@<_param5>@)_C_ +_define(@<__image>@,@<_param6>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be _const(CONVOLUTION_1D). +_phead(__internalformat) +The internal format of the convolution filter kernel. +The allowable values are +_const(ALPHA), +_const(LUMINANCE), +_const(LUMINANCE_ALPHA), +_const(INTENSITY), +_const(RGB), and +_const(RGBA). +_phead(__width) +The width of the pixel array referenced by __image. +_phead(__format) +The format of the pixel data in __image. +The allowable values are +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(INTENSITY), +_const(INTENSITY4), +_const(INTENSITY8), +_const(INTENSITY12), +_const(INTENSITY16), +_const(R3_G3_B2), +_const(RGB), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), or +_const(RGBA16). +_phead(__type) +The type of the pixel data in __image. +Symbolic constants +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) +are accepted. +_phead(__image) +Pointer to a one-dimensional array of pixel data that is processed to +build the convolution filter kernel. +.SH DESCRIPTION +_cmnd builds a one-dimensional convolution filter kernel from an array of +pixels. +.sp +The pixel array specified by __width, __format, __type, and __image +is extracted from memory and +processed just as if _cmnd(DrawPixels) were called, but processing +stops after the final expansion to RGBA is completed. +.sp +The R, G, B, and A components of each pixel are next scaled by the four +1D _const(CONVOLUTION_FILTER_SCALE) parameters and biased by the +four 1D _const(CONVOLUTION_FILTER_BIAS) parameters. +(The scale and bias parameters are set by _cmnd(ConvolutionParameter) +using the _const(CONVOLUTION_1D) target and the names +_const(CONVOLUTION_FILTER_SCALE) and _const(CONVOLUTION_FILTER_BIAS). +The parameters themselves are vectors of four values that are applied to red, +green, blue, and alpha, in that order.) +The R, G, B, and A values are not clamped to [0,1] at any time during this +process. +.sp +Each pixel is then converted to the internal format specified by +__internalformat. +This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal format (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.sp +.TS +center; +lb cb cb cb cb cb cb +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +_const(ALPHA) A +_const(LUMINANCE) R +_const(LUMINANCE_ALPHA) A R +_const(INTENSITY) R +_const(RGB) R G B +_const(RGBA) R G B A +_ +.TE +.sp +The red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in floating-point rather than integer +format. +They form a one-dimensional filter kernel image indexed with coordinate +\f2i\fP such that \f2i\fP starts at 0 and increases from left to right. +Kernel location \f2i\fP is derived from the \f2i\fPth pixel, counting from 0. +.PP +Note that after a convolution is performed, the resulting color +components are also scaled by their corresponding +_const(POST_CONVOLUTION_c_SCALE) parameters and biased by their +corresponding _const(POST_CONVOLUTION_c_BIAS) parameters (where +\f2c\fP takes on the values \f3RED\fP, \f3GREEN\fP, \f3BLUE\fP, and +\f3ALPHA\fP). +These parameters are set by _cmnd(PixelTransfer). +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not +_const(CONVOLUTION_1D). +.P +_const(INVALID_ENUM) is generated if __internalformat is not one of the +allowable values. +.P +_const(INVALID_VALUE) is generated if __width is less than zero or greater +than the maximum supported value. +This value may be queried with _cmnd(GetConvolutionParameter) +using target _const(CONVOLUTION_1D) and name +_const(MAX_CONVOLUTION_WIDTH). +.P +_const(INVALID_ENUM) is generated if __format is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __type is not one of the allowable +values. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if _param4 is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and _param5 is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if _param4 is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and _param5 is neither _const(RGBA) nor _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(GetConvolutionParameter), _cmnd(GetConvolutionFilter) +.SH SEE ALSO +_cmnd(ConvolutionFilter2D), +_cmnd(SeparableFilter2D), +_cmnd(ConvolutionParameter), +_cmnd(PixelTransfer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/convolutionfilter2d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/convolutionfilter2d.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/convolutionfilter2d.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,247 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(ConvolutionFilter2D,define a two-dimensional convolution filter) +_names(ConvolutionFilter2D) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__internalformat>@,@<_param2>@)_C_ +_define(@<__width>@,@<_param3>@)_C_ +_define(@<__height>@,@<_param4>@)_C_ +_define(@<__format>@,@<_param5>@)_C_ +_define(@<__type>@,@<_param6>@)_C_ +_define(@<__image>@,@<_param7>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be _const(CONVOLUTION_2D). +_phead(__internalformat) +The internal format of the convolution filter kernel. +The allowable values are +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(INTENSITY), +_const(INTENSITY4), +_const(INTENSITY8), +_const(INTENSITY12), +_const(INTENSITY16), +_const(R3_G3_B2), +_const(RGB), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), or +_const(RGBA16). +_phead(__width) +The width of the pixel array referenced by __image. +_phead(__height) +The height of the pixel array referenced by __image. +_phead(__format) +The format of the pixel data in __image. +The allowable values are +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_const(LUMINANCE), and +_const(LUMINANCE_ALPHA). +_phead(__type) +The type of the pixel data in __image. +Symbolic constants +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) +are accepted. +_phead(__image) +Pointer to a two-dimensional array of pixel data that is processed to +build the convolution filter kernel. +.SH DESCRIPTION +_cmnd builds a two-dimensional convolution filter kernel from an array of +pixels. +.sp +The pixel array specified by __width, __height, __format, __type, and +__image is extracted from memory and processed just as if +_cmnd(DrawPixels) were called, but processing stops after the final +expansion to RGBA is completed. +.sp +The R, G, B, and A components of each pixel are next scaled by the four +2D _const(CONVOLUTION_FILTER_SCALE) parameters and biased by the +four 2D _const(CONVOLUTION_FILTER_BIAS) parameters. +(The scale and bias parameters are set by _cmnd(ConvolutionParameter) +using the _const(CONVOLUTION_2D) target and the names +_const(CONVOLUTION_FILTER_SCALE) and _const(CONVOLUTION_FILTER_BIAS). +The parameters themselves are vectors of four values that are applied to red, +green, blue, and alpha, in that order.) +The R, G, B, and A values are not clamped to [0,1] at any time during this +process. +.sp +Each pixel is then converted to the internal format specified by +__internalformat. +This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal format (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.sp +.TS +center; +lb cb cb cb cb cb cb +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +_const(ALPHA) A +_const(LUMINANCE) R +_const(LUMINANCE_ALPHA) A R +_const(INTENSITY) R +_const(RGB) R G B +_const(RGBA) R G B A +_ +.TE +.sp +The red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in floating-point rather than integer +format. +They form a two-dimensional filter kernel image indexed with coordinates +\f2i\fP and \f2j\fP such that \f2i\fP starts at zero and increases from left +to right, and \f2j\fP starts at zero and increases from bottom to top. +Kernel location \f2i,j\fP is derived from the \f2N\fPth pixel, +where \f2N\fP is \f2i\fP+\f2j\fP*__width. +.PP +Note that after a convolution is performed, the resulting color +components are also scaled by their corresponding +_const(POST_CONVOLUTION_c_SCALE) parameters and biased by their +corresponding _const(POST_CONVOLUTION_c_BIAS) parameters (where +\f2c\fP takes on the values \f3RED\fP, \f3GREEN\fP, \f3BLUE\fP, and +\f3ALPHA\fP). +These parameters are set by _cmnd(PixelTransfer). +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not +_const(CONVOLUTION_2D). +.P +_const(INVALID_ENUM) is generated if __internalformat is not one of the +allowable values. +.P +_const(INVALID_VALUE) is generated if __width is less than zero or greater +than the maximum supported value. +This value may be queried with _cmnd(GetConvolutionParameter) +using target _const(CONVOLUTION_2D) and name +_const(MAX_CONVOLUTION_WIDTH). +.P +_const(INVALID_VALUE) is generated if __height is less than zero or greater +than the maximum supported value. +This value may be queried with _cmnd(GetConvolutionParameter) +using target _const(CONVOLUTION_2D) and name +_const(MAX_CONVOLUTION_HEIGHT). +.P +_const(INVALID_ENUM) is generated if __format is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __type is not one of the allowable +values. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if _param4 is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and _param5 is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if _param4 is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and _param5 is neither _const(RGBA) nor _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(GetConvolutionParameter), _cmnd(GetConvolutionFilter) +.SH SEE ALSO +_cmnd(ConvolutionFilter1D), +_cmnd(SeparableFilter2D), +_cmnd(ConvolutionParameter), +_cmnd(PixelTransfer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/convolutionparameter.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/convolutionparameter.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/convolutionparameter.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,166 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn|tbl)_C_ +_header(ConvolutionParameter,set convolution parameters) +_names(ConvolutionParameter,[fi]) +.EQ +delim $$ +.EN +_define(@<__target>@,@<_param1(1)>@)_C_ +_define(@<__pname>@,@<_param2(1)>@)_C_ +_define(@<__param>@,@<_param3(1)>@)_C_ +.sp -1 +.SH PARAMETERS +_phead(__target) +The target for the convolution parameter. +Must be one of +_const(CONVOLUTION_1D), +_const(CONVOLUTION_2D), or +_const(SEPARABLE_2D). +_phead(__pname) +The parameter to be set. +Must be +_const(CONVOLUTION_BORDER_MODE). +_phead(__param) +The parameter value. +Must be one of +_const(REDUCE), _const(CONSTANT_BORDER), _const(REPLICATE_BORDER). +.sp 2 +_names(ConvolutionParameter,[fi]v) +_define(@<__targetv>@,@<_param1(2)>@)_C_ +_define(@<__pnamev>@,@<_param2(2)>@)_C_ +_define(@<__paramv>@,@<_param3(2)>@)_C_ +.sp -1 +.SH PARAMETERS +_phead(__targetv) +The target for the convolution parameter. +Must be one of +_const(CONVOLUTION_1D), +_const(CONVOLUTION_2D), or +_const(SEPARABLE_2D). +_phead(__pnamev) +The parameter to be set. +Must be one of +_const(CONVOLUTION_BORDER_MODE), +_const(CONVOLUTION_BORDER_COLOR), +_const(CONVOLUTION_FILTER_SCALE), or +_const(CONVOLUTION_FILTER_BIAS). +_phead(__paramv) +The parameter value. +If __pnamev is _const(CONVOLUTION_BORDER_MODE), __paramv must be one of +_const(REDUCE), _const(CONSTANT_BORDER), or _const(REPLICATE_BORDER). +Otherwise, must be a vector of four values (for red, green, blue, and alpha, +respectively) to be used for +scaling (when __pnamev is _const(CONVOLUTION_FILTER_SCALE)), or +biasing (when __pnamev is _const(CONVOLUTION_FILTER_BIAS)) a convolution +filter kernel or setting the constant border color (when __pnamev is +_const(CONVOLUTION_BORDER_COLOR). +.SH DESCRIPTION +_cmnd sets the value of a convolution parameter. +.sp +__target selects the convolution filter to be affected: +_const(CONVOLUTION_1D), +_const(CONVOLUTION_2D), or +_const(SEPARABLE_2D) +for the 1D, 2D, or separable 2D filter, respectively. +.sp +__pname selects the parameter to be changed. +_const(CONVOLUTION_FILTER_SCALE) and _const(CONVOLUTION_FILTER_BIAS) +affect the definition of the convolution filter kernel; see +_cmnd(ConvolutionFilter1D), _cmnd(ConvolutionFilter2D), and +_cmnd(SeparableFilter2D) for details. +In these cases, __paramv is an array of four values to be applied to +red, green, blue, and alpha values, respectively. The initial value for +_const(CONVOLUTION_FILTER_SCALE) is (1, 1, 1, 1), and the initial value +for _const(CONVOLUTION_FILTER_BIAS) is (0, 0, 0, 0). +.sp +A __pname value of _const(CONVOLUTION_BORDER_MODE) controls the +convolution border mode. The accepted modes are: +.TP +_const(REDUCE) +The image resulting from convolution is +smaller than the source image. +If the filter width is $Wf$ and height is $Hf$, +and the source image width is $Ws$ and height is $Hs$, +then the convolved image width will be $Ws ~-~ Wf ~+~ 1$ and height +will be $Hs ~-~ Hf ~+~ 1$. +(If this reduction would generate an image with zero or negative width +and/or height, the output is simply null, with no error generated.) +The coordinates of the image resulting from convolution are zero +through $Ws ~-~ Wf$ in width and zero through $Hs ~-~ Hf$ in +height. +.TP +_const(CONSTANT_BORDER) +The image resulting from convolution is the same size as the source image, and +processed as if the source image were surrounded by pixels with their color +specified by the _const(CONVOLUTION_BORDER_COLOR). +.TP +_const(REPLICATE_BORDER) +The image resulting from convolution is the same size as the source image, and +processed as if the outermost pixel on the border of the source image were +replicated. +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.P +In cases where errors can result from the specification of invalid +image dimensions, it is the dimensions after convolution that are +tested, not the dimensions of the source image. +For example, _cmnd(TexImage1D) requires power-of-two image size. +When _const(REDUCE) border mode is in effect, +the source image must be larger than the final power-of-two size +by one less than the size of the 1D filter kernel. +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __pname is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __pname is +_const(CONVOLUTION_BORDER_MODE) and __param is not one of +_const(REDUCE), _const(CONSTANT_BORDER), or _const(REPLICATE_BORDER). +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetConvolutionParameter) +.SH SEE ALSO +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), +_cmnd(SeparableFilter2D), +_cmnd(GetConvolutionParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/copycolorsubtable.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/copycolorsubtable.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/copycolorsubtable.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,89 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(CopyColorSubTable,respecify a portion of a color table) +_names(CopyColorSubTable) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__start>@,@<_param2>@)_C_ +_define(@<__x>@,@<_param3>@)_C_ +_define(@<__y>@,@<_param4>@)_C_ +_define(@<__count>@,@<_param5>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be one of +_const(COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), or +_const(POST_COLOR_MATRIX_COLOR_TABLE). +_phead(__start) +The starting index of the portion of the color table to be replaced. +_phead(__x __y) +The window coordinates of the left corner of the row of pixels to be +copied. +_phead(__count) +The number of table entries to replace. +.SH DESCRIPTION +_cmnd is used to respecify a contiguous portion of a color table previously +defined using _cmnd(ColorTable). The pixels copied from the framebuffer +replace the portion of the existing table from indices __start to +$_eqnparam2~+~_eqnparam3~-~1$, inclusive. This region may not include any +entries outside the range of the color table, as was originally specified. +It is not an error to specify a subtexture with width of 0, but such a +specification has no effect. +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.P +.SH ERRORS +_const(INVALID_VALUE) is generated if __target is not a previously defined +color table. +.P +_const(INVALID_VALUE) is generated if __target is not one of the allowable +values. +.P +_const(INVALID_VALUE) is generated if $_eqnparam2~+~_eqnparam3~>~width$. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetColorTable), +_cmnd(GetColorTableParameter) +.SH SEE ALSO +_cmnd(ColorSubTable), +_cmnd(ColorTableParameter), +_cmnd(CopyColorTable), +_cmnd(CopyColorSubTable), +_cmnd(GetColorTable) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/copycolortable.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/copycolortable.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/copycolortable.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,174 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl | eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(CopyColorTable,copy pixels into a color table) +_names(CopyColorTable) +.EQ +delim $$ +.EN +.SH PARAMETERS +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__internalformat>@,@<_param2>@)_C_ +_define(@<__x>@,@<_param3>@)_C_ +_define(@<__y>@,@<_param4>@)_C_ +_define(@<__width>@,@<_param5>@)_C_ +_phead(__target) +The color table target. Must be +_const(COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), +or _const(POST_COLOR_MATRIX_COLOR_TABLE). +_phead(__internalformat) +The internal storage format of the texture image. +Must be one of the following symbolic constants: +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(INTENSITY), +_const(INTENSITY4), +_const(INTENSITY8), +_const(INTENSITY12), +_const(INTENSITY16), +_const(R3_G3_B2), +_const(RGB), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), +_const(RGBA16). +_phead(__x) +The x coordinate of the lower-left corner of the pixel rectangle +to be transferred to the color table. +_phead(__y) +The y coordinate of the lower-left corner of the pixel rectangle +to be transferred to the color table. +_phead(__width) +The width of the pixel rectangle. +.SH DESCRIPTION +_cmnd loads a color table with pixels from the current +_const(READ_BUFFER) (rather than from main memory, as is the case for +_cmnd(ColorTable)). +.P +The screen-aligned pixel rectangle with lower-left corner at (__x,\ __y) +having width __width and height 1 +is loaded into the color table. If any pixels within +this region are outside the window that is associated with the GL +context, the values obtained for those pixels are undefined. +.P +The pixels in the rectangle are processed just as if +_cmnd(ReadPixels) were called, with __internalformat set to RGBA, +but processing stops after the final conversion to RGBA. +.P +The four scale parameters and the four bias parameters that are defined +for the table are then used to scale and bias the R, G, B, and A components +of each pixel. The scale and bias parameters are set by calling +_cmnd(ColorTableParameter). +.P +Next, the R, G, B, and A values are clamped to the range [0,1]. +Each pixel is then converted to the internal format specified by +__internalformat. This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal format (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.P +.TS +center; +lb cb cb cb cb cb cb +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +_const(ALPHA) A +_const(LUMINANCE) R +_const(LUMINANCE_ALPHA) A R +_const(INTENSITY) R +_const(RGB) R G B +_const(RGBA) R G B A +_ +.TE +.P +Finally, the red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in the color table. +They form a one-dimensional table with indices in the range +[0,\ __width\ \-\ 1]. +.P +.SH NOTES +_cmnd is available only if _arbstring(imaging) is returned from calling +_cmnd(GetString) with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated when __target is not one of the +allowable values. +.P +_const(INVALID_VALUE) is generated if __width is less than zero. +.P +_const(INVALID_VALUE) is generated if __internalformat is not one of the +allowable values. +.P +_const(TABLE_TOO_LARGE) is generated if the requested color table +is too large to be supported by the implementation. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetColorTable), +_cmnd(GetColorTableParameter) +.SH SEE ALSO +_cmnd(ColorTable), +_cmnd(ColorTableParameter), +_cmnd(ReadPixels) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/copyconvolutionfilter1d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/copyconvolutionfilter1d.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/copyconvolutionfilter1d.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,178 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(CopyConvolutionFilter1D,copy pixels into a one-dimensional convolution filter) +_names(CopyConvolutionFilter1D) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__internalformat>@,@<_param2>@)_C_ +_define(@<__x>@,@<_param3>@)_C_ +_define(@<__y>@,@<_param4>@)_C_ +_define(@<__width>@,@<_param5>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be _const(CONVOLUTION_1D). +_phead(__internalformat) +The internal format of the convolution filter kernel. +The allowable values are +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(INTENSITY), +_const(INTENSITY4), +_const(INTENSITY8), +_const(INTENSITY12), +_const(INTENSITY16), +_const(R3_G3_B2), +_const(RGB), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), or +_const(RGBA16). +_phead(__x __y) +The window space coordinates of the lower-left coordinate of the +pixel array to copy. +_phead(__width) +The width of the pixel array to copy. +.SH DESCRIPTION +_cmnd defines a one-dimensional convolution filter kernel with pixels +from the current _const(READ_BUFFER) (rather than from main memory, +as is the case for _cmnd(ConvolutionFilter1D)). +.sp +The screen-aligned pixel rectangle with lower-left corner at (__x,\ __y), +width __width and height 1 is used to define +the convolution filter. If any pixels within this region are +outside the window that is associated with the GL context, the +values obtained for those pixels are undefined. +.sp +The pixels in the rectangle are processed exactly as if _cmnd(ReadPixels) +had been called with \f2format\fP +set to RGBA, but the process stops just before final conversion. +The R, G, B, and A components of each pixel are next scaled by the four +1D _const(CONVOLUTION_FILTER_SCALE) parameters and biased by the +four 1D _const(CONVOLUTION_FILTER_BIAS) parameters. +(The scale and bias parameters are set by _cmnd(ConvolutionParameter) +using the _const(CONVOLUTION_1D) target and the names +_const(CONVOLUTION_FILTER_SCALE) and _const(CONVOLUTION_FILTER_BIAS). +The parameters themselves are vectors of four values that are applied to red, +green, blue, and alpha, in that order.) +The R, G, B, and A values are not clamped to [0,1] at any time during this +process. +.sp +Each pixel is then converted to the internal format specified by +__internalformat. +This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal format (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.sp +.TS +center; +lb cb cb cb cb cb cb +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +_const(ALPHA) A +_const(LUMINANCE) R +_const(LUMINANCE_ALPHA) A R +_const(INTENSITY) R +_const(RGB) R G B +_const(RGBA) R G B A +_ +.TE +.sp +The red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in floating-point rather than integer +format. +.sp +Pixel ordering is such that lower x screen coordinates correspond to +lower \f2i\fP filter image coordinates. +.PP +Note that after a convolution is performed, the resulting color +components are also scaled by their corresponding +_const(POST_CONVOLUTION_c_SCALE) parameters and biased by their +corresponding _const(POST_CONVOLUTION_c_BIAS) parameters (where +\f2c\fP takes on the values \f3RED\fP, \f3GREEN\fP, \f3BLUE\fP, and +\f3ALPHA\fP). +These parameters are set by _cmnd(PixelTransfer). +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not +_const(CONVOLUTION_1D). +.P +_const(INVALID_ENUM) is generated if __internalformat is not one of the +allowable values. +.P +_const(INVALID_VALUE) is generated if __width is less than zero or greater +than the maximum supported value. +This value may be queried with _cmnd(GetConvolutionParameter) +using target _const(CONVOLUTION_1D) and name +_const(MAX_CONVOLUTION_WIDTH). +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetConvolutionParameter), _cmnd(GetConvolutionFilter) +.SH SEE ALSO +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionParameter), +_cmnd(PixelTransfer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/copyconvolutionfilter2d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/copyconvolutionfilter2d.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/copyconvolutionfilter2d.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,189 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(CopyConvolutionFilter2D,copy pixels into a two-dimensional convolution filter) +_names(CopyConvolutionFilter2D) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__internalformat>@,@<_param2>@)_C_ +_define(@<__x>@,@<_param3>@)_C_ +_define(@<__y>@,@<_param4>@)_C_ +_define(@<__width>@,@<_param5>@)_C_ +_define(@<__height>@,@<_param6>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be _const(CONVOLUTION_2D). +_phead(__internalformat) +The internal format of the convolution filter kernel. +The allowable values are +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(INTENSITY), +_const(INTENSITY4), +_const(INTENSITY8), +_const(INTENSITY12), +_const(INTENSITY16), +_const(R3_G3_B2), +_const(RGB), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), or +_const(RGBA16). +_phead(__x __y) +The window space coordinates of the lower-left coordinate of the +pixel array to copy. +_phead(__width) +The width of the pixel array to copy. +_phead(__height) +The height of the pixel array to copy. +.SH DESCRIPTION +_cmnd defines a two-dimensional convolution filter kernel with pixels +from the current _const(READ_BUFFER) (rather than from main memory, +as is the case for _cmnd(ConvolutionFilter2D)). +.sp +The screen-aligned pixel rectangle with lower-left corner at (__x,\ __y), +width __width and height __height +is used to define the convolution filter. If any pixels within this +region are +outside the window that is associated with the GL context, the +values obtained for those pixels are undefined. +.sp +The pixels in the rectangle are processed +exactly as if _cmnd(ReadPixels) had been called with \f2format\fP +set to RGBA, but the process stops just before final conversion. +The R, G, B, and A components of each pixel are next scaled by the four +2D _const(CONVOLUTION_FILTER_SCALE) parameters and biased by the +four 2D _const(CONVOLUTION_FILTER_BIAS) parameters. +(The scale and bias parameters are set by _cmnd(ConvolutionParameter) +using the _const(CONVOLUTION_2D) target and the names +_const(CONVOLUTION_FILTER_SCALE) and _const(CONVOLUTION_FILTER_BIAS). +The parameters themselves are vectors of four values that are applied to red, +green, blue, and alpha, in that order.) +The R, G, B, and A values are not clamped to [0,1] at any time during this +process. +.sp +Each pixel is then converted to the internal format specified by +__internalformat. +This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal format (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.sp +.TS +center; +lb cb cb cb cb cb cb +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +_const(ALPHA) A +_const(LUMINANCE) R +_const(LUMINANCE_ALPHA) A R +_const(INTENSITY) R +_const(RGB) R G B +_const(RGBA) R G B A +_ +.TE +.sp +The red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in floating-point rather than integer +format. +.sp +Pixel ordering is such that lower x screen coordinates correspond to +lower \f2i\fP filter image coordinates, and lower y screen coordinates +correspond to lower \f2j\fP filter image coordinates. +.PP +Note that after a convolution is performed, the resulting color +components are also scaled by their corresponding +_const(POST_CONVOLUTION_c_SCALE) parameters and biased by their +corresponding _const(POST_CONVOLUTION_c_BIAS) parameters (where +\f2c\fP takes on the values \f3RED\fP, \f3GREEN\fP, \f3BLUE\fP, and +\f3ALPHA\fP). +These parameters are set by _cmnd(PixelTransfer). +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not +_const(CONVOLUTION_2D). +.P +_const(INVALID_ENUM) is generated if __internalformat is not one of the +allowable values. +.P +_const(INVALID_VALUE) is generated if __width is less than zero or greater +than the maximum supported value. +This value may be queried with _cmnd(GetConvolutionParameter) +using target _const(CONVOLUTION_2D) and name +_const(MAX_CONVOLUTION_WIDTH). +.P +_const(INVALID_VALUE) is generated if __height is less than zero or greater +than the maximum supported value. +This value may be queried with _cmnd(GetConvolutionParameter) +using target _const(CONVOLUTION_2D) and name +_const(MAX_CONVOLUTION_HEIGHT). +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetConvolutionParameter), _cmnd(GetConvolutionFilter) +.SH SEE ALSO +_cmnd(ConvolutionFilter2D), +_cmnd(ConvolutionParameter), +_cmnd(PixelTransfer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/copypixels.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/copypixels.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/copypixels.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,259 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_header(CopyPixels,copy pixels in the frame buffer) +_names(CopyPixels) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1 _param2) +Specify the window coordinates of the lower left corner +of the rectangular region of pixels to be copied. +_phead(_param3 _param4) +Specify the dimensions of the rectangular region of pixels to be copied. +Both must be nonnegative. +_phead(_param5) +Specifies whether color values, +depth values, +or stencil values are to be copied. +Symbolic constants +_const(COLOR), +_const(DEPTH), +and _const(STENCIL) are accepted. +.SH DESCRIPTION +_cmnd copies a screen-aligned rectangle of pixels +from the specified frame buffer location to a region relative to the +current raster position. +Its operation is well defined only if the entire pixel source region +is within the exposed portion of the window. +Results of copies from outside the window, +or from regions of the window that are not exposed, +are hardware dependent and undefined. +.P +_param1 and _param2 specify the window coordinates of +the lower left corner of the rectangular region to be copied. +_param3 and _param4 specify the dimensions of the +rectangular region to be copied. +Both _param3 and _param4 must not be negative. +.P +Several parameters control the processing of the pixel data +while it is being copied. +These parameters are set with three commands: +_cmnd(PixelTransfer), +_cmnd(PixelMap), and +_cmnd(PixelZoom). +This reference page describes the effects on _cmnd of most, +but not all, of the parameters specified by these three commands. +.P +_cmnd copies values from each pixel with the lower left-hand corner at +(_param1 + $i$, _param2 + $j$) for 0 \(<= $i$ < _param3 +and 0 \(<= $j$ < _param4. +This pixel is said to be the $i$th pixel in the $j$th row. +Pixels are copied in row order from the lowest to the highest row, +left to right in each row. +.P +_param5 specifies whether color, depth, or stencil data is to be copied. +The details of the transfer for each data type are as follows: +.TP 15 +_const(COLOR) +Indices or RGBA colors are read from the buffer currently specified as the +read source buffer (see _cmnd(ReadBuffer)). +If the GL is in color index mode, +each index that is read from this buffer is converted +to a fixed-point format with an unspecified +number of bits to the right of the binary point. +Each index is then shifted left by _const(INDEX_SHIFT) bits, +and added to _const(INDEX_OFFSET). +If _const(INDEX_SHIFT) is negative, +the shift is to the right. +In either case, zero bits fill otherwise unspecified bit locations in the +result. +If _const(MAP_COLOR) is true, +the index is replaced with the value that it references in lookup table +_const(PIXEL_MAP_I_TO_I). +Whether the lookup replacement of the index is done or not, +the integer part of the index is then ANDed with $2 sup b -1$, +where $b$ is the number of bits in a color index buffer. +.IP +If the GL is in RGBA mode, +the red, green, blue, and alpha components of each pixel that is read +are converted to an internal floating-point format with unspecified +precision. +The conversion maps the largest representable component value to 1.0, +and component value 0 to 0.0. +The resulting floating-point color values are then multiplied +by _const(c_SCALE) and added to _const(c_BIAS), +where \f2c\fP is RED, GREEN, BLUE, and ALPHA +for the respective color components. +The results are clamped to the range [0,1]. +If _const(MAP_COLOR) is true, +each color component is scaled by the size of lookup table +_const(PIXEL_MAP_c_TO_c), +then replaced by the value that it references in that table. +\f2c\fP is R, G, B, or A. +.IP +If the _arbstring(imaging) extension is supported, the color values may +be +additionally processed by color-table lookups, color-matrix +transformations, and convolution filters. +.IP +The GL then converts the resulting indices or RGBA colors to fragments +by attaching the current raster position \f2z\fP coordinate and +texture coordinates to each pixel, +then assigning window coordinates +($x sub r ~+~ i , y sub r ~+~ j$), +where ($x sub r , y sub r$) is the current raster position, +and the pixel was the $i$th pixel in the $j$th row. +These pixel fragments are then treated just like the fragments generated by +rasterizing points, lines, or polygons. +Texture mapping, +fog, +and all the fragment operations are applied before the fragments are written +to the frame buffer. +.TP +_const(DEPTH) +Depth values are read from the depth buffer and +converted directly to an internal floating-point format +with unspecified precision. +The resulting floating-point depth value is then multiplied +by _const(DEPTH_SCALE) and added to _const(DEPTH_BIAS). +The result is clamped to the range [0,1]. +.IP +The GL then converts the resulting depth components to fragments +by attaching the current raster position color or color index and +texture coordinates to each pixel, +then assigning window coordinates +($x sub r ~+~ i , y sub r ~+~ j$), +where ($x sub r , y sub r$) is the current raster position, +and the pixel was the $i$th pixel in the $j$th row. +These pixel fragments are then treated just like the fragments generated by +rasterizing points, lines, or polygons. +Texture mapping, +fog, +and all the fragment operations are applied before the fragments are written +to the frame buffer. +.TP +_const(STENCIL) +Stencil indices are read from the stencil buffer and +converted to an internal fixed-point format +with an unspecified number of bits to the right of the binary point. +Each fixed-point index is then shifted left by _const(INDEX_SHIFT) bits, +and added to _const(INDEX_OFFSET). +If _const(INDEX_SHIFT) is negative, +the shift is to the right. +In either case, zero bits fill otherwise unspecified bit locations in the +result. +If _const(MAP_STENCIL) is true, +the index is replaced with the value that it references in lookup table +_const(PIXEL_MAP_S_TO_S). +Whether the lookup replacement of the index is done or not, +the integer part of the index is then ANDed with $2 sup b -1$, +where $b$ is the number of bits in the stencil buffer. +The resulting stencil indices are then written to the stencil buffer +such that the index read from the $i$th location of the $j$th row +is written to location +($x sub r ~+~ i , y sub r ~+~ j$), +where ($x sub r , y sub r$) is the current raster position. +Only the pixel ownership test, +the scissor test, +and the stencil writemask affect these write operations. +.P +The rasterization described thus far assumes pixel zoom factors of 1.0. +If +.br +_cmnd(PixelZoom) is used to change the $x$ and $y$ pixel zoom factors, +pixels are converted to fragments as follows. +If ($x sub r$, $y sub r$) is the current raster position, +and a given pixel is in the $i$th location in the $j$th row of the source +pixel rectangle, +then fragments are generated for pixels whose centers are in the rectangle +with corners at +.P +.ce +($x sub r ~+~ zoom sub x^ i$, $y sub r ~+~ zoom sub y^j$) +.sp .5 +.ce + and +.sp .5 +.ce +($x sub r ~+~ zoom sub x^ (i ~+~ 1)$, $y sub r ~+~ zoom sub y^ ( j ~+~ 1 )$) +.P +where $zoom sub x$ is the value of _const(ZOOM_X) and +$zoom sub y$ is the value of _const(ZOOM_Y). +.SH EXAMPLES +To copy the color pixel in the lower left corner of the window to the current raster position, +use +.Ex +glCopyPixels(0, 0, 1, 1, _const(COLOR)); +.En +.SH NOTES +Modes specified by _cmnd(PixelStore) have no effect on the operation +of _cmnd. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param5 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if either _param3 or _param4 is negative. +.P +_const(INVALID_OPERATION) is generated if _param5 is _const(DEPTH) +and there is no depth buffer. +.P +_const(INVALID_OPERATION) is generated if _param5 is _const(STENCIL) +and there is no stencil buffer. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(CURRENT_RASTER_POSITION) +.br +_cmnd(Get) with argument _const(CURRENT_RASTER_POSITION_VALID) +.SH SEE ALSO +_cmnd(ColorTable), +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), +_cmnd(DepthFunc), +_cmnd(DrawBuffer), +_cmnd(DrawPixels), +_cmnd(MatrixMode), +_cmnd(PixelMap), +_cmnd(PixelTransfer), +_cmnd(PixelZoom), +_cmnd(RasterPos), +_cmnd(ReadBuffer), +_cmnd(ReadPixels), +_cmnd(SeparableFilter2D), +_cmnd(StencilFunc) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/copyteximage1d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/copyteximage1d.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/copyteximage1d.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,179 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(CopyTexImage1D,copy pixels into a 1D texture image) +_names(CopyTexImage1D) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the target texture. +Must be _const(TEXTURE_1D). +_phead(_param2) +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +_phead(_param3) +Specifies the internal format of the texture. +Must be one of the following symbolic constants: +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(INTENSITY), +_const(INTENSITY4), +_const(INTENSITY8), +_const(INTENSITY12), +_const(INTENSITY16), +_const(RGB), +_const(R3_G3_B2), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), or +_const(RGBA16). +_phead(_param4 _param5) +Specify the window coordinates of the left corner +of the row of pixels to be copied. +_phead(_param6) +Specifies the width of the texture image. +Must be 0 or $2 sup n ~+~ 2*$_param7 for some integer $n$. +The height of the texture image is 1. +_phead(_param7) +Specifies the width of the border. +Must be either 0 or 1. +.SH DESCRIPTION +_cmnd defines a one-dimensional texture image with pixels from the current +_const(READ_BUFFER). +.P +The screen-aligned pixel row with left corner at $(_eqnparam4, _eqnparam5)$ +and with a length of $_eqnparam6~+~2~*~_eqnparam7$ +defines the texture array +at the mipmap level specified by _param2. +_param3 specifies the internal format of the texture array. +.P +The pixels in the row are processed exactly as if +_cmnd(CopyPixels) had been called, but the process stops just before +final conversion. +At this point all pixel component values are clamped to the range [0,\ 1] +and then converted to the texture's internal format for storage in the texel +array. +.P +Pixel ordering is such that lower $x$ screen coordinates correspond to +lower texture coordinates. +.P +If any of the pixels within the specified row of the current +_const(READ_BUFFER) are outside the window associated with the current +rendering context, then the values obtained for those pixels are undefined. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +Texturing has no effect in color index mode. +.P +1, 2, 3, and 4 are not accepted values for _param3. +.P +An image with 0 width indicates a NULL texture. +.P +When the _arbstring(imaging) extension is supported, the RGBA components +copied from the framebuffer may be processed by the imaging pipeline. See +_cmnd(TexImage1D) for specific details. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not one of the +allowable values. +.P +_const(INVALID_VALUE) is generated if _param2 is less than 0. +.P +_const(INVALID_VALUE) may be generated if _param2 is greater +than $log sub 2 max$, +where $max$ is the returned value of _const(MAX_TEXTURE_SIZE). +.P +_const(INVALID_VALUE) is generated if _param3 is not an +allowable value. +.P +_const(INVALID_VALUE) is generated if _param6 is less than 0 +or greater than +2 + _const(MAX_TEXTURE_SIZE), +or if it cannot be represented as $2 sup n ~+~ 2~*~(_eqnparam7)$ +for some integer value of \f2n\fP. +.P +_const(INVALID_VALUE) is generated if _param7 is not 0 or 1. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetTexImage) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_1D) +.SH SEE ALSO +_cmnd(CopyPixels), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +.br +_cmnd(TexParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/copyteximage2d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/copyteximage2d.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/copyteximage2d.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,183 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(CopyTexImage2D,copy pixels into a 2D texture image) +_names(CopyTexImage2D) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the target texture. +Must be _const(TEXTURE_2D). +_phead(_param2) +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +_phead(_param3) +Specifies the internal format of the texture. +Must be one of the following symbolic constants: +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(INTENSITY), +_const(INTENSITY4), +_const(INTENSITY8), +_const(INTENSITY12), +_const(INTENSITY16), +_const(RGB), +_const(R3_G3_B2), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), or +_const(RGBA16). +_phead(_param4 _param5) +Specify the window coordinates of the lower left corner +of the rectangular region of pixels to be copied. +_phead(_param6) +Specifies the width of the texture image. +Must be 0 or $2 sup n ~+~ 2*$_param8 for some integer $n$. +_phead(_param7) +Specifies the height of the texture image. +Must be 0 or $2 sup m ~+~ 2*$_param8 for some integer $m$. +_phead(_param8) +Specifies the width of the border. +Must be either 0 or 1. +.SH DESCRIPTION +_cmnd defines a two-dimensional texture image with pixels from the current +_const(READ_BUFFER). +.P +The screen-aligned pixel rectangle with lower left corner at (_param4, +_param5) and with a width of _param6$~+~2~*~$_param8 and a height of +_param7$~+~2~*~$_param8 +defines the texture array +at the mipmap level specified by _param2. +_param3 specifies the internal format of the texture array. +.P +The pixels in the rectangle are processed exactly as if +_cmnd(CopyPixels) had been called, but the process stops just before +final conversion. +At this point all pixel component values are clamped to the range $[0,1]$ +and then converted to the texture's internal format for storage in the texel +array. +.P +Pixel ordering is such that lower $x$ and $y$ screen coordinates correspond to +lower $s$ and $t$ texture coordinates. +.P +If any of the pixels within the specified rectangle of the current +_const(READ_BUFFER) are outside the window associated with the current +rendering context, then the values obtained for those pixels are undefined. +.P +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +Texturing has no effect in color index mode. +.P +1, 2, 3, and 4 are not accepted values for _param3. +.P +An image with height or width of 0 indicates a NULL texture. +.P +When the _arbstring(imaging) extension is supported, the RGBA components +read from the framebuffer may be processed by the imaging pipeline. See +_cmnd(TexImage1D) for specific details. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not _const(TEXTURE_2D). +.P +_const(INVALID_VALUE) is generated if _param2 is less than 0. +.P +_const(INVALID_VALUE) may be generated if _param2 is greater +than $log sub 2 max$, +where $max$ is the returned value of _const(MAX_TEXTURE_SIZE). +.P +_const(INVALID_VALUE) is generated if _param6 or _param7 is less than 0, +greater than $2~+~$_const(MAX_TEXTURE_SIZE), or if _param6 or _param7 cannot be +represented as $2 sup k ~+~ 2~*~$_param8 for some integer +$k$. +.P +_const(INVALID_VALUE) is generated if _param8 is not 0 or 1. +.P +_const(INVALID_VALUE) is generated if _param3 is not one of the +allowable values. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetTexImage) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_2D) +.SH SEE ALSO +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +.br +_cmnd(TexParameter) + + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/copytexsubimage1d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/copytexsubimage1d.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/copytexsubimage1d.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,139 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(CopyTexSubImage1D,copy a one-dimensional texture subimage) +_names(CopyTexSubImage1D) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the target texture. +Must be _const(TEXTURE_1D). +_phead(_param2) +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +_phead(_param3) +Specifies the texel offset within the texture array. +_phead(_param4 _param5) +Specify the window coordinates of the left corner +of the row of pixels to be copied. +_phead(_param6) +Specifies the width of the texture subimage. +.SH DESCRIPTION +_cmnd replaces a portion of a one-dimensional +texture image with pixels from the current _const(READ_BUFFER) (rather +than from main memory, as is the case for _cmnd(TexSubImage1D)). +.P +The screen-aligned pixel row with left corner at (_param4,\ _param5), and with +length _param6 replaces the portion of the +texture array with x indices _param3 through $_eqnparam3 ~+~ _eqnparam6 ~-~ 1$, +inclusive. The destination in the texture array may not +include any texels outside the texture array as it was +originally specified. +.P +The pixels in the row are processed exactly as if +_cmnd(CopyPixels) had been called, but the process stops just before +final conversion. +At this point all pixel component values are clamped to the range [0,\ 1] +and then converted to the texture's internal format for storage in the texel +array. +.P +It is not an error to specify a subtexture with zero width, but +such a specification has no effect. +If any of the pixels within the specified row of the current +_const(READ_BUFFER) are outside the read window associated with the current +rendering context, then the values obtained for those pixels are undefined. +.P +No change is made to the \f2internalformat\fP, \f2width\fP, +or \f2border\fP parameters of the specified texture +array or to texel values outside the specified subregion. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +Texturing has no effect in color index mode. +.P +_cmnd(PixelStore) and _cmnd(PixelTransfer) modes affect texture images +in exactly the way they affect _cmnd(DrawPixels). +.P +When the _arbstring(imaging) extension is supported, the RGBA components +copied from the framebuffer may be processed by the imaging pipeline. See +_cmnd(TexImage1D) for specific details. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not _const(TEXTURE_1D). +.P +_const(INVALID_OPERATION) is generated if the texture array has not +been defined by a previous _cmnd(TexImage1D) or _cmnd(CopyTexImage1D) operation. +.P +_const(INVALID_VALUE) is generated if _param2 is less than 0. +.P +_const(INVALID_VALUE) may be generated if _param2$>log sub 2$\f2 max\fP, +where \f2max\fP is the returned value of _const(MAX_TEXTURE_SIZE). +.P +_const(INVALID_VALUE) is generated if _param5$ ~<~ ~-b$ +or if _param6$ ~<~ ~-b$, where $b$ +is the border width of the texture array. +.P +_const(INVALID_VALUE) is generated if $_eqnparam3 ~<~ ~-b$, or +$(_eqnparam3~+~_eqnparam6) ~>~ (w-b)$, +where $w$ is the _const(TEXTURE_WIDTH), and $b$ is the _const(TEXTURE_BORDER) +of the texture image being modified. +Note that $w$ includes twice the border width. +.P +.SH ASSOCIATED GETS +_cmnd(GetTexImage) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_1D) +.SH SEE ALSO +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(ReadBuffer), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexParameter), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/copytexsubimage2d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/copytexsubimage2d.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/copytexsubimage2d.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,155 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(CopyTexSubImage2D,copy a two-dimensional texture subimage) +_names(CopyTexSubImage2D) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the target texture. +Must be _const(TEXTURE_2D). +_phead(_param2) +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +_phead(_param3) +Specifies a texel offset in the x direction within the texture array. +_phead(_param4) +Specifies a texel offset in the y direction within the texture array. +_phead(_param5 _param6) +Specify the window coordinates of the lower left corner +of the rectangular region of pixels to be copied. +_phead(_param7) +Specifies the width of the texture subimage. +_phead(_param8) +Specifies the height of the texture subimage. +.SH DESCRIPTION +_cmnd replaces a rectangular portion of a two-dimensional +texture image with pixels from the current _const(READ_BUFFER) (rather +than from main memory, as is the case for _cmnd(TexSubImage2D)). +.P +The screen-aligned pixel rectangle with lower left corner at +(_param5,\ _param6) and with +width _param7 and height _param8 replaces the portion of the +texture array with x indices _param3 through _param3$~+~$_param7$~-~$1, +inclusive, and y indices _param4 through _param4$~+~$_param8$~-~$1, +inclusive, at the mipmap level specified by _param2. +.P +The pixels in the rectangle are processed exactly as if +_cmnd(CopyPixels) had been called, but the process stops just before +final conversion. +At this point, all pixel component values are clamped to the range [0,\ 1] +and then converted to the texture's internal format for storage in the texel +array. +.P +The destination rectangle in the texture array may not include any texels +outside the texture array as it was originally specified. +It is not an error to specify a subtexture with zero width or height, but +such a specification has no effect. +.P +If any of the pixels within the specified rectangle of the current +_const(READ_BUFFER) are outside the read window associated with the current +rendering context, then the values obtained for those pixels are undefined. +.P +No change is made to the \f2internalformat\fP, \f2width\fP, +\f2height\fP, or \f2border\fP parameters of the specified texture +array or to texel values outside the specified subregion. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +Texturing has no effect in color index mode. +.P +_cmnd(PixelStore) and _cmnd(PixelTransfer) modes affect texture images +in exactly the way they affect _cmnd(DrawPixels). +.P +When the _arbstring(imaging) extension is supported, the RGBA components +read from the framebuffer may be processed by the imaging pipeline. See +_cmnd(TexImage1D) for specific details. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not _const(TEXTURE_2D). +.P +_const(INVALID_OPERATION) is generated if the texture array has not +been defined by a previous _cmnd(TexImage2D) or _cmnd(CopyTexImage2D) operation. +.P +_const(INVALID_VALUE) is generated if _param2 is less than 0. +.P +_const(INVALID_VALUE) may be generated if _param2 is greater +than $log sub 2 max$, +where $max$ is the returned value of _const(MAX_TEXTURE_SIZE). +.P +_const(INVALID_VALUE) is generated if _param5$ ~<~ ~-b$ or if +_param6$ ~<~ ~-b$, +where $b$ is the border width of the texture array. +.P +_const(INVALID_VALUE) is generated if $_eqnparam3 ~<~ -b$, +(_param3$~+~$_param7)$~>~(w ~-~b)$, +_param4$~<~ ~-b$, or +(_param4$~+~$_param8)$~>~(h ~-~b)$, +where $w$ is the _const(TEXTURE_WIDTH), +$h$ is the _const(TEXTURE_HEIGHT), +and $b$ is the _const(TEXTURE_BORDER) +of the texture image being modified. +Note that $w$ and $h$ +include twice the border width. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetTexImage) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_2D) +.SH SEE ALSO +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage3D), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(ReadBuffer), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexParameter), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/copytexsubimage3d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/copytexsubimage3d.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/copytexsubimage3d.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,160 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(CopyTexSubImage3D,copy a three-dimensional texture subimage) +_names(CopyTexSubImage3D) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the target texture. +Must be _const(TEXTURE_3D) +_phead(_param2) +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +_phead(_param3) +Specifies a texel offset in the x direction within the texture array. +_phead(_param4) +Specifies a texel offset in the y direction within the texture array. +_phead(_param5) +Specifies a texel offset in the z direction within the texture array. +_phead(_param6 _param7) +Specify the window coordinates of the lower left corner +of the rectangular region of pixels to be copied. +_phead(_param8) +Specifies the width of the texture subimage. +_phead(_param9) +Specifies the height of the texture subimage. +.SH DESCRIPTION +_cmnd replaces a rectangular portion of a three-dimensional +texture image with pixels from the current _const(READ_BUFFER) (rather +than from main memory, as is the case for _cmnd(TexSubImage3D)). +.P +The screen-aligned pixel rectangle with lower left corner at +(_param6,\ _param7) and with +width _param8 and height _param9 replaces the portion of the +texture array with x indices _param3 through _param3$~+~$_param8$~-~$1, +inclusive, and y indices _param4 through _param4$~+~$_param9$~-~$1, +inclusive, at z index _param5 and at the mipmap level specified by _param2. +.P +The pixels in the rectangle are processed exactly as if +_cmnd(CopyPixels) had been called, but the process stops just before +final conversion. +At this point, all pixel component values are clamped to the range [0,\ 1] +and then converted to the texture's internal format for storage in the texel +array. +.P +The destination rectangle in the texture array may not include any texels +outside the texture array as it was originally specified. +It is not an error to specify a subtexture with zero width or height, but +such a specification has no effect. +.P +If any of the pixels within the specified rectangle of the current +_const(READ_BUFFER) are outside the read window associated with the current +rendering context, then the values obtained for those pixels are undefined. +.P +No change is made to the \f2internalformat\fP, \f2width\fP, +\f2height\fP, \f2depth\fP, or \f2border\fP parameters of the specified texture +array or to texel values outside the specified subregion. +.SH NOTES +_cmnd is available only if the GL version is 1.2 or greater. +.P +Texturing has no effect in color index mode. +.P +_cmnd(PixelStore) and _cmnd(PixelTransfer) modes affect texture images +in exactly the way they affect _cmnd(DrawPixels). +.P +When the _arbstring(imaging) extension is supported, the RGBA components +copied from the framebuffer may be processed by the imaging pipeline, as +if they were a two-dimensional texture. See _cmnd(TexImage2D) for +specific details. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not _const(TEXTURE_3D). +.P +_const(INVALID_OPERATION) is generated if the texture array has not +been defined by a previous _cmnd(TexImage3D) or _cmnd(CopyTexImage3D) operation. +.P +_const(INVALID_VALUE) is generated if _param2 is less than 0. +.P +_const(INVALID_VALUE) may be generated if _param2 is greater +than $log sub 2^max$, +where $max$ is the returned value of _const(MAX_3D_TEXTURE_SIZE). +.P +_const(INVALID_VALUE) is generated if _param6$ ~<~ ~-b$ or if +_param7$ ~<~ ~-b$, +where $b$ is the border width of the texture array. +.P +_const(INVALID_VALUE) is generated if $_eqnparam3 ~<~ -b$, +(_param3$~+~$_param8)$~>~(w ~-~b)$, +_param4$~<~ ~-b$, +(_param4$~+~$_param9)$~>~(h ~-~b)$, +_param5$~<~ ~-b$, or _param5$~>~(d ~-~b)$, +where $w$ is the _const(TEXTURE_WIDTH), +$h$ is the _const(TEXTURE_HEIGHT), +$d$ is the _const(TEXTURE_DEPTH), +and $b$ is the _const(TEXTURE_BORDER) +of the texture image being modified. +Note that $w$, $h$, and $d$ +include twice the border width. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetTexImage) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_3D) +.SH SEE ALSO +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(ReadBuffer), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexParameter), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/cullface.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/cullface.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/cullface.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,76 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(CullFace,specify whether front- or back-facing facets can be culled) +_names(CullFace) +.SH PARAMETERS +_phead(_param1) +Specifies whether front- or back-facing facets are candidates for culling. +Symbolic constants +_const(FRONT), _const(BACK), and _const(FRONT_AND_BACK) are accepted. +The initial value is _const(BACK). +.SH DESCRIPTION +_cmnd specifies whether front- or back-facing facets are culled +(as specified by \f2mode\fP) when facet culling is enabled. Facet +culling is initially disabled. +To enable and disable facet culling, call the +_cmnd(Enable) and _cmnd(Disable) commands +with the argument _const(CULL_FACE). +Facets include triangles, +quadrilaterals, +polygons, +and rectangles. +.P +_cmnd(FrontFace) specifies which of the clockwise and counterclockwise facets +are front-facing and back-facing. +See _cmnd(FrontFace). +.SH NOTES +If _param1 is _const(FRONT_AND_BACK), no facets are drawn, but other +primitives such as points and lines are drawn. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(IsEnabled) with argument _const(CULL_FACE) +.br +_cmnd(Get) with argument _const(CULL_FACE_MODE) +.SH SEE ALSO +_cmnd(Enable), +_cmnd(FrontFace) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/deletelists.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/deletelists.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/deletelists.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,65 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_header(DeleteLists,delete a contiguous group of display lists) +_names(DeleteLists) +.SH PARAMETERS +_phead(_param1) +Specifies the integer name of the first display list to delete. +_phead(_param2) +Specifies the number of display lists to delete. +.SH DESCRIPTION +_cmnd causes a contiguous group of display lists to be deleted. +_param1 is the name of the first display list to be deleted, +and _param2 is the number of display lists to delete. +All display lists \fId\fP with _param1 \(<= \fId\fP \(<= _param1 + _param2 \- 1 +are deleted. +.P +All storage locations allocated to the specified display lists are freed, +and the names are available for reuse at a later time. +Names within the range that do not have an associated display list are ignored. +If _param2 is 0, nothing happens. +.SH ERRORS +_const(INVALID_VALUE) is generated if _param2 is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(CallList), +_cmnd(CallLists), +_cmnd(GenLists), +_cmnd(IsList), +_cmnd(NewList) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/deletetextures.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/deletetextures.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/deletetextures.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,76 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(DeleteTextures,delete named textures) +_names(DeleteTextures) +.SH PARAMETERS +_phead(_param1) +Specifies the number of textures to be deleted. +_phead(_param2) +Specifies an array of textures to be deleted. +.SH DESCRIPTION +_cmnd deletes _param1 textures named by the elements of the array _param2. +After a texture is deleted, it has no contents or dimensionality, +and its name is free for reuse (for example by _cmnd(GenTextures)). +If a texture that is currently bound is deleted, the binding reverts +to 0 (the default texture). +.P +_cmnd silently ignores 0's and names that do not correspond to +existing textures. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.SH ERRORS +_const(INVALID_VALUE) is generated if _param1 is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(IsTexture) +.SH SEE ALSO +_cmnd(AreTexturesResident), +_cmnd(BindTexture), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(GenTextures), +_cmnd(Get), +_cmnd(GetTexParameter), +_cmnd(PrioritizeTextures), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_C_ _cmnd(TexImage3D), +_cmnd(TexParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/depthfunc.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/depthfunc.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/depthfunc.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,106 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(DepthFunc,specify the value used for depth buffer comparisons) +_names(DepthFunc) +.SH PARAMETERS +_phead(_param1) +Specifies the depth comparison function. +Symbolic constants +_const(NEVER), +_const(LESS), +_const(EQUAL), +_const(LEQUAL), +_const(GREATER), +_const(NOTEQUAL), +_const(GEQUAL), and +_const(ALWAYS) are accepted. +The initial value is _const(LESS). +.SH DESCRIPTION +_cmnd specifies the function used to compare each incoming pixel depth value +with the depth value present in the depth buffer. +The comparison is performed only if depth testing is enabled. +(See _cmnd(Enable) and _cmnd(Disable) of _const(DEPTH_TEST).) +.P +_param1 specifies the conditions under which the pixel will be drawn. +The comparison functions are as follows: +.TP 16 +_const(NEVER) +Never passes. +.TP +_const(LESS) +Passes if the incoming depth value is less than the stored depth value. +.TP +_const(EQUAL) +Passes if the incoming depth value is equal to the stored depth value. +.TP +_const(LEQUAL) +Passes if the incoming depth value is less than or equal to +the stored depth value. +.TP +_const(GREATER) +Passes if the incoming depth value is greater than the stored depth value. +.TP +_const(NOTEQUAL) +Passes if the incoming depth value is not equal to the stored depth value. +.TP +_const(GEQUAL) +Passes if the incoming depth value is greater than or equal to +the stored depth value. +.TP +_const(ALWAYS) +Always passes. +.P +The initial value of _param1 is _const(LESS). +Initially, depth testing is disabled. +.NOTES +Even if the depth buffer exists and the depth mask is non-zero, the +depth buffer is not updated if the depth test is disabled. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(DEPTH_FUNC) +.br +_cmnd(IsEnabled) with argument _const(DEPTH_TEST) +.SH SEE ALSO +_cmnd(DepthRange), +_cmnd(Enable), +_cmnd(PolygonOffset) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/depthmask.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/depthmask.gl:1.3 --- /dev/null Fri Jan 18 15:22:02 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/depthmask.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,64 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(DepthMask,enable or disable writing into the depth buffer) +_names(DepthMask) +.SH PARAMETERS +_phead(_param1) +Specifies whether the depth buffer is enabled for writing. +If _param1 is _const(FALSE), +depth buffer writing is disabled. +Otherwise, it is enabled. +Initially, depth buffer writing is enabled. +.SH DESCRIPTION +_cmnd specifies whether the depth buffer is enabled for writing. +If _param1 is _const(FALSE), +depth buffer writing is disabled. +Otherwise, it is enabled. +Initially, depth buffer writing is enabled. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(DEPTH_WRITEMASK) +.SH SEE ALSO +_cmnd(ColorMask), +_cmnd(DepthFunc), +_cmnd(DepthRange), +_cmnd(IndexMask), +_cmnd(StencilMask) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/depthrange.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/depthrange.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/depthrange.gl Mon Jan 14 17:13:31 2002 @@ -0,0 +1,80 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(DepthRange,specify mapping of depth values from normalized device coordinates to window coordinates) +_names(DepthRange) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the mapping of the near clipping plane to window coordinates. +The initial value is 0. +_phead(_param2) +Specifies the mapping of the far clipping plane to window coordinates. +The initial value is 1. +.SH DESCRIPTION +After clipping and division by \f2w\fP, +depth coordinates range from \-1 to 1, +corresponding to the near and far clipping planes. +_cmnd specifies a linear mapping of the normalized depth coordinates +in this range to window depth coordinates. +Regardless of the actual depth buffer implementation, +window coordinate depth values are treated as though they range +from 0 through 1 (like color components). +Thus, +the values accepted by _cmnd are both clamped to this range +before they are accepted. +.P +The setting of (0,1) maps the near plane to 0 and +the far plane to 1. +With this mapping, +the depth buffer range is fully utilized. +.SH NOTES +It is not necessary that _param1 be less than _param2. +Reverse mappings such as $_eqnparam1 ~=~ 1$, and $_eqnparam2 ~=~ 0$ +are acceptable. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(DEPTH_RANGE) +.SH SEE ALSO +_cmnd(DepthFunc), +_cmnd(PolygonOffset), +_cmnd(Viewport) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/drawarrays.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/drawarrays.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/drawarrays.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,117 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ A real line follows. +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ Use GL not OpenGL +_C_ Don't change the ordering of the main headers. +_C_ C specification (or fortran) is handled automatically +_C_ .TH is automatically added to the top of this file. +_C_ Below, use current tense, active do not capitalize the first word and dont +_C_ use a period. +_header(DrawArrays, render primitives from array data) +_names(DrawArrays) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies what kind of primitives to render. +Symbolic constants +_const(POINTS), +_const(LINE_STRIP), +_const(LINE_LOOP), +_const(LINES), +_const(TRIANGLE_STRIP), +_const(TRIANGLE_FAN), +_const(TRIANGLES), +_const(QUAD_STRIP), +_const(QUADS), +and _const(POLYGON) are accepted. +_phead(_param2) +Specifies the starting index in the enabled arrays. +_phead(_param3) +Specifies the number of indices to be rendered. +.SH DESCRIPTION +_cmnd specifies multiple geometric primitives +with very few subroutine calls. Instead of calling a GL procedure +to pass each individual vertex, normal, texture coordinate, edge +flag, or color, you can prespecify +separate arrays of vertices, normals, and colors and use them to +construct a sequence of primitives with a single +call to _cmnd. +.P +When _cmnd is called, it uses _param3 sequential elements from each +enabled array to construct a sequence of geometric primitives, +beginning with element _param2. _param1 specifies what kind of +primitives are constructed, and how the array elements +construct those primitives. If _const(VERTEX_ARRAY) is not enabled, no +geometric primitives are generated. +.P +Vertex attributes that are modified by _cmnd have an +unspecified value after _cmnd returns. For example, if +_const(COLOR_ARRAY) is enabled, the value of the current color is +undefined after _cmnd executes. Attributes that aren't +modified remain well defined. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +_cmnd is included in display lists. If _cmnd is entered into a +display list, +the necessary array data (determined by the array pointers and +enables) is also +entered into the display list. Because the array pointers and +enables are client-side state, their values affect display lists +when the lists are created, not when the lists are executed. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param3 is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed between +the execution of _cmnd(Begin) and the corresponding _cmnd(End). +.SH SEE ALSO +_cmnd(ArrayElement), +_cmnd(ColorPointer), +_cmnd(DrawElements), +_cmnd(DrawRangeElements), +_cmnd(EdgeFlagPointer), +_cmnd(GetPointerv), +_cmnd(IndexPointer), +_cmnd(InterleavedArrays), +_cmnd(NormalPointer), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/drawbuffer.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/drawbuffer.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/drawbuffer.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,159 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(DrawBuffer,specify which color buffers are to be drawn into) +_names(DrawBuffer) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies up to four color buffers to be drawn into. +Symbolic constants +_const(NONE), +_const(FRONT_LEFT), +_const(FRONT_RIGHT), +_const(BACK_LEFT), +_const(BACK_RIGHT), +_const(FRONT), +_const(BACK), +_const(LEFT), +_const(RIGHT), +_const(FRONT_AND_BACK), and +_const(AUX)\f2i\fP, +where \f2i\fP is between 0 and +.br +``_const(AUX_BUFFERS)'' \-1, +are accepted (_const(AUX_BUFFERS) is not the upper limit; use _cmnd(Get) +to query the number of available aux buffers.) +The initial value is _const(FRONT) for single-buffered contexts, +and _const(BACK) for double-buffered contexts. +.SH DESCRIPTION +When colors are written to the frame buffer, +they are written into the color buffers specified by _cmnd. +The specifications are as follows: +.TP 25 +_const(NONE) +No color buffers are written. +.TP +_const(FRONT_LEFT) +Only the front left color buffer is written. +.TP +_const(FRONT_RIGHT) +Only the front right color buffer is written. +.TP +_const(BACK_LEFT) +Only the back left color buffer is written. +.TP +_const(BACK_RIGHT) +Only the back right color buffer is written. +.TP +_const(FRONT) +Only the front left and front right color buffers are written. +If there is no front right color buffer, +only the front left color buffer is written. +.TP +_const(BACK) +Only the back left and back right color buffers are written. +If there is no back right color buffer, +only the back left color buffer is written. +.TP +_const(LEFT) +Only the front left and back left color buffers are written. +If there is no back left color buffer, +only the front left color buffer is written. +.TP +_const(RIGHT) +Only the front right and back right color buffers are written. +If there is no back right color buffer, +only the front right color buffer is written. +.BP +.TP +_const(FRONT_AND_BACK) +All the front and back color buffers +(front left, front right, back left, back right) +are written. +If there are no back color buffers, +only the front left and front right color buffers are written. +If there are no right color buffers, +only the front left and back left color buffers are written. +If there are no right or back color buffers, +only the front left color buffer is written. +.TP +_const(AUX)\f2i\fP +Only auxiliary color buffer \f2i\fP is written. +.P +If more than one color buffer is selected for drawing, +then blending or logical operations are computed and applied independently +for each color buffer and can produce different results in each buffer. +.P +Monoscopic contexts include only +.I left +buffers, and stereoscopic contexts include both +.I left +and +.I right +buffers. +Likewise, single-buffered contexts include only +.I front +buffers, and double-buffered contexts include both +.I front +and +.I back +buffers. +The context is selected at GL initialization. +.SH NOTES +It is always the case that _const(AUX)$i$ = _const(AUX0) + $i$. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if none of the buffers indicated +by _param1 exists. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(DRAW_BUFFER) +.br +_cmnd(Get) with argument _const(AUX_BUFFERS) +.SH SEE ALSO +_cmnd(BlendFunc), +_cmnd(ColorMask), +_cmnd(IndexMask), +_cmnd(LogicOp), +_cmnd(ReadBuffer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/drawelements.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/drawelements.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/drawelements.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,123 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ A real line follows. +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ Use GL not OpenGL +_C_ Don't change the ordering of the main headers. +_C_ C specification (or fortran) is handled automatically +_C_ .TH is automatically added to the top of this file. +_C_ Below, use current tense, active do not capitalize the first word and dont +_C_ use a period. +_header(DrawElements, render primitives from array data) +_names(DrawElements) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies what kind of primitives to render. +Symbolic constants +_const(POINTS), +_const(LINE_STRIP), +_const(LINE_LOOP), +_const(LINES), +_const(TRIANGLE_STRIP), +_const(TRIANGLE_FAN), +_const(TRIANGLES), +_const(QUAD_STRIP), +_const(QUADS), +and _const(POLYGON) are accepted. +_phead(_param2) +Specifies the number of elements to be rendered. +_phead(_param3) +Specifies the type of the values in _param4. Must be one of +_const(UNSIGNED_BYTE), _const(UNSIGNED_SHORT), or +_const(UNSIGNED_INT). +_phead(_param4) +Specifies a pointer to the location where the indices are stored. +.SH DESCRIPTION +_cmnd specifies multiple geometric primitives +with very few subroutine calls. Instead of calling a GL function +to pass each individual vertex, normal, texture coordinate, edge +flag, or color, you can prespecify +separate arrays of vertices, normals, and so on and use them to +construct a sequence of primitives with a single +call to _cmnd. +.P +When _cmnd is called, it uses _param2 sequential elements from an +enabled array, starting at _param4 to construct a sequence of +geometric primitives. _param1 specifies what kind of primitives are +constructed, and how the array elements construct these primitives. If +more than one array is enabled, each is used. If +_const(VERTEX_ARRAY) is not enabled, no geometric primitives are +constructed. +.P +Vertex attributes that are modified by _cmnd have an +unspecified value after _cmnd returns. For example, if +_const(COLOR_ARRAY) is enabled, the value of the current color is +undefined after _cmnd executes. Attributes that aren't +modified maintain their previous values. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +_cmnd is included in display lists. If _cmnd is entered into a +display list, +the necessary array data (determined by the array pointers and +enables) is also +entered into the display list. Because the array pointers and +enables are client-side state, their values affect display lists +when the lists are created, not when the lists are executed. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param2 is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed between +the execution of _cmnd(Begin) and the corresponding _cmnd(End). +.SH SEE ALSO +_cmnd(ArrayElement), +_cmnd(ColorPointer), +_cmnd(DrawArrays), +_cmnd(DrawRangeElements), +_cmnd(EdgeFlagPointer), +_cmnd(GetPointerv), +_cmnd(IndexPointer), +_cmnd(InterleavedArrays), +_cmnd(NormalPointer), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/drawpixels.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/drawpixels.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/drawpixels.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,560 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(DrawPixels,write a block of pixels to the frame buffer) +_names(DrawPixels) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1 _param2) +Specify the dimensions of the pixel rectangle to be written +into the frame buffer. +_phead(_param3) +Specifies the format of the pixel data. +Symbolic constants +_const(COLOR_INDEX), +_const(STENCIL_INDEX), +_const(DEPTH_COMPONENT), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_C_ _const(ABGR_EXT), +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(LUMINANCE), and +_const(LUMINANCE_ALPHA) are accepted. +_phead(_param4) +Specifies the data type for _param5. +Symbolic constants +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) +are accepted. +_phead(_param5) +Specifies a pointer to the pixel data. +.SH DESCRIPTION +_cmnd reads pixel data from memory and writes it into the frame buffer +.br +relative to the current raster position, provided that the raster +position is valid. Use +.br +_cmnd(RasterPos) to set the current raster position; use +_cmnd(Get) with argument _const(CURRENT_RASTER_POSITION_VALID) +to determine if the specified raster position is valid, and +_cmnd(Get) with argument _const(CURRENT_RASTER_POSITION) +to query the raster position. +.P +Several parameters define the encoding of pixel data in memory +and control the processing of the pixel data +before it is placed in the frame buffer. +These parameters are set with four commands: +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(PixelMap), and _cmnd(PixelZoom). +This reference page describes the effects on _cmnd of many, +but not all, of the parameters specified by these four commands. +.P +Data is read from _param5 as a sequence of signed or unsigned bytes, +signed or unsigned shorts, signed or unsigned integers, or +single-precision floating-point values, depending on _param4. +When _param4 is one of _const(UNSIGNED_BYTE), _const(BYTE), +_const(UNSIGNED_SHORT), _const(SHORT), _const(UNSIGNED_INT), +_const(INT), or _const(FLOAT) each of these bytes, shorts, integers, or +floating-point values is interpreted as one color or depth component, or +one index, depending on _param3. +When _param4 is one of _const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_SHORT_5_6_5), _const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_5_5_5_1), _const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_10_10_10_2), each unsigned value is interpreted as +containing all the components for a single pixel, with the color +components arranged according to _param3. +When _param4 is one of _const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5_REV), _const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_1_5_5_5_REV), _const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_2_10_10_10_REV), each unsigned value is interpreted +as containing all color components, specified by _param3, for a single +pixel in a reversed order. Indices are always treated individually. +Color components are treated as groups of one, two, three, or four +values, again based on _param3. Both individual indices and groups of +components are referred to as pixels. +If _param4 is _const(BITMAP), the data must be unsigned bytes, and +_param3 must be either _const(COLOR_INDEX) or _const(STENCIL_INDEX). +Each unsigned byte is treated as eight 1-bit pixels, with bit ordering +determined by _const(UNPACK_LSB_FIRST) (see _cmnd(PixelStore)). +.P +_param1$~ times ~$_param2 pixels are read from memory, +starting at location _param5. +By default, these pixels are taken from adjacent memory locations, +except that after all _param1 pixels are read, +the read pointer is advanced to the next four-byte boundary. +The four-byte row alignment is specified by _cmnd(PixelStore) with +argument _const(UNPACK_ALIGNMENT), +and it can be set to one, two, four, or eight bytes. +Other pixel store parameters specify different read pointer advancements, +both before the first pixel is read +and after all _param1 pixels are read. +See the _cmnd(PixelStore) reference page for details on these options. +.P +The _param1$~ times ~$_param2 pixels that are read from memory are +each operated on in the same way, +based on the values of several parameters specified by _cmnd(PixelTransfer) +and _cmnd(PixelMap). +The details of these operations, +as well as the target buffer into which the pixels are drawn, +are specific to the format of the pixels, +as specified by _param3. +_param3 can assume one of 13 symbolic values: +.TP 10 +_const(COLOR_INDEX) +Each pixel is a single value, +a color index. +It is converted to fixed-point format, +with an unspecified number of bits to the right of the binary point, +regardless of the memory data type. +Floating-point values convert to true fixed-point values. +Signed and unsigned integer data is converted with all fraction bits +set to 0. +Bitmap data convert to either 0 or 1. +.IP +Each fixed-point index is then shifted left by _const(INDEX_SHIFT) bits +and added to _const(INDEX_OFFSET). +If _const(INDEX_SHIFT) is negative, +the shift is to the right. +In either case, zero bits fill otherwise unspecified bit locations in the +result. +.IP +If the GL is in RGBA mode, +the resulting index is converted to an RGBA pixel +with the help of the _const(PIXEL_MAP_I_TO_R), +_const(PIXEL_MAP_I_TO_G), +_const(PIXEL_MAP_I_TO_B), +and _const(PIXEL_MAP_I_TO_A) tables. +If the GL is in color index mode, +and if _const(MAP_COLOR) is true, +the index is replaced with the value that it references in lookup table +_const(PIXEL_MAP_I_TO_I). +Whether the lookup replacement of the index is done or not, +the integer part of the index is then ANDed with $2 sup b -1$, +where $b$ is the number of bits in a color index buffer. +.BP +.IP +The GL then converts the resulting indices or RGBA colors to fragments +by attaching the current raster position \f2z\fP coordinate and +texture coordinates to each pixel, +then assigning $x$ and $y$ window coordinates to the $n$th fragment such that +.sp +.RS +.ce +$x sub n ~=~ x sub r ~+~ n ~ roman mod ~ _eqnparam1$ +.sp +.ce +$y sub n ~=~ y sub r ~+~ \(lf n ^/^ _eqnparam1 ~ \(rf$ +.ce 0 +.sp +.RE +.IP +where ($x sub r , y sub r$) is the current raster position. +These pixel fragments are then treated just like the fragments generated by +rasterizing points, lines, or polygons. +Texture mapping, +fog, +and all the fragment operations are applied before the fragments are written +to the frame buffer. +.TP +_const(STENCIL_INDEX) +Each pixel is a single value, +a stencil index. +It is converted to fixed-point format, +with an unspecified number of bits to the right of the binary point, +regardless of the memory data type. +Floating-point values convert to true fixed-point values. +Signed and unsigned integer data is converted with all fraction bits +set to 0. +Bitmap data convert to either 0 or 1. +.IP +Each fixed-point index is then shifted left by _const(INDEX_SHIFT) bits, +and added to _const(INDEX_OFFSET). +If _const(INDEX_SHIFT) is negative, +the shift is to the right. +In either case, zero bits fill otherwise unspecified bit locations in the +result. +If _const(MAP_STENCIL) is true, +the index is replaced with the value that it references in lookup table +_const(PIXEL_MAP_S_TO_S). +Whether the lookup replacement of the index is done or not, +the integer part of the index is then ANDed with $2 sup b -1$, +where $b$ is the number of bits in the stencil buffer. +The resulting stencil indices are then written to the stencil buffer +such that the $n$th index is written to location +.P +.RS +.ce +$x sub n ~=~ x sub r ~+~ n ~ roman mod ~ _eqnparam1$ +.sp +.ce +$y sub n ~=~ y sub r ~+~ \(lf ~ n / _eqnparam1 ~ \(rf$ +.fi +.sp +.RE +.IP +where ($x sub r , y sub r$) is the current raster position. +Only the pixel ownership test, +the scissor test, +and the stencil writemask affect these write operations. +.TP +_const(DEPTH_COMPONENT) +Each pixel is a single-depth component. +Floating-point data is converted directly to an internal floating-point +format with unspecified precision. +Signed integer data is mapped linearly to the internal floating-point +format such that the most positive representable integer value maps to 1.0, +and the most negative representable value maps to \-1.0. +Unsigned integer data is mapped similarly: +the largest integer value maps to 1.0, +and 0 maps to 0.0. +The resulting floating-point depth value is then multiplied +by _const(DEPTH_SCALE) and added to _const(DEPTH_BIAS). +The result is clamped to the range [0,1]. +.IP +The GL then converts the resulting depth components to fragments +by attaching the current raster position color or color index and +texture coordinates to each pixel, +then assigning $x$ and $y$ window coordinates to the $n$th fragment such that +.P +.RS +.ce +$x sub n ~=~ x sub r ~+~ n ~ roman mod ~ _eqnparam1$ +.sp +.ce +$y sub n ~=~ y sub r ~+~ \(lf ~ n / _eqnparam1 ~ \(rf$ +.ce 0 +.sp +.RE +.IP +where ($x sub r , y sub r$) is the current raster position. +These pixel fragments are then treated just like the fragments generated by +rasterizing points, lines, or polygons. +Texture mapping, +fog, +and all the fragment operations are applied before the fragments are written +to the frame buffer. +.TP +_const(RGBA) +.TP +_const(BGRA) +_C_ .TP +_C_ const(ABGR_EXT) +Each pixel is a four-component group: for _const(RGBA), the red +component is first, followed by green, followed by blue, followed by +alpha; for _const(BGRA) the order is blue, green, red and then alpha. +_C_; for _const(ABGR_EXT) the order is alpha, blue, green, and then red. +Floating-point values are converted directly to an internal floating-point +format with unspecified precision. +Signed integer values are mapped linearly to the internal floating-point +format such that the most positive representable integer value maps to 1.0, +and the most negative representable value maps to \-1.0. (Note that +this mapping does not convert 0 precisely to 0.0.) +Unsigned integer data is mapped similarly: +the largest integer value maps to 1.0, +and 0 maps to 0.0. +The resulting floating-point color values are then multiplied +by _const(c_SCALE) and added to _const(c_BIAS), +where \f2c\fP is RED, GREEN, BLUE, and ALPHA +for the respective color components. +The results are clamped to the range [0,1]. +.IP +If _const(MAP_COLOR) is true, +each color component is scaled by the size of lookup table +_const(PIXEL_MAP_c_TO_c), +then replaced by the value that it references in that table. +\f2c\fP is R, G, B, or A respectively. +.BP +.IP +The GL then converts the resulting RGBA colors to fragments +by attaching the current raster position \f2z\fP coordinate and +texture coordinates to each pixel, +then assigning $x$ and $y$ window coordinates to the $n$th fragment such that +.P +.RS +.ce +$x sub n ~=~ x sub r ~+~ n ~ roman mod ~ _eqnparam1$ +.sp +.ce +$y sub n ~=~ y sub r ~+~ \(lf ~ n / _eqnparam1 ~ \(rf$ +.ce 0 +.sp +.RE +.IP +where ($x sub r , y sub r$) is the current raster position. +These pixel fragments are then treated just like the fragments generated by +rasterizing points, lines, or polygons. +Texture mapping, +fog, +and all the fragment operations are applied before the fragments are written +to the frame buffer. +.TP +_const(RED) +Each pixel is a single red component. +This component is converted to the internal floating-point format in +the same way the red component of an RGBA pixel is. It is +then converted to an RGBA pixel with green and blue set to 0, +and alpha set to 1. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.TP +_const(GREEN) +Each pixel is a single green component. +This component is converted to the internal floating-point format in +the same way the green component of an RGBA pixel is. +It is then converted to an RGBA pixel with red and blue set to 0, +and alpha set to 1. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.TP +_const(BLUE) +Each pixel is a single blue component. +This component is converted to the internal floating-point format in +the same way the blue component of an RGBA pixel is. +It is then converted to an RGBA pixel with red and green set to 0, +and alpha set to 1. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.TP +_const(ALPHA) +Each pixel is a single alpha component. +This component is converted to the internal floating-point format in +the same way the alpha component of an RGBA pixel is. +It is then converted to an RGBA pixel with red, green, and blue set to 0. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.BP +.TP +_const(RGB) +.TP +_const(BGR) +Each pixel is a three-component group: +red first, followed by green, followed by blue; for _const(BGR), the +first component is blue, followed by green and then red. +Each component is converted to the internal floating-point format in +the same way the red, green, and blue components of an RGBA pixel are. +The color triple is converted to an RGBA pixel with alpha set to 1. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.TP +_const(LUMINANCE) +Each pixel is a single luminance component. +This component is converted to the internal floating-point format in +the same way the red component of an RGBA pixel is. +It is then converted to an RGBA pixel with red, green, and blue set to the +converted luminance value, +and alpha set to 1. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.TP +_const(LUMINANCE_ALPHA) +Each pixel is a two-component group: +luminance first, followed by alpha. +The two components are converted to the internal floating-point format in +the same way the red component of an RGBA pixel is. +They are then converted to an RGBA pixel with red, green, and blue set to the +converted luminance value, +and alpha set to the converted alpha value. +After this conversion, the pixel is treated as if it had been read +as an RGBA pixel. +.P +The following table summarizes the meaning of the valid constants for the +\f2type\fP parameter: +.sp 2 +.TS +center; +lb lb +l l. +_ +Type Corresponding Type +_ +_const(UNSIGNED_BYTE) unsigned 8-bit integer +_const(BYTE) signed 8-bit integer +_const(BITMAP) single bits in unsigned 8-bit integers +_const(UNSIGNED_SHORT) unsigned 16-bit integer +_const(SHORT) signed 16-bit integer +_const(UNSIGNED_INT) unsigned 32-bit integer +_const(INT) 32-bit integer +_const(FLOAT) single-precision floating-point +_const(UNSIGNED_BYTE_3_3_2) unsigned 8-bit integer +_const(UNSIGNED_BYTE_2_3_3_REV) unsigned 8-bit integer with reversed component ordering +_const(UNSIGNED_SHORT_5_6_5) unsigned 16-bit integer +_const(UNSIGNED_SHORT_5_6_5_REV) unsigned 16-bit integer with reversed component ordering +_const(UNSIGNED_SHORT_4_4_4_4) unsigned 16-bit integer +_const(UNSIGNED_SHORT_4_4_4_4_REV) unsigned 16-bit integer with reversed component ordering +_const(UNSIGNED_SHORT_5_5_5_1) unsigned 16-bit integer +_const(UNSIGNED_SHORT_1_5_5_5_REV) unsigned 16-bit integer with reversed component ordering +_const(UNSIGNED_INT_8_8_8_8) unsigned 32-bit integer +_const(UNSIGNED_INT_8_8_8_8_REV) unsigned 32-bit integer with reversed component ordering +_const(UNSIGNED_INT_10_10_10_2) unsigned 32-bit integer +_const(UNSIGNED_INT_2_10_10_10_REV) unsigned 32-bit integer with reversed component ordering +_ +.TE +.sp +.BP +.P +The rasterization described so far assumes pixel zoom factors of 1. +If +.br +_cmnd(PixelZoom) is used to change the $x$ and $y$ pixel zoom factors, +pixels are converted to fragments as follows. +If ($x sub r$, $y sub r$) is the current raster position, +and a given pixel is in the $n$th column and $m$th row +of the pixel rectangle, +then fragments are generated for pixels whose centers are in the rectangle +with corners at +.sp +.RS +.ce +($x sub r ~+~ zoom sub x^ n$, $y sub r ~+~ zoom sub y^ m$) +.sp +.ce +($x sub r ~+~ zoom sub x^ (n ~+~ 1)$, $y sub r ~+~ zoom sub y^ ( m ~+~ 1 )$) +.ce 0 +.sp +.RE +.P +where $zoom sub x$ is the value of _const(ZOOM_X) and +$zoom sub y$ is the value of _const(ZOOM_Y). +.SH NOTES +_const(BGR) and _const(BGRA) are only valid for _param3 if the GL +version is 1.2 or greater. +.P +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) are only valid for _param4 if the +GL version is 1.2 or greater. +.SH ERRORS +_const(INVALID_VALUE) is generated if either _param1 or _param2 is negative. +.P +_const(INVALID_ENUM) is generated if _param3 or _param4 is not one of +the accepted values. +.P +_const(INVALID_OPERATION) is generated if _param3 is +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(RGBA), +_const(BGR), +_const(BGRA), +_C_ _const(ABGR_EXT), +_const(LUMINANCE), +or +_const(LUMINANCE_ALPHA), +and the GL is in color index mode. +.P +_const(INVALID_ENUM) is generated if _param4 is _const(BITMAP) and +_param3 is not either _const(COLOR_INDEX) or _const(STENCIL_INDEX). +.P +_const(INVALID_OPERATION) is generated if _param3 is _const(STENCIL_INDEX) +and there is no stencil buffer. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if _param3 is one +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), of +_const(UNSIGNED_SHORT_5_6_5_REV) +and _param3 is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if _param3 is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and _param3 is neither _const(RGBA) nor _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(CURRENT_RASTER_POSITION) +.br +_cmnd(Get) with argument _const(CURRENT_RASTER_POSITION_VALID) +.SH SEE ALSO +_cmnd(AlphaFunc), +_cmnd(BlendFunc), +_cmnd(CopyPixels), +_cmnd(DepthFunc), +_cmnd(LogicOp), +_cmnd(PixelMap), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(PixelZoom), +_cmnd(RasterPos), +_cmnd(ReadPixels), +_cmnd(Scissor), +_cmnd(StencilFunc) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/drawrangeelements.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/drawrangeelements.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/drawrangeelements.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,146 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ A real line follows. +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ Use GL not OpenGL +_C_ Don't change the ordering of the main headers. +_C_ C specification (or fortran) is handled automatically +_C_ .TH is automatically added to the top of this file. +_C_ Below, use current tense, active do not capitalize the first word and dont +_C_ use a period. +_header(DrawRangeElements, render primitives from array data) +_names(DrawRangeElements) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies what kind of primitives to render. +Symbolic constants +_const(POINTS), +_const(LINE_STRIP), +_const(LINE_LOOP), +_const(LINES), +_const(TRIANGLE_STRIP), +_const(TRIANGLE_FAN), +_const(TRIANGLES), +_const(QUAD_STRIP), +_const(QUADS), +and _const(POLYGON) are accepted. +_phead(_param2) +Specifies the minimum array index contained in _param6(1). +_phead(_param3) +Specifies the maximum array index contained in _param6(1). +_phead(_param4) +Specifies the number of elements to be rendered. +_phead(_param5) +Specifies the type of the values in _param4. Must be one of +_const(UNSIGNED_BYTE), _const(UNSIGNED_SHORT), or +_const(UNSIGNED_INT). +_phead(_param6) +Specifies a pointer to the location where the indices are stored. +.SH DESCRIPTION +_cmnd is a restricted form of _cmnd(DrawElements). _param1, _param2, _param3, +and _param4 match the corresponding arguments to _cmnd(DrawElements), with +the additional constraint that all values in the arrays _param4 must lie +between _param2 and _param3, inclusive. +.P +Implementations denote recommended maximum amounts of vertex and +.br +index data, +which may be queried by calling _cmnd(Get) with argument +_const(MAX_ELEMENTS_VERTICES) and _const(MAX_ELEMENTS_INDICES). +If $_eqnparam3 ~-~ _eqnparam2 ~+~ 1$ is greater than the value of +_const(MAX_ELEMENTS_VERTICES), or if _param4 is greater than the value of +_const(MAX_ELEMENTS_INDICES), then the call may operate at reduced +performance. There is no requirement that all vertices in the range +[_param2,\ _param3] be referenced. However, the implementation may +partially process unused vertices, reducing performance from what could +be achieved with an optimal index set. +.P +When _cmnd is called, it uses _param2 sequential elements from an +enabled array, starting at _param4 to construct a sequence of +geometric primitives. _param1 specifies what kind of primitives are +constructed, and how the array elements construct these primitives. If +more than one array is enabled, each is used. If +_const(VERTEX_ARRAY) is not enabled, no geometric primitives are +constructed. +.P +Vertex attributes that are modified by _cmnd have an +unspecified value after _cmnd returns. For example, if +_const(COLOR_ARRAY) is enabled, the value of the current color is +undefined after _cmnd executes. Attributes that aren't +modified maintain their previous values. +.SH NOTES +_cmnd is available only if the GL version is 1.2 or greater. +.P +_cmnd is included in display lists. If _cmnd is entered into a +display list, +the necessary array data (determined by the array pointers and +enables) is also +entered into the display list. Because the array pointers and +enables are client-side state, their values affect display lists +when the lists are created, not when the lists are executed. +.SH ERRORS +It is an error for indices to lie outside the range [_param2,\ _param3], +but implementations may not check for this situation. Such indices +cause implementation-dependent behavior. +.P +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param4 is negative. +.P +_const(INVALID_VALUE) is generated if _param3 $<$ _param2. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed between +the execution of _cmnd(Begin) and the corresponding _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MAX_ELEMENTS_VERTICES) +.P +_cmnd(Get) with argument _const(MAX_ELEMENTS_INDICES) +.SH SEE ALSO +_cmnd(ArrayElement), +_cmnd(ColorPointer), +_cmnd(DrawArrays), +_cmnd(DrawElements), +_cmnd(EdgeFlagPointer), +_cmnd(GetPointerv), +_cmnd(IndexPointer), +_cmnd(InterleavedArrays), +_cmnd(NormalPointer), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/edgeflag.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/edgeflag.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/edgeflag.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,77 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(EdgeFlag,flag edges as either boundary or nonboundary) +_names(EdgeFlag) +.SH PARAMETERS +_phead(_param1) +Specifies the current edge flag value, +either _const(TRUE) or _const(FALSE). The initial value is _const(TRUE). +_names(EdgeFlagv) +.SH PARAMETERS +_phead(_param1) +Specifies a pointer to an array that contains a single boolean element, +which replaces the current edge flag value. +.SH DESCRIPTION +Each vertex of a polygon, +separate triangle, +or separate quadrilateral specified between a _cmnd(Begin)/_cmnd(End) pair +is marked as the start of either a boundary or nonboundary edge. +If the current edge flag is true when the vertex is specified, +the vertex is marked as the start of a boundary edge. +Otherwise, the vertex is marked as the start of a nonboundary edge. +_cmnd sets the edge flag bit to _const(TRUE) if _param1 is _const(TRUE), +and to _const(FALSE) otherwise. +.P +The vertices of connected triangles and connected quadrilaterals are always +marked as boundary, +regardless of the value of the edge flag. +.P +Boundary and nonboundary edge flags on vertices are significant only if +_const(POLYGON_MODE) is set to _const(POINT) or _const(LINE). +See _cmnd(PolygonMode). +.SH NOTES +The current edge flag can be updated at any time. +In particular, +_cmnd can be called between a call to _cmnd(Begin) and the corresponding +call to _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(EDGE_FLAG) +.SH SEE ALSO +_cmnd(Begin), +_cmnd(EdgeFlagPointer), +_cmnd(PolygonMode) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/edgeflagpointer.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/edgeflagpointer.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/edgeflagpointer.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,123 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ Anything on a line after _C_ is ignored +_C_ A real line follows. +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ Use GL not OpenGL +_C_ Don't change the ordering of the main headers. +_C_ C specification (or fortran) is handled automatically +_C_ .TH is automatically added to the top of this file. +_C_ Below, use current tense, active do not capitalize the first word and dont +_C_ use a period. +_C_ the function name must appear in (APIFILE) (usually gl.h) as set in +_C_ Makefile. +_header(EdgeFlagPointer,define an array of edge flags) +_names(EdgeFlagPointer) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the byte offset between consecutive edge flags. +If _param1 is 0 (the initial value), the edge flags are understood +to be tightly packed in the array. The initial value is 0. +_phead(_param2) +Specifies a pointer to the first edge flag in the array. The initial +value is zero. +.SH DESCRIPTION +_cmnd specifies the location and data format of an array of boolean edge +flags to use when rendering. _param1 specifies the byte stride from one +edge flag to the next allowing vertices and attributes +to be packed into a single array or stored in separate arrays. +(Single-array storage may be more efficient on some implementations; +see _cmnd(InterleavedArrays).) +.P +When an edge flag array is +specified, _param1 and _param2 are saved as client-side +state. +.P +To enable and disable the edge flag array, call _cmnd(EnableClientState) and +.br +_cmnd(DisableClientState) with +the argument _const(EDGE_FLAG_ARRAY). If enabled, the edge flag array is used +when _cmnd(DrawArrays), _cmnd(DrawElements), or _cmnd(ArrayElement) is called. +.P +Use _cmnd(DrawArrays) to construct a sequence of primitives (all of +the same type) +from prespecified vertex and vertex attribute arrays. +Use _cmnd(ArrayElement) to specify primitives +by indexing vertices and vertex attributes and _cmnd(DrawElements) to +construct a sequence of primitives by indexing vertices and vertex attributes. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +The edge flag array is initially disabled and it won't be accessed when +.br +_cmnd(ArrayElement), _cmnd(DrawElements) or _cmnd(DrawArrays) is called. +.P +Execution of _cmnd is not allowed between the execution of +_cmnd(Begin) and the corresponding execution of _cmnd(End), +but an error may or may not be generated. If no error is generated, +the operation is undefined. +.P +_cmnd is typically implemented on the client side. +.P +Edge flag array parameters are client-side state and are therefore +not saved or restored by _cmnd(PushAttrib) and _cmnd(PopAttrib). +Use _cmnd(PushClientAttrib) and +.br +_cmnd(PopClientAttrib) instead. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is negative. +.SH ASSOCIATED GETS +_cmnd(IsEnabled) with argument _const(EDGE_FLAG_ARRAY) +.br +_cmnd(Get) with argument _const(EDGE_FLAG_ARRAY_STRIDE) +.br +_cmnd(GetPointerv) with argument _const(EDGE_FLAG_ARRAY_POINTER) +.SH SEE ALSO +_cmnd(ArrayElement), +_cmnd(ColorPointer), +_cmnd(DrawArrays), +_cmnd(DrawElements), +_cmnd(Enable), +_cmnd(GetPointerv), +_cmnd(IndexPointer), +_cmnd(NormalPointer), +_cmnd(PopClientAttrib), +.br +_cmnd(PushClientAttrib), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/enable.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/enable.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/enable.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,517 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn|tbl)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Enable, enable or disable server-side GL capabilities) +_names(Enable) +.SH PARAMETERS +_phead(_param1) +Specifies a symbolic constant indicating a GL capability. +_names(Disable) +.SH PARAMETERS +_phead(_param1) +Specifies a symbolic constant indicating a GL capability. +.SH DESCRIPTION +_cmnd and _cmnd(Disable) enable and disable various capabilities. +Use _cmnd(IsEnabled) or _cmnd(Get) to determine the current setting +of any capability. The initial value for each capability with the +exception of _const(DITHER) is _const(FALSE). The initial value for +_const(DITHER) is _const(TRUE). +.P +Both _cmnd(Enable) and _cmnd(Disable) take a single argument, _param1, +which can assume one of the following values: +.TP 25 +_const(ALPHA_TEST) +If enabled, +do alpha testing. See +_cmnd(AlphaFunc). +.TP +_const(AUTO_NORMAL) +If enabled, +generate normal vectors when either +_const(MAP2_VERTEX_3) or +_const(MAP2_VERTEX_4) is used to generate vertices. +See _cmnd(Map2). +.TP +_const(BLEND) +If enabled, +blend the incoming RGBA color values with the values in the color +buffers. See _cmnd(BlendFunc). +.TP +_const(CLIP_PLANE)\f2i\fP +If enabled, +clip geometry against user-defined clipping plane \f2i\fP. +See _cmnd(ClipPlane). +.TP +_const(COLOR_LOGIC_OP) +If enabled, +apply the currently selected logical operation to the incoming RGBA +color and color buffer values. See _cmnd(LogicOp). +.TP +_const(COLOR_MATERIAL) +If enabled, +have one or more material parameters track the current color. +See _cmnd(ColorMaterial). +.TP +_const(COLOR_TABLE) +If enabled, +preform a color table lookup on the incoming RGBA color values. +See _cmnd(ColorTable). +.TP +_const(CONVOLUTION_1D) +If enabled, +perform a 1D convolution operation on incoming RGBA color values. +See _cmnd(ConvolutionFilter1D). +.TP +_const(CONVOLUTION_2D) +If enabled, +perform a 2D convolution operation on incoming RGBA color values. +See _cmnd(ConvolutionFilter2D). +.TP +_const(CULL_FACE) +If enabled, +cull polygons based on their winding in window coordinates. +See _cmnd(CullFace). +.TP +_const(DEPTH_TEST) +If enabled, +do depth comparisons and update the depth buffer. Note that even if +the depth buffer exists and the depth mask is non-zero, the +depth buffer is not updated if the depth test is disabled. See +_cmnd(DepthFunc) and +.br +_cmnd(DepthRange). +.TP +_const(DITHER) +If enabled, +dither color components or indices before they are written to the +color buffer. +.TP +_const(FOG) +If enabled, +blend a fog color into the posttexturing color. +See _cmnd(Fog). +.TP +_const(HISTOGRAM) +If enabled, +histogram incoming RGBA color values. +See _cmnd(Histogram). +.TP +_const(INDEX_LOGIC_OP) +If enabled, +apply the currently selected logical operation to the incoming index and color +buffer indices. See +.br +_cmnd(LogicOp). +.TP +_const(LIGHT)\f2i\fP +If enabled, +include light \f2i\fP in the evaluation of the lighting +equation. See _cmnd(LightModel) and _cmnd(Light). +.TP +_const(LIGHTING) +If enabled, +use the current lighting parameters to compute the vertex color or index. +Otherwise, simply associate the current color or index with each +vertex. See +.br +_cmnd(Material), _cmnd(LightModel), and _cmnd(Light). +.TP +_const(LINE_SMOOTH) +If enabled, +draw lines with correct filtering. +Otherwise, +draw aliased lines. +See _cmnd(LineWidth). +.TP +_const(LINE_STIPPLE) +If enabled, +use the current line stipple pattern when drawing lines. See +_cmnd(LineStipple). +.TP +_const(MAP1_COLOR_4) +If enabled, +calls to +_cmnd(EvalCoord1), +_cmnd(EvalMesh1), and +_cmnd(EvalPoint1) generate RGBA values. +See _cmnd(Map1). +.TP +_const(MAP1_INDEX) +If enabled, +calls to +_cmnd(EvalCoord1), +_cmnd(EvalMesh1), and +_cmnd(EvalPoint1) generate color indices. +See _cmnd(Map1). +.TP +_const(MAP1_NORMAL) +If enabled, +calls to +_cmnd(EvalCoord1), +_cmnd(EvalMesh1), and +_cmnd(EvalPoint1) generate normals. +See _cmnd(Map1). +.TP +_const(MAP1_TEXTURE_COORD_1) +If enabled, +calls to +_cmnd(EvalCoord1), +_cmnd(EvalMesh1), and +_cmnd(EvalPoint1) generate +\f2s\fP +texture coordinates. +See _cmnd(Map1). +.TP +_const(MAP1_TEXTURE_COORD_2) +If enabled, +calls to +_cmnd(EvalCoord1), +_cmnd(EvalMesh1), and +_cmnd(EvalPoint1) generate +\f2s\fP and +\f2t\fP texture coordinates. +See _cmnd(Map1). +.TP +_const(MAP1_TEXTURE_COORD_3) +If enabled, +calls to +_cmnd(EvalCoord1), +_cmnd(EvalMesh1), and +_cmnd(EvalPoint1) generate +\f2s\fP, +\f2t\fP, and +\f2r\fP texture coordinates. +See _cmnd(Map1). +.TP +_const(MAP1_TEXTURE_COORD_4) +If enabled, +calls to +_cmnd(EvalCoord1), +_cmnd(EvalMesh1), and +_cmnd(EvalPoint1) generate +\f2s\fP, +\f2t\fP, +\f2r\fP, and +\f2q\fP texture coordinates. +See _cmnd(Map1). +.TP +_const(MAP1_VERTEX_3) +If enabled, +calls to +_cmnd(EvalCoord1), +_cmnd(EvalMesh1), and +_cmnd(EvalPoint1) generate +\f2x\fP, \f2y\fP, and \f2z\fP vertex coordinates. +See _cmnd(Map1). +.TP +_const(MAP1_VERTEX_4) +If enabled, +calls to +_cmnd(EvalCoord1), +_cmnd(EvalMesh1), and +_cmnd(EvalPoint1) generate +homogeneous +\f2x\fP, +\f2y\fP, +\f2z\fP, and +\f2w\fP vertex coordinates. +See _cmnd(Map1). +.TP +_const(MAP2_COLOR_4) +If enabled, +calls to +_cmnd(EvalCoord2), +_cmnd(EvalMesh2), and +_cmnd(EvalPoint2) generate RGBA values. +See _cmnd(Map2). +.TP +_const(MAP2_INDEX) +If enabled, +calls to +_cmnd(EvalCoord2), +_cmnd(EvalMesh2), and +_cmnd(EvalPoint2) generate color indices. +See _cmnd(Map2). +.TP +_const(MAP2_NORMAL) +If enabled, +calls to +_cmnd(EvalCoord2), +_cmnd(EvalMesh2), and +_cmnd(EvalPoint2) generate normals. +See _cmnd(Map2). +.TP +_const(MAP2_TEXTURE_COORD_1) +If enabled, +calls to +_cmnd(EvalCoord2), +_cmnd(EvalMesh2), and +_cmnd(EvalPoint2) generate +\f2s\fP +texture coordinates. +See _cmnd(Map2). +.TP +_const(MAP2_TEXTURE_COORD_2) +If enabled, +calls to +_cmnd(EvalCoord2), +_cmnd(EvalMesh2), and +_cmnd(EvalPoint2) generate +\f2s\fP and +\f2t\fP texture coordinates. +See _cmnd(Map2). +.TP +_const(MAP2_TEXTURE_COORD_3) +If enabled, +calls to +_cmnd(EvalCoord2), +_cmnd(EvalMesh2), and +_cmnd(EvalPoint2) generate +\f2s\fP, +\f2t\fP, and +\f2r\fP texture coordinates. +See _cmnd(Map2). +.TP +_const(MAP2_TEXTURE_COORD_4) +If enabled, +calls to +_cmnd(EvalCoord2), +_cmnd(EvalMesh2), and +_cmnd(EvalPoint2) generate +\f2s\fP, +\f2t\fP, +\f2r\fP, and +\f2q\fP texture coordinates. +See _cmnd(Map2). +.TP +_const(MAP2_VERTEX_3) +If enabled, +calls to +_cmnd(EvalCoord2), +_cmnd(EvalMesh2), and +_cmnd(EvalPoint2) generate +\f2x\fP, \f2y\fP, and \f2z\fP vertex coordinates. +See _cmnd(Map2). +.TP +_const(MAP2_VERTEX_4) +If enabled, +calls to +_cmnd(EvalCoord2), +_cmnd(EvalMesh2), and +_cmnd(EvalPoint2) generate +homogeneous +\f2x\fP, +\f2y\fP, +\f2z\fP, and +\f2w\fP vertex coordinates. +See _cmnd(Map2). +.TP +_const(MINMAX) +If enabled, +compute the minimum and maximum values of incoming RGBA color values. +See _cmnd(Minmax). +.TP +_const(NORMALIZE) +If enabled, +normal vectors specified with _cmnd(Normal) are scaled to unit length +after transformation. See _cmnd(Normal). +.TP +_const(POINT_SMOOTH) +If enabled, +draw points with proper filtering. +Otherwise, +draw aliased points. +See _cmnd(PointSize). +.TP +_const(POLYGON_OFFSET_FILL) +If enabled, and if the polygon is rendered in +_const(FILL) mode, an offset is added to depth values of a polygon's +fragments before the depth comparison is performed. +See _cmnd(PolygonOffset). +.TP +_const(POLYGON_OFFSET_LINE) +If enabled, and if the polygon is rendered in +_const(LINE) mode, an offset is added to depth values of a polygon's +fragments before the depth comparison is performed. See _cmnd(PolygonOffset). +.TP +_const(POLYGON_OFFSET_POINT) +If enabled, an offset is added to depth values of a polygon's fragments +before the depth comparison is performed, if the polygon is rendered in +_const(POINT) mode. See _cmnd(PolygonOffset). +.TP +_const(POLYGON_SMOOTH) +If enabled, draw polygons with proper filtering. +Otherwise, draw aliased polygons. For correct anti-aliased polygons, +an alpha buffer is needed and the polygons must be sorted front to +back. +.TP +_const(POLYGON_STIPPLE) +If enabled, +use the current polygon stipple pattern when rendering +polygons. See _cmnd(PolygonStipple). +.TP +_const(POST_COLOR_MATRIX_COLOR_TABLE) +If enabled, +preform a color table lookup on RGBA color values after color matrix +transformation. +See _cmnd(ColorTable). +.TP +_const(POST_CONVOLUTION_COLOR_TABLE) +If enabled, +preform a color table lookup on RGBA color values after convolution. +See _cmnd(ColorTable). +.TP +_const(RESCALE_NORMAL) +If enabled, normal vectors specified with _cmnd(Normal) are scaled to +unit length after transformation. See _cmnd(Normal). +.TP +_const(SEPARABLE_2D) +If enabled, perform a two-dimensional convolution operation using a separable +convolution filter on incoming RGBA color values. +See _cmnd(SeparableFilter2D). +.TP +_const(SCISSOR_TEST) +If enabled, +discard fragments that are outside the scissor rectangle. +See _cmnd(Scissor). +.TP +_const(STENCIL_TEST) +If enabled, +do stencil testing and update the stencil buffer. +See _cmnd(StencilFunc) and _cmnd(StencilOp). +.TP +_const(TEXTURE_1D) +If enabled, one-dimensional texturing is performed +(unless two- or three-dimensional texturing is also enabled). +See _cmnd(TexImage1D). +.TP +_const(TEXTURE_2D) +If enabled, two-dimensional texturing is performed +(unless three-dimensional texturing is also enabled). See _cmnd(TexImage2D). +.TP +_const(TEXTURE_3D) +If enabled, three-dimensional texturing is performed. See _cmnd(TexImage3D). +.TP +_const(TEXTURE_GEN_Q) +If enabled, +the \f2q\fP texture coordinate is computed using +the texture generation function defined with _cmnd(TexGen). +Otherwise, the current \f2q\fP texture coordinate is used. +See _cmnd(TexGen). +.TP +_const(TEXTURE_GEN_R) +If enabled, +the \f2r\fP texture coordinate is computed using +the texture generation function defined with _cmnd(TexGen). +Otherwise, the current \f2r\fP texture coordinate is used. +See _cmnd(TexGen). +.TP +_const(TEXTURE_GEN_S) +If enabled, +the \f2s\fP texture coordinate is computed using +the texture generation function defined with _cmnd(TexGen). +Otherwise, the current \f2s\fP texture coordinate is used. +See _cmnd(TexGen). +.TP +_const(TEXTURE_GEN_T) +If enabled, +the \f2t\fP texture coordinate is computed using +the texture generation function defined with _cmnd(TexGen). +Otherwise, the current \f2t\fP texture coordinate is used. +See _cmnd(TexGen). +.SH NOTES +_const(POLYGON_OFFSET_FILL), _const(POLYGON_OFFSET_LINE), +_const(POLYGON_OFFSET_POINT), +_const(COLOR_LOGIC_OP), and _const(INDEX_LOGIC_OP) are available +only if the GL version is 1.1 or greater. +.P +_const(RESCALE_NORMAL), and _const(TEXTURE_3D) are available only if the +GL version is 1.2 or greater. +.P +_const(COLOR_TABLE), _const(CONVOLUTION_1D), _const(CONVOLUTION_2D), +_const(HISTOGRAM), _const(MINMAX), +_const(POST_COLOR_MATRIX_COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), and +_const(SEPARABLE_2D) are available only if _arbstring(imaging) is returned +from _cmnd(Get) with an argument of _const(EXTENSIONS). +.P +If _arbstring(multitexture) is supported, _const(TEXTURE_1D), +_const(TEXTURE_2D), _const(TEXTURE_3D), _const(TEXTURE_GEN_S), +_const(TEXTURE_GEN_T), _const(TEXTURE_GEN_R), and _const(TEXTURE_GEN_Q) +enable or disable the respective state for the active texture unit +specified with _cmnd(ActiveTextureARB). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not one of the values +listed previously. +.P +_const(INVALID_OPERATION) is generated if _cmnd(Enable) or _cmnd(Disable) +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(AlphaFunc), +_cmnd(BlendFunc), +_cmnd(ClipPlane), +_cmnd(ColorMaterial), +_cmnd(CullFace), +_cmnd(DepthFunc), +_cmnd(DepthRange), +_cmnd(EnableClientState), +_cmnd(Fog), +_cmnd(Get), +_cmnd(IsEnabled), +_cmnd(Light), +_cmnd(LightModel), +_cmnd(LineWidth), +_cmnd(LineStipple), +_cmnd(LogicOp), +_cmnd(Map1), +_cmnd(Map2), +_cmnd(Material), +_cmnd(Normal), +_cmnd(PointSize), +_cmnd(PolygonMode), +_cmnd(PolygonOffset), +_cmnd(PolygonStipple), +_cmnd(Scissor), +_cmnd(StencilFunc), +_cmnd(StencilOp), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/enableclientstate.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/enableclientstate.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/enableclientstate.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,135 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ A real line follows. +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ Use GL not OpenGL +_C_ Don't change the ordering of the main headers. +_C_ C specification (or fortran) is handled automatically +_C_ .TH is automatically added to the top of this file. +_C_ Below, use current tense, active do not capitalize the first word and dont +_C_ use a period. +_header(EnableClientState, enable or disable client-side capability) +_names(EnableClientState) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the capability to enable. +Symbolic constants +_const(COLOR_ARRAY), +_const(EDGE_FLAG_ARRAY), +_const(INDEX_ARRAY), +_const(NORMAL_ARRAY), +_const(TEXTURE_COORD_ARRAY), and +_const(VERTEX_ARRAY) +are accepted. +_names(DisableClientState) +.SH PARAMETERS +_phead(_param1) +Specifies the capability to disable. +.SH DESCRIPTION +_cmnd and _cmnd(DisableClientState) +enable or disable individual client-side capabilities. By default, all +client-side capabilities are disabled. +Both +_cmnd(EnableClientState) and _cmnd(DisableClientState) take a +single argument, _param1, which can assume one of the following +values: +.TP 25 +_const(COLOR_ARRAY) +If enabled, the color array is enabled for writing and used during +rendering when _cmnd(ArrayElement), _cmnd(DrawArrays), +_cmnd(DrawElement), or _cmnd(DrawRangeElements) is called. See +_cmnd(ColorPointer). +.TP +_const(EDGE_FLAG_ARRAY) +If enabled, the edge flag array is enabled for writing and used during +rendering when _cmnd(ArrayElement), _cmnd(DrawArrays), +_cmnd(DrawElement), or _cmnd(DrawRangeElements) is called. See +_cmnd(EdgeFlagPointer). +.TP +_const(INDEX_ARRAY) +If enabled, the index array is enabled for writing and used during +rendering when _cmnd(ArrayElement), _cmnd(DrawArrays), +_cmnd(DrawElement), or _cmnd(DrawRangeElements) is called. See +_cmnd(IndexPointer). +.TP +_const(NORMAL_ARRAY) +If enabled, the normal array is enabled for writing and used during +rendering when _cmnd(ArrayElement), _cmnd(DrawArrays), +_cmnd(DrawElement), or _cmnd(DrawRangeElements) is called. See +_cmnd(NormalPointer). +.TP +_const(TEXTURE_COORD_ARRAY) +If enabled, the texture coordinate array is enabled for writing and used during +rendering when _cmnd(ArrayElement), _cmnd(DrawArrays), +_cmnd(DrawElement), or _cmnd(DrawRangeElements) is called. See +_cmnd(TexCoordPointer). +.TP +_const(VERTEX_ARRAY) +If enabled, the vertex array is enabled for writing and used during +rendering when _cmnd(ArrayElement), _cmnd(DrawArrays), +_cmnd(DrawElement), or _cmnd(DrawRangeElements) is called. See +_cmnd(VertexPointer). +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +If _arbstring(multitexture) is supported, enabling and disabling +_const(TEXTURE_COORD_ARRAY) affects the active client texture unit. +The active client texture unit is controlled with +_cmnd(ClientActiveTextureARB). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_cmnd is not allowed between the execution of _cmnd(Begin) and the +corresponding _cmnd(End), but an error may or may not be generated. If +no error is generated, the behavior is undefined. +.SH SEE ALSO +_cmnd(ArrayElement), +_cmnd(ClientActiveTextureARB), +_cmnd(ColorPointer), +_cmnd(DrawArrays), +_cmnd(DrawElements), +_cmnd(EdgeFlagPointer), +_cmnd(Enable), +_cmnd(GetPointerv), +_cmnd(IndexPointer), +_cmnd(InterleavedArrays), +_cmnd(NormalPointer), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/evalcoord.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/evalcoord.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/evalcoord.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,209 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(EvalCoord,evaluate enabled one- and two-dimensional maps) +.EQ +delim $$ +.EN +_names(EvalCoord,[1-2][fd]) +.SH PARAMETERS +_phead(_param1) +Specifies a value that is the domain coordinate $u$ to the basis function +defined in a previous _cmnd(Map1) or _cmnd(Map2) command. +_phead(_param2) +Specifies a value that is the domain coordinate $v$ to the basis function +defined in a previous _cmnd(Map2) command. +This argument is not present in a _cmnd(EvalCoord1) command. +_names(EvalCoord,[1-2][fd]v) +.SH PARAMETERS +_phead(_param1) +Specifies a pointer to an array containing +either one or two domain coordinates. +The first coordinate is $u$. +The second coordinate is $v$, +which is present only in _cmnd(EvalCoord2) versions. +.SH DESCRIPTION +_cmnd(EvalCoord1) evaluates enabled one-dimensional maps at argument +_param1(1). +_cmnd(EvalCoord2) does the same for two-dimensional maps using +two domain values, +_param1(1) and _param2(1). +To define a map, call _cmnd(Map1) and _cmnd(Map2); to enable and +disable it, call _cmnd(Enable) and _cmnd(Disable). +.P +When one of the _cmnd(EvalCoord) commands is issued, +all currently enabled maps of the indicated dimension are evaluated. +Then, +for each enabled map, +it is as if the corresponding GL command had been issued with the +computed value. +That is, +if _const(MAP1_INDEX) or +_const(MAP2_INDEX) is enabled, +a _cmnd(Index) command is simulated. +If _const(MAP1_COLOR_4) or +_const(MAP2_COLOR_4) is enabled, +a _cmnd(Color) command is simulated. +If _const(MAP1_NORMAL) or _const(MAP2_NORMAL) is enabled, +a normal vector is produced, +and if any of +_const(MAP1_TEXTURE_COORD_1), +_const(MAP1_TEXTURE_COORD_2), +_const(MAP1_TEXTURE_COORD_3), +_const(MAP1_TEXTURE_COORD_4), +_const(MAP2_TEXTURE_COORD_1), +_const(MAP2_TEXTURE_COORD_2), +_const(MAP2_TEXTURE_COORD_3), or +_const(MAP2_TEXTURE_COORD_4) is enabled, then an appropriate _cmnd(TexCoord) command is simulated. +.P +For color, +color index, +normal, +and texture coordinates the GL uses evaluated values instead of current values for those evaluations +that are enabled, +and current values otherwise, +However, +the evaluated values do not update the current values. +Thus, if _cmnd(Vertex) commands are interspersed with _cmnd(EvalCoord) +commands, the color, +normal, +and texture coordinates associated with the _cmnd(Vertex) commands are not +affected by the values generated by the _cmnd(EvalCoord) commands, +but only by the most recent +_cmnd(Color), +_cmnd(Index), +_cmnd(Normal), and +_cmnd(TexCoord) commands. +.P +No commands are issued for maps that are not enabled. +If more than one texture evaluation is enabled for a particular dimension +(for example, _const(MAP2_TEXTURE_COORD_1) and +_const(MAP2_TEXTURE_COORD_2)), +then only the evaluation of the map that produces the larger +number of coordinates +(in this case, _const(MAP2_TEXTURE_COORD_2)) +is carried out. +_const(MAP1_VERTEX_4) overrides _const(MAP1_VERTEX_3), +and +_const(MAP2_VERTEX_4) overrides _const(MAP2_VERTEX_3), +in the same manner. +If neither a three- nor a four-component vertex map is enabled for the +specified dimension, +the _cmnd(EvalCoord) command is ignored. +.P +If you have enabled automatic normal generation, +by calling _cmnd(Enable) with argument _const(AUTO_NORMAL), +_cmnd(EvalCoord2) generates surface normals analytically, +regardless of the contents or enabling of the _const(MAP2_NORMAL) map. +Let +.sp +.ce +.EQ +bold m ~=~ {partial bold p} over {partial u} ~times~ + {partial bold p} over {partial v} +.EN +.ce 0 +.sp +.br +Then the generated normal $ bold n $ is +.br +.ce +$bold n ~=~ bold m over { || bold m || }$ +.ce 0 +.sp +.br +If automatic normal generation is disabled, +the corresponding normal map _const(MAP2_NORMAL), +if enabled, +is used to produce a normal. +If neither automatic normal generation nor a normal map is enabled, +no normal is generated for +_cmnd(EvalCoord2) commands. +.SH ASSOCIATED GETS +.nf +_cmnd(IsEnabled) with argument _const(MAP1_VERTEX_3) +.br +_cmnd(IsEnabled) with argument _const(MAP1_VERTEX_4) +.br +_cmnd(IsEnabled) with argument _const(MAP1_INDEX) +.br +_cmnd(IsEnabled) with argument _const(MAP1_COLOR_4) +.br +_cmnd(IsEnabled) with argument _const(MAP1_NORMAL) +.br +_cmnd(IsEnabled) with argument _const(MAP1_TEXTURE_COORD_1) +.br +_cmnd(IsEnabled) with argument _const(MAP1_TEXTURE_COORD_2) +.br +_cmnd(IsEnabled) with argument _const(MAP1_TEXTURE_COORD_3) +.br +_cmnd(IsEnabled) with argument _const(MAP1_TEXTURE_COORD_4) +.br +_cmnd(IsEnabled) with argument _const(MAP2_VERTEX_3) +.br +_cmnd(IsEnabled) with argument _const(MAP2_VERTEX_4) +.br +_cmnd(IsEnabled) with argument _const(MAP2_INDEX) +.br +_cmnd(IsEnabled) with argument _const(MAP2_COLOR_4) +.br +_cmnd(IsEnabled) with argument _const(MAP2_NORMAL) +.br +_cmnd(IsEnabled) with argument _const(MAP2_TEXTURE_COORD_1) +.br +_cmnd(IsEnabled) with argument _const(MAP2_TEXTURE_COORD_2) +.br +_cmnd(IsEnabled) with argument _const(MAP2_TEXTURE_COORD_3) +.br +_cmnd(IsEnabled) with argument _const(MAP2_TEXTURE_COORD_4) +.br +_cmnd(IsEnabled) with argument _const(AUTO_NORMAL) +.br +_cmnd(GetMap) +.SH SEE ALSO +_cmnd(Begin), +_cmnd(Color), +_cmnd(Enable), +_cmnd(EvalMesh), +_cmnd(EvalPoint), +_cmnd(Index), +_cmnd(Map1), +_cmnd(Map2), +_cmnd(MapGrid), +_cmnd(Normal), +_cmnd(TexCoord), +_cmnd(Vertex) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/evalmesh.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/evalmesh.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/evalmesh.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,190 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(EvalMesh, compute a one- or two-dimensional grid of points or lines) +_names(EvalMesh1) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +In _cmnd(EvalMesh1), specifies whether to compute a one-dimensional mesh of points or lines. +Symbolic constants +_const(POINT) and +_const(LINE) are accepted. +_phead(_param2 _param3) +Specify the first and last integer values for grid domain variable $i$. +_names(EvalMesh2) +.SH PARAMETERS +_phead(_param1) +In _cmnd(EvalMesh2), specifies whether to compute a two-dimensional mesh of points, lines, +or polygons. +Symbolic constants +_const(POINT), +_const(LINE), and +_const(FILL) are accepted. +_phead(_param2 _param3) +Specify the first and last integer values for grid domain variable $i$. +_phead(_param4 _param5) +Specify the first and last integer values for grid domain variable $j$. +.SH DESCRIPTION +_cmnd(MapGrid) and _cmnd are used in tandem to efficiently +generate and evaluate a series of evenly-spaced map domain values. +_cmnd steps through the integer domain of a one- or two-dimensional grid, +whose range is the domain of the evaluation maps specified by +_cmnd(Map1) and _cmnd(Map2). +_param1(1) determines whether the resulting vertices are connected as +points, +lines, +or filled polygons. +.P +In the one-dimensional case, +_cmnd(EvalMesh1), +the mesh is generated as if the following code fragment were executed: +.nf +.IP +\f7 +glBegin( \f2type\f7 ); +for ( i = _param2; i <= _param3; i += 1 ) + glEvalCoord1( i$^cdot^DELTA u ~+~ u sub 1$ ); +glEnd(); +\fP +.RE +.fi +where +.sp +.in +$ DELTA u ~=~ (u sub 2 ~-~ u sub 1 ) ^/^ n$ +.sp +.in 0 +.P +and $n$, $u sub 1$, and $u sub 2$ are the arguments to the most recent +_cmnd(MapGrid1) command. +\f2type\fP is _const(POINTS) if _param1(1) is _const(POINT), +or _const(LINES) if _param1(1) is _const(LINE). +.P +The one absolute numeric requirement is that if $i ~=~ n$, then the +value computed from $ i^cdot^DELTA u ~+~ u sub 1$ is exactly $u sub 2$. +.P +In the two-dimensional case, _cmnd(EvalMesh2), let +.nf +.IP +$ DELTA u ~=~ mark ( u sub 2 ~-~ u sub 1 ) ^/^ n$ +.sp +$ DELTA v ~=~ lineup ( v sub 2 ~-~ v sub 1 ) ^/^ m$, +.fi +.RE +.P +where $n$, $u sub 1$, $u sub 2$, $m$, $v sub 1$, and $v sub 2$ are the +arguments to the most recent _cmnd(MapGrid2) command. Then, if +_param1(2) is _const(FILL), the _cmnd(EvalMesh2) command is equivalent +to: +.nf +.IP +\f7 +for ( j = _param4; j < _param5; j += 1 ) { + glBegin( GL_QUAD_STRIP ); + for ( i = _param2; i <= _param3; i += 1 ) { + glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); + glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, (j+1)$^cdot^DELTA v ~+~ v sub 1$ ); + } + glEnd(); +} +\fP +.RE +.fi +.P +If _param1 is _const(LINE), then a call to _cmnd(EvalMesh2) is equivalent to: +.nf +.IP +\f7 +for ( j = _param4; j <= _param5; j += 1 ) { + glBegin( GL_LINE_STRIP ); + for ( i = _param2; i <= _param3; i += 1 ) + glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); + glEnd(); +} +.sp +for ( i = _param2; i <= _param3; i += 1 ) { + glBegin( GL_LINE_STRIP ); + for ( j = _param4; j <= _param4; j += 1 ) + glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1 $ ); + glEnd(); +} +\fP +.RE +.fi +.P +And finally, if _param1 is _const(POINT), then a call to +_cmnd(EvalMesh2) is equivalent to: +.nf +.IP +\f7 +glBegin( GL_POINTS ); +for ( j = _param4; j <= _param5; j += 1 ) + for ( i = _param2; i <= _param3; i += 1 ) + glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); +glEnd(); +\fP +.RE +.fi +.P +In all three cases, the only absolute numeric requirements are that if $i~=~n$, +then the value computed from $i^cdot^DELTA u ~+~ u sub 1$ is exactly $u +sub 2$, and if $j~=~m$, then the value computed from +$j ^cdot^ DELTA v ~+~ v sub 1$ is exactly $v sub 2$. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MAP1_GRID_DOMAIN) +.br +_cmnd(Get) with argument _const(MAP2_GRID_DOMAIN) +.br +_cmnd(Get) with argument _const(MAP1_GRID_SEGMENTS) +.br +_cmnd(Get) with argument _const(MAP2_GRID_SEGMENTS) +.SH SEE ALSO +_cmnd(Begin), +_cmnd(EvalCoord), +_cmnd(EvalPoint), +_cmnd(Map1), +_cmnd(Map2), +_cmnd(MapGrid) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/evalpoint.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/evalpoint.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/evalpoint.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,112 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(EvalPoint,generate and evaluate a single point in a mesh) +_names(EvalPoint,[12]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the integer value for grid domain variable $i$. +_phead(_param2) +Specifies the integer value for grid domain variable $j$ +(_cmnd(EvalPoint2) only). +.SH DESCRIPTION +_cmnd(MapGrid) and _cmnd(EvalMesh) are used in tandem to efficiently +generate and evaluate a series of evenly spaced map domain values. +_cmnd can be used to evaluate a single grid point in the same gridspace +that is traversed by _cmnd(EvalMesh). +Calling _cmnd(EvalPoint1) is equivalent to calling +.nf +.IP +\f7 +glEvalCoord1( i$^cdot^DELTA u ~+~ u sub 1$ ); +\fP +.RE +.fi +where +.sp +.in +$DELTA u ~=~ ( u sub 2 - u sub 1 ) ^/^ n$ +.in 0 +.sp +.P +and $n$, $u sub 1$, and $u sub 2$ +are the arguments to the most recent _cmnd(MapGrid1) command. +The one absolute numeric requirement is that if $i~=~n$, +then the value computed from +$i ^cdot^ DELTA u ~+~ u sub 1$ is exactly $u sub 2$. +.P +In the two-dimensional case, _cmnd(EvalPoint2), let +.nf +.IP +$DELTA u ~=~ mark ( u sub 2 - u sub 1 ) ^/^ n$ +.sp +$DELTA v ~=~ mark ( v sub 2 - v sub 1 ) ^/^ m,$ +.RE +.fi +.P +where $n$, $u sub 1$, $u sub 2$, $m$, $v sub 1$, and $v sub 2$ +are the arguments to the most recent _cmnd(MapGrid2) command. +Then the _cmnd(EvalPoint2) command is equivalent to calling +.nf +.IP +\f7 +glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); +\fP +.RE +.fi +The only absolute numeric requirements are that if $i~=~n$, +then the value computed from +$i ^cdot^DELTA u ~+~ u sub 1$ is exactly $u sub 2$, +and if $j~=~m$, then the value computed from +$i ^cdot^DELTA v ~+~ v sub 1$ is exactly $v sub 2$. +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MAP1_GRID_DOMAIN) +.br +_cmnd(Get) with argument _const(MAP2_GRID_DOMAIN) +.br +_cmnd(Get) with argument _const(MAP1_GRID_SEGMENTS) +.br +_cmnd(Get) with argument _const(MAP2_GRID_SEGMENTS) +.SH SEE ALSO +_cmnd(EvalCoord), +_cmnd(EvalMesh), +_cmnd(Map1), +_cmnd(Map2), +_cmnd(MapGrid) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/feedbackbuffer.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/feedbackbuffer.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/feedbackbuffer.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,238 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(FeedbackBuffer,controls feedback mode) +_names(FeedbackBuffer) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the maximum number of values that can be written into _param3. +_phead(_param2) +Specifies a symbolic constant that describes the information +that will be returned for each vertex. +_const(2D), +_const(3D), +_const(3D_COLOR), +_const(3D_COLOR_TEXTURE), and +_const(4D_COLOR_TEXTURE) are accepted. +_phead(_param3) +Returns the feedback data. +.SH DESCRIPTION +The _cmnd function controls feedback. +Feedback, like selection, is a GL mode. +The mode is selected by calling +_cmnd(RenderMode) with _const(FEEDBACK). +When the GL is in feedback mode, +no pixels are produced by rasterization. +Instead, information about primitives that would have been +rasterized is fed back to the application using the GL. +.P +_cmnd has three arguments: +_param3 is a pointer to an array of floating-point values +into which feedback information is placed. +_param1 indicates the size of the array. +_param2 is a symbolic constant describing the information +that is fed back for each vertex. +_cmnd must be issued before feedback mode is enabled +(by calling _cmnd(RenderMode) with argument _const(FEEDBACK)). +Setting _const(FEEDBACK) without establishing the feedback buffer, +or calling _cmnd while the GL is in feedback mode, +is an error. +.P +When _cmnd(RenderMode) is called while in feedback mode, it returns the number of entries +placed in the feedback array, and resets the feedback array pointer to the base +of the feedback buffer. The returned value never exceeds _param1. If the feedback +data required more room than was available in _param3, +_cmnd(RenderMode) returns a negative value. +To take the GL out of feedback mode, call +_cmnd(RenderMode) with a parameter value other than _const(FEEDBACK). +.P +While in feedback mode, +each primitive, bitmap, or pixel rectangle that would be rasterized +generates a block of values that are copied into the feedback array. +If doing so would cause the number of entries to exceed the maximum, +the block is partially written so as to fill the array +(if there is any room left at all), +and an overflow flag is set. +Each block begins with a code indicating the primitive type, +followed by values that describe the primitive's vertices and +associated data. +Entries are also written for bitmaps and pixel rectangles. +Feedback occurs after polygon culling and _cmnd(PolygonMode) interpretation +of polygons has taken place, +so polygons that are culled are not returned in the feedback buffer. +It can also occur after polygons with more than three edges are broken up +into triangles, +if the GL implementation renders polygons by performing this decomposition. +.P +The _cmnd(PassThrough) command can be used to insert a marker +into the feedback buffer. +See _cmnd(PassThrough). +.P +Following is the grammar for the blocks of values written +into the feedback buffer. +Each primitive is indicated with a unique identifying value +followed by some number of vertices. +Polygon entries include an integer value indicating how many vertices follow. +A vertex is fed back as some number of floating-point values, +as determined by _param2. +Colors are fed back as four values in RGBA mode and one value +in color index mode. +.RS +.na +.sp +feedbackList \(<- feedbackItem feedbackList | feedbackItem +.sp +feedbackItem \(<- point | lineSegment | polygon | bitmap | pixelRectangle | passThru +.sp +point \(<- _const(POINT_TOKEN) vertex +.sp +lineSegment \(<- _const(LINE_TOKEN) vertex vertex | _const(LINE_RESET_TOKEN) vertex vertex +.sp +polygon \(<- _const(POLYGON_TOKEN) n polySpec +.sp +polySpec \(<- polySpec vertex | vertex vertex vertex +.sp +bitmap \(<- _const(BITMAP_TOKEN) vertex +.sp +pixelRectangle \(<- _const(DRAW_PIXEL_TOKEN) vertex | _const(COPY_PIXEL_TOKEN) vertex +.sp +passThru \(<- _const(PASS_THROUGH_TOKEN) value +.sp +vertex \(<- 2d | 3d | 3dColor | 3dColorTexture | 4dColorTexture +.sp +2d \(<- value value +.sp +3d \(<- value value value +.sp +3dColor \(<- value value value color +.sp +3dColorTexture \(<- value value value color tex +.sp +4dColorTexture \(<- value value value value color tex +.sp +color \(<- rgba | index +.sp +rgba \(<- value value value value +.sp +index \(<- value +.sp +tex \(<- value value value value +.sp +.RE +.P +.I value +is a floating-point number, +and +.I n +is a floating-point integer giving the number of vertices in the polygon. +_const(POINT_TOKEN), +_const(LINE_TOKEN), +_const(LINE_RESET_TOKEN), +_const(POLYGON_TOKEN), +_const(BITMAP_TOKEN), +_const(DRAW_PIXEL_TOKEN), +_const(COPY_PIXEL_TOKEN) and +_const(PASS_THROUGH_TOKEN) are symbolic floating-point constants. +_const(LINE_RESET_TOKEN) is returned whenever the line stipple pattern +is reset. +The data returned as a vertex depends on the feedback _param2. +.P +The following table gives the correspondence between _param2 +and the number of values per vertex. +\f2k\fP is 1 in color index mode and 4 in RGBA mode. +.sp +.ne +.TS +center tab(:); +lb lb cb cb cb +l l c c c. +_ +Type:Coordinates:Color:Texture:Total Number of Values +_ +_const(2D):\f2x\fP, \f2y\fP:::2 +_const(3D):\f2x\fP, \f2y\fP, \f2z\fP:::3 +_const(3D_COLOR):\f2x\fP, \f2y\fP, \f2z\fP:$k$::$3 ~+~ k$ +_const(3D_COLOR_TEXTURE):\f2x\fP, \f2y\fP, \f2z\fP,:$k$:4:$7 ~+~ k$ +_const(4D_COLOR_TEXTURE):\f2x\fP, \f2y\fP, \f2z\fP, \f2w\fP:$k$:4:$8 ~+~ k$ +_ +.TE + +.P +Feedback vertex coordinates are in window coordinates, +except \f2w\fP, +which is in clip coordinates. +Feedback colors are lighted, if lighting is enabled. +Feedback texture coordinates are generated, +if texture coordinate generation is enabled. +They are always transformed by the texture matrix. +.SH NOTES +_cmnd, when used in a display list, is not compiled into the display list +but is executed immediately. +.P +When the _arbstring(multitexture) extension is supported, _cmnd +returns only the texture coordinates of texture unit _arbconst(TEXTURE0). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param2 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param1 is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd is called while the +render mode is _const(FEEDBACK), +or if _cmnd(RenderMode) is called with argument _const(FEEDBACK) before +_cmnd is called at least once. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(RENDER_MODE) +.br +_cmnd(Get) with argument _const(FEEDBACK_BUFFER_POINTER) +.br +_cmnd(Get) with argument _const(FEEDBACK_BUFFER_SIZE) +.br +_cmnd(Get) with argument _const(FEEDBACK_BUFFER_TYPE) +.SH SEE ALSO +_cmnd(Begin), +_cmnd(LineStipple), +_cmnd(PassThrough), +_cmnd(PolygonMode), +_cmnd(RenderMode), +_cmnd(SelectBuffer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/finish.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/finish.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/finish.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,54 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Finish,block until all GL execution is complete) +_names(Finish) +.SH DESCRIPTION +_cmnd does not return until the effects of all previously +called GL commands are complete. +Such effects include all changes to GL state, +all changes to connection state, +and all changes to the frame buffer contents. +.SH NOTES +_cmnd requires a round trip to the server. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd is executed between +the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(Flush) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/flush.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/flush.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/flush.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,66 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Flush,force execution of GL commands in finite time) +_names(Flush) +.SH DESCRIPTION +Different GL implementations buffer commands in several different locations, +including network buffers and the graphics accelerator itself. +_cmnd empties all of these buffers, +causing all issued commands to be executed as quickly as +they are accepted by the actual rendering engine. +Though this execution may not be completed in any particular +time period, +it does complete in finite time. +.P +Because any GL program might be executed over a network, +or on an accelerator that buffers commands, +all programs should call _cmnd whenever they count on having +all of their previously issued commands completed. +For example, +call _cmnd before waiting for user input that depends on +the generated image. +.SH NOTES +_cmnd can return at any time. +It does not wait until the execution of all previously +issued GL commands is complete. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(Finish) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/fog.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/fog.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/fog.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,203 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Fog,specify fog parameters) +_names(Fog,[fi]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a single-valued fog parameter. +_const(FOG_MODE), +_const(FOG_DENSITY), +_const(FOG_START), +_const(FOG_END), +and +_const(FOG_INDEX) +are accepted. +_phead(_param2) +Specifies the value that _param1 will be set to. +_names(Fog,[fi]v) +.SH PARAMETERS +_phead(_param1) +Specifies a fog parameter. +_const(FOG_MODE), +_const(FOG_DENSITY), +_const(FOG_START), +_const(FOG_END), +_const(FOG_INDEX), +and +_const(FOG_COLOR) +are accepted. +_phead(_param2) +Specifies the value or values to be assigned to _param1. +_const(FOG_COLOR) requires an array of four values. +All other parameters accept an array containing only a single value. +.SH DESCRIPTION +Fog is initially disabled. +While enabled, fog affects rasterized geometry, +bitmaps, and pixel blocks, but not buffer clear operations. To enable +and disable fog, call _cmnd(Enable) and _cmnd(Disable) with argument +_const(FOG). +.P +_cmnd assigns the value or values in _param2 to the fog parameter +specified by _param1. +The following values are accepted for _param1: +.TP 20 +_const(FOG_MODE) +_param2 is a single integer or floating-point value that specifies +the equation to be used to compute the fog blend factor, $f$. +Three symbolic constants are accepted: +_const(LINEAR), +_const(EXP), +and _const(EXP2). +The equations corresponding to these symbolic constants are defined below. +The initial fog mode is _const(EXP). +.TP +_const(FOG_DENSITY) +_param2 is a single integer or floating-point value that specifies $density$, +the fog density used in both exponential fog equations. +Only nonnegative densities are accepted. +The initial fog density is 1. +.TP +_const(FOG_START) +_param2 is a single integer or floating-point value that specifies $start$, +the near distance used in the linear fog equation. +The initial near distance is 0. +.TP +_const(FOG_END) +_param2 is a single integer or floating-point value that specifies $end$, +the far distance used in the linear fog equation. +The initial far distance is 1. +.TP +_const(FOG_INDEX) +_param2 is a single integer or floating-point value that specifies +$i sub f$, +the fog color index. +The initial fog index is 0. +.TP +_const(FOG_COLOR) +_param2 contains four integer or floating-point values that specify +$C sub f$, the fog color. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +After conversion, +all color components are clamped to the range [0,1]. +The initial fog color is (0, 0, 0, 0). +.P +Fog blends a fog color with each rasterized pixel fragment's posttexturing +color using a blending factor $f$. +Factor $f$ is computed in one of three ways, +depending on the fog mode. +Let $z$ be the distance in eye coordinates from the origin to the fragment +being fogged. +The equation for _const(LINEAR) fog is +.ce + +.EQ +f ~=~ {end ~-~ z} over {end ~-~ start} +.EN + +.RE +.P +The equation for _const(EXP) fog is +.ce + +.EQ +f ~=~ e sup {-^(density ~cdot~ z)} +.EN + +.P +The equation for _const(EXP2) fog is +.ce + +.EQ +f ~=~ e sup {-^(density ~cdot~ z)} sup 2 +.EN + +.P +Regardless of the fog mode, +$f$ is clamped to the range [0,\ 1] after it is computed. +Then, +if the GL is in RGBA color mode, +the fragment's red, green, and blue colors, represented by $C sub r$, +are replaced by +.sp +.ce +.EQ +{C sub r} sup prime ~=~ f^C sub r ~+~ (1 - f)^C sub f +.EN + +.sp +Fog does not affect a fragment's alpha component. +.P +In color index mode, the fragment's color index $i sub r$ is replaced by +.sp +.ce +.EQ +{i sub r} sup prime ~=~ i sub r ~+~ (1 - f)^i sub f +.EN +.P +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value, +or if _param1 is _const(FOG_MODE) and _param2 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param1 is _const(FOG_DENSITY), +and _param2 is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(IsEnabled) with argument _const(FOG) +.br +_cmnd(Get) with argument _const(FOG_COLOR) +.br +_cmnd(Get) with argument _const(FOG_INDEX) +.br +_cmnd(Get) with argument _const(FOG_DENSITY) +.br +_cmnd(Get) with argument _const(FOG_START) +.br +_cmnd(Get) with argument _const(FOG_END) +.br +_cmnd(Get) with argument _const(FOG_MODE) +.SH SEE ALSO +_cmnd(Enable) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/frontface.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/frontface.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/frontface.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,84 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(FrontFace,define front- and back-facing polygons) +_names(FrontFace) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the orientation of front-facing polygons. +_const(CW) and _const(CCW) are accepted. +The initial value is _const(CCW). +.SH DESCRIPTION +In a scene composed entirely of opaque closed surfaces, +back-facing polygons are never visible. +Eliminating these invisible polygons has the obvious benefit +of speeding up the rendering of the image. +To enable and disable elimination of back-facing polygons, call _cmnd(Enable) +and _cmnd(Disable) with argument _const(CULL_FACE). +.P +The projection of a polygon to window coordinates is said to have +clockwise winding if an imaginary object following the path +from its first vertex, +its second vertex, +and so on, +to its last vertex, +and finally back to its first vertex, +moves in a clockwise direction about the interior of the polygon. +The polygon's winding is said to be counterclockwise if the imaginary +object following the same path moves in a counterclockwise direction +about the interior of the polygon. +_cmnd specifies whether polygons with clockwise winding in window coordinates, +or counterclockwise winding in window coordinates, +are taken to be front-facing. +Passing _const(CCW) to _param1 selects counterclockwise polygons as +front-facing; +_const(CW) selects clockwise polygons as front-facing. +By default, counterclockwise polygons are taken to be front-facing. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(FRONT_FACE) +.SH SEE ALSO +_cmnd(CullFace), +_cmnd(LightModel) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/frustum.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/frustum.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/frustum.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,143 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Frustum,multiply the current matrix by a perspective matrix) +_names(Frustum) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1 _param2) +Specify the coordinates for the left and right vertical clipping planes. +_phead(_param3 _param4) +Specify the coordinates for the bottom and top horizontal clipping planes. +_phead(_param5 _param6) +Specify the distances to the near and far depth clipping planes. +Both distances must be positive. +.SH DESCRIPTION +_cmnd describes a perspective matrix that produces a perspective projection. +The current matrix (see _cmnd(MatrixMode)) is multiplied by this matrix +and the result replaces the current matrix, as if +_cmnd(MultMatrix) were called with the following matrix +as its argument: +.P +.sp 5 +.ce +.EQ +down 150 +{left [ ~~~ { +down 165 matrix { + ccol { {{2 ~ _eqnparam5} over {_eqnparam2 ~-~ _eqnparam1}} above 0 above 0 above 0 } + ccol { 0 above {{2 ~ _eqnparam5} over {_eqnparam4 ~-~ _eqnparam3}} ~ above 0 above 0 } + ccol { A ~~~~ above B ~~~~ above C ~~~~ above -1 ~~~~} + ccol { 0 above 0 above D above 0} +}} +~~~ right ]} +.EN +.sp +.ce +.EQ +down 130 +{A ~=~ {_eqnparam2 ~+~ _eqnparam1} over {_eqnparam2 ~-~ _eqnparam1}} +.EN +.sp +.ce +.EQ +down 130 +{B ~=~ {_eqnparam4 ~+~ _eqnparam3} over {_eqnparam4 ~-~ _eqnparam3}} +.EN +.sp +.ce +.EQ +down 130 +{C ~=~ -{{_eqnparam6 ~+~ _eqnparam5} over {_eqnparam6 ~-~ _eqnparam5}}} +.EN +.sp +.ce +.EQ +down 130 +{D ~=~ -^{{2 ~ _eqnparam6 ~ _eqnparam5} over {_eqnparam6 ~-~ _eqnparam5}}} +.EN +.sp 2 +.P +Typically, the matrix mode is _const(PROJECTION), and +(_param1, _param3, \-_param5) and (_param2, _param4, \-_param5) +specify the points on the near clipping plane that are mapped +to the lower left and upper right corners of the window, +assuming that the eye is located at (0, 0, 0). +\-_param6 specifies the location of the far clipping plane. +Both _param5 and _param6 must be positive. +.P +Use _cmnd(PushMatrix) and _cmnd(PopMatrix) to save and restore +the current matrix stack. +.SH NOTES +Depth buffer precision is affected by the values specified for +_param5 and _param6. +The greater the ratio of _param6 to _param5 is, +the less effective the depth buffer will be at distinguishing between +surfaces that are near each other. +If +.sp +.ce +$r ~=~ _eqnparam6 over _eqnparam5$ +.sp +roughly $log sub 2 (r)$ bits of depth buffer precision are lost. +Because $r$ approaches infinity as _param5 approaches 0, +_param5 must never be set to 0. +.SH ERRORS +_const(INVALID_VALUE) is generated if _param5 or _param6 is not +positive, or if _param1 = _param2, or _param3 = _param4. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MATRIX_MODE) +.br +_cmnd(Get) with argument _const(MODELVIEW_MATRIX) +.br +_cmnd(Get) with argument _const(PROJECTION_MATRIX) +.br +_cmnd(Get) with argument _const(TEXTURE_MATRIX) +.br +_cmnd(Get) with argument _const(COLOR_MATRIX) +.SH SEE ALSO +_cmnd(Ortho), +_cmnd(MatrixMode), +_cmnd(MultMatrix), +_cmnd(PushMatrix), +_cmnd(Viewport) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/genlists.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/genlists.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/genlists.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,67 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GenLists,generate a contiguous set of empty display lists) +_names(GenLists) +.SH PARAMETERS +_phead(_param1) +Specifies the number of contiguous empty display lists +to be generated. +.SH DESCRIPTION +_cmnd has one argument, _param1. +It returns an integer \f2n\fP such that _param1 contiguous +empty display lists, +named \f2n\fP, \f2n\fP+1, ..., \f2n\fP+_param1 \-1, +are created. +If _param1 is 0, +if there is no group of _param1 contiguous names available, +or if any error is generated, +no display lists are generated, +and 0 is returned. +.SH ERRORS +_const(INVALID_VALUE) is generated if _param1 is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(IsList) +.SH SEE ALSO +_cmnd(CallList), +_cmnd(CallLists), +_cmnd(DeleteLists), +_cmnd(NewList) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/gentextures.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/gentextures.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/gentextures.gl Mon Jan 14 17:13:32 2002 @@ -0,0 +1,78 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GenTextures,generate texture names) +_names(GenTextures) +.SH PARAMETERS +_phead(_param1) +Specifies the number of texture names to be generated. +_phead(_param2) +Specifies an array in which the generated texture names are stored. +.SH DESCRIPTION +_cmnd returns _param1 texture names in _param2. +There is no guarantee that the names form a contiguous set of integers; +however, it is guaranteed that none of the returned names was in use +immediately before the call to _cmnd. +.P +The generated textures have no dimensionality; they assume the dimensionality +of the texture target to which they are first bound +(see _cmnd(BindTexture)). +.P +Texture names returned by a call to _cmnd are not returned by +subsequent calls, unless they are first deleted with +_cmnd(DeleteTextures). +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.SH ERRORS +_const(INVALID_VALUE) is generated if _param1 is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(IsTexture) +.SH SEE ALSO +_cmnd(BindTexture), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(DeleteTextures), +_cmnd(Get), +_cmnd(GetTexParameter), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/get.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/get.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/get.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,1792 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Get,return the value or values of a selected parameter) +_names(GetBooleanv) +_names(GetDoublev) +_names(GetFloatv) +_names(GetIntegerv) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the parameter value to be returned. +The symbolic constants in the list below are accepted. +_phead(_param2) +Returns the value or values of the specified parameter. +.SH DESCRIPTION +These four commands return values for simple state variables in GL. +_param1 is a symbolic constant indicating the state variable to be returned, +and _param2 is a pointer to an array of the indicated type in +which to place the returned data. +.P +Type conversion is performed if _param2 has a different type than +the state variable value being requested. +If _cmnd(GetBooleanv) is called, +a floating-point (or integer) value is converted to _const(FALSE) if +and only if it is 0.0 (or 0). +Otherwise, +it is converted to _const(TRUE). +If _cmnd(GetIntegerv) is called, boolean values are returned as +_const(TRUE) or _const(FALSE), and most floating-point values are +rounded to the nearest integer value. Floating-point colors and +normals, however, are returned with a linear mapping that maps 1.0 to +the most positive representable integer value, +and \-1.0 to the most negative representable integer value. +If _cmnd(GetFloatv) or _cmnd(GetDoublev) is called, +boolean values are returned as _const(TRUE) or _const(FALSE), +and integer values are converted to floating-point values. +.P +The following symbolic constants are accepted by _param1: +.TP 25 +_const(ACCUM_ALPHA_BITS) +_param2 returns one value, +the number of alpha bitplanes in the accumulation buffer. +.TP +_const(ACCUM_BLUE_BITS) +_param2 returns one value, +the number of blue bitplanes in the accumulation buffer. +.TP +_const(ACCUM_CLEAR_VALUE) +_param2 returns four values: +the red, green, blue, and alpha values used to clear the accumulation buffer. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is (0, 0, 0, 0). +See _cmnd(ClearAccum). +.TP +_const(ACCUM_GREEN_BITS) +_param2 returns one value, +the number of green bitplanes in the accumulation buffer. +.TP +_const(ACCUM_RED_BITS) +_param2 returns one value, +the number of red bitplanes in the accumulation buffer. +.TP +_arbconst(ACTIVE_TEXTURE) +_param2 returns a single value indicating the active multitexture unit. +The initial value is _arbconst(TEXTURE0). +See _cmnd(ActiveTextureARB). +.TP +_const(ALIASED_POINT_SIZE_RANGE) +_param2 returns two values, +the smallest and largest supported sizes for aliased points. +.TP +_const(ALIASED_LINE_WIDTH_RANGE) +_param2 returns two values, +the smallest and largest supported widths for aliased lines. +.TP +_const(ALPHA_BIAS) +_param2 returns one value, +the alpha bias factor used during pixel transfers. The initial value is 0. +See _cmnd(PixelTransfer). +.TP +_const(ALPHA_BITS) +_param2 returns one value, +the number of alpha bitplanes in each color buffer. +.TP +_const(ALPHA_SCALE) +_param2 returns one value, +the alpha scale factor used during pixel transfers. The initial value is 1. +See _cmnd(PixelTransfer). +.TP +_const(ALPHA_TEST) +_param2 returns a single boolean value indicating whether alpha testing +of fragments is enabled. The initial value is _const(FALSE). +See _cmnd(AlphaFunc). +.TP +_const(ALPHA_TEST_FUNC) +_param2 returns one value, +the symbolic name of the alpha test function. The initial value is +_const(ALWAYS). +See _cmnd(AlphaFunc). +.TP +_const(ALPHA_TEST_REF) +_param2 returns one value, +the reference value for the alpha test. The initial value is 0. +See _cmnd(AlphaFunc). +An integer value, +if requested, +is linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer value. +.TP +_const(ATTRIB_STACK_DEPTH) +_param2 returns one value, +the depth of the attribute stack. +If the stack is empty, +0 is returned. The initial value is 0. +See _cmnd(PushAttrib). +.TP +_const(AUTO_NORMAL) +_param2 returns a single boolean value indicating whether 2D map evaluation +automatically generates surface normals. The initial value is _const(FALSE). +See _cmnd(Map2). +.TP +_const(AUX_BUFFERS) +_param2 returns one value, +the number of auxiliary color buffers. The initial value is 0. +.TP +_const(BLEND) +_param2 returns a single boolean value indicating whether blending is +enabled. The initial value is _const(FALSE). +See _cmnd(BlendFunc). +.TP +_const(BLEND_COLOR) +_param2 returns four values, +the red, green, blue, and alpha values which are the components of +the blend color. +See _cmnd(BlendColor). +.TP +_const(BLEND_DST) +_param2 returns one value, +the symbolic constant identifying the destination blend +function. The initial value is _const(ZERO). +See _cmnd(BlendFunc). +.TP +_const(BLEND_EQUATION) +_param2 returns one value, a symbolic constant indicating whether +the blend equation is _const(FUNC_ADD), _const(MIN) or +_const(MAX). See _cmnd(BlendEquation). +.TP +_const(BLEND_SRC) +_param2 returns one value, +the symbolic constant identifying the source blend function. The initial +value is _const(ONE). +See _cmnd(BlendFunc). +.TP +_const(BLUE_BIAS) +_param2 returns one value, +the blue bias factor used during pixel transfers. The initial value is 0. +See +_cmnd(PixelTransfer). +.TP +_const(BLUE_BITS) +_param2 returns one value, +the number of blue bitplanes in each color buffer. +.TP +_const(BLUE_SCALE) +_param2 returns one value, +the blue scale factor used during pixel transfers. The initial value is 1. +See +_cmnd(PixelTransfer). +.TP +_arbconst(CLIENT_ACTIVE_TEXTURE) +_param2 returns a single integer value indicating the current client active +multitexture unit. The initial value is _arbconst(TEXTURE0). +See _cmnd(ClientActiveTextureARB). +.TP +_const(CLIENT_ATTRIB_STACK_DEPTH) +_param2 returns one value indicating the depth of the +attribute stack. The initial value is 0. +See _cmnd(PushClientAttrib). +.TP +_const(CLIP_PLANE)\f2i\fP +_param2 returns a single boolean value indicating whether the specified +clipping plane is enabled. The initial value is _const(FALSE). +See _cmnd(ClipPlane). +.TP +_const(COLOR_ARRAY) +_param2 returns a single boolean value indicating whether the color array is enabled. The initial value is _const(FALSE). +See _cmnd(ColorPointer). +.TP +_const(COLOR_ARRAY_SIZE) +_param2 returns one value, +the number of components per color in the color array. The initial value +is 4. See _cmnd(ColorPointer). +.TP +_const(COLOR_ARRAY_STRIDE) +_param2 returns one value, +the byte offset between consecutive colors in the color array. The initial +value is 0. +See _cmnd(ColorPointer). +.TP +_const(COLOR_ARRAY_TYPE) +_param2 returns one value, +the data type of each component in the color array. The initial value +is _const(FLOAT). See _cmnd(ColorPointer). +.TP +_const(COLOR_CLEAR_VALUE) +_param2 returns four values: +the red, green, blue, and alpha values used to clear the color buffers. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is (0, 0, 0, 0). +See _cmnd(ClearColor). +.TP +_const(COLOR_LOGIC_OP) +_param2 returns a single boolean value indicating whether a fragment's +RGBA color values are merged into the framebuffer using a logical +operation. The initial value is _const(FALSE). +See _cmnd(LogicOp). +.TP +_const(COLOR_MATERIAL) +_param2 returns a single boolean value indicating whether one or more +material parameters are tracking the current color. The initial value +is _const(FALSE). +See _cmnd(ColorMaterial). +.TP +_const(COLOR_MATERIAL_FACE) +_param2 returns one value, +a symbolic constant indicating which materials have a parameter that is +tracking the current color. The initial value is _const(FRONT_AND_BACK). +See _cmnd(ColorMaterial). +.TP +_const(COLOR_MATERIAL_PARAMETER) +_param2 returns one value, +a symbolic constant indicating which material parameters are +tracking the current color. The initial value is +_const(AMBIENT_AND_DIFFUSE). +See _cmnd(ColorMaterial). +.TP +_const(COLOR_MATRIX) +_param2 returns sixteen values: +the color matrix on the top of the color matrix stack. Initially +this matrix is the identity matrix. See _cmnd(PushMatrix). +.TP +_const(COLOR_MATRIX_STACK_DEPTH) +_param2 returns one value, +the maximum supported depth of the projection matrix stack. The value must +be at least 2. +See _cmnd(PushMatrix). +.TP +_const(COLOR_TABLE) +_param2 returns a single boolean value indicating whether the color table +lookup is enabled. +See _cmnd(ColorTable). +.TP +_const(COLOR_WRITEMASK) +_param2 returns four boolean values: +the red, green, blue, and alpha write enables for the color +buffers. The initial value is (_const(TRUE), _const(TRUE), +_const(TRUE), _const(TRUE)). +See _cmnd(ColorMask). +.TP +_const(CONVOLUTION_1D) +_param2 returns a single boolean value indicating whether 1D convolution +is enabled. The initial value is _const(FALSE). +See _cmnd(ConvolutionFilter1D). +.TP +_const(CONVOLUTION_2D) +_param2 returns a single boolean value indicating whether 2D convolution +is enabled. The initial value is _const(FALSE). +See _cmnd(ConvolutionFilter2D). +.TP +_const(CULL_FACE) +_param2 returns a single boolean value indicating whether polygon culling +is enabled. The initial value is _const(FALSE). +See _cmnd(CullFace). +.TP +_const(CULL_FACE_MODE) +_param2 returns one value, +a symbolic constant indicating which polygon faces are to be +culled. The initial value is _const(BACK). +See _cmnd(CullFace). +.TP +_const(CURRENT_COLOR) +_param2 returns four values: +the red, green, blue, and alpha values of the current color. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer value. +See _cmnd(Color). The initial value is (1, 1, 1, 1). +.TP +_const(CURRENT_INDEX) +_param2 returns one value, +the current color index. The initial value is 1. +See _cmnd(Index). +.TP +_const(CURRENT_NORMAL) +_param2 returns three values: +the \f2x\fP, \f2y\fP, and \f2z\fP values of the current normal. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer value. +The initial value is (0, 0, 1). See _cmnd(Normal). +.TP +_const(CURRENT_RASTER_COLOR) +_param2 returns four values: +the red, green, blue, and alpha values of the current raster position. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is (1, 1, 1, 1). +See _cmnd(RasterPos). +.TP +_const(CURRENT_RASTER_DISTANCE) +_param2 returns one value, +the distance from the eye to the current raster position. The initial +value is 0. +See _cmnd(RasterPos). +.TP +_const(CURRENT_RASTER_INDEX) +_param2 returns one value, +the color index of the current raster position. The initial value is 1. +See _cmnd(RasterPos). +.TP +_const(CURRENT_RASTER_POSITION) +_param2 returns four values: +the \f2x\fP, \f2y\fP, \f2z\fP, and \f2w\fP components of the current +raster position. +\f2x\fP, \f2y\fP, and \f2z\fP are in window coordinates, +and \f2w\fP is in clip coordinates. The initial value is (0, 0, 0, 1). +See _cmnd(RasterPos). +.TP +_const(CURRENT_RASTER_POSITION_VALID) +_param2 returns a single boolean value indicating whether the current +raster position is valid. The initial value is _const(TRUE). +See _cmnd(RasterPos). +.TP +_const(CURRENT_RASTER_TEXTURE_COORDS) +_param2 returns four values: +the \f2s\fP, \f2t\fP, \f2r\fP, and \f2q\fP +current raster texture coordinates. The initial value is (0, 0, 0, 1). +See _cmnd(RasterPos) and _cmnd(TexCoord). +.TP +_const(CURRENT_TEXTURE_COORDS) +_param2 returns four values: +the \f2s\fP, \f2t\fP, \f2r\fP, and \f2q\fP current texture +coordinates. The initial value is (0, 0, 0, 1). +See +_cmnd(TexCoord). +.TP +_const(DEPTH_BIAS) +_param2 returns one value, +the depth bias factor used during pixel transfers. The initial value is 0. +See _cmnd(PixelTransfer). +.TP +_const(DEPTH_BITS) +_param2 returns one value, +the number of bitplanes in the depth buffer. +.TP +_const(DEPTH_CLEAR_VALUE) +_param2 returns one value, +the value that is used to clear the depth buffer. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is 1. +See _cmnd(ClearDepth). +.TP +_const(DEPTH_FUNC) +_param2 returns one value, +the symbolic constant that indicates the depth comparison +function. The initial value is _const(LESS). +See _cmnd(DepthFunc). +.TP +_const(DEPTH_RANGE) +_param2 returns two values: +the near and far mapping limits for the depth buffer. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is (0, 1). +See _cmnd(DepthRange). +.TP +_const(DEPTH_SCALE) +_param2 returns one value, +the depth scale factor used during pixel transfers. The initial value is 1. +See _cmnd(PixelTransfer). +.TP +_const(DEPTH_TEST) +_param2 returns a single boolean value indicating whether depth testing +of fragments is enabled. The initial value is _const(FALSE). +See _cmnd(DepthFunc) and _cmnd(DepthRange). +.TP +_const(DEPTH_WRITEMASK) +_param2 returns a single boolean value indicating if the depth buffer +is enabled for writing. The initial value is _const(TRUE). +See _cmnd(DepthMask). +.TP +_const(DITHER) +_param2 returns a single boolean value indicating whether dithering of +fragment colors and indices is enabled. The initial value is _const(TRUE). +.TP +_const(DOUBLEBUFFER) +_param2 returns a single boolean value indicating whether double buffering +is supported. +.TP +_const(DRAW_BUFFER) +_param2 returns one value, +a symbolic constant indicating which buffers are being drawn to. +See _cmnd(DrawBuffer). The initial value is _const(BACK) if there +are back buffers, otherwise it is _const(FRONT). +.TP +_const(EDGE_FLAG) +_param2 returns a single boolean value indicating whether the current +edge flag is _const(TRUE) or _const(FALSE). The initial value is _const(TRUE). +See _cmnd(EdgeFlag). +.TP +_const(EDGE_FLAG_ARRAY) +_param2 returns a single boolean value indicating whether the edge +flag array is enabled. The initial value is _const(FALSE). +See _cmnd(EdgeFlagPointer). +.TP +_const(EDGE_FLAG_ARRAY_STRIDE) +_param2 returns one value, +the byte offset between consecutive edge flags in the edge flag +array. The initial value is 0. +See _cmnd(EdgeFlagPointer). +.TP +_const(FEEDBACK_BUFFER_SIZE) +_param2 returns one value, the size of the feedback buffer. See +_cmnd(FeedbackBuffer). +.TP +_const(FEEDBACK_BUFFER_TYPE) +_param2 returns one value, the type of the feedback buffer. See +_cmnd(FeedbackBuffer). +.TP +_const(FOG) +_param2 returns a single boolean value indicating whether fogging is +enabled. The initial value is _const(FALSE). +See _cmnd(Fog). +.TP +_const(FOG_COLOR) +_param2 returns four values: +the red, green, blue, and alpha components of the fog color. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is (0, 0, 0, 0). +See _cmnd(Fog). +.TP +_const(FOG_DENSITY) +_param2 returns one value, +the fog density parameter. The initial value is 1. +See _cmnd(Fog). +.TP +_const(FOG_END) +_param2 returns one value, +the end factor for the linear fog equation. The initial value is 1. +See _cmnd(Fog). +.TP +_const(FOG_HINT) +_param2 returns one value, +a symbolic constant indicating the mode of the fog hint. The initial value +is _const(DONT_CARE). +See _cmnd(Hint). +.TP +_const(FOG_INDEX) +_param2 returns one value, +the fog color index. The initial value is 0. +See _cmnd(Fog). +.TP +_const(FOG_MODE) +_param2 returns one value, +a symbolic constant indicating which fog equation is selected. The initial +value is _const(EXP). +See _cmnd(Fog). +.TP +_const(FOG_START) +_param2 returns one value, +the start factor for the linear fog equation. The initial value is 0. +See _cmnd(Fog). +.TP +_const(FRONT_FACE) +_param2 returns one value, +a symbolic constant indicating whether clockwise or counterclockwise +polygon winding is treated as front-facing. The initial value is +_const(CCW). +See _cmnd(FrontFace). +.TP +_const(GREEN_BIAS) +_param2 returns one value, +the green bias factor used during pixel transfers. The initial value is 0. +.TP +_const(GREEN_BITS) +_param2 returns one value, +the number of green bitplanes in each color buffer. +.TP +_const(GREEN_SCALE) +_param2 returns one value, +the green scale factor used during pixel transfers. The initial value is 1. +See _cmnd(PixelTransfer). +.TP +_const(HISTOGRAM) +_param2 returns a single boolean value indicating whether histogram is +enabled. The initial value is _const(FALSE). +See _cmnd(Histogram). +.TP +_const(INDEX_ARRAY) +_param2 returns a single boolean value indicating whether the color +index array is enabled. The initial value is _const(FALSE). +See _cmnd(IndexPointer). +.TP +_const(INDEX_ARRAY_STRIDE) +_param2 returns one value, +the byte offset between consecutive color indexes in the color index +array. The initial value is 0. +See _cmnd(IndexPointer). +.TP +_const(INDEX_ARRAY_TYPE) +_param2 returns one value, +the data type of indexes in the color index array. The initial value is +_const(FLOAT). +See _cmnd(IndexPointer). +.TP +_const(INDEX_BITS) +_param2 returns one value, +the number of bitplanes in each color index buffer. +.TP +_const(INDEX_CLEAR_VALUE) +_param2 returns one value, +the color index used to clear the color index buffers. The initial value +is 0. +See _cmnd(ClearIndex). +.TP +_const(INDEX_LOGIC_OP) +_param2 returns a single boolean value indicating whether a fragment's index +values are merged into the framebuffer using a logical +operation. The initial value is _const(FALSE). +See _cmnd(LogicOp). +.TP +_const(INDEX_MODE) +_param2 returns a single boolean value indicating whether the GL is in +color index mode (_const(TRUE)) or RGBA mode (_const(FALSE)). +.TP +_const(INDEX_OFFSET) +_param2 returns one value, +the offset added to color and stencil indices during pixel +transfers. The initial value is 0. +See _cmnd(PixelTransfer). +.TP +_const(INDEX_SHIFT) +_param2 returns one value, +the amount that color and stencil indices are shifted during pixel +transfers. The initial value is 0. +See _cmnd(PixelTransfer). +.TP +_const(INDEX_WRITEMASK) +_param2 returns one value, +a mask indicating which bitplanes of each color index buffer can be +written. The initial value is all 1's. +See _cmnd(IndexMask). +.TP +_const(LIGHT)\f2i\fP +_param2 returns a single boolean value indicating whether the specified +light is enabled. The initial value is _const(FALSE). +See _cmnd(Light) and _cmnd(LightModel). +.TP +_const(LIGHTING) +_param2 returns a single boolean value indicating whether lighting is +enabled. The initial value is _const(FALSE). +See _cmnd(LightModel). +.TP +_const(LIGHT_MODEL_AMBIENT) +_param2 returns four values: +the red, green, blue, and alpha components of the ambient intensity of +the entire scene. +Integer values, +if requested, +are linearly mapped from the internal floating-point representation such +that 1.0 returns the most positive representable integer value, +and \-1.0 returns the most negative representable integer +value. The initial value is (0.2, 0.2, 0.2, 1.0). +See _cmnd(LightModel). +.TP +_const(LIGHT_MODEL_COLOR_CONTROL) +_param2 returns single enumerated value indicating whether specular +reflection calculations are separated from normal lighting computations. +The initial value is _const(SINGLE_COLOR). +.TP +_const(LIGHT_MODEL_LOCAL_VIEWER) +_param2 returns a single boolean value indicating whether specular reflection +calculations treat the viewer as being local to the scene. The initial +value is _const(FALSE). +See _cmnd(LightModel). +.TP +_const(LIGHT_MODEL_TWO_SIDE) +_param2 returns a single boolean value indicating whether separate materials +are used to compute lighting for front- and back-facing +polygons. The initial value is _const(FALSE). +See _cmnd(LightModel). +.TP +_const(LINE_SMOOTH) +_param2 returns a single boolean value indicating whether antialiasing of +lines is enabled. The initial value is _const(FALSE). +See _cmnd(LineWidth). +.TP +_const(LINE_SMOOTH_HINT) +_param2 returns one value, +a symbolic constant indicating the mode of the line antialiasing +hint. The initial value is _const(DONT_CARE). +See _cmnd(Hint). +.TP +_const(LINE_STIPPLE) +_param2 returns a single boolean value indicating whether stippling of lines +is enabled. The initial value is _const(FALSE). +See _cmnd(LineStipple). +.TP +_const(LINE_STIPPLE_PATTERN) +_param2 returns one value, +the 16-bit line stipple pattern. The initial value is all 1's. +See _cmnd(LineStipple). +.TP +_const(LINE_STIPPLE_REPEAT) +_param2 returns one value, +the line stipple repeat factor. The initial value is 1. +See _cmnd(LineStipple). +.TP +_const(LINE_WIDTH) +_param2 returns one value, +the line width as specified with _cmnd(LineWidth). The initial value is +1. +.TP +_const(LINE_WIDTH_GRANULARITY) +_param2 returns one value, +the width difference between adjacent supported widths for antialiased lines. +See _cmnd(LineWidth). +.TP +_const(LINE_WIDTH_RANGE) +_param2 returns two values: +the smallest and largest supported widths for antialiased +lines. +See _cmnd(LineWidth). +.TP +_const(LIST_BASE) +_param2 returns one value, +the base offset added to all names in arrays presented to +_cmnd(CallLists). The initial value is 0. +See _cmnd(ListBase). +.TP +_const(LIST_INDEX) +_param2 returns one value, +the name of the display list currently under construction. +0 is returned if no display list is currently under +construction. The initial value is 0. +See _cmnd(NewList). +.TP +_const(LIST_MODE) +_param2 returns one value, +a symbolic constant indicating the construction mode of the display list +currently under construction. The initial value is 0. +See _cmnd(NewList). +.TP +_const(LOGIC_OP_MODE) +_param2 returns one value, +a symbolic constant indicating the selected logic operation +mode. The initial value is _const(COPY). +See _cmnd(LogicOp). +.TP +_const(MAP1_COLOR_4) +_param2 returns a single boolean value indicating whether +1D evaluation generates colors. The initial value is _const(FALSE). +See _cmnd(Map1). +.TP +_const(MAP1_GRID_DOMAIN) +_param2 returns two values: +the endpoints of the 1D map's grid domain. The initial value is (0, 1). +See _cmnd(MapGrid). +.TP +_const(MAP1_GRID_SEGMENTS) +_param2 returns one value, +the number of partitions in the 1D map's grid domain. The initial value +is 1. +See _cmnd(MapGrid). +.TP +_const(MAP1_INDEX) +_param2 returns a single boolean value indicating whether +1D evaluation generates color indices. The initial value is _const(FALSE). +See _cmnd(Map1). +.TP +_const(MAP1_NORMAL) +_param2 returns a single boolean value indicating whether +1D evaluation generates normals. The initial value is _const(FALSE). +See _cmnd(Map1). +.TP +_const(MAP1_TEXTURE_COORD_1) +_param2 returns a single boolean value indicating whether +1D evaluation generates 1D texture coordinates. The initial value is +_const(FALSE). +See _cmnd(Map1). +.TP +_const(MAP1_TEXTURE_COORD_2) +_param2 returns a single boolean value indicating whether +1D evaluation generates 2D texture coordinates. The initial value is +_const(FALSE). +See _cmnd(Map1). +.TP +_const(MAP1_TEXTURE_COORD_3) +_param2 returns a single boolean value indicating whether +1D evaluation generates 3D texture coordinates. The initial value is +_const(FALSE). +See _cmnd(Map1). +.TP +_const(MAP1_TEXTURE_COORD_4) +_param2 returns a single boolean value indicating whether +1D evaluation generates 4D texture coordinates. The initial value is +_const(FALSE). +See _cmnd(Map1). +.TP +_const(MAP1_VERTEX_3) +_param2 returns a single boolean value indicating whether +1D evaluation generates 3D vertex coordinates. The initial value is +_const(FALSE). +See _cmnd(Map1). +.TP +_const(MAP1_VERTEX_4) +_param2 returns a single boolean value indicating whether +1D evaluation generates 4D vertex coordinates. The initial value is +_const(FALSE). +See _cmnd(Map1). +.TP +_const(MAP2_COLOR_4) +_param2 returns a single boolean value indicating whether +2D evaluation generates colors. The initial value is _const(FALSE). +See _cmnd(Map2). +.TP +_const(MAP2_GRID_DOMAIN) +_param2 returns four values: +the endpoints of the 2D map's $i$ and $j$ grid domains. The initial value +is (0,1; 0,1). +See _cmnd(MapGrid). +.TP +_const(MAP2_GRID_SEGMENTS) +_param2 returns two values: +the number of partitions in the 2D map's $i$ and $j$ grid +domains. The initial value is (1,1). +See _cmnd(MapGrid). +.TP +_const(MAP2_INDEX) +_param2 returns a single boolean value indicating whether +2D evaluation generates color indices. The initial value is _const(FALSE). +See _cmnd(Map2). +.TP +_const(MAP2_NORMAL) +_param2 returns a single boolean value indicating whether +2D evaluation generates normals. The initial value is _const(FALSE). +See _cmnd(Map2). +.TP +_const(MAP2_TEXTURE_COORD_1) +_param2 returns a single boolean value indicating whether +2D evaluation generates 1D texture coordinates. The initial value is +_const(FALSE). +See _cmnd(Map2). +.TP +_const(MAP2_TEXTURE_COORD_2) +_param2 returns a single boolean value indicating whether +2D evaluation generates 2D texture coordinates. The initial value is +_const(FALSE). +See _cmnd(Map2). +.TP +_const(MAP2_TEXTURE_COORD_3) +_param2 returns a single boolean value indicating whether +2D evaluation generates 3D texture coordinates. The initial value is +_const(FALSE). +See _cmnd(Map2). +.TP +_const(MAP2_TEXTURE_COORD_4) +_param2 returns a single boolean value indicating whether +2D evaluation generates 4D texture coordinates. The initial value is +_const(FALSE). +See _cmnd(Map2). +.TP +_const(MAP2_VERTEX_3) +_param2 returns a single boolean value indicating whether +2D evaluation generates 3D vertex coordinates. The initial value is +_const(FALSE). +See _cmnd(Map2). +.TP +_const(MAP2_VERTEX_4) +_param2 returns a single boolean value indicating whether +2D evaluation generates 4D vertex coordinates. The initial value is +_const(FALSE). +See _cmnd(Map2). +.TP +_const(MAP_COLOR) +_param2 returns a single boolean value indicating if colors and +color indices are to be replaced by table lookup during pixel +transfers. The initial value is _const(FALSE). +See _cmnd(PixelTransfer). +.TP +_const(MAP_STENCIL) +_param2 returns a single boolean value indicating if stencil indices +are to be replaced by table lookup during pixel transfers. The initial +value is _const(FALSE). +See _cmnd(PixelTransfer). +.TP +_const(MATRIX_MODE) +_param2 returns one value, +a symbolic constant indicating which matrix stack is currently the +target of all matrix operations. The initial value is _const(MODELVIEW). +See _cmnd(MatrixMode). +.TP +_const(MAX_3D_TEXTURE_SIZE) +_param2 returns one value, +a rough estimate of the largest 3D texture that the GL can handle. +If the GL version is 1.2 or greater, use +_const(PROXY_TEXTURE_3D) to determine if a texture is too large. +See _cmnd(TexImage3D). +.TP +_const(MAX_CLIENT_ATTRIB_STACK_DEPTH) +_param2 returns one value indicating the maximum supported depth +of the client attribute stack. +See _cmnd(PushClientAttrib). +.TP +_const(MAX_ATTRIB_STACK_DEPTH) +_param2 returns one value, +the maximum supported depth of the attribute stack. The value must be at least 16. +See _cmnd(PushAttrib). +.TP +_const(MAX_CLIP_PLANES) +_param2 returns one value, +the maximum number of application-defined clipping planes. The value must be at least 6. +See _cmnd(ClipPlane). +.TP +_const(MAX_COLOR_MATRIX_STACK_DEPTH) +_param2 returns one value, the maximum supported depth of the color matrix +stack. The value must be at least 2. +See _cmnd(PushMatrix). +.TP +_const(MAX_ELEMENTS_INDICES) +_param2 returns one value, +the recommended maximum number of vertex array indices. See _cmnd(DrawRangeElements). +.TP +_const(MAX_ELEMENTS_VERTICES) +_param2 returns one value, +the recommended maximum number of vertex array vertices. See _cmnd(DrawRangeElements). +.TP +_const(MAX_EVAL_ORDER) +_param2 returns one value, +the maximum equation order supported by 1D and 2D +evaluators. The value must be at least 8. +See _cmnd(Map1) and _cmnd(Map2). +.TP +_const(MAX_LIGHTS) +_param2 returns one value, +the maximum number of lights. The value must be at least 8. +See _cmnd(Light). +.TP +_const(MAX_LIST_NESTING) +_param2 returns one value, +the maximum recursion depth allowed during display-list +traversal. The value must be at least 64. +See _cmnd(CallList). +.TP +_const(MAX_MODELVIEW_STACK_DEPTH) +_param2 returns one value, +the maximum supported depth of the modelview matrix stack. The value must +be at least 32. +See _cmnd(PushMatrix). +.TP +_const(MAX_NAME_STACK_DEPTH) +_param2 returns one value, +the maximum supported depth of the selection name stack. The value must be at least 64. +See _cmnd(PushName). +.TP +_const(MAX_PIXEL_MAP_TABLE) +_param2 returns one value, +the maximum supported size of a _cmnd(PixelMap) lookup table. +The value must be at least 32. +See _cmnd(PixelMap). +.TP +_const(MAX_PROJECTION_STACK_DEPTH) +_param2 returns one value, +the maximum supported depth of the projection matrix stack. The value must be at least 2. +See _cmnd(PushMatrix). +.TP +_const(MAX_TEXTURE_SIZE) +_param2 returns one value. +The value gives a rough estimate of the largest texture that +the GL can handle. +If the GL version is 1.1 or greater, use +_const(PROXY_TEXTURE_1D) or _const(PROXY_TEXTURE_2D) +to determine if a texture is too large. +See _cmnd(TexImage1D) and _cmnd(TexImage2D). +.TP +_const(MAX_TEXTURE_STACK_DEPTH) +_param2 returns one value, +the maximum supported depth of the texture matrix stack. The value must be at least 2. +See _cmnd(PushMatrix). +.TP +_arbconst(MAX_TEXTURE_UNITS) +_param2 returns a single value indicating the number of texture units +supported. The value must be at least 1. +See _cmnd(ActiveTextureARB). +.TP +_const(MAX_VIEWPORT_DIMS) +_param2 returns two values: +the maximum supported width and height of the viewport. +These must be at least as large as the visible dimensions of the display +being rendered to. +See _cmnd(Viewport). +.TP +_const(MINMAX) +_param2 returns a single boolean value indicating whether pixel minmax +values are computed. The initial value is _const(FALSE). +See _cmnd(Minmax). +.TP +_const(MODELVIEW_MATRIX) +_param2 returns sixteen values: +the modelview matrix on the top of the modelview matrix stack. Initially +this matrix is the identity matrix. See _cmnd(PushMatrix). +.TP +_const(MODELVIEW_STACK_DEPTH) +_param2 returns one value, +the number of matrices on the modelview matrix stack. +The initial value is 1. +See _cmnd(PushMatrix). +.TP +_const(NAME_STACK_DEPTH) +_param2 returns one value, +the number of names on the selection name stack. The initial value is 0. +See _cmnd(PushName). +.TP +_const(NORMAL_ARRAY) +_param2 returns a single boolean value, indicating whether the normal +array is enabled. The initial value is _const(FALSE). +See _cmnd(NormalPointer). +.TP +_const(NORMAL_ARRAY_STRIDE) +_param2 returns one value, +the byte offset between consecutive normals in the normal +array. The initial value is 0. +See _cmnd(NormalPointer). +.TP +_const(NORMAL_ARRAY_TYPE) +_param2 returns one value, +the data type of each coordinate in the normal array. The initial value is +_const(FLOAT). +See _cmnd(NormalPointer). +.TP +_const(NORMALIZE) +_param2 returns a single boolean value indicating whether normals are +automatically scaled to unit length after they have been transformed to +eye coordinates. The initial value is _const(FALSE). +See _cmnd(Normal). +.TP +_const(PACK_ALIGNMENT) +_param2 returns one value, +the byte alignment used for writing pixel data to memory. The initial +value is 4. +See _cmnd(PixelStore). +.TP +_const(PACK_IMAGE_HEIGHT) +_param2 returns one value, +the image height used for writing pixel data to memory. The initial +value is 0. +See _cmnd(PixelStore). +.TP +_const(PACK_LSB_FIRST) +_param2 returns a single boolean value indicating whether single-bit +pixels being written to memory are written first to the least significant +bit of each unsigned byte. The initial value is _const(FALSE). +See _cmnd(PixelStore). +.TP +_const(PACK_ROW_LENGTH) +_param2 returns one value, +the row length used for writing pixel data to memory. The initial value is +0. +See _cmnd(PixelStore). +.TP +_const(PACK_SKIP_IMAGES) +_param2 returns one value, +the number of pixel images skipped before the first pixel is written +into memory. The initial value is 0. +See _cmnd(PixelStore). +.TP +_const(PACK_SKIP_PIXELS) +_param2 returns one value, +the number of pixel locations skipped before the first pixel is written +into memory. The initial value is 0. +See _cmnd(PixelStore). +.TP +_const(PACK_SKIP_ROWS) +_param2 returns one value, +the number of rows of pixel locations skipped before the first pixel is written +into memory. The initial value is 0. +See _cmnd(PixelStore). +.TP +_const(PACK_SWAP_BYTES) +_param2 returns a single boolean value indicating whether the bytes of +two-byte and four-byte pixel indices and components are swapped before being +written to memory. The initial value is _const(FALSE). +See _cmnd(PixelStore). +.TP +_const(PERSPECTIVE_CORRECTION_HINT) +_param2 returns one value, +a symbolic constant indicating the mode of the perspective correction +hint. The initial value is _const(DONT_CARE). +See _cmnd(Hint). +.TP +_const(PIXEL_MAP_A_TO_A_SIZE) +_param2 returns one value, +the size of the alpha-to-alpha pixel translation table. +The initial value is 1. +See _cmnd(PixelMap). +.TP +_const(PIXEL_MAP_B_TO_B_SIZE) +_param2 returns one value, +the size of the blue-to-blue pixel translation table. +The initial value is 1. +See _cmnd(PixelMap). +.TP +_const(PIXEL_MAP_G_TO_G_SIZE) +_param2 returns one value, +the size of the green-to-green pixel translation table. +The initial value is 1. +See _cmnd(PixelMap). +.TP +_const(PIXEL_MAP_I_TO_A_SIZE) +_param2 returns one value, +the size of the index-to-alpha pixel translation table. +The initial value is 1. +See _cmnd(PixelMap). +.TP +_const(PIXEL_MAP_I_TO_B_SIZE) +_param2 returns one value, +the size of the index-to-blue pixel translation table. +The initial value is 1. +See _cmnd(PixelMap). +.TP +_const(PIXEL_MAP_I_TO_G_SIZE) +_param2 returns one value, +the size of the index-to-green pixel translation table. +The initial value is 1. +See _cmnd(PixelMap). +.TP +_const(PIXEL_MAP_I_TO_I_SIZE) +_param2 returns one value, +the size of the index-to-index pixel translation table. +The initial value is 1. +See _cmnd(PixelMap). +.TP +_const(PIXEL_MAP_I_TO_R_SIZE) +_param2 returns one value, +the size of the index-to-red pixel translation table. +The initial value is 1. +See _cmnd(PixelMap). +.TP +_const(PIXEL_MAP_R_TO_R_SIZE) +_param2 returns one value, +the size of the red-to-red pixel translation table. +The initial value is 1. +See _cmnd(PixelMap). +.TP +_const(PIXEL_MAP_S_TO_S_SIZE) +_param2 returns one value, +the size of the stencil-to-stencil pixel translation table. +The initial value is 1. +See _cmnd(PixelMap). +.TP +_const(POINT_SIZE) +_param2 returns one value, +the point size as specified by _cmnd(PointSize). The initial value is 1. +.TP +_const(POINT_SIZE_GRANULARITY) +_param2 returns one value, +the size difference between adjacent supported sizes for antialiased points. +See _cmnd(PointSize). +.TP +_const(POINT_SIZE_RANGE) +_param2 returns two values: +the smallest and largest supported sizes for antialiased +points. The smallest size must be at most 1, and the largest size must +be at least 1. +See _cmnd(PointSize). +.TP +_const(POINT_SMOOTH) +_param2 returns a single boolean value indicating whether antialiasing of +points is enabled. The initial value is _const(FALSE). +See _cmnd(PointSize). +.TP +_const(POINT_SMOOTH_HINT) +_param2 returns one value, +a symbolic constant indicating the mode of the point antialiasing +hint. The initial value is _const(DONT_CARE). +See _cmnd(Hint). +.TP +_const(POLYGON_MODE) +_param2 returns two values: +symbolic constants indicating whether front-facing and back-facing polygons +are rasterized as points, lines, or filled polygons. The initial value is +_const(FILL). +See _cmnd(PolygonMode). +.TP +_const(POLYGON_OFFSET_FACTOR) +_param2 returns one value, +the scaling factor used to determine the variable offset that is added +to the depth value of each fragment generated when a polygon is +rasterized. The initial value is 0. +See _cmnd(PolygonOffset). +.TP +_const(POLYGON_OFFSET_UNITS) +_param2 returns one value. +This value is multiplied by an implementation-specific value and then +added to the depth value of each fragment +generated when a polygon is rasterized. The initial value is 0. +See _cmnd(PolygonOffset). +.TP +_const(POLYGON_OFFSET_FILL) +_param2 returns a single boolean value indicating whether polygon offset +is enabled for polygons in fill mode. The initial value is _const(FALSE). +See _cmnd(PolygonOffset). +.TP +_const(POLYGON_OFFSET_LINE) +_param2 returns a single boolean value indicating whether polygon offset +is enabled for polygons in line mode. The initial value is _const(FALSE). +See _cmnd(PolygonOffset). +.TP +_const(POLYGON_OFFSET_POINT) +_param2 returns a single boolean value indicating whether polygon offset +is enabled for polygons in point mode. The initial value is _const(FALSE). +See _cmnd(PolygonOffset). +.TP +_const(POLYGON_SMOOTH) +_param2 returns a single boolean value indicating whether antialiasing of +polygons is enabled. The initial value is _const(FALSE). +See _cmnd(PolygonMode). +.TP +_const(POLYGON_SMOOTH_HINT) +_param2 returns one value, +a symbolic constant indicating the mode of the polygon antialiasing +hint. The initial value is _const(DONT_CARE). +See _cmnd(Hint). +.TP +_const(POLYGON_STIPPLE) +_param2 returns a single boolean value indicating whether polygon +stippling is enabled. The initial value is _const(FALSE). +See _cmnd(PolygonStipple). +.TP +_const(POST_COLOR_MATRIX_COLOR_TABLE) +_param2 returns a single boolean value indicating whether post color +matrix transformation lookup is enabled. The initial value is +_const(FALSE). +See _cmnd(ColorTable). +.TP +_const(POST_COLOR_MATRIX_RED_BIAS) +_param2 returns one value, the red bias factor applied to RGBA fragments +after color matrix transformations. The initial value is 0. +See _cmnd(PixelTransfer). +.TP +_const(POST_COLOR_MATRIX_GREEN_BIAS) +_param2 returns one value, the green bias factor applied to RGBA fragments +after color matrix transformations. The initial value is 0. +See _cmnd(PixelTransfer) +.TP +_const(POST_COLOR_MATRIX_BLUE_BIAS) +_param2 returns one value, the blue bias factor applied to RGBA fragments +after color matrix transformations. The initial value is 0. +See _cmnd(PixelTransfer). +.TP +_const(POST_COLOR_MATRIX_ALPHA_BIAS) +_param2 returns one value, the alpha bias factor applied to RGBA fragments +after color matrix transformations. The initial value is 0. +See _cmnd(PixelTransfer). +.TP +_const(POST_COLOR_MATRIX_RED_SCALE) +_param2 returns one value, the red scale factor applied to RGBA fragments +after color matrix transformations. The initial value is 1. +See _cmnd(PixelTransfer). +.TP +_const(POST_COLOR_MATRIX_GREEN_SCALE) +_param2 returns one value, the green scale factor applied to RGBA fragments +after color matrix transformations. The initial value is 1. +See _cmnd(PixelTransfer). +.TP +_const(POST_COLOR_MATRIX_BLUE_SCALE) +_param2 returns one value, the blue scale factor applied to RGBA fragments +after color matrix transformations. The initial value is 1. +See _cmnd(PixelTransfer). +.TP +_const(POST_COLOR_MATRIX_ALPHA_SCALE) +_param2 returns one value, the alpha scale factor applied to RGBA fragments +after color matrix transformations. The initial value is 1. +See _cmnd(PixelTransfer). +.TP +_const(POST_CONVOLUTION_COLOR_TABLE) +_param2 returns a single boolean value indicating whether post convolution +lookup is enabled. The initial value is _const(FALSE). +See _cmnd(ColorTable). +.TP +_const(POST_CONVOLUTION_RED_BIAS) +_param2 returns one value, the red bias factor applied to RGBA fragments +after convolution. The initial value is 0. +See _cmnd(PixelTransfer). +.TP +_const(POST_CONVOLUTION_GREEN_BIAS) +_param2 returns one value, the green bias factor applied to RGBA fragments +after convolution. The initial value is 0. +See _cmnd(PixelTransfer). +.TP +_const(POST_CONVOLUTION_BLUE_BIAS) +_param2 returns one value, the blue bias factor applied to RGBA fragments +after convolution. The initial value is 0. +See _cmnd(PixelTransfer). +.TP +_const(POST_CONVOLUTION_ALPHA_BIAS) +_param2 returns one value, the alpha bias factor applied to RGBA fragments +after convolution. The initial value is 0. +See _cmnd(PixelTransfer). +.TP +_const(POST_CONVOLUTION_RED_SCALE) +_param2 returns one value, the red scale factor applied to RGBA fragments +after convolution. The initial value is 1. +See _cmnd(PixelTransfer). +.TP +_const(POST_CONVOLUTION_GREEN_SCALE) +_param2 returns one value, the green scale factor applied to RGBA fragments +after convolution. The initial value is 1. +See _cmnd(PixelTransfer). +.TP +_const(POST_CONVOLUTION_BLUE_SCALE) +_param2 returns one value, the blue scale factor applied to RGBA fragments +after convolution. The initial value is 1. +See _cmnd(PixelTransfer). +.TP +_const(POST_CONVOLUTION_ALPHA_SCALE) +_param2 returns one value, the alpha scale factor applied to RGBA fragments +after convolution. The initial value is 1. +See _cmnd(PixelTransfer). +.TP +_const(PROJECTION_MATRIX) +_param2 returns sixteen values: +the projection matrix on the top of the projection matrix +stack. Initially this matrix is the identity matrix. +See _cmnd(PushMatrix). +.TP +_const(PROJECTION_STACK_DEPTH) +_param2 returns one value, +the number of matrices on the projection matrix stack. +The initial value is 1. +See _cmnd(PushMatrix). +.TP +_const(READ_BUFFER) +_param2 returns one value, +a symbolic constant indicating which color buffer is selected for +reading. The initial value is _const(BACK) if there is a back buffer, +otherwise it is _const(FRONT). +See +_cmnd(ReadPixels) and _cmnd(Accum). +.TP +_const(RED_BIAS) +_param2 returns one value, +the red bias factor used during pixel transfers. The initial value is 0. +.TP +_const(RED_BITS) +_param2 returns one value, +the number of red bitplanes in each color buffer. +.TP +_const(RED_SCALE) +_param2 returns one value, +the red scale factor used during pixel transfers. The initial value is 1. +See _cmnd(PixelTransfer). +.TP +_const(RENDER_MODE) +_param2 returns one value, +a symbolic constant indicating whether the GL is in render, +select, +or feedback mode. The initial value is _const(RENDER). +See _cmnd(RenderMode). +.TP +_const(RESCALE_NORMAL) +_param2 returns single boolean value +indicating whether normal rescaling is enabled. +See _cmnd(Enable). +.TP +_const(RGBA_MODE) +_param2 returns a single boolean value indicating whether the GL is in RGBA +mode (true) or color index mode (false). +See _cmnd(Color). +.TP +_const(SCISSOR_BOX) +_param2 returns four values: +the $x$ and $y$ window coordinates of the scissor box, +followed by its width and height. +Initially the $x$ and $y$ window coordinates are both 0 and the +width and height are set to the size of the window. +See _cmnd(Scissor). +.TP +_const(SCISSOR_TEST) +_param2 returns a single boolean value indicating whether scissoring is +enabled. The initial value is _const(FALSE). +See _cmnd(Scissor). +.TP +_const(SELECTION_BUFFER_SIZE) +_param2 return one value, +the size of the selection buffer. +See _cmnd(SelectBuffer). +.TP +_const(SEPARABLE_2D) +_param2 returns a single boolean value indicating whether 2D separable +convolution is enabled. The initial value is _const(FALSE). +See _cmnd(SeparableFilter2D). +.TP +_const(SHADE_MODEL) +_param2 returns one value, +a symbolic constant indicating whether the shading mode is flat or +smooth. The initial value is _const(SMOOTH). +See _cmnd(ShadeModel). +.TP +_const(SMOOTH_LINE_WIDTH_RANGE) +_param2 returns two values, +the smallest and largest supported widths for antialiased lines. +See _cmnd(LineWidth). +.TP +_const(SMOOTH_LINE_WIDTH_GRANULARITY) +_param2 returns one value, +the granularity of widths for antialiased lines. +See _cmnd(LineWidth). +.TP +_const(SMOOTH_POINT_SIZE_RANGE) +_param2 returns two values, +the smallest and largest supported widths for antialiased points. +See _cmnd(PointSize). +.TP +_const(SMOOTH_POINT_SIZE_GRANULARITY) +_param2 returns one value, +the granularity of sizes for antialiased points. +See _cmnd(PointSize). +.TP +_const(STENCIL_BITS) +_param2 returns one value, +the number of bitplanes in the stencil buffer. +.TP +_const(STENCIL_CLEAR_VALUE) +_param2 returns one value, +the index to which the stencil bitplanes are cleared. The initial value is +0. +See _cmnd(ClearStencil). +.TP +_const(STENCIL_FAIL) +_param2 returns one value, +a symbolic constant indicating what action is taken when the stencil +test fails. The initial value is _const(KEEP). +See _cmnd(StencilOp). +.TP +_const(STENCIL_FUNC) +_param2 returns one value, +a symbolic constant indicating what function is used to compare the +stencil reference value with the stencil buffer value. The initial value +is _const(ALWAYS). +See _cmnd(StencilFunc). +.TP +_const(STENCIL_PASS_DEPTH_FAIL) +_param2 returns one value, +a symbolic constant indicating what action is taken when the stencil +test passes, +but the depth test fails. The initial value is _const(KEEP). +See _cmnd(StencilOp). +.TP +_const(STENCIL_PASS_DEPTH_PASS) +_param2 returns one value, +a symbolic constant indicating what action is taken when the stencil +test passes and the depth test passes. The initial value is _const(KEEP). +See _cmnd(StencilOp). +.TP +_const(STENCIL_REF) +_param2 returns one value, +the reference value that is compared with the contents of the stencil +buffer. The initial value is 0. +See _cmnd(StencilFunc). +.TP +_const(STENCIL_TEST) +_param2 returns a single boolean value indicating whether stencil testing +of fragments is enabled. The initial value is _const(FALSE). +See _cmnd(StencilFunc) and _cmnd(StencilOp). +.TP +_const(STENCIL_VALUE_MASK) +_param2 returns one value, +the mask that is used to mask both the stencil reference value and the +stencil buffer value before they are compared. The initial value is all 1's. +See _cmnd(StencilFunc). +.TP +_const(STENCIL_WRITEMASK) +_param2 returns one value, +the mask that controls writing of the stencil bitplanes. The initial value +is all 1's. See _cmnd(StencilMask). +.TP +_const(STEREO) +_param2 returns a single boolean value indicating whether stereo buffers +(left and right) are supported. +.TP +_const(SUBPIXEL_BITS) +_param2 returns one value, +an estimate of the number of bits of subpixel resolution that are used to +position rasterized geometry in window coordinates. The initial value +.br +is 4. +.TP +_const(TEXTURE_1D) +_param2 returns a single boolean value indicating whether 1D texture +mapping is enabled. The initial value is _const(FALSE). +See _cmnd(TexImage1D). +.TP +_const(TEXTURE_BINDING_1D) +_param2 returns a single value, the name of the texture +currently bound to the target _const(TEXTURE_1D). The initial value is 0. +See _cmnd(BindTexture). +.TP +_const(TEXTURE_2D) +_param2 returns a single boolean value indicating whether 2D texture +mapping is enabled. The initial value is _const(FALSE). +See _cmnd(TexImage2D). +.TP +_const(TEXTURE_BINDING_2D) +_param2 returns a single value, the name of the texture +currently bound to the target _const(TEXTURE_2D). The initial value is 0. +See _cmnd(BindTexture). +.TP +_const(TEXTURE_3D) +_param2 returns a single boolean value indicating whether 3D texture +mapping is enabled. The initial value is _const(FALSE). +See _cmnd(TexImage3D). +.TP +_const(TEXTURE_BINDING_3D) +_param2 returns a single value, the name of the texture +currently bound to the target _const(TEXTURE_3D). The initial value is 0. +See _cmnd(BindTexture). +.TP +_const(TEXTURE_COORD_ARRAY) +_param2 returns a single boolean value indicating whether the texture +coordinate array is enabled. The initial value is _const(FALSE). +See _cmnd(TexCoordPointer). +.TP +_const(TEXTURE_COORD_ARRAY_SIZE) +_param2 returns one value, +the number of coordinates per element in the texture coordinate +array. The initial value is 4. +See _cmnd(TexCoordPointer). +.TP +_const(TEXTURE_COORD_ARRAY_STRIDE) +_param2 returns one value, +the byte offset between consecutive elements in the texture coordinate +array. The initial value is 0. +See _cmnd(TexCoordPointer). +.TP +_const(TEXTURE_COORD_ARRAY_TYPE) +_param2 returns one value, +the data type of the coordinates in the texture coordinate +array. The initial value is _const(FLOAT). +See _cmnd(TexCoordPointer). +.TP +_const(TEXTURE_GEN_Q) +_param2 returns a single boolean value indicating whether automatic generation +of the \f2q\fP texture coordinate is enabled. The initial value is _const(FALSE). +See _cmnd(TexGen). +.TP +_const(TEXTURE_GEN_R) +_param2 returns a single boolean value indicating whether automatic generation +of the \f2r\fP texture coordinate is enabled. The initial value is _const(FALSE). +See _cmnd(TexGen). +.TP +_const(TEXTURE_GEN_S) +_param2 returns a single boolean value indicating whether automatic generation +of the \f2S\fP texture coordinate is enabled. The initial value is _const(FALSE). +See _cmnd(TexGen). +.TP +_const(TEXTURE_GEN_T) +_param2 returns a single boolean value indicating whether automatic generation +of the T texture coordinate is enabled. The initial value is _const(FALSE). +See _cmnd(TexGen). +.TP +_const(TEXTURE_MATRIX) +_param2 returns sixteen values: +the texture matrix on the top of the texture matrix stack. Initially this +matrix is the identity matrix. +See _cmnd(PushMatrix). +.TP +_const(TEXTURE_STACK_DEPTH) +_param2 returns one value, +the number of matrices on the texture matrix stack. +The initial value is 1. +See _cmnd(PushMatrix). +.TP +_const(UNPACK_ALIGNMENT) +_param2 returns one value, +the byte alignment used for reading pixel data from memory. The initial +value is 4. +See _cmnd(PixelStore). +.TP +_const(UNPACK_IMAGE_HEIGHT) +_param2 returns one value, +the image height used for reading pixel data from memory. The initial +is 0. +See _cmnd(PixelStore). +.TP +_const(UNPACK_LSB_FIRST) +_param2 returns a single boolean value indicating whether single-bit +pixels being read from memory are read first from the least significant +bit of each unsigned byte. The initial value is _const(FALSE). +See _cmnd(PixelStore). +.TP +_const(UNPACK_ROW_LENGTH) +_param2 returns one value, +the row length used for reading pixel data from memory. The initial value +is 0. +See _cmnd(PixelStore). +.TP +_const(UNPACK_SKIP_IMAGES) +_param2 returns one value, +the number of pixel images skipped before the first pixel is read +from memory. The initial value is 0. +See _cmnd(PixelStore). +.TP +_const(UNPACK_SKIP_PIXELS) +_param2 returns one value, +the number of pixel locations skipped before the first pixel is read +from memory. The initial value is 0. +See _cmnd(PixelStore). +.TP +_const(UNPACK_SKIP_ROWS) +_param2 returns one value, +the number of rows of pixel locations skipped before the first pixel is read +from memory. The initial value is 0. +See _cmnd(PixelStore). +.TP +_const(UNPACK_SWAP_BYTES) +_param2 returns a single boolean value indicating whether the bytes of +two-byte and four-byte pixel indices and components are swapped after being +read from memory. The initial value is _const(FALSE). +See _cmnd(PixelStore). +.TP +_const(VERTEX_ARRAY) +_param2 returns a single boolean value indicating whether the vertex +array is enabled. The initial value is _const(FALSE). +See _cmnd(VertexPointer). +.TP +_const(VERTEX_ARRAY_SIZE) +_param2 returns one value, +the number of coordinates per vertex in the vertex array. The initial +value is 4. +See _cmnd(VertexPointer). +.TP +_const(VERTEX_ARRAY_STRIDE) +_param2 returns one value, +the byte offset between consecutive vertices in the vertex +array. The initial value is 0. +See _cmnd(VertexPointer). +.TP +_const(VERTEX_ARRAY_TYPE) +_param2 returns one value, +the data type of each coordinate in the vertex array. The initial value is +_const(FLOAT). +See _cmnd(VertexPointer). +.TP +_const(VIEWPORT) +_param2 returns four values: +the $x$ and $y$ window coordinates of the viewport, +followed by its width and height. +Initially the $x$ and $y$ window coordinates are both set to 0, +and the width and height are set to the width and height of the window into +which the GL will do its rendering. +See _cmnd(Viewport). +.TP +_const(ZOOM_X) +_param2 returns one value, +the $x$ pixel zoom factor. The initial value is 1. +See _cmnd(PixelZoom). +.TP +_const(ZOOM_Y) +_param2 returns one value, +the $y$ pixel zoom factor. The initial value is 1. +See _cmnd(PixelZoom). +.P +Many of the boolean parameters can also be queried more easily using +_cmnd(IsEnabled). +.SH NOTES +_const(COLOR_LOGIC_OP), +_const(COLOR_ARRAY), +_const(COLOR_ARRAY_SIZE), +_const(COLOR_ARRAY_STRIDE), +_const(COLOR_ARRAY_TYPE), +_const(EDGE_FLAG_ARRAY), +_const(EDGE_FLAG_ARRAY_STRIDE), +_const(INDEX_ARRAY), +_const(INDEX_ARRAY_STRIDE), +_const(INDEX_ARRAY_TYPE), +_const(INDEX_LOGIC_OP), +_const(NORMAL_ARRAY), +_const(NORMAL_ARRAY_STRIDE), +_const(NORMAL_ARRAY_TYPE), +_const(POLYGON_OFFSET_UNITS), +_const(POLYGON_OFFSET_FACTOR), +_const(POLYGON_OFFSET_FILL), +_const(POLYGON_OFFSET_LINE), +_const(POLYGON_OFFSET_POINT), +_const(TEXTURE_COORD_ARRAY), +_const(TEXTURE_COORD_ARRAY_SIZE), +_const(TEXTURE_COORD_ARRAY_STRIDE), +_const(TEXTURE_COORD_ARRAY_TYPE), +_const(VERTEX_ARRAY), +_const(VERTEX_ARRAY_SIZE), +_const(VERTEX_ARRAY_STRIDE), and +_const(VERTEX_ARRAY_TYPE) +are available only if the GL version is 1.1 or greater. +.P +_const(ALIASED_POINT_SIZE_RANGE), +_const(ALIASED_POINT_SIZE_GRANULARITY), +_const(FEEDBACK_BUFFER_SIZE), +_const(FEEDBACK_BUFFER_TYPE), +_const(LIGHT_MODEL_AMBIENT), +_const(LIGHT_MODEL_COLOR_CONTROL), +_const(MAX_3D_TEXTURE_SIZE), +_const(MAX_ELEMENTS_INDICES), +_const(MAX_ELEMENTS_VERTICES), +_const(PACK_IMAGE_HEIGHT), +_const(PACK_SKIP_IMAGES), +_const(RESCALE_NORMAL), +_const(SELECTION_BUFFER_SIZE), +_const(SMOOTH_LINE_WIDTH_GRANULARITY), +_const(SMOOTH_LINE_WIDTH_RANGE), +_const(SMOOTH_POINT_SIZE_GRANULARITY), +_const(SMOOTH_POINT_SIZE_RANGE), +_const(TEXTURE_3D), +_const(TEXTURE_BINDING_3D), +_const(UNPACK_IMAGE_HEIGHT), and +_const(UNPACK_SKIP_IMAGES) +are available only if the GL version is 1.2 or greater. +.P +_const(LINE_WIDTH_GRANULARITY) was deprecated in GL version 1.2. Its +functionality was replaced by _const(SMOOTH_LINE_WIDTH_GRANULARITY). +.P +_const(LINE_WIDTH_RANGE) was deprecated in GL version 1.2. Its +functionality was replaced by _const(SMOOTH_LINE_WIDTH_RANGE). +.P +_const(POINT_SIZE_GRANULARITY) was deprecated in GL version 1.2. Its +functionality was replaced by _const(SMOOTH_POINT_SIZE_GRANULARITY). +.P +_const(POINT_SIZE_RANGE) was deprecated in GL version 1.2. Its +functionality was replaced by _const(SMOOTH_POINT_SIZE_RANGE). +.P +_const(BLEND_COLOR), +_const(BLEND_EQUATION), +_const(COLOR_MATRIX), +_const(COLOR_MATRIX_STACK_DEPTH), +_const(COLOR_TABLE), +_const(CONVOLUTION_1D), +_const(CONVOLUTION_2D), +_const(HISTOGRAM), +_const(MAX_COLOR_MATRIX_STACK_DEPTH), +_const(MINMAX), +_const(POST_COLOR_MATRIX_COLOR_TABLE), +_const(POST_COLOR_MATRIX_RED_BIAS), +_const(POST_COLOR_MATRIX_GREEN_BIAS), +_const(POST_COLOR_MATRIX_BLUE_BIAS), +_const(POST_COLOR_MATRIX_ALPHA_BIAS), +_const(POST_COLOR_MATRIX_RED_SCALE), +_const(POST_COLOR_MATRIX_GREEN_SCALE), +_const(POST_COLOR_MATRIX_BLUE_SCALE), +_const(POST_COLOR_MATRIX_ALPHA_SCALE), +_const(POST_CONVOLUTION_COLOR_TABLE), +_const(POST_CONVOLUTION_RED_BIAS), +_const(POST_CONVOLUTION_GREEN_BIAS), +_const(POST_CONVOLUTION_BLUE_BIAS), +_const(POST_CONVOLUTION_ALPHA_BIAS), +_const(POST_CONVOLUTION_RED_SCALE), +_const(POST_CONVOLUTION_GREEN_SCALE), +_const(POST_CONVOLUTION_BLUE_SCALE), +_const(POST_CONVOLUTION_ALPHA_SCALE), and +_const(SEPARABLE_2D) +are available only if _arbstring(imaging) is returned from _cmnd(Get) +when called with the argument _const(EXTENSIONS). +.P +_arbconst(ACTIVE_TEXTURE), +_arbconst(CLIENT_ACTIVE_TEXTURE), and +_arbconst(MAX_TEXTURE_UNITS) are available only if +_arbstring(multitexture) is returned from _cmnd(Get) when called with the +argument _const(EXTENSIONS). +.P +When the _arbstring(multitexture) extension is supported, the following +parameters return the associated value for the active texture unit: +_const(CURRENT_RASTER_TEXTURE_COORDS), +_const(TEXTURE_1D), _const(TEXTURE_BINDING_1D), +_const(TEXTURE_2D), _const(TEXTURE_BINDING_2D), +_const(TEXTURE_3D), _const(TEXTURE_BINDING_3D), +_const(TEXTURE_GEN_S), +_const(TEXTURE_GEN_T), +_const(TEXTURE_GEN_R), +_const(TEXTURE_GEN_Q), +_const(TEXTURE_MATRIX), and +_const(TEXTURE_STACK_DEPTH). +Likewise, the following parameters return the associated value for the +active client texture unit: +_const(TEXTURE_COORD_ARRAY), +_const(TEXTURE_COORD_ARRAY_SIZE), +_const(TEXTURE_COORD_ARRAY_STRIDE), +_const(TEXTURE_COORD_ARRAY_TYPE). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.P +.SH SEE ALSO +_cmnd(GetClipPlane), +_cmnd(GetColorTable), +_cmnd(GetColorTableParameter), +_cmnd(GetConvolutionFilter), +_cmnd(GetConvolutionParameter), +_cmnd(GetError), +_cmnd(GetHistogram), +_cmnd(GetHistogramParameter), +_cmnd(GetLight), +_cmnd(GetMap), +_cmnd(GetMaterial), +_cmnd(GetMinmax), +_cmnd(GetMinmaxParameter), +_cmnd(GetPixelMap), +_cmnd(GetPointerv), +_cmnd(GetPolygonStipple), +_cmnd(GetSeparableFilter), +_cmnd(GetString), +_cmnd(GetTexEnv), +_cmnd(GetTexGen), +_cmnd(GetTexImage), +_cmnd(GetTexLevelParameter), +_cmnd(GetTexParameter), +_cmnd(IsEnabled) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getclipplane.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getclipplane.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getclipplane.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,68 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetClipPlane,return the coefficients of the specified clipping plane) +_names(GetClipPlane) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a clipping plane. +The number of clipping planes depends on the implementation, +but at least six clipping planes are supported. +They are identified by symbolic names of the form _const(CLIP_PLANE)$i$ +where 0 \(<= $ i $ < _const(MAX_CLIP_PLANES). +_phead(_param2) +Returns four double-precision values that are the coefficients of the plane equation of _param1 in eye coordinates. +The initial value is (0, 0, 0, 0). +.SH DESCRIPTION +_cmnd returns in _param2 the four coefficients of the plane equation +for _param1. +.SH NOTES +It is always the case that _const(CLIP_PLANE)$i$ = _const(CLIP_PLANE0) + $i$. +.P +If an error is generated, +no change is made to the contents of _param2. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(ClipPlane) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getcolortable.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getcolortable.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getcolortable.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,156 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(GetColorTable,retrieve contents of a color lookup table) +_names(GetColorTable) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__format>@,@<_param2>@)_C_ +_define(@<__type>@,@<_param3>@)_C_ +_define(@<__table>@,@<_param4>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be _const(COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), +or +_const(POST_COLOR_MATRIX_COLOR_TABLE). +_phead(__format) +The format of the pixel data in __table. +The possible values are +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(LUMINANCE), +_const(LUMINANCE_ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), and +_const(BGRA). +_phead(__type) +The type of the pixel data in __table. +Symbolic constants +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) +are accepted. +_phead(__table) +Pointer to a one-dimensional array of pixel data containing the contents +of the color table. +.SH DESCRIPTION +_cmnd returns in __table the contents of the color table specified +by __target. No pixel transfer operations are performed, but pixel +storage modes that are applicable to +_cmnd(ReadPixels) are performed. +.P +Color components that are requested in +the specified __format, but which are not included in the internal +format of the color lookup table, are returned as zero. The +assignments of internal color components to the components +requested by __format are +.P +.TS +center; +lb lb +l l. +_ +Internal Component Resulting Component +_ +red red +green green +blue blue +alpha alpha +luminance red +intensity red +_ +.TE + +.P +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.P +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __format is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __type is not one of the allowable +values. +.P +_const(INVALID_OPERATION) is generated if __type is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and __format is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if __type is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and __format is neither _const(RGBA) nor _const(BGRA). +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH SEE ALSO +_cmnd(ColorTable), +_cmnd(ColorTableParameter), +_cmnd(GetColorTableParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getcolortableparameter.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getcolortableparameter.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getcolortableparameter.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,125 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl | eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetColorTableParameter, get color lookup table parameters) +_names(GetColorTableParameter,[fi]v) +.EQ +delim $$ +.EN +.SH PARAMETERS +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__pname>@,@<_param2>@)_C_ +_define(@<__params>@,@<_param3>@)_C_ +_phead(__target) +The target color table. +Must be +_const(COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), +_const(POST_COLOR_MATRIX_COLOR_TABLE), +_const(PROXY_COLOR_TABLE), +_const(PROXY_POST_CONVOLUTION_COLOR_TABLE), +_const(PROXY_POST_COLOR_MATRIX_COLOR_TABLE). +_phead(__pname) +The symbolic name of a color lookup table parameter. +Must be one of +_const(COLOR_TABLE_BIAS), +_const(COLOR_TABLE_SCALE), +_const(COLOR_TABLE_FORMAT), +_const(COLOR_TABLE_WIDTH), +_const(COLOR_TABLE_RED_SIZE), +_const(COLOR_TABLE_GREEN_SIZE), +_const(COLOR_TABLE_BLUE_SIZE), +_const(COLOR_TABLE_ALPHA_SIZE), +_const(COLOR_TABLE_LUMINANCE_SIZE), or +_const(COLOR_TABLE_INTENSITY_SIZE). +_phead(__params) +A pointer to an array where the values of the parameter will be stored. +.SH DESCRIPTION +Returns parameters specific to color table __target. +.P +When __pname is set to _const(COLOR_TABLE_SCALE) or +_const(COLOR_TABLE_BIAS), _cmnd returns the color +table scale or bias parameters for the table specified by __target. +For these queries, __target must be set to +_const(COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), +or _const(POST_COLOR_MATRIX_COLOR_TABLE) and +__params points to an array of four elements, which receive +the scale or bias factors for red, green, blue, and alpha, in that order. +.P +_cmnd can also be used to retrieve the format and size parameters +for a color table. For these queries, set __target to either the +color table target or the proxy color table target. +The format and size parameters are set by _cmnd(ColorTable). +.P +The following table lists the format and size parameters that may +be queried. +For each symbolic constant listed below for __pname, +__params must point to an array of the +given length, and receive the values indicated. +.P +.TS +center; +lb cb lb +l c l. +_ +Parameter N Meaning +_ +_const(COLOR_TABLE_FORMAT) 1 Internal format (e.g. _const(RGBA)) +_const(COLOR_TABLE_WIDTH) 1 Number of elements in table +_const(COLOR_TABLE_RED_SIZE) 1 Size of red component, in bits +_const(COLOR_TABLE_GREEN_SIZE) 1 Size of green component +_const(COLOR_TABLE_BLUE_SIZE) 1 Size of blue component +_const(COLOR_TABLE_ALPHA_SIZE) 1 Size of alpha component +_const(COLOR_TABLE_LUMINANCE_SIZE) 1 Size of luminance component +_const(COLOR_TABLE_INTENSITY_SIZE) 1 Size of intensity component +_ +.TE +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target or __pname is not +an acceptable value. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH SEE ALSO +_cmnd(ColorTable), +_cmnd(TexParameter), +_cmnd(ColorTableParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getconvolutionfilter.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getconvolutionfilter.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getconvolutionfilter.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,159 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(GetConvolutionFilter,get current 1D or 2D convolution filter kernel) +_names(GetConvolutionFilter) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__format>@,@<_param2>@)_C_ +_define(@<__type>@,@<_param3>@)_C_ +_define(@<__image>@,@<_param4>@)_C_ +.SH PARAMETERS +_phead(__target) +The filter to be retrieved. +Must be one of +_const(CONVOLUTION_1D) or +_const(CONVOLUTION_2D). +_phead(__format) +Format of the output image. +Must be one of +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_const(LUMINANCE), or +_const(LUMINANCE_ALPHA). +_phead(__type) +Data type of components in the output image. +Symbolic constants +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) +are accepted. +_phead(__image) +Pointer to storage for the output image. +.SH DESCRIPTION +_cmnd returns the current 1D or 2D convolution filter kernel as an image. +The one- or two-dimensional image is placed in __image according to the +specifications in __format and __type. +No pixel transfer operations are performed on this image, but the relevant +pixel storage modes are applied. +.sp +Color components that are present in __format but not included in the +internal format of the filter are returned as zero. +The assignments of internal color components to the components of __format +are as follows. +.br +.bp +.TS +center; +lb lb +l l. +_ +Internal Component Resulting Component +_ +Red Red +Green Green +Blue Blue +Alpha Alpha +Luminance Red +Intensity Red +_ +.TE +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.P +The current separable 2D filter must be retrieved with +_cmnd(GetSeparableFilter) rather than _cmnd. +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __format is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __type is not one of the allowable +values. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if _param3 is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and _param2 is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if _param3 is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and _param2 is neither _const(RGBA) nor _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(GetConvolutionParameter) +.SH SEE ALSO +_cmnd(GetSeparableFilter), +_cmnd(ConvolutionParameter), +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getconvolutionparameter.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getconvolutionparameter.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getconvolutionparameter.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,122 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(GetConvolutionParameter,get convolution parameters) +_names(GetConvolutionParameter,[fi]v) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__pname>@,@<_param2>@)_C_ +_define(@<__params>@,@<_param3>@)_C_ +.SH PARAMETERS +_phead(__target) +The filter whose parameters are to be retrieved. +Must be one of +_const(CONVOLUTION_1D), +_const(CONVOLUTION_2D), or +_const(SEPARABLE_2D). +_phead(__pname) +The parameter to be retrieved. +Must be one of +_const(CONVOLUTION_BORDER_MODE), +_const(CONVOLUTION_BORDER_COLOR), +_const(CONVOLUTION_FILTER_SCALE), +_const(CONVOLUTION_FILTER_BIAS), +_const(CONVOLUTION_FORMAT), +_const(CONVOLUTION_WIDTH), +_const(CONVOLUTION_HEIGHT), +_const(MAX_CONVOLUTION_WIDTH), or +_const(MAX_CONVOLUTION_HEIGHT). +_phead(__params) +Pointer to storage for the parameters to be retrieved. +.SH DESCRIPTION +_cmnd retrieves convolution parameters. +__target determines which convolution filter is queried. +__pname determines which parameter is returned: +.TP +_const(CONVOLUTION_BORDER_MODE) +The convolution border mode. +See _cmnd(ConvolutionParameter) for a list of border modes. +.TP +_const(CONVOLUTION_BORDER_COLOR) +The current convolution border color. +__params must be a pointer to an array of four elements, +which will receive the red, green, blue, and alpha border colors. +.TP +_const(CONVOLUTION_FILTER_SCALE) +The current filter scale factors. +__params must be a pointer to an array of four elements, +which will receive the red, green, blue, and alpha filter scale +factors in that order. +.TP +_const(CONVOLUTION_FILTER_BIAS) +The current filter bias factors. +__params must be a pointer to an array of four elements, +which will receive the red, green, blue, and alpha filter bias +terms in that order. +.TP +_const(CONVOLUTION_FORMAT) +The current internal format. +See _cmnd(ConvolutionFilter1D), _cmnd(ConvolutionFilter2D), +and _cmnd(SeparableFilter2D) for lists of allowable formats. +.TP +_const(CONVOLUTION_WIDTH) +The current filter image width. +.TP +_const(CONVOLUTION_HEIGHT) +The current filter image height. +.TP +_const(MAX_CONVOLUTION_WIDTH) +The maximum acceptable filter image width. +.TP +_const(MAX_CONVOLUTION_HEIGHT) +The maximum acceptable filter image height. +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __pname is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __target is _const(CONVOLUTION_1D) +and __pname is _const(CONVOLUTION_HEIGHT) or +_const(MAX_CONVOLUTION_HEIGHT). +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH SEE ALSO +_cmnd(GetConvolutionFilter), +_cmnd(GetSeparableFilter2D), +_cmnd(ConvolutionParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/geterror.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/geterror.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/geterror.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,122 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetError, return error information) +_names(GetError) +.SH DESCRIPTION +_cmnd returns the value of the error flag. +Each detectable error is assigned a numeric code and symbolic name. +When an error occurs, +the error flag is set to the appropriate error code value. +No other errors are recorded until _cmnd is called, +the error code is returned, +and the flag is reset to _const(NO_ERROR). +If a call to _cmnd returns _const(NO_ERROR), +there has been no detectable error since the last call to _cmnd, +or since the GL was initialized. +.P +To allow for distributed implementations, +there may be several error flags. +If any single error flag has recorded an error, +the value of that flag is returned +and that flag is reset to _const(NO_ERROR) +when _cmnd is called. +If more than one flag has recorded an error, +_cmnd returns and clears an arbitrary error flag value. +Thus, _cmnd should always be called in a loop, +until it returns _const(NO_ERROR), +if all error flags are to be reset. +.P +Initially, all error flags are set to _const(NO_ERROR). +.P +The following errors are currently defined: +.TP 30 +_const(NO_ERROR) +No error has been recorded. +The value of this symbolic constant is guaranteed to be 0. +.TP +_const(INVALID_ENUM) +An unacceptable value is specified for an enumerated argument. +The offending command is ignored, +and has no other side effect than to set the error flag. +.TP +_const(INVALID_VALUE) +A numeric argument is out of range. +The offending command is ignored, +and has no other side effect than to set the error flag. +.TP +_const(INVALID_OPERATION) +The specified operation is not allowed in the current state. +The offending command is ignored, +and has no other side effect than to set the error flag. +.TP +_const(STACK_OVERFLOW) +This command would cause a stack overflow. +The offending command is ignored, +and has no other side effect than to set the error flag. +.TP +_const(STACK_UNDERFLOW) +This command would cause a stack underflow. +The offending command is ignored, +and has no other side effect than to set the error flag. +.TP +_const(OUT_OF_MEMORY) +There is not enough memory left to execute the command. +The state of the GL is undefined, +except for the state of the error flags, +after this error is recorded. +.TP +_const(TABLE_TOO_LARGE) +The specified table exceeds the implementation's maximum supported table +size. The offending command is ignored, and has no other side effect +than to set the error flag. +.P +When an error flag is set, +results of a GL operation are undefined only if _const(OUT_OF_MEMORY) +has occurred. +In all other cases, +the command generating the error is ignored and has no effect on the GL state +or frame buffer contents. +If the generating command returns a value, it returns 0. +If _cmnd itself generates an error, it returns 0. +.SH NOTES +_const(TABLE_TOO_LARGE) was introduced in GL version 1.2. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +In this case _cmnd returns 0. Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/gethistogram.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/gethistogram.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/gethistogram.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,155 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(GetHistogram,get histogram table) +_names(GetHistogram) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__reset>@,@<_param2>@)_C_ +_define(@<__format>@,@<_param3>@)_C_ +_define(@<__type>@,@<_param4>@)_C_ +_define(@<__values>@,@<_param5>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be +_const(HISTOGRAM). +_phead(__reset) +If _const(TRUE), each component counter that is actually returned +is reset to zero. (Other counters are unaffected.) +If _const(FALSE), none of the counters in the histogram table is modified. +_phead(__format) +The format of values to be returned in __values. +Must be one of +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_const(LUMINANCE), or +_const(LUMINANCE_ALPHA). +_phead(__type) +The type of values to be returned in __values. +Symbolic constants +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) +are accepted. +_phead(__values) +A pointer to storage for the returned histogram table. +.SH DESCRIPTION +_cmnd returns the current histogram table as a one-dimensional image +with the same width as the histogram. +No pixel transfer operations are performed on this image, but pixel storage +modes that are applicable to 1D images are honored. +.PP +Color components that are requested in the specified __format, but which +are not included in the internal format of the histogram, are returned as +zero. +.bp +The assignments of internal color components to the components +requested by __format are: +.TS +center; +lb lb +l l. +_ +Internal Component Resulting Component +_ +Red Red +Green Green +Blue Blue +Alpha Alpha +Luminance Red +_ +.TE + +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not _const(HISTOGRAM). +.P +_const(INVALID_ENUM) is generated if __format is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __type is not one of the allowable +values. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.P +.P +_const(INVALID_OPERATION) is generated if __type is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and __format is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if __type is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and __format is neither _const(RGBA) nor _const(BGRA). +.SH SEE ALSO +_cmnd(Histogram), +_cmnd(ResetHistogram), +_cmnd(GetHistogramParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/gethistogramparameter.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/gethistogramparameter.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/gethistogramparameter.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,111 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(GetHistogramParameter,get histogram parameters) +_names(GetHistogramParameter,[fi]v) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__pname>@,@<_param2>@)_C_ +_define(@<__params>@,@<_param3>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be one of +_const(HISTOGRAM) or +_const(PROXY_HISTOGRAM). +_phead(__pname) +The name of the parameter to be retrieved. +Must be one of +_const(HISTOGRAM_WIDTH), +_const(HISTOGRAM_FORMAT), +_const(HISTOGRAM_RED_SIZE), +_const(HISTOGRAM_GREEN_SIZE), +_const(HISTOGRAM_BLUE_SIZE), +_const(HISTOGRAM_ALPHA_SIZE), +_const(HISTOGRAM_LUMINANCE_SIZE), or +_const(HISTOGRAM_SINK). +_phead(__params) +Pointer to storage for the returned values. +.SH DESCRIPTION +_cmnd is used to query parameter values for the current histogram or for +a proxy. The histogram state information may be queried by calling +_cmnd(GetHistogramParameter) with a __target of _const(HISTOGRAM) (to +obtain information for the current histogram table) or +_const(PROXY_HISTOGRAM) (to obtain information from the most recent +proxy request) and one of the following values for the __pname argument: +.P +.ne +.TS +center; +lb lb +l l. +_ +Parameter Description +_ +_const(HISTOGRAM_WIDTH) Histogram table width +_const(HISTOGRAM_FORMAT) Internal format +_const(HISTOGRAM_RED_SIZE) Red component counter size, in bits +_const(HISTOGRAM_GREEN_SIZE) Green component counter size, in bits +.TE +.bp +.TS +center; +lb lb +l l. +_ +Parameter Description +_ +_const(HISTOGRAM_BLUE_SIZE) Blue component counter size, in bits +_const(HISTOGRAM_ALPHA_SIZE) Alpha component counter size, in bits +_const(HISTOGRAM_LUMINANCE_SIZE) Luminance component counter size, in bits +_const(HISTOGRAM_SINK) Value of the \f2sink\fP parameter +_ +.TE + +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __pname is not one of the allowable +values. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH SEE ALSO +_cmnd(GetHistogram), +_cmnd(Histogram) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getlight.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getlight.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getlight.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,193 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetLight,return light source parameter values) +_names(GetLight,[fi]v) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a light source. +The number of possible lights depends on the implementation, +but at least eight lights are supported. +They are identified by symbolic names of the form _const(LIGHT)$i$ +where 0 \(<= $ i $ < _const(MAX_LIGHTS). +_phead(_param2) +Specifies a light source parameter for _param1. +Accepted symbolic names are +_const(AMBIENT), +_const(DIFFUSE), +_const(SPECULAR), +_const(POSITION), +_const(SPOT_DIRECTION), +_const(SPOT_EXPONENT), +_const(SPOT_CUTOFF), +_const(CONSTANT_ATTENUATION), +_const(LINEAR_ATTENUATION), and +_const(QUADRATIC_ATTENUATION). +_phead(_param3) +Returns the requested data. +.SH DESCRIPTION +_cmnd returns in _param3 the value or values of a light source parameter. +_param1 names the light and is a symbolic name of the form _const(LIGHT)$i$ +for 0 \(<= $i$ < _const(MAX_LIGHTS), +where _const(MAX_LIGHTS) is an implementation dependent constant that is +greater than or equal to eight. +_param2 specifies one of ten light source parameters, +again by symbolic name. +.P +The following parameters are defined: +.TP 20 +_const(AMBIENT) +_param3 returns four integer or floating-point values representing the +ambient intensity of the light source. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1], +the corresponding integer return value is undefined. The initial value is +(0, 0, 0, 1). +.TP +_const(DIFFUSE) +_param3 returns four integer or floating-point values representing the +diffuse intensity of the light source. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1], +the corresponding integer return value is undefined. The initial value +for _const(LIGHT0) is (1, 1, 1, 1); for other lights, the +initial value is (0, 0, 0, 0). +.TP +_const(SPECULAR) +_param3 returns four integer or floating-point values representing the +specular intensity of the light source. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1], +the corresponding integer return value is undefined. The initial value +for _const(LIGHT0) is (1, 1, 1, 1); for other lights, the +initial value is (0, 0, 0, 0). +.TP +_const(POSITION) +_param3 returns four integer or floating-point values representing the +position of the light source. +Integer values, +when requested, +are computed by rounding the internal floating-point values to the +nearest integer value. +The returned values are those maintained in eye coordinates. +They will not be equal to the values specified using _cmnd(Light), +unless the modelview matrix was identity at the time _cmnd(Light) was +called. The initial value is (0, 0, 1, 0). +.TP +_const(SPOT_DIRECTION) +_param3 returns three integer or floating-point values representing the +direction of the light source. +Integer values, +when requested, +are computed by rounding the internal floating-point values to the +nearest integer value. +The returned values are those maintained in eye coordinates. +They will not be equal to the values specified using _cmnd(Light), +unless the modelview matrix was identity at the time _cmnd(Light) was called. +Although spot direction is normalized before being used in the lighting +equation, +the returned values are the transformed versions of the specified values +prior to normalization. The initial value is (0, 0, \-1). +.TP +_const(SPOT_EXPONENT) +_param3 returns a single integer or floating-point value representing the +spot exponent of the light. +An integer value, +when requested, +is computed by rounding the internal floating-point representation to +the nearest integer. The initial value is 0. +.TP +_const(SPOT_CUTOFF) +_param3 returns a single integer or floating-point value representing the +spot cutoff angle of the light. +An integer value, +when requested, +is computed by rounding the internal floating-point representation to +the nearest integer. The initial value is 180. +.TP +_const(CONSTANT_ATTENUATION) +_param3 returns a single integer or floating-point value representing the +constant (not distance-related) attenuation of the light. +An integer value, +when requested, +is computed by rounding the internal floating-point representation to +the nearest integer. The initial value is 1. +.TP +_const(LINEAR_ATTENUATION ) +_param3 returns a single integer or floating-point value representing the +linear attenuation of the light. +An integer value, +when requested, +is computed by rounding the internal floating-point representation to +the nearest integer. The initial value is 0. +.TP +_const(QUADRATIC_ATTENUATION) +_param3 returns a single integer or floating-point value representing the +quadratic attenuation of the light. +An integer value, +when requested, +is computed by rounding the internal floating-point representation to +the nearest integer. The initial value is 0. +.SH NOTES +It is always the case that _const(LIGHT)$i$ = _const(LIGHT0) + $i$. +.P +If an error is generated, +no change is made to the contents of _param3. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 or _param2 is not an +accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(Light) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getmap.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getmap.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getmap.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,133 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetMap,return evaluator parameters) +_names(GetMap,[dfi]v) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the symbolic name of a map. +Accepted values are +_const(MAP1_COLOR_4), +_const(MAP1_INDEX), +_const(MAP1_NORMAL), +_const(MAP1_TEXTURE_COORD_1), +_const(MAP1_TEXTURE_COORD_2), +_const(MAP1_TEXTURE_COORD_3), +_const(MAP1_TEXTURE_COORD_4), +_const(MAP1_VERTEX_3), +_const(MAP1_VERTEX_4), +_const(MAP2_COLOR_4), +_const(MAP2_INDEX), +_const(MAP2_NORMAL), +_const(MAP2_TEXTURE_COORD_1), +_const(MAP2_TEXTURE_COORD_2), +_const(MAP2_TEXTURE_COORD_3), +_const(MAP2_TEXTURE_COORD_4), +_const(MAP2_VERTEX_3), and +_const(MAP2_VERTEX_4). +_phead(_param2) +Specifies which parameter to return. +Symbolic names +_const(COEFF), +_const(ORDER), and +_const(DOMAIN) are accepted. +_phead(_param3) +Returns the requested data. +.SH DESCRIPTION +_cmnd(Map1) and _cmnd(Map2) define evaluators. +_cmnd returns evaluator parameters. +_param1 chooses a map, +_param2 selects a specific parameter, +and _param3 points to storage where the values will be returned. +.P +The acceptable values for the _param1 parameter are described +in the _cmnd(Map1) and _cmnd(Map2) reference pages. +.P +_param2 can assume the following values: +.TP 15 +_const(COEFF) +_param3 returns the control points for the evaluator function. +One-dimensional evaluators return $order$ control points, +and two-dimensional evaluators return $uorder ~times~ vorder$ control points. +Each control point consists of one, two, three, or four integer, +single-precision floating-point, +or double-precision floating-point values, +depending on the type of the evaluator. +The GL returns two-dimensional control points in row-major order, +incrementing the $uorder$ index quickly +and the $vorder$ index after each row. +Integer values, +when requested, +are computed by rounding the internal floating-point values to the +nearest integer values. +.TP +_const(ORDER) +_param3 returns the order of the evaluator function. +One-dimensional evaluators return a single value, +$order$. The initial value is 1. +Two-dimensional evaluators return two values, +$uorder$ and $vorder$. The initial value is 1,1. +.TP +_const(DOMAIN) +_param3 returns the linear $u$ and $v$ mapping parameters. +One-dimensional evaluators return two values, +$u1$ and $u2$, +as specified by _cmnd(Map1). +Two-dimensional evaluators return four values +($u1$, $u2$, $v1$, and $v2$) +as specified by _cmnd(Map2). +Integer values, +when requested, +are computed by rounding the internal floating-point values to the +nearest integer values. +.SH NOTES +If an error is generated, +no change is made to the contents of _param3. +.SH ERRORS +_const(INVALID_ENUM) is generated if either _param1 or _param2 is not +an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(EvalCoord), +_cmnd(Map1), +_cmnd(Map2) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getmaterial.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getmaterial.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getmaterial.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,139 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetMaterial,return material parameters) +_names(GetMaterial,[fi]v) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies which of the two materials is being queried. +_const(FRONT) or _const(BACK) are accepted, +representing the front and back materials, respectively. +_phead(_param2) +Specifies the material parameter to return. +_const(AMBIENT), +_const(DIFFUSE), +_const(SPECULAR), +_const(EMISSION), +_const(SHININESS), and +_const(COLOR_INDEXES) +are accepted. +_phead(_param3) +Returns the requested data. +.SH DESCRIPTION +_cmnd returns in _param3 the value or values of parameter _param2 +of material _param1. Six parameters are defined: +.TP 22 +_const(AMBIENT) +_param3 returns four integer or floating-point values representing the +ambient reflectance of the material. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1], +the corresponding integer return value is undefined. The initial value is +(0.2, 0.2, 0.2, 1.0) +.TP +_const(DIFFUSE) +_param3 returns four integer or floating-point values representing the +diffuse reflectance of the material. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1], +the corresponding integer return value is undefined. The initial value is +(0.8, 0.8, 0.8, 1.0). +.TP +_const(SPECULAR) +_param3 returns four integer or floating-point values representing the +specular reflectance of the material. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1], +the corresponding integer return value is undefined. The initial value is +(0, 0, 0, 1). +.TP +_const(EMISSION) +_param3 returns four integer or floating-point values representing the +emitted light intensity of the material. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer value, +and \-1.0 maps to the most negative representable integer value. +If the internal value is outside the range [\-1, 1.0], +the corresponding integer return value is undefined. The initial value is +(0, 0, 0, 1). +.TP +_const(SHININESS) +_param3 returns one integer or floating-point value representing the +specular exponent of the material. +Integer values, +when requested, +are computed by rounding the internal floating-point value to the +nearest integer value. The initial value is 0. +.TP +_const(COLOR_INDEXES) +_param3 returns three integer or floating-point values representing the +ambient, diffuse, and specular indices of the material. +These indices are used only for color index lighting. +(All the other parameters are used only for RGBA lighting.) +Integer values, +when requested, +are computed by rounding the internal floating-point values to the +nearest integer values. +.SH NOTES +If an error is generated, +no change is made to the contents of _param3. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 or _param2 is not an +accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(Material) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getminmax.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getminmax.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getminmax.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,162 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(GetMinmax,get minimum and maximum pixel values) +_names(GetMinmax) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__reset>@,@<_param2>@)_C_ +_define(@<__format>@,@<_param3>@)_C_ +_define(@<__type>@,@<_param4>@)_C_ +_define(@<__values>@,@<_param5>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be +_const(MINMAX). +_phead(__reset) +If _const(TRUE), all entries in the minmax table that are actually +returned are reset to their initial values. (Other entries are unaltered.) +If _const(FALSE), the minmax table is unaltered. +_phead(__format) +The format of the data to be returned in __values. +Must be one of +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_const(LUMINANCE), or +_const(LUMINANCE_ALPHA). +_phead(__type) +The type of the data to be returned in __values. +Symbolic constants +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) +are accepted. +_phead(__values) +A pointer to storage for the returned values. +.SH DESCRIPTION +_cmnd returns the accumulated minimum and maximum pixel values (computed on a +per-component basis) in a one-dimensional image of width 2. The first set +of return values are the minima, and the second set of return values +are the maxima. +The format of the return values is determined by __format, and their type is +determined by __type. +.PP +No pixel transfer operations are performed on the return values, but pixel +storage modes that are applicable to 1-dimensional images are performed. +Color components that are requested in the specified __format, but that +are not included in the internal format of the minmax table, are +returned as zero. The assignment of internal color components to the +components requested by __format are as follows: +.sp +.TS +center; +lb lb +l l. +_ +Internal Component Resulting Component +_ +Red Red +Green Green +Blue Blue +Alpha Alpha +Luminance Red +_ +.TE + +.PP +If __reset is _const(TRUE), the minmax table entries corresponding +to the return values are reset to their initial +values. Minimum and maximum values that are not returned are not +modified, even if __reset is _const(TRUE). +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not _const(MINMAX). +.P +_const(INVALID_ENUM) is generated if __format is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __type is not one of the allowable +values. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if __type is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and __format is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if __type is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and __format is neither _const(RGBA) nor _const(BGRA). +.SH SEE ALSO +_cmnd(Minmax), +_cmnd(ResetMinmax), +_cmnd(GetMinmaxParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getminmaxparameter.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getminmaxparameter.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getminmaxparameter.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,84 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(GetMinmaxParameter,get minmax parameters) +_names(GetMinmaxParameter,[fi]v) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__pname>@,@<_param2>@)_C_ +_define(@<__params>@,@<_param3>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be +_const(MINMAX). +_phead(__pname) +The parameter to be retrieved. +Must be one of +_const(MINMAX_FORMAT) or +_const(MINMAX_SINK). +_phead(__params) +A pointer to storage for the retrieved parameters. +.SH DESCRIPTION +_cmnd retrieves parameters for the current minmax table by setting +__pname to one of the following values: +.sp + +.TS +center; +lb lb +l l. +_ +Parameter Description +_ +_const(MINMAX_FORMAT) Internal format of minmax table +_const(MINMAX_SINK) Value of the \f2sink\fP parameter +_ +.TE + +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not _const(MINMAX). +.P +_const(INVALID_ENUM) is generated if __pname is not one of the allowable +values. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH SEE ALSO +_cmnd(Minmax), +_cmnd(GetMinmax) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getpixelmap.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getpixelmap.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getpixelmap.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,161 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetPixelMap,return the specified pixel map) +_names(GetPixelMap,u*[ifs]v) +.SH PARAMETERS +_phead(_param1) +Specifies the name of the pixel map to return. +Accepted values are +_const(PIXEL_MAP_I_TO_I), +_const(PIXEL_MAP_S_TO_S), +_const(PIXEL_MAP_I_TO_R), +_const(PIXEL_MAP_I_TO_G), +_const(PIXEL_MAP_I_TO_B), +_const(PIXEL_MAP_I_TO_A), +_const(PIXEL_MAP_R_TO_R), +_const(PIXEL_MAP_G_TO_G), +_const(PIXEL_MAP_B_TO_B), and +_const(PIXEL_MAP_A_TO_A). +_phead(_param2) +Returns the pixel map contents. +.SH DESCRIPTION +See the _cmnd(PixelMap) reference page for a description of the acceptable +values for the _param1 parameter. +_cmnd returns in _param2 the contents of the pixel map +specified in _param1. +Pixel maps are used during the execution of +_cmnd(ReadPixels), +_cmnd(DrawPixels), +_cmnd(CopyPixels), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(ColorTable), +_cmnd(ColorSubTable), +_cmnd(CopyColorTable), +_cmnd(CopyColorSubTable), +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), +_cmnd(SeparableFilter2D), +_cmnd(GetHistogram), +_cmnd(GetMinmax), and +_cmnd(GetTexImage) +to map color indices, +stencil indices, +color components, +and depth components to other values. +.P +Unsigned integer values, +if requested, +are linearly mapped from the internal fixed or floating-point representation +such that 1.0 maps to the largest representable integer value, +and 0.0 maps to 0. +Return unsigned integer values are undefined if the map value was +not in the range [0,1]. +.P +To determine the required size of _param1, +call _cmnd(Get) with the appropriate symbolic constant. +.SH NOTES +If an error is generated, +no change is made to the contents of _param2. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +.na +_cmnd(Get) with argument _const(PIXEL_MAP_I_TO_I_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_S_TO_S_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_I_TO_R_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_I_TO_G_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_I_TO_B_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_I_TO_A_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_R_TO_R_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_G_TO_G_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_B_TO_B_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_A_TO_A_SIZE) +.br +_cmnd(Get) with argument _const(MAX_PIXEL_MAP_TABLE) +.SH SEE ALSO +_cmnd(ColorSubTable), +_cmnd(ColorTable), +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), +_cmnd(CopyColorSubTable), +_cmnd(CopyColorTable), +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawPixels), +_cmnd(GetHistogram), +_cmnd(GetMinmax), +_cmnd(GetTexImage), +_cmnd(PixelMap), +_cmnd(PixelTransfer), +_cmnd(ReadPixels), +_cmnd(SeparableFilter2D), +_cmnd(TexImage1D), +_cmnd(TexImage1D), +_cmnd(TexImage2D) +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getpointerv.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getpointerv.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getpointerv.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,99 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ A real line follows. +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ Use GL not OpenGL +_C_ Don't change the ordering of the main headers. +_C_ C specification (or fortran) is handled automatically +_C_ .TH is automatically added to the top of this file. +_C_ Below, use current tense, active do not capitalize the first word and dont +_C_ use a period. +_C_ the function name must appear in (APIFILE) (usually gl.h) as set in +_C_ Makefile. +_header(GetPointerv, return the address of the specified pointer) +_names(GetPointerv) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the array or buffer pointer to be returned. +Symbolic constants +_const(COLOR_ARRAY_POINTER), +_const(EDGE_FLAG_ARRAY_POINTER), +_const(FEEDBACK_BUFFER_POINTER), +_const(INDEX_ARRAY_POINTER), +_const(NORMAL_ARRAY_POINTER), +_const(TEXTURE_COORD_ARRAY_POINTER), +_const(SELECTION_BUFFER_POINTER), +and +_const(VERTEX_ARRAY_POINTER) +are accepted. +_phead(_param2) +Returns the pointer value specified by _param1. +.SH DESCRIPTION +_cmnd returns pointer information. _param1 +is a symbolic constant indicating the pointer to be returned, and +_param2 is a pointer to a location in which to place the returned data. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +The pointers are all client-side state. +.P +The initial value for each pointer is 0. +.P +When the _arbstring(multitexture) extension is supported, querying the +_const(TEXTURE_COORD_ARRAY_POINTER) returns the value for the active +client texture unit. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.SH SEE ALSO +_C_ no queries or gets listed above, alphabetize commands, +_C_ seperate with commas not .br. no command appears in the associated gets +_C_ as well as in SEE ALSO. +_cmnd(ArrayElement), +_cmnd(ClientActiveTextureARB), +_cmnd(ColorPointer), +_cmnd(DrawArrays), +_cmnd(EdgeFlagPointer), +_cmnd(FeedbackBuffer), +_cmnd(IndexPointer), +_cmnd(InterleavedArrays), +_cmnd(NormalPointer), +_cmnd(SelectBuffer), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getpolygonstipple.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getpolygonstipple.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getpolygonstipple.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,70 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetPolygonStipple,return the polygon stipple pattern) +_names(GetPolygonStipple) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Returns the stipple pattern. The initial value is all 1's. +.SH DESCRIPTION +_cmnd returns to _param1 a $32 ~times~ 32$ polygon stipple pattern. +The pattern is packed into memory as if _cmnd(ReadPixels) +with both \f2height\fP and \f2width\fP of 32, +\f2type\fP of _const(BITMAP), +and \f2format\fP of _const(COLOR_INDEX) were called, +and the stipple pattern were stored in an internal $32 ~times~ 32$ color +index buffer. +Unlike _cmnd(ReadPixels), +however, +pixel transfer operations +(shift, offset, pixel map) +are not applied to the returned stipple image. +.SH NOTES +If an error is generated, +no change is made to the contents of _param1. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(PolygonStipple), +_cmnd(ReadPixels) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getseparablefilter.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getseparablefilter.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getseparablefilter.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,164 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(GetSeparableFilter,get separable convolution filter kernel images) +_names(GetSeparableFilter) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__format>@,@<_param2>@)_C_ +_define(@<__type>@,@<_param3>@)_C_ +_define(@<__row>@,@<_param4>@)_C_ +_define(@<__column>@,@<_param5>@)_C_ +_define(@<__span>@,@<_param6>@)_C_ +.SH PARAMETERS +_phead(__target) +The separable filter to be retrieved. +Must be +_const(SEPARABLE_2D). +_phead(__format) +Format of the output images. +Must be one of +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR) +_const(RGBA), +_const(BGRA), +_const(LUMINANCE), or +_const(LUMINANCE_ALPHA). +_phead(__type) +Data type of components in the output images. +Symbolic constants +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) +are accepted. +_phead(__row) +Pointer to storage for the row filter image. +_phead(__column) +Pointer to storage for the column filter image. +_phead(__span) +Pointer to storage for the span filter image (currently unused). +.SH DESCRIPTION +_cmnd returns the two one-dimensional filter kernel images for the +current separable 2D convolution filter. +The row image is placed in __row and the column image is placed in +__column according to the specifications in __format and __type. +(In the current implementation, __span is not affected in any way.) +No pixel transfer operations are performed on the images, but the relevant +pixel storage modes are applied. +.sp +Color components that are present in __format but not included in the +internal format of the filters are returned as zero. +The assignments of internal color components to the components of __format +are as follows: +.sp + +.TS +center; +cb cb +l l. +_ +Internal Component Resulting Component +_ +Red Red +Green Green +Blue Blue +Alpha Alpha +Luminance Red +Intensity Red +_ +.TE + +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.P +Non-separable 2D filters must be retrieved with _cmnd(GetConvolutionFilter). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not _const(SEPARABLE_2D). +.P +_const(INVALID_ENUM) is generated if __format is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __type is not one of the allowable +values. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if __type is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and __format is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if __type is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and __format is neither _const(RGBA) nor _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(GetConvolutionParameter) +.SH SEE ALSO +_cmnd(GetConvolutionFilter), +_cmnd(ConvolutionParameter), +_cmnd(SeparableFilter2D) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getstring.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getstring.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getstring.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,105 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetString, return a string describing the current GL connection) +_names(GetString) +.SH PARAMETERS +_phead(_param1) +Specifies a symbolic constant, one of +_const(VENDOR), _const(RENDERER), _const(VERSION), or _const(EXTENSIONS). +.SH DESCRIPTION +_cmnd returns a pointer to a static string +describing some aspect of the current GL connection. +_param1 can be one of the following: +.TP 20 +_const(VENDOR) +Returns the company responsible for this GL implementation. +This name does not change from release to release. +.TP +_const(RENDERER) +Returns the name of the renderer. +This name is typically specific to a particular configuration of a hardware +platform. +It does not change from release to release. +.TP +_const(VERSION) +Returns a version or release number. +.TP +_const(EXTENSIONS) +Returns a space-separated list of supported extensions to GL. +.P +Because the GL does not include queries for the performance +characteristics of an implementation, some applications are written to +recognize known platforms and modify their GL usage based on known +performance characteristics of these platforms. +Strings _const(VENDOR) and _const(RENDERER) together uniquely specify +a platform. They do not change from release to release and should be used +by platform-recognition algorithms. +.P +Some applications want to make use of features that +are not part of the standard GL. These features +may be implemented as extensions to the standard GL. +The _const(EXTENSIONS) string is a space-separated +list of supported GL extensions. +(Extension names never contain a space character.) +.P +The _const(VERSION) string begins with a version number. +The version number uses one +of these forms: +.P +\f2major_number.minor_number\fP +.br +\f2major_number.minor_number.release_number\fP +.P +Vendor-specific information may follow the version +number. Its format depends on the implementation, but +a space always separates the version number and +the vendor-specific information. +.P +All strings are null-terminated. +.SH NOTES +If an error is generated, _cmnd returns 0. +.P +The client and server may support different versions or extensions. +_cmnd always returns a compatible version number or list of extensions. +The release number always describes the server. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/gettexenv.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/gettexenv.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/gettexenv.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,86 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetTexEnv,return texture environment parameters) +_names(GetTexEnv,[fi]v) +.SH PARAMETERS +_phead(_param1) +Specifies a texture environment. +Must be _const(TEXTURE_ENV). +_phead(_param2) +Specifies the symbolic name of a texture environment parameter. +Accepted values are _const(TEXTURE_ENV_MODE) and _const(TEXTURE_ENV_COLOR). +_phead(_param3) +Returns the requested data. +.SH DESCRIPTION +_cmnd returns in _param3 selected values of a texture environment that +was specified with _cmnd(TexEnv). +_param1 specifies a texture environment. +Currently, only one texture environment is defined and supported: +_const(TEXTURE_ENV). +.P +_param2 names a specific texture environment parameter, as follows: +.TP 10 +_const(TEXTURE_ENV_MODE) +_param3 returns the single-valued texture environment mode, +a symbolic constant. The initial value is _const(MODULATE). +.TP +_const(TEXTURE_ENV_COLOR) +_param3 returns four integer or floating-point values that are the +texture environment color. +Integer values, +when requested, +are linearly mapped from the internal floating-point representation +such that 1.0 maps to the most positive representable integer, +and \-1.0 maps to the most negative representable integer. The initial +value is (0, 0, 0, 0). +.SH NOTES +If an error is generated, +no change is made to the contents of _param3. +.P +When the _arbstring(multitexture) extension is supported, _cmnd returns +the texture environment parameters for the active texture unit. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 or _param2 is not an +accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(TexEnv) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/gettexgen.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/gettexgen.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/gettexgen.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,106 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetTexGen,return texture coordinate generation parameters) +_names(GetTexGen,[dfi]v) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a texture coordinate. +Must be +_const(S), +_const(T), +_const(R), or +_const(Q). +_phead(_param2) +Specifies the symbolic name of the value(s) to be returned. +Must be either _const(TEXTURE_GEN_MODE) +or the name of one of the texture generation plane equations: +_const(OBJECT_PLANE) or _const(EYE_PLANE). +_phead(_param3) +Returns the requested data. +.SH DESCRIPTION +_cmnd returns in _param3 selected parameters of a texture coordinate +generation function that was specified using _cmnd(TexGen). +_param1 names one of the (\f2s\fP, \f2t\fP, \f2r\fP, \f2q\fP) +texture coordinates, +using the symbolic constant +_const(S), +_const(T), +_const(R), or +_const(Q). +.P +_param2 specifies one of three symbolic names: +.TP 28 +_const(TEXTURE_GEN_MODE) +_param3 returns the single-valued texture generation function, +a symbolic constant. The initial value is _const(EYE_LINEAR). +.TP +_const(OBJECT_PLANE) +_param3 returns the four plane equation coefficients that specify +object linear-coordinate generation. +Integer values, when requested, +are mapped directly from the internal floating-point representation. +.BP +.TP +_const(EYE_PLANE) +_param3 returns the four plane equation coefficients that specify +eye linear-coordinate generation. +Integer values, +when requested, +are mapped directly from the internal floating-point representation. +The returned values are those maintained in eye coordinates. +They are not equal to the values specified using _cmnd(TexGen), +unless the modelview matrix was identity when _cmnd(TexGen) was called. +.SH NOTES +If an error is generated, +no change is made to the contents of _param3. +.P +When the _arbstring(multitexture) extension is supported, _cmnd returns +the texture coordinate generation parameters for the active texture unit. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 or _param2 is not an +accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(TexGen) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/getteximage.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/getteximage.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/getteximage.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,219 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetTexImage,return a texture image) +_names(GetTexImage) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies which texture is to be obtained. +_const(TEXTURE_1D), _const(TEXTURE_2D), and _const(TEXTURE_3D) are accepted. +_phead(_param2) +Specifies the level-of-detail number of the desired image. +Level 0 is the base image level. +Level $n$ is the $n$th mipmap reduction image. +_phead(_param3) +Specifies a pixel format for the returned data. +The supported formats are +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_C_ _const(ABGR_EXT), +_const(LUMINANCE), and +_const(LUMINANCE_ALPHA). +_phead(_param4) +Specifies a pixel type for the returned data. +The supported types are +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV). +_phead(_param5) +Returns the texture image. +Should be a pointer to an array of the type specified by _param4. +.SH DESCRIPTION +_cmnd returns a texture image into _param5. +_param1 specifies whether the desired texture image is one specified by +_cmnd(TexImage1D) (_const(TEXTURE_1D)), +_cmnd(TexImage2D) (_const(TEXTURE_2D)), or +_cmnd(TexImage3D) (_const(TEXTURE_3D)). +_param2 specifies the level-of-detail number of the desired image. +_param3 and _param4 specify the format and type of the desired image array. +See the reference pages _cmnd(TexImage1D) and _cmnd(DrawPixels) +for a description of the acceptable values for the _param3 and _param4 +parameters, respectively. +.P +To understand the operation of _cmnd, consider the selected internal +four-component texture image to be an RGBA color buffer the size of the image. +The semantics of _cmnd are then identical to those of _cmnd(ReadPixels), +with the exception that no pixel transfer operations are performed, +when called with the same _param3 and _param4, +with \f2x\fP and \f2y\fP set to 0, +\f2width\fP set to the width of the texture image +(including border if one was specified), +and \f2height\fP set to 1 for 1D images, +or to the height of the texture image +(including border if one was specified) +for 2D images. +.BP +Because the internal texture image is an RGBA image, +pixel formats _const(COLOR_INDEX), +_const(STENCIL_INDEX), +and _const(DEPTH_COMPONENT) are not accepted, +and pixel type _const(BITMAP) is not accepted. +.P +If the selected texture image does not contain four components, +the following mappings are applied. +Single-component textures are treated as RGBA buffers with red set +to the single-component value, +green set to 0, blue set to 0, and alpha set to 1. +Two-component textures are treated as RGBA buffers with red set to +the value of component zero, +alpha set to the value of component one, +and green and blue set to 0. +Finally, +three-component textures are treated as RGBA buffers with red set to +component zero, +green set to component one, +blue set to component two, +and alpha set to 1. +.P +To determine the required size of _param5, +use _cmnd(GetTexLevelParameter) to determine the dimensions of the +internal texture image, +then scale the required number of pixels by the storage required for +each pixel, +based on _param3 and _param4. +Be sure to take the pixel storage parameters into account, +especially _const(PACK_ALIGNMENT). +.SH NOTES +If an error is generated, +no change is made to the contents of _param5. +.P +When the _arbstring(multitexture) extension is supported, _cmnd returns +the texture image for the active texture unit. +.P +The types _const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), +_const(UNSIGNED_INT_2_10_10_10_REV), +and the formats +_const(BGR), and _const(BGRA) are available only if the GL version is +1.2 or greater. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1, _param3, or _param4 is not +an accepted value. +.P +_const(INVALID_VALUE) is generated if _param2 is less than 0. +.P +_const(INVALID_VALUE) may be generated if _param2 is greater +than $log sub 2 max$, +where $max$ is the returned value of _const(MAX_TEXTURE_SIZE). +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is returned if _param4 is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) and _param3 is not _const(RGB). +.P +_const(INVALID_OPERATION) is returned if _param4 is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV), and _param3 is neither _const(RGBA) +or _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(GetTexLevelParameter) with argument _const(TEXTURE_WIDTH) +.br +_cmnd(GetTexLevelParameter) with argument _const(TEXTURE_HEIGHT) +.br +_cmnd(GetTexLevelParameter) with argument _const(TEXTURE_BORDER) +.br +_cmnd(GetTexLevelParameter) with argument _const(TEXTURE_INTERNALFORMAT) +.br +_cmnd(Get) with arguments _const(PACK_ALIGNMENT) and others +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(DrawPixels), +_cmnd(ReadPixels), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D), +_cmnd(TexParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/gettexlevelparameter.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/gettexlevelparameter.gl:1.3 --- /dev/null Fri Jan 18 15:22:03 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/gettexlevelparameter.gl Mon Jan 14 17:13:33 2002 @@ -0,0 +1,185 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetTexLevelParameter,return texture parameter values for a specific level of detail) +_names(GetTexLevelParameter,[fi]v) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the symbolic name of the target texture, +either _const(TEXTURE_1D), _const(TEXTURE_2D), _const(TEXTURE_3D), +_const(PROXY_TEXTURE_1D), _const(PROXY_TEXTURE_2D), or +_const(PROXY_TEXTURE_3D). +_phead(_param2) +Specifies the level-of-detail number of the desired image. +Level 0 is the base image level. +Level $n$ is the $n$th mipmap reduction image. +_phead(_param3) +Specifies the symbolic name of a texture parameter. +_const(TEXTURE_WIDTH), +_const(TEXTURE_HEIGHT), +_const(TEXTURE_DEPTH), +_const(TEXTURE_INTERNAL_FORMAT), +_const(TEXTURE_BORDER), +_const(TEXTURE_RED_SIZE), +_const(TEXTURE_GREEN_SIZE), +_const(TEXTURE_BLUE_SIZE), +_const(TEXTURE_ALPHA_SIZE), +_const(TEXTURE_LUMINANCE_SIZE), and +_const(TEXTURE_INTENSITY_SIZE) are accepted. +_phead(_param4) +Returns the requested data. +.SH DESCRIPTION +_cmnd returns in _param4 texture parameter values for a specific +level-of-detail value, +specified as _param2. +_param1 defines the target texture, +either _const(TEXTURE_1D), _const(TEXTURE_2D), _const(TEXTURE_3D), +_const(PROXY_TEXTURE_1D), +_const(PROXY_TEXTURE_2D), or +_const(PROXY_TEXTURE_3D). +.BR +.P +_const(MAX_TEXTURE_SIZE), and _const(MAX_3D_TEXTURE_SIZE) are not really +descriptive enough. +It has to report the largest square texture image that can be +accommodated with mipmaps and borders, +but a long skinny texture, or a texture without mipmaps and borders, may +easily fit in texture memory. +The proxy targets allow the user to more accurately query +whether the GL can accommodate a texture of a given configuration. +If the texture cannot be accommodated, the texture state variables, which +may be queried with _cmnd, are set to 0. If the texture can be accommodated, +the texture state values will be set as they would be set for a +non-proxy target. +.P +_param3 specifies the texture parameter whose value or values +will be returned. +.P +The accepted parameter names are as follows: +.TP 10 +_const(TEXTURE_WIDTH) +_param4 returns a single value, +the width of the texture image. +This value includes the border of the texture image. The initial value is +0. +.TP +_const(TEXTURE_HEIGHT) +_param4 returns a single value, +the height of the texture image. +This value includes the border of the texture image. The initial value is +0. +.TP +_const(TEXTURE_DEPTH) +_param4 returns a single value, +the depth of the texture image. +This value includes the border of the texture image. The initial value is +0. +.TP +_const(TEXTURE_INTERNAL_FORMAT) +_param4 returns a single value, +the internal format of the texture image. +.TP +_const(TEXTURE_BORDER) +_param4 returns a single value, +the width in pixels of the border of the texture image. The initial value +is 0. +.TP +_const(TEXTURE_RED_SIZE), +.TP +_const(TEXTURE_GREEN_SIZE), +.TP +_const(TEXTURE_BLUE_SIZE), +.TP +_const(TEXTURE_ALPHA_SIZE), +.TP +_const(TEXTURE_LUMINANCE_SIZE), +.TP +_const(TEXTURE_INTENSITY_SIZE) +The internal storage resolution of an individual component. +The resolution chosen by the GL will be a close match for the resolution +requested by the user with the component argument of _cmnd(TexImage1D), +_cmnd(TexImage2D), _cmnd(TexImage3D), _cmnd(CopyTexImage1D), and +_cmnd(CopyTexImage2D). The initial value is 0. +.SH NOTES +If an error is generated, +no change is made to the contents of _param4. +.P +_const(TEXTURE_INTERNAL_FORMAT) is available only if the GL version is +1.1 or greater. In version 1.0, use _const(TEXTURE_COMPONENTS) +instead. +.P +_const(PROXY_TEXTURE_1D) and _const(PROXY_TEXTURE_2D) are +available only if the GL version is 1.1 or greater. +.P +_const(TEXTURE_3D), _const(PROXY_TEXTURE_3D), and _const(TEXTURE_DEPTH) +are available only if the GL version is 1.2 or greater. +.P +When the _arbstring(multitexture) extension is supported, _cmnd returns +the texture level parameters for the active texture unit. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 or _param3 is not an +accepted value. +.P +_const(INVALID_VALUE) is generated if _param2 is less than 0. +.P +_const(INVALID_VALUE) may be generated if _param2 is greater +than $ log sub 2$ \f2max\fP, +where \f2max\fP is the returned value of _const(MAX_TEXTURE_SIZE). +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(GetTexParameter), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D), +_cmnd(TexParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/gettexparameter.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/gettexparameter.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/gettexparameter.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,148 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(GetTexParameter,return texture parameter values) +_names(GetTexParameter,[fi]v) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the symbolic name of the target texture. +_const(TEXTURE_1D),_const(TEXTURE_2D), and _const(TEXTURE_3D) are accepted. +_phead(_param2) +Specifies the symbolic name of a texture parameter. +_const(TEXTURE_MAG_FILTER), +_const(TEXTURE_MIN_FILTER), +_const(TEXTURE_MIN_LOD), +_const(TEXTURE_MAX_LOD), +_const(TEXTURE_BASE_LEVEL), +_const(TEXTURE_MAX_LEVEL), +_const(TEXTURE_WRAP_S), +_const(TEXTURE_WRAP_T), +_const(TEXTURE_WRAP_R), +_const(TEXTURE_BORDER_COLOR), +_const(TEXTURE_PRIORITY), and +_const(TEXTURE_RESIDENT) are accepted. +_phead(_param3) +Returns the texture parameters. +.SH DESCRIPTION +_cmnd returns in _param3 the value or values of the texture parameter +specified as _param2. +_param1 defines the target texture, +either _const(TEXTURE_1D), _const(TEXTURE_2D), or _const(TEXTURE_3D) +to specify one-, two-, or three-dimensional texturing. +_param2 accepts the same symbols as _cmnd(TexParameter), +with the same interpretations: +.TP 35 +_const(TEXTURE_MAG_FILTER) +Returns the single-valued texture magnification filter, +a symbolic constant. The initial value is _const(LINEAR). +.TP +_const(TEXTURE_MIN_FILTER) +Returns the single-valued texture minification filter, +a symbolic constant. The initial value is _const(NEAREST_MIPMAP_LINEAR). +.TP +_const(TEXTURE_MIN_LOD) +Returns the single-valued texture minimum level-of-detail value. The +initial value is $-1000$. +.TP +_const(TEXTURE_MAX_LOD) +Returns the single-valued texture maximum level-of-detail value. The +initial value is 1000. +.TP +_const(TEXTURE_BASE_LEVEL) +Returns the single-valued base texture mipmap level. The initial value is 0. +.TP +_const(TEXTURE_MAX_LEVEL) +Returns the single-valued maximum texture mipmap array level. The initial +value is 1000. +.TP +_const(TEXTURE_WRAP_S) +Returns the single-valued wrapping function for texture coordinate $s$, +a symbolic constant. The initial value is _const(REPEAT). +.TP +_const(TEXTURE_WRAP_T) +Returns the single-valued wrapping function for texture coordinate $t$, +a symbolic constant. The initial value is _const(REPEAT). +.TP +_const(TEXTURE_WRAP_R) +Returns the single-valued wrapping function for texture coordinate $r$, +a symbolic constant. The initial value is _const(REPEAT). +.BP +.TP +_const(TEXTURE_BORDER_COLOR) +Returns four integer or floating-point numbers that comprise the RGBA color +of the texture border. +Floating-point values are returned in the range [0, 1]. +Integer values are returned as a linear mapping of the internal floating-point +representation such that 1.0 maps to the most positive representable +integer and \-1.0 maps to the most negative representable +integer. The initial value is (0, 0, 0, 0). +.TP +_const(TEXTURE_PRIORITY) +Returns the residence priority of the target texture (or the named +texture bound to it). The initial value is 1. +See _cmnd(PrioritizeTextures). +.TP +_const(TEXTURE_RESIDENT) +Returns the residence status of the target texture. +If the value returned in _param3 is _const(TRUE), the texture is +resident in texture memory. +See _cmnd(AreTexturesResident). +.SH NOTES +_const(TEXTURE_PRIORITY) and _const(TEXTURE_RESIDENT) are +available only if the GL version is 1.1 or greater. +.P +_const(TEXTURE_3D), +_const(TEXTURE_MIN_LOD), _const(TEXTURE_MAX_LOD), _const(TEXTURE_BASE_LEVEL), +_const(TEXTURE_MAX_LEVEL), and _const(TEXTURE_WRAP_R) are available only +if the GL version is 1.2 or greater. +.P +If an error is generated, +no change is made to the contents of _param3. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 or _param2 is not an +accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(AreTexturesResident), +_cmnd(PrioritizeTextures), +_cmnd(TexParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/hint.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/hint.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/hint.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,119 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Hint,specify implementation-specific hints) +_names(Hint) +.SH PARAMETERS +_phead(_param1) +Specifies a symbolic constant indicating the behavior to be controlled. +_const(FOG_HINT), +_const(LINE_SMOOTH_HINT), +_const(PERSPECTIVE_CORRECTION_HINT), +_const(POINT_SMOOTH_HINT), and +_const(POLYGON_SMOOTH_HINT) are accepted. +_phead(_param2) +Specifies a symbolic constant indicating the desired behavior. +_const(FASTEST), +_const(NICEST), and +_const(DONT_CARE) are accepted. +.SH DESCRIPTION +Certain aspects of GL behavior, +when there is room for interpretation, +can be controlled with hints. +A hint is specified with two arguments. +_param1 is a symbolic +constant indicating the behavior to be controlled, +and _param2 is another symbolic constant indicating the desired +behavior. The initial value for each _param1 is _const(DONT_CARE). +_param2 can be one of the following: +.TP 20 +_const(FASTEST) +The most efficient option should be chosen. +.TP +_const(NICEST) +The most correct, +or highest quality, +option should be chosen. +.TP +_const(DONT_CARE) +No preference. +.P +Though the implementation aspects that can be hinted are well defined, +the interpretation of the hints depends on the implementation. +The hint aspects that can be specified with _param1, +along with suggested semantics, +are as follows: +.TP 20 +_const(FOG_HINT) +Indicates the accuracy of fog calculation. +If per-pixel fog calculation is not efficiently supported +by the GL implementation, +hinting _const(DONT_CARE) or _const(FASTEST) can result in per-vertex +calculation of fog effects. +.TP +_const(LINE_SMOOTH_HINT) +Indicates the sampling quality of antialiased lines. +If a larger filter function is applied, hinting _const(NICEST) can +result in more pixel fragments being generated during rasterization, +.TP +_const(PERSPECTIVE_CORRECTION_HINT) +Indicates the quality of color and texture coordinate interpolation. +If perspective-corrected parameter interpolation is not efficiently supported +by the GL implementation, +hinting _const(DONT_CARE) or _const(FASTEST) can result in simple linear +interpolation of colors and/or texture coordinates. +.TP +_const(POINT_SMOOTH_HINT) +Indicates the sampling quality of antialiased points. +If a larger filter function is applied, hinting _const(NICEST) can +result in more pixel fragments being generated during rasterization, +.TP +_const(POLYGON_SMOOTH_HINT) +Indicates the sampling quality of antialiased polygons. +Hinting _const(NICEST) can result in more pixel fragments being generated +during rasterization, +if a larger filter function is applied. +.SH NOTES +The interpretation of hints depends on the implementation. +Some implementations ignore _cmnd(Hint) settings. +.SH ERRORS +_const(INVALID_ENUM) is generated if either _param1 or _param2 is not +an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/histogram.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/histogram.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/histogram.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,152 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_header(Histogram,define histogram table) +_names(Histogram) +.EQ +delim $$ +.EN +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__width>@,@<_param2>@)_C_ +_define(@<__internalformat>@,@<_param3>@)_C_ +_define(@<__sink>@,@<_param4>@)_C_ +.SH PARAMETERS +_phead(__target) +The histogram whose parameters are to be set. +Must be one of +_const(HISTOGRAM) or +_const(PROXY_HISTOGRAM). +_phead(__width) +The number of entries in the histogram table. Must be a power of 2. +_phead(__internalformat) +The format of entries in the histogram table. +Must be one of +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(R3_G3_B2), +_const(RGB), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), or +_const(RGBA16). +_phead(__sink) +If _const(TRUE), pixels will be consumed by the histogramming +process and no drawing or texture loading will take place. +If _const(FALSE), pixels will proceed to the minmax process after +histogramming. +.SH DESCRIPTION +When _const(HISTOGRAM) is enabled, RGBA color components are converted to +histogram table indices by clamping to the range [0,1], multiplying by +the width of the histogram table, and rounding to the nearest integer. +The table entries selected by the RGBA indices are then incremented. +(If the internal format of the histogram table includes luminance, then +the index derived from the R color component determines the luminance +table entry to be incremented.) If a histogram table entry is incremented +beyond its maximum value, then its value becomes undefined. (This is +not an error.) +.PP +Histogramming is performed only for RGBA pixels (though these may +be specified originally as color indices and converted to RGBA by +index table lookup). +Histogramming is enabled with _cmnd(Enable) and disabled with _cmnd(Disable). +.PP +When __target is _const(HISTOGRAM), _cmnd redefines the current +histogram table to have __width entries of the format specified by +__internalformat. +The entries are indexed 0 through $_eqnparam2 ~-~ 1$, and +all entries are initialized to zero. +The values in the previous histogram table, if any, are lost. +If __sink is _const(TRUE), then pixels are discarded after histogramming; +no further processing of the pixels takes place, and no drawing, +texture loading, or pixel readback will result. +.PP +When __target is _const(PROXY_HISTOGRAM), _cmnd computes all +state information as if the histogram table were to be redefined, +but does not actually define the new table. +If the requested histogram table is too large to be supported, then the +state information will be set to zero. +This provides a way to determine if a histogram table with the given +parameters can be supported. +.PP +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not one of the allowable +values. +.P +_const(INVALID_VALUE) is generated if __width is less than zero or is +not a power of 2. +.P +_const(INVALID_ENUM) is generated if __internalformat is not one of the +allowable values. +.P +_const(TABLE_TOO_LARGE) is generated if __target is _const(HISTOGRAM) +and the histogram table specified is too large for the implementation. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetHistogramParameter) +.SH SEE ALSO +_cmnd(GetHistogram), +_cmnd(ResetHistogram) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/index.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/index.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/index.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,78 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Index,set the current color index) +.P +_names(Index,u*[bsifd]) +.SH PARAMETERS +_phead(_param1) +Specifies the new value for the current color index. +.P +_names(Index,u*[bsifd]v) +.SH PARAMETERS +_phead(_param1) +Specifies a pointer to a one-element array that contains +the new value for the current color index. +.SH DESCRIPTION +_cmnd updates the current (single-valued) color index. +It takes one argument, the new value for the current color index. +.P +The current index is stored as a floating-point value. +Integer values are converted directly to floating-point values, +with no special mapping. +The initial value is 1. +.P +Index values outside the representable range of the color index buffer +are not clamped. +However, +before an index is dithered (if enabled) and written to the frame buffer, +it is converted to fixed-point format. +Any bits in the integer portion of the resulting fixed-point value +that do not correspond to bits in the frame buffer are masked out. +.SH NOTES +_cmnd(Indexub) and _cmnd(Indexubv) are available only if the GL version is +1.1 or greater. +.P +The current index can be updated at any time. +In particular, +_cmnd can be called between a call to _cmnd(Begin) and the corresponding +call to _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(CURRENT_INDEX) +.SH SEE ALSO +_cmnd(Color), +_cmnd(IndexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/indexmask.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/indexmask.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/indexmask.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,75 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(IndexMask,control the writing of individual bits in the color index buffers) +_names(IndexMask) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a bit mask to enable and disable the writing of individual bits +in the color index buffers. +Initially, the mask is all 1's. +.SH DESCRIPTION +_cmnd controls the writing of individual bits in the color index buffers. +The least significant $n$ bits of _param1, +where $n$ is the number of bits in a color index buffer, +specify a mask. +Where a 1 (one) appears in the mask, +it's possible to write to the corresponding bit in the color index +buffer (or buffers). +Where a 0 (zero) appears, +the corresponding bit is write-protected. +.P +This mask is used only in color index mode, +and it affects only the buffers currently selected for writing +(see _cmnd(DrawBuffer)). +Initially, all bits are enabled for writing. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(INDEX_WRITEMASK) +.SH SEE ALSO +_cmnd(ColorMask), +_cmnd(DepthMask), +_cmnd(DrawBuffer), +_cmnd(Index), +_cmnd(IndexPointer), +_cmnd(StencilMask) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/indexpointer.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/indexpointer.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/indexpointer.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,139 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ A real line follows. +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ Use GL not OpenGL +_C_ Don't change the ordering of the main headers. +_C_ C specification (or fortran) is handled automatically +_C_ .TH is automatically added to the top of this file. +_C_ Below, use current tense, active do not capitalize the first word and dont +_C_ use a period. +_C_ the function name must appear in (APIFILE) (usually gl.h) as set in +_C_ Makefile. +_header(IndexPointer,define an array of color indexes) +_names(IndexPointer) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the data type of each color index in the array. +Symbolic constants +_const(UNSIGNED_BYTE), +_const(SHORT), +_const(INT), +_const(FLOAT), +and _const(DOUBLE) +are accepted. The initial value is _const(FLOAT). +_phead(_param2) +Specifies the byte offset between consecutive color indexes. +If _param2 is 0 (the initial value), the color indexes are understood to +be tightly packed in the array. +The initial value is 0. +_phead(_param3) +Specifies a pointer to the first index in the array. +The initial value is 0. +.SH DESCRIPTION +_cmnd specifies the location and data format of an array of color indexes +to use when rendering. +_param1 specifies the data type of +each color index and _param2 gives the byte stride from one +color index to the next allowing vertices and attributes +to be packed into a single array or stored in separate arrays. +(Single-array storage may be more efficient on some implementations; +see _cmnd(InterleavedArrays).) +.P +_param1, _param2, and _param3 are saved as client-side +state. +.P +The color index array is initially disabled. To enable and disable +the array, call _cmnd(EnableClientState) and +_cmnd(DisableClientState) with the argument _const(INDEX_ARRAY). If +enabled, the color index array is used when _cmnd(DrawArrays), +_cmnd(DrawElements) or _cmnd(ArrayElement) is called. +.P +Use _cmnd(DrawArrays) to construct a sequence of primitives (all of +the same type) from prespecified vertex and vertex attribute arrays. +Use _cmnd(ArrayElement) to specify primitives +by indexing vertices and vertex attributes and _cmnd(DrawElements) to +construct a sequence of primitives by indexing vertices and vertex attributes. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +The color index array is initially disabled, and it isn't accessed when +_cmnd(ArrayElement), _cmnd(DrawElements), or _cmnd(DrawArrays) is called. +.P +Execution of _cmnd is not allowed between +_cmnd(Begin) and the corresponding _cmnd(End), +but an error may or may not be generated. If an error is not generated, +the operation is undefined. +.P +_cmnd is typically implemented on the client side. +.P +Since the color index array parameters are client-side state, they are +not saved or restored by _cmnd(PushAttrib) and _cmnd(PopAttrib). +Use _cmnd(PushClientAttrib) and +_cmnd(PopClientAttrib) instead. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param2 is negative. +.SH ASSOCIATED GETS +_cmnd(IsEnabled) with argument _const(INDEX_ARRAY) +.br +_cmnd(Get) with argument _const(INDEX_ARRAY_TYPE) +.br +_cmnd(Get) with argument _const(INDEX_ARRAY_STRIDE) +.br +_cmnd(GetPointerv) with argument _const(INDEX_ARRAY_POINTER) +.SH SEE ALSO +_C_ no queries or gets listed above, alphabetize commands, +_C_ seperate with commas not .br. no command appears in the associated gets +_C_ as well as in SEE ALSO. +_cmnd(ArrayElement), +_cmnd(ColorPointer), +_cmnd(DrawArrays), +_cmnd(DrawElements), +_cmnd(EdgeFlagPointer), +_cmnd(Enable), +_cmnd(GetPointerv), +_cmnd(InterleavedArrays), +_cmnd(NormalPointer), +_cmnd(PopClientAttrib), +_cmnd(PushClientAttrib), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/initnames.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/initnames.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/initnames.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,58 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_header(InitNames,initialize the name stack) +_names(InitNames) +.SH DESCRIPTION +The name stack is used during selection mode to allow sets of rendering +commands to be uniquely identified. +It consists of an ordered set of unsigned integers. +_cmnd causes the name stack to be initialized to its default empty state. +.P +The name stack is always empty while the render mode is not _const(SELECT). +Calls to _cmnd while the render mode is not _const(SELECT) are ignored. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) and the corresponding execution of +_cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(NAME_STACK_DEPTH) +.br +_cmnd(Get) with argument _const(MAX_NAME_STACK_DEPTH) +.SH SEE ALSO +_cmnd(LoadName), +_cmnd(PushName), +_cmnd(RenderMode), +_cmnd(SelectBuffer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/interleavedarrays.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/interleavedarrays.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/interleavedarrays.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,131 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ A real line follows. +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ Use GL not OpenGL +_C_ Don't change the ordering of the main headers. +_C_ C specification (or fortran) is handled automatically +_C_ .TH is automatically added to the top of this file. +_C_ Below, use current tense, active do not capitalize the first word +_C_ and don't use a period. +_header(InterleavedArrays, simultaneously specify and enable several interleaved arrays) +_names(InterleavedArrays) +.SH PARAMETERS +_phead(_param1) +Specifies the type of array to enable. Symbolic constants +_const(V2F), +_const(V3F), +_const(C4UB_V2F), +_const(C4UB_V3F), +_const(C3F_V3F), +_const(N3F_V3F), +_const(C4F_N3F_V3F), +_const(T2F_V3F), +_const(T4F_V4F), +_const(T2F_C4UB_V3F), +_const(T2F_C3F_V3F), +_const(T2F_N3F_V3F), +_const(T2F_C4F_N3F_V3F), +and +_const(T4F_C4F_N3F_V4F) +are accepted. +_phead(_param2) +Specifies the offset in bytes between each aggregate array element. +.SH DESCRIPTION +_cmnd lets you specify and enable individual color, +normal, +texture and vertex +arrays whose elements are part of a larger aggregate array element. +For some implementations, this is more efficient than specifying the arrays +separately. +.P +If _param2 is 0, the aggregate elements are stored consecutively. +Otherwise, _param2 bytes occur between the beginning of one +aggregate array element and the beginning of the next aggregate array +element. +.P +_param1 serves as a ``key'' +describing the extraction of individual arrays from the aggregate array. +If _param1 contains a T, then texture coordinates are +extracted from the interleaved array. If C is present, color values +are extracted. If N is present, normal coordinates are extracted. +Vertex coordinates are always extracted. +.P +The digits 2, 3, and 4 denote how many values are extracted. +F indicates that values are extracted as floating-point values. +Colors may also be extracted as 4 unsigned bytes if 4UB follows the +C. If a color is extracted as 4 unsigned bytes, the vertex +array element which follows is located at the first possible +floating-point aligned address. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +If _cmnd is called while compiling a display list, it is not +compiled into the list, and it is executed immediately. +.P +Execution of _cmnd is not allowed between the execution of +_cmnd(Begin) and the corresponding execution of _cmnd(End), +but an error may or may not be generated. If no error is generated, +the operation is undefined. +.P +_cmnd is typically implemented on the client side. +.P +Vertex array parameters are client-side state and are therefore not +saved or restored by _cmnd(PushAttrib) and _cmnd(PopAttrib). +Use _cmnd(PushClientAttrib) and _cmnd(PopClientAttrib) instead. +.P +When the _arbstring(multitexture) extension is supported, _cmnd +only updates the texture coordinate array for the active active texture +unit. The texture coordinate state for other client texture units is not +update, regardless if they are enabled or not. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param2 is negative. +.SH SEE ALSO +_cmnd(ArrayElement), +_cmnd(ClientActiveTextureARB), +_cmnd(ColorPointer), +_cmnd(DrawArrays), +_cmnd(DrawElements), +_cmnd(EdgeFlagPointer), +_cmnd(EnableClientState), +_cmnd(GetPointer), +_cmnd(IndexPointer), +_cmnd(NormalPointer), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/isenabled.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/isenabled.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/isenabled.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,178 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn|tbl)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(IsEnabled, test whether a capability is enabled) +_names(IsEnabled) +.SH PARAMETERS +_phead(_param1) +Specifies a symbolic constant indicating a GL capability. +.SH DESCRIPTION +_cmnd returns _const(TRUE) if _param1 is an enabled capability +and returns _const(FALSE) otherwise. +Initially all capabilities except _const(DITHER) are disabled; +_const(DITHER) is initially enabled. +.P +The following capabilities are accepted for _param1: +.P + +.TS +lb lb +l l. +_ +Constant See +_ +_const(ALPHA_TEST) _cmnd(AlphaFunc) +_const(AUTO_NORMAL) _cmnd(EvalCoord) +_const(BLEND) _cmnd(BlendFunc), _cmnd(LogicOp) +_const(CLIP_PLANE)\f2i\fP _cmnd(ClipPlane) +_const(COLOR_ARRAY) _cmnd(ColorPointer) +_const(COLOR_LOGIC_OP) _cmnd(LogicOp) +_const(COLOR_MATERIAL) _cmnd(ColorMaterial) +_const(COLOR_TABLE) _cmnd(ColorTable) +_const(CONVOLUTION_1D) _cmnd(ConvolutionFilter1D) +_const(CONVOLUTION_2D) _cmnd(ConvolutionFilter2D) +_const(CULL_FACE) _cmnd(CullFace) +_const(DEPTH_TEST) _cmnd(DepthFunc), _cmnd(DepthRange) +_const(DITHER) _cmnd(Enable) +_const(EDGE_FLAG_ARRAY) _cmnd(EdgeFlagPointer) +_const(FOG) _cmnd(Fog) +_const(HISTOGRAM) _cmnd(Histogram) +_const(INDEX_ARRAY) _cmnd(IndexPointer) +_const(INDEX_LOGIC_OP) _cmnd(LogicOp) +_const(LIGHT)\f2i\fP _cmnd(LightModel), _cmnd(Light) +_const(LIGHTING) _cmnd(Material), _cmnd(LightModel), _cmnd(Light) +_const(LINE_SMOOTH) _cmnd(LineWidth) +_const(LINE_STIPPLE) _cmnd(LineStipple) +_const(MAP1_COLOR_4) _cmnd(Map1) +_const(MAP1_INDEX) _cmnd(Map1) +_const(MAP1_NORMAL) _cmnd(Map1) +_const(MAP1_TEXTURE_COORD_1) _cmnd(Map1) +_const(MAP1_TEXTURE_COORD_2) _cmnd(Map1) +_const(MAP1_TEXTURE_COORD_3) _cmnd(Map1) +_const(MAP1_TEXTURE_COORD_4) _cmnd(Map1) +_const(MAP2_COLOR_4) _cmnd(Map2) +_const(MAP2_INDEX) _cmnd(Map2) +_const(MAP2_NORMAL) _cmnd(Map2) +_const(MAP2_TEXTURE_COORD_1) _cmnd(Map2) +_const(MAP2_TEXTURE_COORD_2) _cmnd(Map2) +_const(MAP2_TEXTURE_COORD_3) _cmnd(Map2) +_const(MAP2_TEXTURE_COORD_4) _cmnd(Map2) +_const(MAP2_VERTEX_3) _cmnd(Map2) +_const(MAP2_VERTEX_4) _cmnd(Map2) +_const(MINMAX) _cmnd(Minmax) +_const(NORMAL_ARRAY) _cmnd(NormalPointer) +_const(NORMALIZE) _cmnd(Normal) +_const(POINT_SMOOTH) _cmnd(PointSize) +_const(POLYGON_SMOOTH) _cmnd(PolygonMode) +_const(POLYGON_OFFSET_FILL) _cmnd(PolygonOffset) +_const(POLYGON_OFFSET_LINE) _cmnd(PolygonOffset) +_const(POLYGON_OFFSET_POINT) _cmnd(PolygonOffset) +_const(POLYGON_STIPPLE) _cmnd(PolygonStipple) +_const(POST_COLOR_MATRIX_COLOR_TABLE) _cmnd(ColorTable) +_const(POST_CONVOLUTION_COLOR_TABLE) _cmnd(ColorTable) +_const(RESCALE_NORMAL) _cmnd(Normal) +_const(SCISSOR_TEST) _cmnd(Scissor) +_const(SEPARABLE_2D) _cmnd(SeparableFilter2D) +_const(STENCIL_TEST) _cmnd(StencilFunc), _cmnd(StencilOp) +_const(TEXTURE_1D) _cmnd(TexImage1D) +_const(TEXTURE_2D) _cmnd(TexImage2D) +_const(TEXTURE_3D) _cmnd(TexImage3D) +_const(TEXTURE_COORD_ARRAY) _cmnd(TexCoordPointer) +_const(TEXTURE_GEN_Q) _cmnd(TexGen) +_const(TEXTURE_GEN_R) _cmnd(TexGen) +_const(TEXTURE_GEN_S) _cmnd(TexGen) +_const(TEXTURE_GEN_T) _cmnd(TexGen) +_const(VERTEX_ARRAY) _cmnd(VertexPointer) +_ +.TE + +.SH NOTES +If an error is generated, +_cmnd returns 0. +.P +_const(COLOR_LOGIC_OP), +_const(COLOR_ARRAY), +_const(EDGE_FLAG_ARRAY), +_const(INDEX_ARRAY), +_const(INDEX_LOGIC_OP), +_const(NORMAL_ARRAY), +_const(POLYGON_OFFSET_FILL), +_const(POLYGON_OFFSET_LINE), +_const(POLYGON_OFFSET_POINT), +_const(TEXTURE_COORD_ARRAY), and +_const(VERTEX_ARRAY) +are available only +if the GL version is 1.1 or greater +.P +_const(RESCALE_NORMAL), and _const(TEXTURE_3D) are available only if the GL +version is 1.2 or greater. +.P +_const(COLOR_TABLE), _const(CONVOLUTION_1D), _const(CONVOLUTION_2D), +_const(HISTOGRAM), _const(MINMAX), +_const(POST_COLOR_MATRIX_COLOR_TABLE), +_const(POST_CONVOLUTION_COLOR_TABLE), and +_const(SEPARABLE_2D) are available only if _arbstring(imaging) is +returned when _cmnd(Get) is called with _const(EXTENSIONS). +.P +When the _arbstring(multitexture) extension is supported, the following +parameters return the associated value for the active texture unit. +_const(TEXTURE_1D), _const(TEXTURE_BINDING_1D), +_const(TEXTURE_2D), _const(TEXTURE_BINDING_2D), +_const(TEXTURE_3D), _const(TEXTURE_BINDING_3D), +_const(TEXTURE_GEN_S), +_const(TEXTURE_GEN_T), +_const(TEXTURE_GEN_R), +_const(TEXTURE_GEN_Q), +_const(TEXTURE_MATRIX), and +_const(TEXTURE_STACK_DEPTH). +Likewise, the following parameters return the associated value for the +active client texture unit: +_const(TEXTURE_COORD_ARRAY), +_const(TEXTURE_COORD_ARRAY_SIZE), +_const(TEXTURE_COORD_ARRAY_STRIDE), +_const(TEXTURE_COORD_ARRAY_TYPE). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(Enable), +_cmnd(EnableClientState), +_cmnd(Get) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/islist.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/islist.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/islist.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,56 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(IsList,determine if a name corresponds to a display-list) +_names(IsList) +.SH PARAMETERS +_phead(_param1) +Specifies a potential display-list name. +.SH DESCRIPTION +_cmnd returns _const(TRUE) if _param1 is the name +of a display list and returns _const(FALSE) otherwise. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of +_cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(CallList), +_cmnd(CallLists), +_cmnd(DeleteLists), +_cmnd(GenLists), +_cmnd(NewList) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/istexture.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/istexture.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/istexture.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,64 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(IsTexture,determine if a name corresponds to a texture) +_names(IsTexture) +.SH PARAMETERS +_phead(_param1) +Specifies a value that may be the name of a texture. +.SH DESCRIPTION +_cmnd returns _const(TRUE) if _param1 is currently the name of a texture. +If _param1 is zero, or is a non-zero value that is not currently the +name of a texture, or if an error occurs, _cmnd returns _const(FALSE). +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH SEE ALSO +_cmnd(BindTexture), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(DeleteTextures), +_cmnd(GenTextures), +_cmnd(Get), +_cmnd(GetTexParameter), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/light.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/light.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/light.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,241 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Light,set light source parameters) +_names(Light,[fi]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a light. +The number of lights depends on the implementation, +but at least eight lights are supported. +They are identified by symbolic names of the form _const(LIGHT)$i$ +where 0 \(<= $ i $ < _const(MAX_LIGHTS). +_phead(_param2) +Specifies a single-valued light source parameter for _param1. +_const(SPOT_EXPONENT), +_const(SPOT_CUTOFF), +_const(CONSTANT_ATTENUATION), +_const(LINEAR_ATTENUATION), and +_const(QUADRATIC_ATTENUATION) are accepted. +_phead(_param3) +Specifies the value that parameter _param2 of light source _param1 +will be set to. +_names(Light,[fi]v) +.SH PARAMETERS +_phead(_param1) +Specifies a light. +The number of lights depends on the implementation, but +at least eight lights are supported. +They are identified by symbolic names of the form _const(LIGHT)$i$ +where 0 \(<= $ i $ < _const(MAX_LIGHTS). +_phead(_param2) +Specifies a light source parameter for _param1. +_const(AMBIENT), +_const(DIFFUSE), +_const(SPECULAR), +_const(POSITION), +_const(SPOT_CUTOFF), +_const(SPOT_DIRECTION), +_const(SPOT_EXPONENT), +_const(CONSTANT_ATTENUATION), +_const(LINEAR_ATTENUATION), and +_const(QUADRATIC_ATTENUATION) are accepted. +_phead(_param3) +Specifies a pointer to the value or values that parameter _param2 +of light source _param1 will be set to. +.SH DESCRIPTION +_cmnd sets the values of individual light source parameters. +_param1 names the light and is a symbolic name of the form _const(LIGHT)$i$, +where 0 \(<= i < _const(MAX_LIGHTS). +_param2 specifies one of ten light source parameters, +again by symbolic name. +_param3 is either a single value or a pointer to an array that contains +the new values. +.P +To enable and disable lighting calculation, call _cmnd(Enable) +and _cmnd(Disable) with argument _const(LIGHTING). Lighting is +initially disabled. +When it is enabled, +light sources that are enabled contribute to the lighting calculation. +Light source $i$ is enabled and disabled using _cmnd(Enable) and +_cmnd(Disable) with argument _const(LIGHT)$i$. +.P +The ten light parameters are as follows: +.TP 20 +_const(AMBIENT) +_param3 contains four integer or floating-point values that specify +the ambient RGBA intensity of the light. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial ambient light intensity is (0, 0, 0, 1). +.TP +_const(DIFFUSE) +_param3 contains four integer or floating-point values that specify +the diffuse RGBA intensity of the light. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial value +for _const(LIGHT0) is (1, 1, 1, 1); for other lights, the +initial value is (0, 0, 0, 0). +.TP +_const(SPECULAR) +_param3 contains four integer or floating-point values that specify +the specular RGBA intensity of the light. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial value +for _const(LIGHT0) is (1, 1, 1, 1); for other lights, the +initial value is (0, 0, 0, 0). +.TP +_const(POSITION) +_param3 contains four integer or floating-point values that specify +the position of the light in homogeneous object coordinates. +Both integer and floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +.IP +The position is transformed by the modelview matrix when +_cmnd is called (just as if it were a point), +and it is stored in eye coordinates. +If the $w$ component of the position is 0, +the light is treated as a directional source. +Diffuse and specular lighting calculations take the light's direction, +but not its actual position, +into account, +and attenuation is disabled. +Otherwise, +diffuse and specular lighting calculations are based on the actual location +of the light in eye coordinates, +and attenuation is enabled. +The initial position is (0, 0, 1, 0); +thus, the initial light source is directional, +parallel to, and in the direction of the $-z$ axis. +.TP +_const(SPOT_DIRECTION) +_param3 contains three integer or floating-point values that specify +the direction of the light in homogeneous object coordinates. +Both integer and floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +.IP +The spot direction is transformed by the inverse of the modelview matrix when +_cmnd is called (just as if it were a normal), +and it is stored in eye coordinates. +It is significant only when _const(SPOT_CUTOFF) is not 180, +which it is initially. +The initial direction is (0, 0, \-1). +.TP +_const(SPOT_EXPONENT) +_param3 is a single integer or floating-point value that specifies +the intensity distribution of the light. +Integer and floating-point values are mapped directly. +Only values in the range [0,128] are accepted. +.IP +Effective light intensity is attenuated by the cosine of the angle between +the direction of the light and the direction from the light to the vertex +being lighted, +raised to the power of the spot exponent. +Thus, higher spot exponents result in a more focused light source, +regardless of the spot cutoff angle (see _const(SPOT_CUTOFF), next paragraph). +The initial spot exponent is 0, +resulting in uniform light distribution. +.TP +_const(SPOT_CUTOFF) +_param3 is a single integer or floating-point value that specifies +the maximum spread angle of a light source. +Integer and floating-point values are mapped directly. +Only values in the range [0,90] and the special value 180 +are accepted. +If the angle between the direction of the light and the direction from the +light to the vertex being lighted is greater than the spot cutoff angle, +the light is completely masked. +.BP +Otherwise, its intensity is controlled by the spot exponent and the +attenuation factors. +The initial spot cutoff is 180, +resulting in uniform light distribution. +.TP +_const(CONSTANT_ATTENUATION) +.TP +_const(LINEAR_ATTENUATION ) +.TP +_const(QUADRATIC_ATTENUATION) +_param3 is a single integer or floating-point value that specifies +one of the three light attenuation factors. +Integer and floating-point values are mapped directly. +Only nonnegative values are accepted. +If the light is positional, +rather than directional, +its intensity is attenuated by the reciprocal of the sum of the constant +factor, the linear factor times the distance between the light +and the vertex being lighted, +and the quadratic factor times the square of the same distance. +The initial attenuation factors are (1, 0, 0), +resulting in no attenuation. +.SH NOTES +It is always the case that _const(LIGHT)$i$ = _const(LIGHT0) + $i$. +.SH ERRORS +_const(INVALID_ENUM) is generated if either _param1 or _param2 +is not an accepted value. +.P +_const(INVALID_VALUE) is generated if a spot exponent value is specified +outside the range [0,128], +or if spot cutoff is specified outside the range [0,90] (except for the +special value 180), +or if a negative attenuation factor is specified. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed between +the execution of +_cmnd(Begin) and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetLight) +.br +_cmnd(IsEnabled) with argument _const(LIGHTING) +.SH SEE ALSO +_cmnd(ColorMaterial), +_cmnd(LightModel), +_cmnd(Material) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/lightmodel.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/lightmodel.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/lightmodel.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,173 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(LightModel,set the lighting model parameters) +_names(LightModel,[fi]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a single-valued lighting model parameter. +_const(LIGHT_MODEL_LOCAL_VIEWER), +_const(LIGHT_MODEL_COLOR_CONTROL), and +_const(LIGHT_MODEL_TWO_SIDE) are accepted. +_phead(_param2) +Specifies the value that _param2 will be set to. +_names(LightModel,[fi]v) +.SH PARAMETERS +_phead(_param1) +Specifies a lighting model parameter. +_const(LIGHT_MODEL_AMBIENT), +_const(LIGHT_MODEL_COLOR_CONTROL), +_const(LIGHT_MODEL_LOCAL_VIEWER), and +_const(LIGHT_MODEL_TWO_SIDE) are accepted. +_phead(_param2) +Specifies a pointer to the value or values that _param2 will be set to. +.SH DESCRIPTION +_cmnd sets the lighting model parameter. +_param1 names a parameter and _param2 gives the new value. +There are three lighting model parameters: +.TP 10 +_const(LIGHT_MODEL_AMBIENT) +_param2 contains four integer or floating-point values that specify +the ambient RGBA intensity of the entire scene. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial ambient scene intensity is (0.2, 0.2, 0.2, 1.0). +.TP +_const(LIGHT_MODEL_COLOR_CONTROL) +_param2 must be either _const(SEPARATE_SPECULAR_COLOR) or +_const(SINGLE_COLOR). +_const(SINGLE_COLOR) specifies that a single color is generated from the +lighting computation for a vertex. _const(SEPARATE_SPECULAR_COLOR) +specifies that the specular color computation of lighting be stored +separately from the remainder of the lighting computation. The specular +color is summed into the generated fragment's color after the application +of texture mapping (if enabled). The initial value is _const(SINGLE_COLOR). +.TP +_const(LIGHT_MODEL_LOCAL_VIEWER) +_param2 is a single integer or floating-point value that specifies +how specular reflection angles are computed. +If _param2 is 0 (or 0.0), specular reflection angles take the +view direction to be parallel to and in the direction of the -\f2z\fP axis, +regardless of the location of the vertex in eye coordinates. +Otherwise, specular reflections are computed from the origin +of the eye coordinate system. +The initial value is 0. +.TP +_const(LIGHT_MODEL_TWO_SIDE) +_param2 is a single integer or floating-point value that specifies +whether one- or two-sided lighting calculations are done for polygons. +It has no effect on the lighting calculations for points, +lines, +or bitmaps. +If _param2 is 0 (or 0.0), one-sided lighting is specified, +and only the \f2front\fP material parameters are used in the +lighting equation. +Otherwise, two-sided lighting is specified. +In this case, vertices of back-facing polygons are lighted using the +\f2back\fP material parameters, +and have their normals reversed before the lighting equation is evaluated. +Vertices of front-facing polygons are always lighted using the +\f2front\fP material parameters, +with no change to their normals. The initial value is 0. +.P +In RGBA mode, the lighted color of a vertex is the sum of +the material emission intensity, +the product of the material ambient reflectance and the lighting model full-scene +ambient intensity, +and the contribution of each enabled light source. +Each light source contributes the sum of three terms: +ambient, diffuse, and specular. +The ambient light source contribution is the product of the material ambient +reflectance and the light's ambient intensity. +The diffuse light source contribution is the product of the material diffuse +reflectance, +the light's diffuse intensity, +and the dot product of the vertex's normal with the normalized vector from +the vertex to the light source. +The specular light source contribution is the product of the material specular +reflectance, +the light's specular intensity, +and the dot product of the normalized vertex-to-eye and vertex-to-light +vectors, +raised to the power of the shininess of the material. +All three light source contributions are attenuated equally based on +the distance from the vertex to the light source and on light source +direction, spread exponent, and spread cutoff angle. +All dot products are replaced with 0 if they evaluate to a negative value. +.P +The alpha component of the resulting lighted color is set to the alpha value +of the material diffuse reflectance. +.P +In color index mode, +the value of the lighted index of a vertex ranges from the ambient +to the specular values passed to _cmnd(Material) using _const(COLOR_INDEXES). +Diffuse and specular coefficients, +computed with a (.30, .59, .11) weighting of the lights' colors, +the shininess of the material, +and the same reflection and attenuation equations as in the RGBA case, +determine how much above ambient the resulting index is. +.SH NOTES +_const(LIGHT_MODEL_COLOR_CONTROL) is available only if the GL version is +1.2 or greater. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_ENUM) is generated if _param1 is +_const(LIGHT_MODEL_COLOR_CONTROL) and _param2 is not one of +_const(SINGLE_COLOR) or _const(SEPARATE_SPECULAR_COLOR). +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed between +the execution of _cmnd(Begin) and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(LIGHT_MODEL_AMBIENT) +.br +_cmnd(Get) with argument _const(LIGHT_MODEL_COLOR_CONTROL) +.br +_cmnd(Get) with argument _const(LIGHT_MODEL_LOCAL_VIEWER) +.br +_cmnd(Get) with argument _const(LIGHT_MODEL_TWO_SIDE) +.br +_cmnd(IsEnabled) with argument _const(LIGHTING) +.SH SEE ALSO +_cmnd(Light), +_cmnd(Material) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/linestipple.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/linestipple.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/linestipple.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,101 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(LineStipple,specify the line stipple pattern) +_names(LineStipple) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a multiplier for each bit in the line stipple pattern. +If _param1 is 3, +for example, +each bit in the pattern is used three times +before the next bit in the pattern is used. +_param1 is clamped to the range [1, 256] and defaults to 1. +_phead(_param2) +Specifies a 16-bit integer whose bit pattern determines +which fragments of a line will be drawn when the line is rasterized. +Bit zero is used first; the default pattern is all 1's. +.SH DESCRIPTION +Line stippling masks out certain fragments produced by rasterization; +those fragments will not be drawn. +The masking is achieved by using three parameters: +the 16-bit line stipple pattern _param2, +the repeat count _param1, +and an integer stipple counter $s$. +.P +Counter $s$ is reset to 0 whenever _cmnd(Begin) is called, +and before each line segment of a _cmnd(Begin)(_const(LINES))/_cmnd(End) +sequence is generated. +It is incremented after each fragment of a unit width aliased line segment is generated, +or after each $i$ fragments of an $i$ width line segment are generated. +The $i$ fragments associated with count $s$ are masked out if +.sp +.ce +_param2 bit $(s ~/~ _eqnparam1) ~roman mod~ 16$ +.sp +is 0, otherwise these fragments are sent to the frame buffer. +Bit zero of _param2 is the least significant bit. +.P +Antialiased lines are treated as a sequence of $1 times width$ rectangles +for purposes of stippling. +Whether rectagle $s$ is rasterized or not depends on the fragment rule +described for aliased lines, +counting rectangles rather than groups of fragments. +.P +To enable and disable line stippling, call _cmnd(Enable) and _cmnd(Disable) +with argument _const(LINE_STIPPLE). +When enabled, +the line stipple pattern is applied as described above. +When disabled, +it is as if the pattern were all 1's. +Initially, line stippling is disabled. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(LINE_STIPPLE_PATTERN) +.br +_cmnd(Get) with argument _const(LINE_STIPPLE_REPEAT) +.br +_cmnd(IsEnabled) with argument _const(LINE_STIPPLE) +.SH SEE ALSO +_cmnd(LineWidth), +_cmnd(PolygonStipple) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/linewidth.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/linewidth.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/linewidth.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,114 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(LineWidth,specify the width of rasterized lines) +_names(LineWidth) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the width of rasterized lines. +The initial value is 1. +.SH DESCRIPTION +_cmnd specifies the rasterized width of both aliased and antialiased +lines. +Using a line width other than 1 has different effects, +depending on whether line antialiasing is enabled. +To enable and disable line antialiasing, call +_cmnd(Enable) and _cmnd(Disable) +with argument _const(LINE_SMOOTH). Line antialiasing is initially +disabled. +.P +If line antialiasing is disabled, +the actual width is determined by rounding the supplied width +to the nearest integer. +(If the rounding results in the value 0, +it is as if the line width were 1.) +If +$| DELTA x | ~>=~ | DELTA y |$, +\f2i\fP pixels are filled in each column that is rasterized, +where \f2i\fP is the rounded value of _param1. +Otherwise, +\f2i\fP pixels are filled in each row that is rasterized. +.P +If antialiasing is enabled, +line rasterization produces a fragment for each pixel square +that intersects the region lying within the rectangle having width +equal to the current line width, +length equal to the actual length of the line, +and centered on the mathematical line segment. +The coverage value for each fragment is the window coordinate area +of the intersection of the rectangular region with the corresponding +pixel square. +This value is saved and used in the final rasterization step. +.P +Not all widths can be supported when line antialiasing is enabled. If an +unsupported width is requested, the nearest supported width is used. +Only width 1 is guaranteed to be supported; others depend on the +implementation. Likewise, there is a range for aliased line widths as well. +To query the range of supported widths and the size +difference between supported widths within the range, call _cmnd(Get) +with arguments _const(ALIASED_LINE_WIDTH_RANGE), +_const(SMOOTH_LINE_WIDTH_RANGE), _const(SMOOTH_LINE_WIDTH_GRANULARITY). +.SH NOTES +The line width specified by _cmnd is always returned when _const(LINE_WIDTH) +is queried. +Clamping and rounding for aliased and antialiased lines have no effect +on the specified value. +.P +Nonantialiased line width may be clamped to an implementation-dependent +maximum. Call _cmnd(Get) with _const(ALIASED_LINE_WIDTH_RANGE) to +determine the maximum width. +.SH ERRORS +_const(INVALID_VALUE) is generated if _param1 is less than or equal to 0. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(LINE_WIDTH) +.br +_cmnd(Get) with argument _const(ALIASED_LINE_WIDTH_RANGE) +.br +_cmnd(Get) with argument _const(SMOOTH_LINE_WIDTH_RANGE) +.br +_cmnd(Get) with argument _const(SMOOTH_LINE_WIDTH_GRANULARITY) +.br +_cmnd(IsEnabled) with argument _const(LINE_SMOOTH) +.SH SEE ALSO +_cmnd(Enable) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/listbase.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/listbase.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/listbase.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,57 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ListBase,set the display-list base for _cmnd(CallLists)) +_names(ListBase) +.SH PARAMETERS +_phead(_param1) +Specifies an integer offset that will be added to _cmnd(CallLists) +offsets to generate display-list names. +The initial value is 0. +.SH DESCRIPTION +_cmnd(CallLists) specifies an array of offsets. +Display-list names are generated by adding _param1 to each offset. +Names that reference valid display lists are executed; +the others are ignored. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(LIST_BASE) +.SH SEE ALSO +_cmnd(CallLists) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/loadidentity.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/loadidentity.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/loadidentity.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,76 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(LoadIdentity,replace the current matrix with the identity matrix) +_names(LoadIdentity) +.SH DESCRIPTION +_cmnd replaces the current matrix with the identity matrix. +It is semantically equivalent to calling _cmnd(LoadMatrix) +with the identity matrix + +.ce + +.EQ +left ( down 20 { ~ matrix { + ccol { 1 above 0 above 0 above 0~ } + ccol { 0 above 1 above 0 above 0~ } + ccol { 0 above 0 above 1 above 0~ } + ccol { 0 above 0 above 0 above 1 } +} } ~~ right ) +.EN + + +but in some cases it is more efficient. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MATRIX_MODE) +.br +_cmnd(Get) with argument _const(COLOR_MATRIX) +.br +_cmnd(Get) with argument _const(MODELVIEW_MATRIX) +.br +_cmnd(Get) with argument _const(PROJECTION_MATRIX) +.br +_cmnd(Get) with argument _const(TEXTURE_MATRIX) +.SH SEE ALSO +_cmnd(LoadMatrix), +_cmnd(MatrixMode), +_cmnd(MultMatrix), +_cmnd(PushMatrix) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/loadmatrix.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/loadmatrix.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/loadmatrix.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,109 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(LoadMatrix,replace the current matrix with the specified matrix) +_names(LoadMatrix,[df]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a pointer to 16 consecutive values, which are used as the +elements of a $4 ~times~ 4$ column-major matrix. +.SH DESCRIPTION +_cmnd replaces the current matrix with the one whose elements are specified by +_param1. +The current matrix is the projection matrix, +modelview matrix, +or texture matrix, +depending on the current matrix mode +(see _cmnd(MatrixMode)). +.P +The current matrix, M, defines a transformation of coordinates. +For instance, assume M refers to the modelview matrix. +If $v ~=~ (v[0], v[1], v[2], v[3])$ is the set of object coordinates +of a vertex, +and _param1 points to an array of $16$ +single- or double-precision +floating-point values $m[0], m[1],. . .,m[15]$, +then the modelview transformation $M(v)$ does the following: +.P + +.ce +.EQ +down 130 +{M(v) ~ = ~ +{{ left ( matrix { + ccol { ~m[0] above m[1] above m[2] above m[3] ~} + ccol { ~m[4] above m[5] above m[6] above m[7] ~} + ccol { ~m[8] above m[9] above m[10] above m[11] ~} + ccol { ~m[12]~ above m[13]~ above m[14]~ above m[15]~} +} right ) } ~~ times ~~ +{left ( matrix { +ccol { ~v[0]~ above ~v[1]~ above ~v[2]~ above ~v[3]~ } +} right )} }} +.EN + +.sp +.P +Where ``$times$'' denotes matrix multiplication. +.P +Projection and texture transformations are similarly defined. +.SH NOTES +While the elements of the matrix may be specified with +single or double precision, the GL implementation may +store or operate on these values in less than single +precision. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MATRIX_MODE) +.br +_cmnd(Get) with argument _const(COLOR_MATRIX) +.br +_cmnd(Get) with argument _const(MODELVIEW_MATRIX) +.br +_cmnd(Get) with argument _const(PROJECTION_MATRIX) +.br +_cmnd(Get) with argument _const(TEXTURE_MATRIX) +.SH SEE ALSO +_cmnd(LoadIdentity), +_cmnd(MatrixMode), +_cmnd(MultMatrix), +_cmnd(PushMatrix) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/loadname.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/loadname.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/loadname.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,66 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(LoadName,load a name onto the name stack) +_names(LoadName) +.SH PARAMETERS +_phead(_param1) +Specifies a name that will replace the top value on the name stack. +.SH DESCRIPTION +The name stack is used during selection mode to allow sets of rendering +commands to be uniquely identified. +It consists of an ordered set of unsigned integers. +_cmnd causes _param1 to replace the value on the top of the name stack, +which is initially empty. +.P +The name stack is always empty while the render mode is not _const(SELECT). +Calls to _cmnd while the render mode is not _const(SELECT) are ignored. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd is called while the +name stack is empty. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed between +the execution of _cmnd(Begin) and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(NAME_STACK_DEPTH) +.br +_cmnd(Get) with argument _const(MAX_NAME_STACK_DEPTH) +.SH SEE ALSO +_cmnd(InitNames), +_cmnd(PushName), +_cmnd(RenderMode), +_cmnd(SelectBuffer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/logicop.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/logicop.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/logicop.gl Mon Jan 14 17:13:34 2002 @@ -0,0 +1,130 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn|tbl)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(LogicOp,specify a logical pixel operation for color index rendering) +_names(LogicOp) +.SH PARAMETERS +_phead(_param1) +Specifies a symbolic constant that selects a logical operation. +The following symbols are accepted: +_const(CLEAR), +_const(SET), +_const(COPY), +_const(COPY_INVERTED), +_const(NOOP), +_const(INVERT), +_const(AND), +_const(NAND), +_const(OR), +_const(NOR), +_const(XOR), +_const(EQUIV), +_const(AND_REVERSE), +_const(AND_INVERTED), +_const(OR_REVERSE), and +_const(OR_INVERTED). The initial value is _const(COPY). +.SH DESCRIPTION +_cmnd specifies a logical operation that, +when enabled, +is applied between the incoming color index or RGBA color +and the color index or RGBA color at the corresponding location in the +frame buffer. +To enable or disable the logical operation, call +_cmnd(Enable) and _cmnd(Disable) +using the symbolic constant _const(COLOR_LOGIC_OP) for RGBA mode or +_const(INDEX_LOGIC_OP) for color index mode. The initial value is +disabled for both operations. +.P +.ne +.TS +center; +lb lb +l c. +_ +Opcode Resulting Operation +_ +_const(CLEAR) 0 +_const(SET) 1 +_const(COPY) s +_const(COPY_INVERTED) ~s +_const(NOOP) d +_const(INVERT) ~d +_const(AND) s & d +_const(NAND) ~(s & d) +_const(OR) s | d +_const(NOR) ~(s | d) +_const(XOR) s ^ d +_const(EQUIV) ~(s ^ d) +_const(AND_REVERSE) s & ~d +_const(AND_INVERTED) ~s & d +_const(OR_REVERSE) s | ~d +_const(OR_INVERTED) ~s | d +_ +.TE + +_param1 is a symbolic constant chosen from the list above. +In the explanation of the logical operations, +\f2s\fP represents the incoming color index and +\f2d\fP represents the index in the frame buffer. +Standard C-language operators are used. +As these bitwise operators suggest, +the logical operation is applied independently to each bit pair of the +source and destination indices or colors. +.SH NOTES +Color index logical operations are always supported. RGBA logical +operations are supported only if the GL version is 1.1 or greater. +.P +When more than one RGBA color or index buffer is enabled for drawing, +logical operations are performed separately for each enabled buffer, +using for the destination value the contents of that buffer +(see _cmnd(DrawBuffer)). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(LOGIC_OP_MODE). +.br +_cmnd(IsEnabled) with argument _const(COLOR_LOGIC_OP) or _const(INDEX_LOGIC_OP). +.SH SEE ALSO +_cmnd(AlphaFunc), +_cmnd(BlendFunc), +_cmnd(DrawBuffer), +_cmnd(Enable), +_cmnd(StencilOp) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/map1.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/map1.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/map1.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,269 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Map1,define a one-dimensional evaluator) +_names(Map1,[fd]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the kind of values that are generated by the evaluator. +Symbolic constants +_const(MAP1_VERTEX_3), +_const(MAP1_VERTEX_4), +_const(MAP1_INDEX), +_const(MAP1_COLOR_4), +_const(MAP1_NORMAL), +_const(MAP1_TEXTURE_COORD_1), +_const(MAP1_TEXTURE_COORD_2), +_const(MAP1_TEXTURE_COORD_3), and +_const(MAP1_TEXTURE_COORD_4) are accepted. +_phead(_param2 _param3) +Specify a linear mapping of $u$, +as presented to _cmnd(EvalCoord1), +to $u hat$, +the variable that is evaluated by the equations specified by this command. +_phead(_param4) +Specifies the number of floats or doubles between +the beginning of one control point and the beginning of the next one +in the data structure referenced in _param6. +This allows control points to be embedded in arbitrary data structures. +The only constraint is that the values for a particular control point +must occupy contiguous memory locations. +_phead(_param5) +Specifies the number of control points. +Must be positive. +_phead(_param6) +Specifies a pointer to the array of control points. + +.SH DESCRIPTION +Evaluators provide a way to use polynomial or rational polynomial mapping +to produce vertices, +normals, +texture coordinates, +and colors. +The values produced by an evaluator are sent to further stages +of GL processing just as if they had been presented using +_cmnd(Vertex), +_cmnd(Normal), +_cmnd(TexCoord), and +_cmnd(Color) commands, +except that the generated values do not update the current normal, +texture coordinates, +or color. +.P +All polynomial or rational polynomial splines of any degree +(up to the maximum degree supported by the GL implementation) +can be described using evaluators. +These include almost all splines used in computer graphics: B-splines, +Bezier curves, Hermite splines, and so on. +.P +Evaluators define curves based on Bernstein polynomials. +Define $p ( u hat ^) $ as +.sp +.ce +$p ( u hat ^) ~~=~~ up 10 { sum from i=0 to n } B sub i sup n ( u hat ^) R sub i$ +.sp +where +$R sub i$ +is a control point and +$B sub i sup n ( u hat ^)$ +is the $i$th Bernstein polynomial of degree $n$ (_param5 = $n ~+~ 1$): +.sp +.ce +$B sub i sup n ( u hat ^) ~~=~~ left ( down 20 {cpile { n above i }} ~~ right ) u hat sup i ( 1 - u hat ^) sup { n - i }$ +.sp +Recall that +.sp +.ce +$0 sup 0 ~==~ 1 $ and $ left ( down 20 {cpile { n above ~0 }} ~~ right ) ~~==~~ 1 $ +.P +_cmnd is used to define the basis and to specify what kind of values +are produced. +Once defined, +a map can be enabled and disabled by calling _cmnd(Enable) and _cmnd(Disable) +with the map name, one of the nine predefined values for _param1 +described below. +_cmnd(EvalCoord1) evaluates the one-dimensional maps that are enabled. +When +.br +_cmnd(EvalCoord1) presents a value $u$, +the Bernstein functions are evaluated using $u hat$, where +.br + +.ce +$u hat ~~=~~ {u ~-~ _eqnparam2} over {_eqnparam3 ~-~ _eqnparam2}$ + +.br +.P +_param1 is a symbolic constant that indicates what kind of control points +are provided in _param6, +and what output is generated when the map is evaluated. +It can assume one of nine predefined values: +.TP 25 +_const(MAP1_VERTEX_3) +Each control point is three floating-point values representing +$x$, $y$, and $z$. +Internal _cmnd(Vertex3) commands are generated when the map is evaluated. +.TP +_const(MAP1_VERTEX_4) +Each control point is four floating-point values representing +$x$, $y$, $z$, and $w$. +Internal _cmnd(Vertex4) commands are generated when the map is evaluated. +.TP +_const(MAP1_INDEX) +Each control point is a single floating-point value representing a color index. +Internal _cmnd(Index) commands are generated when the map is evaluated +but the current index is not updated with the value of these _cmnd(Index) +commands. +.TP +_const(MAP1_COLOR_4) +Each control point is four floating-point values representing +red, green, blue, and alpha. +Internal _cmnd(Color4) commands are generated when the map is +evaluated but the current color is not updated with the value of these +_cmnd(Color4) commands. +.TP +_const(MAP1_NORMAL) +Each control point is three floating-point values representing +the $x$, $y$, and $z$ components of a normal vector. +Internal _cmnd(Normal) commands are generated when the map is +evaluated but the current normal is not updated with the value of +these _cmnd(Normal) commands. +.TP +_const(MAP1_TEXTURE_COORD_1) +Each control point is a single floating-point value representing +the $s$ texture coordinate. +Internal +.br +_cmnd(TexCoord1) commands are generated when the map is +evaluated but the current texture coordinates are not updated with the value +of these _cmnd(TexCoord) commands. +.TP +_const(MAP1_TEXTURE_COORD_2) +Each control point is two floating-point values representing +the $s$ and $t$ texture coordinates. +Internal +.br +_cmnd(TexCoord2) commands are generated when the map is +evaluated but the current texture coordinates are not updated with the value +of these _cmnd(TexCoord) commands. +.TP +_const(MAP1_TEXTURE_COORD_3) +Each control point is three floating-point values representing +the $s$, $t$, and $r$ texture coordinates. +Internal _cmnd(TexCoord3) commands are generated when the map is +evaluated but the current texture coordinates are not updated with the value +of these _cmnd(TexCoord) commands. +.TP +_const(MAP1_TEXTURE_COORD_4) +Each control point is four floating-point values representing +the $s$, $t$, $r$, and $q$ texture coordinates. +Internal +.br +_cmnd(TexCoord4) commands are generated when the map is evaluated but +the current texture coordinates are not updated with the value +of these _cmnd(TexCoord) commands. +.P +_param4, +_param5, and +_param6 define the array addressing for accessing the control points. +_param6 is the location of the first control point, +which occupies one, two, three, or four contiguous memory locations, +depending on which map is being defined. +_param5 is the number of control points in the array. +_param4 specifies how many float or double locations to advance the internal +memory pointer to reach the next control point. +.SH NOTES +As is the case with all GL commands that accept pointers to data, +it is as if the contents of _param6 were copied by _cmnd before _cmnd +returns. +Changes to the contents of _param6 have no effect after _cmnd is called. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param2 is equal to _param3. +.P +_const(INVALID_VALUE) is generated if _param4 is less than the number +of values in a control point. +.P +_const(INVALID_VALUE) is generated if _param5 is less than 1 or +greater than the return value of _const(MAX_EVAL_ORDER). +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of +_cmnd(Begin) +and the corresponding execution of _cmnd(End). +.P +When the _arbstring(multitexture) extension is supported, +_const(INVALID_OPERATION) is generated if _cmnd is called and the value +of _arbconst(ACTIVE_TEXTURE) is not _arbconst(TEXTURE0). +.SH ASSOCIATED GETS +_cmnd(GetMap) +.br +_cmnd(Get) with argument _const(MAX_EVAL_ORDER) +.br +_cmnd(IsEnabled) with argument _const(MAP1_VERTEX_3) +.br +_cmnd(IsEnabled) with argument _const(MAP1_VERTEX_4) +.br +_cmnd(IsEnabled) with argument _const(MAP1_INDEX) +.br +_cmnd(IsEnabled) with argument _const(MAP1_COLOR_4) +.br +_cmnd(IsEnabled) with argument _const(MAP1_NORMAL) +.br +_cmnd(IsEnabled) with argument _const(MAP1_TEXTURE_COORD_1) +.br +_cmnd(IsEnabled) with argument _const(MAP1_TEXTURE_COORD_2) +.br +_cmnd(IsEnabled) with argument _const(MAP1_TEXTURE_COORD_3) +.br +_cmnd(IsEnabled) with argument _const(MAP1_TEXTURE_COORD_4) +.SH SEE ALSO +_cmnd(Begin), +_cmnd(Color), +_cmnd(Enable), +_cmnd(EvalCoord), +_cmnd(EvalMesh), +_cmnd(EvalPoint), +_cmnd(Map2), +_cmnd(MapGrid), +_cmnd(Normal), +_cmnd(TexCoord), +_cmnd(Vertex) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/map2.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/map2.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/map2.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,318 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Map2,define a two-dimensional evaluator) +_names(Map2,[fd]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the kind of values that are generated by the evaluator. +Symbolic constants +_const(MAP2_VERTEX_3), +_const(MAP2_VERTEX_4), +_const(MAP2_INDEX), +_const(MAP2_COLOR_4), +_const(MAP2_NORMAL), +_const(MAP2_TEXTURE_COORD_1), +_const(MAP2_TEXTURE_COORD_2), +_const(MAP2_TEXTURE_COORD_3), and +_const(MAP2_TEXTURE_COORD_4) are accepted. +_phead(_param2 _param3) +Specify a linear mapping of $u$, +as presented to _cmnd(EvalCoord2), +to $u hat$, +one of the two variables that are evaluated by the equations specified +by this command. Initially, _param2 is 0 and _param3 is 1. +_phead(_param4) +Specifies the number of floats or doubles between +the beginning of control point +$R sub ij$ +and the beginning of control point +$R sub { (i+1) j }$, +where $i$ and $j$ are the $u$ and $v$ control point indices, respectively. +This allows control points to be embedded in arbitrary data structures. +The only constraint is that the values for a particular control point +must occupy contiguous memory locations. The initial value of _param4 is 0. +_phead(_param5) +Specifies the dimension of the control point array in the $u$ axis. +Must be positive. The initial value is 1. +_phead(_param6 _param7) +Specify a linear mapping of $v$, +as presented to _cmnd(EvalCoord2), +to $v hat$, +one of the two variables that are evaluated by the equations specified +by this command. Initially, _param6 is 0 and _param7 is 1. +_phead(_param8) +Specifies the number of floats or doubles between +the beginning of control point +$R sub ij$ +and the beginning of control point +$R sub { i (j+1) }$, +where $i$ and $j$ are the $u$ and $v$ control point indices, respectively. +This allows control points to be embedded in arbitrary data structures. +The only constraint is that the values for a particular control point +must occupy contiguous memory locations. The initial value of _param8 is 0. +_phead(_param9) +Specifies the dimension of the control point array in the $v$ axis. +Must be positive. The initial value is 1. +_phead(_param10) +Specifies a pointer to the array of control points. +.SH DESCRIPTION +Evaluators provide a way to use polynomial or rational polynomial mapping +to produce vertices, +normals, +texture coordinates, +and colors. +The values produced by an evaluator are sent on to further stages +of GL processing just as if they had been presented using +_cmnd(Vertex), +_cmnd(Normal), +_cmnd(TexCoord), and +_cmnd(Color) commands, +except that the generated values do not update the current normal, +texture coordinates, +or color. +.P +All polynomial or rational polynomial splines of any degree +(up to the maximum degree supported by the GL implementation) +can be described using evaluators. +These include almost all surfaces used in computer graphics, +including B-spline surfaces, +NURBS surfaces, +Bezier surfaces, and so on. +.P +Evaluators define surfaces based on bivariate Bernstein polynomials. +Define $p ( u hat , v hat ) $ as +.ce +.sp +.EQ +p ( u hat , v hat ) ~~=~~ + down 30 {{size 18 {sum}} from {size 8 {i~=~0}} to {size 9 {n}} } ~ + {{size 18 {sum}} from {size 8 {j~=~0}} to {size 9 {m}} } ~ + up 15 { B sub i sup n ( u hat ) ~ B sub j sup m ( v hat ) ~ R sub ij } +.EN +.sp +.P +where $R sub ij$ is a control point, +$B sub i sup n ( u hat )$ +is the $i$th Bernstein polynomial of degree +.br +$n$ (_param5 = $n ~+~ 1$) +.ce +.sp +.EQ +B sub i sup n ( u hat ) ~~=~~ left ( down 20 {cpile { n above i }} ~ right +) u hat sup i ( 1 - u hat ) sup { n - i } +.EN +.sp +and $B sub j sup m ( v hat )$ +is the $j$th Bernstein polynomial of degree $m$ (_param9 = $m ~+~ 1$) +.ce +.sp +.EQ +B sub j sup m ( v hat ) ~~=~~ left ( ^down 20 {cpile { m above j }} ~^ right ) v hat sup j ( 1 - v hat ) sup { m - j } +.EN +.sp +Recall that +.ce +$0 sup 0 ~==~ 1 $ and $ left ( ^ down 20 {cpile { n above 0 }} ~^ right ) ~~==~~ 1 $ +.sp +_cmnd is used to define the basis and to specify what kind of values +are produced. +Once defined, +a map can be enabled and disabled by calling _cmnd(Enable) and _cmnd(Disable) +with the map name, one of the nine predefined values for _param1, +described below. +When _cmnd(EvalCoord2) presents values $u$ and $v$, +the bivariate Bernstein polynomials are evaluated using $u hat$ and $v hat$, +where +.sp +.ce +$u hat ~~=~~ {u ~-~ _eqnparam2} over {_eqnparam3 ~-~ _eqnparam2}$ +.sp +.ce +$v hat ~~=~~ {v ~-~ _eqnparam6} over {_eqnparam7 ~-~ _eqnparam6}$ +.sp +_param1 is a symbolic constant that indicates what kind of control points +are provided in _param10, +and what output is generated when the map is evaluated. +It can assume one of nine predefined values: +.TP 25 +_const(MAP2_VERTEX_3) +Each control point is three floating-point values representing +$x$, $y$, and $z$. +Internal _cmnd(Vertex3) commands are generated when the map is evaluated. +.TP +_const(MAP2_VERTEX_4) +Each control point is four floating-point values representing +$x$, $y$, $z$, and $w$. +Internal _cmnd(Vertex4) commands are generated when the map is evaluated. +.TP +_const(MAP2_INDEX) +Each control point is a single floating-point value representing a color index. +Internal _cmnd(Index) commands are generated when the map is evaluated +but the current index is not updated with the value of these +_cmnd(Index) commands. +.TP +_const(MAP2_COLOR_4) +Each control point is four floating-point values representing +red, green, blue, and alpha. +Internal _cmnd(Color4) commands are generated when the map is +evaluated but the current color is not updated with the value of +these _cmnd(Color4) commands. +.TP +_const(MAP2_NORMAL) +Each control point is three floating-point values representing +the $x$, $y$, and $z$ components of a normal vector. +Internal _cmnd(Normal) commands are generated when the map is +evaluated but the current normal is not updated with the value of +these _cmnd(Normal) commands. +.TP +_const(MAP2_TEXTURE_COORD_1) +Each control point is a single floating-point value representing +the $s$ texture coordinate. +Internal +.br +_cmnd(TexCoord1) commands are generated when the map is evaluated but +the current texture coordinates are not updated with the value +of these _cmnd(TexCoord) commands. +.TP +_const(MAP2_TEXTURE_COORD_2) +Each control point is two floating-point values representing +the $s$ and $t$ texture coordinates. +Internal +.br +_cmnd(TexCoord2) commands are generated when the map is evaluated but +the current texture coordinates are not updated with the value +of these _cmnd(TexCoord) commands. +.TP +_const(MAP2_TEXTURE_COORD_3) +Each control point is three floating-point values representing +the $s$, $t$, and $r$ texture coordinates. +Internal _cmnd(TexCoord3) commands are generated when the map is +evaluated but the current texture coordinates are not updated with the value +of these _cmnd(TexCoord) commands. +.TP +_const(MAP2_TEXTURE_COORD_4) +Each control point is four floating-point values representing +the $s$, $t$, $r$, and $q$ texture coordinates. +Internal +.br +_cmnd(TexCoord4) commands are generated when the map is evaluated but the current texture coordinates are not updated with the value +of these _cmnd(TexCoord) commands. +.P +_param4, +_param5, +_param8, +_param9, and +_param10 define the array addressing for accessing the control points. +_param10 is the location of the first control point, +which occupies one, two, three, or four contiguous memory locations, +depending on which map is being defined. +There are $ _eqnparam5 ~times~ _eqnparam9 $ control points in the array. +_param4 specifies how many float or double locations are skipped to advance +the internal memory pointer from control point +$R sub {i j} $ to control point $R sub {(i+1) j} $. +_param8 specifies how many float or double locations are skipped to advance +the internal memory pointer from control point +$R sub {i j} $ to control point $R sub {i (j+1) } $. +.SH NOTES +As is the case with all GL commands that accept pointers to data, +it is as if the contents of _param10 were copied by _cmnd before _cmnd +returns. +Changes to the contents of _param10 have no effect after _cmnd is called. +.P +Initially, _const(AUTO_NORMAL) is enabled. If _const(AUTO_NORMAL) is enabled, +normal vectors are generated when either +_const(MAP2_VERTEX_3) or _const(MAP2_VERTEX_4) is used to generate +vertices. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param2 is equal to _param3, +or if _param6 is equal to _param7. +.P +_const(INVALID_VALUE) is generated if either _param4 or _param8 +is less than the number of values in a control point. +.P +_const(INVALID_VALUE) is generated if either _param5 or _param9 +is less than 1 or greater than the return value of _const(MAX_EVAL_ORDER). +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of +_cmnd(Begin) +and the corresponding execution of _cmnd(End). +.P +When the _arbstring(multitexture) extension is supported, +_const(INVALID_OPERATION) is generated if _cmnd is called and the value +of _arbconst(ACTIVE_TEXTURE) is not _arbconst(TEXTURE0). +.SH ASSOCIATED GETS +_cmnd(GetMap) +.br +_cmnd(Get) with argument _const(MAX_EVAL_ORDER) +.br +_cmnd(IsEnabled) with argument _const(MAP2_VERTEX_3) +.br +_cmnd(IsEnabled) with argument _const(MAP2_VERTEX_4) +.br +_cmnd(IsEnabled) with argument _const(MAP2_INDEX) +.br +_cmnd(IsEnabled) with argument _const(MAP2_COLOR_4) +.br +_cmnd(IsEnabled) with argument _const(MAP2_NORMAL) +.br +_cmnd(IsEnabled) with argument _const(MAP2_TEXTURE_COORD_1) +.br +_cmnd(IsEnabled) with argument _const(MAP2_TEXTURE_COORD_2) +.br +_cmnd(IsEnabled) with argument _const(MAP2_TEXTURE_COORD_3) +.br +_cmnd(IsEnabled) with argument _const(MAP2_TEXTURE_COORD_4) +.SH SEE ALSO +_cmnd(Begin), +_cmnd(Color), +_cmnd(Enable), +_cmnd(EvalCoord), +_cmnd(EvalMesh), +_cmnd(EvalPoint), +_cmnd(Map1), +_cmnd(MapGrid), +_cmnd(Normal), +_cmnd(TexCoord), +_cmnd(Vertex) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/mapgrid.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/mapgrid.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/mapgrid.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,126 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(MapGrid,define a one- or two-dimensional mesh) +_names(MapGrid,[12]u*[df]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the number of partitions in the grid range interval +[_param2, _param3]. +Must be positive. +_phead(_param2 _param3) +Specify the mappings for integer grid domain values $i~=~0$ and $i~=~_eqnparam1$. +_phead(_param4) +Specifies the number of partitions in the grid range interval +[_param5, _param6] +.br +(_cmnd(MapGrid2) only). +_phead(_param5 _param6) +Specify the mappings for integer grid domain values $j~=~0$ and $j~=~_eqnparam4$ +.br +(_cmnd(MapGrid2) only). +.SH DESCRIPTION +_cmnd and _cmnd(EvalMesh) are used together to efficiently +generate and evaluate a series of evenly-spaced map domain values. +_cmnd(EvalMesh) steps through the integer domain +of a one- or two-dimensional grid, +whose range is the domain of the evaluation maps specified by +_cmnd(Map1) and _cmnd(Map2). +.P +_cmnd(MapGrid1) and _cmnd(MapGrid2) specify the linear grid mappings +between the $i$ +(or $i$ and $j$) +integer grid coordinates, +to the $u$ +(or $u$ and $v$) +floating-point evaluation map coordinates. +See _cmnd(Map1) and _cmnd(Map2) for details of how $u$ and $v$ coordinates +are evaluated. +.P +_cmnd(MapGrid1) specifies a single linear mapping +such that integer grid coordinate 0 maps exactly to _param2, +and integer grid coordinate _param1 maps exactly to _param3. +All other integer grid coordinates $i$ are mapped so that +.sp +.ce +.EQ +u ~=~ i (_eqnparam3 - _eqnparam2) / _eqnparam1 ~+~ _eqnparam2 +.EN +.sp +_cmnd(MapGrid2) specifies two such linear mappings. +One maps integer grid coordinate $i~=~0$ exactly to _param2, +and integer grid coordinate $i~=~_eqnparam1$ exactly to _param3. +The other maps integer grid coordinate $j~=~0$ exactly to _param5, +and integer grid coordinate $j~=~_eqnparam4$ exactly to _param6. +Other integer grid coordinates $i$ and $j$ are mapped such that +.P +.ce +.EQ +u ~=~ i (_eqnparam3 - _eqnparam2) / _eqnparam1 ~+~ _eqnparam2 +.EN +.P +.ce +.EQ +v ~=~ j (_eqnparam6 - _eqnparam5) / _eqnparam4 ~+~ _eqnparam5 +.EN +.P +The mappings specified by _cmnd are used identically by +_cmnd(EvalMesh) and _cmnd(EvalPoint). +.SH ERRORS +_const(INVALID_VALUE) is generated if either _param1 or _param4 is not +positive. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MAP1_GRID_DOMAIN) +.br +_cmnd(Get) with argument _const(MAP2_GRID_DOMAIN) +.br +_cmnd(Get) with argument _const(MAP1_GRID_SEGMENTS) +.br +_cmnd(Get) with argument _const(MAP2_GRID_SEGMENTS) +.SH SEE ALSO +_cmnd(EvalCoord), +_cmnd(EvalMesh), +_cmnd(EvalPoint), +_cmnd(Map1), +_cmnd(Map2) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/material.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/material.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/material.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,201 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Material,specify material parameters for the lighting model) +_names(Material,[fi]) +.SH PARAMETERS +_phead(_param1) +Specifies which face or faces are being updated. +Must be one of +_const(FRONT), +_const(BACK), or +_const(FRONT_AND_BACK). +_phead(_param2) +Specifies the single-valued material parameter of the face or faces +that is being updated. +Must be _const(SHININESS). +_phead(_param3) +Specifies the value that parameter _const(SHININESS) will be set to. +_names(Material,[fi]v) +.SH PARAMETERS +_phead(_param1) +Specifies which face or faces are being updated. +Must be one of +_const(FRONT), +_const(BACK), or +_const(FRONT_AND_BACK). +_phead(_param2) +Specifies the material parameter of the face or faces that is being updated. +Must be one of +_const(AMBIENT), +_const(DIFFUSE), +_const(SPECULAR), +_const(EMISSION), +_const(SHININESS), +_const(AMBIENT_AND_DIFFUSE), or +_const(COLOR_INDEXES). +_phead(_param3) +Specifies a pointer to the value or values that _param2 will be set to. +.SH DESCRIPTION +_cmnd assigns values to material parameters. +There are two matched sets of material parameters. +One, +the \f2front-facing\fP set, +is used to shade points, +lines, +bitmaps, +and all polygons +(when two-sided lighting is disabled), +or just front-facing polygons +(when two-sided lighting is enabled). +The other set, +\f2back-facing\fP, +is used to shade back-facing polygons only when two-sided lighting is enabled. +Refer to the _cmnd(LightModel) reference page for details concerning one- and +two-sided lighting calculations. +.P +_cmnd takes three arguments. +The first, +_param1, +specifies whether the +_const(FRONT) materials, the +_const(BACK) materials, or both +_const(FRONT_AND_BACK) materials will be modified. +The second, +_param2, +specifies which of several parameters in one or both sets will be modified. +The third, +_param3, +specifies what value or values will be assigned to the specified parameter. +.P +Material parameters are used in the lighting equation that is optionally +applied to each vertex. +The equation is discussed in the _cmnd(LightModel) reference page. +The parameters that can be specified using _cmnd, +and their interpretations by the lighting equation, are as follows: +.TP 20 +_const(AMBIENT) +_param3 contains four integer or floating-point values that specify +the ambient RGBA reflectance of the material. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial ambient reflectance for both front- and back-facing materials +is (0.2, 0.2, 0.2, 1.0). +.TP +_const(DIFFUSE) +_param3 contains four integer or floating-point values that specify +the diffuse RGBA reflectance of the material. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial diffuse reflectance for both front- and back-facing materials +is (0.8, 0.8, 0.8, 1.0). +.TP +_const(SPECULAR) +_param3 contains four integer or floating-point values that specify +the specular RGBA reflectance of the material. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial specular reflectance for both front- and back-facing materials +is (0, 0, 0, 1). +.TP +_const(EMISSION) +_param3 contains four integer or floating-point values that specify +the RGBA emitted light intensity of the material. +Integer values are mapped linearly such that the most positive representable +value maps to 1.0, +and the most negative representable value maps to \-1.0. +Floating-point values are mapped directly. +Neither integer nor floating-point values are clamped. +The initial emission intensity for both front- and back-facing materials +is (0, 0, 0, 1). +.TP +_const(SHININESS) +_param3 is a single integer or floating-point value that specifies +the RGBA specular exponent of the material. +Integer and floating-point values are mapped directly. +Only values in the range [0,128] are accepted. +The initial specular exponent for both front- and back-facing materials +is 0. +.TP +_const(AMBIENT_AND_DIFFUSE) +Equivalent to calling _cmnd twice with the same parameter values, +once with _const(AMBIENT) and once with _const(DIFFUSE). +.TP +_const(COLOR_INDEXES) +_param3 contains three integer or floating-point values specifying +the color indices for ambient, +diffuse, +and specular lighting. +These three values, +and _const(SHININESS), +are the only material values used by the color index mode lighting equation. +Refer to the _cmnd(LightModel) reference page for a discussion +of color index lighting. +.SH NOTES +The material parameters can be updated at any time. +In particular, +_cmnd can be called between a call to _cmnd(Begin) and the corresponding +call to _cmnd(End). +If only a single material parameter is to be changed per vertex, +however, +_cmnd(ColorMaterial) is preferred over _cmnd +(see _cmnd(ColorMaterial)). +.P +While the ambient, diffuse, specular and emission material parameters +all have alpha components, only the diffuse alpha component is used in +the lighting computation. +.SH ERRORS +_const(INVALID_ENUM) is generated if either _param1 or _param2 is not +an accepted value. +.P +_const(INVALID_VALUE) is generated if a specular exponent outside the range +[0,128] is specified. +.SH ASSOCIATED GETS +_cmnd(GetMaterial) +.SH SEE ALSO +_cmnd(ColorMaterial), +_cmnd(Light), +_cmnd(LightModel) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/matrixmode.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/matrixmode.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/matrixmode.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,82 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(MatrixMode,specify which matrix is the current matrix) +_names(MatrixMode) +.SH PARAMETERS +_phead(_param1) +Specifies which matrix stack is the target +for subsequent matrix operations. +Three values are accepted: +_const(MODELVIEW), +_const(PROJECTION), and +_const(TEXTURE). +The initial value is _const(MODELVIEW). +.TE + +Additionally, if the _arbstring(imaging) extension is supported, +_const(COLOR) is also accepted. +.SH DESCRIPTION +_cmnd sets the current matrix mode. +_param1 can assume one of four values: +.TP 25 +_const(MODELVIEW) +Applies subsequent matrix operations to the modelview matrix stack. +.TP +_const(PROJECTION) +Applies subsequent matrix operations to the projection matrix stack. +.TP +_const(TEXTURE) +Applies subsequent matrix operations to the texture matrix stack. +.TP +_const(COLOR) +Applies subsequent matrix operations to the color matrix stack. +.P +To find out which matrix stack is currently the target of all matrix +operations, call _cmnd(Get) with argument _const(MATRIX_MODE). The initial +value is _const(MODELVIEW). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MATRIX_MODE) +.SH SEE ALSO +_cmnd(LoadMatrix), +_cmnd(PushMatrix) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/minmax.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/minmax.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/minmax.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,135 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(Minmax,define minmax table) +_names(Minmax) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__internalformat>@,@<_param2>@)_C_ +_define(@<__sink>@,@<_param3>@)_C_ +.SH PARAMETERS +_phead(__target) +The minmax table whose parameters are to be set. +Must be +_const(MINMAX). +_phead(__internalformat) +The format of entries in the minmax table. +Must be one of +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(R3_G3_B2), +_const(RGB), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), or +_const(RGBA16). +_phead(__sink) +If _const(TRUE), pixels will be consumed by the minmax +process and no drawing or texture loading will take place. +If _const(FALSE), pixels will proceed to the final conversion process after +minmax. +.SH DESCRIPTION +When _const(MINMAX) is enabled, the RGBA components of incoming pixels are +compared to the minimum and maximum values for each component, which are +stored in the 2-element minmax table. +(The first element stores the minima, and the second element stores +the maxima.) +If a pixel component is greater than the corresponding component +in the maximum element, then the maximum element is updated with the +pixel component value. +If a pixel component is less than the corresponding component in +the minimum element, then the minimum element is updated with the +pixel component value. +(In both cases, if the internal format of the minmax table includes +luminance, then the R color component of incoming pixels is used +for comparison.) +The contents of the minmax table may be retrieved at a later time +by calling _cmnd(GetMinmax). +The minmax operation is enabled or disabled by calling _cmnd(Enable) or +_cmnd(Disable), respectively, with an argument of _const(MINMAX). +.P +_cmnd redefines the current minmax table to have entries of the format +specified by __internalformat. +The maximum element is initialized with the smallest possible component +values, and the minimum element is initialized with the largest possible +component values. +The values in the previous minmax table, if any, are lost. +If __sink is _const(TRUE), then pixels are discarded after minmax; +no further processing of the pixels takes place, and no drawing, +texture loading, or pixel readback will result. +.P +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __internalformat is not one of the +allowable values. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetMinmaxParameter) +.SH SEE ALSO +_cmnd(GetMinmax), +_cmnd(ResetMinmax) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/multitexcoordARB.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/multitexcoordARB.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/multitexcoordARB.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,103 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(MultiTexCoordARB, set the current texture coordinates) +_names(MultiTexCoord,[1-4]u*[sifdb]ARB) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies texture unit whose coordinates should be modified. The number +of texture units is implementation dependent, but must be at least +two. Must be one of _arbconstidx(TEXTURE) where 0 \(<= $ i $ < +_arbconst(MAX_TEXTURE_UNITS), which is an implementation-dependent value. +_phead(_param2 _param3 _param4 _param5) +Specify _param2, _param3, _param4, and _param5 texture coordinates for +_param1 texture unit. Not all parameters are present in all forms +of the command. +_names(MultiTexCoord,[1-4]u*[sifdb]vARB) +.SH PARAMETERS +_phead(_param1) +Specifies texture unit whose coordinates should be modified. The number +of texture units is implementation dependent, but must be at least +two. Must be one of _arbconstidx(TEXTURE), +where 0 \(<= $ i $ < the implementation-dependent value of +_const(MAX_TEXTURE_UNITS_ARB). +_phead(_param2) +Specifies a pointer to an array of one, two, three, or four elements, +which in turn specify the _param2(1), _param3(1), _param4(1), +and _param5(1) texture coordinates. +.SH DESCRIPTION +_cmnd specifies texture coordinates in one, two, three, or four +dimensions. +_cmnd(MultiTexCoord1ARB) sets the current texture +coordinates to (_param2(1),\ 0,\ 0,\ 1); +a call to _cmnd(MultiTexCoord2ARB) +sets them to (_param2(1),\ _param3(1),\ 0,\ 1). +Similarly, _cmnd(MultiTexCoord3ARB) specifies the texture coordinates as +(_param2(1),\ _param3(1),\ _param4(1),\ 1), and +_cmnd(MultiTexCoord4ARB) +defines all four components explicitly as +(_param2(1),\ _param3(1),\ _param4(1),\ _param5(1)). +.P +The current texture coordinates are part of the data +that is associated with each vertex and with the current +raster position. +Initially, the values for +_param2(1), _param3(1), _param4(1), _param5(1) are (0,\ 0,\ 0,\ 1). +.P +.SH NOTES +_cmnd is only supported if _arbstring(multitexture) is included in the +string returned by _cmnd(GetString) when called with the argument +_const(EXTENSIONS). +.P +The current texture coordinates can be updated at any time. +In particular, +_cmnd can be called between a call to _cmnd(Begin) and the corresponding +call to _cmnd(End). +.P +It is always the case that _arbconstidx(TEXTURE) = _arbconst(TEXTURE0) + $i$. +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(CURRENT_TEXTURE_COORDS) with appropriate +texture unit selected. +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(ClientActiveTextureARB), +_cmnd(TexCoord), +_cmnd(TexCoordPointer), +_cmnd(Vertex) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/multmatrix.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/multmatrix.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/multmatrix.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,133 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(MultMatrix,multiply the current matrix with the specified matrix) +_names(MultMatrix,[df]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Points to 16 consecutive values that are used as the elements of +a $4 ~times~ 4$ column-major matrix. +.SH DESCRIPTION +_cmnd multiplies the current matrix with the one specified using _param1, and +replaces the current matrix with the product. +.P +The current matrix is determined by the current matrix mode (see _cmnd(MatrixMode)). It is either the projection matrix, +modelview matrix, +or the texture matrix. +.SH EXAMPLES +If the current matrix is $C$, and the coordinates +to be transformed are, $v ~=~ (v[0], v[1], v[2], v[3])$. +Then the current transformation is $C ~times~ v$, or +.sp +.ce +.EQ +down 130 +{{ left ( matrix { + ccol { c[0] above c[1] above c[2] above c[3] } + ccol { c[4] above c[5] above c[6] above c[7] } + ccol { c[8] above c[9] above c[10] above c[11] } + ccol { c[12]~ above c[13]~ above c[14]~ above c[15]~ } +} right ) } ~~ times ~~ +{left ( matrix { +ccol { v[0]~ above v[1]~ above v[2]~ above v[3]~ } +} right )} } +.EN +.sp +.P +Calling _cmnd with an argument of $_eqnparam1 ~=~ m[0], m[1], ..., m[15]$ +replaces the current transformation with $(C ~times~ M) ~times~ v$, +or +.sp +.ce +.EQ +down 130 +{{ left ( matrix { + ccol { c[0] above c[1] above c[2] above c[3] } + ccol { c[4] above c[5] above c[6] above c[7] } + ccol { c[8] above c[9] above c[10] above c[11] } + ccol { c[12]~ above c[13]~ above c[14]~ above c[15]~ } +} right ) } ~~ times ~~ +{ left ( matrix { + ccol { m[0] above m[1] above m[2] above m[3] } + ccol { m[4] above m[5] above m[6] above m[7] } + ccol { m[8] above m[9] above m[10] above m[11] } + ccol { m[12]~ above m[13]~ above m[14]~ above m[15]~ } +} right ) } ~~ times ~~ +{left ( matrix { +ccol { v[0]~ above v[1]~ above v[2]~ above v[3]~ } +} right )} } +.EN +.sp +.P +Where '$times$' denotes matrix multiplication, and +$v$ is represented as a $4 ~times~ 1$ matrix. +.br +.SH NOTES +While the elements of the matrix may be specified with +single or double precision, the GL may store or operate on these +values in less than single precision. +.P +In many computer languages $4 ~times~ 4$ arrays are represented +in row-major order. The transformations just described +represent these matrices in column-major order. +The order of the multiplication is important. For example, if the current +transformation is a rotation, and _cmnd is called with a translation matrix, +the translation is done directly on the coordinates to be transformed, +while the rotation is done on the results of that translation. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MATRIX_MODE) +.br +_cmnd(Get) with argument _const(COLOR_MATRIX) +.br +_cmnd(Get) with argument _const(MODELVIEW_MATRIX) +.br +_cmnd(Get) with argument _const(PROJECTION_MATRIX) +.br +_cmnd(Get) with argument _const(TEXTURE_MATRIX) +.SH SEE ALSO +_cmnd(LoadIdentity), +_cmnd(LoadMatrix), +_cmnd(MatrixMode), +_cmnd(PushMatrix) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/newlist.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/newlist.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/newlist.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,164 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_header(NewList,create or replace a display list) +_names(NewList) +.SH PARAMETERS +_phead(_param1) +Specifies the display-list name. +_phead(_param2) +Specifies the compilation mode, +which can be +_const(COMPILE) or +_const(COMPILE_AND_EXECUTE). +_names(EndList) +.SH DESCRIPTION +Display lists are groups of GL commands that have been stored +for subsequent execution. +Display lists are created with _cmnd. +All subsequent commands are placed in the display list, +in the order issued, +until _cmnd(EndList) is called. +.P +_cmnd has two arguments. +The first argument, +_param1(1), +is a positive integer that becomes the unique name for the display list. +Names can be created and reserved with _cmnd(GenLists) +and tested for uniqueness with _cmnd(IsList). +The second argument, +_param2(1), +is a symbolic constant that can assume one of two values: +.TP 30 +_const(COMPILE) +Commands are merely compiled. +.TP +_const(COMPILE_AND_EXECUTE) +Commands are executed as they are compiled into the display list. +.P +Certain commands are not compiled into the display list +but are executed immediately, +regardless of the display-list mode. +These commands are +_cmnd(AreTexturesResident), +_cmnd(ColorPointer), +_cmnd(DeleteLists), +_cmnd(DeleteTextures), +_cmnd(DisableClientState), +_cmnd(EdgeFlagPointer), +_cmnd(EnableClientState), +_cmnd(FeedbackBuffer), +_cmnd(Finish), +_cmnd(Flush), +_cmnd(GenLists), +_cmnd(GenTextures), +_cmnd(IndexPointer), +_cmnd(InterleavedArrays), +_cmnd(IsEnabled), +_cmnd(IsList), +_cmnd(IsTexture), +_cmnd(NormalPointer), +_cmnd(PopClientAttrib), +_cmnd(PixelStore), +_cmnd(PushClientAttrib), +_cmnd(ReadPixels), +_cmnd(RenderMode), +_cmnd(SelectBuffer), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer), +and all of the _cmnd(Get) commands. +.P +Similarly, +_cmnd(TexImage1D), _cmnd(TexImage2D), and _cmnd(TexImage3D) +are executed immediately and not compiled into the display list when their +first argument is _const(PROXY_TEXTURE_1D), _const(PROXY_TEXTURE_1D), or +_const(PROXY_TEXTURE_3D), respectively. +.P +When the _arbstring(imaging) extension is supported, +_cmnd(Histogram) executes immediately when its argument is +_const(PROXY_HISTOGRAM). Similarly, _cmnd(ColorTable) executes +immediately when its first argument is _cmnd(PROXY_COLOR_TABLE), +_cmnd(PROXY_POST_CONVOLUTION_COLOR_TABLE), or +_cmnd(PROXY_POST_COLOR_MATRIX_COLOR_TABLE). +.P +When the _arbstring(multitexture) extension is supported, +_cmnd(ClientActiveTextureARB) is not compiled into display lists, but +executed immediately. +.P +When _cmnd(EndList) is encountered, +the display-list definition is completed by associating the list +with the unique name _param1(1) +(specified in the _cmnd(NewList) command). +If a display list with name _param1(1) already exists, +it is replaced only when _cmnd(EndList) is called. +.SH NOTES +_cmnd(CallList) and _cmnd(CallLists) can be entered into display lists. +Commands in the display list or lists executed by _cmnd(CallList) +or _cmnd(CallLists) are not included in the display list being created, +even if the list creation mode is _const(COMPILE_AND_EXECUTE). +.P +A display list is just a group of commands and arguments, so errors +generated by commands in a display list must be generated when the list is +executed. If the list is created in _const(COMPILE) mode, errors are +not generated until the list is executed. +.SH ERRORS +_const(INVALID_VALUE) is generated if _param1(1) is 0. +.P +_const(INVALID_ENUM) is generated if _param2(1) is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd(EndList) is called +without a preceding _cmnd(NewList), +or if _cmnd(NewList) is called while a display list is being defined. +.P +_const(INVALID_OPERATION) is generated if _cmnd(NewList) or _cmnd(EndList) +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.P +_const(OUT_OF_MEMORY) is generated if there is insufficient memory to +compile the display list. If the GL version is 1.1 or greater, no +change is made to the previous contents of the display list, if any, +and no other change is made to the GL state. (It is as if no attempt +had been made to create the new display list.) +.SH ASSOCIATED GETS +_cmnd(IsList) +.br +_cmnd(Get) with argument _const(LIST_INDEX) +.br +_cmnd(Get) with argument _const(LIST_MODE) +.SH SEE ALSO +_cmnd(CallList), +_cmnd(CallLists), +_cmnd(DeleteLists), +_cmnd(GenLists) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/normal.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/normal.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/normal.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,88 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Normal,set the current normal vector) +.EQ +delim $$ +.EN +_names(Normal,3[bdfis]) +.SH PARAMETERS +_phead(_param1 _param2 _param3) +Specify the $x$, $y$, and $z$ coordinates of the new current normal. +The initial value of the current normal is the unit vector, (0, 0, 1). +.P +_names(Normal,3[bsidf]v) +.SH PARAMETERS +_phead(_param1) +Specifies a pointer to an array of three elements: +the $x$, $y$, and $z$ coordinates of the new current normal. +.P +.SH DESCRIPTION +The current normal is set to the given coordinates +whenever _cmnd is issued. +Byte, short, or integer arguments are converted to floating-point +format with a linear mapping that maps the most positive representable integer +value to 1.0, +and the most negative representable integer value to \-1.0. +.P +Normals specified with _cmnd need not have unit length. +If _const(NORMALIZE) is enabled, +then normals of any length specified with _cmnd are normalized after transformation. +If _const(RESCALE_NORMAL) is enabled, normals are scaled by a scaling factor +derived from the modelview matrix. _const(RESCALE_NORMAL) requires that the +originally specified normals were of unit length, and that the modelview +matrix contain only uniform scales for proper results. +To enable and disable normalization, call _cmnd(Enable) and _cmnd(Disable) +with either _const(NORMALIZE) or _const(RESCALE_NORMAL). +Normalization is initially disabled. +.SH NOTES +The current normal can be updated at any time. +In particular, _cmnd can be called between a call to _cmnd(Begin) and +the corresponding call to _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(CURRENT_NORMAL) +.br +_cmnd(IsEnabled) with argument _const(NORMALIZE) +.br +_cmnd(IsEnabled) with argument _const(RESCALE_NORMAL) +.SH SEE ALSO +_cmnd(Begin), +_cmnd(Color), +_cmnd(Index), +_cmnd(NormalPointer), +_cmnd(TexCoord), +_cmnd(Vertex) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/normalpointer.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/normalpointer.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/normalpointer.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,139 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ A real line follows. +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ Use GL not OpenGL +_C_ Don't change the ordering of the main headers. +_C_ C specification (or fortran) is handled automatically +_C_ .TH is automatically added to the top of this file. +_C_ Below, use current tense, active do not capitalize the first word and dont +_C_ use a period. +_C_ the function name must appear in (APIFILE) (usually gl.h) as set in +_C_ Makefile. +_header(NormalPointer,define an array of normals) +_names(NormalPointer) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the data type of each coordinate in the array. +Symbolic constants +_const(BYTE), +_const(SHORT), +_const(INT), +_const(FLOAT), and +_const(DOUBLE) +are accepted. The initial value is _const(FLOAT). +_phead(_param2) +Specifies the byte offset between consecutive normals. If _param2 is 0\- +the initial value\-the normals are understood to be tightly packed in +the array. +The initial value is 0. +_phead(_param3) +Specifies a pointer to the first coordinate of the first normal in the +array. +The initial value is 0. +.SH DESCRIPTION +_cmnd specifies the location and data format of an array of normals +to use when rendering. +_param1 specifies the data type of +the normal coordinates and _param2 gives the byte stride from one +normal to the next, allowing vertices and attributes +to be packed into a single array or stored in separate arrays. +(Single-array storage may be more efficient on some implementations; +see _cmnd(InterleavedArrays).) +When a normal array is specified, _param1, _param2, and _param3 are +saved as client-side state. +.P +To enable and disable the normal array, call _cmnd(EnableClientState) and +_cmnd(DisableClientState) with the argument _const(NORMAL_ARRAY). If +enabled, the normal array is used +when _cmnd(DrawArrays), _cmnd(DrawElements), or _cmnd(ArrayElement) is called. +.P +Use _cmnd(DrawArrays) to construct a sequence of primitives (all of the +same type) from prespecified vertex and vertex attribute arrays. +Use _cmnd(ArrayElement) to specify primitives +by indexing vertices and vertex attributes and _cmnd(DrawElements) to +construct a sequence of primitives by indexing vertices and vertex attributes. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +The normal array is initially disabled and isn't accessed when +_cmnd(ArrayElement), _cmnd(DrawElements), or _cmnd(DrawArrays) is called. +.P +Execution of _cmnd is not allowed between +_cmnd(Begin) and the corresponding _cmnd(End), +but an error may or may not be generated. If an error is not generated, +the operation is undefined. +.P +_cmnd is typically implemented on the client side. +.P +Since the normal array parameters are client-side state, they are not +saved or restored by _cmnd(PushAttrib) and _cmnd(PopAttrib). +Use _cmnd(PushClientAttrib) and +_cmnd(PopClientAttrib) instead. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param2 is negative. +.SH ASSOCIATED GETS +_cmnd(IsEnabled) with argument _const(NORMAL_ARRAY) +.br +_cmnd(Get) with argument _const(NORMAL_ARRAY_TYPE) +.br +_cmnd(Get) with argument _const(NORMAL_ARRAY_STRIDE) +.br +_cmnd(GetPointerv) with argument _const(NORMAL_ARRAY_POINTER) +.SH SEE ALSO +_C_ no queries or gets listed above, +_C_ alphabetize commands +_C_ seperate with commas not .br. +_C_ no command appears in the associated gets as well as in SEE ALSO. +_cmnd(ArrayElement), +_cmnd(ColorPointer), +_cmnd(DrawArrays), +_cmnd(DrawElements), +_cmnd(EdgeFlagPointer), +_cmnd(Enable), +_cmnd(GetPointerv), +_cmnd(IndexPointer), +_cmnd(InterleavedArrays), +_cmnd(PopClientAttrib), +_cmnd(PushClientAttrib), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/ortho.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/ortho.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/ortho.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,115 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Ortho,multiply the current matrix with an orthographic matrix) +_names(Ortho) +.SH PARAMETERS +_phead(_param1 _param2) +Specify the coordinates for the left and right vertical clipping planes. +_phead(_param3 _param4) +Specify the coordinates for the bottom and top horizontal clipping planes. +_phead(_param5 _param6) +Specify the distances to the nearer and farther depth clipping planes. +These values are negative if the plane is to be behind the viewer. +.SH DESCRIPTION +_cmnd describes a transformation that produces a parallel projection. +The current matrix (see _cmnd(MatrixMode)) is multiplied by this matrix +and the result replaces the current matrix, as if +_cmnd(MultMatrix) were called with the following matrix +as its argument: +.sp +.ce +.EQ +left ( matrix { + ccol { {2 over {_eqnparam2 - _eqnparam1}} above 0 above 0 above 0 } + ccol { 0 above {2 over {_eqnparam4 - _eqnparam3}} above 0 above 0 } + ccol { 0 above 0 above {-2 over {_eqnparam6 - _eqnparam5}} above 0 } + ccol { {t sub x}~ above {t sub y}~ above {t sub z}~ above 1~ } +} right ) +.EN +.BP +.P +where +.ce +.EQ +t sub x ~=~ -^{{_eqnparam2 ~+~ _eqnparam1} over {_eqnparam2 ~-~ _eqnparam1}} +.EN + +.ce +.EQ +t sub y ~=~ -^{{_eqnparam4 ~+~ _eqnparam3} over {_eqnparam4 ~-~ _eqnparam3}} +.EN + +.ce +.EQ +t sub z ~=~ -^{{_eqnparam6 ~+~ _eqnparam5} over {_eqnparam6 ~-~ _eqnparam5}} +.EN + +.RE +.P +Typically, the matrix mode is _const(PROJECTION), and +(_param1, _param3, \-_param5) and (_param2, _param4, \-_param5) +specify the points on the near clipping plane that are mapped +to the lower left and upper right corners of the window, +respectively, +assuming that the eye is located at (0, 0, 0). +\-_param6 specifies the location of the far clipping plane. +Both _param5 and _param6 can be either positive or negative. +.P +Use _cmnd(PushMatrix) and _cmnd(PopMatrix) to save and restore +the current matrix stack. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of +_cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MATRIX_MODE) +.br +_cmnd(Get) with argument _const(COLOR_MATRIX) +.br +_cmnd(Get) with argument _const(MODELVIEW_MATRIX) +.br +_cmnd(Get) with argument _const(PROJECTION_MATRIX) +.br +_cmnd(Get) with argument _const(TEXTURE_MATRIX) +.SH SEE ALSO +_cmnd(Frustum), +_cmnd(MatrixMode), +_cmnd(MultMatrix), +_cmnd(PushMatrix), +_cmnd(Viewport) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/passthrough.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/passthrough.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/passthrough.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,73 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(PassThrough,place a marker in the feedback buffer) +_names(PassThrough) +.SH PARAMETERS +_phead(_param1) +Specifies a marker value to be placed in the feedback buffer +following a _const(PASS_THROUGH_TOKEN). +.SH DESCRIPTION +.P +Feedback is a GL render mode. +The mode is selected by calling +_cmnd(RenderMode) with _const(FEEDBACK). +When the GL is in feedback mode, +no pixels are produced by rasterization. +Instead, +information about primitives that would have been rasterized +is fed back to the application using the GL. +See the _cmnd(FeedbackBuffer) reference page for a description of the +feedback buffer and the values in it. +.P +_cmnd inserts a user-defined marker in the feedback buffer +when it is executed in feedback mode. +_param1 is returned as if it were a primitive; +it is indicated with its own unique identifying value: +_const(PASS_THROUGH_TOKEN). +The order of _cmnd commands with respect to the specification +of graphics primitives is maintained. +.SH NOTES +_cmnd is ignored if the GL is not in feedback mode. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd is executed between +the execution of _cmnd(Begin) and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(RENDER_MODE) +.SH SEE ALSO +_cmnd(FeedbackBuffer), +_cmnd(RenderMode) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/pixelmap.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/pixelmap.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/pixelmap.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,251 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(PixelMap,set up pixel transfer maps) +_names(PixelMap,u*[fis]v) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +.na +Specifies a symbolic map name. +Must be one of the following: +_const(PIXEL_MAP_I_TO_I), +_const(PIXEL_MAP_S_TO_S), +_const(PIXEL_MAP_I_TO_R), +_const(PIXEL_MAP_I_TO_G), +_const(PIXEL_MAP_I_TO_B), +_const(PIXEL_MAP_I_TO_A), +_const(PIXEL_MAP_R_TO_R), +_const(PIXEL_MAP_G_TO_G), +_const(PIXEL_MAP_B_TO_B), or +_const(PIXEL_MAP_A_TO_A). +_phead(_param2) +Specifies the size of the map being defined. +_phead(_param3) +Specifies an array of _param2 values. +.SH DESCRIPTION +_cmnd sets up translation tables, +or \f2maps\fP, +used by +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawPixels), +_cmnd(ReadPixels), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), and +_cmnd(TexSubImage3D). +Additionally, if the _arbstring(imaging) subset is supported, the +routines +_cmnd(ColorTable), +_cmnd(ColorSubTable), +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), +_cmnd(Histogram), +_cmnd(Minmax), and +_cmnd(SeparableFilter2D). +Use of these maps is described completely in the +_cmnd(PixelTransfer) reference page, +and partly in the reference pages for the pixel and texture image commands. +Only the specification of the maps is described in this reference page. +.P +_param1 is a symbolic map name, +indicating one of ten maps to set. +_param2 specifies the number of entries in the map, +and _param3 is a pointer to an array of _param2 map values. +.P +The ten maps are as follows: +.TP 30 +_const(PIXEL_MAP_I_TO_I) +Maps color indices to color indices. +.TP +_const(PIXEL_MAP_S_TO_S) +Maps stencil indices to stencil indices. +.TP +_const(PIXEL_MAP_I_TO_R) +Maps color indices to red components. +.TP +_const(PIXEL_MAP_I_TO_G) +Maps color indices to green components. +.TP +_const(PIXEL_MAP_I_TO_B) +Maps color indices to blue components. +.TP +_const(PIXEL_MAP_I_TO_A) +Maps color indices to alpha components. +.TP +_const(PIXEL_MAP_R_TO_R) +Maps red components to red components. +.TP +_const(PIXEL_MAP_G_TO_G) +Maps green components to green components. +.TP +_const(PIXEL_MAP_B_TO_B) +Maps blue components to blue components. +.TP +_const(PIXEL_MAP_A_TO_A) +Maps alpha components to alpha components. +.P +The entries in a map can be specified as single-precision +floating-point numbers, +unsigned short integers, +or unsigned long integers. +Maps that store color component values +(all but _const(PIXEL_MAP_I_TO_I) and _const(PIXEL_MAP_S_TO_S)) +retain their values in floating-point format, +with unspecified mantissa and exponent sizes. +Floating-point values specified by _cmnd(PixelMapfv) are converted directly +to the internal floating-point format of these maps, +then clamped to the range [0,1]. +Unsigned integer values specified by _cmnd(PixelMapusv) and +_cmnd(PixelMapuiv) are converted linearly such that +the largest representable integer maps to 1.0, +and 0 maps to 0.0. +.P +Maps that store indices, +_const(PIXEL_MAP_I_TO_I) and _const(PIXEL_MAP_S_TO_S), +retain their values in fixed-point format, +with an unspecified number of bits to the right of the binary point. +Floating-point values specified by _cmnd(PixelMapfv) are converted directly +to the internal fixed-point format of these maps. +Unsigned integer values specified by _cmnd(PixelMapusv) and +_cmnd(PixelMapuiv) specify integer values, +with all 0's to the right of the binary point. +.P +The following table shows the initial sizes and values for each of the maps. +Maps that are indexed by either color or stencil indices must have +_param2 = $2 sup n$ for some $n$ or the results are undefined. +The maximum allowable size for each map depends on the implementation +and can be determined by calling _cmnd(Get) with argument +_const(MAX_PIXEL_MAP_TABLE). +The single maximum applies to all maps; it is at +least 32. +.bp +.TS +center tab(:) delim($$) ; +lb cb cb cb cb +l c c c c. +_ +_param1:Lookup Index:Lookup Value:Initial Size:Initial Value +_ +_const(PIXEL_MAP_I_TO_I):color index:color index:1:0 +_const(PIXEL_MAP_S_TO_S):stencil index :stencil index :1:0 +_const(PIXEL_MAP_I_TO_R):color index :R:1:0 +_const(PIXEL_MAP_I_TO_G):color index :G:1:0 +_const(PIXEL_MAP_I_TO_B):color index:B:1:0 +_const(PIXEL_MAP_I_TO_A):color index:A:1:0 +_const(PIXEL_MAP_R_TO_R):R:R:1:0 +_const(PIXEL_MAP_G_TO_G):G:G:1:0 +_const(PIXEL_MAP_B_TO_B):B:B:1:0 +_const(PIXEL_MAP_A_TO_A):A:A:1:0 +_ +.TE + +.RE +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param2 is less than one +or larger than _const(MAX_PIXEL_MAP_TABLE). +.P +_const(INVALID_VALUE) is generated if _param1 is +_const(PIXEL_MAP_I_TO_I), +_const(PIXEL_MAP_S_TO_S), +_const(PIXEL_MAP_I_TO_R), +_const(PIXEL_MAP_I_TO_G), +_const(PIXEL_MAP_I_TO_B), or +_const(PIXEL_MAP_I_TO_A), +and _param2 is not a power of two. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetPixelMap) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_I_TO_I_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_S_TO_S_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_I_TO_R_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_I_TO_G_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_I_TO_B_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_I_TO_A_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_R_TO_R_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_G_TO_G_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_B_TO_B_SIZE) +.br +_cmnd(Get) with argument _const(PIXEL_MAP_A_TO_A_SIZE) +.br +_cmnd(Get) with argument _const(MAX_PIXEL_MAP_TABLE) +.SH SEE ALSO +_cmnd(ColorTable), +_cmnd(ColorSubTable), +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(DrawPixels), +_cmnd(Histogram), +_cmnd(Minmax), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(ReadPixels), +_cmnd(SeparableFilter2D), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/pixelstore.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/pixelstore.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/pixelstore.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,514 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(PixelStore,set pixel storage modes) +_names(PixelStore,[fi]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the symbolic name of the parameter to be set. +Six values affect the packing of pixel data into memory: +_const(PACK_SWAP_BYTES), +_const(PACK_LSB_FIRST), +_const(PACK_ROW_LENGTH), +_const(PACK_IMAGE_HEIGHT), +_const(PACK_SKIP_PIXELS), +_const(PACK_SKIP_ROWS), +_const(PACK_SKIP_IMAGES), and +_const(PACK_ALIGNMENT). +Six more affect the unpacking of pixel data \f2from\fP memory: +_const(UNPACK_SWAP_BYTES), +_const(UNPACK_LSB_FIRST), +_const(UNPACK_ROW_LENGTH), +_const(UNPACK_IMAGE_HEIGHT), +_const(UNPACK_SKIP_PIXELS), +_const(UNPACK_SKIP_ROWS), +_const(UNPACK_SKIP_IMAGES), and +_const(UNPACK_ALIGNMENT). +_phead(_param2) +Specifies the value that _param1 is set to. +.SH DESCRIPTION + +_cmnd sets pixel storage modes that affect the operation of subsequent +_cmnd(DrawPixels) and _cmnd(ReadPixels) as well as the unpacking of +polygon stipple patterns (see _cmnd(PolygonStipple)), bitmaps (see +_cmnd(Bitmap)), texture patterns (see _cmnd(TexImage1D), +_cmnd(TexImage2D), _cmnd(TexImage3D), _cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), _cmnd(TexSubImage3D)). +Additionally, if the _arbstring(imaging) extension is supported, pixle +storage modes affect convlution filters +(see _cmnd(ConvolutionFilter1D), _cmnd(ConvolutionFilter2D), and +_cmnd(SeparableFilter2D), color table (see _cmnd(ColorTable), and +_cmnd(ColorSubTable), and unpacking histogram (See _cmnd(Histogram)), +and minmax (See _cmnd(Minmax)) data. +.P +_param1 is a symbolic constant indicating the parameter to be set, and +_param2 is the new value. Six of the twelve storage parameters affect +how pixel data is returned to client memory. +They are as follows: +.TP 10 +_const(PACK_SWAP_BYTES) +If true, +byte ordering for multibyte color components, +depth components, +color indices, +or stencil indices +is reversed. +That is, +if a four-byte component consists of bytes +$b sub 0$, +$b sub 1$, +$b sub 2$, +$b sub 3$, +it is stored in memory as +$b sub 3$, +$b sub 2$, +$b sub 1$, +$b sub 0$ +if _const(PACK_SWAP_BYTES) is true. +_const(PACK_SWAP_BYTES) has no effect on the memory order of components +within a pixel, +only on the order of bytes within components or indices. +For example, +the three components of a _const(RGB) format pixel are always stored with +red first, +green second, +and blue third, +regardless of the value of _const(PACK_SWAP_BYTES). +.TP +_const(PACK_LSB_FIRST) +If true, +bits are ordered within a byte from least significant to most significant; +otherwise, +the first bit in each byte is the most significant one. +This parameter is significant for bitmap data only. +.TP +_const(PACK_ROW_LENGTH) +If greater than 0, +_const(PACK_ROW_LENGTH) defines the number of pixels in a row. +If the first pixel of a row is placed at location $p$ in memory, +then the location of the first pixel of the next row is obtained by skipping +.sp +.ce +$k ~=~~ left { ^ lpile { n l above {a over s left ceiling { s n l } over a right ceiling}} ~~ lpile {s ~>=~ a above s ~<~ a }$ +.sp +components or indices, +where $n$ is the number of components or indices in a pixel, +$l$ is the number of pixels in a row +(_const(PACK_ROW_LENGTH) if it is greater than 0, +the $width$ argument to the pixel routine otherwise), +$a$ is the value of _const(PACK_ALIGNMENT), and +$s$ is the size, in bytes, of a single component +(if $ a < s$, then it is as if $a ~=~ s$). +In the case of 1-bit values, +the location of the next row is obtained by skipping +.sp +.ce +$k ~=~ 8 a left ceiling { n l } over { 8 a } ^ right ceiling$ +.sp +components or indices. +.IP +The word \f2component\fP in this description refers to the nonindex values +red, +green, +blue, +alpha, +and depth. +Storage format _const(RGB), +for example, +has three components per pixel: +first red, +then green, +and finally blue. +.TP +_const(PACK_IMAGE_HEIGHT) +If greater than 0, +_const(PACK_IMAGE_HEIGHT) defines the number of pixels in an image +three-dimensional texture volume. +Where ``image'' is defined by all pixels sharing the same third +dimension index. +If the first pixel of a row is placed at location $p$ in memory, +then the location of the first pixel of the next row is obtained by skipping +.sp +.ce +$k ~=~~ left { ~ lpile { n l h above {a over s left ceiling { s n l h } +over a ^ right ceiling}} ~~ lpile {s ~>=~ a above s ~<~ a }$ +.sp +components or indices, where $n$ is the number of components or indices +in a pixel, $l$ is the number of pixels in a row +(_const(PACK_ROW_LENGTH) if it is greater than 0, the +$width$ argument to _cmnd(TexImage3d) otherwise), $h$ is the number of +rows in a pixel image (_const(PACK_IMAGE_HEIGHT) if it is greater than +0, the $height$ arguemnt to the _cmnd(TexImage3D) routine otherwise), +$a$ is the value of +_const(PACK_ALIGNMENT), and $s$ is the size, in bytes, of a single +component (if $ a < s$, then it is as if $a = s$). +.IP +The word \f2component\fP in this description refers to the nonindex values +red, +green, +blue, +alpha, +and depth. +Storage format _const(RGB), +for example, +has three components per pixel: +first red, +then green, +and finally blue. +.TP +_const(PACK_SKIP_PIXELS), _const(PACK_SKIP_ROWS), and _const(PACK_SKIP_IMAGES) +These values are provided as a convenience to the programmer; +they provide no functionality that cannot be duplicated simply by +incrementing the pointer passed to _cmnd(ReadPixels). +Setting _const(PACK_SKIP_PIXELS) to $i$ is equivalent to incrementing +the pointer by $i n$ components or indices, +where $n$ is the number of components or indices in each pixel. +Setting _const(PACK_SKIP_ROWS) to $j$ is equivalent to incrementing +the pointer by $j m$ components or indices, +where $m$ is the number of components or indices per row, +as just computed in the _const(PACK_ROW_LENGTH) section. +Setting _const(PACK_SKIP_IMAGES) to $k$ is equivalent to incrementing +the pointer by $k p$, where $p$ is the number of components or indices +per image, as computed in the _const(PACK_IMAGE_HEIGHT) section. +.TP +_const(PACK_ALIGNMENT) +Specifies the alignment requirements for the start of each pixel row in memory. +The allowable values are +1 (byte-alignment), +2 (rows aligned to even-numbered bytes), +4 (word-alignment), and +8 (rows start on double-word boundaries). +.P +The other six of the twelve storage parameters affect how pixel data is +read from client memory. +These values are significant for _cmnd(DrawPixels), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D), +_cmnd(Bitmap), and +_cmnd(PolygonStipple). +.P +Additionally, if the _arbstring(imaging) extension is supported, +_cmnd(ColorTable), +_cmnd(ColorSubTable), +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), and +_cmnd(SeparableFilter2D). +They are as follows: +.TP +_const(UNPACK_SWAP_BYTES) +If true, +byte ordering for multibyte color components, +depth components, +color indices, +or stencil indices +is reversed. +That is, +if a four-byte component consists of bytes +$b sub 0$, +$b sub 1$, +$b sub 2$, +$b sub 3$, +it is taken from memory as +$b sub 3$, +$b sub 2$, +$b sub 1$, +$b sub 0$ +if _const(UNPACK_SWAP_BYTES) is true. +_const(UNPACK_SWAP_BYTES) has no effect on the memory order of components +within a pixel, +only on the order of bytes within components or indices. +For example, +the three components of a _const(RGB) format pixel are always stored with +red first, +green second, +and blue third, +regardless of the value of _const(UNPACK_SWAP_BYTES). +.TP +_const(UNPACK_LSB_FIRST) +If true, +bits are ordered within a byte from least significant to most significant; +otherwise, +the first bit in each byte is the most significant one. +This is relevant only for bitmap data. +.TP +_const(UNPACK_ROW_LENGTH) +If greater than 0, +_const(UNPACK_ROW_LENGTH) defines the number of pixels in a row. +If the first pixel of a row is placed at location $p$ in memory, +then the location of the first pixel of the next row is obtained by skipping +.sp +.ce +$k ~=~~ left { ~ lpile { n l above {a over s left ceiling { s n l } +over a ^ right ceiling}} ~~ lpile {s ~>=~ a above s ~<~ a }$ +.sp +components or indices, +where $n$ is the number of components or indices in a pixel, +$l$ is the number of pixels in a row +(_const(UNPACK_ROW_LENGTH) if it is greater than 0, +the $width$ argument to the pixel routine otherwise), +$a$ is the value of _const(UNPACK_ALIGNMENT), and +$s$ is the size, in bytes, of a single component +(if $ a < s$, then it is as if $a = s$). +In the case of 1-bit values, +the location of the next row is obtained by skipping +.sp +.ce +$k ~=~ 8 a left ceiling { n l } over { 8 a } right ceiling$ +.sp +components or indices. +.IP +The word \f2component\fP in this description refers to the nonindex values +red, +green, +blue, +alpha, +and depth. +Storage format _const(RGB), +for example, +has three components per pixel: +first red, +then green, +and finally blue. +.TP +_const(UNPACK_IMAGE_HEIGHT) +If greater than 0, +_const(UNPACK_IMAGE_HEIGHT) defines the number of pixels in an image of +a three-dimensional texture volume. Where ``image'' is defined by all +pixel sharing the same third dimension index. +If the first pixel of a row is placed at location $p$ in memory, +then the location of the first pixel of the next row is obtained by skipping +.sp +.ce +$k ~=~~ left {~ lpile { n l h above {a over s left ceiling { s n l h } +over a ^ right ceiling}} ~~ lpile {s ~ >=~ a above s ~<~ a }$ +.sp +components or indices, +where $n$ is the number of components or indices in a pixel, +$l$ is the number of pixels in a row +(_const(UNPACK_ROW_LENGTH) if it is greater than 0, +the $width$ argument to _cmnd(TexImage3D) otherwise), +$h$ is the number of rows in an image (_const(UNPACK_IMAGE_HEIGHT) if +it is greater than 0, the $height$ argument to _cmnd(TexImage3D) otherwise), +$a$ is the value of _const(UNPACK_ALIGNMENT), and +$s$ is the size, in bytes, of a single component +(if $ a < s$, then it is as if $a ~=~ s$). +.IP +The word \f2component\fP in this description refers to the nonindex values +red, +green, +blue, +alpha, +and depth. +Storage format _const(RGB), +for example, +has three components per pixel: +first red, +then green, +and finally blue. +.TP +_const(UNPACK_SKIP_PIXELS) and _const(UNPACK_SKIP_ROWS) +These values are provided as a convenience to the programmer; +they provide no functionality that cannot be duplicated by +incrementing the pointer passed to +_cmnd(DrawPixels), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(Bitmap), or +_cmnd(PolygonStipple). +Setting _const(UNPACK_SKIP_PIXELS) to $i$ is equivalent to incrementing +the pointer by $i n$ components or indices, +where $n$ is the number of components or indices in each pixel. +Setting _const(UNPACK_SKIP_ROWS) to $j$ is equivalent to incrementing +the pointer by $j k$ components or indices, +where $k$ is the number of components or indices per row, +as just computed in the _const(UNPACK_ROW_LENGTH) section. +.TP +_const(UNPACK_ALIGNMENT) +Specifies the alignment requirements for the start of each pixel row in memory. +The allowable values are +1 (byte-alignment), +2 (rows aligned to even-numbered bytes), +4 (word-alignment), and +8 (rows start on double-word boundaries). +.P +The following table gives the type, +initial value, +and range of valid values for each storage parameter +that can be set with _cmnd. +.sp + +.TS +center tab(:) delim($$) ; +lb cb cb cb +l c c c. +_ +_param1:Type:Initial Value:Valid Range +_ +_const(PACK_SWAP_BYTES):boolean:false:true or false +_const(PACK_LSB_FIRST):boolean:false:true or false +_const(PACK_ROW_LENGTH):integer:0:[0,\(if) +_const(PACK_IMAGE_HEIGHT):integer:0:[0, \(if) +_const(PACK_SKIP_ROWS):integer:0:[0,\(if) +_const(PACK_SKIP_PIXELS):integer:0:[0,\(if) +_const(PACK_SKIP_IMAGES):integer:0:[0,\(if) +_const(PACK_ALIGNMENT):integer:4:1, 2, 4, or 8 +_ +_const(UNPACK_SWAP_BYTES):boolean:false:true or false +_const(UNPACK_LSB_FIRST):boolean:false:true or false +_const(UNPACK_ROW_LENGTH):integer:0:[0,\(if) +_const(UNPACK_IMAGE_HEIGHT):integer:0:[0,\(if) +_const(UNPACK_SKIP_ROWS):integer:0:[0,\(if) +_const(UNPACK_SKIP_PIXELS):integer:0:[0,\(if) +_const(UNPACK_SKIP_IMAGES):integer:0:[0,\(if) +_const(UNPACK_ALIGNMENT):integer:4:1, 2, 4, or 8 +_ +.TE + +.sp +_cmnd(PixelStoref) can be used to set any pixel store parameter. +If the parameter type is boolean, +then if _param2 is 0, +the parameter is false; +otherwise it is set to true. +If _param1 is a integer type parameter, +_param2 is rounded to the nearest integer. +.P +Likewise, _cmnd(PixelStorei) can also be used to set any of the +pixel store parameters. +Boolean parameters are set to false if _param2 is 0 and true otherwise. +.SH NOTES +The pixel storage modes in effect when +_cmnd(DrawPixels), +_cmnd(ReadPixels), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D), +_cmnd(Bitmap), +or _cmnd(PolygonStipple) is placed in a display list control the interpretation +of memory data. +Likewise, if the _arbstring(imaging) extension is supported, the pixel +storage modes in effect when +_cmnd(ColorTable), +_cmnd(ColorSubTable), +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), of +_cmnd(SeparableFilter2D) is placed in a display list control the +intrepretation of memory data. +The pixel storage modes in effect when a display list is executed are +not significant. +.P +Pixel storage modes are client state and must be pushed and restored +using +.br +_cmnd(PushClientAttrib) and _cmnd(PopClientAttrib). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if a negative row length, +pixel skip, +or row skip value is specified, +or if alignment is specified as other than 1, 2, 4, or 8. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(PACK_SWAP_BYTES) +.br +_cmnd(Get) with argument _const(PACK_LSB_FIRST) +.br +_cmnd(Get) with argument _const(PACK_ROW_LENGTH) +.br +_cmnd(Get) with argument _const(PACK_IMAGE_HEIGHT) +.br +_cmnd(Get) with argument _const(PACK_SKIP_ROWS) +.br +_cmnd(Get) with argument _const(PACK_SKIP_PIXELS) +.br +_cmnd(Get) with argument _const(PACK_SKIP_IMAGES) +.br +_cmnd(Get) with argument _const(PACK_ALIGNMENT) +.br +_cmnd(Get) with argument _const(UNPACK_SWAP_BYTES) +.br +_cmnd(Get) with argument _const(UNPACK_LSB_FIRST) +.br +_cmnd(Get) with argument _const(UNPACK_ROW_LENGTH) +.br +_cmnd(Get) with argument _const(UNPACK_IMAGE_HEIGHT) +.br +_cmnd(Get) with argument _const(UNPACK_SKIP_ROWS) +.br +_cmnd(Get) with argument _const(UNPACK_SKIP_PIXELS) +.br +_cmnd(Get) with argument _const(UNPACK_SKIP_IMAGES) +.br +_cmnd(Get) with argument _const(UNPACK_ALIGNMENT) +.SH SEE ALSO +_cmnd(Bitmap), +_cmnd(ColorTable), +_cmnd(ColorSubTable), +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), +_cmnd(SeparableFilter2D), +_cmnd(DrawPixels), +_cmnd(Histogram), +_cmnd(Minmax), +_cmnd(PixelMap), +_cmnd(PixelTransfer), +_cmnd(PixelZoom), +_cmnd(PolygonStipple), +_cmnd(PushClientAttrib), +_cmnd(ReadPixels), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/pixeltransfer.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/pixeltransfer.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/pixeltransfer.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,447 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(PixelTransfer, set pixel transfer modes) +_names(PixelTransfer,[fi]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the symbolic name of the pixel transfer parameter to be set. +Must be one of the following: +_const(MAP_COLOR), +_const(MAP_STENCIL), +_const(INDEX_SHIFT), +_const(INDEX_OFFSET), +_const(RED_SCALE), +_const(RED_BIAS), +_const(GREEN_SCALE), +_const(GREEN_BIAS), +_const(BLUE_SCALE), +_const(BLUE_BIAS), +_const(ALPHA_SCALE), +_const(ALPHA_BIAS), +_const(DEPTH_SCALE), or +_const(DEPTH_BIAS). +.IP +Additionally, if the _arbstring(imaging) extension is supported, the +following symbolic names are accepted: +_const(POST_COLOR_MATRIX_RED_SCALE), +_const(POST_COLOR_MATRIX_GREEN_SCALE), +_const(POST_COLOR_MATRIX_BLUE_SCALE), +_const(POST_COLOR_MATRIX_ALPHA_SCALE), +_const(POST_COLOR_MATRIX_RED_BIAS), +_const(POST_COLOR_MATRIX_GREEN_BIAS), +_const(POST_COLOR_MATRIX_BLUE_BIAS), +_const(POST_COLOR_MATRIX_ALPHA_BIAS), +_const(POST_CONVOLUTION_RED_SCALE), +_const(POST_CONVOLUTION_GREEN_SCALE), +_const(POST_CONVOLUTION_BLUE_SCALE), +_const(POST_CONVOLUTION_ALPHA_SCALE), +_const(POST_CONVOLUTION_RED_BIAS), +_const(POST_CONVOLUTION_GREEN_BIAS), +_const(POST_CONVOLUTION_BLUE_BIAS), and +_const(POST_CONVOLUTION_ALPHA_BIAS). +_phead(_param2) +Specifies the value that _param1 is set to. +.SH DESCRIPTION +_cmnd sets pixel transfer modes that affect the operation of subsequent +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawPixels), +_cmnd(ReadPixels), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), and +_cmnd(TexSubImage3D) commands. +Additionally, if the _arbstring(imaging) subset is supported, the +routines +_cmnd(ColorTable), +_cmnd(ColorSubTable), +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), +_cmnd(Histogram), +_cmnd(Minmax), and +_cmnd(SeparableFilter2D) are also affected. +The algorithms that are specified by pixel transfer modes operate on +pixels after they are read from the frame buffer +(_cmnd(CopyPixels) +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), and +_cmnd(ReadPixels)), +or unpacked from client memory +(_cmnd(DrawPixels), _cmnd(TexImage1D), _cmnd(TexImage2D), _cmnd(TexImage3D), +_cmnd(TexSubImage1D), _cmnd(TexSubImage2D), and _cmnd(TexSubImage3D)). +Pixel transfer operations happen in the same order, +and in the same manner, +regardless of the command that resulted in the pixel operation. +Pixel storage modes +(see _cmnd(PixelStore)) +control the unpacking of pixels being read from client memory, +and the packing of pixels being written back into client memory. +.P +Pixel transfer operations handle four fundamental pixel types: +\f2color\fP, +\f2color index\fP, +\f2depth\fP, and +\f2stencil\fP. +\f2Color\fP pixels consist of four floating-point values +with unspecified mantissa and exponent sizes, +scaled such that 0 represents zero intensity +and 1 represents full intensity. +\f2Color indices\fP comprise a single fixed-point value, +with unspecified precision to the right of the binary point. +\f2Depth\fP pixels comprise a single floating-point value, +with unspecified mantissa and exponent sizes, +scaled such that 0.0 represents the minimum depth buffer value, +and 1.0 represents the maximum depth buffer value. +Finally, +\f2stencil\fP pixels comprise a single fixed-point value, +with unspecified precision to the right of the binary point. +.BP +.P +The pixel transfer operations performed on the four basic pixel types are +as follows: +.TP 12 +Color +Each of the four color components is multiplied by a scale factor, +then added to a bias factor. +That is, +the red component is multiplied by _const(RED_SCALE), +then added to _const(RED_BIAS); +the green component is multiplied by _const(GREEN_SCALE), +then added to _const(GREEN_BIAS); +the blue component is multiplied by _const(BLUE_SCALE), +then added to _const(BLUE_BIAS); and +the alpha component is multiplied by _const(ALPHA_SCALE), +then added to _const(ALPHA_BIAS). +After all four color components are scaled and biased, +each is clamped to the range [0,1]. +All color, scale, and bias values are specified with _cmnd. +.IP +If _const(MAP_COLOR) is true, +each color component is scaled by the size of the corresponding +color-to-color map, +then replaced by the contents of that map indexed by the scaled component. +That is, +the red component is scaled by _const(PIXEL_MAP_R_TO_R_SIZE), +then replaced by the contents of _const(PIXEL_MAP_R_TO_R) indexed by itself. +The green component is scaled by _const(PIXEL_MAP_G_TO_G_SIZE), +then replaced by the contents of _const(PIXEL_MAP_G_TO_G) indexed by itself. +The blue component is scaled by _const(PIXEL_MAP_B_TO_B_SIZE), +then replaced by the contents of _const(PIXEL_MAP_B_TO_B) indexed by itself. +And +the alpha component is scaled by _const(PIXEL_MAP_A_TO_A_SIZE), +then replaced by the contents of _const(PIXEL_MAP_A_TO_A) indexed by itself. +All components taken from the maps are then clamped to the range [0,1]. +_const(MAP_COLOR) is specified with _cmnd. +The contents of the various maps are specified with _cmnd(PixelMap). +.IP +If the _arbstring(imaging) extension is supported, each of the four +color components may be scaled and biased after tranformation by the +color matrix. +That is, +the red component is multiplied by _const(POST_COLOR_MATRIX_RED_SCALE), +then added to _const(POST_COLOR_MATRIX_RED_BIAS); +the green component is multiplied by _const(POST_COLOR_MATRIX_GREEN_SCALE), +then added to _const(POST_COLOR_MATRIX_GREEN_BIAS); +the blue component is multiplied by _const(POST_COLOR_MATRIX_BLUE_SCALE), +then added to _const(POST_COLOR_MATRIX_BLUE_BIAS); and +the alpha component is multiplied by _const(POST_COLOR_MATRIX_ALPHA_SCALE), +then added to _const(POST_COLOR_MATRIX_ALPHA_BIAS). +After all four color components are scaled and biased, +each is clamped to the range [0,1]. +.IP +Similiarly, if the _arbstring(imaging) extension is supported, each of +the four color components may be scaled and biased after processing by +the enabled convolution filter. +That is, +the red component is multiplied by _const(POST_CONVOLUTION_RED_SCALE), +then added to _const(POST_CONVOLUTION_RED_BIAS); +the green component is multiplied by _const(POST_CONVOLUTION_GREEN_SCALE), +then added to _const(POST_CONVOLUTION_GREEN_BIAS); +the blue component is multiplied by _const(POST_CONVOLUTION_BLUE_SCALE), +then added to _const(POST_CONVOLUTION_BLUE_BIAS); and +the alpha component is multiplied by _const(POST_CONVOLUTION_ALPHA_SCALE), +then added to _const(POST_CONVOLUTION_ALPHA_BIAS). +After all four color components are scaled and biased, +each is clamped to the range [0,1]. +.TP +Color index +Each color index is shifted left by _const(INDEX_SHIFT) bits; any bits +beyond the number of fraction bits carried +by the fixed-point index are filled with zeros. +If _const(INDEX_SHIFT) is negative, +the shift is to the right, +again zero filled. +Then _const(INDEX_OFFSET) is added to the index. +_const(INDEX_SHIFT) and _const(INDEX_OFFSET) are specified with +.br +_cmnd. +.IP +From this point, operation diverges depending on the required format of +the resulting pixels. +If the resulting pixels are to be written to a color index buffer, +or if they are being read back to client memory in _const(COLOR_INDEX) format, +the pixels continue to be treated as indices. +If _const(MAP_COLOR) is true, +each index is masked by $2 sup n ~-~ 1$, +where $n$ is _const(PIXEL_MAP_I_TO_I_SIZE), +then replaced by the contents of _const(PIXEL_MAP_I_TO_I) indexed by the +masked value. +_const(MAP_COLOR) is specified with _cmnd. +The contents of the index map is specified with _cmnd(PixelMap). +.IP +If the resulting pixels are to be written to an RGBA color buffer, +or if they are read back to client memory in a format other than +_const(COLOR_INDEX), +the pixels are converted from indices to colors by referencing the +four maps +_const(PIXEL_MAP_I_TO_R), +_const(PIXEL_MAP_I_TO_G), +_const(PIXEL_MAP_I_TO_B), and +_const(PIXEL_MAP_I_TO_A). +Before being dereferenced, +the index is masked by $2 sup n ~-~ 1$, +where $n$ is +_const(PIXEL_MAP_I_TO_R_SIZE) for the red map, +_const(PIXEL_MAP_I_TO_G_SIZE) for the green map, +_const(PIXEL_MAP_I_TO_B_SIZE) for the blue map, and +_const(PIXEL_MAP_I_TO_A_SIZE) for the alpha map. +All components taken from the maps are then clamped to the range [0,1]. +The contents of the four maps is specified with _cmnd(PixelMap). +.TP +Depth +Each depth value is multiplied by _const(DEPTH_SCALE), +added to _const(DEPTH_BIAS), +then clamped to the range [0,1]. +.TP +Stencil +Each index is shifted _const(INDEX_SHIFT) bits just as a color index is, +then added to _const(INDEX_OFFSET). +If _const(MAP_STENCIL) is true, +each index is masked by $2 sup n ~-~ 1$, +where $n$ is _const(PIXEL_MAP_S_TO_S_SIZE), +then replaced by the contents of _const(PIXEL_MAP_S_TO_S) indexed by the +masked value. +.P +The following table gives the type, +initial value, +and range of valid values for each of the pixel transfer parameters +that are set with _cmnd. +.sp + +.TS +center tab(:); +lb cb cb cb +l c c c. +_ +_param1:Type:Initial Value:Valid Range +_ +_const(MAP_COLOR):boolean:false:true/false +_const(MAP_STENCIL):boolean:false:true/false +_const(INDEX_SHIFT):integer:0:(-\(if,\(if) +_const(INDEX_OFFSET):integer:0:(-\(if,\(if) +_const(RED_SCALE):float:1:(-\(if,\(if) +_const(GREEN_SCALE):float:1:(-\(if,\(if) +_const(BLUE_SCALE):float:1:(-\(if,\(if) +_const(ALPHA_SCALE):float:1:(-\(if,\(if) +_const(DEPTH_SCALE):float:1:(-\(if,\(if) +_const(RED_BIAS):float:0:(-\(if,\(if) +_const(GREEN_BIAS):float:0:(-\(if,\(if) +_const(BLUE_BIAS):float:0:(-\(if,\(if) +_const(ALPHA_BIAS):float:0:(-\(if,\(if) +_const(DEPTH_BIAS):float:0:(-\(if,\(if) +_const(POST_COLOR_MATRIX_RED_SCALE):float:1:(-\(if,\(if) +_const(POST_COLOR_MATRIX_GREEN_SCALE):float:1:(-\(if,\(if) +_const(POST_COLOR_MATRIX_BLUE_SCALE):float:1:(-\(if,\(if) +_const(POST_COLOR_MATRIX_ALPHA_SCALE):float:1:(-\(if,\(if) +_const(POST_COLOR_MATRIX_RED_BIAS):float:0:(-\(if,\(if) +_const(POST_COLOR_MATRIX_GREEN_BIAS):float:0:(-\(if,\(if) +_const(POST_COLOR_MATRIX_BLUE_BIAS):float:0:(-\(if,\(if) +_const(POST_COLOR_MATRIX_ALPHA_BIAS):float:0:(-\(if,\(if) +_const(POST_CONVOLUTION_RED_SCALE):float:1:(-\(if,\(if) +_const(POST_CONVOLUTION_GREEN_SCALE):float:1:(-\(if,\(if) +_const(POST_CONVOLUTION_BLUE_SCALE):float:1:(-\(if,\(if) +_const(POST_CONVOLUTION_ALPHA_SCALE):float:1:(-\(if,\(if) +_const(POST_CONVOLUTION_RED_BIAS):float:0:(-\(if,\(if) +_const(POST_CONVOLUTION_GREEN_BIAS):float:0:(-\(if,\(if) +_const(POST_CONVOLUTION_BLUE_BIAS):float:0:(-\(if,\(if) +_const(POST_CONVOLUTION_ALPHA_BIAS):float:0:(-\(if,\(if) +_ +.TE + +.sp +_cmnd(PixelTransferf) can be used to set any pixel transfer parameter. +If the parameter type is boolean, +0 implies false and any other value implies true. +If _param1 is an integer parameter, +_param2 is rounded to the nearest integer. +.P +Likewise, +_cmnd(PixelTransferi) can be used to set any of the +pixel transfer parameters. +Boolean parameters are set to false if _param2 is 0 and to true otherwise. +_param2 is converted to floating point before being assigned to real-valued parameters. +.SH NOTES +If a +_cmnd(ColorTable), +_cmnd(ColorSubTable), +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawPixels), +_cmnd(ReadPixels), +_cmnd(SeparableFilter2D), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), or +_cmnd(TexSubImage3D). +command is placed in a display list +(see _cmnd(NewList) and _cmnd(CallList)), +the pixel transfer mode settings in effect when the display list is +.I executed +are the ones that are used. +They may be different from the settings when the command was compiled +into the display list. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MAP_COLOR) +.br +_cmnd(Get) with argument _const(MAP_STENCIL) +.br +_cmnd(Get) with argument _const(INDEX_SHIFT) +.br +_cmnd(Get) with argument _const(INDEX_OFFSET) +.br +_cmnd(Get) with argument _const(RED_SCALE) +.br +_cmnd(Get) with argument _const(RED_BIAS) +.br +_cmnd(Get) with argument _const(GREEN_SCALE) +.br +_cmnd(Get) with argument _const(GREEN_BIAS) +.br +_cmnd(Get) with argument _const(BLUE_SCALE) +.br +_cmnd(Get) with argument _const(BLUE_BIAS) +.br +_cmnd(Get) with argument _const(ALPHA_SCALE) +.br +_cmnd(Get) with argument _const(ALPHA_BIAS) +.br +_cmnd(Get) with argument _const(DEPTH_SCALE) +.br +_cmnd(Get) with argument _const(DEPTH_BIAS) +.br +_cmnd(Get) with argument _const(POST_COLOR_MATRIX_RED_SCALE) +.br +_cmnd(Get) with argument _const(POST_COLOR_MATRIX_RED_BIAS) +.br +_cmnd(Get) with argument _const(POST_COLOR_MATRIX_GREEN_SCALE) +.br +_cmnd(Get) with argument _const(POST_COLOR_MATRIX_GREEN_BIAS) +.br +_cmnd(Get) with argument _const(POST_COLOR_MATRIX_BLUE_SCALE) +.br +_cmnd(Get) with argument _const(POST_COLOR_MATRIX_BLUE_BIAS) +.br +_cmnd(Get) with argument _const(POST_COLOR_MATRIX_ALPHA_SCALE) +.br +_cmnd(Get) with argument _const(POST_COLOR_MATRIX_ALPHA_BIAS) +.br +_cmnd(Get) with argument _const(POST_CONVOLUTION_RED_SCALE) +.br +_cmnd(Get) with argument _const(POST_CONVOLUTION_RED_BIAS) +.br +_cmnd(Get) with argument _const(POST_CONVOLUTION_GREEN_SCALE) +.br +_cmnd(Get) with argument _const(POST_CONVOLUTION_GREEN_BIAS) +.br +_cmnd(Get) with argument _const(POST_CONVOLUTION_BLUE_SCALE) +.br +_cmnd(Get) with argument _const(POST_CONVOLUTION_BLUE_BIAS) +.br +_cmnd(Get) with argument _const(POST_CONVOLUTION_ALPHA_SCALE) +.br +_cmnd(Get) with argument _const(POST_CONVOLUTION_ALPHA_BIAS) +.SH SEE ALSO +_cmnd(CallList), +_cmnd(ColorTable), +_cmnd(ColorSubTable), +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawPixels), +_cmnd(NewList), +_cmnd(PixelMap), +_cmnd(PixelStore), +_cmnd(PixelZoom), +_cmnd(ReadPixels), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/pixelzoom.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/pixelzoom.gl:1.3 --- /dev/null Fri Jan 18 15:22:04 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/pixelzoom.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,76 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(PixelZoom,specify the pixel zoom factors) +_names(PixelZoom) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1 _param2) +Specify the $x$ and $y$ zoom factors for pixel write operations. +.SH DESCRIPTION +_cmnd specifies values for the $x$ and $y$ zoom factors. +During the execution of _cmnd(DrawPixels) or _cmnd(CopyPixels), +if ($xr $, $yr $) is the current raster position, +and a given element is in the $m$th row and $n$th column of the pixel rectangle, +then pixels whose centers are in the rectangle with corners at +.sp +.ce +($xr ~+~ n cdot _eqnparam1$, $yr ~+~ m cdot _eqnparam2$) +.sp +.ce +($xr ~+~ (n+1) cdot _eqnparam1$, $yr ~+~ (m+1) cdot _eqnparam2$) +.sp +are candidates for replacement. +Any pixel whose center lies on the bottom or left edge of this rectangular +region is also modified. +.P +Pixel zoom factors are not limited to positive values. +Negative zoom factors reflect the resulting image about the current +raster position. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(ZOOM_X) +.br +_cmnd(Get) with argument _const(ZOOM_Y) +.SH SEE ALSO +_cmnd(CopyPixels), +_cmnd(DrawPixels) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/pointsize.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/pointsize.gl:1.3 --- /dev/null Fri Jan 18 15:22:05 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/pointsize.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,146 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(PointSize,specify the diameter of rasterized points) +_names(PointSize) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the diameter of rasterized points. +The initial value is 1. +.SH DESCRIPTION +_cmnd specifies the rasterized diameter of both aliased and antialiased +points. +Using a point size other than 1 has different effects, +depending on whether point antialiasing is enabled. +To enable and disable point antialiasing, call +_cmnd(Enable) and _cmnd(Disable) +with argument _const(POINT_SMOOTH). Point antialiasing is initially disabled. +.P +If point antialiasing is disabled, +the actual size is determined by rounding the supplied size +to the nearest integer. +(If the rounding results in the value 0, +it is as if the point size were 1.) +If the rounded size is odd, +then the center point +($ x $, $ y $) +of the pixel fragment that represents the point is computed as +.sp +.ce +( $ \(lf ~ x sub w ~ \(rf ~+~ .5 $, $ \(lf ~ y sub w ~ \(rf ~+~ .5 $) +.sp +where $w$ subscripts indicate window coordinates. +All pixels that lie within the square grid of the rounded size centered at +($ x $, $ y $) +make up the fragment. +If the size is even, +the center point is +.sp +.ce +( $ \(lf ~ x sub w ~+~ .5 ~ \(rf$, $ \(lf ~ y sub w ~+~ .5 ~ \(rf $) +.sp +and the rasterized fragment's centers are the half-integer window coordinates +within the square of the rounded size centered at +($ x $, $ y $). +All pixel fragments produced in rasterizing a nonantialiased point are +assigned the same associated data, +that of the vertex corresponding to the point. +.P +If antialiasing is enabled, +then point rasterization produces a fragment for each pixel square +that intersects the region lying within the circle having diameter +equal to the current point size and centered at the point's +($ x sub w $, $ y sub w $). +The coverage value for each fragment is the window coordinate area +of the intersection of the circular region with the corresponding pixel square. +This value is saved and used in the final rasterization step. +The data associated with each fragment is the data associated with +the point being rasterized. +.P +Not all sizes are supported when point antialiasing is enabled. +If an unsupported size is requested, +the nearest supported size is used. +Only size 1 is guaranteed to be supported; +others depend on the implementation. +To query the range of supported sizes and the size difference between +supported sizes within the range, call +_cmnd(Get) with arguments +_const(SMOOTH_POINT_SIZE_RANGE) and +_const(SMOOTH_POINT_SIZE_GRANULARITY). +For aliased points, query the supported ranges and granularity with +_cmnd(Get) with arguments +_const(ALIASED_POINT_SIZE_RANGE) and +_const(ALIASED_POINT_SIZE_GRANULARITY). +.SH NOTES +The point size specified by _cmnd is always returned when _const(POINT_SIZE) +is queried. +Clamping and rounding for aliased and antialiased points have no effect +on the specified value. +.P +A non-antialiased point size may be clamped to an implementation-dependent +maximum. +Although this maximum cannot be queried, +it must be no less than the maximum value for antialiased points, +rounded to the nearest integer value. +.P +_const(POINT_SIZE_RANGE) and _const(POINT_SIZE_GRANULARITY) are +deprecated in GL versions 1.2 and greater. Their functionality has been +replaced by _const(SMOOTH_POINT_SIZE_RANGE) and +_const(SMOOTH_POINT_SIZE_GRANULARITY). +.SH ERRORS +_const(INVALID_VALUE) is generated if _param1 is less than or equal to 0. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(POINT_SIZE) +.br +_cmnd(Get) with argument _const(ALIASED_POINT_SIZE_RANGE) +.br +_cmnd(Get) with argument _const(ALIASED_POINT_SIZE_GRANULARITY) +.br +_cmnd(Get) with argument _const(SMOOTH_POINT_SIZE_RANGE) +.br +_cmnd(Get) with argument _const(SMOOTH_POINT_SIZE_GRANULARITY) +.br +_cmnd(IsEnabled) with argument _const(POINT_SMOOTH) +.SH SEE ALSO +_cmnd(Enable) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/polygonmode.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/polygonmode.gl:1.3 --- /dev/null Fri Jan 18 15:22:05 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/polygonmode.gl Mon Jan 14 17:13:35 2002 @@ -0,0 +1,118 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(PolygonMode,select a polygon rasterization mode) +_names(PolygonMode) +.SH PARAMETERS +_phead(_param1) +Specifies the polygons that _param2 applies to. +Must be +_const(FRONT) for front-facing polygons, +_const(BACK) for back-facing polygons, +or _const(FRONT_AND_BACK) for front- and back-facing polygons. +_phead(_param2) +Specifies how polygons will be rasterized. +Accepted values are +_const(POINT), +_const(LINE), and +_const(FILL). +The initial value is _const(FILL) for both front- and back-facing polygons. +.SH DESCRIPTION +_cmnd controls the interpretation of polygons for rasterization. +_param1 describes which polygons _param2 applies to: +front-facing polygons (_const(FRONT)), +back-facing polygons (_const(BACK)), +or both (_const(FRONT_AND_BACK)). +The polygon mode affects only the final rasterization of polygons. +In particular, +a polygon's vertices are lit and +the polygon is clipped and possibly culled before these modes are applied. +.P +Three modes are defined and can be specified in _param2: +.TP 14 +_const(POINT) +Polygon vertices that are marked as the start of a boundary edge +are drawn as points. +Point attributes such as +_const(POINT_SIZE) and +_const(POINT_SMOOTH) control +the rasterization of the points. +Polygon rasterization attributes other than _const(POLYGON_MODE) have no effect. +.TP +_const(LINE) +Boundary edges of the polygon are drawn as line segments. +They are treated as connected line segments for line stippling; +the line stipple counter and pattern are not reset between segments +(see _cmnd(LineStipple)). +Line attributes such as +_const(LINE_WIDTH) and +_const(LINE_SMOOTH) control +the rasterization of the lines. +Polygon rasterization attributes other than _const(POLYGON_MODE) have no effect. +.TP +_const(FILL) +The interior of the polygon is filled. +Polygon attributes such as +_const(POLYGON_STIPPLE) and +_const(POLYGON_SMOOTH) control the rasterization of the polygon. +.SH EXAMPLES +To draw a surface with filled back-facing polygons +and outlined front-facing polygons, +call +.Ex 1 +glPolygonMode(_const(FRONT), _const(LINE)); +.Ee +.SH NOTES +Vertices are marked as boundary or nonboundary with an edge flag. +Edge flags are generated internally by the GL when it decomposes +polygons; they can be set explicitly using _cmnd(EdgeFlag). +.SH ERRORS +_const(INVALID_ENUM) is generated if either _param1 or _param2 is not +an accepted value. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(POLYGON_MODE) +.SH SEE ALSO +_cmnd(Begin), +_cmnd(EdgeFlag), +_cmnd(LineStipple), +_cmnd(LineWidth), +_cmnd(PointSize), +_cmnd(PolygonStipple) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/polygonoffset.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/polygonoffset.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/polygonoffset.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,88 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(PolygonOffset, set the scale and units used to calculate depth values) +_names(PolygonOffset) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a scale factor that is used to create a variable +depth offset for each polygon. The initial value is 0. +_phead(_param2) +Is multiplied by an implementation-specific value to +create a constant depth offset. The initial value is 0. +.SH DESCRIPTION +When _const(POLYGON_OFFSET_FILL), _const(POLYGON_OFFSET_LINE), or +_const(POLYGON_OFFSET_POINT) is enabled, each +fragment's \f2depth\fP value will be offset after it is interpolated +from the \f2depth\fP values of the appropriate vertices. +The value of the offset is $_eqnparam1 ~*~ DZ ~~+~~ r ~*~ _eqnparam2$, +where $DZ~$ is a measurement of the change in depth relative to the screen +area of the polygon, and $r$ is the smallest value that is guaranteed to +produce a resolvable offset for a given implementation. +The offset is added before the depth test is performed and before +the value is written into the depth buffer. +.P +_cmnd is useful for rendering hidden-line images, for applying decals +to surfaces, and for rendering solids with highlighted edges. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +_cmnd has no effect on depth coordinates placed in the +feedback buffer. +.P +_cmnd has no effect on selection. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.bp +.SH ASSOCIATED GETS +_cmnd(IsEnabled) with argument +_const(POLYGON_OFFSET_FILL), +_const(POLYGON_OFFSET_LINE), +or _const(POLYGON_OFFSET_POINT). +.P +_cmnd(Get) with argument _const(POLYGON_OFFSET_FACTOR) or +_const(POLYGON_OFFSET_UNITS). +.SH SEE ALSO +_cmnd(DepthFunc), +_cmnd(Enable), +_cmnd(Get), +_cmnd(IsEnabled) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/polygonstipple.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/polygonstipple.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/polygonstipple.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,98 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(PolygonStipple,set the polygon stippling pattern) +_names(PolygonStipple) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a pointer to a $32 ~times~ 32$ stipple pattern that will be unpacked +from memory in the same way that _cmnd(DrawPixels) unpacks pixels. +.SH DESCRIPTION +Polygon stippling, +like line stippling +(see _cmnd(LineStipple)), +masks out certain fragments produced by rasterization, +creating a pattern. +Stippling is independent of polygon antialiasing. +.P +_param1 is a pointer to a $32 ~times~ 32$ stipple pattern that is stored +in memory just like the pixel data supplied to a _cmnd(DrawPixels) +call with +.I +height +and +.I width +both equal to 32, a pixel format +of _const(COLOR_INDEX), and data type +of _const(BITMAP). +That is, +the stipple pattern is represented as a $32 ~times~ 32$ array +of 1-bit color indices packed in unsigned bytes. +_cmnd(PixelStore) parameters like _const(UNPACK_SWAP_BYTES) +and _const(UNPACK_LSB_FIRST) affect the assembling of the bits into a +stipple pattern. +Pixel transfer operations +(shift, offset, pixel map) +are not applied to the stipple image, +however. +.P +To enable and disable polygon stippling, call +_cmnd(Enable) and _cmnd(Disable) +with argument _const(POLYGON_STIPPLE). Polygon stippling is initially +disabled. If it's enabled, +a rasterized polygon fragment with window coordinates $x sub w$ and $y sub w$ +is sent to the next stage of the GL if and only if the +($x sub w~roman mod~32$)th bit in the ($y sub w~roman mod~32$)th row +of the stipple pattern is 1 (one). +When polygon stippling is disabled, it is as if the stipple pattern +consists of all 1's. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetPolygonStipple) +.br +_cmnd(IsEnabled) with argument _const(POLYGON_STIPPLE) +.SH SEE ALSO +_cmnd(DrawPixels), +_cmnd(LineStipple), +_cmnd(PixelStore), +_cmnd(PixelTransfer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/prioritizetextures.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/prioritizetextures.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/prioritizetextures.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,99 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(PrioritizeTextures, set texture residence priority) +_names(PrioritizeTextures) +.SH PARAMETERS +_define(@<__n>@,@<_param1>@)_C_ +_define(@<__textures>@,@<_param2>@)_C_ +_define(@<__priorities>@,@<_param3>@)_C_ +_phead(__n) +Specifies the number of textures to be prioritized. +_phead(__textures) +Specifies an array containing the names of the textures to be prioritized. +_phead(__priorities) +Specifies an array containing the texture priorities. +A priority given in an element of __priorities applies to the texture +named by the corresponding element of __textures. +.SH DESCRIPTION +_cmnd assigns the __n texture priorities given in __priorities to the +__n textures named in __textures. +.P +The GL establishes +a ``working set'' of textures that are resident in texture memory. +These textures may be bound to a texture target much more efficiently +than textures that are not resident. +By specifying a priority for each texture, +_cmnd allows applications to guide the GL implementation in determining +which textures should be resident. +.P +The priorities given in __priorities are clamped to the range [0,\1] +before they are assigned. +0 indicates the lowest priority; textures with priority 0 +are least likely to be resident. +1 indicates the highest priority; textures with priority 1 +are most likely to be resident. +However, textures are not guaranteed to be resident until they are used. +.P +_cmnd silently ignores attempts to prioritize texture 0, or any texture +name that does not correspond to an existing texture. +.P +_cmnd does not require that any of the textures named by __textures +be bound to a texture target. +_cmnd(TexParameter) may also be used to set a texture's priority, +but only if the texture is currently bound. +This is the only way to set the priority of a default texture. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.SH ERRORS +_const(INVALID_VALUE) is generated if __n is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetTexParameter) with parameter name _const(TEXTURE_PRIORITY) +retrieves the priority of a currently bound texture. +.SH SEE ALSO +_cmnd(AreTexturesResident), +_cmnd(BindTexture), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexParameter) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/pushattrib.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/pushattrib.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/pushattrib.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,280 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn|tbl)_C_ +_header(PushAttrib,push and pop the server attribute stack) +_names(PushAttrib) +.SH PARAMETERS +_phead(_param1) +Specifies a mask that indicates which attributes to save. Values for +_param1 are listed below. +_names(PopAttrib) +.SH DESCRIPTION +_cmnd takes one argument, +a mask that indicates which groups of state variables +to save on the attribute stack. +Symbolic constants are used to set bits in the mask. +_param1(1) +is typically constructed by ORing several of these constants together. +The special mask +_const(ALL_ATTRIB_BITS) +can be used to save all stackable states. +.P +The symbolic mask constants and their associated GL state are as follows +(the second column lists which attributes are saved): +.P +.TS +; +l l . +_const(ACCUM_BUFFER_BIT) Accumulation buffer clear value + +_const(COLOR_BUFFER_BIT) _const(ALPHA_TEST) enable bit + Alpha test function and reference value + _const(BLEND) enable bit + Blending source and destination functions + Constant blend color + Blending equation + _const(DITHER) enable bit + _const(DRAW_BUFFER) setting + _const(COLOR_LOGIC_OP) enable bit + _const(INDEX_LOGIC_OP) enable bit + Logic op function + Color mode and index mode clear values + Color mode and index mode writemasks + +_const(CURRENT_BIT) Current RGBA color + Current color index + Current normal vector + Current texture coordinates + Current raster position + _const(CURRENT_RASTER_POSITION_VALID) flag + RGBA color associated with current raster position + Color index associated with current raster position + Texture coordinates associated with current raster position + _const(EDGE_FLAG) flag + +_const(DEPTH_BUFFER_BIT) _const(DEPTH_TEST) enable bit + Depth buffer test function + Depth buffer clear value + _const(DEPTH_WRITEMASK) enable bit + +_const(ENABLE_BIT) _const(ALPHA_TEST) flag + _const(AUTO_NORMAL) flag + _const(BLEND) flag + Enable bits for the user-definable clipping planes + _const(COLOR_MATERIAL) + _const(CULL_FACE) flag + _const(DEPTH_TEST) flag + _const(DITHER) flag + _const(FOG) flag + _const(LIGHT)\f2i\fP where 0\ <= \f2i\fP<_const(MAX_LIGHTS) + _const(LIGHTING) flag + _const(LINE_SMOOTH) flag + _const(LINE_STIPPLE) flag + _const(COLOR_LOGIC_OP) flag + _const(INDEX_LOGIC_OP) flag + _const(MAP1_)\f2x\fP where \f2x\fP is a map type + _const(MAP2_)\f2x\fP where \f2x\fP is a map type + _const(NORMALIZE) flag + _const(POINT_SMOOTH) flag + _const(POLYGON_OFFSET_LINE) flag + _const(POLYGON_OFFSET_FILL) flag + _const(POLYGON_OFFSET_POINT) flag + _const(POLYGON_SMOOTH) flag + _const(POLYGON_STIPPLE) flag + _const(SCISSOR_TEST) flag + _const(STENCIL_TEST) flag + _const(TEXTURE_1D) flag + _const(TEXTURE_2D) flag + _const(TEXTURE_3D) flag + Flags _const(TEXTURE_GEN_)\f2x\fP where \f2x\fP is S, T, R, or Q + +_const(EVAL_BIT) _const(MAP1_)\f2x\fP enable bits, where \f2x\fP is a map type + _const(MAP2_)\f2x\fP enable bits, where \f2x\fP is a map type + 1D grid endpoints and divisions + 2D grid endpoints and divisions + _const(AUTO_NORMAL) enable bit + +_const(FOG_BIT) _const(FOG) enable bit + Fog color + Fog density + Linear fog start + Linear fog end + Fog index + _const(FOG_MODE) value + +_const(HINT_BIT) _const(PERSPECTIVE_CORRECTION_HINT) setting + _const(POINT_SMOOTH_HINT) setting + _const(LINE_SMOOTH_HINT) setting + _const(POLYGON_SMOOTH_HINT) setting + _const(FOG_HINT) setting + +_const(LIGHTING_BIT) _const(COLOR_MATERIAL) enable bit + _const(COLOR_MATERIAL_FACE) value + Color material parameters that are tracking the current color + Ambient scene color + _const(LIGHT_MODEL_LOCAL_VIEWER) value + _const(LIGHT_MODEL_TWO_SIDE) setting + _const(LIGHTING) enable bit + Enable bit for each light + Ambient, diffuse, and specular intensity for each light + Direction, position, exponent, and cutoff angle for each light + Constant, linear, and quadratic attenuation factors for each light + Ambient, diffuse, specular, and emissive color for each material + Ambient, diffuse, and specular color indices for each material + Specular exponent for each material + _const(SHADE_MODEL) setting + +_const(LINE_BIT) _const(LINE_SMOOTH) flag + _const(LINE_STIPPLE) enable bit + Line stipple pattern and repeat counter + Line width + +_const(LIST_BIT) _const(LIST_BASE) setting + +_const(PIXEL_MODE_BIT) _const(RED_BIAS) and _const(RED_SCALE) settings + _const(GREEN_BIAS) and _const(GREEN_SCALE) values + _const(BLUE_BIAS) and _const(BLUE_SCALE) + _const(ALPHA_BIAS) and _const(ALPHA_SCALE) + _const(DEPTH_BIAS) and _const(DEPTH_SCALE) + _const(INDEX_OFFSET) and _const(INDEX_SHIFT) values + _const(MAP_COLOR) and _const(MAP_STENCIL) flags + _const(ZOOM_X) and _const(ZOOM_Y) factors + _const(READ_BUFFER) setting + +_const(POINT_BIT) _const(POINT_SMOOTH) flag + Point size + +_const(POLYGON_BIT) _const(CULL_FACE) enable bit + _const(CULL_FACE_MODE) value + _const(FRONT_FACE) indicator + _const(POLYGON_MODE) setting + _const(POLYGON_SMOOTH) flag + _const(POLYGON_STIPPLE) enable bit + _const(POLYGON_OFFSET_FILL) flag + _const(POLYGON_OFFSET_LINE) flag + _const(POLYGON_OFFSET_POINT) flag + _const(POLYGON_OFFSET_FACTOR) + _const(POLYGON_OFFSET_UNITS) + +_const(POLYGON_STIPPLE_BIT) Polygon stipple image + +_const(SCISSOR_BIT) _const(SCISSOR_TEST) flag + Scissor box + +_const(STENCIL_BUFFER_BIT) _const(STENCIL_TEST) enable bit + Stencil function and reference value + Stencil value mask + Stencil fail, pass, and depth buffer pass actions + Stencil buffer clear value + Stencil buffer writemask + +_const(TEXTURE_BIT) Enable bits for the four texture coordinates + Border color for each texture image + Minification function for each texture image + Magnification function for each texture image + Texture coordinates and wrap mode for each texture image + Color and mode for each texture environment + Enable bits _const(TEXTURE_GEN_)\f2x\fP, \f2x\fP is S, T, R, and Q + _const(TEXTURE_GEN_MODE) setting for S, T, R, and Q + _cmnd(TexGen) plane equations for S, T, R, and Q + Current texture bindings (for example, _const(TEXTURE_BINDING_2D)) + +_const(TRANSFORM_BIT) Coefficients of the six clipping planes + Enable bits for the user-definable clipping planes + _const(MATRIX_MODE) value + _const(NORMALIZE) flag + _const(RESCALE_NORMAL) flag + +_const(VIEWPORT_BIT) Depth range (near and far) + Viewport origin and extent +.TE +.P +_cmnd(PopAttrib) restores the values of the state variables saved with the last +.br +_cmnd(PushAttrib) command. +Those not saved are left unchanged. +.P +It is an error to push attributes onto a full stack, +or to pop attributes off an empty stack. +In either case, the error flag is set +and no other change is made to GL state. +.P +Initially, the attribute stack is empty. +.SH NOTES +Not all values for GL state can be saved on the attribute stack. +For example, +render mode state, +and select and feedback state cannot be saved. +Client state must be saved with +_cmnd(PushClientAttrib). +.P +The depth of the attribute stack depends on the implementation, +but it must be at least 16. +.P +When the _arbstring(multitexture) extension is supported, pushing and +popping texture state applies to all supported texture units. +.SH ERRORS +_const(STACK_OVERFLOW) is generated if _cmnd(PushAttrib) is called while +the attribute stack is full. +.P +_const(STACK_UNDERFLOW) is generated if _cmnd(PopAttrib) is called while +the attribute stack is empty. +.P +_const(INVALID_OPERATION) is generated if _cmnd(PushAttrib) or _cmnd(PopAttrib) +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(ATTRIB_STACK_DEPTH) +.br +_cmnd(Get) with argument _const(MAX_ATTRIB_STACK_DEPTH) +.SH SEE ALSO +_cmnd(Get), +_cmnd(GetClipPlane), +_cmnd(GetError), +_cmnd(GetLight), +_cmnd(GetMap), +_cmnd(GetMaterial), +.br +_cmnd(GetPixelMap), +_cmnd(GetPolygonStipple), +_cmnd(GetString), +_cmnd(GetTexEnv), +_cmnd(GetTexGen), +_cmnd(GetTexImage), +_cmnd(GetTexLevelParameter), +_cmnd(GetTexParameter), +_cmnd(IsEnabled), +_cmnd(PushClientAttrib) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/pushclientattrib.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/pushclientattrib.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/pushclientattrib.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,112 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn|tbl)_C_ +_header(PushClientAttrib,push and pop the client attribute stack) +_names(PushClientAttrib) +.SH PARAMETERS +_phead(_param1) +Specifies a mask that indicates which attributes to save. Values for +_param1 are listed below. +_names(PopClientAttrib) +.SH DESCRIPTION +_cmnd takes one argument, +a mask that indicates which groups of client-state variables +to save on the client attribute stack. +Symbolic constants are used to set bits in the mask. +_param1(1) +is typically constructed by OR'ing several of these constants together. +The special mask +_const(CLIENT_ALL_ATTRIB_BITS) +can be used to save all stackable client state. +.P +The symbolic mask constants and their associated GL client state are as follows +(the second column lists which attributes are saved): +.P +_const(CLIENT_PIXEL_STORE_BIT) Pixel storage modes +.br +_const(CLIENT_VERTEX_ARRAY_BIT) Vertex arrays (and enables) +.P +_cmnd(PopClientAttrib) restores the values of the client-state variables +saved with the last _cmnd(PushClientAttrib). +Those not saved are left unchanged. +.P +It is an error to push attributes onto a full client attribute stack, +or to pop attributes off an empty stack. +In either case, the error flag is set, +and no other change is made to GL state. +.P +Initially, the client attribute stack is empty. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +Not all values for GL client state can be saved on the attribute stack. +For example, select and feedback state cannot be saved. +.P +The depth of the attribute stack depends on the implementation, +but it must be at least 16. +.P +Use _cmnd(PushAttrib) and _cmnd(PopAttrib) to push and restore +state which is kept on the server. Only pixel storage modes and +vertex array state may be pushed and popped with +_cmnd(PushClientAttrib) and _cmnd(PopClientAttrib). +.P +When the _arbstring(multitexture) extension is supported, pushing and +popping client vertex array state apples to all supported texture units, +and the active client texture state. +.SH ERRORS +_const(STACK_OVERFLOW) is generated if _cmnd(PushClientAttrib) is called while +the attribute stack is full. +.P +_const(STACK_UNDERFLOW) is generated if _cmnd(PopClientAttrib) is called while +the attribute stack is empty. +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(ATTRIB_STACK_DEPTH) +.br +_cmnd(Get) with argument _const(MAX_CLIENT_ATTRIB_STACK_DEPTH) +.SH SEE ALSO +_cmnd(ColorPointer), +_cmnd(DisableClientState), +_cmnd(EdgeFlagPointer), +_cmnd(EnableClientState), +_cmnd(Get), +_cmnd(GetError), +_cmnd(IndexPointer), +_cmnd(NormalPointer), +_cmnd(NewList), +_cmnd(PixelStore), +_cmnd(PushAttrib), +_cmnd(TexCoordPointer), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/pushmatrix.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/pushmatrix.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/pushmatrix.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,108 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_header(PushMatrix,push and pop the current matrix stack) +_names(PushMatrix) +_names(PopMatrix) +.SH DESCRIPTION +There is a stack of matrices for each of the matrix modes. +In _const(MODELVIEW) mode, +the stack depth is at least 32. +In the other modes, +_const(COLOR), const(PROJECTION), and _const(TEXTURE), +the depth is at least 2. +The current matrix in any mode is the matrix on the top of the stack +for that mode. +.P +_cmnd pushes the current matrix stack down by one, +duplicating the current matrix. +That is, +after a _cmnd call, +the matrix on top of the stack is identical to the one below it. +.P +_cmnd(PopMatrix) pops the current matrix stack, +replacing the current matrix with the one below it on the stack. +.P +Initially, each of the stacks contains one matrix, an identity matrix. +.P +It is an error to push a full matrix stack, +or to pop a matrix stack that contains only a single matrix. +In either case, the error flag is set +and no other change is made to GL state. +.SH ERRORS +_const(STACK_OVERFLOW) is generated if _cmnd(PushMatrix) is called while +the current matrix stack is full. +.P +_const(STACK_UNDERFLOW) is generated if _cmnd(PopMatrix) is called while +the current matrix stack contains only a single matrix. +.P +_const(INVALID_OPERATION) is generated if _cmnd(PushMatrix) or _cmnd(PopMatrix) +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MATRIX_MODE) +.br +_cmnd(Get) with argument _const(COLOR_MATRIX) +.br +_cmnd(Get) with argument _const(MODELVIEW_MATRIX) +.br +_cmnd(Get) with argument _const(PROJECTION_MATRIX) +.br +_cmnd(Get) with argument _const(TEXTURE_MATRIX) +.br +_cmnd(Get) with argument _const(COLOR_STACK_DEPTH) +.br +_cmnd(Get) with argument _const(MODELVIEW_STACK_DEPTH) +.br +_cmnd(Get) with argument _const(PROJECTION_STACK_DEPTH) +.br +_cmnd(Get) with argument _const(TEXTURE_STACK_DEPTH) +.br +_cmnd(Get) with argument _const(MAX_MODELVIEW_STACK_DEPTH) +.br +_cmnd(Get) with argument _const(MAX_PROJECTION_STACK_DEPTH) +.br +_cmnd(Get) with argument _const(MAX_TEXTURE_STACK_DEPTH) +.SH SEE ALSO +_cmnd(Frustum), +_cmnd(LoadIdentity), +_cmnd(LoadMatrix), +_cmnd(MatrixMode), +_cmnd(MultMatrix), +_cmnd(Ortho), +_cmnd(Rotate), +_cmnd(Scale), +_cmnd(Translate), +_cmnd(Viewport) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/pushname.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/pushname.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/pushname.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,82 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_header(PushName,push and pop the name stack) +_names(PushName) +.SH PARAMETERS +_phead(_param1) +Specifies a name that will be pushed onto the name stack. +_names(PopName) +.SH DESCRIPTION +The name stack is used during selection mode to allow sets of rendering +commands to be uniquely identified. +It consists of an ordered set of unsigned integers and is initially empty. +.P +_cmnd causes _param1(1) to be pushed onto the name stack. +_cmnd(PopName) pops one name off the top of the stack. +.P +The maximum name stack depth is implementation-dependent; call +_const(MAX_NAME_STACK_DEPTH) to find out the value for a particular +implementation. It is an +error to push a name onto a full stack, +or to pop a name off an empty stack. +It is also an error to manipulate the name stack between the execution of +_cmnd(Begin) and the corresponding execution of _cmnd(End). +In any of these cases, the error flag is set and no other change is +made to GL state. +.P +The name stack is always empty while the render mode is not _const(SELECT). +Calls to _cmnd(PushName) or _cmnd(PopName) while the render mode is not +_const(SELECT) are ignored. +.SH ERRORS +_const(STACK_OVERFLOW) is generated if _cmnd(PushName) is called while the +name stack is full. +.P +_const(STACK_UNDERFLOW) is generated if _cmnd(PopName) is called while the +name stack is empty. +.P +_const(INVALID_OPERATION) is generated if _cmnd(PushName) or _cmnd(PopName) +is executed between a call to _cmnd(Begin) and the corresponding call to +_cmnd(End). +.bp +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(NAME_STACK_DEPTH) +.br +_cmnd(Get) with argument _const(MAX_NAME_STACK_DEPTH) +.SH SEE ALSO +_cmnd(InitNames), +_cmnd(LoadName), +_cmnd(RenderMode), +_cmnd(SelectBuffer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/rasterpos.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/rasterpos.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/rasterpos.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,174 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(RasterPos,specify the raster position for pixel operations) +_names(RasterPos,[2-4][sifd]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1 _param2 _param3 _param4) +Specify the $x$, $y$, $z$, and $w$ object coordinates +(if present) +for the raster position. +_names(RasterPos,[2-4][sifd]v) +.SH PARAMETERS +_phead(_param1) +Specifies a pointer to an array of two, +three, +or four elements, +specifying $x$, $y$, $z$, and $w$ coordinates, respectively. +.SH DESCRIPTION +The GL maintains a 3D position in window coordinates. +This position, +called the raster position, +is used to position pixel and bitmap write operations. It is +maintained with subpixel accuracy. +See _cmnd(Bitmap), _cmnd(DrawPixels), and _cmnd(CopyPixels). +.P +The current raster position consists of three window coordinates +($x$, $y$, $z$), +a clip coordinate value ($w$), +an eye coordinate distance, +a valid bit, +and associated color data and texture coordinates. +The $w$ coordinate is a clip coordinate, +because $w$ is not projected to window coordinates. +_cmnd(RasterPos4) specifies object coordinates $x$, $y$, $z$, and $w$ +explicitly. +_cmnd(RasterPos3) specifies object coordinate $x$, $y$, and $z$ explicitly, +while $w$ is implicitly set to 1. +_cmnd(RasterPos2) uses the argument values for $x$ and $y$ while +implicitly setting $z$ and $w$ to 0 and 1. +.P +The object coordinates presented by _cmnd are treated just like those +of a _cmnd(Vertex) command: +They are transformed by the current modelview and projection matrices +and passed to the clipping stage. +If the vertex is not culled, +then it is projected and scaled to window coordinates, +which become the new current raster position, +and the _const(CURRENT_RASTER_POSITION_VALID) flag is set. +If the vertex +.I is +culled, +then the valid bit is cleared and the current raster position +and associated color and texture coordinates are undefined. +.P +The current raster position also includes some associated color data +and texture coordinates. +If lighting is enabled, +then _const(CURRENT_RASTER_COLOR) +(in RGBA mode) +or _const(CURRENT_RASTER_INDEX) +(in color index mode) +is set to the color produced by the lighting calculation +(see _cmnd(Light), _cmnd(LightModel), and +.br +_cmnd(ShadeModel)). +If lighting is disabled, +current color +(in RGBA mode, state variable _const(CURRENT_COLOR)) +or color index +(in color index mode, state variable _const(CURRENT_INDEX)) +is used to update the current raster color. +.P +Likewise, +_const(CURRENT_RASTER_TEXTURE_COORDS) is updated as a function +of _const(CURRENT_TEXTURE_COORDS), +based on the texture matrix and the texture generation functions +(see _cmnd(TexGen)). +Finally, +the distance from the origin of the eye coordinate system to the +vertex as transformed by only the modelview matrix replaces +_const(CURRENT_RASTER_DISTANCE). +.P +Initially, the current raster position is (0, 0, 0, 1), +the current raster distance is 0, +the valid bit is set, +the associated RGBA color is (1, 1, 1, 1), +the associated color index is 1, +and the associated texture coordinates are (0, 0, 0, 1). +In RGBA mode, +_const(CURRENT_RASTER_INDEX) is always 1; +in color index mode, +the current raster RGBA color always maintains its initial value. +.SH NOTES +The raster position is modified both by _cmnd and by _cmnd(Bitmap). +.P +When the raster position coordinates are invalid, +drawing commands that are based on the raster position are +ignored (that is, they do not result in changes to GL state). +.P +Calling _cmnd(DrawElements), or _cmnd(DrawRangeElements) may leave the +current color or index indeterminate. +If _cmnd is executed while the current color or index is indeterminate, the +current raster color or current raster index remains indeterminate. +.P +To set a valid raster position outside the viewport, first set a valid +raster position, then call _cmnd(Bitmap) with NULL as the \f2bitmap\fP +parameter. +.P +When the _arbstring(imaging) extension is supported, there are distinct +raster texture coordinates for each texture unit. Each texture unit's +current ratster texture coordinates are updated by _cmnd. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(CURRENT_RASTER_POSITION) +.br +_cmnd(Get) with argument _const(CURRENT_RASTER_POSITION_VALID) +.br +_cmnd(Get) with argument _const(CURRENT_RASTER_DISTANCE) +.br +_cmnd(Get) with argument _const(CURRENT_RASTER_COLOR) +.br +_cmnd(Get) with argument _const(CURRENT_RASTER_INDEX) +.br +_cmnd(Get) with argument _const(CURRENT_RASTER_TEXTURE_COORDS) +.SH SEE ALSO +_cmnd(Bitmap), +_cmnd(CopyPixels), +_cmnd(DrawArrays), +_cmnd(DrawElements), +_cmnd(DrawRangeElements), +_cmnd(DrawPixels), +_cmnd(TexCoord), +_cmnd(TexGen), +_cmnd(Vertex) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/readbuffer.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/readbuffer.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/readbuffer.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,99 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ReadBuffer,select a color buffer source for pixels) +_names(ReadBuffer) +.SH PARAMETERS +_phead(_param1) +Specifies a color buffer. +Accepted values are +_const(FRONT_LEFT), +_const(FRONT_RIGHT), +_const(BACK_LEFT), +_const(BACK_RIGHT), +_const(FRONT), +_const(BACK), +_const(LEFT), +_const(RIGHT), and +_const(AUX)\f2i\fP, +where \f2i\fP is between 0 and _const(AUX_BUFFERS) \-1. +.SH DESCRIPTION +_cmnd specifies a color buffer as the source for subsequent +_cmnd(ReadPixels), _cmnd(CopyTexImage1D), _cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), _cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), and +_cmnd(CopyPixels) commands. +_param1 accepts one of twelve or more predefined values. +(_const(AUX0) through _const(AUX3) are always defined.) +In a fully configured system, +_const(FRONT), +_const(LEFT), and +_const(FRONT_LEFT) all name the front left buffer, +_const(FRONT_RIGHT) and +_const(RIGHT) name the front right buffer, and +_const(BACK_LEFT) and +_const(BACK) name the back left buffer. +.P +Nonstereo double-buffered configurations have only a front left and a +back left buffer. +Single-buffered configurations have a front left and a front right +buffer if stereo, and only a front left buffer if nonstereo. +It is an error to specify a nonexistent buffer to _cmnd. +.P +_param1 is initially _const(FRONT) in single-buffered configurations, +and _const(BACK) in double-buffered configurations. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not one of the twelve +(or more) accepted values. +.P +_const(INVALID_OPERATION) is generated if _param1 specifies a buffer +that does not exist. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(READ_BUFFER) +.SH SEE ALSO +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawBuffer), +_cmnd(ReadPixels) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/readpixels.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/readpixels.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/readpixels.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,358 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ReadPixels,read a block of pixels from the frame buffer) +_names(ReadPixels) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1 _param2) +Specify the window coordinates of the first pixel +that is read from the frame buffer. +This location is the lower left corner of a rectangular block of pixels. +_phead(_param3 _param4) +Specify the dimensions of the pixel rectangle. +_param3 and _param4 of one correspond to a single pixel. +_phead(_param5) +Specifies the format of the pixel data. +The following symbolic values are accepted: +_const(COLOR_INDEX), +_const(STENCIL_INDEX), +_const(DEPTH_COMPONENT), +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_C_ _const(ABGR_EXT), +_const(LUMINANCE), and +_const(LUMINANCE_ALPHA). +_phead(_param6) +Specifies the data type of the pixel data. +Must be one of +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV). +_phead(_param7) +Returns the pixel data. +.SH DESCRIPTION +_cmnd returns pixel data from the frame buffer, +starting with the pixel whose lower left corner +is at location (_param1, _param2), +into client memory starting at location _param7. +Several parameters control the processing of the pixel data before +it is placed into client memory. +These parameters are set with three commands: +_cmnd(PixelStore), +_cmnd(PixelTransfer), and +_cmnd(PixelMap). +This reference page describes the effects on _cmnd of most, +but not all of the parameters specified by these three commands. +.P +When the _arbstring(imaging) extension is supported, the pixel data may +be processed by additional operations including color table lookup, +color matrix tranformations, convolutions, histograms and minimum and +maximun pixel value computations. +.P +_cmnd returns values from each pixel with lower left corner at +(_param1 + $i$, _param2 + $j$) for 0 \(<= $i$ < _param3 and +0 \(<= $j$ < _param4. +This pixel is said to be the $i$th pixel in the $j$th row. +Pixels are returned in row order from the lowest to the highest row, +left to right in each row. +.P +_param5 specifies the format for the returned pixel values; +accepted values are: +.TP 10 +_const(COLOR_INDEX) +Color indices are read from the color buffer +selected by _cmnd(ReadBuffer). +Each index is converted to fixed point, +shifted left or right depending on the value and sign of _const(INDEX_SHIFT), +and added to _const(INDEX_OFFSET). +If _const(MAP_COLOR) is _const(TRUE), +indices are replaced by their mappings in the table _const(PIXEL_MAP_I_TO_I). +.TP +_const(STENCIL_INDEX) +Stencil values are read from the stencil buffer. +Each index is converted to fixed point, +shifted left or right depending on the value and sign of _const(INDEX_SHIFT), +and added to _const(INDEX_OFFSET). +If _const(MAP_STENCIL) is _const(TRUE), +indices are replaced by their mappings in the table _const(PIXEL_MAP_S_TO_S). +.TP +_const(DEPTH_COMPONENT) +Depth values are read from the depth buffer. +Each component is converted to floating point such that the minimum depth +value maps to 0 and the maximum value maps to 1. +Each component is then multiplied by _const(DEPTH_SCALE), +added to _const(DEPTH_BIAS), +and finally clamped to the range [0,1]. +.TP +_const(RED) +.TP +_const(GREEN) +.TP +_const(BLUE) +.TP +_const(ALPHA) +.TP +_const(RGB) +.TP +_const(BGR) +.TP +_const(RGBA) +.TP +_const(BGRA) +.TP +_C_ _const(ABGR_EXT) +_const(LUMINANCE) +.TP +_const(LUMINANCE_ALPHA) +Processing differs depending on whether color buffers store color indices +or RGBA color components. +If color indices are stored, +they are read from the color buffer selected by _cmnd(ReadBuffer). +Each index is converted to fixed point, +shifted left or right depending on the value and sign of _const(INDEX_SHIFT), +and added to _const(INDEX_OFFSET). +Indices are then replaced by the red, +green, +blue, +and alpha values obtained by indexing the tables +_const(PIXEL_MAP_I_TO_R), +_const(PIXEL_MAP_I_TO_G), +_const(PIXEL_MAP_I_TO_B), and +_const(PIXEL_MAP_I_TO_A). +Each table must be of size $2 sup n$, but $n$ may be different for +different tables. +Before an index is used to look up a value in a table of +size $2 sup n$, it must be masked against $2 sup n - 1$. +.IP +If RGBA color components are stored in the color buffers, +they are read from the color buffer selected by _cmnd(ReadBuffer). +Each color component is converted to floating point such that zero intensity +maps to 0.0 and full intensity maps to 1.0. +Each component is then multiplied by _const(c_SCALE) and +added to _const(c_BIAS), +where \f2c\fP is RED, GREEN, BLUE, or ALPHA. +Finally, +if _const(MAP_COLOR) is _const(TRUE), +each component is clamped to the range [0,\ 1], +scaled to the size of its corresponding table, and is then +replaced by its mapping in the table +_const(PIXEL_MAP_c_TO_c), +where \f2c\fP is R, G, B, or A. +.IP +Unneeded data is then discarded. +For example, +_const(RED) discards the green, blue, and alpha components, +while _const(RGB) discards only the alpha component. +_const(LUMINANCE) computes a single-component value as the sum of +the red, +green, +and blue components, +and _const(LUMINANCE_ALPHA) does the same, +while keeping alpha as a second value. +The final values are clamped to the range [0,\ 1]. +.P +The shift, +scale, +bias, +and lookup factors just described are all specified by +.br +_cmnd(PixelTransfer). +The lookup table contents themselves are specified by _cmnd(PixelMap). +.P +Finally, the indices or components +are converted to the proper format, +as specified by _param6. +If _param5 is _const(COLOR_INDEX) or _const(STENCIL_INDEX) +and _param6 is not _const(FLOAT), +each index is masked with the mask value given in the following table. +If _param6 is _const(FLOAT), then each integer index is converted to +single-precision floating-point format. +.P +If _param5 is +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_C_ _const(ABGR_EXT), +_const(LUMINANCE), or +_const(LUMINANCE_ALPHA) and _param6 is not _const(FLOAT), +each component is multiplied by the multiplier shown in the following table. +If type is _const(FLOAT), then each component is passed as is +(or converted to the client's single-precision floating-point format if +it is different from the one used by the GL). +.P +.TS +center tab(:); +l cb cb +l c c. +_ +_param6:index mask:component conversion +_ +.sp .5 +_const(UNSIGNED_BYTE):$2"^"8 - 1$:$(2"^"8 - 1) c$ +_const(BYTE):$2"^"7 - 1$:$[(2"^"8 - 1) c - 1] / 2$ +_const(BITMAP):$1$:$1$ +_const(UNSIGNED_SHORT):$2"^"16 - 1$:$(2"^"16 - 1) c$ +_const(SHORT):$2"^"15 - 1$:$[(2"^"16 - 1) c - 1] / 2$ +_const(UNSIGNED_INT):$2"^"32 - 1$:$(2"^"32 - 1) c$ +_const(INT):$2"^"31 - 1$:$[(2"^"32 - 1) c - 1] / 2$ +_const(FLOAT):none:$c$ +_ +.TE +.P +Return values are placed in memory as follows. +If _param5 is +_const(COLOR_INDEX), +_const(STENCIL_INDEX), +_const(DEPTH_COMPONENT), +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), or +_const(LUMINANCE), +a single value is returned and the data for the $i$th pixel in the $j$th row +is placed in location $(j)~_eqnparam3~+~i$. +_const(RGB) and _const(BGR) return three values, +_const(RGBA) and _const(BGRA) return four values, +_C_ and _const(ABGR_EXT) return four values, +and _const(LUMINANCE_ALPHA) returns two values for each pixel, +with all values corresponding to a single pixel occupying contiguous space +in _param7. +Storage parameters set by _cmnd(PixelStore), +such as _const(PACK_LSB_FIRST) and _const(PACK_SWAP_BYTES), +affect the way that data is written into memory. +See _cmnd(PixelStore) for a description. +.SH NOTES +Values for pixels that lie outside the window +connected to the current GL context are undefined. +.P +If an error is generated, +no change is made to the contents of _param7. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param5 or _param6 is not an +accepted value. +.P +_const(INVALID_ENUM) is generated if _param6 is _const(BITMAP) and _param5 is +not _const(COLOR_INDEX) or _const(STENCIL_INDEX). +.P +_const(INVALID_VALUE) is generated if either _param3 or _param4 is negative. +.P +_const(INVALID_OPERATION) is generated if _param5 is _const(COLOR_INDEX) +and the color buffers store RGBA color components. +.P +_const(INVALID_OPERATION) is generated if _param5 is _const(STENCIL_INDEX) +and there is no stencil buffer. +.P +_const(INVALID_OPERATION) is generated if _param5 is _const(DEPTH_COMPONENT) +and there is no depth buffer. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if _param6 is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and _param5 is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if _param6 is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and _param5 is neither _const(RGBA) nor _const(BGRA). +.P +The formats _const(BGR), and _const(BGRA) and types +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) are available only if the GL version +is 1.2 or greater. +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(INDEX_MODE) +.SH SEE ALSO +_cmnd(CopyPixels), +_cmnd(DrawPixels), +_cmnd(PixelMap), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +.br +_cmnd(ReadBuffer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/rect.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/rect.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/rect.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,78 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_header(Rect,draw a rectangle) +_names(Rect,[dfis]) +.SH PARAMETERS +_phead(_param1 _param2) +Specify one vertex of a rectangle. +_phead(_param3 _param4) +Specify the opposite vertex of the rectangle. +_names(Rect,[dfis]v) +.BP +.SH PARAMETERS +_phead(_param1) +Specifies a pointer to one vertex of a rectangle. +_phead(_param2) +Specifies a pointer to the opposite vertex of the rectangle. +.SH DESCRIPTION +_cmnd supports efficient specification of rectangles as two corner points. +Each +rectangle command takes four arguments, +organized either as two consecutive pairs of (\f2x\fP,\f2y\fP) coordinates, +or as two pointers to arrays, +each containing an (\f2x\fP,\f2y\fP) pair. +The resulting rectangle is defined in the \f2z\fP = 0 plane. +.P +_cmnd(Rect)(_param1(1), _param2(1), _param3(1), _param4(1)) +is exactly equivalent to the following sequence: +.Ex 6 +glBegin(_const(POLYGON)); +glVertex2(_param1(1), _param2(1)); +glVertex2(_param3(1), _param2(1)); +glVertex2(_param3(1), _param4(1)); +glVertex2(_param1(1), _param4(1)); +glEnd(); +.Ee +Note that if the second vertex is above and to the right of the first vertex, +the rectangle is constructed with a counterclockwise winding. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH SEE ALSO +_cmnd(Begin), +_cmnd(Vertex) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/rendermode.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/rendermode.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/rendermode.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,125 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(RenderMode,set rasterization mode) +_names(RenderMode) +.SH PARAMETERS +_phead(_param1) +Specifies the rasterization mode. +Three values are accepted: +_const(RENDER), +_const(SELECT), and +_const(FEEDBACK). +The initial value is _const(RENDER). +.SH DESCRIPTION +_cmnd sets the rasterization mode. +It takes one argument, +_param1, +which can assume one of three predefined values: +.TP 16 +_const(RENDER) +Render mode. Primitives are rasterized, +producing pixel fragments, +which are written into the frame buffer. +This is the normal mode +and also the default mode. +.TP +_const(SELECT) +Selection mode. +No pixel fragments are produced, +and no change to the frame buffer contents is made. +Instead, +a record of the names of primitives that would have been drawn +if the render mode had been _const(RENDER) is returned in a select buffer, +which must be created (see _cmnd(SelectBuffer)) before selection mode +is entered. +.TP +_const(FEEDBACK) +Feedback mode. +No pixel fragments are produced, +and no change to the frame buffer contents is made. +Instead, +the coordinates and attributes of vertices that would have been drawn +if the render mode had been _const(RENDER) is returned in a feedback buffer, +which must be created (see _cmnd(FeedbackBuffer)) before feedback mode +is entered. +.P +The return value of _cmnd is determined by the render mode at the time +_cmnd is called, +rather than by _param1. +The values returned for the three render modes are as follows: +.TP 16 +_const(RENDER) +0. +.TP +_const(SELECT) +The number of hit records transferred to the select buffer. +.TP +_const(FEEDBACK) +The number of values (not vertices) transferred to the feedback buffer. +.P +See the _cmnd(SelectBuffer) and _cmnd(FeedbackBuffer) reference pages for +more details concerning selection and feedback operation. +.SH NOTES +If an error is generated, +_cmnd returns 0 regardless of the current render mode. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not one of the three +accepted values. +.P +_const(INVALID_OPERATION) is generated if _cmnd(SelectBuffer) is called +while the render mode is _const(SELECT), +or if _cmnd is called with argument _const(SELECT) before +_cmnd(SelectBuffer) is called at least once. +.P +_const(INVALID_OPERATION) is generated if _cmnd(FeedbackBuffer) is called +while the render mode is _const(FEEDBACK), +or if _cmnd is called with argument _const(FEEDBACK) before +_cmnd(FeedbackBuffer) is called at least once. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(RENDER_MODE) +.SH SEE ALSO +_cmnd(FeedbackBuffer), +_cmnd(InitNames), +_cmnd(LoadName), +_cmnd(PassThrough), +_cmnd(PushName), +_cmnd(SelectBuffer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/resethistogram.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/resethistogram.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/resethistogram.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,56 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(ResetHistogram,reset histogram table entries to zero) +_names(ResetHistogram) +_define(@<__target>@,@<_param1>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be +_const(HISTOGRAM). +.SH DESCRIPTION +_cmnd resets all the elements of the current histogram table to zero. +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not _const(HISTOGRAM). +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH SEE ALSO +_cmnd(Histogram) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/resetminmax.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/resetminmax.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/resetminmax.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,59 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(ResetMinmax,reset minmax table entries to initial values) +_names(ResetMinmax) +_define(@<__target>@,@<_param1>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be +_const(MINMAX). +.SH DESCRIPTION +_cmnd resets the elements of the current minmax table to their +initial values: the ``maximum'' element receives the minimum possible +component values, and the ``minimum'' element receives the maximum +possible component values. +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not _const(MINMAX). +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.SH SEE ALSO +_cmnd(Minmax) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/rotate.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/rotate.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/rotate.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,115 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Rotate,multiply the current matrix by a rotation matrix) +_names(Rotate,[df]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the angle of rotation, in degrees. +_phead(_param2 _param3 _param4) +Specify the \f2x\fP, \f2y\fP, and \f2z\fP coordinates of a vector, respectively. +.SH DESCRIPTION +_cmnd produces a rotation of _param1 degrees around +the vector $(_eqnparam2, _eqnparam3, _eqnparam4)$. +The current matrix (see _cmnd(MatrixMode)) is multiplied by a rotation +matrix with the product +replacing the current matrix, as if _cmnd(MultMatrix) were called +with the following matrix as its argument: +.P +.ce +.EQ +left ( ~ down 20 matrix { + ccol { + _eqnparam2 sup 2 (1 ^-^ c)~+~ c above + _eqnparam3 _eqnparam2 (1 ^-^ c)~+~ _eqnparam4 s above + _eqnparam2 _eqnparam4 (1 ^-^ c)~-~_eqnparam3 s above + ~0 + } + ccol { + ~~ _eqnparam2 _eqnparam3 (1 ^-^ c)~-~_eqnparam4 s above + ~~ _eqnparam3 sup 2 (1 ^-^ c)~+~ c above + ~~ _eqnparam3 _eqnparam4 (1 ^-^ c)~+~ _eqnparam2 s above + ~~ ~0 + } + ccol { + ~~ _eqnparam2 _eqnparam4 (1 ^-^ c)~+~ _eqnparam3 s above + ~~ _eqnparam3 _eqnparam4 (1 ^-^ c)~-~ _eqnparam2 s above + ~~ _eqnparam4 sup 2 (1 ^-^ c) ~+~ c above + ~~ ~0 + } + ccol { ~0 above ~0 above ~0 above ~1} +} ~~ right ) +.EN +.P +.sp +Where $c ~=~ cos (_eqnparam1)$, $s ~=~ sin (_eqnparam1)$, and +$||(~_eqnparam2, _eqnparam3, _eqnparam4~)|| ~=~ 1$ (if not, the GL +will normalize this vector). +.sp +.sp +.P +If the matrix mode is either _const(MODELVIEW) or _const(PROJECTION), +all objects drawn after _cmnd is called are rotated. +Use _cmnd(PushMatrix) and _cmnd(PopMatrix) to save and restore +the unrotated coordinate system. +.SH NOTES +This rotation follows the right-hand rule, so +if the vector $(_eqnparam2, _eqnparam3, _eqnparam4)$ points toward the +user, the rotation will be counterclockwise. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MATRIX_MODE) +.br +_cmnd(Get) with argument _const(COLOR_MATRIX) +.br +_cmnd(Get) with argument _const(MODELVIEW_MATRIX) +.br +_cmnd(Get) with argument _const(PROJECTION_MATRIX) +.br +_cmnd(Get) with argument _const(TEXTURE_MATRIX) +.SH SEE ALSO +_cmnd(MatrixMode), +_cmnd(MultMatrix), +_cmnd(PushMatrix), +_cmnd(Scale), +_cmnd(Translate) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/scale.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/scale.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/scale.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,100 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Scale,multiply the current matrix by a general scaling matrix) +_names(Scale,[df]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1 _param2 _param3) +Specify scale factors along the \f2x\fP, \f2y\fP, and \f2z\fP axes, respectively. +.SH DESCRIPTION +_cmnd produces a nonuniform scaling along the \f2x\fP, \f2y\fP, and +\f2z\fP axes. +The three parameters indicate the desired scale factor along +each of the three axes. +.P +The current matrix +(see _cmnd(MatrixMode)) +is multiplied by this scale matrix, +and the product replaces the current matrix +as if _cmnd were called with the following matrix +as its argument: + +.P +.ce +.EQ +left ( ~ down 20 matrix { + ccol { ~_eqnparam1 above ~0 above ~0 above ~0 } + ccol { ~0 above ~_eqnparam2 above ~0 above ~0 } + ccol { ~0 above ~0 above ~_eqnparam3 above ~0 } + ccol { ~0 above ~0 above ~0 above ~1} +} ~~ right ) +.EN +.sp +If the matrix mode is either _const(MODELVIEW) or _const(PROJECTION), +all objects drawn after _cmnd is called are scaled. +.P +Use _cmnd(PushMatrix) and _cmnd(PopMatrix) to save and restore +the unscaled coordinate system. +.SH NOTES +If scale factors other than 1 are applied to the modelview matrix +and lighting is enabled, lighting often appears wrong. +In that case, enable automatic normalization of normals by +calling _cmnd(Enable) with the argument _const(NORMALIZE). +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of +_cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MATRIX_MODE) +.br +_cmnd(Get) with argument _const(COLOR_MATRIX) +.br +_cmnd(Get) with argument _const(MODELVIEW_MATRIX) +.br +_cmnd(Get) with argument _const(PROJECTION_MATRIX) +.br +_cmnd(Get) with argument _const(TEXTURE_MATRIX) +.SH SEE ALSO +_cmnd(MatrixMode), +_cmnd(MultMatrix), +_cmnd(PushMatrix), +_cmnd(Rotate), +_cmnd(Translate) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/scissor.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/scissor.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/scissor.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,82 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Scissor, define the scissor box) +_names(Scissor) +.SH PARAMETERS +_phead(_param1 _param2) +Specify the lower left corner of the scissor box. +Initially (0, 0). +_phead(_param3 _param4) +Specify the width and height of the scissor box. +When a GL context is first attached to a window, +_param3 and _param4 are set to the dimensions of that window. +.SH DESCRIPTION +_cmnd defines a rectangle, called the scissor box, +in window coordinates. +The first two arguments, +_param1 and _param2, +specify the lower left corner of the box. +_param3 and _param4 specify the width and height of the box. +.P +To enable and disable the scissor test, call +_cmnd(Enable) and _cmnd(Disable) with argument +_const(SCISSOR_TEST). The test is initially disabled. +While the test is enabled, only pixels that lie within the scissor box +can be modified by drawing commands. +Window coordinates have integer values at the shared corners of +frame buffer pixels. +\f7glScissor(0,0,1,1)\fP allows modification of only the lower left +pixel in the window, and \f7glScissor(0,0,0,0)\fP doesn't allow +modification of any pixels in the window. +.P +When the scissor test is disabled, +it is as though the scissor box includes the entire window. +.SH ERRORS +_const(INVALID_VALUE) is generated if either _param3 or _param4 is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.bp +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(SCISSOR_BOX) +.br +_cmnd(IsEnabled) with argument _const(SCISSOR_TEST) +.SH SEE ALSO +_cmnd(Enable), +_cmnd(Viewport) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/selectbuffer.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/selectbuffer.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/selectbuffer.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,128 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(SelectBuffer,establish a buffer for selection mode values) +_names(SelectBuffer) +.SH PARAMETERS +_phead(_param1) +Specifies the size of _param2. +_phead(_param2) +Returns the selection data. +.SH DESCRIPTION +_cmnd has two arguments: +_param2 is a pointer to an array of unsigned integers, +and _param1 indicates the size of the array. +_param2 returns values from the name stack +(see _cmnd(InitNames), _cmnd(LoadName), _cmnd(PushName)) +when the rendering mode is _const(SELECT) (see _cmnd(RenderMode)). +_cmnd must be issued before selection mode is enabled, +and it must not be issued while the rendering mode is _const(SELECT). +.P +A programmer can use selection to determine which primitives +are drawn into some region of a window. +The region is defined by the current modelview and perspective matrices. +.P +In selection mode, no pixel fragments are produced from rasterization. +Instead, +if a primitive or a raster position intersects the clipping +volume defined by the viewing frustum +and the user-defined clipping planes, +this primitive causes a selection hit. +(With polygons, no hit occurs if the polygon is culled.) +When a change is made to the name stack, +or when _cmnd(RenderMode) is called, +a hit record is copied to _param2 if any hits have occurred since the +last such event +(name stack change or +_cmnd(RenderMode) call). +The hit record consists of the number of names in the name stack at the +time of the event, followed by the minimum and maximum depth values +of all vertices that hit since the previous event, +followed by the name stack contents, +bottom name first. +.P +Depth values (which are in the range [0,1]) are multiplied by 2^32 - 1, +before being placed in the hit record. +.P +An internal index into _param2 is reset to 0 whenever selection mode +is entered. +Each time a hit record is copied into _param2, +the index is incremented to point to the cell just past the end +of the block of names \- that is, to the next available cell. +If the hit record is larger than the number of remaining locations in _param2, +as much data as can fit is copied, +and the overflow flag is set. +If the name stack is empty when a hit record is copied, +that record consists of 0 followed by the minimum and maximum depth values. +.P +To exit selection mode, call _cmnd(RenderMode) with an argument +other than _const(SELECT). +Whenever _cmnd(RenderMode) is called while the render mode is _const(SELECT), +it returns the number of hit records copied to _param2, +resets the overflow flag and the selection buffer pointer, +and initializes the name stack to be empty. +If the overflow bit was set when _cmnd(RenderMode) was called, +a negative hit record count is returned. +.SH NOTES +The contents of _param2 is undefined until _cmnd(RenderMode) is called +with an argument other than _const(SELECT). +.P +_cmnd(Begin)/_cmnd(End) primitives and calls to _cmnd(RasterPos) +can result in hits. +.SH ERRORS +_const(INVALID_VALUE) is generated if _param1 is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd is called while the +render mode is _const(SELECT), +or if _cmnd(RenderMode) is called with argument _const(SELECT) before +_cmnd is called at least once. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(NAME_STACK_DEPTH) +.br +_cmnd(Get) with argument _const(SELECTION_BUFFER_SIZE) +.br +_cmnd(GetPointerv) with argument _const(SELECTION_BUFFER_POINTER) +.SH SEE ALSO +_cmnd(FeedbackBuffer), +_cmnd(InitNames), +_cmnd(LoadName), +_cmnd(PushName), +_cmnd(RenderMode) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/separablefilter2d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/separablefilter2d.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/separablefilter2d.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,255 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl)_C_ +_header(SeparableFilter2D,define a separable two-dimensional convolution filter) +_names(SeparableFilter2D) +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__internalformat>@,@<_param2>@)_C_ +_define(@<__width>@,@<_param3>@)_C_ +_define(@<__height>@,@<_param4>@)_C_ +_define(@<__format>@,@<_param5>@)_C_ +_define(@<__type>@,@<_param6>@)_C_ +_define(@<__row>@,@<_param7>@)_C_ +_define(@<__column>@,@<_param8>@)_C_ +.SH PARAMETERS +_phead(__target) +Must be _const(SEPARABLE_2D). +_phead(__internalformat) +The internal format of the convolution filter kernel. +The allowable values are +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(INTENSITY), +_const(INTENSITY4), +_const(INTENSITY8), +_const(INTENSITY12), +_const(INTENSITY16), +_const(R3_G3_B2), +_const(RGB), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), or +_const(RGBA16). +_phead(__width) +The number of elements in the pixel array referenced by __row. +(This is the width of the separable filter kernel.) +_phead(__height) +The number of elements in the pixel array referenced by __column. +(This is the height of the separable filter kernel.) +_phead(__format) +The format of the pixel data in __row and __column. +The allowable values are +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_const(INTENSITY), +_const(LUMINANCE), and +_const(LUMINANCE_ALPHA). +_phead(__type) +The type of the pixel data in __row and __column. +Symbolic constants +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) +are accepted. +_phead(__row) +Pointer to a one-dimensional array of pixel data that is processed to +build the row filter kernel. +_phead(__column) +Pointer to a one-dimensional array of pixel data that is processed to +build the column filter kernel. +.SH DESCRIPTION +_cmnd builds a two-dimensional separable convolution filter kernel from +two arrays of pixels. +.sp +The pixel arrays specified by (__width, __format, __type, __row) +and (__height, __format, __type, __column) are processed just as if +they had been passed to _cmnd(DrawPixels), +but processing stops after the final expansion to RGBA is completed. +.sp +Next, the R, G, B, and A components of all pixels in both arrays are scaled +by the four separable 2D _const(CONVOLUTION_FILTER_SCALE) parameters and +biased by the four separable 2D _const(CONVOLUTION_FILTER_BIAS) parameters. +(The scale and bias parameters are set by _cmnd(ConvolutionParameter) +using the _const(SEPARABLE_2D) target and the names +_const(CONVOLUTION_FILTER_SCALE) and _const(CONVOLUTION_FILTER_BIAS). +The parameters themselves are vectors of four values that are applied to red, +green, blue, and alpha, in that order.) +The R, G, B, and A values are not clamped to [0,1] at any time during this +process. +.sp +Each pixel is then converted to the internal format specified by +__internalformat. +This conversion simply maps the component values of the pixel (R, G, B, +and A) to the values included in the internal format (red, green, blue, +alpha, luminance, and intensity). The mapping is as follows: +.bp +.TS +center; +l c c c c c c. +_ +Internal Format Red Green Blue Alpha Luminance Intensity +_ +_const(LUMINANCE) R +_const(LUMINANCE_ALPHA) A R +_const(INTENSITY) R +_const(RGB) R G B +_const(RGBA) R G B A +_ +.TE + +.sp +The red, green, blue, alpha, luminance, and/or intensity components of +the resulting pixels are stored in floating-point rather than integer +format. +They form two one-dimensional filter kernel images. +The row image is indexed by coordinate \f2i\fP starting at zero and +increasing from left to right. +Each location in the row image is derived from element \f2i\fP of __row. +The column image is indexed by coordinate \f2j\fP starting at zero +and increasing from bottom to top. +Each location in the column image is derived from element \f2j\fP of __column. +.PP +Note that after a convolution is performed, the resulting color +components are also scaled by their corresponding +_const(POST_CONVOLUTION_c_SCALE) parameters and biased by their +corresponding _const(POST_CONVOLUTION_c_BIAS) parameters (where +\f2c\fP takes on the values \f3RED\fP, \f3GREEN\fP, \f3BLUE\fP, and +\f3ALPHA\fP). +These parameters are set by _cmnd(PixelTransfer). +.SH NOTES +_cmnd is present only if _arbstring(imaging) is returned when _cmnd(GetString) +is called with an argument of _const(EXTENSIONS). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not +_const(SEPARABLE_2D). +.P +_const(INVALID_ENUM) is generated if __internalformat is not one of the +allowable values. +.P +_const(INVALID_VALUE) is generated if __width is less than zero or greater +than the maximum supported value. +This value may be queried with _cmnd(GetConvolutionParameter) +using target _const(SEPARABLE_2D) and name +_const(MAX_CONVOLUTION_WIDTH). +.P +_const(INVALID_VALUE) is generated if __height is less than zero or greater +than the maximum supported value. +This value may be queried with _cmnd(GetConvolutionParameter) +using target _const(SEPARABLE_2D) and name +_const(MAX_CONVOLUTION_HEIGHT). +.P +_const(INVALID_ENUM) is generated if __format is not one of the allowable +values. +.P +_const(INVALID_ENUM) is generated if __type is not one of the allowable +values. +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if _param4 is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and _param5 is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if _param4 is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and _param5 is neither _const(RGBA) nor _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(GetConvolutionParameter), _cmnd(GetSeparableFilter) +.SH SEE ALSO +_cmnd(ConvolutionFilter1D), +_cmnd(ConvolutionFilter2D), +_cmnd(ConvolutionParameter), +_cmnd(PixelTransfer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/shademodel.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/shademodel.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/shademodel.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,105 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(ShadeModel,select flat or smooth shading) +_names(ShadeModel) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a symbolic value representing a shading technique. +Accepted values are _const(FLAT) and _const(SMOOTH). +The initial value is _const(SMOOTH). +.SH DESCRIPTION +GL primitives can have either flat or smooth shading. +Smooth shading, +the default, +causes the computed colors of vertices to be interpolated as the +primitive is rasterized, +typically assigning different colors to each resulting pixel fragment. +Flat shading selects the computed color of just one vertex +and assigns it to all the pixel fragments +generated by rasterizing a single primitive. +In either case, the computed color of a vertex is the result of +lighting if lighting is enabled, +or it is the current color at the time the vertex was specified if +lighting is disabled. +.P +Flat and smooth shading are indistinguishable for points. +Starting when _cmnd(Begin) is issued and counting vertices and +primitives from 1, the GL gives each flat-shaded line segment $i$ the +computed color of vertex $i ~+~ 1$, its second vertex. +Counting similarly from 1, +the GL gives each flat-shaded polygon the computed color of the vertex listed +in the following table. +This is the last vertex to specify the polygon in all cases except single +polygons, +where the first vertex specifies the flat-shaded color. +.sp +.TS +center; +lb cb +l c . +_ +Primitive Type of Polygon $i$ Vertex +_ +Single polygon ($ i ~==~ 1 $) 1 +Triangle strip $i ~+~ 2$ +Triangle fan $i ~+~ 2$ +Independent triangle $ 3 i$ +Quad strip $2 i ~+~ 2$ +Independent quad $ 4 i $ +_ +.TE +.sp +Flat and smooth shading are specified by _cmnd with _param1 set to +_const(FLAT) and _const(SMOOTH), respectively. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is any value other than +_const(FLAT) or _const(SMOOTH). +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(SHADE_MODEL) +.SH SEE ALSO +_cmnd(Begin), +_cmnd(Color), +_cmnd(Light), +_cmnd(LightModel) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/stencilfunc.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/stencilfunc.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/stencilfunc.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,160 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(StencilFunc,set function and reference value for stencil testing) +.EQ +delim $$ +.EN +_names(StencilFunc) +.SH PARAMETERS +_phead(_param1) +Specifies the test function. +Eight tokens are valid: +_const(NEVER), +_const(LESS), +_const(LEQUAL), +_const(GREATER), +_const(GEQUAL), +_const(EQUAL), +_const(NOTEQUAL), and +_const(ALWAYS). The initial value is _const(ALWAYS). +_phead(_param2) +Specifies the reference value for the stencil test. +_param2 is clamped to the range [0,$2 sup n - 1$], +where $n$ is the number of bitplanes in the stencil buffer. The +initial value is 0. +_phead(_param3) +Specifies a mask that is ANDed with both the reference value +and the stored stencil value when the test is done. The initial value +is all 1's. +.SH DESCRIPTION +Stenciling, +like depth-buffering, +enables and disables drawing on a per-pixel basis. +You draw into the stencil planes using GL drawing primitives, +then render geometry and images, +using the stencil planes to mask out portions of the screen. +Stenciling is typically used in multipass rendering algorithms +to achieve special effects, +such as decals, +outlining, +and constructive solid geometry rendering. +.P +The stencil test conditionally eliminates a pixel based on the outcome +of a comparison between the reference value +and the value in the stencil buffer. +To enable and disable the test, call _cmnd(Enable) and _cmnd(Disable) +with argument _const(STENCIL_TEST). +To specify actions based on the outcome of the stencil test, call +_cmnd(StencilOp). +.P +_param1 is a symbolic constant that determines the stencil comparison function. +It accepts one of eight values, +shown in the following list. +_param2 is an integer reference value that is used in the stencil comparison. +It is clamped to the range [0,$2 sup n - 1$], +where $n$ is the number of bitplanes in the stencil buffer. +_param3 is bitwise ANDed with both the reference value +and the stored stencil value, +with the ANDed values participating in the comparison. +.P +If \f2stencil\fP represents the value stored in the corresponding +stencil buffer location, +the following list shows the effect of each comparison function +that can be specified by _param1. +Only if the comparison succeeds is the pixel passed through +to the next stage in the rasterization process +(see _cmnd(StencilOp)). +All tests treat \f2stencil\fP values as unsigned integers in the range +[0,$2 sup n - 1$], +where $n$ is the number of bitplanes in the stencil buffer. +.P +The following values are accepted by _param1: +.TP 18 +_const(NEVER) +Always fails. +.TP +_const(LESS) +Passes if ( _param2 & _param3 ) < ( \f2stencil\fP & _param3 ). +.TP +_const(LEQUAL) +Passes if ( _param2 & _param3 ) \(<= ( \f2stencil\fP & _param3 ). +.TP +_const(GREATER) +Passes if ( _param2 & _param3 ) > ( \f2stencil\fP & _param3 ). +.TP +_const(GEQUAL) +Passes if ( _param2 & _param3 ) \(>= ( \f2stencil\fP & _param3 ). +.TP +_const(EQUAL) +Passes if ( _param2 & _param3 ) = ( \f2stencil\fP & _param3 ). +.TP +_const(NOTEQUAL) +Passes if ( _param2 & _param3 ) \(!= ( \f2stencil\fP & _param3 ). +.TP +_const(ALWAYS) +Always passes. +.SH NOTES +Initially, the stencil test is disabled. +If there is no stencil buffer, +no stencil modification can occur and it is as if +the stencil test always passes. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not one of the eight +accepted values. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(STENCIL_FUNC) +.br +_cmnd(Get) with argument _const(STENCIL_VALUE_MASK) +.br +_cmnd(Get) with argument _const(STENCIL_REF) +.br +_cmnd(Get) with argument _const(STENCIL_BITS) +.br +_cmnd(IsEnabled) with argument _const(STENCIL_TEST) +.SH SEE ALSO +_cmnd(AlphaFunc), +_cmnd(BlendFunc), +_cmnd(DepthFunc), +_cmnd(Enable), +_cmnd(IsEnabled), +_cmnd(LogicOp), +_cmnd(StencilOp) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/stencilmask.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/stencilmask.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/stencilmask.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,71 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(StencilMask,control the writing of individual bits in the stencil planes) +_names(StencilMask) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a bit mask to enable and disable writing of individual bits +in the stencil planes. +Initially, the mask is all 1's. +.SH DESCRIPTION +_cmnd controls the writing of individual bits in the stencil planes. +The least significant $n$ bits of _param1, +where $n$ is the number of bits in the stencil buffer, +specify a mask. +Where a 1 appears in the mask, +it's possible to write to the corresponding bit in the stencil buffer. +Where a 0 appears, +the corresponding bit is write-protected. +Initially, all bits are enabled for writing. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(STENCIL_WRITEMASK) +.br +_cmnd(Get) with argument _const(STENCIL_BITS) +.SH SEE ALSO +_cmnd(ColorMask), +_cmnd(DepthMask), +_cmnd(IndexMask), +_cmnd(StencilFunc), +_cmnd(StencilOp) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/stencilop.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/stencilop.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/stencilop.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,156 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(StencilOp,set stencil test actions) +.EQ +delim $$ +.EN +_names(StencilOp) +.SH PARAMETERS +_phead(_param1) +Specifies the action to take when the stencil test fails. +Six symbolic constants are accepted: +_const(KEEP), +_const(ZERO), +_const(REPLACE), +_const(INCR), +_const(DECR), and +_const(INVERT). The initial value is _const(KEEP). +_phead(_param2) +Specifies the stencil action when the stencil test passes, +but the depth test fails. +_param2 accepts the same symbolic constants as _param1. The initial value +is _const(KEEP). +_phead(_param3) +Specifies the stencil action when both the stencil test and the depth +test pass, or when the stencil test passes and either there is no +depth buffer or depth testing is not enabled. +_param3 accepts the same symbolic constants as _param1. The initial value +is _const(KEEP). +.SH DESCRIPTION +Stenciling, +like depth-buffering, +enables and disables drawing on a per-pixel basis. +You draw into the stencil planes using GL drawing primitives, +then render geometry and images, +using the stencil planes to mask out portions of the screen. +Stenciling is typically used in multipass rendering algorithms +to achieve special effects, +such as decals, +outlining, +and constructive solid geometry rendering. +.P +The stencil test conditionally eliminates a pixel based on the outcome +of a comparison between the value in the stencil buffer and a +reference value. To enable and disable the test, call _cmnd(Enable) +and _cmnd(Disable) with argument +_const(STENCIL_TEST); to control it, call _cmnd(StencilFunc). +.P +_cmnd takes three arguments that indicate what happens +to the stored stencil value while stenciling is enabled. +If the stencil test fails, +no change is made to the pixel's color or depth buffers, +and _param1 specifies what happens to the stencil buffer contents. +The following six actions are possible. +.TP 16 +_const( KEEP) +Keeps the current value. +.TP +_const( ZERO) +Sets the stencil buffer value to 0. +.TP +_const( REPLACE) +Sets the stencil buffer value to \f2ref\fP, +as specified by _cmnd(StencilFunc). +.TP +_const( INCR) +Increments the current stencil buffer value. +Clamps to the maximum representable unsigned value. +.TP +_const( DECR) +Decrements the current stencil buffer value. +Clamps to 0. +.TP +_const( INVERT) +Bitwise inverts the current stencil buffer value. +.P +Stencil buffer values are treated as unsigned integers. +When incremented and decremented, +values are clamped to 0 and $2 sup n - 1$, +where $n$ is the value returned by querying _const(STENCIL_BITS). +.P +The other two arguments to _cmnd specify stencil buffer actions +that depend on whether subsequent depth buffer tests succeed (_param3) +or fail (_param2) (see +.br +_cmnd(DepthFunc)). +The actions are specified using the same six symbolic constants as _param1. +Note that _param2 is ignored when there is no depth buffer, +or when the depth buffer is not enabled. +In these cases, _param1 and _param3 specify stencil action when the +stencil test fails and passes, +respectively. +.SH NOTES +Initially the stencil test is disabled. +If there is no stencil buffer, +no stencil modification can occur +and it is as if the stencil tests always pass, +regardless of any call to _cmnd. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1, +_param2, or _param3 is any value other than the six defined constant values. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(STENCIL_FAIL) +.br +_cmnd(Get) with argument _const(STENCIL_PASS_DEPTH_PASS) +.br +_cmnd(Get) with argument _const(STENCIL_PASS_DEPTH_FAIL) +.br +_cmnd(Get) with argument _const(STENCIL_BITS) +.br +_cmnd(IsEnabled) with argument _const(STENCIL_TEST) +.SH SEE ALSO +_cmnd(AlphaFunc), +_cmnd(BlendFunc), +_cmnd(DepthFunc), +_cmnd(Enable), +_cmnd(LogicOp), +_cmnd(StencilFunc) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/texcoord.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/texcoord.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/texcoord.gl Mon Jan 14 17:13:36 2002 @@ -0,0 +1,93 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(TexCoord, set the current texture coordinates) +_names(TexCoord,[1-4]u*[sifdb]) +.SH PARAMETERS +_phead(_param1 _param2 _param3 _param4) +Specify \f2s\fP, \f2t\fP, \f2r\fP, and \f2q\fP texture coordinates. +Not all parameters are present in all forms of the command. +_names(TexCoord,[1-4]u*[sifdb]v) +.SH PARAMETERS +_phead(_param1) +Specifies a pointer to an array of one, two, three, or four elements, +which in turn specify the +\f2s\fP, +\f2t\fP, +\f2r\fP, and +\f2q\fP texture coordinates. +.SH DESCRIPTION +_cmnd specifies texture coordinates in +one, +two, +three, or +four dimensions. +_cmnd(TexCoord1) sets the current texture coordinates to +(_param1(1), 0, 0, 1); +a call to +.br +_cmnd(TexCoord2) sets them to +(_param1(1), _param2(1), 0, 1). +.BP +Similarly, _cmnd(TexCoord3) specifies the texture coordinates as +(_param1(1), _param2(1), _param3(1), 1), and +_cmnd(TexCoord4) defines all four components explicitly as +(_param1(1), _param2(1), _param3(1), _param4(1)). +.P +The current texture coordinates are part of the data +that is associated with each vertex and with the current +raster position. +Initially, the values for +\f2s\fP, +\f2t\fP, +\f2r\fP, and +\f2q\fP +are (0, 0, 0, 1). +.P +.SH NOTES +The current texture coordinates can be updated at any time. +In particular, +_cmnd can be called between a call to _cmnd(Begin) and the corresponding +call to _cmnd(End). +.P +When the _arbstring(imaging) extension is supported, _cmnd always +updates texture unit _arbconst(TEXTURE0). +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(CURRENT_TEXTURE_COORDS) +.SH SEE ALSO +_cmnd(TexCoordPointer), +_cmnd(Vertex) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/texcoordpointer.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/texcoordpointer.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/texcoordpointer.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,155 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ A real line follows. +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ Use GL not OpenGL +_C_ Don't change the ordering of the main headers. +_C_ C specification (or fortran) is handled automatically +_C_ .TH is automatically added to the top of this file. +_C_ Below, use current tense, active do not capitalize the first word and dont +_C_ use a period. +_C_ the function name must appear in (APIFILE) (usually gl.h) as set in +_C_ Makefile. +_header(TexCoordPointer,define an array of texture coordinates) +_names(TexCoordPointer) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the number of coordinates per array element. Must be 1, 2, 3 +or 4. The initial value is 4. +_phead(_param2) +Specifies the data type of each texture coordinate. +Symbolic constants +_const(SHORT), +_const(INT), +_const(FLOAT), +or _const(DOUBLE) +are accepted. The initial value is _const(FLOAT). +_phead(_param3) +Specifies the byte offset between consecutive array elements. +If _param3 is 0, the array elements are understood +to be tightly packed. The initial value is 0. +_phead(_param4) +Specifies a pointer to the first coordinate of the first element in the +array. The initial value is 0. +.SH DESCRIPTION +_cmnd specifies the location and data format of an array of texture +coordinates to use when rendering. +_param1 specifies the number of coordinates per +element, and must be 1, 2, 3, or 4. +_param2 specifies the data type of each texture coordinate +and _param3 specifies the byte stride from one +array element to the next allowing vertices and attributes +to be packed into a single array or stored in separate arrays. +(Single-array storage may be more efficient on some implementations; +see +.br +_cmnd(InterleavedArrays).) +When a texture +coordinate array is specified, _param1, _param2, _param3, and _param4 +are saved client-side state. +.P +To enable and disable the texture coordinate array, call +_cmnd(EnableClientState) and _cmnd(DisableClientState) with the argument +_const(TEXTURE_COORD_ARRAY). If +enabled, the texture coordinate array is used +when _cmnd(DrawArrays), _cmnd(DrawElements), _cmnd(DrawRangeElements) or +_cmnd(ArrayElement) is called. +.P +Use _cmnd(DrawArrays) to construct a sequence of primitives (all of the +same type) from prespecified vertex and vertex attribute arrays. +Use _cmnd(ArrayElement) to specify primitives +by indexing vertices and vertex attributes and _cmnd(DrawElements) to +construct a sequence of primitives by indexing vertices and vertex attributes. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +The texture coordinate array is initially disabled and it won't be +accessed when +_cmnd(ArrayElement), _cmnd(DrawElements), _cmnd(DrawRangeElements), or +_cmnd(DrawArrays) is called. +.P +Execution of _cmnd is not allowed between the execution of +_cmnd(Begin) and the corresponding execution of _cmnd(End), +but an error may or may not be generated. If no error is generated, +the operation is undefined. +.P +_cmnd is typically implemented on the client side with no protocol. +.P +The texture coordinate array parameters are client-side state and are +therefore not saved or restored by _cmnd(PushAttrib) and _cmnd(PopAttrib). +Use _cmnd(PushClientAttrib) and +_cmnd(PopClientAttrib) instead. +.P +When the _arbstring(imaging) extension is supported, _cmnd updates the +texture coordinate array state of the active client texture unit, +specified with _cmnd(ClientActiveTextureARB). +.SH ERRORS +_const(INVALID_VALUE) is generated if _param1 is not 1, 2, 3, or 4. +.P +_const(INVALID_ENUM) is generated if _param2 is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param3 is negative. +.SH ASSOCIATED GETS +_cmnd(IsEnabled) with argument _const(TEXTURE_COORD_ARRAY) +.br +_cmnd(Get) with argument _const(TEXTURE_COORD_ARRAY_SIZE) +.br +_cmnd(Get) with argument _const(TEXTURE_COORD_ARRAY_TYPE) +.br +_cmnd(GetPointerv) with argument _const(TEXTURE_COORD_ARRAY_POINTER) +.SH SEE ALSO +_C_ no queries or gets listed above, alphabetize commands, +_C_ seperate with commas not .br. no command appears in the associated gets +_C_ as well as in SEE ALSO. +_cmnd(ArrayElement), +_cmnd(ClientActiveTextureARB), +_cmnd(ColorPointer), +_cmnd(DrawArrays), +_cmnd(DrawElements), +_cmnd(DrawRangeElements), +_cmnd(EdgeFlagPointer), +_cmnd(Enable), +_cmnd(GetPointerv), +_cmnd(IndexPointer), +_cmnd(NormalPointer), +_cmnd(PopClientAttrib), +_cmnd(PushClientAttrib), +_cmnd(TexCoord), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/texenv.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/texenv.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/texenv.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,184 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(TexEnv, set texture environment parameters) +_names(TexEnv,[fi]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a texture environment. +Must be _const(TEXTURE_ENV). +_phead(_param2) +Specifies the symbolic name of a single-valued texture environment parameter. +Must be _const(TEXTURE_ENV_MODE). +_phead(_param3) +Specifies a single symbolic constant, one of _const(MODULATE), +_const(DECAL), _const(BLEND), or _const(REPLACE). +_names(TexEnv,[fi]v) +.SH PARAMETERS +_phead(_param1) +Specifies a texture environment. +Must be _const(TEXTURE_ENV). +_phead(_param2) +Specifies the symbolic name of a texture environment parameter. +Accepted values are _const(TEXTURE_ENV_MODE) and _const(TEXTURE_ENV_COLOR). +_phead(_param3) +Specifies a pointer to a parameter array that contains +either a single symbolic constant or an RGBA color. +.SH DESCRIPTION +A texture environment specifies how texture values are interpreted +when a fragment is textured. +_param1 must be _const(TEXTURE_ENV). +_param2 can be either _const(TEXTURE_ENV_MODE) or _const(TEXTURE_ENV_COLOR). +.P +If _param2 is _const(TEXTURE_ENV_MODE), +then _param3 is (or points to) the symbolic name of a texture function. +Four texture functions may be specified: +_const(MODULATE), +_const(DECAL), +_const(BLEND), and +_const(REPLACE). +.P +A texture function acts on the fragment to be textured using +the texture image value that applies to the fragment +(see _cmnd(TexParameter)) +and produces an RGBA color for that fragment. +The following table shows how the RGBA color is produced for each +of the three texture functions that can be chosen. +$C$ is a triple of color values (RGB) and $A$ is the associated alpha value. +RGBA values extracted from a texture image are in the range [0,1]. +The subscript $f$ refers to the incoming fragment, +the subscript $t$ to the texture image, +the subscript $c$ to the texture environment color, +and subscript $v$ indicates a value produced by the texture function. +.P +A texture image can have up to four components per texture element +(see _cmnd(TexImage1D), _cmnd(TexImage2D), _cmnd(TexImage3D), +_cmnd(CopyTexImage1D), and _cmnd(CopyTexImage2D)). +In a one-component image, +$L sub t$ indicates that single component. +A two-component image uses $L sub t$ and $A sub t$. +A three-component image has only a color value, $C sub t$. +A four-component image has both a color value $C sub t$ +and an alpha value $A sub t$. +.sp +.ne +.TS +center tab(:) ; +cb cb s s s +ci c c c c +c c c c c. +_ +Base internal:Texture functions +format:_const(MODULATE):_const(DECAL):_const(BLEND):_const(REPLACE) +_ +_const(ALPHA):$C sub v ~=~ C sub f$:undefined:$C sub v ~=~ C sub f$:$C sub v ~=~ C sub f$ +\^ :$A sub v ~=~ A sub f A sub t$:\^:$A sub v ~=~ A sub f$:$A sub v ~=~ A sub t$ +_ +_const(LUMINANCE):$C sub v ~=~ L sub t C sub f$:undefined:$C sub v ~=~ ( 1 - L sub t ) C sub f$:$C sub v ~=~ L sub t$ +: : :$+ L sub t C sub c$: +1: $A sub v ~=~ A sub f$:\^: $A sub v ~=~ A sub f$:$A sub v ~=~ A sub f$ +_ +_const(LUMINANCE):$C sub v ~=~ L sub t C sub f$:undefined:$C sub v ~=~ ( 1 - L sub t ) C sub f $:$C sub v ~=~ L sub t$ +\\f3_ALPHA\fP: : : $+ L sub t C sub c$ +2:$A sub v ~=~ A sub t A sub f$:\^:$A sub v ~=~ A sub t A sub f$:$A sub v ~=~ A sub t$ +_ +_const(INTENSITY):$C sub v ~=~ C sub f I sub t$:undefined:$C sub v ~=~ ( 1 - I sub t ) C sub f$ :$C sub v ~=~ I sub t$ +: : :$+ I sub t C sub c$ +c\^ :$A sub v ~=~ A sub f I sub t$:\^:$A sub v ~=~ ( 1 - I sub t ) A sub f $:$A sub v ~=~ I sub t$ +: : :$+ I sub t A sub c$: +_ +_const(RGB):$C sub v ~=~ C sub t C sub f$:$C sub v ~=~ C sub t$:$C sub v ~=~ (1 - C sub t) C sub f $:$C sub v ~=~ C sub t$ +: : : $+ C sub t C sub c$ +3:$A sub v ~=~ A sub f$:$A sub v ~=~ A sub f$:$A sub v ~=~ A sub f$:$A sub v ~=~ A sub f$ +_ +_const(RGBA):$C sub v ~=~ C sub t C sub f$:$C sub v ~=~ ( 1 - A sub t ) C sub f $:$C sub v ~=~ (1 - C sub t) C sub f $:$C sub v ~=~ C sub t$ +: :$+ A sub t C sub t$: $+ C sub t C sub c$ +4:$A sub v ~=~ A sub t A sub f$:$A sub v ~=~ A sub f$:$A sub v ~=~ A sub t A sub f$:$A sub v ~=~ A sub t$ +_ +.TE +.bp +If _param2 is _const(TEXTURE_ENV_COLOR), +_param3 is a pointer to an array that holds an RGBA color consisting of four +values. +Integer color components are interpreted linearly such that the most +positive integer maps to 1.0, +and the most negative integer maps to -1.0. +The values are clamped to the range [0,1] when they are specified. +$C sub c$ takes these four values. +.P +_const(TEXTURE_ENV_MODE) defaults to _const(MODULATE) and +_const(TEXTURE_ENV_COLOR) defaults to (0, 0, 0, 0). +.SH NOTES +_const(REPLACE) may only be used if the GL version is 1.1 or greater. +.P +Internal formats other than 1, 2, 3, or 4 may only be used if the GL +version is 1.1 or greater. +.P +When the _arbstring(multitexture) extension is supported, _cmnd controls +the texture environment for the current active texture unit, selected by +_cmnd(ActiveTextureARB). +.sh ERRORS +_const(INVALID_ENUM) is generated when _param1 or _param2 is not +one of the accepted defined values, +or when _param3 should have a defined constant value +(based on the value of _param2) +and does not. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetTexEnv) +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexParameter), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/texgen.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/texgen.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/texgen.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,244 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(TexGen,control the generation of texture coordinates) +_names(TexGen,[ifd]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies a texture coordinate. +Must be one of _const(S), _const(T), _const(R), or _const(Q). +_phead(_param2) +Specifies the symbolic name of the texture-coordinate generation function. +Must be _const(TEXTURE_GEN_MODE). +_phead(_param3) +Specifies a single-valued texture generation parameter, +one of _const(OBJECT_LINEAR), _const(EYE_LINEAR), or _const(SPHERE_MAP). +_names(TexGen,[ifd]v) +.SH PARAMETERS +_phead(_param1) +Specifies a texture coordinate. +Must be one of _const(S), _const(T), _const(R), or _const(Q). +_phead(_param2) +Specifies the symbolic name of the texture-coordinate generation function +or function parameters. +Must be +_const(TEXTURE_GEN_MODE), +_const(OBJECT_PLANE), or +_const(EYE_PLANE). +_phead(_param3) +Specifies a pointer to an array of texture generation parameters. +If _param2 is _const(TEXTURE_GEN_MODE), +then the array must contain a single symbolic constant, +one of +_const(OBJECT_LINEAR), +_const(EYE_LINEAR), or +_const(SPHERE_MAP). +Otherwise, +_param3 holds the coefficients for the texture-coordinate generation function +specified by _param2. +.SH DESCRIPTION +_cmnd selects a texture-coordinate generation function +or supplies coefficients for one of the functions. +_param1 names one of the (\f2s\fP, \f2t\fP, \f2r\fP, \f2q\fP) texture +coordinates; it must be one of the symbols +_const(S), +_const(T), +_const(R), or +_const(Q). +_param2 must be one of three symbolic constants: +_const(TEXTURE_GEN_MODE), +_const(OBJECT_PLANE), or +_const(EYE_PLANE). +If _param2 is _const(TEXTURE_GEN_MODE), +then _param3 chooses a mode, +one of +_const(OBJECT_LINEAR), +_const(EYE_LINEAR), or +_const(SPHERE_MAP). +If _param2 is either _const(OBJECT_PLANE) or _const(EYE_PLANE), +_param3 contains coefficients for the corresponding +texture generation function. +.P +If the texture generation function is _const(OBJECT_LINEAR), +the function +.P +.ce +$g ~=~ p sub 1^x sub o ~+~ p sub 2^y sub o ~+~ p sub 3^z sub o ~+~ p sub 4^w sub o$ +.P +.br +is used, where $g$ is the value computed for the coordinate named in _param1, +$p sub 1$, +$p sub 2$, +$p sub 3$, +and +$p sub 4$ are the four values supplied in _param3, and +$x sub o$, +$y sub o$, +$z sub o$, and +$w sub o$ are the object coordinates of the vertex. +This function can be used, for example, to texture-map terrain using sea level +as a reference plane +(defined by $p sub 1$, $p sub 2$, $p sub 3$, and $p sub 4$). +The altitude of a terrain vertex is computed by the _const(OBJECT_LINEAR) +coordinate generation function as its distance from sea level; +that altitude can then be used to index the texture image to map white snow +onto peaks and green grass onto foothills. +.P +If the texture generation function is _const(EYE_LINEAR), the function +.P +.ce +$g ~=~ p sub 1 sup prime ^x sub e ~+~ p sub 2 sup prime ^y sub e ~+~ p sub 3 sup prime ^z sub e ~+~ p sub 4 sup prime ^w sub e$ +.P +.br +is used, where +.P +.ce +$( p sub 1 sup prime +~~p sub 2 sup prime~~p sub 3 sup prime~~ +{ p sub 4 sup prime}) ~=~ ( p sub 1~~ p sub 2~~ p sub 3~~ p sub 4 ) ~M sup -1$ +.P +.br +and +$x sub e$, +$y sub e$, +$z sub e$, and +$w sub e$ are the eye coordinates of the vertex, +$p sub 1$, +$p sub 2$, +$p sub 3$, +and +$p sub 4$ are the values supplied in _param3, and +$M$ is the modelview matrix when _cmnd is invoked. +If $M$ is poorly conditioned or singular, +texture coordinates generated by the resulting function may be inaccurate +or undefined. +.P +Note that the values in _param3 define a reference plane in eye coordinates. +The modelview matrix that is applied to them may not be the same one +in effect when the polygon vertices are transformed. +This function establishes a field of texture coordinates +that can produce dynamic contour lines on moving objects. +.P +If _param2 is _const(SPHERE_MAP) and _param1 is either +_const(S) or +_const(T), +$s$ and $t$ texture coordinates are generated as follows. +Let \f2u\fP be the unit vector pointing from the origin to the polygon vertex +(in eye coordinates). +Let \f2n\fP sup prime be the current normal, +after transformation to eye coordinates. +Let +.P +.ce +$f ~=~ ( f sub x~~f sub y~~f sub z ) sup T$ +be the reflection vector such that +.P +.ce +$f ~=~ u ~-~ 2 n sup prime n sup prime sup T u$ +.br +.P +Finally, let $ m ~=~ 2 sqrt { f sub x sup {~2} ~+~ f sub y sup {~2} ~+~ (f sub z ~+~ 1 ) sup 2}$. +Then the values assigned to the $s$ and $t$ texture coordinates are +.P +.ce 1 +$s ~=~ f sub x over m ~+~ 1 over 2$ +.sp +.ce 1 +$t ~=~ f sub y over m ~+~ 1 over 2$ +.P +To enable or disable a texture-coordinate generation function, call +_cmnd(Enable) or _cmnd(Disable) +with one of the symbolic texture-coordinate names +(_const(TEXTURE_GEN_S), +_const(TEXTURE_GEN_T), +_const(TEXTURE_GEN_R), or +_const(TEXTURE_GEN_Q)) as the argument. +When enabled, +the specified texture coordinate is computed +according to the generating function associated with that coordinate. +When disabled, +subsequent vertices take the specified texture coordinate +from the current set of texture coordinates. Initially, all texture +generation functions are set to _const(EYE_LINEAR) and are disabled. +Both $s$ plane equations are (1, 0, 0, 0), +both $t$ plane equations are (0, 1, 0, 0), +and all $r$ and $q$ plane equations are (0, 0, 0, 0). +.P +When the _arbstring(multitexture) extension is supported, _cmnd set the +texture generation parameters for the currently active texture unit, +selected with _cmnd(ActiveTextureARB). +.SH ERRORS +_const(INVALID_ENUM) is generated when _param1 or _param2 is not an +accepted defined value, +or when _param2 is _const(TEXTURE_GEN_MODE) and _param3 is not an +accepted defined value. +.P +_const(INVALID_ENUM) is generated when _param2 is _const(TEXTURE_GEN_MODE), +_param3 is _const(SPHERE_MAP), +and _param1 is either _const(R) or _const(Q). +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetTexGen) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_GEN_S) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_GEN_T) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_GEN_R) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_GEN_Q) +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(CopyPixels), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(TexEnv), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexParameter), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/teximage1d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/teximage1d.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/teximage1d.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,462 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(TexImage1D,specify a one-dimensional texture image) +_names(TexImage1D) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the target texture. +Must be _const(TEXTURE_1D) or _const(PROXY_TEXTURE_1D). +_phead(_param2) +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +_phead(_param3) +Specifies the number of color components in the texture. +Must be 1, 2, 3, or 4, or one of the following symbolic constants: +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(INTENSITY), +_const(INTENSITY4), +_const(INTENSITY8), +_const(INTENSITY12), +_const(INTENSITY16), +_const(RGB), +_const(R3_G3_B2), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), or +_const(RGBA16). +_phead(_param4) +Specifies the width of the texture image. +Must be $2 sup n + 2 ( _eqnparam5 )$ for some integer $n$. All +implementations support texture images that are at least 64 texels +wide. The height of the 1D texture image is 1. +_phead(_param5) +Specifies the width of the border. +Must be either 0 or 1. +_phead(_param6) +Specifies the format of the pixel data. +The following symbolic values are accepted: +_const(COLOR_INDEX), +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_C_ _const(ABGR_EXT), +_const(LUMINANCE), and +_const(LUMINANCE_ALPHA). +_phead(_param7) +Specifies the data type of the pixel data. +The following symbolic values are accepted: +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV). +_phead(_param8) +Specifies a pointer to the image data in memory. +.SH DESCRIPTION +Texturing maps a portion of a specified texture image +onto each graphical primitive for which texturing is enabled. +To enable and disable one-dimensional texturing, call _cmnd(Enable) +and _cmnd(Disable) with argument _const(TEXTURE_1D). +.P +Texture images are defined with _cmnd. +The arguments describe the parameters of the texture image, +such as width, +width of the border, +level-of-detail number +(see _cmnd(TexParameter)), +and the internal resolution and format used to store the image. +The last three arguments describe how the image is represented in +memory; they are identical to the pixel formats used for +_cmnd(DrawPixels). +.P +If _param1 is _const(PROXY_TEXTURE_1D), no data is read from _param8, but +all of the texture image state is recalculated, checked for +consistency, and checked against the implementation's capabilities. +If the implementation cannot handle a texture of the +requested texture size, it sets all of the image state to 0, +but does not generate an error (see _cmnd(GetError)). To query for an +entire mipmap array, use an image array level greater than or equal to +1. +.P +If _param1 is _const(TEXTURE_1D), +data is read from _param8 as a sequence of signed or unsigned bytes, +shorts, +or longs, +or single-precision floating-point values, +depending on _param7. +These values are grouped into sets of one, +two, +three, +or four values, +depending on _param6, +to form elements. +If _param7 is _const(BITMAP), +the data is considered as a string of unsigned bytes +(and _param6 must be _const(COLOR_INDEX)). +Each data byte is treated as eight 1-bit elements, +with bit ordering determined by _const(UNPACK_LSB_FIRST) +(see _cmnd(PixelStore)). +.P +The first element corresponds to the left end of the texture array. +Subsequent elements progress left-to-right through the remaining texels +in the texture array. +The final element corresponds to the right end of the texture array. +.P +_param6 determines the composition of each element in _param8. +It can assume one of eleven symbolic values: +.TP 10 +_const(COLOR_INDEX) +Each element is a single value, +a color index. +The GL converts it to fixed point +(with an unspecified number of zero bits to the right of the binary point), +shifted left or right depending on the value and sign of _const(INDEX_SHIFT), +and added to _const(INDEX_OFFSET) +(see _cmnd(PixelTransfer)). +The resulting index is converted to a set of color components +using the +_const(PIXEL_MAP_I_TO_R), +_const(PIXEL_MAP_I_TO_G), +_const(PIXEL_MAP_I_TO_B), and +_const(PIXEL_MAP_I_TO_A) tables, +and clamped to the range [0,1]. +.TP +_const(RED) +Each element is a single red component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for green and blue, and 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS). +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(GREEN) +Each element is a single green component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red and blue, and 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(BLUE) +Each element is a single blue component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red and green, and 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(ALPHA) +Each element is a single alpha component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red, green, and blue. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(RGB) +.TP +_const(BGR) +Each element is an RGB triple. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(RGBA) +.TP +_const(BGRA) +_C_ .TP +_C_ _const(ABGR_EXT) +Each element contains all four components. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(LUMINANCE) +Each element is a single luminance value. +The GL converts it to floating point, +then assembles it into an RGBA element by replicating the luminance value +three times for red, green, and blue and attaching 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(LUMINANCE_ALPHA) +Each element is a luminance/alpha pair. +The GL converts it to floating point, +then assembles it into an RGBA element by replicating the luminance value +three times for red, green, and blue. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] (see _cmnd(PixelTransfer)). +.P +If an application wants to store the texture at a certain +resolution or in a certain format, it can request the resolution +and format with _param3. The GL will choose an internal +representation that closely approximates that requested by _param3, but +it may not match exactly. +(The representations specified by _const(LUMINANCE), _const(LUMINANCE_ALPHA), _const(RGB), +and _const(RGBA) must match exactly. The numeric values 1, 2, 3, and 4 may also be used to +specify the preceding representations.) +.P +Use the _const(PROXY_TEXTURE_1D) target to try out a resolution and +format. The implementation will +update and recompute its best match for the requested storage resolution +and format. To query this state, call _cmnd(GetTexLevelParameter). +If the texture cannot be accommodated, texture state is set to 0. +.P +A one-component texture image uses only the red component of the RGBA +color from _param8. +A two-component image uses the R and A values. +A three-component image uses the R, G, and B values. +A four-component image uses all of the RGBA components. +.SH NOTES +Texturing has no effect in color index mode. +.P +If the _arbstring(imaging) extension is supported, RGBA elements may +also be processed by the imaging pipeline. The following stages may be +applied to an RGBA color before color component clamping to the range +[0,\ 1]: +.TP 3 +1. Color component replacement by the color table specified for +_const(COLOR_TABLE), if enabled. See _cmnd(ColorTable). +.TP +2. One-dimensional convolution filtering, if enabled. See +_cmnd(ConvolutionFilter1D). +.IP +If a convolution filter changes the __width of the texture (by +processing with a _const(CONVOLUTION_BORDER_MODE) of _const(REDUCE), for +example), the _param4 must $2 sup n + 2 ( _eqnparam5 )$, for some +integer $n$, after filtering. +.TP +3. RGBA components may be multiplied by _const(POST_CONVOLUTION_c_SCALE), +and added to _const(POST_CONVOLUTION_c_BIAS), if enabled. See +_cmnd(PixelTransfer). +.TP +4. Color component replacement by the color table specified for +_const(POST_CONVOLUTION_COLOR_TABLE), if enabled. See _cmnd(ColorTable). +.TP +5. Transformation by the color matrix. See _cmnd(MatrixMode). +.TP +6. RGBA components may be multiplied by _const(POST_COLOR_MATRIX_c_SCALE), +and added to _const(POST_COLOR_MATRIX_c_BIAS), if enabled. See +_cmnd(PixelTransfer). +.TP +7. Color component replacement by the color table specified for +_const(POST_COLOR_MATRIX_COLOR_TABLE), if enabled. See _cmnd(ColorTable). +.P +The texture image can be represented by the same data formats +as the pixels in a _cmnd(DrawPixels) command, +except that _const(STENCIL_INDEX) and _const(DEPTH_COMPONENT) +cannot be used. +_cmnd(PixelStore) and _cmnd(PixelTransfer) modes affect texture images +in exactly the way they affect _cmnd(DrawPixels). +.P +_C_ _const(ABGR_EXT) is +_C_ part of the _extname(EXT_abgr) extension, not part of +_C_ the core GL command set. If _extstring(EXT_abgr) is included +_C_ in the string returned by _cmnd(GetString), when called with +_C_ argument _const(EXTENSIONS), extension _extname(EXT_abgr) is +_C_ supported by the connection. +_C_ .P +_const(PROXY_TEXTURE_1D) may be used only if the GL version is 1.1 or greater. +.P +Internal formats other than 1, 2, 3, or 4 may be +used only if the GL version is 1.1 or greater. +.P +In GL version 1.1 or greater, +_param8 may be a null pointer. In this case texture memory is +allocated to accommodate a texture of width _param4. +You can then download subtextures to initialize the +texture memory. The image is undefined if the program tries to apply +an uninitialized portion of the texture image to a primitive. +.P +Formats _const(BGR), and _const(BGRA) and types +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) are available only if the GL version +is 1.2 or greater. +.P +When the _arbstring(multitexture) extension is supported, _cmnd +specifies the one-dimensional texture for the current texture unit, +specified with _cmnd(ActiveTextureARB). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not _const(TEXTURE_1D) +or _const(PROXY_TEXTURE_1D). +.P +_const(INVALID_ENUM) is generated if _param6 is not an accepted +format constant. +Format constants other than _const(STENCIL_INDEX) and _const(DEPTH_COMPONENT) +are accepted. +.P +_const(INVALID_ENUM) is generated if _param7 is not a type constant. +.P +_const(INVALID_ENUM) is generated if _param7 is _const(BITMAP) and +_param6 is not _const(COLOR_INDEX). +.P +_const(INVALID_VALUE) is generated if _param2 is less than 0. +.P +_const(INVALID_VALUE) may be generated if _param2 is greater than $log +sub 2$\f2max\fP, +where \f2max\fP is the returned value of _const(MAX_TEXTURE_SIZE). +.P +_const(INVALID_VALUE) is generated if _param3 is not 1, 2, 3, 4, or +one of the accepted resolution and format symbolic constants. +.P +_const(INVALID_VALUE) is generated if _param4 is less than 0 +or greater than 2 + _const(MAX_TEXTURE_SIZE), +or if it cannot be represented as $2 sup n ~+~ 2(_eqnparam5)$ +for some integer value of \f2n\fP. +.P +_const(INVALID_VALUE) is generated if _param5 is not 0 or 1. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if _param7 is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and _param6 is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if _param7 is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and _param6 is neither _const(RGBA) nor _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(GetTexImage) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_1D) +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(ColorTable), +_cmnd(ConvolutionFilter1D), +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawPixels), +_cmnd(MatrixMode), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D), +_cmnd(TexParameter) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/teximage2d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/teximage2d.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/teximage2d.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,488 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(TexImage2D,specify a two-dimensional texture image) +_names(TexImage2D) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the target texture. +Must be _const(TEXTURE_2D) or _const(PROXY_TEXTURE_2D). +_phead(_param2) +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +_phead(_param3) +Specifies the number of color components in the texture. +Must be 1, 2, 3, or 4, or one of the following symbolic constants: +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(INTENSITY), +_const(INTENSITY4), +_const(INTENSITY8), +_const(INTENSITY12), +_const(INTENSITY16), +_const(R3_G3_B2), +_const(RGB), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), or +_const(RGBA16). +_phead(_param4) +Specifies the width of the texture image. +Must be $2 sup n ~+~ 2 ( _eqnparam6 )$ for some integer $n$. All +implementations support texture images that are at least 64 texels +wide. +_phead(_param5) +Specifies the height of the texture image. +Must be $2 sup m ~+~ 2 ( _eqnparam6 )$ for some integer $m$. All +implementations support texture images that are at least 64 texels +high. +_phead(_param6) +Specifies the width of the border. +Must be either 0 or 1. +_phead(_param7) +Specifies the format of the pixel data. +The following symbolic values are accepted: +_const(COLOR_INDEX), +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR) +_const(RGBA), +_const(BGRA), +_C_ _const(ABGR_EXT), +_const(LUMINANCE), and +_const(LUMINANCE_ALPHA). +_phead(_param8) +Specifies the data type of the pixel data. +The following symbolic values are accepted: +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV). +_phead(_param9) +Specifies a pointer to the image data in memory. +.SH DESCRIPTION +Texturing maps a portion of a specified texture image +onto each graphical primitive for which texturing is enabled. +To enable and disable two-dimensional texturing, call _cmnd(Enable) +and _cmnd(Disable) with argument _const(TEXTURE_2D). +.P +To define texture images, call _cmnd. +The arguments describe the parameters of the texture image, +such as height, +width, +width of the border, +level-of-detail number +(see _cmnd(TexParameter)), +and number of color components provided. +The last three arguments describe how the image is represented in memory; +they are identical to the pixel formats used for _cmnd(DrawPixels). +.P +If _param1 is _const(PROXY_TEXTURE_2D), no data is read from _param9, but +all of the texture image state is recalculated, checked for +consistency, and checked +against the implementation's capabilities. If the implementation cannot +handle a texture of the requested texture size, it sets +all of the image state to 0, +but does not generate an error (see _cmnd(GetError)). To query for an +entire mipmap array, use an image array level greater than or equal to +1. +.P +If _param1 is _const(TEXTURE_2D), +data is read from _param9 as a sequence of signed or unsigned bytes, +shorts, +or longs, +or single-precision floating-point values, +depending on _param8. +These values are grouped into sets of one, +two, +three, +or four values, +depending on _param7, +to form elements. +If _param8 is _const(BITMAP), +the data is considered as a string of unsigned bytes (and +_param7 must be _const(COLOR_INDEX)). +.bp +Each data byte is treated as eight 1-bit elements, +with bit ordering determined by _const(UNPACK_LSB_FIRST) +(see _cmnd(PixelStore)). +.P +The first element corresponds to the lower left corner of the texture +image. +Subsequent elements progress left-to-right through the remaining texels +in the lowest row of the texture image, and then in successively higher +rows of the texture image. +The final element corresponds to the upper right corner of the texture +image. +.P +_param7 determines the composition of each element in _param9. +It can assume one of eleven symbolic values: +.TP 10 +_const(COLOR_INDEX) +Each element is a single value, +a color index. +The GL converts it to fixed point +(with an unspecified number of zero bits to the right of the binary point), +shifted left or right depending on the value and sign of _const(INDEX_SHIFT), +and added to _const(INDEX_OFFSET) +(see +.br +_cmnd(PixelTransfer)). +The resulting index is converted to a set of color components +using the +_const(PIXEL_MAP_I_TO_R), +_const(PIXEL_MAP_I_TO_G), +_const(PIXEL_MAP_I_TO_B), and +_const(PIXEL_MAP_I_TO_A) tables, +and clamped to the range [0,1]. +.TP +_const(RED) +Each element is a single red component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for green and blue, and 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(GREEN) +Each element is a single green component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red and blue, and 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(BLUE) +Each element is a single blue component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red and green, and 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(ALPHA) +Each element is a single alpha component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red, green, and blue. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(RGB) +.TP +_const(BGR) +Each element is an RGB triple. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see +.br +_cmnd(PixelTransfer)). +.TP +_const(RGBA) +.TP +_const(BGRA) +_C_ .TP +_C_ _const(ABGR_EXT) +Each element contains all four components. +Each component is multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(LUMINANCE) +Each element is a single luminance value. +The GL converts it to floating point, +then assembles it into an RGBA element by replicating the luminance value +three times for red, green, and blue and attaching 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(LUMINANCE_ALPHA) +Each element is a luminance/alpha pair. +The GL converts it to floating point, +then assembles it into an RGBA element by replicating the luminance value +three times for red, green, and blue. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see +.br +_cmnd(PixelTransfer)). +.P +Refer to the _cmnd(DrawPixels) reference page for a description of +the acceptable values for the _param8 parameter. +.P +If an application wants to store the texture at a certain +resolution or in a certain format, it can request the resolution +and format with _param3. The GL will choose an internal +representation that closely approximates that requested by _param3, but +it may not match exactly. +(The representations specified by _const(LUMINANCE), +_const(LUMINANCE_ALPHA), _const(RGB), +and _const(RGBA) must match exactly. The numeric values 1, 2, 3, and 4 +may also be used to specify the above representations.) +.P +Use the _const(PROXY_TEXTURE_2D) target to try out a resolution and +format. The implementation will +update and recompute its best match for the requested storage resolution +and format. To then query this state, call +_cmnd(GetTexLevelParameter). +If the texture cannot be accommodated, texture state is set to 0. +.P +A one-component texture image uses only the red component of the RGBA +color extracted from _param9. +A two-component image uses the R and A values. +A three-component image uses the R, G, and B values. +A four-component image uses all of the RGBA components. +.SH NOTES +Texturing has no effect in color index mode. +.P +If the _arbstring(imaging) extension is supported, RGBA elements may +also be processed by the imaging pipeline. The following stages may be +applied to an RGBA color before color component clamping to the range +[0,\ 1]: +.TP 3 +1. Color component replacement by the color table specified for +_const(COLOR_TABLE), if enabled. See _cmnd(ColorTable). +.TP +2. Two-dimensional Convolution filtering, if enabled. See +_cmnd(ConvolutionFilter1D). +.IP +If a convolution filter changes the __width of the texture (by +processing with a _const(CONVOLUTION_BORDER_MODE) of _const(REDUCE), for +example), the _param4 must $2 sup n + 2 ( _eqnparam5 )$, for some +integer $n$, and _param5 must be $2 sup m + ( _eqnparam6 )$, for some +integer $m$, after filtering. +.TP +3. RGBA components may be multiplied by _const(POST_CONVOLUTION_c_SCALE), +and added to _const(POST_CONVOLUTION_c_BIAS), if enabled. See +_cmnd(PixelTransfer). +.TP +4. Color component replacement by the color table specified for +_const(POST_CONVOLUTION_COLOR_TABLE), if enabled. See _cmnd(ColorTable). +.TP +5. Transformation by the color matrix. See _cmnd(MatrixMode). +.TP +6. RGBA components may be multiplied by _const(POST_COLOR_MATRIX_c_SCALE), +and added to _const(POST_COLOR_MATRIX_c_BIAS), if enabled. See +_cmnd(PixelTransfer). +.TP +7. Color component replacement by the color table specified for +_const(POST_COLOR_MATRIX_COLOR_TABLE), if enabled. See +_cmnd(ColorTable). +.P +The texture image can be represented by the same data formats +as the pixels in a _cmnd(DrawPixels) command, +except that _const(STENCIL_INDEX) and _const(DEPTH_COMPONENT) +cannot be used. +_cmnd(PixelStore) and _cmnd(PixelTransfer) modes affect texture images +in exactly the way they affect _cmnd(DrawPixels). +.P +_C_ _const(ABGR_EXT) is +_C_ part of the _extname(EXT_abgr) extension, not part of +_C_ the core GL command set. If _extstring(EXT_abgr) is included +_C_ in the string returned by _cmnd(GetString), when called with +_C_ argument _const(EXTENSIONS), extension _extname(EXT_abgr) is +_C_ supported by the GL. +.P +_cmnd and _const(PROXY_TEXTURE_2D) are available only if the GL +version is 1.1 or greater. +.P +Internal formats other than 1, 2, 3, or 4 may be used only if the GL +version is 1.1 or greater. +.P +In GL version 1.1 or greater, _param9 may be a null pointer. +In this case texture memory is +allocated to accommodate a texture of width _param4 and height _param5. +You can then download subtextures to initialize this +texture memory. +The image is undefined if the user tries to apply +an uninitialized portion of the texture image to a primitive. +.P +Formats _const(BGR), and _const(BGRA) and types +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) are available only if the GL version +is 1.2 or greater. +.P +When the _arbstring(multitexture) extension is supported, _cmnd +specifies the two-dimensional texture for the current texture unit, +specified with _cmnd(ActiveTextureARB). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not _const(TEXTURE_2D) +or _const(PROXY_TEXTURE_2D). +.P +_const(INVALID_ENUM) is generated if _param7 is not an accepted +format constant. +Format constants other than _const(STENCIL_INDEX) and _const(DEPTH_COMPONENT) +are accepted. +.P +_const(INVALID_ENUM) is generated if _param8 is not a type constant. +.P +_const(INVALID_ENUM) is generated if _param8 is _const(BITMAP) and +_param7 is not _const(COLOR_INDEX). +.P +_const(INVALID_VALUE) is generated if _param2 is less than 0. +.P +_const(INVALID_VALUE) may be generated if _param2 is greater than $log +sub 2$\f2max\fP, +where \f2max\fP is the returned value of _const(MAX_TEXTURE_SIZE). +.P +_const(INVALID_VALUE) is generated if _param3 is not 1, 2, 3, 4, or one of the +accepted resolution and format symbolic constants. +.P +_const(INVALID_VALUE) is generated if _param4 or _param5 is less than 0 +or greater than 2 + _const(MAX_TEXTURE_SIZE), +or if either cannot be represented as $2 sup k ~+~ 2(_eqnparam6)$ for some +integer value of \f2k\fP. +.P +_const(INVALID_VALUE) is generated if _param6 is not 0 or 1. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if _param8 is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and _param7 is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if _param8 is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and _param7 is neither _const(RGBA) nor _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(GetTexImage) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_2D) +.SH SEE ALSO +_cmnd(ColorTable), +_cmnd(ConvolutionFilter2D), +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawPixels), +_cmnd(MatrixMode), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(SeparableFilter2D), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D), +_cmnd(TexParameter) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/teximage3d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/teximage3d.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/teximage3d.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,489 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(TexImage3D,specify a three-dimensional texture image) +_names(TexImage3D) +.EQ +delim $$ +.EN +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__level>@,@<_param2>@)_C_ +_define(@<__internalformat>@,@<_param3>@)_C_ +_define(@<__width>@,@<_param4>@)_C_ +_define(@<__height>@,@<_param5>@)_C_ +_define(@<__depth>@,@<_param6>@)_C_ +_define(@<__border>@,@<_param7>@)_C_ +_define(@<__eqnborder>@,@<_eqnparam7>@)_C_ +_define(@<__format>@,@<_param8>@)_C_ +_define(@<__type>@,@<_param9>@)_C_ +_define(@<__pixels>@,@<_param10>@)_C_ +.SH PARAMETERS +_phead(__target) +Specifies the target texture. +Must be _const(TEXTURE_3D) or _const(PROXY_TEXTURE_3D). +_phead(__level) +Specifies the level-of-detail number. +Level 0 is the base image level. +Level $n$ is the $n sup th$ mipmap reduction image. +_phead(__internalformat) +Specifies the number of color components in the texture. +Must be 1, 2, 3, or 4, or one of the following symbolic constants: +_const(ALPHA), +_const(ALPHA4), +_const(ALPHA8), +_const(ALPHA12), +_const(ALPHA16), +_const(LUMINANCE), +_const(LUMINANCE4), +_const(LUMINANCE8), +_const(LUMINANCE12), +_const(LUMINANCE16), +_const(LUMINANCE_ALPHA), +_const(LUMINANCE4_ALPHA4), +_const(LUMINANCE6_ALPHA2), +_const(LUMINANCE8_ALPHA8), +_const(LUMINANCE12_ALPHA4), +_const(LUMINANCE12_ALPHA12), +_const(LUMINANCE16_ALPHA16), +_const(INTENSITY), +_const(INTENSITY4), +_const(INTENSITY8), +_const(INTENSITY12), +_const(INTENSITY16), +_const(R3_G3_B2), +_const(RGB), +_const(RGB4), +_const(RGB5), +_const(RGB8), +_const(RGB10), +_const(RGB12), +_const(RGB16), +_const(RGBA), +_const(RGBA2), +_const(RGBA4), +_const(RGB5_A1), +_const(RGBA8), +_const(RGB10_A2), +_const(RGBA12), or +_const(RGBA16). +_phead(__width) +Specifies the width of the texture image. +Must be $2 sup n ~+~ 2 ( __eqnborder )$ for some integer $n$. All +implementations support texture images that are at least 64 texels +wide. +_phead(__height) +Specifies the height of the texture image. +Must be $2 sup m ~+~ 2 ( __eqnborder )$ for some integer $m$. All +implementations support texture images that are at least 64 texels +high. +_phead(__depth) +Specifies the depth of the texture image. +Must be $2 sup k ~+~ 2 ( __eqnborder )$ for some integer $k$. All +implementations support texture images that are at least 64 texels +deep. +_phead(__border) +Specifies the width of the border. +Must be either 0 or 1. +_phead(__format) +Specifies the format of the pixel data. +The following symbolic values are accepted: +_const(COLOR_INDEX), +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_C_ _const(ABGR_EXT), +_const(LUMINANCE), and +_const(LUMINANCE_ALPHA). +_phead(__type) +Specifies the data type of the pixel data. +The following symbolic values are accepted: +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT) +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV). +_phead(__pixels) +Specifies a pointer to the image data in memory. +.SH DESCRIPTION +Texturing maps a portion of a specified texture image +onto each graphical primitive for which texturing is enabled. +To enable and disable three-dimensional texturing, call _cmnd(Enable) +and _cmnd(Disable) with argument _const(TEXTURE_3D). +.P +To define texture images, call _cmnd. +The arguments describe the parameters of the texture image, +such as height, +width, depth, +width of the border, +level-of-detail number +(see _cmnd(TexParameter)), +and number of color components provided. +The last three arguments describe how the image is represented in memory; +they are identical to the pixel formats used for _cmnd(DrawPixels). +.P +If __target is _const(PROXY_TEXTURE_3D), no data is read from __pixels, but +all of the texture image state is recalculated, checked for +consistency, and checked +against the implementation's capabilities. If the implementation cannot +handle a texture of the requested texture size, it sets +all of the image state to 0, +but does not generate an error (see _cmnd(GetError)). To query for an +entire mipmap array, use an image array level greater than or equal to +1. +.P +If __target is _const(TEXTURE_3D), +data is read from __pixels as a sequence of signed or unsigned bytes, +shorts, +or longs, +or single-precision floating-point values, +depending on __type. +These values are grouped into sets of one, +two, +three, +or four values, +depending on __format, +to form elements. +If __type is _const(BITMAP), +the data is considered as a string of unsigned bytes (and +__format must be _const(COLOR_INDEX)). +Each data byte is treated as eight 1-bit elements, +with bit ordering determined by _const(UNPACK_LSB_FIRST) +(see _cmnd(PixelStore)). +.P +The first element corresponds to the lower left corner of the texture +image. +Subsequent elements progress left-to-right through the remaining texels +in the lowest row of the texture image, and then in successively higher +rows of the texture image. +The final element corresponds to the upper right corner of the texture +image. +.P +__format determines the composition of each element in __pixels. +It can assume one of eleven symbolic values: +.TP 10 +_const(COLOR_INDEX) +Each element is a single value, +a color index. +The GL converts it to fixed point +(with an unspecified number of zero bits to the right of the binary point), +shifted left or right depending on the value and sign of _const(INDEX_SHIFT), +and added to _const(INDEX_OFFSET) +(see +.br +_cmnd(PixelTransfer)). +The resulting index is converted to a set of color components +using the +_const(PIXEL_MAP_I_TO_R), +_const(PIXEL_MAP_I_TO_G), +_const(PIXEL_MAP_I_TO_B), and +_const(PIXEL_MAP_I_TO_A) tables, +and clamped to the range [0,1]. +.TP +_const(RED) +Each element is a single red component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for green and blue, and 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(GREEN) +Each element is a single green component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red and blue, and 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(BLUE) +Each element is a single blue component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red and green, and 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(ALPHA) +Each element is a single alpha component. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 0 for red, green, and blue. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(RGB) +.TP +_const(BGR) +Each element is an RGB triple. +The GL converts it to floating point and assembles it into an RGBA element +by attaching 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see +.br +_cmnd(PixelTransfer)). +.TP +_const(RGBA) +.TP +_const(BGRA) +_C_ .TP +_C_ _const(ABGR_EXT) +Each element contains all four components. +Each component is multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(LUMINANCE) +Each element is a single luminance value. +The GL converts it to floating point, +then assembles it into an RGBA element by replicating the luminance value +three times for red, green, and blue and attaching 1 for alpha. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see _cmnd(PixelTransfer)). +.TP +_const(LUMINANCE_ALPHA) +Each element is a luminance/alpha pair. +The GL converts it to floating point, +then assembles it into an RGBA element by replicating the luminance value +three times for red, green, and blue. +Each component is then multiplied by the signed scale factor _const(c_SCALE), +added to the signed bias _const(c_BIAS), +and clamped to the range [0,1] +(see +.br +_cmnd(PixelTransfer)). +.P +Refer to the _cmnd(DrawPixels) reference page for a description of +the acceptable values for the __type parameter. +.P +If an application wants to store the texture at a certain +resolution or in a certain format, it can request the resolution +and format with __internalformat. The GL will choose an internal +representation that closely approximates that requested by __internalformat, but +it may not match exactly. +(The representations specified by _const(LUMINANCE), +_const(LUMINANCE_ALPHA), _const(RGB), +and _const(RGBA) must match exactly. The numeric values 1, 2, 3, and 4 +may also be used to specify the above representations.) +.P +Use the _const(PROXY_TEXTURE_3D) target to try out a resolution and +format. The implementation will +update and recompute its best match for the requested storage resolution +and format. To then query this state, call +_cmnd(GetTexLevelParameter). +If the texture cannot be accommodated, texture state is set to 0. +.P +A one-component texture image uses only the red component of the RGBA +color extracted from __pixels. +A two-component image uses the R and A values. +A three-component image uses the R, G, and B values. +A four-component image uses all of the RGBA components. +.SH NOTES +Texturing has no effect in color index mode. +.P +The texture image can be represented by the same data formats +as the pixels in a _cmnd(DrawPixels) command, +except that _const(STENCIL_INDEX) and _const(DEPTH_COMPONENT) +cannot be used. +_cmnd(PixelStore) and _cmnd(PixelTransfer) modes affect texture images +in exactly the way they affect _cmnd(DrawPixels). +.P +_C_ _const(ABGR_EXT) is +_C_ part of the _extname(EXT_abgr) extension, not part of +_C_ the core GL command set. If _extstring(EXT_abgr) is included +_C_ in the string returned by _cmnd(GetString), when called with +_C_ argument _const(EXTENSIONS), extension _extname(EXT_abgr) is +_C_ supported by the GL. +.P +_cmnd is available only if the GL version is 1.2 or greater. +.P +Internal formats other than 1, 2, 3, or 4 may be used only if the GL +version is 1.1 or greater. +.P +__pixels may be a null pointer. +In this case texture memory is +allocated to accommodate a texture of width __width, height __height, +and depth __depth. +You can then download subtextures to initialize this +texture memory. +The image is undefined if the user tries to apply +an uninitialized portion of the texture image to a primitive. +.P +Formats _const(BGR), and _const(BGRA) and types +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) are available only if the GL version +is 1.2 or greater. +.P +When the _arbstring(multitexture) extension is supported, _cmnd +specifies the three-dimensional texture for the current texture unit, +specified with _cmnd(ActiveTextureARB). +.P +If the _arbstring(imaging) extension is supported, RGBA elements may +also be processed by the imaging pipeline. The following stages may be +applied to an RGBA color before color component clamping to the range +[0,\ 1]: +.TP 3 +1. Color component replacement by the color table specified for +_const(COLOR_TABLE), if enabled. See _cmnd(ColorTable). +.TP +2. Color component replacement by the color table specified for +_const(POST_CONVOLUTION_COLOR_TABLE), if enabled. See _cmnd(ColorTable). +.TP +3. Transformation by the color matrix. See _cmnd(MatrixMode). +.TP +4. RGBA components may be multiplied by _const(POST_COLOR_MATRIX_c_SCALE), +and added to _const(POST_COLOR_MATRIX_c_BIAS), if enabled. See +_cmnd(PixelTransfer). +.TP +5. Color component replacement by the color table specified for +_const(POST_COLOR_MATRIX_COLOR_TABLE), if enabled. See +_cmnd(ColorTable). +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not _const(TEXTURE_3D) +or _const(PROXY_TEXTURE_3D). +.P +_const(INVALID_ENUM) is generated if __format is not an accepted +format constant. +Format constants other than _const(STENCIL_INDEX) and _const(DEPTH_COMPONENT) +are accepted. +.P +_const(INVALID_ENUM) is generated if __type is not a type constant. +.P +_const(INVALID_ENUM) is generated if __type is _const(BITMAP) and +__format is not _const(COLOR_INDEX). +.P +_const(INVALID_VALUE) is generated if __level is less than 0. +.P +.P +_const(INVALID_VALUE) may be generated if __level is greater than $log +sub 2$\f2max\fP, +where \f2max\fP is the returned value of _const(MAX_TEXTURE_SIZE). +.P +_const(INVALID_VALUE) is generated if __internalformat is not 1, 2, 3, 4, or one of the +accepted resolution and format symbolic constants. +.P +_const(INVALID_VALUE) is generated if __width, __height, or __depth +is less than 0 or greater than 2 + _const(MAX_TEXTURE_SIZE), +or if either cannot be represented as $2 sup k ~+~ 2( __eqnborder )$ for some +integer value of \f2k\fP. +.P +_const(INVALID_VALUE) is generated if __border is not 0 or 1. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if _param9 is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and _param8 is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if _param9 is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and _param8 is neither _const(RGBA) nor _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(GetTexImage) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_3D) +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawPixels), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D), +_cmnd(TexParameter) + + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/texparameter.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/texparameter.gl:1.3 --- /dev/null Fri Jan 18 15:22:06 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/texparameter.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,336 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(TexParameter, set texture parameters) +_names(TexParameter,[fi]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the target texture, +which must be either _const(TEXTURE_1D), _const(TEXTURE_2D), or +_const(TEXTURE_3D). +_phead(_param2) +Specifies the symbolic name of a single-valued texture parameter. +_param2 can be one of the following: +_const(TEXTURE_MIN_FILTER), +_const(TEXTURE_MAG_FILTER), +_const(TEXTURE_MIN_LOD), +_const(TEXTURE_MAX_LOD), +_const(TEXTURE_BASE_LEVEL), +_const(TEXTURE_MAX_LEVEL), +_const(TEXTURE_WRAP_S), +_const(TEXTURE_WRAP_T), +_const(TEXTURE_WRAP_R), or +_const(TEXTURE_PRIORITY). +_phead(_param3) +Specifies the value of _param2. +_names(TexParameter,[fi]v) +.SH PARAMETERS +_phead(_param1) +Specifies the target texture, +which must be either _const(TEXTURE_1D), _const(TEXTURE_2D) or +_const(TEXTURE_3D). +_phead(_param2) +Specifies the symbolic name of a texture parameter. +_param2 can be one of the following: +_const(TEXTURE_MIN_FILTER), +_const(TEXTURE_MAG_FILTER), +_const(TEXTURE_MIN_LOD), +_const(TEXTURE_MAX_LOD), +_const(TEXTURE_BASE_LEVEL), +_const(TEXTURE_MAX_LEVEL), +_const(TEXTURE_WRAP_S), +_const(TEXTURE_WRAP_T), +_const(TEXTURE_WRAP_R), +_const(TEXTURE_BORDER_COLOR), or +_const(TEXTURE_PRIORITY). +_phead(_param3) +Specifies a pointer to an array where the value or values of _param2 +are stored. +.SH DESCRIPTION +Texture mapping is a technique that applies an image onto an object's surface +as if the image were a decal or cellophane shrink-wrap. +The image is created in texture space, +with an ($s$, $t$) coordinate system. +A texture is a one- or two-dimensional image and a set of parameters +that determine how samples are derived from the image. +.P +_cmnd assigns the value or values in _param3 to the texture parameter +specified as _param2. +_param1 defines the target texture, +either _const(TEXTURE_1D), _const(TEXTURE_2D), or _const(TEXTURE_3D). +The following symbols are accepted in _param2: +.TP 10 +_const(TEXTURE_MIN_FILTER) +The texture minifying function is used whenever the pixel being textured +maps to an area greater than one texture element. +There are six defined minifying functions. +Two of them use the nearest one or nearest four texture elements +to compute the texture value. +The other four use mipmaps. +.IP +A mipmap is an ordered set of arrays representing the same image +at progressively lower resolutions. +If the texture has dimensions $2 sup n ~times~ 2 sup m$, there are +$ bold max ( n, m ) + 1 $ mipmaps. +The first mipmap is the original texture, +with dimensions $2 sup n ~times~ 2 sup m$. +Each subsequent mipmap has dimensions $2 sup { k - 1 } ~times~ 2 sup { l - 1 }$, +where $2 sup k ~times~ 2 sup l$ are the dimensions of the previous mipmap, +until either $k ~=~ 0$ or $l~=~0$. +At that point, +subsequent mipmaps have dimension $ 1 ~times~ 2 sup { l - 1 } $ +or $ 2 sup { k - 1} ~times~ 1 $ until the final mipmap, +which has dimension $1 ~times~ 1$. +To define the mipmaps, call _cmnd(TexImage1D), _cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(CopyTexImage1D), or _cmnd(CopyTexImage2D) +with the \f2level\fP argument indicating the order of the mipmaps. +Level 0 is the original texture; +level $ bold max ( n, m ) $ is the final $1 ~times~ 1$ mipmap. +.IP +_param3 supplies a function for minifying the texture as one of the following: +.RS 10 +.TP 10 +_const(NEAREST) +Returns the value of the texture element that is nearest +(in Manhattan distance) +to the center of the pixel being textured. +.TP +_const(LINEAR) +Returns the weighted average of the four texture elements +that are closest to the center of the pixel being textured. +These can include border texture elements, +depending on the values of _const(TEXTURE_WRAP_S) and _const(TEXTURE_WRAP_T), +and on the exact mapping. +.TP +_const(NEAREST_MIPMAP_NEAREST) +Chooses the mipmap that most closely matches the size of the pixel +being textured and uses the _const(NEAREST) criterion +(the texture element nearest to the center of the pixel) +to produce a texture value. +.TP +_const(LINEAR_MIPMAP_NEAREST) +Chooses the mipmap that most closely matches the size of the pixel +being textured and uses the _const(LINEAR) criterion +(a weighted average of the four texture elements that are closest +to the center of the pixel) +to produce a texture value. +.TP +_const(NEAREST_MIPMAP_LINEAR) +Chooses the two mipmaps that most closely match the size of the pixel +being textured and uses the _const(NEAREST) criterion +(the texture element nearest to the center of the pixel) +to produce a texture value from each mipmap. +The final texture value is a weighted average of those two values. +.TP +_const(LINEAR_MIPMAP_LINEAR) +Chooses the two mipmaps that most closely match the size of the pixel +being textured and uses the _const(LINEAR) criterion +(a weighted average of the four texture elements that are closest +to the center of the pixel) +to produce a texture value from each mipmap. +The final texture value is a weighted average of those two values. +.RE +.IP +As more texture elements are sampled in the minification process, +fewer aliasing artifacts will be apparent. +While the _const(NEAREST) and _const(LINEAR) minification functions can be +faster than the other four, +they sample only one or four texture elements to determine the texture value +of the pixel being rendered and can produce moire patterns +or ragged transitions. +The initial value of _const(TEXTURE_MIN_FILTER) is +_const(NEAREST_MIPMAP_LINEAR). +.TP 10 +_const(TEXTURE_MAG_FILTER) +The texture magnification function is used when the pixel being textured +maps to an area less than or equal to one texture element. +It sets the texture magnification function to either _const(NEAREST) +or _const(LINEAR) (see below). _const(NEAREST) is generally faster +than _const(LINEAR), +but it can produce textured images with sharper edges +because the transition between texture elements is not as smooth. +The initial value of _const(TEXTURE_MAG_FILTER) is _const(LINEAR). +.RS 10 +.TP 10 +_const(NEAREST) +Returns the value of the texture element that is nearest +(in Manhattan distance) +to the center of the pixel being textured. +.TP +_const(LINEAR) +Returns the weighted average of the four texture elements +that are closest to the center of the pixel being textured. +These can include border texture elements, +depending on the values of _const(TEXTURE_WRAP_S) and _const(TEXTURE_WRAP_T), +and on the exact mapping. +.P +.RE +.P +.TP 10 +_const(TEXTURE_MIN_LOD) +Sets the minimum level-of-detail parameter. This floating-point value +limits the selection of highest resolution mipmap (lowest mipmap +level). The initial value is -1000. +.P +.TP 10 +_const(TEXTURE_MAX_LOD) +Sets the maximum level-of-detail parameter. This floating-point value +limits the selection of the lowest resolution mipmap (highest mipmap +level). The initial value is 1000. +.P +.TP 10 +_const(TEXTURE_BASE_LEVEL) +Specifies the index of the lowest defined mipmap level. This is an +integer value. The initial value is 0. +.P +.TP 10 +_const(TEXTURE_MAX_LEVEL) +Sets the index of the highest defined mipmap level. This is an integer +value. The initial value is 1000. +.P +.TP 10 +_const(TEXTURE_WRAP_S) +Sets the wrap parameter for texture coordinate $s$ to either +_const(CLAMP), _const(CLAMP_TO_EDGE), or _const(REPEAT). +_const(CLAMP) causes $s$ coordinates to be clamped to the range [0,1] +and is useful for preventing wrapping artifacts when mapping +a single image onto an object. +_const(CLAMP_TO_EDGE) causes $s$ coordinates to be clamped to the range +$left [ {1 over 2N}, 1 - {1 over 2N} right ]$, where $N$ is the size +of the texture in the direction of clamping. +_const(REPEAT) causes the integer part of the $s$ coordinate to be ignored; +the GL uses only the fractional part, +thereby creating a repeating pattern. +Border texture elements are accessed only if wrapping is set to _const(CLAMP). +Initially, _const(TEXTURE_WRAP_S) is set to _const(REPEAT). +.P +.TP 10 +_const(TEXTURE_WRAP_T) +Sets the wrap parameter for texture coordinate $t$ to either +_const(CLAMP), _const(CLAMP_TO_EDGE), or _const(REPEAT). +See the discussion under _const(TEXTURE_WRAP_S). +Initially, _const(TEXTURE_WRAP_T) is set to _const(REPEAT). +.TP 10 +_const(TEXTURE_WRAP_R) +Sets the wrap parameter for texture coordinate $r$ to either +_const(CLAMP), _const(CLAMP_TO_EDGE), or _const(REPEAT). +See the discussion under _const(TEXTURE_WRAP_S). +Initially, _const(TEXTURE_WRAP_R) is set to _const(REPEAT). +.TP +_const(TEXTURE_BORDER_COLOR) +Sets a border color. +_param3 contains four values that comprise the RGBA color +of the texture border. +Integer color components are interpreted linearly such that the most +positive integer maps to 1.0, +and the most negative integer maps to -1.0. +The values are clamped to the range [0,1] when they are specified. +Initially, the border color is (0, 0, 0, 0). +.TP 10 +_const(TEXTURE_PRIORITY) +Specifies the texture residence priority of the currently bound texture. +Permissible values are in the range [0,\ 1]. +See _cmnd(PrioritizeTextures) and _cmnd(BindTexture) for more information. +.SH NOTES +_const(TEXTURE_3D), _const(TEXTURE_MIN_LOD), _const(TEXTURE_MAX_LOD), +_const(TEXTURE_BASE_LEVEL), and _const(TEXTURE_MAX_LEVEL) are only +available if the GL version is 1.2 or greater. +.P +Suppose that a program has enabled texturing +(by calling _cmnd(Enable) +with argument _const(TEXTURE_1D), _const(TEXTURE_2D), or _const(TEXTURE_3D)) +and has set _const(TEXTURE_MIN_FILTER) to one of the functions +that requires a mipmap. +If either the dimensions of the texture images currently defined +(with previous calls to _cmnd(TexImage1D), _cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(CopyTexImage1D), or _cmnd(CopyTexImage2D)) +do not follow the proper sequence for mipmaps +(described above), +or there are fewer texture images defined than are needed, +or the set of texture images have differing numbers of texture components, +then it is as if texture mapping were disabled. +.P +Linear filtering accesses the four nearest texture elements only in 2D +textures. +In 1D textures, linear filtering accesses the two nearest texture +elements. +.P +When the _arbstring(multitexture) extension is supported, _cmnd +specifies the texture parameters for the active texture unit, specified +by calling _cmnd(ActiveTextureARB). +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 or _param2 is not +one of the accepted defined values. +.P +_const(INVALID_ENUM) is generated if _param3 should have a defined +constant value (based on the value of _param2) and does not. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.SH ASSOCIATED GETS +_cmnd(GetTexParameter) +.br +_cmnd(GetTexLevelParameter) +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(BindTexture), +_cmnd(CopyPixels), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawPixels), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(PrioritizeTextures), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D) + + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/texsubimage1d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/texsubimage1d.gl:1.3 --- /dev/null Fri Jan 18 15:22:07 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/texsubimage1d.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,213 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(TexSubImage1D,specify a one-dimensional texture subimage) +_names(TexSubImage1D) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the target texture. +Must be _const(TEXTURE_1D). +_phead(_param2) +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +_phead(_param3) +Specifies a texel offset in the x direction within the texture array. +_phead(_param4) +Specifies the width of the texture subimage. +_phead(_param5) +Specifies the format of the pixel data. +The following symbolic values are accepted: +_const(COLOR_INDEX), +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_C_ _const(ABGR_EXT), +_const(LUMINANCE), and +_const(LUMINANCE_ALPHA). +_phead(_param6) +Specifies the data type of the pixel data. +The following symbolic values are accepted: +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV). +_phead(_param7) +Specifies a pointer to the image data in memory. +.SH DESCRIPTION +Texturing maps a portion of a specified texture image +onto each graphical primitive for which texturing is enabled. +To enable or disable one-dimensional texturing, call _cmnd(Enable) +and _cmnd(Disable) with argument _const(TEXTURE_1D). +.P +_cmnd redefines a contiguous subregion of an existing one-dimensional +texture image. +The texels referenced by _param7 replace the portion of the +existing texture array with x indices _param3 and +$_eqnparam3~+~_eqnparam4~-~1$,inclusive. +This region may not include any texels outside the range of the +texture array as it was originally specified. +It is not an error to specify a subtexture with width of 0, but +such a specification has no effect. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +Texturing has no effect in color index mode. +.P +_cmnd(PixelStore) and _cmnd(PixelTransfer) modes affect texture images +in exactly the way they affect _cmnd(DrawPixels). +.P +Formats _const(BGR), and _const(BGRA) and types +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) are available only if the GL version +is 1.2 or greater. +.P +When the _arbstring(multitexture) extension is supported, _cmnd +specifies a one-dimensional sub texture for the current texture unit, +specified with _cmnd(ActiveTextureARB). +.P +When the _arbstring(imaging) extension is supported, the RGBA components +specified in _param7 may be processed by the imaging pipeline. See +_cmnd(TexImage1D) for specific details. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not one of the +allowable values. +.P +_const(INVALID_OPERATION) is generated if the texture array has not +been defined by a previous _cmnd(TexImage1D) operation. +.P +_const(INVALID_VALUE) is generated if _param2 is less than 0. +.P +_const(INVALID_VALUE) may be generated if _param2 is greater +than $log sub 2$\f2max\fP, +where \f2max\fP is the returned value of _const(MAX_TEXTURE_SIZE). +.P +_const(INVALID_VALUE) is generated if $_eqnparam3 ~<~ ~-b$, +or if $(_eqnparam3~+~_eqnparam4) ~>~ (w ~-~ b)$, +where $w$ is the _const(TEXTURE_WIDTH), and $b$ is +the width of the _const(TEXTURE_BORDER) +of the texture image being modified. +Note that $w$ includes twice the border width. +.P +_const(INVALID_VALUE) is generated if _param4 is less than 0. +.P +_const(INVALID_ENUM) is generated if _param5 is not an accepted +format constant. +.P +_const(INVALID_ENUM) is generated if _param6 is not a type constant. +.P +_const(INVALID_ENUM) is generated if _param6 is _const(BITMAP) and +_param5 is not _const(COLOR_INDEX). +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if _param6 is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and _param5 is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if _param6 is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and _param5 is neither _const(RGBA) nor _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(GetTexImage) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_1D) +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawPixels), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexParameter), +_cmnd(TexSubImage2D), +_cmnd(TexSubImage3D) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/texsubimage2d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/texsubimage2d.gl:1.3 --- /dev/null Fri Jan 18 15:22:07 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/texsubimage2d.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,218 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(TexSubImage2D,specify a two-dimensional texture subimage) +_names(TexSubImage2D) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the target texture. +Must be _const(TEXTURE_2D). +_phead(_param2) +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +_phead(_param3) +Specifies a texel offset in the x direction within the texture array. +_phead(_param4) +Specifies a texel offset in the y direction within the texture array. +_phead(_param5) +Specifies the width of the texture subimage. +_phead(_param6) +Specifies the height of the texture subimage. +_phead(_param7) +Specifies the format of the pixel data. +The following symbolic values are accepted: +_const(COLOR_INDEX), +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_C_ _const(ABGR_EXT), +_const(LUMINANCE), and +_const(LUMINANCE_ALPHA). +_phead(_param8) +Specifies the data type of the pixel data. +The following symbolic values are accepted: +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV). +_phead(_param9) +Specifies a pointer to the image data in memory. +.SH DESCRIPTION +Texturing maps a portion of a specified texture image +onto each graphical primitive for which texturing is enabled. +To enable and disable two-dimensional texturing, call _cmnd(Enable) +and _cmnd(Disable) with argument _const(TEXTURE_2D). +.P +_cmnd redefines a contiguous subregion of an existing two-dimensional +texture image. +The texels referenced by _param9 replace the portion of the +existing texture array with x indices _param3 and $_eqnparam3~+~_eqnparam5~-~1$, +inclusive, +and y indices _param4 and $_eqnparam4~+~_eqnparam6~-~1$, inclusive. +This region may not include any texels outside the range of the +texture array as it was originally specified. +It is not an error to specify a subtexture with zero width or height, but +such a specification has no effect. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +Texturing has no effect in color index mode. +.P +_cmnd(PixelStore) and _cmnd(PixelTransfer) modes affect texture images +in exactly the way they affect _cmnd(DrawPixels). +.P +Formats _const(BGR), and _const(BGRA) and types +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) are available only if the GL version +is 1.2 or greater. +.P +When the _arbstring(multitexture) extension is supported, _cmnd +specifies a two-dimensional sub texture for the current texture unit, +specified with _cmnd(ActiveTextureARB). +.P +When the _arbstring(imaging) extension is supported, the RGBA components +specified in _param9 may be processed by the imaging pipeline. See +_cmnd(TexImage1D) for specific details. +.SH ERRORS +_const(INVALID_ENUM) is generated if _param1 is not _const(TEXTURE_2D). +.P +_const(INVALID_OPERATION) is generated if the texture array has not +been defined by a previous _cmnd(TexImage2D) operation. +.P +_const(INVALID_VALUE) is generated if _param2 is less than 0. +.P +_const(INVALID_VALUE) may be generated if _param2 is greater +than $log sub 2$\f2max\fP, +where \f2max\fP is the returned value of _const(MAX_TEXTURE_SIZE). +.P +_const(INVALID_VALUE) is generated if $_eqnparam3 ~<~ ~-b$, +$(_eqnparam3~+~_eqnparam5) ~>~ (w~-~b)$, +$_eqnparam4 ~<~ ~-b$, or $(_eqnparam4 ~+~ _eqnparam6) ~>~ (h~-~b)$, +where $w$ is the _const(TEXTURE_WIDTH), +$h$ is the _const(TEXTURE_HEIGHT), and $b$ is the border width +of the texture image being modified. +Note that $w$ and $h$ include twice the border width. +.P +_const(INVALID_VALUE) is generated if _param5 or _param6 is less than 0. +.P +_const(INVALID_ENUM) is generated if _param7 is not an accepted +format constant. +.P +_const(INVALID_ENUM) is generated if _param8 is not a type constant. +.P +_const(INVALID_ENUM) is generated if _param8 is _const(BITMAP) and +_param7 is not _const(COLOR_INDEX). +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if _param8 is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and _param7 is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if _param8 is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and _param7 is neither _const(RGBA) nor _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(GetTexImage) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_2D) +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawPixels), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage3D), +_cmnd(TexParameter) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/texsubimage3d.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/texsubimage3d.gl:1.3 --- /dev/null Fri Jan 18 15:22:07 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/texsubimage3d.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,242 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(TexSubImage3D,specify a three-dimensional texture subimage) +_names(TexSubImage3D) +.EQ +delim $$ +.EN +_define(@<__target>@,@<_param1>@)_C_ +_define(@<__level>@,@<_param2>@)_C_ +_define(@<__xoffset>@,@<_param3>@)_C_ +_define(@<__eqnxoffset>@,@<_eqnparam3>@)_C_ +_define(@<__yoffset>@,@<_param4>@)_C_ +_define(@<__eqnyoffset>@,@<_eqnparam4>@)_C_ +_define(@<__zoffset>@,@<_param5>@)_C_ +_define(@<__eqnzoffset>@,@<_eqnparam5>@)_C_ +_define(@<__width>@,@<_param6>@)_C_ +_define(@<__eqnwidth>@,@<_eqnparam6>@)_C_ +_define(@<__height>@,@<_param7>@)_C_ +_define(@<__eqnheight>@,@<_eqnparam7>@)_C_ +_define(@<__depth>@,@<_param8>@)_C_ +_define(@<__eqndepth>@,@<_eqnparam8>@)_C_ +_define(@<__format>@,@<_param9>@)_C_ +_define(@<__type>@,@<_param10>@)_C_ +_define(@<__pixels>@,@<_param11>@)_C_ +.SH PARAMETERS +_phead(__target) +Specifies the target texture. +Must be _const(TEXTURE_3D). +_phead(__level) +Specifies the level-of-detail number. +Level 0 is the base image level. +Level \f2n\fP is the \f2n\fPth mipmap reduction image. +_phead(__xoffset) +Specifies a texel offset in the x direction within the texture array. +_phead(__yoffset) +Specifies a texel offset in the y direction within the texture array. +_phead(__zoffset) +Specifies a texel offset in the z direction within the texture array. +_phead(__width) +Specifies the width of the texture subimage. +_phead(__height) +Specifies the height of the texture subimage. +_phead(__depth) +Specifies the depth of the texture subimage. +_phead(__format) +Specifies the format of the pixel data. +The following symbolic values are accepted: +_const(COLOR_INDEX), +_const(RED), +_const(GREEN), +_const(BLUE), +_const(ALPHA), +_const(RGB), +_const(BGR), +_const(RGBA), +_const(BGRA), +_C_ _const(ABGR_EXT), +_const(LUMINANCE), and +_const(LUMINANCE_ALPHA). +_phead(__type) +Specifies the data type of the pixel data. +The following symbolic values are accepted: +_const(UNSIGNED_BYTE), +_const(BYTE), +_const(BITMAP), +_const(UNSIGNED_SHORT), +_const(SHORT), +_const(UNSIGNED_INT), +_const(INT), +_const(FLOAT), +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV). +_phead(__pixels) +Specifies a pointer to the image data in memory. +.SH DESCRIPTION +Texturing maps a portion of a specified texture image +onto each graphical primitive for which texturing is enabled. +To enable and disable three-dimensional texturing, call _cmnd(Enable) +and _cmnd(Disable) with argument _const(TEXTURE_3D). +.P +_cmnd redefines a contiguous subregion of an existing three-dimensional +texture image. +The texels referenced by __pixels replace the portion of the +existing texture array with x indices __xoffset and +$__eqnxoffset ~+~ __eqnwidth ~-~ 1$, inclusive, +y indices __yoffset and $__eqnyoffset ~+~ __eqnheight ~-~ 1$, inclusive, +and z indices __zoffset and $__eqnzoffset ~+~ __eqndepth ~-~ 1$, inclusive. +This region may not include any texels outside the range of the +texture array as it was originally specified. +It is not an error to specify a subtexture with zero width, height, or +depth but such a specification has no effect. +.SH NOTES +_cmnd is available only if the GL version is 1.2 or greater. +.P +Texturing has no effect in color index mode. +.P +_cmnd(PixelStore) and _cmnd(PixelTransfer) modes affect texture images +in exactly the way they affect _cmnd(DrawPixels). +.P +Formats _const(BGR), and _const(BGRA) and types +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), +_const(UNSIGNED_SHORT_5_6_5_REV), +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), and +_const(UNSIGNED_INT_2_10_10_10_REV) are available only if the GL version +is 1.2 or greater. +.P +When the _arbstring(multitexture) extension is supported, _cmnd +specifies a three-dimensional sub texture for the current texture unit, +specified with _cmnd(ActiveTextureARB). +.P +When the _arbstring(imaging) extension is supported, the RGBA components +specified in __pixels may be processed by the imaging pipeline. See +_cmnd(TexImage3D) for specific details. +.SH ERRORS +_const(INVALID_ENUM) is generated if __target is not _const(TEXTURE_3D). +.P +_const(INVALID_OPERATION) is generated if the texture array has not +been defined by a previous _cmnd(TexImage3D) operation. +.P +_const(INVALID_VALUE) is generated if __level is less than 0. +.P +_const(INVALID_VALUE) may be generated if __level is greater +than $log sub 2$\f2max\fP, +where \f2max\fP is the returned value of _const(MAX_TEXTURE_SIZE). +.P +_const(INVALID_VALUE) is generated if $__eqnxoffset ~<~ ~-b$, +$(__eqnxoffset ~+~ __eqnwidth) ~>~ (w~-~b)$, +$__eqnyoffset ~<~ ~-b$, or $(__eqnyoffset ~+~ __eqnheight) ~>~ (h~-~b)$, +or $__eqnzoffset ~<~ ~-b$, or $(__eqnzoffset ~+~ __eqndepth) ~>~ (d~-~b)$, +where $w$ is the _const(TEXTURE_WIDTH), +$h$ is the _const(TEXTURE_HEIGHT), $d$ is the _const(TEXTURE_DEPTH) +and $b$ is the border width of the texture image being modified. +Note that $w$, $h$, and $d$ include twice the border width. +.P +_const(INVALID_VALUE) is generated if __width, __height, or __depth +is less than 0. +.P +_const(INVALID_ENUM) is generated if __format is not an accepted +format constant. +.P +_const(INVALID_ENUM) is generated if __type is not a type constant. +.P +_const(INVALID_ENUM) is generated if __type is _const(BITMAP) and +__format is not _const(COLOR_INDEX). +.P +_const(INVALID_OPERATION) is generated if _cmnd is executed +between the execution of _cmnd(Begin) and the corresponding +execution of _cmnd(End). +.P +_const(INVALID_OPERATION) is generated if __type is one of +_const(UNSIGNED_BYTE_3_3_2), +_const(UNSIGNED_BYTE_2_3_3_REV), +_const(UNSIGNED_SHORT_5_6_5), or +_const(UNSIGNED_SHORT_5_6_5_REV) +and __format is not _const(RGB). +.P +_const(INVALID_OPERATION) is generated if __type is one of +_const(UNSIGNED_SHORT_4_4_4_4), +_const(UNSIGNED_SHORT_4_4_4_4_REV), +_const(UNSIGNED_SHORT_5_5_5_1), +_const(UNSIGNED_SHORT_1_5_5_5_REV), +_const(UNSIGNED_INT_8_8_8_8), +_const(UNSIGNED_INT_8_8_8_8_REV), +_const(UNSIGNED_INT_10_10_10_2), or +_const(UNSIGNED_INT_2_10_10_10_REV) +and __format is neither _const(RGBA) nor _const(BGRA). +.SH ASSOCIATED GETS +_cmnd(GetTexImage) +.br +_cmnd(IsEnabled) with argument _const(TEXTURE_3D) +.SH SEE ALSO +_cmnd(ActiveTextureARB), +_cmnd(CopyTexImage1D), +_cmnd(CopyTexImage2D), +_cmnd(CopyTexSubImage1D), +_cmnd(CopyTexSubImage2D), +_cmnd(CopyTexSubImage3D), +_cmnd(DrawPixels), +_cmnd(PixelStore), +_cmnd(PixelTransfer), +_cmnd(TexEnv), +_cmnd(TexGen), +_cmnd(TexImage1D), +_cmnd(TexImage2D), +_cmnd(TexImage3D), +_cmnd(TexSubImage1D), +_cmnd(TexSubImage2D), +_cmnd(TexParameter) + Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/translate.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/translate.gl:1.3 --- /dev/null Fri Jan 18 15:22:07 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/translate.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,95 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Translate,multiply the current matrix by a translation matrix) +_names(Translate,[df]) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1 _param2 _param3) +Specify the \f2x\fP, \f2y\fP, and \f2z\fP coordinates of a translation vector. +.SH DESCRIPTION +_cmnd produces a translation by +$(_eqnparam1,_eqnparam2,_eqnparam3)$. +The current matrix +(see +.br +_cmnd(MatrixMode)) +is multiplied by this translation matrix, +with the product replacing the current matrix, as if +_cmnd(MultMatrix) were called with the following matrix +for its argument: +.sp +.ce +.EQ +left ( ~ down 20 matrix { + ccol { 1~~ above 0~~ above 0~~ above 0~~ } + ccol { 0~~ above 1~~ above 0~~ above 0~~ } + ccol { 0~~ above 0~~ above 1~~ above 0~~ } + ccol { _eqnparam1~ above _eqnparam2~ above _eqnparam3~ above 1} +} ~~right ) +.EN +.sp +.RE +If the matrix mode is either _const(MODELVIEW) or _const(PROJECTION), +all objects drawn after a call to _cmnd are translated. +.P +Use _cmnd(PushMatrix) and +_cmnd(PopMatrix) to save and restore +the untranslated coordinate system. +.SH ERRORS +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.bp +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(MATRIX_MODE) +.br +_cmnd(Get) with argument _const(COLOR_MATRIX) +.br +_cmnd(Get) with argument _const(MODELVIEW_MATRIX) +.br +_cmnd(Get) with argument _const(PROJECTION_MATRIX) +.br +_cmnd(Get) with argument _const(TEXTURE_MATRIX) +.SH SEE ALSO +_cmnd(MatrixMode), +_cmnd(MultMatrix), +_cmnd(PushMatrix), +_cmnd(Rotate), +_cmnd(Scale) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/vertex.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/vertex.gl:1.3 --- /dev/null Fri Jan 18 15:22:07 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/vertex.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,77 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Vertex,specify a vertex) +_names(Vertex,[234]u*[sifdb]) +.SH PARAMETERS +_phead(_param1 _param2 _param3 _param4) +Specify \f2x\fP, \f2y\fP, \f2z\fP, and \f2w\fP coordinates of a vertex. +Not all parameters are present in all forms of the command. +_names(Vertex,[234]u*[sifdb]v) +.SH PARAMETERS +_phead(_param1) +Specifies a pointer to an array of two, three, or four elements. +The elements of a two-element array are \f2x\fP and \f2y\fP; +of a three-element array, \f2x\fP, \f2y\fP, and \f2z\fP; +and of a four-element array, \f2x\fP, \f2y\fP, \f2z\fP, and \f2w\fP. +.SH DESCRIPTION +_cmnd commands are used within _cmnd(Begin)/_cmnd(End) pairs to specify +point, line, and polygon vertices. +The current color, +normal, +and texture coordinates are associated with the vertex when _cmnd is called. +.P +When only \f2x\fP and \f2y\fP are specified, +\f2z\fP defaults to 0 and \f2w\fP defaults to 1. +When \f2x, y,\fP and \f2z\fP are specified, +\f2w\fP defaults to 1. +.SH NOTES +Invoking _cmnd outside of a _cmnd(Begin)/_cmnd(End) pair +results in undefined behavior. +.SH SEE ALSO +_cmnd(Begin), +_cmnd(CallList), +_cmnd(Color), +_cmnd(EdgeFlag), +_cmnd(EvalCoord), +_cmnd(Index), +_cmnd(Material), +.br +_cmnd(Normal), +_cmnd(Rect), +_cmnd(TexCoord), +_cmnd(VertexPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/vertexpointer.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/vertexpointer.gl:1.3 --- /dev/null Fri Jan 18 15:22:07 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/vertexpointer.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,144 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_C_ A real line follows. +_define(_filters,tbl|eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_C_ Use GL not OpenGL +_C_ Don't change the ordering of the main headers. +_C_ C specification (or fortran) is handled automatically +_C_ .TH is automatically added to the top of this file. +_C_ Below, use current tense, active do not capitalize the first word and dont +_C_ use a period. +_C_ the function name must appear in (APIFILE) (usually gl.h) as set in +_C_ Makefile. +_header(VertexPointer,define an array of vertex data) +_names(VertexPointer) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1) +Specifies the number of coordinates per vertex; must be 2, 3, or +4. The initial value is 4. +_phead(_param2) +Specifies the data type of each coordinate in the array. +Symbolic constants +_const(SHORT), +_const(INT), +_const(FLOAT), +and _const(DOUBLE) +are accepted. The initial value is _const(FLOAT). +_phead(_param3) +Specifies the byte offset between consecutive +vertices. If _param3 is 0, the vertices are understood to be tightly packed in +the array. The initial value +is 0. +_phead(_param4) +Specifies a pointer to the first coordinate of the first vertex in the +array. The initial value is 0. +.SH DESCRIPTION +_cmnd specifies the location and data format of an array of vertex coordinates +to use when rendering. +_param1 specifies the number of coordinates per vertex and +_param2 the data type of +the coordinates. _param3 specifies the byte stride from one +vertex to the next allowing vertices and attributes +to be packed into a single array or stored in separate arrays. +(Single-array storage may be more efficient on some implementations; +see _cmnd(InterleavedArrays).) +When a vertex array is +specified, _param1, _param2, _param3, and _param4 are saved as client-side +state. +.P +To enable and disable the vertex array, call _cmnd(EnableClientState) and +.br +_cmnd(DisableClientState) with the argument _const(VERTEX_ARRAY). If +enabled, the vertex array is used when +_cmnd(DrawArrays), _cmnd(DrawElements), or _cmnd(ArrayElement) is called. +.P +Use _cmnd(DrawArrays) to construct a sequence of primitives (all of +the same type) +from prespecified vertex and vertex attribute arrays. +Use _cmnd(ArrayElement) to specify primitives +by indexing vertices and vertex attributes and _cmnd(DrawElements) to +construct a sequence of primitives by indexing vertices and vertex attributes. +.SH NOTES +_cmnd is available only if the GL version is 1.1 or greater. +.P +The vertex array is initially disabled and isn't accessed when +_cmnd(ArrayElement), _cmnd(DrawElements) or _cmnd(DrawArrays) is called. +.P +Execution of _cmnd is not allowed between the execution of +_cmnd(Begin) and the corresponding execution of _cmnd(End), +but an error may or may not be generated. If no error is generated, +the operation is undefined. +.P +_cmnd is typically implemented on the client side. +.P +Vertex array parameters are client-side state and are therefore not +saved or restored by _cmnd(PushAttrib) and _cmnd(PopAttrib). +Use _cmnd(PushClientAttrib) and _cmnd(PopClientAttrib) instead. +.SH ERRORS +_const(INVALID_VALUE) is generated if _param1 is not 2, 3, or 4. +.P +_const(INVALID_ENUM) is generated if _param2 is is not an accepted value. +.P +_const(INVALID_VALUE) is generated if _param3 is negative. +.SH ASSOCIATED GETS +_cmnd(IsEnabled) with argument _const(VERTEX_ARRAY) +.br +_cmnd(Get) with argument _const(VERTEX_ARRAY_SIZE) +.br +_cmnd(Get) with argument _const(VERTEX_ARRAY_TYPE) +.br +_cmnd(Get) with argument _const(VERTEX_ARRAY_STRIDE) +.br +_cmnd(GetPointerv) with argument _const(VERTEX_ARRAY_POINTER) +.SH SEE ALSO +_cmnd(ArrayElement), +_cmnd(ColorPointer), +_cmnd(DrawArrays), +_cmnd(DrawElements), +_cmnd(DrawRangeElements), +_cmnd(EdgeFlagPointer), +_cmnd(Enable), +_cmnd(GetPointerv), +_cmnd(IndexPointer), +_cmnd(InterleavedArrays), +_cmnd(NormalPointer), +_cmnd(PopClientAttrib), +_cmnd(PushClientAttrib), +_cmnd(TexCoordPointer) Index: xc/extras/ogl-sample/main/doc/man/mangl/standard/viewport.gl diff -u /dev/null xc/extras/ogl-sample/main/doc/man/mangl/standard/viewport.gl:1.3 --- /dev/null Fri Jan 18 15:22:07 2002 +++ xc/extras/ogl-sample/main/doc/man/mangl/standard/viewport.gl Mon Jan 14 17:13:37 2002 @@ -0,0 +1,85 @@ +_C_ License Applicability. Except to the extent portions of this file are +_C_ made subject to an alternative license as permitted in the SGI Free +_C_ Software License B, Version 1.1 (the "License"), the contents of this +_C_ file are subject only to the provisions of the License. You may not use +_C_ this file except in compliance with the License. You may obtain a copy +_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +_C_ +_C_ http://oss.sgi.com/projects/FreeB +_C_ +_C_ Note that, as provided in the License, the Software is distributed on an +_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +_C_ +_C_ Original Code. The Original Code is: OpenGL Sample Implementation, +_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +_C_ Copyright in any portions created by third parties is as indicated +_C_ elsewhere herein. All Rights Reserved. +_C_ +_C_ Additional Notice Provisions: The application programming interfaces +_C_ established by SGI in conjunction with the Original Code are The +_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released +_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version +_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X +_C_ Window System(R) (Version 1.3), released October 19, 1998. This software +_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation +_C_ published by SGI, but has not been independently verified as being +_C_ compliant with the OpenGL(R) version 1.2.1 Specification. +_C_ +_C_ $Date$ $Revision$ +_C_ The first character in this file must be an '_'! +_C_ Anything on a line after _C_ is ignored +_define(_filters,eqn)_C_ +_C_ eqn is automatically replaced with neqn for nroff +_header(Viewport,set the viewport) +_names(Viewport) +.EQ +delim $$ +.EN +.SH PARAMETERS +_phead(_param1 _param2) +Specify the lower left corner of the viewport rectangle, +in pixels. The initial value is (0,0). +_phead(_param3 _param4) +Specify the width and height +of the viewport. +When a GL context is first attached to a window, +_param3 and _param4 are set to the dimensions of that window. +.SH DESCRIPTION +_cmnd specifies the affine transformation of $x$ and $y$ from +normalized device coordinates to window coordinates. +Let ($x sub nd$, $y sub nd$) be normalized device coordinates. +Then the window coordinates ($x sub w$, $y sub w$) are computed as follows: +.sp +.ce +.EQ +x sub w ~=~ ( x sub nd ~+~ 1 ) left ( _eqnparam3 over 2 right ) ~+~ _eqnparam1 +.EN +.sp +.ce +.EQ +y sub w ~=~ ( y sub nd ~+~ 1 ) left ( _eqnparam4 over 2 right ) ~+~ _eqnparam2 +.EN +.RE +.P +Viewport width and height are silently clamped +to a range that depends on the implementation. +To query this range, call _cmnd(Get) with argument +_const(MAX_VIEWPORT_DIMS). +.SH ERRORS +_const(INVALID_VALUE) is generated if either _param3 or _param4 is negative. +.P +_const(INVALID_OPERATION) is generated if _cmnd +is executed between the execution of _cmnd(Begin) +and the corresponding execution of _cmnd(End). +.bp +.SH ASSOCIATED GETS +_cmnd(Get) with argument _const(VIEWPORT) +.br +_cmnd(Get) with argument _const(MAX_VIEWPORT_DIMS) +.SH SEE ALSO +_cmnd(DepthRange) Index: xc/extras/ogl-sample/main/gfx/lib/glu/libtess/normal.c diff -u xc/extras/ogl-sample/main/gfx/lib/glu/libtess/normal.c:1.1.1.1 xc/extras/ogl-sample/main/gfx/lib/glu/libtess/normal.c:1.2 --- xc/extras/ogl-sample/main/gfx/lib/glu/libtess/normal.c:1.1.1.1 Mon Jan 15 16:49:16 2001 +++ xc/extras/ogl-sample/main/gfx/lib/glu/libtess/normal.c Sat Oct 27 23:32:22 2001 @@ -1,3 +1,4 @@ +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glu/libtess/normal.c,v 1.2 2001/10/28 03:32:22 tsi Exp $ */ /* ** License Applicability. Except to the extent portions of this file are ** made subject to an alternative license as permitted in the SGI Free @@ -198,7 +199,10 @@ void __gl_projectPolygon( GLUtesselator *tess ) { GLUvertex *v, *vHead = &tess->mesh->vHead; - GLdouble w, norm[3]; + GLdouble norm[3]; +#if defined(FOR_TRITE_TEST_PROGRAM) || defined(TRUE_PROJECT) + Gldouble w; +#endif GLdouble *sUnit, *tUnit; int i, computedNormal = FALSE; Index: xc/extras/ogl-sample/main/gfx/lib/glu/libtess/sweep.c diff -u xc/extras/ogl-sample/main/gfx/lib/glu/libtess/sweep.c:1.1.1.1 xc/extras/ogl-sample/main/gfx/lib/glu/libtess/sweep.c:1.2 --- xc/extras/ogl-sample/main/gfx/lib/glu/libtess/sweep.c:1.1.1.1 Mon Jan 15 16:49:23 2001 +++ xc/extras/ogl-sample/main/gfx/lib/glu/libtess/sweep.c Sat Oct 27 23:32:22 2001 @@ -38,6 +38,7 @@ ** $Date$ $Revision$ ** $Header: //depot/main/gfx/lib/glu/libtess/sweep.c#5 $ */ +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glu/libtess/sweep.c,v 1.2 2001/10/28 03:32:22 tsi Exp $ */ #include "gluos.h" #include <assert.h> @@ -249,10 +250,9 @@ return (n < 0); case GLU_TESS_WINDING_ABS_GEQ_TWO: return (n >= 2) || (n <= -2); + default: + return FALSE; } - /*LINTED*/ - assert( FALSE ); - /*NOTREACHED*/ } @@ -1184,7 +1184,8 @@ */ if( ! reg->sentinel ) { assert( reg->fixUpperEdge ); - assert( ++fixedEdges == 1 ); + assert( fixedEdges == 0 ); + ++fixedEdges; } assert( reg->windingNumber == 0 ); DeleteRegion( tess, reg ); Index: xc/extras/ogl-sample/main/gfx/lib/glu/libtess/tess.c diff -u xc/extras/ogl-sample/main/gfx/lib/glu/libtess/tess.c:1.2 xc/extras/ogl-sample/main/gfx/lib/glu/libtess/tess.c:1.3 --- xc/extras/ogl-sample/main/gfx/lib/glu/libtess/tess.c:1.2 Mon Apr 2 22:18:40 2001 +++ xc/extras/ogl-sample/main/gfx/lib/glu/libtess/tess.c Sat Oct 27 23:32:22 2001 @@ -36,7 +36,7 @@ ** Author: Eric Veach, July 1994. ** */ -/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glu/libtess/tess.c,v 1.2 2001/04/03 02:18:40 dawes Exp $ */ +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glu/libtess/tess.c,v 1.3 2001/10/28 03:32:22 tsi Exp $ */ #include "gluos.h" #include <stddef.h> @@ -168,6 +168,8 @@ CALL_ERROR_OR_ERROR_DATA( GLU_TESS_MISSING_BEGIN_CONTOUR ); gluTessBeginContour( tess ); break; + default: + break; } } else { switch( tess->state ) { @@ -179,6 +181,8 @@ CALL_ERROR_OR_ERROR_DATA( GLU_TESS_MISSING_END_POLYGON ); /* gluTessEndPolygon( tess ) is too much work! */ MakeDormant( tess ); + break; + default: break; } } Index: xc/extras/ogl-sample/main/gfx/lib/glu/libutil/mipmap.c diff -u xc/extras/ogl-sample/main/gfx/lib/glu/libutil/mipmap.c:1.3 xc/extras/ogl-sample/main/gfx/lib/glu/libutil/mipmap.c:1.4 --- xc/extras/ogl-sample/main/gfx/lib/glu/libutil/mipmap.c:1.3 Thu Feb 1 03:44:54 2001 +++ xc/extras/ogl-sample/main/gfx/lib/glu/libutil/mipmap.c Sat Oct 27 23:32:23 2001 @@ -34,7 +34,7 @@ ** $Date$ $Revision$ ** $Header: //depot/main/gfx/lib/glu/libutil/mipmap.c#15 $ */ -/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glu/libutil/mipmap.c,v 1.3 2001/02/01 08:44:54 alanh Exp $ */ +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glu/libutil/mipmap.c,v 1.4 2001/10/28 03:32:23 tsi Exp $ */ #include "gluos.h" #include <assert.h> @@ -574,7 +574,7 @@ GLint element_size, GLint ysize, GLint group_size, GLint myswap_bytes) { - int i, j, k, l; + int i, j, k; int newwidth, newheight; GLushort *s; const char *t; @@ -709,7 +709,7 @@ GLint element_size, GLint ysize, GLint group_size, GLint myswap_bytes) { - int i, j, k, l; + int i, j, k; int newwidth, newheight; GLshort *s; const char *t; @@ -851,7 +851,7 @@ GLint element_size, GLint ysize, GLint group_size, GLint myswap_bytes) { - int i, j, k, l; + int i, j, k; int newwidth, newheight; GLuint *s; const char *t; @@ -991,7 +991,7 @@ const GLint *datain, GLint *dataout, GLint element_size, GLint ysize, GLint group_size, GLint myswap_bytes) { - int i, j, k, l; + int i, j, k; int newwidth, newheight; GLint *s; const char *t; @@ -1135,7 +1135,7 @@ GLint element_size, GLint ysize, GLint group_size, GLint myswap_bytes) { - int i, j, k, l; + int i, j, k; int newwidth, newheight; GLfloat *s; const char *t; @@ -1371,8 +1371,8 @@ GLubyte *dataout, GLint element_size, GLint ysize, GLint group_size) { - float x, convx; - float y, convy; + float convx; + float convy; float percent; /* Max components in a format is 4, so... */ float totals[4]; @@ -1585,8 +1585,8 @@ GLbyte *dataout, GLint element_size, GLint ysize, GLint group_size) { - float x, convx; - float y, convy; + float convx; + float convy; float percent; /* Max components in a format is 4, so... */ float totals[4]; @@ -1800,8 +1800,8 @@ GLint ysize, GLint group_size, GLint myswap_bytes) { - float x, convx; - float y, convy; + float convx; + float convy; float percent; /* Max components in a format is 4, so... */ float totals[4]; @@ -2077,8 +2077,8 @@ GLint ysize, GLint group_size, GLint myswap_bytes) { - float x, convx; - float y, convy; + float convx; + float convy; float percent; /* Max components in a format is 4, so... */ float totals[4]; @@ -2368,8 +2368,8 @@ GLint ysize, GLint group_size, GLint myswap_bytes) { - float x, convx; - float y, convy; + float convx; + float convy; float percent; /* Max components in a format is 4, so... */ float totals[4]; @@ -2652,8 +2652,8 @@ GLint ysize, GLint group_size, GLint myswap_bytes) { - float x, convx; - float y, convy; + float convx; + float convy; float percent; /* Max components in a format is 4, so... */ float totals[4]; @@ -2945,8 +2945,8 @@ GLint ysize, GLint group_size, GLint myswap_bytes) { - float x, convx; - float y, convy; + float convx; + float convy; float percent; /* Max components in a format is 4, so... */ float totals[4]; @@ -3517,7 +3517,6 @@ GLushort *otherImage; GLushort *imageTemp; GLint memreq; - GLint maxsize; GLint cmpts; PixelStorageModes psm; @@ -3664,7 +3663,9 @@ GLushort *otherImage; GLushort *imageTemp; GLint memreq; +#if 0 GLint maxsize; +#endif GLint cmpts; PixelStorageModes psm; @@ -3771,11 +3772,8 @@ GLint level, levels; const void *usersImage; /* passed from user. Don't touch! */ void *srcImage, *dstImage; /* scratch area to build mipmapped images */ - GLint newImage_width; - GLint newImage_height; __GLU_INIT_SWAP_IMAGE; GLint memreq; - GLint maxsize; GLint cmpts; GLint myswap_bytes, groups_per_line, element_size, group_size; @@ -4568,6 +4566,7 @@ 0,0,levels,data); } /* gluBuild2DMipmaps() */ +#if 0 /* ** This routine is for the limited case in which ** type == GL_UNSIGNED_BYTE && format != index && @@ -4588,7 +4587,9 @@ GLubyte *otherImage; GLubyte *imageTemp; GLint memreq; +#if 0 GLint maxsize; +#endif GLint cmpts; @@ -4718,6 +4719,7 @@ } return 0; } +#endif /* * Utility Routines @@ -5979,8 +5981,8 @@ GLint pixelSizeInBytes, GLint rowSizeInBytes,GLint isSwap) { - float x, convx; - float y, convy; + float convx; + float convy; float percent; /* Max components in a format is 4, so... */ @@ -5991,7 +5993,9 @@ int i,j,k,xindex; const char *temp, *temp0; +#if 0 const char *temp_index; +#endif int outindex; int lowx_int, highx_int, lowy_int, highy_int; @@ -7322,7 +7326,7 @@ GLint depthAtLevelOne= (depthPowerOf2 > 1) ? depthPowerOf2 >> 1 : depthPowerOf2; - GLenum proxyTarget; + GLenum proxyTarget = 0; assert(widthAtLevelOne > 0); assert(heightAtLevelOne > 0); assert(depthAtLevelOne > 0); @@ -7375,7 +7379,6 @@ int halfHeight= height / 2; int halfDepth= depth / 2; const char *src= (const char *)dataIn; - int padBytes= rowSizeInBytes - (width * pixelSizeInBytes); int outIndex= 0; assert((width == 1 || height == 1) && depth >= 2); @@ -7631,10 +7634,8 @@ GLint level, levels; const void *usersImage; void *srcImage, *dstImage; - GLint newImageWidth, newImageHeight, newImageDepth; __GLU_INIT_SWAP_IMAGE; GLint memReq; - GLint maxSize; GLint cmpts; GLint myswapBytes, groupsPerLine, elementSize, groupSize; Index: xc/extras/ogl-sample/main/gfx/lib/glu/libutil/project.c diff -u xc/extras/ogl-sample/main/gfx/lib/glu/libutil/project.c:1.1.1.1 xc/extras/ogl-sample/main/gfx/lib/glu/libutil/project.c:1.2 --- xc/extras/ogl-sample/main/gfx/lib/glu/libutil/project.c:1.1.1.1 Mon Jan 15 16:49:36 2001 +++ xc/extras/ogl-sample/main/gfx/lib/glu/libutil/project.c Sat Oct 27 23:32:24 2001 @@ -1,3 +1,4 @@ +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glu/libutil/project.c,v 1.2 2001/10/28 03:32:24 tsi Exp $ */ /* ** License Applicability. Except to the extent portions of this file are ** made subject to an alternative license as permitted in the SGI Free @@ -116,7 +117,6 @@ GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz) { - int i; float forward[3], side[3], up[3]; GLfloat m[4][4]; Index: xc/extras/ogl-sample/main/gfx/lib/glu/libutil/quad.c diff -u xc/extras/ogl-sample/main/gfx/lib/glu/libutil/quad.c:1.2 xc/extras/ogl-sample/main/gfx/lib/glu/libutil/quad.c:1.3 --- xc/extras/ogl-sample/main/gfx/lib/glu/libutil/quad.c:1.2 Mon Apr 2 22:18:41 2001 +++ xc/extras/ogl-sample/main/gfx/lib/glu/libutil/quad.c Sat Oct 27 23:32:24 2001 @@ -32,7 +32,7 @@ ** compliant with the OpenGL(R) version 1.2.1 Specification. ** */ -/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glu/libutil/quad.c,v 1.2 2001/04/03 02:18:41 dawes Exp $ */ +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glu/libutil/quad.c,v 1.3 2001/10/28 03:32:24 tsi Exp $ */ #include "gluos.h" #include "gluint.h" @@ -156,7 +156,7 @@ gluCylinder(GLUquadric *qobj, GLdouble baseRadius, GLdouble topRadius, GLdouble height, GLint slices, GLint stacks) { - GLint i,j,max; + GLint i, j; GLfloat sinCache[CACHE_SIZE]; GLfloat cosCache[CACHE_SIZE]; GLfloat sinCache2[CACHE_SIZE]; @@ -164,7 +164,7 @@ GLfloat sinCache3[CACHE_SIZE]; GLfloat cosCache3[CACHE_SIZE]; GLfloat angle; - GLfloat x, y, zLow, zHigh; + GLfloat zLow, zHigh; GLfloat sintemp, costemp; GLfloat length; GLfloat deltaRadius; @@ -438,15 +438,14 @@ GLdouble outerRadius, GLint slices, GLint loops, GLdouble startAngle, GLdouble sweepAngle) { - GLint i,j,max; + GLint i, j; GLfloat sinCache[CACHE_SIZE]; GLfloat cosCache[CACHE_SIZE]; GLfloat angle; - GLfloat x, y; GLfloat sintemp, costemp; GLfloat deltaRadius; GLfloat radiusLow, radiusHigh; - GLfloat texLow, texHigh; + GLfloat texLow = 0, texHigh = 0; GLfloat angleOffset; GLint slices2; GLint finish; @@ -700,7 +699,7 @@ void GLAPIENTRY gluSphere(GLUquadric *qobj, GLdouble radius, GLint slices, GLint stacks) { - GLint i,j,max; + GLint i, j; GLfloat sinCache1a[CACHE_SIZE]; GLfloat cosCache1a[CACHE_SIZE]; GLfloat sinCache2a[CACHE_SIZE]; @@ -714,11 +713,9 @@ GLfloat sinCache3b[CACHE_SIZE]; GLfloat cosCache3b[CACHE_SIZE]; GLfloat angle; - GLfloat x, y, zLow, zHigh; - GLfloat sintemp1, sintemp2, sintemp3, sintemp4; - GLfloat costemp1, costemp2, costemp3, costemp4; - GLfloat zNormal; - GLfloat xyNormalRatio; + GLfloat zLow, zHigh; + GLfloat sintemp1, sintemp2 = 0, sintemp3 = 0, sintemp4 = 0; + GLfloat costemp1, costemp2 = 0, costemp3 = 0, costemp4 = 0; GLboolean needCache2, needCache3; GLint start, finish; Index: xc/extras/ogl-sample/main/gfx/lib/glw/GLwDrawA.c diff -u xc/extras/ogl-sample/main/gfx/lib/glw/GLwDrawA.c:1.3 xc/extras/ogl-sample/main/gfx/lib/glw/GLwDrawA.c:1.4 --- xc/extras/ogl-sample/main/gfx/lib/glw/GLwDrawA.c:1.3 Wed May 2 09:37:45 2001 +++ xc/extras/ogl-sample/main/gfx/lib/glw/GLwDrawA.c Sat Oct 27 23:32:25 2001 @@ -32,6 +32,7 @@ ** compliant with the OpenGL(R) version 1.2.1 Specification. ** */ +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glw/GLwDrawA.c,v 1.4 2001/10/28 03:32:25 tsi Exp $ */ #include <stdio.h> #include <GL/glx.h> @@ -432,8 +433,6 @@ /* Initialize the visualInfo based on the attribute list */ static void createVisualInfo(GLwDrawingAreaWidget w) { - static XVisualInfo *visualInfo; - assert(w->glwDrawingArea.attribList); w->glwDrawingArea.visualInfo = glXChooseVisual(XtDisplay(w), XScreenNumberOfScreen(XtScreen(w)), @@ -630,7 +629,6 @@ Redraw(GLwDrawingAreaWidget w, XEvent *event, Region region) { GLwDrawingAreaCallbackStruct cb; - XtCallbackList cblist; cb.reason = GLwCR_EXPOSE; cb.event = event; Index: xc/extras/rman/getopt.c diff -u xc/extras/rman/getopt.c:1.1.1.1 xc/extras/rman/getopt.c:1.3 --- xc/extras/rman/getopt.c:1.1.1.1 Mon Mar 20 19:47:34 2000 +++ xc/extras/rman/getopt.c Sun Jul 29 01:01:10 2001 @@ -9,16 +9,17 @@ directly from AT&T. The people there assure me that it is indeed in the public domain. */ +/* $XFree86: xc/extras/rman/getopt.c,v 1.3 2001/07/29 05:01:10 tsi Exp $ */ /*LINTLIBRARY*/ -extern int strlen(); -extern int strcmp(); -extern char *strchr(); -extern int write(); +#include <stdlib.h> +#include <unistd.h> +#include <stddef.h> -#define NULL 0 +#ifndef EOF #define EOF (-1) +#endif #define ERR(s, c) if(opterr){\ char errbuf[2];\ errbuf[0] = c; errbuf[1] = '\n';\ Index: xc/extras/rman/rman.c diff -u xc/extras/rman/rman.c:1.13 xc/extras/rman/rman.c:1.15 --- xc/extras/rman/rman.c:1.13 Thu Dec 21 13:55:27 2000 +++ xc/extras/rman/rman.c Fri Nov 16 11:47:51 2001 @@ -1,4 +1,6 @@ +#ifdef UNDEF static char rcsid[] = "Header: /home/cs/phelps/spine/rman/RCS/rman.c,v 1.144 1999/08/10 00:41:55 phelps Exp phelps $"; +#endif /* PolyglotMan by Thomas A. Phelps (phelps@ACM.org) @@ -16,7 +18,7 @@ source interpretation added September 24, 1996 renamed PolyglotMan due to lawsuit by Rosetta, Inc. August 8, 1997 */ -/* $XFree86: xc/extras/rman/rman.c,v 1.13 2000/12/21 18:55:27 dawes Exp $ */ +/* $XFree86: xc/extras/rman/rman.c,v 1.15 2001/11/16 16:47:51 dawes Exp $ */ /* TO DO **** @@ -54,7 +56,7 @@ #include <sys/stat.h> #include <fcntl.h> -#ifdef Lynx +#if defined(Lynx) || defined(__QNXNTO__) extern int optind; extern char *optarg; #endif Index: xc/extras/x86emu/include/x86emu/regs.h diff -u xc/extras/x86emu/include/x86emu/regs.h:1.1.1.1 xc/extras/x86emu/include/x86emu/regs.h:1.3 --- xc/extras/x86emu/include/x86emu/regs.h:1.1.1.1 Sat Jan 22 23:23:52 2000 +++ xc/extras/x86emu/include/x86emu/regs.h Sat Oct 27 23:32:25 2001 @@ -35,6 +35,7 @@ * Description: Header file for x86 register definitions. * ****************************************************************************/ +/* $XFree86: xc/extras/x86emu/include/x86emu/regs.h,v 1.3 2001/10/28 03:32:25 tsi Exp $ */ #ifndef __X86EMU_REGS_H #define __X86EMU_REGS_H @@ -271,8 +272,7 @@ * Extern interrupt 1 bits * Halted 1 bits */ - long mode; - u8 intno; + u32 mode; volatile int intr; /* mask of pending interrupts */ int debug; #ifdef DEBUG @@ -284,6 +284,8 @@ char decode_buf[32]; /* encoded byte stream */ char decoded_buf[256]; /* disassembled strings */ #endif + u8 intno; + u8 __pad[3]; } X86EMU_regs; /**************************************************************************** @@ -291,15 +293,16 @@ Structure maintaining the emulator machine state. MEMBERS: -x86 - X86 registers mem_base - Base real mode memory for the emulator mem_size - Size of the real mode memory block for the emulator +private - private data pointer +x86 - X86 registers ****************************************************************************/ typedef struct { - X86EMU_regs x86; unsigned long mem_base; unsigned long mem_size; void* private; + X86EMU_regs x86; } X86EMU_sysEnv; #pragma pack() Index: xc/fonts/PEX/lex.l diff -u xc/fonts/PEX/lex.l:3.12 xc/fonts/PEX/lex.l:3.14 --- xc/fonts/PEX/lex.l:3.12 Sun Apr 1 09:59:58 2001 +++ xc/fonts/PEX/lex.l Tue Jan 8 17:10:57 2002 @@ -1,11 +1,15 @@ %{ -/* $Xorg: lex.l,v 1.3 2000/08/17 19:42:52 cpqbld Exp $ */ +/* $Xorg: lex.l,v 1.4 2001/02/09 02:03:21 xorgcvs Exp $ */ /***************************************************************** Copyright 1989,1990, 1991, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -43,7 +47,7 @@ SOFTWARE. ******************************************************************/ -/* $XFree86: xc/fonts/PEX/lex.l,v 3.12 2001/04/01 13:59:58 tsi Exp $ */ +/* $XFree86: xc/fonts/PEX/lex.l,v 3.14 2002/01/08 22:10:57 dawes Exp $ */ #include <ctype.h> @@ -142,3 +146,21 @@ else return 0; } + +#ifdef QNX4 + +int yywrap (void) { + if (!feof(yyin)) + return (0); +/* The following appears not to work with flex. As it is error + handling code, we just comment it out. */ +#if !defined(FLEX_SCANNER) + if (yybgin != (yysvec+1)) { /* make sure we are in state 0 */ + ErrIntro(yylineno); + fprintf(stderr,"end of input file/missing endps\n"); + } +#endif + return (1); +} + +#endif /* QNX4 */ Index: xc/fonts/PEX/to_wfont.y diff -u xc/fonts/PEX/to_wfont.y:3.11 xc/fonts/PEX/to_wfont.y:3.14 --- xc/fonts/PEX/to_wfont.y:3.11 Sun Apr 1 09:59:58 2001 +++ xc/fonts/PEX/to_wfont.y Fri Dec 14 14:53:24 2001 @@ -1,11 +1,15 @@ %{ -/* $Xorg: to_wfont.y,v 1.3 2000/08/17 19:42:52 cpqbld Exp $ */ +/* $Xorg: to_wfont.y,v 1.4 2001/02/09 02:03:21 xorgcvs Exp $ */ /***************************************************************** Copyright 1989,1990, 1991, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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. @@ -43,7 +47,7 @@ SOFTWARE. ******************************************************************/ -/* $XFree86: xc/fonts/PEX/to_wfont.y,v 3.11 2001/04/01 13:59:58 tsi Exp $ */ +/* $XFree86: xc/fonts/PEX/to_wfont.y,v 3.14 2001/12/14 19:53:24 dawes Exp $ */ #define YYMAXDEPTH 10000 @@ -56,10 +60,6 @@ #endif #include "wfont.h" -#ifdef X_NOT_STDC_ENV -FILE *fopen(); -#endif - typedef struct { float std_left, /* NCGA standard left spacing */ @@ -352,7 +352,7 @@ yyerror() { -#if !defined(CSRG_BASED) && !defined(linux) && !defined(Lynx) && !defined(__GNU__) && !defined(__QNX__) +#if !defined(CSRG_BASED) && !defined(linux) && !defined(Lynx) && !defined(__GNU__) && !defined(__QNX__) && !defined(SCO) extern int yylineno; #endif # define ERR_SIZE (sizeof(err_string) / sizeof(char *)) @@ -375,7 +375,7 @@ str = err_string[yyerrno-1]; else str = "Syntax error"; -#if !defined(CSRG_BASED) && !defined(linux) && !defined(Lynx) && !defined(__GNU__) && !defined(__QNX__) +#if !defined(CSRG_BASED) && !defined(linux) && !defined(Lynx) && !defined(__GNU__) && !defined(__QNX__) && !defined(SCO) fprintf(stderr, "line %d: %s.\n", yylineno, str); #else fprintf(stderr, "%s.\n", str); Index: xc/fonts/PEX/wfont.h diff -u xc/fonts/PEX/wfont.h:1.1.1.3 xc/fonts/PEX/wfont.h:1.2 --- xc/fonts/PEX/wfont.h:1.1.1.3 Tue Jan 16 18:07:28 2001 +++ xc/fonts/PEX/wfont.h Fri Dec 14 14:53:24 2001 @@ -1,10 +1,14 @@ -/* $Xorg: wfont.h,v 1.3 2000/08/17 19:42:52 cpqbld Exp $ */ +/* $Xorg: wfont.h,v 1.4 2001/02/09 02:03:21 xorgcvs Exp $ */ /***************************************************************** Copyright 1989,1990, 1991, 1998 The Open Group -All Rights Reserved. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, 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.