From ec7dd649f9e5a4b8720a6fd33bf174f408f58d9e Mon Sep 17 00:00:00 2001 From: Adam Fedor Date: Thu, 27 Dec 2007 20:07:28 +0000 Subject: [PATCH] backports from trunk git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/branches/gnustep_stable_20070311@25793 72102866-910b-0410-8b05-ffd578937521 --- COPYING | 675 +++++++++ COPYING.LIB | 620 ++------ ChangeLog | 202 ++- Documentation/Back/GNUmakefile | 14 +- Documentation/Back/Standards.txt | 30 +- Documentation/Back/WindowFocus.gsdoc | 4 +- Documentation/GNUmakefile | 14 +- GNUmakefile | 13 +- GNUmakefile.postamble | 13 +- Headers/art/ARTContext.h | 23 +- Headers/gsc/GSContext.h | 22 +- Headers/gsc/GSFunction.h | 67 + Headers/gsc/GSGState.h | 23 +- Headers/gsc/GSGStateOps.h | 24 +- Headers/gsc/GSStreamContext.h | 22 +- Headers/gsc/GSStreamGState.h | 22 +- Headers/gsc/gscolors.h | 22 +- Headers/win32/WIN32Geometry.h | 21 +- Headers/win32/WIN32OpenGL.h | 17 +- Headers/win32/WIN32Server.h | 24 +- Headers/winlib/WIN32Context.h | 22 +- Headers/winlib/WIN32FontEnumerator.h | 20 +- Headers/winlib/WIN32FontInfo.h | 21 +- Headers/winlib/WIN32GState.h | 22 +- Headers/x11/XGDragView.h | 22 +- Headers/x11/XGGeneric.h | 30 +- Headers/x11/XGInputServer.h | 17 +- Headers/x11/XGOpenGL.h | 17 +- Headers/x11/XGServer.h | 27 +- Headers/x11/XGServerWindow.h | 22 +- Headers/x11/XWindowBuffer.h | 20 +- Headers/xdps/NSDPSContext.h | 17 +- Headers/xlib/GSXftFontInfo.h | 15 +- Headers/xlib/XGContext.h | 22 +- Headers/xlib/XGFontSetFontInfo.h | 22 +- Headers/xlib/XGGState.h | 23 +- Headers/xlib/XGGeometry.h | 23 +- Headers/xlib/XGPrivate.h | 17 +- Source/GNUmakefile | 13 +- Source/GNUmakefile.postamble | 16 +- Source/GNUmakefile.preamble | 13 +- Source/GSBackend.m | 17 +- Source/art/ARTContext.m | 20 +- Source/art/ARTGState.h | 20 +- Source/art/ARTGState.m | 20 +- Source/art/FTFaceInfo.h | 67 + Source/art/FTFaceInfo.m | 44 + Source/art/FTFontEnumerator.h | 38 + Source/art/FTFontEnumerator.m | 509 +++++++ Source/art/GNUmakefile | 15 +- Source/art/GNUmakefile.preamble | 13 +- Source/art/ReadRect.m | 20 +- Source/art/blit-main.m | 20 +- Source/art/blit.h | 20 +- Source/art/blit.m | 20 +- Source/art/blit_scrapheap.m | 20 +- Source/art/composite.m | 20 +- Source/art/ftfont-old.m | 543 +------ Source/art/ftfont.h | 20 +- Source/art/ftfont.m | 623 +------- Source/art/image.m | 22 +- Source/art/path.m | 20 +- Source/art/shfill.m | 40 +- Source/gsc/GNUmakefile | 17 +- Source/gsc/GNUmakefile.preamble | 13 +- Source/gsc/GSContext.m | 27 +- Source/gsc/GSFunction.m | 386 +++++ Source/gsc/GSGState.m | 131 +- Source/gsc/GSStreamContext.m | 24 +- Source/gsc/GSStreamGState.m | 22 +- Source/gsc/externs.m | 17 +- Source/gsc/gscolors.c | 23 +- Source/win32/GNUmakefile | 16 +- Source/win32/GNUmakefile.preamble | 13 +- Source/win32/WIN32Server.m | 26 +- Source/win32/w32_Events.h | 22 +- Source/win32/w32_GLcontext.m | 26 +- Source/win32/w32_GLformat.m | 25 +- Source/win32/w32_activate.m | 27 +- Source/win32/w32_create.m | 26 +- Source/win32/w32_general.m | 27 +- Source/win32/w32_movesize.m | 26 +- Source/win32/w32_text_focus.m | 26 +- Source/win32/w32_windowdisplay.m | 26 +- Source/winlib/GNUmakefile | 13 +- Source/winlib/GNUmakefile.preamble | 13 +- Source/winlib/WIN32Context.m | 23 +- Source/winlib/WIN32FontEnumerator.m | 21 +- Source/winlib/WIN32FontInfo.m | 78 +- Source/winlib/WIN32GState.m | 23 +- Source/x11/GNUmakefile | 15 +- Source/x11/GNUmakefile.preamble | 13 +- Source/x11/XGDragView.m | 76 +- Source/x11/XGGLContext.m | 21 +- Source/x11/XGGLFormat.m | 22 +- Source/x11/XGServer.m | 23 +- Source/x11/XGServerEvent.m | 406 +++--- Source/x11/XGServerWindow.m | 1425 ++++++++++++------- Source/x11/XIMInputServer.m | 19 +- Source/x11/XWindowBuffer.m | 20 +- Source/x11/context.c | 46 +- Source/x11/convert.c | 22 +- Source/x11/raster.c | 2 +- Source/xdps/AFMFileFontInfo.h | 18 +- Source/xdps/AFMFileFontInfo.m | 18 +- Source/xdps/GNUmakefile | 16 +- Source/xdps/GNUmakefile.preamble | 13 +- Source/xdps/NSDPSContext.m | 17 +- Source/xdps/NSDPSContextOps.m | 18 +- Source/xdps/PXKEPSImageRep.m | 17 +- Source/xdps/PXKFontManager.m | 18 +- Source/xdps/drawingfuncs.psw | 16 +- Source/xdps/extensions.psw | 18 +- Source/xdps/fonts.psw | 18 +- Source/xdps/general.psw | 18 +- Source/xlib/GNUmakefile | 16 +- Source/xlib/GNUmakefile.preamble | 13 +- Source/xlib/GSXftFontInfo.m | 15 +- Source/xlib/XGBitmap.m | 15 +- Source/xlib/XGCommonFont.m | 15 +- Source/xlib/XGContext.m | 22 +- Source/xlib/XGFont.m | 15 +- Source/xlib/XGFontManager.m | 20 +- Source/xlib/XGFontSetFontInfo.m | 22 +- Source/xlib/XGGState.m | 23 +- Source/xlib/XGGeometry.m | 22 +- Source/xlib/linking.m | 22 +- Tools/GNUmakefile | 13 +- Tools/GNUmakefile.postamble | 14 +- Tools/GNUmakefile.preamble | 13 +- Tools/font_cacher.m | 26 +- Tools/gpbs.m | 19 +- Tools/win32pbs.m | 19 +- Tools/xpbs.m | 640 +++++---- Version | 4 +- back.make.in | 24 +- config.h.in | 3 + configure | 1969 +++++++++++++++++++------- configure.ac | 50 +- gnustep-back.spec.in | 2 +- 140 files changed, 6699 insertions(+), 4193 deletions(-) create mode 100644 COPYING create mode 100644 Headers/gsc/GSFunction.h create mode 100644 Source/art/FTFaceInfo.h create mode 100644 Source/art/FTFaceInfo.m create mode 100644 Source/art/FTFontEnumerator.h create mode 100644 Source/art/FTFontEnumerator.m create mode 100644 Source/gsc/GSFunction.m diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..a737dcf --- /dev/null +++ b/COPYING @@ -0,0 +1,675 @@ + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/COPYING.LIB b/COPYING.LIB index ec47efc..e259e28 100644 --- a/COPYING.LIB +++ b/COPYING.LIB @@ -1,504 +1,166 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - Preamble + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. + 0. Additional Definitions. - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. + 1. Exception to Section 3 of the GNU GPL. - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. + 2. Conveying Modified Versions. - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + 3. Object Code Incorporating Material from Library Header Files. - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) + b) Accompany the object code with a copy of the GNU GPL and this license + document. - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. + 4. Combined Works. - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/ChangeLog b/ChangeLog index 61bb558..aa05cc9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,201 @@ +2007-11-05 Fred Kiefer + + * COPYING: Add GPL 3 licence file. + * Backport from trunk. + +2007-10-31 Fred Kiefer + + * Source/x11/XGServerWindow.m (-_setupRootWindow): Use + objectForKey: instead of stringForKey:. + Patch by Wolfgang Lux . + * Backport from trunk. + +2007-10-30 Adam Fedor + + * gnustep-back.spec.in: Change Copyright to License. + * Backport from trunk. + +2007-10-30 Fred Kiefer + + * Change files to use GPL 3 and LGPL 3. + * Prepare for next release. + * Backport from trunk. + +2007-10-12 Fred Kiefer + + * Source/x11/XGServerWindow.m (-placewindow:): Change window to be + temporary resizable. Patch by Wolfgang Lux . + * Source/x11/XIMInputServer.m: Clean up includes to avoid compiler warning. + * Source/x11/raster.c (calculateCombineArea): Change parameter + signedness to avoid compiler warnings. + * Source/x11/convert.c (convertTrueColor_generic, + convertPseudoColor_to_8): Change parameter signedness to avoid compiler warnings. + * Backport from trunk. + +2007-10-07 Fred Kiefer + + * Headers/gsc/GSFunction.h: Declare the -getsample:: method in + header. + * Backport from trunk. + +2007-10-05 Fred Kiefer + + * Source/art/shfill.m (-DPSshfill:): Correct typing error. Remove + now obsolete method declaration. + * Headers/gsc/GSFunction.h, + * Source/gsc/GSFunction.m: New files. Implementation of Postscript + function taken from art/shfill.m. + * Source/gsc/GNUmakefile: Compile new file. + * Source/gsc/GSContext.m (-DPSshfill:), + * Source/gsc/GSGState.m (-DPSshfill:): Implement new method. + * Backport from trunk. + +2007-10-01 Fred Kiefer + + * Source/x11/XGDragView.m: Add missing include. + * Backport from trunk. + +2007-09-05 Fred Kiefer + + * Headers/x11/XGGeneric.h: Add ivars for event time keeping. + * Headers/x11/XGServer.h: Declare new event time keeping methods. + * Source/x11/XGServerEvent.m (-setLastTime:, -lastTime): Implement + new methods and use them to store event time. + * Source/x11/XGServerWindow.m: Use these methods to get event time. + * Backport from trunk. + +2007-09-05 Fred Kiefer + + * Source/x11/XGServerWindow.m (-_checkStyle:, -windowlist): Use + defScreen instead of 0. + * Backport from trunk. + +2007-09-05 Fred Kiefer + + * configure.ac, + * configure: Move checking for Xrender extension. + * Backport from trunk. + +2007-09-04 Fred Kiefer + + * Source\winlib\WIN32FontInfo.m (-coveredCharacterSet): Create the + NSMutableCharacterSet to store the character ranges in. + * Backport from trunk. + +2007-09-03 Nicolas Roard + + * configure: + * configure.ac: check that Xrender lib is present and add it to the + link process. Only use Xrender for Cairo. + * Backport from trunk. + +2007-09-02 Nicolas Roard + + * configure: + * configure.ac: + * config.h.in: added checking for Xrender extension + * Source/x11/context.c: Now check for 32 bit surface + alpha channel + * Backport from trunk. + +2007-08-21 Fred Kiefer + + * Source/art/ftfont.m, + * Source/art/ftfont-old.m: Extracted code shared between these two + files into new files. + * Source/art/FTFaceInfo.h, + * Source/art/FTFaceInfo.m, + * Source/art/FTFontEnumerator.h, + * Source/art/FTFontEnumerator.m: New files with extracted code. + * Source/art/GNUmakefile: Add new source files. + * Backport from trunk. + +2007-08-21 Fred Kiefer + + * Source/x11/XGServerWindow.m (-_setupRootWindow): Revert last + change. + * Source/x11/XGServerWindow.m (-setinputfocus:): Use CurrentTime + instead of generic.lastTime. + * Backport from trunk. + +2007-08-21 Fred Kiefer + + * Source/x11/XGServerEvent.m (-processEvent:): Made handling of + focus in and out more explicit. + * Backport from trunk. + +2007-08-16 Fred Kiefer + + * Source/xlib/XGFontManager.m (load_cache), + * Tools/font_cacher.m (-writeCacheTo): Increase version number of + font format, as font mask values have changed. + * Backport from trunk. + +2007-08-16 Fred Kiefer + + * Source/x11/XGServerWindow.m (-_setupRootWindow): Set lastTime to + CurrentTime not 1 to get setinputfocus working for the first + activation of the application. + * Backport from trunk. + +2007-08-15 Fred Kiefer + + * Source/x11/XGServerWindow.m (-_checkWMSupports:, + -_tryRequestFrameExtents:): Correct minor errors. + * Source/art/ftfont.m (-coveredCharacterSet): Protect against + illegal characters. + * Backport from trunk. + +2007-08-15 Fred Kiefer + + * Source/x11/XGServerWindow.m: Add more EWMH methods and helper + methods for them. + * Tools/xpbs.m: Simplify dragging support code. + * Backport from trunk. + +2007-08-13 Fred Kiefer + + * Source/art/ftfont.m (-coveredCharacterSet): Correct code. + Patch by Yen-Ju Chen . + * Backport from trunk. + +2007-08-07 Fred Kiefer + + * Source/art/ftfont.m (-coveredCharacterSet): Use local FT_Size + variable instead of ivar. The ivar is sometimes invalid. + Cleaned up compiler warnings. + * Backport from trunk. + +2007-08-02 Fred Kiefer + + * Source/x11/XGServer.m (+initializeBackend): Handle SIGINT by + calling ([NSApp terminate: NSApp]) to shut down cleanly. + * Backport from trunk. + +2007-06-05 Fred Kiefer + + * Source/art/image.m (-DPSimage:): Replaced appendTransform: with + prependTransform:. Undoes change from 2004-01-25. + * Backport from trunk. + +2007-05-02 Nicola Pero + + * Source/GNUmakefile.postamble (after-clean): Remove + $(BUNDLE_NAME)Info.plist on clean. + * Backport from trunk. + +2007-04-24 Fred Kiefer + + * Source/x11/XGDragView.m (-sendExternalEvent:... toWindow:) Tell + xdnd about available types and selection owner. + * Source/x11/XGServerEvent.m (processEvent:): Handle case + SelectionRequest to get some simple xdnd support. + Based on a patch by Matt Rice . + * Backport from trunk. + 2007-04-14 Adam Fedor - * Version 0.12.0 - + * Version 0.12.0 (From gnustep-stable branch) + 2007-03-30 Fred Kiefer * header/xlib/XGGeometry.h: Replace calls to the now deprecated @@ -25,7 +219,7 @@ * Source/art/ARTConext.m: Removed ARTContext bits. * Source/art/blit-main.m: New file split out from blit.m. * Source/art/blit.m: Removed self include stuff. - * Source/GNUmakefile: Add new source files. + * Source/art/GNUmakefile: Add new source files. * Source/art/composite.m: Adopt to GNUstep coding style. 2007-03-22 Fred Kiefer @@ -611,7 +805,7 @@ * Header/x11/XGGeneric.h, * Source/x11/XGServerWindow.m (-_setupRootWindow, -window::::), * Source/x11/XGServerEvent.m (-processEvent:): - Impelemented hanlding for _NET_WM_PING. + Impelemented handling for _NET_WM_PING. 2006-07-07 Richard Frith-Macdonald diff --git a/Documentation/Back/GNUmakefile b/Documentation/Back/GNUmakefile index 747ad4d..e4b5b35 100644 --- a/Documentation/Back/GNUmakefile +++ b/Documentation/Back/GNUmakefile @@ -7,18 +7,20 @@ # This file is part of the GNUstep Back Library. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public -# License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. +# You should have received a copy of the GNU Lesser General Public +# License along with this library; see the file COPYING.LIB. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # Install into the system root by default GNUSTEP_INSTALLATION_DOMAIN = SYSTEM diff --git a/Documentation/Back/Standards.txt b/Documentation/Back/Standards.txt index de00336..89b9005 100644 --- a/Documentation/Back/Standards.txt +++ b/Documentation/Back/Standards.txt @@ -13,16 +13,17 @@ EWMH hints [-] : not applicable/ignored Root Window Properties (and Related Messages) -[-] _NET_SUPPORTED // WM property +[+] _NET_SUPPORTED // WM property [-] _NET_CLIENT_LIST // WM property -[-] _NET_NUMBER_OF_DESKTOPS // WM property +[+] _NET_CLIENT_LIST_STACKING // WM property +[+] _NET_NUMBER_OF_DESKTOPS // WM property [ ] _NET_DESKTOP_GEOMETRY // use this in preference to X calls? [-] _NET_DESKTOP_VIEWPORT // WM property -[-] _NET_CURRENT_DESKTOP // WM property -[-] _NET_DESKTOP_NAMES // WM property +[+] _NET_CURRENT_DESKTOP // WM property +[+] _NET_DESKTOP_NAMES // WM property [ ] _NET_ACTIVE_WINDOW // "main" window? [-] _NET_WORKAREA // WM property -[-] _NET_SUPPORTING_WM_CHECK // WM property +[+] _NET_SUPPORTING_WM_CHECK // WM property [-] _NET_VIRTUAL_ROOTS // WM property [-] _NET_DESKTOP_LAYOUT // Pager property [-] _NET_SHOWING_DESKTOP // WM property @@ -33,24 +34,29 @@ Other Root Window Messages [ ] _NET_WM_MOVERESIZE // use with in-view mouse control? Application Window Properties -[ ] _NET_WM_NAME // need to implement -[-] _NET_WM_VISIBLE_NAME // WM property -[ ] _NET_WM_ICON_NAME // need to implement +[+] _NET_WM_NAME // need to implement +[ ] _NET_WM_VISIBLE_NAME // WM property +[+] _NET_WM_ICON_NAME // need to implement [-] _NET_WM_VISIBLE_ICON_NAME // WM property -[-] _NET_WM_DESKTOP // GNUstep apps don't need this(?) +[+] _NET_WM_DESKTOP // [+] _NET_WM_WINDOW_TYPE // use with or replace Window Level? -[-] _NET_WM_STATE // probably don't need this. +[*] _NET_WM_STATE // probably don't need this. [-] _NET_WM_ALLOWED_ACTIONS // WM property [-] _NET_WM_STRUT // GNUstep apps don't need this(?) [-] _NET_WM_STRUT_PARTIAL // GNUstep apps don't need this(?) [-] _NET_WM_ICON_GEOMETRY // GNUstep apps don't need this(?) -[ ] _NET_WM_ICON // would be nice to support +[+] _NET_WM_ICON // [+] _NET_WM_PID [-] _NET_WM_HANDLED_ICONS // Pager property [ ] _NET_WM_USER_TIME // need to figure this out... +[+] _NET_FRAME_EXTENTS // +[+] _NET_REQUEST_FRAME_EXTENTS // +[+] _NET_WM_STATE_SKIP_PAGER // +[+] _NET_WM__WINDOW_OPACITY // +[+] _NET_WM__WINDOW_SHADOW // Window Manager Protocols -[ ] _NET_WM_PING // need to implement +[+] _NET_WM_PING // need to implement diff --git a/Documentation/Back/WindowFocus.gsdoc b/Documentation/Back/WindowFocus.gsdoc index c4cf8d5..8d2ec12 100644 --- a/Documentation/Back/WindowFocus.gsdoc +++ b/Documentation/Back/WindowFocus.gsdoc @@ -78,7 +78,7 @@ keyboard focus (see below).

- The GUI font-end may function differently to accomadate + The GUI front-end may function differently to accomadate different window manager behavior. Below is a list of the changes the front-end makes for different managers and windowing systems: @@ -145,7 +145,7 @@ back-end should send a FocusIn event to a window when it receives a signal from the window manager or windowing system. Sending a FocusIn event to a window that already requested it, - msy cause focus confusion in the GUI. + may cause focus confusion in the GUI.

The front-end does nothing for FocusOut messages. diff --git a/Documentation/GNUmakefile b/Documentation/GNUmakefile index 28778ca..dfb78c1 100644 --- a/Documentation/GNUmakefile +++ b/Documentation/GNUmakefile @@ -7,18 +7,20 @@ # This file is part of the GNUstep Backend Library. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public -# License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. +# You should have received a copy of the GNU Lesser General Public +# License along with this library; see the file COPYING.LIB. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # Install into the system root by default GNUSTEP_INSTALLATION_DOMAIN = SYSTEM diff --git a/GNUmakefile b/GNUmakefile index 4586a88..32ef40c 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -8,19 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. ifeq ($(GNUSTEP_MAKEFILES),) GNUSTEP_MAKEFILES := $(shell gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null) diff --git a/GNUmakefile.postamble b/GNUmakefile.postamble index e72f190..c32b95f 100644 --- a/GNUmakefile.postamble +++ b/GNUmakefile.postamble @@ -8,19 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # Things to do before compiling # before-all:: diff --git a/Headers/art/ARTContext.h b/Headers/art/ARTContext.h index 0edd75c..2ae7fd0 100644 --- a/Headers/art/ARTContext.h +++ b/Headers/art/ARTContext.h @@ -9,19 +9,22 @@ This file is part of the GNU Objective C User Interface library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + #ifndef ARTContext_h #define ARTContext_h diff --git a/Headers/gsc/GSContext.h b/Headers/gsc/GSContext.h index a67978c..9fc762b 100644 --- a/Headers/gsc/GSContext.h +++ b/Headers/gsc/GSContext.h @@ -10,19 +10,21 @@ This file is part of the GNU Objective C User Interface library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _GSContext_h_INCLUDE #define _GSContext_h_INCLUDE diff --git a/Headers/gsc/GSFunction.h b/Headers/gsc/GSFunction.h new file mode 100644 index 0000000..f7d566b --- /dev/null +++ b/Headers/gsc/GSFunction.h @@ -0,0 +1,67 @@ +/* -*-objc-*- + GSFunction - PS Function for GSGState + + Copyright (C) 2003 Free Software Foundation, Inc. + + Author: Alexander Malmberg + Author: Fred Kiefer + Extracted into separate class. + + This file is part of GNUstep. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef _GSFunction_h_INCLUDE +#define _GSFunction_h_INCLUDE + +#include + +@interface GSFunction : NSObject +{ + /* General information about the function. */ + int num_in, num_out; + + double *domain; /* num_in * 2 */ + double *range; /* num_out * 2 */ + + /* Type specific information */ + const unsigned char *data_source; + int *size; /* num_in */ + int bits_per_sample; + double *encode; /* num_in * 2 */ + double *decode; /* num_out * 2 */ +} + +- (id) initWith: (NSDictionary *)d; +- (double) getsample: (int)sample : (int) i; +- (void) eval: (double *)inValues : (double *)outValues; + +@end + +@interface GSFunction2in3out : GSFunction +{ + /* sample cache for in == 2, out == 3 */ + int sample_index[2]; + double sample_cache[4][3]; +} + +- (NSRect) affectedRect; + +@end + +#endif // _GSFunction_h_INCLUDE diff --git a/Headers/gsc/GSGState.h b/Headers/gsc/GSGState.h index 5403537..c50df9b 100644 --- a/Headers/gsc/GSGState.h +++ b/Headers/gsc/GSGState.h @@ -10,20 +10,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _GSGState_h_INCLUDE #define _GSGState_h_INCLUDE diff --git a/Headers/gsc/GSGStateOps.h b/Headers/gsc/GSGStateOps.h index cc58f99..00728d4 100644 --- a/Headers/gsc/GSGStateOps.h +++ b/Headers/gsc/GSGStateOps.h @@ -8,19 +8,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _GSGStateOps_h_INCLUDE #define _GSGStateOps_h_INCLUDE @@ -148,6 +150,8 @@ : (BOOL) hasAlpha : (NSString *) colorSpaceName : (const unsigned char *const [5]) data; +- (void) DPSshfill: (NSDictionary *)shader; + @end #endif diff --git a/Headers/gsc/GSStreamContext.h b/Headers/gsc/GSStreamContext.h index 2f97e72..e7b32fd 100644 --- a/Headers/gsc/GSStreamContext.h +++ b/Headers/gsc/GSStreamContext.h @@ -8,19 +8,21 @@ This file is part of the GNU Objective C User Interface library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _GSStreamContext_h_INCLUDE #define _GSStreamContext_h_INCLUDE diff --git a/Headers/gsc/GSStreamGState.h b/Headers/gsc/GSStreamGState.h index c6a9879..8e1048f 100644 --- a/Headers/gsc/GSStreamGState.h +++ b/Headers/gsc/GSStreamGState.h @@ -8,19 +8,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _GSStreamGState_h_INCLUDE #define _GSStreamGState_h_INCLUDE diff --git a/Headers/gsc/gscolors.h b/Headers/gsc/gscolors.h index 4df8fe2..9239fac 100644 --- a/Headers/gsc/gscolors.h +++ b/Headers/gsc/gscolors.h @@ -8,19 +8,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _gscolors_h_INCLUDE #define _gscolors_h_INCLUDE diff --git a/Headers/win32/WIN32Geometry.h b/Headers/win32/WIN32Geometry.h index f1b96ed..504e383 100644 --- a/Headers/win32/WIN32Geometry.h +++ b/Headers/win32/WIN32Geometry.h @@ -8,19 +8,20 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef _WIN32Geometry_h_INCLUDE diff --git a/Headers/win32/WIN32OpenGL.h b/Headers/win32/WIN32OpenGL.h index 65de73a..db332bf 100644 --- a/Headers/win32/WIN32OpenGL.h +++ b/Headers/win32/WIN32OpenGL.h @@ -9,19 +9,20 @@ This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef _GNUstep_H_WIN32OpenGL diff --git a/Headers/win32/WIN32Server.h b/Headers/win32/WIN32Server.h index 86b2f24..6bf6cf9 100644 --- a/Headers/win32/WIN32Server.h +++ b/Headers/win32/WIN32Server.h @@ -7,21 +7,24 @@ Part of this code have been re-written by: Tom MacSween Date August 2005 + This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef _WIN32Server_h_INCLUDE @@ -49,9 +52,6 @@ #include #include - -#include "win32/WIN32Server.h" - #include #include diff --git a/Headers/winlib/WIN32Context.h b/Headers/winlib/WIN32Context.h index 1988410..fbb411e 100644 --- a/Headers/winlib/WIN32Context.h +++ b/Headers/winlib/WIN32Context.h @@ -8,19 +8,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _WIN32Context_h_INCLUDE #define _WIN32Context_h_INCLUDE diff --git a/Headers/winlib/WIN32FontEnumerator.h b/Headers/winlib/WIN32FontEnumerator.h index 9153692..2d87ecf 100644 --- a/Headers/winlib/WIN32FontEnumerator.h +++ b/Headers/winlib/WIN32FontEnumerator.h @@ -8,18 +8,20 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef _WIN32FontEnumerator_h_INCLUDE diff --git a/Headers/winlib/WIN32FontInfo.h b/Headers/winlib/WIN32FontInfo.h index 75f3055..913ac4a 100644 --- a/Headers/winlib/WIN32FontInfo.h +++ b/Headers/winlib/WIN32FontInfo.h @@ -8,19 +8,20 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef _WIN32FontInfo_h_INCLUDE diff --git a/Headers/winlib/WIN32GState.h b/Headers/winlib/WIN32GState.h index 1c0258b..4f15b08 100644 --- a/Headers/winlib/WIN32GState.h +++ b/Headers/winlib/WIN32GState.h @@ -8,19 +8,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _WIN32GState_h_INCLUDE #define _WIN32GState_h_INCLUDE diff --git a/Headers/x11/XGDragView.h b/Headers/x11/XGDragView.h index 61f4ff4..85ba84d 100644 --- a/Headers/x11/XGDragView.h +++ b/Headers/x11/XGDragView.h @@ -11,19 +11,21 @@ This file is part of the GNU Objective C User Interface library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include #include diff --git a/Headers/x11/XGGeneric.h b/Headers/x11/XGGeneric.h index 604fdc7..c272db5 100644 --- a/Headers/x11/XGGeneric.h +++ b/Headers/x11/XGGeneric.h @@ -8,20 +8,21 @@ This file is part of the GNUstep project This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef INCLUDED_XGGENERIC_H #define INCLUDED_XGGENERIC_H @@ -77,7 +78,14 @@ struct XGGeneric { unsigned appOwnsMiniwindow:1; unsigned doubleParentWindow:1; } flags; + // Time of last X event Time lastTime; + // Approximate local time for last X event, used to decide + // if the last X event time is still valid. + NSTimeInterval lastTimeStamp; + // last reference time on X server, used to prevent time drift between + // local machine and X server. + Time baseXServerTime; Time lastClick; Window lastClickWindow; int lastClickX; diff --git a/Headers/x11/XGInputServer.h b/Headers/x11/XGInputServer.h index d65e595..f036e97 100644 --- a/Headers/x11/XGInputServer.h +++ b/Headers/x11/XGInputServer.h @@ -8,19 +8,20 @@ This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef _GNUstep_H_XGInputServer diff --git a/Headers/x11/XGOpenGL.h b/Headers/x11/XGOpenGL.h index 6da7fed..295c3b5 100644 --- a/Headers/x11/XGOpenGL.h +++ b/Headers/x11/XGOpenGL.h @@ -9,19 +9,20 @@ This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef _GNUstep_H_XGOpenGL diff --git a/Headers/x11/XGServer.h b/Headers/x11/XGServer.h index 767d97a..5c1c23b 100644 --- a/Headers/x11/XGServer.h +++ b/Headers/x11/XGServer.h @@ -10,19 +10,21 @@ This file is part of the GNUstep Backend. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _XGServer_h_INCLUDE #define _XGServer_h_INCLUDE @@ -98,4 +100,9 @@ typedef enum { - (BOOL) setPreeditSpot: (NSPoint *)p; @end +@interface XGServer (TimeKeeping) +- (void) setLastTime: (Time)last; +- (Time) lastTime; +@end + #endif /* _XGServer_h_INCLUDE */ diff --git a/Headers/x11/XGServerWindow.h b/Headers/x11/XGServerWindow.h index 9ace0ec..4c240ab 100644 --- a/Headers/x11/XGServerWindow.h +++ b/Headers/x11/XGServerWindow.h @@ -8,19 +8,21 @@ This file is part of the GNU Objective C User Interface library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _XGServerWindow_h_INCLUDE #define _XGServerWindow_h_INCLUDE diff --git a/Headers/x11/XWindowBuffer.h b/Headers/x11/XWindowBuffer.h index 58e9fdc..8f16260 100644 --- a/Headers/x11/XWindowBuffer.h +++ b/Headers/x11/XWindowBuffer.h @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef XWindowBuffer_h diff --git a/Headers/xdps/NSDPSContext.h b/Headers/xdps/NSDPSContext.h index a41479e..8343656 100644 --- a/Headers/xdps/NSDPSContext.h +++ b/Headers/xdps/NSDPSContext.h @@ -11,19 +11,20 @@ This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef _GNUstep_H_NSDPSContext diff --git a/Headers/xlib/GSXftFontInfo.h b/Headers/xlib/GSXftFontInfo.h index a928cb1..3bd521a 100644 --- a/Headers/xlib/GSXftFontInfo.h +++ b/Headers/xlib/GSXftFontInfo.h @@ -11,19 +11,20 @@ This file is part of the GNUstep GUI X/GPS Backend. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. + version 3 of the License, or (at your option) any later version. This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ // Include this before we include any objC defines, otherwise id is defined diff --git a/Headers/xlib/XGContext.h b/Headers/xlib/XGContext.h index cad8cde..3b2466b 100644 --- a/Headers/xlib/XGContext.h +++ b/Headers/xlib/XGContext.h @@ -10,19 +10,21 @@ This file is part of the GNU Objective C User Interface library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _XGContext_h_INCLUDE #define _XGContext_h_INCLUDE diff --git a/Headers/xlib/XGFontSetFontInfo.h b/Headers/xlib/XGFontSetFontInfo.h index b109f39..b116e32 100644 --- a/Headers/xlib/XGFontSetFontInfo.h +++ b/Headers/xlib/XGFontSetFontInfo.h @@ -10,19 +10,21 @@ This file is part of the GNU Objective C User Interface library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef __XGFontSetFontInfo_h #define __XGFontSetFontInfo_h diff --git a/Headers/xlib/XGGState.h b/Headers/xlib/XGGState.h index 276ecc6..3b96d1b 100644 --- a/Headers/xlib/XGGState.h +++ b/Headers/xlib/XGGState.h @@ -8,20 +8,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _XGGState_h_INCLUDE #define _XGGState_h_INCLUDE diff --git a/Headers/xlib/XGGeometry.h b/Headers/xlib/XGGeometry.h index 2880a36..33a9d0d 100644 --- a/Headers/xlib/XGGeometry.h +++ b/Headers/xlib/XGGeometry.h @@ -13,20 +13,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ /* This file implements the NSGeometry manipulation functions for diff --git a/Headers/xlib/XGPrivate.h b/Headers/xlib/XGPrivate.h index 24f264d..ac19a4e 100644 --- a/Headers/xlib/XGPrivate.h +++ b/Headers/xlib/XGPrivate.h @@ -9,19 +9,20 @@ This file is part of the GNUstep GUI X/GPS Backend. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef _XGPrivate_h_INCLUDE diff --git a/Source/GNUmakefile b/Source/GNUmakefile index d2a7d2d..0a115fc 100644 --- a/Source/GNUmakefile +++ b/Source/GNUmakefile @@ -8,19 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # Install into the system root by default GNUSTEP_INSTALLATION_DOMAIN = SYSTEM diff --git a/Source/GNUmakefile.postamble b/Source/GNUmakefile.postamble index 3614d26..8db463b 100644 --- a/Source/GNUmakefile.postamble +++ b/Source/GNUmakefile.postamble @@ -8,19 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # Things to do before compiling before-all:: $(GNUSTEP_TARGET_DIR)/config.h $(BUNDLE_NAME)Info.plist @@ -44,7 +45,8 @@ before-all:: $(GNUSTEP_TARGET_DIR)/config.h $(BUNDLE_NAME)Info.plist # before-clean:: # Things to do after cleaning -# after-clean:: +after-clean:: + rm -f $(BUNDLE_NAME)Info.plist: # Things to do before distcleaning # before-distclean:: diff --git a/Source/GNUmakefile.preamble b/Source/GNUmakefile.preamble index 13ec388..6b89dcc 100644 --- a/Source/GNUmakefile.preamble +++ b/Source/GNUmakefile.preamble @@ -8,19 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # # Flags dealing with compiling and linking diff --git a/Source/GSBackend.m b/Source/GSBackend.m index 0a15831..faa6268 100644 --- a/Source/GSBackend.m +++ b/Source/GSBackend.m @@ -8,19 +8,20 @@ This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include "config.h" diff --git a/Source/art/ARTContext.m b/Source/art/ARTContext.m index c815d76..20a20a2 100644 --- a/Source/art/ARTContext.m +++ b/Source/art/ARTContext.m @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/art/ARTGState.h b/Source/art/ARTGState.h index e3c5956..f61b236 100644 --- a/Source/art/ARTGState.h +++ b/Source/art/ARTGState.h @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef ARTGState_h diff --git a/Source/art/ARTGState.m b/Source/art/ARTGState.m index d04e3ce..1ad9293 100644 --- a/Source/art/ARTGState.m +++ b/Source/art/ARTGState.m @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/art/FTFaceInfo.h b/Source/art/FTFaceInfo.h new file mode 100644 index 0000000..cf07456 --- /dev/null +++ b/Source/art/FTFaceInfo.h @@ -0,0 +1,67 @@ +/* + Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + + Author: Alexander Malmberg + + This file is part of GNUstep. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef FTFaceInfo_h +#define FTFaceInfo_h + +#include + +@class NSString; +@class NSArray; + +@interface FTFaceInfo : NSObject +{ +@public + NSString *familyName; + + /* the following two are localized */ + NSString *faceName; + NSString *displayName; + + NSArray *files; + struct + { + int pixel_size; + NSArray *files; + } *sizes; + int num_sizes; + + int weight; + unsigned int traits; + + /* + hinting hints + 0: 1 to use the auto-hinter + 1: 1 to use hinting + byte 0 and 1 contain hinting hints for un-antialiased and antialiased + rendering, respectively. + + 16: 0=un-antialiased by default, 1=antialiased by default + */ + unsigned int render_hints_hack; +} + +@end + +#endif diff --git a/Source/art/FTFaceInfo.m b/Source/art/FTFaceInfo.m new file mode 100644 index 0000000..c2816b9 --- /dev/null +++ b/Source/art/FTFaceInfo.m @@ -0,0 +1,44 @@ +/* + Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + + Author: Alexander Malmberg + + This file is part of GNUstep. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include +#include "FTFaceInfo.h" + +@implementation FTFaceInfo + +- (NSString *) description +{ + return [NSString stringWithFormat: @"", + self, displayName, files, weight, traits]; +} + +/* FTFaceInfo:s should never be deallocated */ +- (void) dealloc +{ + NSLog(@"Warning: -dealloc called on %@",self); + GSNOSUPERDEALLOC; +} + +@end + diff --git a/Source/art/FTFontEnumerator.h b/Source/art/FTFontEnumerator.h new file mode 100644 index 0000000..e081a86 --- /dev/null +++ b/Source/art/FTFontEnumerator.h @@ -0,0 +1,38 @@ +/* + Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + + Author: Alexander Malmberg + + This file is part of GNUstep. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef FTFontEnumerator_h +#define FTFontEnumerator_h + +#include + +@class FTFaceInfo; + +@interface FTFontEnumerator : GSFontEnumerator + ++ (FTFaceInfo *) fontWithName: (NSString *)name; + +@end + +#endif diff --git a/Source/art/FTFontEnumerator.m b/Source/art/FTFontEnumerator.m new file mode 100644 index 0000000..a34c543 --- /dev/null +++ b/Source/art/FTFontEnumerator.m @@ -0,0 +1,509 @@ +/* + Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + + Author: Alexander Malmberg + + This file is part of GNUstep. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "FTFontEnumerator.h" +#include "FTFaceInfo.h" + +#if 0 + +/* +This is a list of "standard" face names. It is here so make_strings can pick +it up and generate .strings files with them. +*/ + +NSLocalizedStringFromTable(@"Book", @"nfontFaceNames", @"") +NSLocalizedStringFromTable(@"Regular", @"nfontFaceNames", @"") +NSLocalizedStringFromTable(@"Roman", @"nfontFaceNames", @"") +NSLocalizedStringFromTable(@"Medium", @"nfontFaceNames", @"") +NSLocalizedStringFromTable(@"Demi", @"nfontFaceNames", @"") +NSLocalizedStringFromTable(@"Demibold", @"nfontFaceNames", @"") +NSLocalizedStringFromTable(@"Bold", @"nfontFaceNames", @"") +NSLocalizedStringFromTable(@"Heavy", @"nfontFaceNames", @"") + +NSLocalizedStringFromTable(@"Italic", @"nfontFaceNames", @"") +NSLocalizedStringFromTable(@"Oblique", @"nfontFaceNames", @"") + +NSLocalizedStringFromTable(@"Bold Italic", @"nfontFaceNames", @"") +NSLocalizedStringFromTable(@"Bold Oblique", @"nfontFaceNames", @"") + +#endif + +static NSMutableArray *fcfg_allFontNames; +static NSMutableDictionary *fcfg_allFontFamilies; +static NSMutableDictionary *fcfg_all_fonts; +static NSMutableSet *families_seen, *families_pending; + +static BOOL anti_alias_by_default; + + + +static int traits_from_string(NSString *s, unsigned int *traits, unsigned int *weight) +{ +static struct +{ + NSString *str; + unsigned int trait; + int weight; +} suffix[] = { +/* TODO */ +{@"Normal" ,0 ,-1}, + +{@"Ultralight" ,0 , 1}, +{@"Thin" ,0 , 2}, +{@"Light" ,0 , 3}, +{@"Extralight" ,0 , 3}, +{@"Book" ,0 , 4}, +{@"Regular" ,0 , 5}, +{@"Plain" ,0 , 5}, +{@"Display" ,0 , 5}, +{@"Roman" ,0 , 5}, +{@"Semilight" ,0 , 5}, +{@"Medium" ,0 , 6}, +{@"Demi" ,0 , 7}, +{@"Demibold" ,0 , 7}, +{@"Semi" ,0 , 8}, +{@"Semibold" ,0 , 8}, +{@"Bold" ,NSBoldFontMask , 9}, +{@"Extra" ,NSBoldFontMask ,10}, +{@"Extrabold" ,NSBoldFontMask ,10}, +{@"Heavy" ,NSBoldFontMask ,11}, +{@"Heavyface" ,NSBoldFontMask ,11}, +{@"Ultrabold" ,NSBoldFontMask ,12}, +{@"Black" ,NSBoldFontMask ,12}, +{@"Ultra" ,NSBoldFontMask ,13}, +{@"Ultrablack" ,NSBoldFontMask ,13}, +{@"Fat" ,NSBoldFontMask ,13}, +{@"Extrablack" ,NSBoldFontMask ,14}, +{@"Obese" ,NSBoldFontMask ,14}, +{@"Nord" ,NSBoldFontMask ,14}, + +{@"Italic" ,NSItalicFontMask ,-1}, +{@"Oblique" ,NSItalicFontMask ,-1}, + +{@"Cond" ,NSCondensedFontMask ,-1}, +{@"Condensed" ,NSCondensedFontMask ,-1}, +{nil,0,-1} +}; + int i; + + *traits = 0; +// printf("do '%@'\n", s); + while ([s length] > 0) + { +// printf(" got '%@'\n", s); + if ([s hasSuffix: @"-"] || [s hasSuffix: @" "]) + { +// printf(" do -\n"); + s = [s substringToIndex: [s length] - 1]; + continue; + } + for (i = 0; suffix[i].str; i++) + { + if (![s hasSuffix: suffix[i].str]) + continue; +// printf(" found '%@'\n", suffix[i].str); + if (suffix[i].weight != -1) + *weight = suffix[i].weight; + (*traits) |= suffix[i].trait; + s = [s substringToIndex: [s length] - [suffix[i].str length]]; + break; + } + if (!suffix[i].str) + break; + } +// printf("end up with '%@'\n", s); + return [s length]; +} + + +static NSArray *fix_path(NSString *path, NSArray *files) +{ + int i, c = [files count]; + NSMutableArray *nfiles; + + if (!files) + return nil; + + nfiles = [[NSMutableArray alloc] init]; + for (i = 0; i < c; i++) + { + if ([[files objectAtIndex: i] isAbsolutePath]) + [nfiles addObject: [files objectAtIndex: i]]; + else + [nfiles addObject: [path stringByAppendingPathComponent: + [files objectAtIndex: i]]]; + } + return nfiles; +} + +/* TODO: handling of .font packages needs to be reworked */ +static void add_face(NSString *family, int family_weight, + unsigned int family_traits, NSDictionary *d, NSString *path, + BOOL from_nfont) +{ + FTFaceInfo *fi; + unsigned int weight; + unsigned int traits; + + NSString *fontName; + NSString *faceName, *rawFaceName; + + + fontName = [d objectForKey: @"PostScriptName"]; + if (!fontName) + { + NSLog(@"Warning: Face in %@ has no PostScriptName!",path); + return; + } + + if ([fcfg_allFontNames containsObject: fontName]) + return; + + fi = [[FTFaceInfo alloc] init]; + fi->familyName = [family copy]; + + if ([d objectForKey: @"LocalizedNames"]) + { + NSDictionary *l; + NSArray *lang; + int i; + + l = [d objectForKey: @"LocalizedNames"]; + lang = [NSUserDefaults userLanguages]; + faceName = nil; + rawFaceName = [l objectForKey: @"English"]; + for (i = 0; i < [lang count] && !faceName; i++) + { + faceName = [l objectForKey: [lang objectAtIndex: i]]; + } + if (!faceName) + faceName = rawFaceName; + if (!faceName) + { + faceName = @""; + NSLog(@"Warning: couldn't find localized face name or fallback for %@", + fontName); + } + } + else if ((faceName = [d objectForKey: @"Name"])) + { + rawFaceName = faceName; + /* TODO: Smarter localization? Parse space separated parts and + translate individually? */ + /* TODO: Need to define the strings somewhere, and make sure the + strings files get created. */ + faceName = [NSLocalizedStringFromTableInBundle(faceName,@"nfontFaceNames", + [NSBundle bundleForClass: [fi class]],nil) copy]; + fi->faceName = faceName; + } + else if (!from_nfont) + { /* try to guess something for .font packages */ + unsigned int dummy; + int split = traits_from_string(family,&dummy,&dummy); + rawFaceName = faceName = [family substringFromIndex: split]; + family = [family substringToIndex: split]; + faceName = [NSLocalizedStringFromTableInBundle(faceName,@"nfontFaceNames", + [NSBundle bundleForClass: [fi class]],nil) copy]; + fi->faceName = faceName; + } + else + { + NSLog(@"Warning: Can't find name for face %@ in %@!",fontName,path); + return; + } + + fi->displayName = [[family stringByAppendingString: @" "] + stringByAppendingString: faceName]; + + + weight = family_weight; + if (rawFaceName) + traits_from_string(rawFaceName, &traits, &weight); + + { + NSDictionary *sizes; + NSEnumerator *e; + NSString *size; + int i; + + sizes = [d objectForKey: @"ScreenFonts"]; + + fi->num_sizes = [sizes count]; + if (fi->num_sizes) + { + fi->sizes = malloc(sizeof(fi->sizes[0])*[sizes count]); + e = [sizes keyEnumerator]; + i = 0; + while ((size = [e nextObject])) + { + fi->sizes[i].pixel_size = [size intValue]; + fi->sizes[i].files = fix_path(path,[sizes objectForKey: size]); + NSDebugLLog(@"ftfont",@"%@ size %i files |%@|", + fontName,fi->sizes[i].pixel_size,fi->sizes[i].files); + i++; + } + } + } + + fi->files = fix_path(path,[d objectForKey: @"Files"]); + + if ([d objectForKey: @"Weight"]) + weight = [[d objectForKey: @"Weight"] intValue]; + fi->weight = weight; + + if ([d objectForKey: @"Traits"]) + traits = [[d objectForKey: @"Traits"] intValue]; + traits |= family_traits; + fi->traits = traits; + + if ([d objectForKey: @"RenderHints_hack"]) + fi->render_hints_hack + = strtol([[d objectForKey: @"RenderHints_hack"] cString], NULL, 0); + else + { + if (anti_alias_by_default) + fi->render_hints_hack = 0x10202; + else + fi->render_hints_hack = 0x00202; + } + + NSDebugLLog(@"ftfont", @"adding '%@' '%@'", fontName, fi); + + [fcfg_all_fonts setObject: fi forKey: fontName]; + [fcfg_allFontNames addObject: fontName]; + + { + NSArray *a; + NSMutableArray *ma; + a = [NSArray arrayWithObjects: + fontName, + faceName, + [NSNumber numberWithInt: weight], + [NSNumber numberWithUnsignedInt: traits], + nil]; + ma = [fcfg_allFontFamilies objectForKey: family]; + if (!ma) + { + ma = [[NSMutableArray alloc] init]; + [fcfg_allFontFamilies setObject: ma forKey: family]; + [ma release]; + } + [ma addObject: a]; + } + + DESTROY(fi); +} + +static void load_font_configuration(void) +{ + int i, j, k, c; + NSArray *paths; + NSString *path, *font_path; + NSFileManager *fm = [NSFileManager defaultManager]; + NSArray *files; + NSDictionary *d; + NSArray *faces; + NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; + + if ([ud objectForKey: @"GSFontAntiAlias"]) + anti_alias_by_default = [ud boolForKey: @"GSFontAntiAlias"]; + else + anti_alias_by_default = YES; + + fcfg_all_fonts = [[NSMutableDictionary alloc] init]; + fcfg_allFontFamilies = [[NSMutableDictionary alloc] init]; + fcfg_allFontNames = [[NSMutableArray alloc] init]; + + families_seen = [[NSMutableSet alloc] init]; + families_pending = [[NSMutableSet alloc] init]; + + paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSAllDomainsMask, YES); + for (i = 0; i < [paths count]; i++) + { + path = [paths objectAtIndex: i]; + path = [path stringByAppendingPathComponent: @"Fonts"]; + files = [fm directoryContentsAtPath: path]; + c = [files count]; + + for (j = 0; j < c; j++) + { + NSString *family; + NSDictionary *face_info; + NSString *font_info_path; + + int weight; + unsigned int traits; + + font_path = [files objectAtIndex: j]; + if (![[font_path pathExtension] isEqual: @"nfont"]) + continue; + + family = [font_path stringByDeletingPathExtension]; + + if ([families_seen member: family]) + { + NSDebugLLog(@"ftfont", @"'%@' already seen, skipping", family); + continue; + } + [families_seen addObject: family]; + + font_path = [path stringByAppendingPathComponent: font_path]; + + NSDebugLLog(@"ftfont",@"loading %@",font_path); + + font_info_path = [font_path stringByAppendingPathComponent: @"FontInfo.plist"]; + if (![fm fileExistsAtPath: font_info_path]) + continue; + d = [NSDictionary dictionaryWithContentsOfFile: font_info_path]; + if (!d) + continue; + + if ([d objectForKey: @"Family"]) + family = [d objectForKey: @"Family"]; + + if ([d objectForKey: @"Weight"]) + weight = [[d objectForKey: @"Weight"] intValue]; + else + weight = 5; + + if ([d objectForKey: @"Traits"]) + traits = [[d objectForKey: @"Traits"] intValue]; + else + traits = 0; + + faces = [d objectForKey: @"Faces"]; + if (![faces isKindOfClass: [NSArray class]]) + { + NSLog(@"Warning: %@ isn't a valid .nfont package, ignoring.", + font_path); + if ([faces isKindOfClass: [NSDictionary class]]) + NSLog(@"(it looks like an old-style .nfont package)"); + continue; + } + + for (k = 0; k < [faces count]; k++) + { + face_info = [faces objectAtIndex: k]; + add_face(family, weight, traits, face_info, font_path, YES); + } + } + + for (j = 0; j < c; j++) + { + NSString *family; + + font_path = [files objectAtIndex: j]; + if (![[font_path pathExtension] isEqual: @"font"]) + continue; + + family = [font_path stringByDeletingPathExtension]; + font_path = [path stringByAppendingPathComponent: font_path]; + d = [NSDictionary dictionaryWithObjectsAndKeys: + [NSArray arrayWithObjects: + family, + [family stringByAppendingPathExtension: @"afm"], + nil], + @"Files", + family,@"PostScriptName", + nil]; + add_face(family, 5, 0, d, font_path, NO); + } + [families_seen unionSet: families_pending]; + [families_pending removeAllObjects]; + } + + NSDebugLLog(@"ftfont", @"got %i fonts in %i families", + [fcfg_allFontNames count], [fcfg_allFontFamilies count]); + + if (![fcfg_allFontNames count]) + { + NSLog(@"No fonts found!"); + exit(1); + } + + DESTROY(families_seen); + DESTROY(families_pending); +} + +@implementation FTFontEnumerator + ++ (FTFaceInfo *) fontWithName: (NSString *)name +{ + FTFaceInfo *face; + + face = [fcfg_all_fonts objectForKey: name]; + if (!face) + { + NSLog (@"Font not found %@", name); + } + return face; +} + +- (void) enumerateFontsAndFamilies +{ + load_font_configuration(); + + ASSIGN(allFontNames, fcfg_allFontNames); + ASSIGN(allFontFamilies, fcfg_allFontFamilies); +} + +- (NSString *) defaultSystemFontName +{ + if ([fcfg_allFontNames containsObject: @"BitstreamVeraSans-Roman"]) + return @"BitstreamVeraSans-Roman"; + if ([fcfg_allFontNames containsObject: @"FreeSans"]) + return @"FreeSans"; + return @"Helvetica"; +} + +- (NSString *) defaultBoldSystemFontName +{ + if ([fcfg_allFontNames containsObject: @"BitstreamVeraSans-Bold"]) + return @"BitstreamVeraSans-Bold"; + if ([fcfg_allFontNames containsObject: @"FreeSansBold"]) + return @"FreeSansBold"; + return @"Helvetica-Bold"; +} + +- (NSString *) defaultFixedPitchFontName +{ + if ([fcfg_allFontNames containsObject: @"BitstreamVeraSansMono-Roman"]) + return @"BitstreamVeraSansMono-Roman"; + if ([fcfg_allFontNames containsObject: @"FreeMono"]) + return @"FreeMono"; + return @"Courier"; +} + +@end diff --git a/Source/art/GNUmakefile b/Source/art/GNUmakefile index f935f8d..f0feee3 100644 --- a/Source/art/GNUmakefile +++ b/Source/art/GNUmakefile @@ -9,19 +9,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. GNUSTEP_INSTALLATION_DOMAIN = SYSTEM @@ -38,6 +39,8 @@ art_OBJC_FILES = \ ARTGState.m \ blit-main.m \ ftfont.m \ + FTFontEnumerator.m \ + FTFaceInfo.m \ image.m \ composite.m \ path.m \ diff --git a/Source/art/GNUmakefile.preamble b/Source/art/GNUmakefile.preamble index 8ea6ca1..74ad751 100644 --- a/Source/art/GNUmakefile.preamble +++ b/Source/art/GNUmakefile.preamble @@ -8,19 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # # Flags dealing with compiling and linking diff --git a/Source/art/ReadRect.m b/Source/art/ReadRect.m index a55858a..ada2af3 100644 --- a/Source/art/ReadRect.m +++ b/Source/art/ReadRect.m @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include "ARTGState.h" diff --git a/Source/art/blit-main.m b/Source/art/blit-main.m index ae412a3..685ec62 100644 --- a/Source/art/blit-main.m +++ b/Source/art/blit-main.m @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/art/blit.h b/Source/art/blit.h index 8b32c4d..4364494 100644 --- a/Source/art/blit.h +++ b/Source/art/blit.h @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef blit_h diff --git a/Source/art/blit.m b/Source/art/blit.m index 4137829..fee232b 100644 --- a/Source/art/blit.m +++ b/Source/art/blit.m @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* diff --git a/Source/art/blit_scrapheap.m b/Source/art/blit_scrapheap.m index 1d309a9..a0c5b27 100644 --- a/Source/art/blit_scrapheap.m +++ b/Source/art/blit_scrapheap.m @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* diff --git a/Source/art/composite.m b/Source/art/composite.m index 81010d5..ea369f7 100644 --- a/Source/art/composite.m +++ b/Source/art/composite.m @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/art/ftfont-old.m b/Source/art/ftfont-old.m index 502ffaa..85f85ea 100644 --- a/Source/art/ftfont-old.m +++ b/Source/art/ftfont-old.m @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include @@ -40,6 +42,8 @@ #include "gsc/GSGState.h" #include "ftfont.h" +#include "FTFontEnumerator.h" +#include "FTFaceInfo.h" #include "blit.h" @@ -73,12 +77,6 @@ from the back-art-subpixel-text defaults key */ static int subpixel_text; - -static BOOL anti_alias_by_default; - - -@class FTFaceInfo; - #define CACHE_SIZE 257 @interface FTFontInfo : GSFontInfo @@ -121,512 +119,6 @@ static BOOL anti_alias_by_default; @end -static NSMutableArray *fcfg_allFontNames; -static NSMutableDictionary *fcfg_allFontFamilies; -static NSMutableDictionary *fcfg_all_fonts; - - -static NSMutableSet *families_seen, *families_pending; - - -@interface FTFaceInfo : NSObject -{ -@public - NSString *familyName; - - /* the following two are localized */ - NSString *faceName; - NSString *displayName; - - NSArray *files; - struct - { - int pixel_size; - NSArray *files; - } *sizes; - int num_sizes; - - int weight; - unsigned int traits; - - /* - hinting hints - 0: 1 to use the auto-hinter - 1: 1 to use hinting - byte 0 and 1 contain hinting hints for un-antialiased and antialiased - rendering, respectively. - - 16: 0=un-antialiased by default, 1=antialiased by default - */ - unsigned int render_hints_hack; -} -@end - -@implementation FTFaceInfo - --(NSString *) description -{ - return [NSString stringWithFormat: @"", - self, displayName, files, weight, traits]; -} - -/* FTFaceInfo:s should never be deallocated */ --(void) dealloc -{ - NSLog(@"Warning: -dealloc called on %@",self); -} - -@end - - -#if 0 - -/* -This is a list of "standard" face names. It is here so make_strings can pick -it up and generate .strings files with them. -*/ - -NSLocalizedStringFromTable(@"Book", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Regular", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Roman", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Medium", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Demi", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Demibold", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Bold", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Heavy", @"nfontFaceNames", @"") - -NSLocalizedStringFromTable(@"Italic", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Oblique", @"nfontFaceNames", @"") - -NSLocalizedStringFromTable(@"Bold Italic", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Bold Oblique", @"nfontFaceNames", @"") - -#endif - - -static int traits_from_string(NSString *s, unsigned int *traits, unsigned int *weight) -{ -static struct -{ - NSString *str; - unsigned int trait; - int weight; -} suffix[] = { -/* TODO */ -{@"Normal" ,0 ,-1}, - -{@"Ultralight" ,0 , 1}, -{@"Thin" ,0 , 2}, -{@"Light" ,0 , 3}, -{@"Extralight" ,0 , 3}, -{@"Book" ,0 , 4}, -{@"Regular" ,0 , 5}, -{@"Plain" ,0 , 5}, -{@"Display" ,0 , 5}, -{@"Roman" ,0 , 5}, -{@"Semilight" ,0 , 5}, -{@"Medium" ,0 , 6}, -{@"Demi" ,0 , 7}, -{@"Demibold" ,0 , 7}, -{@"Semi" ,0 , 8}, -{@"Semibold" ,0 , 8}, -{@"Bold" ,NSBoldFontMask , 9}, -{@"Extra" ,NSBoldFontMask ,10}, -{@"Extrabold" ,NSBoldFontMask ,10}, -{@"Heavy" ,NSBoldFontMask ,11}, -{@"Heavyface" ,NSBoldFontMask ,11}, -{@"Ultrabold" ,NSBoldFontMask ,12}, -{@"Black" ,NSBoldFontMask ,12}, -{@"Ultra" ,NSBoldFontMask ,13}, -{@"Ultrablack" ,NSBoldFontMask ,13}, -{@"Fat" ,NSBoldFontMask ,13}, -{@"Extrablack" ,NSBoldFontMask ,14}, -{@"Obese" ,NSBoldFontMask ,14}, -{@"Nord" ,NSBoldFontMask ,14}, - -{@"Italic" ,NSItalicFontMask ,-1}, -{@"Oblique" ,NSItalicFontMask ,-1}, - -{@"Cond" ,NSCondensedFontMask ,-1}, -{@"Condensed" ,NSCondensedFontMask ,-1}, -{nil,0,-1} -}; - int i; - - *traits = 0; -// printf("do '%@'\n", s); - while ([s length] > 0) - { -// printf(" got '%@'\n", s); - if ([s hasSuffix: @"-"] || [s hasSuffix: @" "]) - { -// printf(" do -\n"); - s = [s substringToIndex: [s length] - 1]; - continue; - } - for (i = 0; suffix[i].str; i++) - { - if (![s hasSuffix: suffix[i].str]) - continue; -// printf(" found '%@'\n", suffix[i].str); - if (suffix[i].weight != -1) - *weight = suffix[i].weight; - (*traits) |= suffix[i].trait; - s = [s substringToIndex: [s length] - [suffix[i].str length]]; - break; - } - if (!suffix[i].str) - break; - } -// printf("end up with '%@'\n", s); - return [s length]; -} - - -static NSArray *fix_path(NSString *path, NSArray *files) -{ - int i, c = [files count]; - NSMutableArray *nfiles; - - if (!files) - return nil; - - nfiles = [[NSMutableArray alloc] init]; - for (i = 0; i < c; i++) - { - if ([[files objectAtIndex: i] isAbsolutePath]) - [nfiles addObject: [files objectAtIndex: i]]; - else - [nfiles addObject: [path stringByAppendingPathComponent: - [files objectAtIndex: i]]]; - } - return nfiles; -} - -/* TODO: handling of .font packages needs to be reworked */ -static void add_face(NSString *family, int family_weight, - unsigned int family_traits, NSDictionary *d, NSString *path, - BOOL from_nfont) -{ - FTFaceInfo *fi; - int weight; - unsigned int traits; - - NSString *fontName; - NSString *faceName, *rawFaceName; - - - fontName = [d objectForKey: @"PostScriptName"]; - if (!fontName) - { - NSLog(@"Warning: Face in %@ has no PostScriptName!",path); - return; - } - - if ([fcfg_allFontNames containsObject: fontName]) - return; - - fi = [[FTFaceInfo alloc] init]; - fi->familyName = [family copy]; - - if ([d objectForKey: @"LocalizedNames"]) - { - NSDictionary *l; - NSArray *lang; - int i; - - l = [d objectForKey: @"LocalizedNames"]; - lang = [NSUserDefaults userLanguages]; - faceName = nil; - rawFaceName = [l objectForKey: @"English"]; - for (i = 0; i < [lang count] && !faceName; i++) - { - faceName = [l objectForKey: [lang objectAtIndex: i]]; - } - if (!faceName) - faceName = rawFaceName; - if (!faceName) - { - faceName = @""; - NSLog(@"Warning: couldn't find localized face name or fallback for %@", - fontName); - } - } - else if ((faceName = [d objectForKey: @"Name"])) - { - rawFaceName = faceName; - /* TODO: Smarter localization? Parse space separated parts and - translate individually? */ - /* TODO: Need to define the strings somewhere, and make sure the - strings files get created. */ - faceName = [NSLocalizedStringFromTableInBundle(faceName,@"nfontFaceNames", - [NSBundle bundleForClass: [fi class]],nil) copy]; - fi->faceName = faceName; - } - else if (!from_nfont) - { /* try to guess something for .font packages */ - int dummy; - int split = traits_from_string(family,&dummy,&dummy); - rawFaceName = faceName = [family substringFromIndex: split]; - family = [family substringToIndex: split]; - faceName = [NSLocalizedStringFromTableInBundle(faceName,@"nfontFaceNames", - [NSBundle bundleForClass: [fi class]],nil) copy]; - fi->faceName = faceName; - } - else - { - NSLog(@"Warning: Can't find name for face %@ in %@!",fontName,path); - return; - } - - fi->displayName = [[family stringByAppendingString: @" "] - stringByAppendingString: faceName]; - - - weight = family_weight; - if (rawFaceName) - traits_from_string(rawFaceName, &traits, &weight); - - { - NSDictionary *sizes; - NSEnumerator *e; - NSString *size; - int i; - - sizes = [d objectForKey: @"ScreenFonts"]; - - fi->num_sizes = [sizes count]; - if (fi->num_sizes) - { - fi->sizes = malloc(sizeof(fi->sizes[0])*[sizes count]); - e = [sizes keyEnumerator]; - i = 0; - while ((size = [e nextObject])) - { - fi->sizes[i].pixel_size = [size intValue]; - fi->sizes[i].files = fix_path(path,[sizes objectForKey: size]); - NSDebugLLog(@"ftfont",@"%@ size %i files |%@|\n", - fontName,fi->sizes[i].pixel_size,fi->sizes[i].files); - i++; - } - } - } - - fi->files = fix_path(path,[d objectForKey: @"Files"]); - - if ([d objectForKey: @"Weight"]) - weight = [[d objectForKey: @"Weight"] intValue]; - fi->weight = weight; - - if ([d objectForKey: @"Traits"]) - traits = [[d objectForKey: @"Traits"] intValue]; - traits |= family_traits; - fi->traits = traits; - - if ([d objectForKey: @"RenderHints_hack"]) - fi->render_hints_hack=strtol([[d objectForKey: @"RenderHints_hack"] cString],NULL,0); - else - { - if (anti_alias_by_default) - fi->render_hints_hack=0x10202; - else - fi->render_hints_hack=0x00202; - } - - NSDebugLLog(@"ftfont", @"adding '%@' '%@'", fontName, fi); - - [fcfg_all_fonts setObject: fi forKey: fontName]; - [fcfg_allFontNames addObject: fontName]; - - { - NSArray *a; - NSMutableArray *ma; - a = [NSArray arrayWithObjects: - fontName, - faceName, - [NSNumber numberWithInt: weight], - [NSNumber numberWithUnsignedInt: traits], - nil]; - ma = [fcfg_allFontFamilies objectForKey: family]; - if (!ma) - { - ma = [[NSMutableArray alloc] init]; - [fcfg_allFontFamilies setObject: ma forKey: family]; - [ma release]; - } - [ma addObject: a]; - } - - DESTROY(fi); -} - - -static void load_font_configuration(void) -{ - int i, j, k, c; - NSArray *paths; - NSString *path, *font_path; - NSFileManager *fm = [NSFileManager defaultManager]; - NSArray *files; - NSDictionary *d; - NSArray *faces; - - fcfg_all_fonts = [[NSMutableDictionary alloc] init]; - fcfg_allFontFamilies = [[NSMutableDictionary alloc] init]; - fcfg_allFontNames = [[NSMutableArray alloc] init]; - - families_seen = [[NSMutableSet alloc] init]; - families_pending = [[NSMutableSet alloc] init]; - - paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSAllDomainsMask, YES); - for (i = 0; i < [paths count]; i++) - { - path = [paths objectAtIndex: i]; - path = [path stringByAppendingPathComponent: @"Fonts"]; - files = [fm directoryContentsAtPath: path]; - c = [files count]; - - for (j = 0; j < c; j++) - { - NSString *family; - NSDictionary *face_info; - NSString *font_info_path; - - int weight; - unsigned int traits; - - font_path = [files objectAtIndex: j]; - if (![[font_path pathExtension] isEqual: @"nfont"]) - continue; - - family = [font_path stringByDeletingPathExtension]; - - if ([families_seen member: family]) - { - NSDebugLLog(@"ftfont", @"'%@' already seen, skipping", family); - continue; - } - [families_seen addObject: family]; - - font_path = [path stringByAppendingPathComponent: font_path]; - - NSDebugLLog(@"ftfont",@"loading %@",font_path); - - font_info_path = [font_path stringByAppendingPathComponent: @"FontInfo.plist"]; - if (![fm fileExistsAtPath: font_info_path]) - continue; - d = [NSDictionary dictionaryWithContentsOfFile: font_info_path]; - if (!d) - continue; - - if ([d objectForKey: @"Family"]) - family = [d objectForKey: @"Family"]; - - if ([d objectForKey: @"Weight"]) - weight = [[d objectForKey: @"Weight"] intValue]; - else - weight = 5; - - if ([d objectForKey: @"Traits"]) - traits = [[d objectForKey: @"Traits"] intValue]; - else - traits = 0; - - faces = [d objectForKey: @"Faces"]; - if (![faces isKindOfClass: [NSArray class]]) - { - NSLog(@"Warning: %@ isn't a valid .nfont package, ignoring.", - font_path); - if ([faces isKindOfClass: [NSDictionary class]]) - NSLog(@"(it looks like an old-style .nfont package)"); - continue; - } - - for (k = 0; k < [faces count]; k++) - { - face_info = [faces objectAtIndex: k]; - add_face(family, weight, traits, face_info, font_path, YES); - } - } - - for (j = 0; j < c; j++) - { - NSString *family; - - font_path = [files objectAtIndex: j]; - if (![[font_path pathExtension] isEqual: @"font"]) - continue; - - family = [font_path stringByDeletingPathExtension]; - font_path = [path stringByAppendingPathComponent: font_path]; - d = [NSDictionary dictionaryWithObjectsAndKeys: - [NSArray arrayWithObjects: - family, - [family stringByAppendingPathExtension: @"afm"], - nil], - @"Files", - family,@"PostScriptName", - nil]; - add_face(family, 5, 0, d, font_path, NO); - } - [families_seen unionSet: families_pending]; - [families_pending removeAllObjects]; - } - - NSDebugLLog(@"ftfont", @"got %i fonts in %i families", - [fcfg_allFontNames count], [fcfg_allFontFamilies count]); - - if (![fcfg_allFontNames count]) - { - NSLog(@"No fonts found!"); - exit(1); - } - - DESTROY(families_seen); - DESTROY(families_pending); -} - - -@interface FTFontEnumerator : GSFontEnumerator -@end - -@implementation FTFontEnumerator --(void) enumerateFontsAndFamilies -{ - ASSIGN(allFontNames, fcfg_allFontNames); - ASSIGN(allFontFamilies, fcfg_allFontFamilies); -} - --(NSString *) defaultSystemFontName -{ - if ([fcfg_allFontNames containsObject: @"BitstreamVeraSans-Roman"]) - return @"BitstreamVeraSans-Roman"; - if ([fcfg_allFontNames containsObject: @"FreeSans"]) - return @"FreeSans"; - return @"Helvetica"; -} - --(NSString *) defaultBoldSystemFontName -{ - if ([fcfg_allFontNames containsObject: @"BitstreamVeraSans-Bold"]) - return @"BitstreamVeraSans-Bold"; - if ([fcfg_allFontNames containsObject: @"FreeSansBold"]) - return @"FreeSansBold"; - return @"Helvetica-Bold"; -} - --(NSString *) defaultFixedPitchFontName -{ - if ([fcfg_allFontNames containsObject: @"BitstreamVeraSansMono-Roman"]) - return @"BitstreamVeraSansMono-Roman"; - if ([fcfg_allFontNames containsObject: @"FreeMono"]) - return @"FreeMono"; - return @"Courier"; -} - -@end - - static FT_Library ft_library; static FTC_Manager ftc_manager; static FTC_ImageCache ftc_imagecache; @@ -692,7 +184,7 @@ static FT_Error ft_get_face(FTC_FaceID fid, FT_Library lib, FT_Pointer data, FT_ fmatrix[3], fmatrix[4], fmatrix[5], p_screenFont); - font_entry = [fcfg_all_fonts objectForKey: name]; + font_entry = [FTFontEnumerator fontWithName: name]; if (!font_entry) { [self release]; @@ -2830,11 +2322,6 @@ static int filters[3][7]= subpixel_text = [ud integerForKey: @"back-art-subpixel-text"]; - if ([ud objectForKey: @"GSFontAntiAlias"]) - anti_alias_by_default = [ud boolForKey: @"GSFontAntiAlias"]; - else - anti_alias_by_default = YES; - /* To make it easier to find an optimal (or at least good) filter, the filters are configurable (for now). */ for (i = 0; i < 3; i++) @@ -2875,8 +2362,6 @@ static int filters[3][7]= } } } - - load_font_configuration(); } diff --git a/Source/art/ftfont.h b/Source/art/ftfont.h index 060b501..bbc2aae 100644 --- a/Source/art/ftfont.h +++ b/Source/art/ftfont.h @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef ftfont_h diff --git a/Source/art/ftfont.m b/Source/art/ftfont.m index 5515c0d..f6be12e 100644 --- a/Source/art/ftfont.m +++ b/Source/art/ftfont.m @@ -6,20 +6,21 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include #include FT_FREETYPE_H @@ -52,6 +53,8 @@ #include "gsc/GSGState.h" #include "ftfont.h" +#include "FTFontEnumerator.h" +#include "FTFaceInfo.h" #include "blit.h" @@ -82,10 +85,6 @@ from the back-art-subpixel-text defaults key static int subpixel_text; -static BOOL anti_alias_by_default; - - -@class FTFaceInfo; #define CACHE_SIZE 257 @@ -126,514 +125,6 @@ static BOOL anti_alias_by_default; @end -static NSMutableArray *fcfg_allFontNames; -static NSMutableDictionary *fcfg_allFontFamilies; -static NSMutableDictionary *fcfg_all_fonts; - - -static NSMutableSet *families_seen, *families_pending; - - -@interface FTFaceInfo : NSObject -{ -@public - NSString *familyName; - - /* the following two are localized */ - NSString *faceName; - NSString *displayName; - - NSArray *files; - struct - { - int pixel_size; - NSArray *files; - } *sizes; - int num_sizes; - - int weight; - unsigned int traits; - - /* - hinting hints - 0: 1 to use the auto-hinter - 1: 1 to use hinting - byte 0 and 1 contain hinting hints for un-antialiased and antialiased - rendering, respectively. - - 16: 0=un-antialiased by default, 1=antialiased by default - */ - unsigned int render_hints_hack; -} -@end - -@implementation FTFaceInfo - -- (NSString *) description -{ - return [NSString stringWithFormat: @"", - self, displayName, files, weight, traits]; -} - -/* FTFaceInfo:s should never be deallocated */ -- (void) dealloc -{ - NSLog(@"Warning: -dealloc called on %@",self); - GSNOSUPERDEALLOC; -} - -@end - - -#if 0 - -/* -This is a list of "standard" face names. It is here so make_strings can pick -it up and generate .strings files with them. -*/ - -NSLocalizedStringFromTable(@"Book", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Regular", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Roman", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Medium", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Demi", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Demibold", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Bold", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Heavy", @"nfontFaceNames", @"") - -NSLocalizedStringFromTable(@"Italic", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Oblique", @"nfontFaceNames", @"") - -NSLocalizedStringFromTable(@"Bold Italic", @"nfontFaceNames", @"") -NSLocalizedStringFromTable(@"Bold Oblique", @"nfontFaceNames", @"") - -#endif - - -static int traits_from_string(NSString *s, unsigned int *traits, unsigned int *weight) -{ -static struct -{ - NSString *str; - unsigned int trait; - int weight; -} suffix[] = { -/* TODO */ -{@"Normal" ,0 ,-1}, - -{@"Ultralight" ,0 , 1}, -{@"Thin" ,0 , 2}, -{@"Light" ,0 , 3}, -{@"Extralight" ,0 , 3}, -{@"Book" ,0 , 4}, -{@"Regular" ,0 , 5}, -{@"Plain" ,0 , 5}, -{@"Display" ,0 , 5}, -{@"Roman" ,0 , 5}, -{@"Semilight" ,0 , 5}, -{@"Medium" ,0 , 6}, -{@"Demi" ,0 , 7}, -{@"Demibold" ,0 , 7}, -{@"Semi" ,0 , 8}, -{@"Semibold" ,0 , 8}, -{@"Bold" ,NSBoldFontMask , 9}, -{@"Extra" ,NSBoldFontMask ,10}, -{@"Extrabold" ,NSBoldFontMask ,10}, -{@"Heavy" ,NSBoldFontMask ,11}, -{@"Heavyface" ,NSBoldFontMask ,11}, -{@"Ultrabold" ,NSBoldFontMask ,12}, -{@"Black" ,NSBoldFontMask ,12}, -{@"Ultra" ,NSBoldFontMask ,13}, -{@"Ultrablack" ,NSBoldFontMask ,13}, -{@"Fat" ,NSBoldFontMask ,13}, -{@"Extrablack" ,NSBoldFontMask ,14}, -{@"Obese" ,NSBoldFontMask ,14}, -{@"Nord" ,NSBoldFontMask ,14}, - -{@"Italic" ,NSItalicFontMask ,-1}, -{@"Oblique" ,NSItalicFontMask ,-1}, - -{@"Cond" ,NSCondensedFontMask ,-1}, -{@"Condensed" ,NSCondensedFontMask ,-1}, -{nil,0,-1} -}; - int i; - - *traits = 0; -// printf("do '%@'\n", s); - while ([s length] > 0) - { -// printf(" got '%@'\n", s); - if ([s hasSuffix: @"-"] || [s hasSuffix: @" "]) - { -// printf(" do -\n"); - s = [s substringToIndex: [s length] - 1]; - continue; - } - for (i = 0; suffix[i].str; i++) - { - if (![s hasSuffix: suffix[i].str]) - continue; -// printf(" found '%@'\n", suffix[i].str); - if (suffix[i].weight != -1) - *weight = suffix[i].weight; - (*traits) |= suffix[i].trait; - s = [s substringToIndex: [s length] - [suffix[i].str length]]; - break; - } - if (!suffix[i].str) - break; - } -// printf("end up with '%@'\n", s); - return [s length]; -} - - -static NSArray *fix_path(NSString *path, NSArray *files) -{ - int i, c = [files count]; - NSMutableArray *nfiles; - - if (!files) - return nil; - - nfiles = [[NSMutableArray alloc] init]; - for (i = 0; i < c; i++) - { - if ([[files objectAtIndex: i] isAbsolutePath]) - [nfiles addObject: [files objectAtIndex: i]]; - else - [nfiles addObject: [path stringByAppendingPathComponent: - [files objectAtIndex: i]]]; - } - return nfiles; -} - -/* TODO: handling of .font packages needs to be reworked */ -static void add_face(NSString *family, int family_weight, - unsigned int family_traits, NSDictionary *d, NSString *path, - BOOL from_nfont) -{ - FTFaceInfo *fi; - unsigned int weight; - unsigned int traits; - - NSString *fontName; - NSString *faceName, *rawFaceName; - - - fontName = [d objectForKey: @"PostScriptName"]; - if (!fontName) - { - NSLog(@"Warning: Face in %@ has no PostScriptName!",path); - return; - } - - if ([fcfg_allFontNames containsObject: fontName]) - return; - - fi = [[FTFaceInfo alloc] init]; - fi->familyName = [family copy]; - - if ([d objectForKey: @"LocalizedNames"]) - { - NSDictionary *l; - NSArray *lang; - int i; - - l = [d objectForKey: @"LocalizedNames"]; - lang = [NSUserDefaults userLanguages]; - faceName = nil; - rawFaceName = [l objectForKey: @"English"]; - for (i = 0; i < [lang count] && !faceName; i++) - { - faceName = [l objectForKey: [lang objectAtIndex: i]]; - } - if (!faceName) - faceName = rawFaceName; - if (!faceName) - { - faceName = @""; - NSLog(@"Warning: couldn't find localized face name or fallback for %@", - fontName); - } - } - else if ((faceName = [d objectForKey: @"Name"])) - { - rawFaceName = faceName; - /* TODO: Smarter localization? Parse space separated parts and - translate individually? */ - /* TODO: Need to define the strings somewhere, and make sure the - strings files get created. */ - faceName = [NSLocalizedStringFromTableInBundle(faceName,@"nfontFaceNames", - [NSBundle bundleForClass: [fi class]],nil) copy]; - fi->faceName = faceName; - } - else if (!from_nfont) - { /* try to guess something for .font packages */ - unsigned int dummy; - int split = traits_from_string(family,&dummy,&dummy); - rawFaceName = faceName = [family substringFromIndex: split]; - family = [family substringToIndex: split]; - faceName = [NSLocalizedStringFromTableInBundle(faceName,@"nfontFaceNames", - [NSBundle bundleForClass: [fi class]],nil) copy]; - fi->faceName = faceName; - } - else - { - NSLog(@"Warning: Can't find name for face %@ in %@!",fontName,path); - return; - } - - fi->displayName = [[family stringByAppendingString: @" "] - stringByAppendingString: faceName]; - - - weight = family_weight; - if (rawFaceName) - traits_from_string(rawFaceName, &traits, &weight); - - { - NSDictionary *sizes; - NSEnumerator *e; - NSString *size; - int i; - - sizes = [d objectForKey: @"ScreenFonts"]; - - fi->num_sizes = [sizes count]; - if (fi->num_sizes) - { - fi->sizes = malloc(sizeof(fi->sizes[0])*[sizes count]); - e = [sizes keyEnumerator]; - i = 0; - while ((size = [e nextObject])) - { - fi->sizes[i].pixel_size = [size intValue]; - fi->sizes[i].files = fix_path(path,[sizes objectForKey: size]); - NSDebugLLog(@"ftfont",@"%@ size %i files |%@|", - fontName,fi->sizes[i].pixel_size,fi->sizes[i].files); - i++; - } - } - } - - fi->files = fix_path(path,[d objectForKey: @"Files"]); - - if ([d objectForKey: @"Weight"]) - weight = [[d objectForKey: @"Weight"] intValue]; - fi->weight = weight; - - if ([d objectForKey: @"Traits"]) - traits = [[d objectForKey: @"Traits"] intValue]; - traits |= family_traits; - fi->traits = traits; - - if ([d objectForKey: @"RenderHints_hack"]) - fi->render_hints_hack - = strtol([[d objectForKey: @"RenderHints_hack"] cString], NULL, 0); - else - { - if (anti_alias_by_default) - fi->render_hints_hack = 0x10202; - else - fi->render_hints_hack = 0x00202; - } - - NSDebugLLog(@"ftfont", @"adding '%@' '%@'", fontName, fi); - - [fcfg_all_fonts setObject: fi forKey: fontName]; - [fcfg_allFontNames addObject: fontName]; - - { - NSArray *a; - NSMutableArray *ma; - a = [NSArray arrayWithObjects: - fontName, - faceName, - [NSNumber numberWithInt: weight], - [NSNumber numberWithUnsignedInt: traits], - nil]; - ma = [fcfg_allFontFamilies objectForKey: family]; - if (!ma) - { - ma = [[NSMutableArray alloc] init]; - [fcfg_allFontFamilies setObject: ma forKey: family]; - [ma release]; - } - [ma addObject: a]; - } - - DESTROY(fi); -} - - -static void load_font_configuration(void) -{ - int i, j, k, c; - NSArray *paths; - NSString *path, *font_path; - NSFileManager *fm = [NSFileManager defaultManager]; - NSArray *files; - NSDictionary *d; - NSArray *faces; - - fcfg_all_fonts = [[NSMutableDictionary alloc] init]; - fcfg_allFontFamilies = [[NSMutableDictionary alloc] init]; - fcfg_allFontNames = [[NSMutableArray alloc] init]; - - families_seen = [[NSMutableSet alloc] init]; - families_pending = [[NSMutableSet alloc] init]; - - paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSAllDomainsMask, YES); - for (i = 0; i < [paths count]; i++) - { - path = [paths objectAtIndex: i]; - path = [path stringByAppendingPathComponent: @"Fonts"]; - files = [fm directoryContentsAtPath: path]; - c = [files count]; - - for (j = 0; j < c; j++) - { - NSString *family; - NSDictionary *face_info; - NSString *font_info_path; - - int weight; - unsigned int traits; - - font_path = [files objectAtIndex: j]; - if (![[font_path pathExtension] isEqual: @"nfont"]) - continue; - - family = [font_path stringByDeletingPathExtension]; - - if ([families_seen member: family]) - { - NSDebugLLog(@"ftfont", @"'%@' already seen, skipping", family); - continue; - } - [families_seen addObject: family]; - - font_path = [path stringByAppendingPathComponent: font_path]; - - NSDebugLLog(@"ftfont",@"loading %@",font_path); - - font_info_path = [font_path stringByAppendingPathComponent: @"FontInfo.plist"]; - if (![fm fileExistsAtPath: font_info_path]) - continue; - d = [NSDictionary dictionaryWithContentsOfFile: font_info_path]; - if (!d) - continue; - - if ([d objectForKey: @"Family"]) - family = [d objectForKey: @"Family"]; - - if ([d objectForKey: @"Weight"]) - weight = [[d objectForKey: @"Weight"] intValue]; - else - weight = 5; - - if ([d objectForKey: @"Traits"]) - traits = [[d objectForKey: @"Traits"] intValue]; - else - traits = 0; - - faces = [d objectForKey: @"Faces"]; - if (![faces isKindOfClass: [NSArray class]]) - { - NSLog(@"Warning: %@ isn't a valid .nfont package, ignoring.", - font_path); - if ([faces isKindOfClass: [NSDictionary class]]) - NSLog(@"(it looks like an old-style .nfont package)"); - continue; - } - - for (k = 0; k < [faces count]; k++) - { - face_info = [faces objectAtIndex: k]; - add_face(family, weight, traits, face_info, font_path, YES); - } - } - - for (j = 0; j < c; j++) - { - NSString *family; - - font_path = [files objectAtIndex: j]; - if (![[font_path pathExtension] isEqual: @"font"]) - continue; - - family = [font_path stringByDeletingPathExtension]; - font_path = [path stringByAppendingPathComponent: font_path]; - d = [NSDictionary dictionaryWithObjectsAndKeys: - [NSArray arrayWithObjects: - family, - [family stringByAppendingPathExtension: @"afm"], - nil], - @"Files", - family,@"PostScriptName", - nil]; - add_face(family, 5, 0, d, font_path, NO); - } - [families_seen unionSet: families_pending]; - [families_pending removeAllObjects]; - } - - NSDebugLLog(@"ftfont", @"got %i fonts in %i families", - [fcfg_allFontNames count], [fcfg_allFontFamilies count]); - - if (![fcfg_allFontNames count]) - { - NSLog(@"No fonts found!"); - exit(1); - } - - DESTROY(families_seen); - DESTROY(families_pending); -} - - -@interface FTFontEnumerator : GSFontEnumerator -@end - -@implementation FTFontEnumerator -- (void) enumerateFontsAndFamilies -{ - ASSIGN(allFontNames, fcfg_allFontNames); - ASSIGN(allFontFamilies, fcfg_allFontFamilies); -} - -- (NSString *) defaultSystemFontName -{ - if ([fcfg_allFontNames containsObject: @"BitstreamVeraSans-Roman"]) - return @"BitstreamVeraSans-Roman"; - if ([fcfg_allFontNames containsObject: @"FreeSans"]) - return @"FreeSans"; - return @"Helvetica"; -} - -- (NSString *) defaultBoldSystemFontName -{ - if ([fcfg_allFontNames containsObject: @"BitstreamVeraSans-Bold"]) - return @"BitstreamVeraSans-Bold"; - if ([fcfg_allFontNames containsObject: @"FreeSansBold"]) - return @"FreeSansBold"; - return @"Helvetica-Bold"; -} - -- (NSString *) defaultFixedPitchFontName -{ - if ([fcfg_allFontNames containsObject: @"BitstreamVeraSansMono-Roman"]) - return @"BitstreamVeraSansMono-Roman"; - if ([fcfg_allFontNames containsObject: @"FreeMono"]) - return @"FreeMono"; - return @"Courier"; -} - -@end - - static FT_Library ft_library; static FTC_Manager ftc_manager; static FTC_ImageCache ftc_imagecache; @@ -696,7 +187,7 @@ static FT_Error ft_get_face(FTC_FaceID fid, FT_Library lib, FT_Pointer data, FT_ fmatrix[3], fmatrix[4], fmatrix[5], p_screenFont); - font_entry = [fcfg_all_fonts objectForKey: name]; + font_entry = [FTFontEnumerator fontWithName: name]; if (!font_entry) { [self release]; @@ -876,38 +367,47 @@ static FT_Error ft_get_face(FTC_FaceID fid, FT_Library lib, FT_Pointer data, FT_ { NSMutableCharacterSet *m = [NSMutableCharacterSet new]; unsigned count = 0; - FT_Face face = ft_size->face; + FT_Face face; FT_ULong charcode; FT_UInt glyphindex; + FT_Size size; - charcode = FT_Get_First_Char(face, &glyphindex); + if (FTC_Manager_LookupSize(ftc_manager, &scaler, &size)) + return nil; + face = size->face; + + charcode = FT_Get_First_Char(face, &glyphindex); if (glyphindex != 0) { NSRange range; - range.location = charcode; - range.length = 0; - - while (glyphindex != 0) - { - count++; - if (charcode == NSMaxRange(range)) - { - range.length++; - } - else - { - [m addCharactersInRange: range]; - range.location = charcode; - range.length = 0; - } - charcode = FT_Get_Next_Char(face, charcode, &glyphindex); - } - if (range.length > 0) - { - [m addCharactersInRange: range]; - } - } + range.location = charcode; + range.length = 1; + + while (glyphindex != 0) + { + count++; + if (charcode >= 1114112) + { + break; + } + if (charcode == NSMaxRange(range)) + { + range.length++; + } + else + { + [m addCharactersInRange: range]; + range.location = charcode; + range.length = 1; + } + charcode = FT_Get_Next_Char(face, charcode, &glyphindex); + } + if (range.length > 0) + { + [m addCharactersInRange: range]; + } + } coveredCharacterSet = [m copy]; numberOfGlyphs = count; RELEASE(m); @@ -2409,7 +1909,7 @@ p(t)=q(t) /* TODO: try to combine charpath and NSBezierPath handling? */ -static int charpath_move_to(FT_Vector *to, void *user) +static int charpath_move_to(const FT_Vector *to, void *user) { GSGState *self = (GSGState *)user; NSPoint d; @@ -2420,7 +1920,7 @@ static int charpath_move_to(FT_Vector *to, void *user) return 0; } -static int charpath_line_to(FT_Vector *to, void *user) +static int charpath_line_to(const FT_Vector *to, void *user) { GSGState *self = (GSGState *)user; NSPoint d; @@ -2430,7 +1930,7 @@ static int charpath_line_to(FT_Vector *to, void *user) return 0; } -static int charpath_conic_to(FT_Vector *c1, FT_Vector *to, void *user) +static int charpath_conic_to(const FT_Vector *c1, const FT_Vector *to, void *user) { GSGState *self = (GSGState *)user; NSPoint a, b, c, d; @@ -2447,7 +1947,8 @@ static int charpath_conic_to(FT_Vector *c1, FT_Vector *to, void *user) return 0; } -static int charpath_cubic_to(FT_Vector *c1, FT_Vector *c2, FT_Vector *to, void *user) +static int charpath_cubic_to(const FT_Vector *c1, const FT_Vector *c2, + const FT_Vector *to, void *user) { GSGState *self = (GSGState *)user; NSPoint b, c, d; @@ -2471,7 +1972,7 @@ static FT_Outline_Funcs charpath_funcs = { }; -static int bezierpath_move_to(FT_Vector *to, void *user) +static int bezierpath_move_to(const FT_Vector *to, void *user) { NSBezierPath *path = (NSBezierPath *)user; NSPoint d; @@ -2482,7 +1983,7 @@ static int bezierpath_move_to(FT_Vector *to, void *user) return 0; } -static int bezierpath_line_to(FT_Vector *to, void *user) +static int bezierpath_line_to(const FT_Vector *to, void *user) { NSBezierPath *path = (NSBezierPath *)user; NSPoint d; @@ -2492,7 +1993,7 @@ static int bezierpath_line_to(FT_Vector *to, void *user) return 0; } -static int bezierpath_conic_to(FT_Vector *c1, FT_Vector *to, void *user) +static int bezierpath_conic_to(const FT_Vector *c1, const FT_Vector *to, void *user) { NSBezierPath *path = (NSBezierPath *)user; NSPoint a, b, c, d; @@ -2509,7 +2010,8 @@ static int bezierpath_conic_to(FT_Vector *c1, FT_Vector *to, void *user) return 0; } -static int bezierpath_cubic_to(FT_Vector *c1, FT_Vector *c2, FT_Vector *to, void *user) +static int bezierpath_cubic_to(const FT_Vector *c1, const FT_Vector *c2, + const FT_Vector *to, void *user) { NSBezierPath *path = (NSBezierPath *)user; NSPoint b, c, d; @@ -2709,11 +2211,6 @@ static int filters[3][7]= subpixel_text = [ud integerForKey: @"back-art-subpixel-text"]; - if ([ud objectForKey: @"GSFontAntiAlias"]) - anti_alias_by_default = [ud boolForKey: @"GSFontAntiAlias"]; - else - anti_alias_by_default = YES; - /* To make it easier to find an optimal (or at least good) filter, the filters are configurable (for now). */ for (i = 0; i < 3; i++) @@ -2754,8 +2251,6 @@ static int filters[3][7]= } } } - - load_font_configuration(); } @@ -3224,7 +2719,7 @@ fb04 'ffl' unsigned int i,j; unsigned int ch,ch2,ch3; - FTFontInfo *fi = [run->font fontInfo]; + FTFontInfo *fi = (FTFontInfo *)[run->font fontInfo]; NSCharacterSet *cs = [NSCharacterSet controlCharacterSet]; IMP characterIsMember = [cs methodForSelector: @selector(characterIsMember:)]; diff --git a/Source/art/image.m b/Source/art/image.m index 955f20a..f271479 100644 --- a/Source/art/image.m +++ b/Source/art/image.m @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* @@ -589,7 +591,7 @@ seem to cause edges to be off by a pixel if (!wi || !wi->data) return; if (all_clipped) return; - [matrix appendTransform: ctm]; + [matrix prependTransform: ctm]; ts = [matrix transformStruct]; if (fabs(ts.m11 - 1.0) < 0.001 && fabs(ts.m12) < 0.001 && fabs(ts.m22 - 1.0) < 0.001 && fabs(ts.m21) < 0.001) diff --git a/Source/art/path.m b/Source/art/path.m index e73912a..fb941a0 100644 --- a/Source/art/path.m +++ b/Source/art/path.m @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* diff --git a/Source/art/shfill.m b/Source/art/shfill.m index 1ecff3c..d818c51 100644 --- a/Source/art/shfill.m +++ b/Source/art/shfill.m @@ -5,19 +5,21 @@ This file is part of GNUstep. - This library is free software; you can redistribute it and /or - modify it under the terms of the GNU Library General Public + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, + version 3 of the License, or (at your option) any later version. + + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* @@ -215,11 +217,6 @@ static BOOL _rect_advance(rect_trace_t * t, int *x0, int *x1) } -@interface ARTGState (shfill) -- (void) DPSshfill: (NSDictionary *)shader; -@end - - @implementation ARTGState (shfill) @@ -738,7 +735,7 @@ static void function_free(function_t * f) if (state) { p = [inverse transformPoint: - NSMakePoint(clip_x0 + x0 - offset.y, offset.y - y)]; + NSMakePoint(clip_x0 + x0 - offset.x, offset.y - y)]; in[0] = p.x; in[1] = p.y; @@ -782,12 +779,3 @@ done: @end - -@implementation ARTContext (shfill) -/* TODO: move to gsc? */ -- (void) DPSshfill: (NSDictionary *)shader -{ - [(ARTGState *)gstate DPSshfill: shader]; -} -@end - diff --git a/Source/gsc/GNUmakefile b/Source/gsc/GNUmakefile index 40690bb..432846d 100644 --- a/Source/gsc/GNUmakefile +++ b/Source/gsc/GNUmakefile @@ -8,22 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# If you are interested in a warranty or support for this source code, -# contact Scott Christley at scottc@net-community.com -# -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. GNUSTEP_INSTALLATION_DOMAIN = SYSTEM @@ -40,6 +38,7 @@ GSContext.m \ GSGState.m \ GSStreamContext.m \ GSStreamGState.m \ +GSFunction.m \ externs.m gsc_C_FILES = gscolors.c diff --git a/Source/gsc/GNUmakefile.preamble b/Source/gsc/GNUmakefile.preamble index c2fcedc..2061ae8 100644 --- a/Source/gsc/GNUmakefile.preamble +++ b/Source/gsc/GNUmakefile.preamble @@ -8,19 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # # Flags dealing with compiling and linking diff --git a/Source/gsc/GSContext.m b/Source/gsc/GSContext.m index fdade78..4aa475b 100644 --- a/Source/gsc/GSContext.m +++ b/Source/gsc/GSContext.m @@ -9,19 +9,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include #include @@ -844,6 +846,11 @@ static unsigned int unique_index = 0; : data]; } +- (void) DPSshfill: (NSDictionary *)shader +{ + [gstate DPSshfill: shader]; +} + - (void) GSWSetViewIsFlipped: (BOOL) flipped { if (gstate) diff --git a/Source/gsc/GSFunction.m b/Source/gsc/GSFunction.m new file mode 100644 index 0000000..096d2e0 --- /dev/null +++ b/Source/gsc/GSFunction.m @@ -0,0 +1,386 @@ +/* + GSFunction - Function for GSGState + + Copyright (C) 2003 Free Software Foundation, Inc. + + Author: Alexander Malmberg + Author: Fred Kiefer + Extracted into separate class. + + This file is part of GNUstep. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +// for floor +#include + +#include +#include +#include +#include +#include +#include "gsc/GSFunction.h" + + +@implementation GSFunction + +- (id) initWith: (NSDictionary *)d +{ + NSNumber * v = [d objectForKey: @"FunctionType"]; + NSArray *a; + NSData *data; + int i, j; + + if ([v intValue] != 0) + { + NSDebugLLog(@"GSFunction", @"FunctionType != 0 not supported."); + RELEASE(self); + return nil; + } + + bits_per_sample = [[d objectForKey: @"BitsPerSample"] intValue]; + if (!(bits_per_sample == 8 || bits_per_sample == 16)) + { + NSDebugLLog(@"GSFunction", @"BitsPerSample other than 8 or 16 aren't supported."); + RELEASE(self); + return nil; + } + + data = [d objectForKey: @"DataSource"]; + if (!data || ![data isKindOfClass: [NSData class]]) + { + NSDebugLLog(@"GSFunction", @"No valid DataSource given."); + RELEASE(self); + return nil; + } + data_source =[data bytes]; + + a = [d objectForKey: @"Size"]; + num_in = [a count]; + if (!num_in) + { + NSDebugLLog(@"GSFunction", @"Size has no entries."); + RELEASE(self); + return nil; + } + + num_out = [[d objectForKey: @"Range"] count] / 2; + if (!num_out) + { + NSDebugLLog(@"GSFunction", @"Range has no entries."); + RELEASE(self); + return nil; + } + + size = malloc(sizeof(int) * num_in); + domain = malloc(sizeof(double) * num_in * 2); + range = malloc(sizeof(double) * num_out * 2); + encode = malloc(sizeof(double) * num_in * 2); + decode = malloc(sizeof(double) * num_out * 2); + + if (!size || !domain || !range || !encode || !decode) + { + NSDebugLLog(@"GSFunction", @"Memory allocation failed."); + RELEASE(self); + return nil; + } + + j = 1; + for (i = 0; i < num_in; i++) + { + size[i] = [[a objectAtIndex: i] intValue]; + j *= size[i]; + } + + j *= bits_per_sample * num_out; + j = (j +7)/8; + if ([data length] < j) + { + NSDebugLLog(@"GSFunction", @"Need %i bytes of data, DataSource only has %i bytes.", + j, [data length]); + RELEASE(self); + return nil; + } + + a = [d objectForKey: @"Domain"]; + for (i = 0; i < num_in * 2; i++) + { + domain[i] = [[a objectAtIndex: i] doubleValue]; + } + + a = [d objectForKey: @"Range"]; + for (i = 0; i < num_out * 2; i++) + { + range[i] = [[a objectAtIndex: i] doubleValue]; + } + + a = [d objectForKey: @"Decode"]; + if (a) + { + for (i = 0; i < num_out * 2; i++) + { + decode[i] = [[a objectAtIndex: i] doubleValue]; + } + } + else + { + for (i = 0; i < num_out * 2; i++) + { + decode[i] = range[i]; + } + } + + a = [d objectForKey: @"Encode"]; + if (a) + { + for (i = 0; i < num_in * 2; i++) + { + encode[i] = [[a objectAtIndex: i] doubleValue]; + } + } + else + { + for (i = 0; i < num_in; i++) + { + encode[i * 2 + 0] = 0; + encode[i * 2 + 1] = size[i] - 1; + } + } + + return self; +} + +- (void)dealloc +{ + if (size) + free(size); + if (domain) + free(domain); + if (range) + free(range); + if (encode) + free(encode); + if (decode) + free(decode); + + [super dealloc]; +} + +- (double)getsample: (int)sample : (int) i +{ + double v; + + if (bits_per_sample == 8) + { + v = data_source[sample * num_out + i] / 255.0; + } + else if (bits_per_sample == 16) + { + int c0, c1; + + c0 = data_source[(sample * num_out + i) * 2 + 0]; + c1 = data_source[(sample * num_out + i) * 2 + 1]; + v = (c0 * 256 + c1) / 65535.0; + } + else + { + NSLog(@"unhandled bits per sample %i", bits_per_sample); + v = 0.0; + } + + v = decode[i * 2] + v * (decode[i * 2 + 1] - decode[i * 2]); + if (v < range[i * 2]) + v = range[i * 2]; + if (v > range[i * 2 + 1]) + v = range[i * 2 + 1]; + + return v; +} + +- (void) eval: (double *)inValues : (double *)outValues; +{ + double in[num_in]; + int sample[num_in]; + int i, j, sample_index, sample_factor; + unsigned int u, v; + double c; + + for (i = 0; i < num_in; i++) + { + in[i] =(inValues[i] - domain[i * 2]) / (domain[i * 2 + 1] - domain[i * 2]); + if (in[i] < 0.0) in[i] = 0.0; + if (in[i] > 1.0) in[i] = 1.0; + + in[i] = encode[i * 2] + in[i] * (encode[i * 2 + 1] - encode[i * 2]); + sample[i] = floor(in[i]); + /* we only want sample[i] == size[i] -1 when size[i] == 1 */ + if (sample[i] >= size[i]-1) sample[i] = size[i]-2; + if (sample[i] < 0) sample[i] = 0; + + in[i] = in[i] - sample[i]; + if (in[i] < 0.0) in[i] = 0.0; + if (in[i] > 1.0) in[i] = 1.0; + + // printf(" coord %i, sample %i, frac %g \n", i, sample[i], in[i]); + } + + for (i = 0; i < num_out; i++) + { + double out_value; + /* + iterate over all corners in the num_in-dimensional + hypercube we're in + */ + out_value = 0.0; + for (u = 0; u < (1 << num_in); u++) + { + sample_index = 0; + sample_factor = 1; + c = 1; + for (v = 1, j = 0; j < num_in; j ++, v <<= 1) + { + sample_index += sample[j] * sample_factor; + if (u & v) + { + c *= in[j]; + sample_index += sample_factor; + } + else + { + c *= (1.0 - in[j]); + } + sample_factor *= size[j]; + if (c == 0.0) + break; + } + // printf(" %08x index %i, factor %i, c =%g \n", u, sample_index, sample_factor, c); + if (c > 0.0) + out_value += c * [self getsample: sample_index : i]; + } + // printf(" final =%g \n", out_value); + outValues[i] = out_value; + } +} + +@end + + +@implementation GSFunction2in3out + +- (id) initWith: (NSDictionary *)d +{ + if (!(self = [super initWith: d])) + return nil; + + if (num_in != 2 || num_out != 3) + { + NSDebugLLog(@"GSFunction", @"Function doesn't have 2 inputs and 3 outputs."); + RELEASE(self); + return nil; + } + sample_index[0] = sample_index[1] = -1; + + return self; +} + +/* +special case: f->num_in == 2, f->num_out == 3 +*/ +- (void) eval: (double *)inValues : (double *)outValues; +{ + double in[2]; + int sample[2]; + int i; + + for (i = 0; i < 2; i ++) + { + in[i] = (inValues[i] - domain[i * 2]) / (domain[i * 2 + 1] - domain[i * 2]); + if (in[i] < 0.0) in[i] = 0.0; + if (in[i] > 1.0) in[i] = 1.0; + + in[i] = encode[i * 2]+in[i]* (encode[i * 2 + 1] - encode[i * 2]); + sample[i] = floor(in[i]); + /* we only want sample[i] == size[i]-1 when size[i] == 1 */ + if (sample[i] >= size[i]-1) sample[i] = size[i]-2; + if (sample[i] < 0) sample[i] = 0; + + in[i] = in[i] - sample[i]; + if (in[i] < 0.0) in[i] = 0.0; + if (in[i] > 1.0) in[i] = 1.0; + + // printf(" coord %i, sample %i, frac %g \n", i, sample[i], in[i]); + } + + if (sample[0] != sample_index[0] || sample[1] != sample_index[1]) + { + sample_index[0] = sample[0]; + sample_index[1] = sample[1]; + + for (i = 0; i < 3; i ++) + { + sample_cache[0][i] = + [self getsample: sample[0] + sample[1] * size[0] : i]; + if (sample[0] + 1 < size[0]) + sample_cache[1][i] = + [self getsample: sample[0] + 1 + sample[1] * size[0] : i]; + if (sample[1] + 1 < size[1]) + sample_cache[2][i] = + [self getsample: sample[0] + (sample[1] + 1) * size[0] : i]; + if (sample[0] + 1 < size[0] && sample[1] + 1 < size[1]) + sample_cache[3][i] = + [self getsample: sample[0] + 1 +(sample[1] + 1) * size[0] : i]; + } + } + + for (i = 0; i < 3; i++) + { + double out_value; + double A, B, C, D; + double p, q, pq; + + A = sample_cache[0][i]; + B = sample_cache[1][i]; + C = sample_cache[2][i]; + D = sample_cache[3][i]; + + out_value = 0.0; + p = in[0]; + q = in[1]; + pq = p * q; + if (p != 1.0 && q != 1.0) out_value += A * (1 - p -q + pq); + if (p != 0.0 && q != 1.0) out_value += B * (p - pq); + if (p != 1.0 && q != 0.0) out_value += C * (q - pq); + if (p != 0.0 && q != 0.0) out_value += D * pq; + + outValues[i] = out_value; + } +} + +- (NSRect) affectedRect +{ + NSRect rect; + + rect.origin.x = domain[0]; + rect.size.width = domain[1] - domain[0]; + rect.origin.y = domain[2]; + rect.size.height = domain[3] - domain[2]; + + return rect; +} + +@end diff --git a/Source/gsc/GSGState.m b/Source/gsc/GSGState.m index 8bd3a8f..aeab812 100644 --- a/Source/gsc/GSGState.m +++ b/Source/gsc/GSGState.m @@ -8,20 +8,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "config.h" #include @@ -33,6 +34,7 @@ #include #include "gsc/GSContext.h" #include "gsc/GSGState.h" +#include "gsc/GSFunction.h" #include "math.h" #include @@ -1068,6 +1070,113 @@ typedef enum { { [self subclassResponsibility: _cmd]; } + +- (void) DPSshfill: (NSDictionary *)shader +{ + NSNumber *v; + NSDictionary *function_dict; + GSFunction2in3out *function; + NSAffineTransform *matrix, *inverse; + NSAffineTransformStruct ts; + NSRect rect; + int iwidth, iheight; + double x, y; + int i; + unsigned char *data; + + v = [shader objectForKey: @"ShadingType"]; + + /* only type 1 shaders */ + if ([v intValue] != 1) + { + NSLog(@"ShadingType != 1 not supported."); + return; + } + + /* in device rgb space */ + if ([shader objectForKey: @"ColorSpace"]) + if (![[shader objectForKey: @"ColorSpace"] isEqual: NSDeviceRGBColorSpace]) + { + NSLog(@"Only device RGB ColorSpace supported for shading."); + return; + } + + function_dict = [shader objectForKey: @"Function"]; + if (!function_dict) + { + NSLog(@"Shading function not set."); + return; + } + + function = [[GSFunction2in3out alloc] initWith: function_dict]; + if (!function) + return; + + matrix = [ctm copy]; + if ([shader objectForKey: @"Matrix"]) + { + [matrix prependTransform: [shader objectForKey: @"Matrix"]]; + } + + inverse = [matrix copy]; + [inverse invert]; + + rect = [function affectedRect]; + iwidth = rect.size.width; + iheight = rect.size.height; + data = objc_malloc(sizeof(char) * iwidth * iheight * 4); + i = 0; + + for (y = NSMinY(rect); y < NSMaxY(rect); y++) + { + double in[2], out[3]; + NSPoint p; + + p = [inverse transformPoint: NSMakePoint(NSMinX(rect), y)]; + in[0] = p.x; + in[1] = p.y; + + out[0] = out[1] = out[2] = 0.0; + for (x = NSMinX(rect); x < NSMaxX(rect); x++) + { + char r, g, b, a; + + [function eval: in : out]; + + // Set data at x - NSMinX(rect), y - NSMinY(rect) to out + r = out[0] * 255; + g = out[1] * 255; + b = out[2] * 255; + a = 255; + data[i++] = r; + data[i++] = g; + data[i++] = b; + data[i++] = a; + + // This gives the same result as: + // p = [inverse transformPoint: NSMakePoint(x, y)]; + in[0] += ts.m11; + in[1] += ts.m12; + } + } + + // Copy data to device + DESTROY(matrix); + matrix = [NSAffineTransform new]; + [matrix translateXBy: NSMinX(rect) yBy: NSMinY(rect)]; + [self DPSimage: matrix + : iwidth : iheight + : 8 : 4 + : 32 : 4 * iwidth : NO + : YES : NSDeviceRGBColorSpace + : (const unsigned char **)&data]; + objc_free(data); + + DESTROY(matrix); + DESTROY(inverse); + DESTROY(function); +} + @end diff --git a/Source/gsc/GSStreamContext.m b/Source/gsc/GSStreamContext.m index 1e9b762..c1582bf 100644 --- a/Source/gsc/GSStreamContext.m +++ b/Source/gsc/GSStreamContext.m @@ -1,4 +1,4 @@ -/* -*- C++ -*- +/* -*-objc-*- GSStreamContext - Drawing context to a stream. Copyright (C) 1995, 2002 Free Software Foundation, Inc. @@ -9,19 +9,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "config.h" #include "gsc/GSContext.h" diff --git a/Source/gsc/GSStreamGState.m b/Source/gsc/GSStreamGState.m index c8960e4..974db1e 100644 --- a/Source/gsc/GSStreamGState.m +++ b/Source/gsc/GSStreamGState.m @@ -8,19 +8,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "config.h" #include diff --git a/Source/gsc/externs.m b/Source/gsc/externs.m index 8b7ed84..bc7a42f 100644 --- a/Source/gsc/externs.m +++ b/Source/gsc/externs.m @@ -11,19 +11,20 @@ This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/gsc/gscolors.c b/Source/gsc/gscolors.c index 387c9b1..9b72233 100644 --- a/Source/gsc/gscolors.c +++ b/Source/gsc/gscolors.c @@ -8,19 +8,22 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + #include "config.h" #include diff --git a/Source/win32/GNUmakefile b/Source/win32/GNUmakefile index 40acd31..117ec98 100644 --- a/Source/win32/GNUmakefile +++ b/Source/win32/GNUmakefile @@ -8,22 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# If you are interested in a warranty or support for this source code, -# contact Scott Christley at scottc@net-community.com -# -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. GNUSTEP_INSTALLATION_DOMAIN = SYSTEM diff --git a/Source/win32/GNUmakefile.preamble b/Source/win32/GNUmakefile.preamble index 7db4ed6..62344eb 100644 --- a/Source/win32/GNUmakefile.preamble +++ b/Source/win32/GNUmakefile.preamble @@ -8,19 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # # Flags dealing with compiling and linking diff --git a/Source/win32/WIN32Server.m b/Source/win32/WIN32Server.m index 257d4f6..fd95d62 100644 --- a/Source/win32/WIN32Server.m +++ b/Source/win32/WIN32Server.m @@ -7,23 +7,25 @@ Part of this code have been re-written by: Tom MacSween Date August 2005 + This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, + version 3 of the License, or (at your option) any later version. + + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "config.h" #include diff --git a/Source/win32/w32_Events.h b/Source/win32/w32_Events.h index c09d79e..19814b0 100644 --- a/Source/win32/w32_Events.h +++ b/Source/win32/w32_Events.h @@ -7,21 +7,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ - + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #ifndef _W32_EVENTS_h_INCLUDE #define _W32_EVENTS_h_INCLUDE diff --git a/Source/win32/w32_GLcontext.m b/Source/win32/w32_GLcontext.m index 2a89acc..a977af8 100644 --- a/Source/win32/w32_GLcontext.m +++ b/Source/win32/w32_GLcontext.m @@ -9,21 +9,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + version 3 of the License, or (at your option) any later version. + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "config.h" #ifdef HAVE_WGL diff --git a/Source/win32/w32_GLformat.m b/Source/win32/w32_GLformat.m index 8701aa6..08f42a3 100644 --- a/Source/win32/w32_GLformat.m +++ b/Source/win32/w32_GLformat.m @@ -9,20 +9,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. + version 3 of the License, or (at your option) any later version. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "config.h" #ifdef HAVE_WGL diff --git a/Source/win32/w32_activate.m b/Source/win32/w32_activate.m index 44ef9b2..c06f391 100644 --- a/Source/win32/w32_activate.m +++ b/Source/win32/w32_activate.m @@ -4,24 +4,25 @@ Written by: Tom MacSween Date August 2005 + This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + version 3 of the License, or (at your option) any later version. + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include #include diff --git a/Source/win32/w32_create.m b/Source/win32/w32_create.m index aca53cc..57c2187 100644 --- a/Source/win32/w32_create.m +++ b/Source/win32/w32_create.m @@ -10,21 +10,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + version 3 of the License, or (at your option) any later version. + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "w32_Events.h" diff --git a/Source/win32/w32_general.m b/Source/win32/w32_general.m index 0ae6e29..1661248 100644 --- a/Source/win32/w32_general.m +++ b/Source/win32/w32_general.m @@ -7,24 +7,25 @@ Part of this code have been written by: Tom MacSween Date August 2005 + This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + version 3 of the License, or (at your option) any later version. + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "w32_Events.h" diff --git a/Source/win32/w32_movesize.m b/Source/win32/w32_movesize.m index 0d9e3ae..3a0a7d1 100644 --- a/Source/win32/w32_movesize.m +++ b/Source/win32/w32_movesize.m @@ -4,23 +4,25 @@ Written by: Tom MacSween Date August 2005 + This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, + version 3 of the License, or (at your option) any later version. + + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "w32_Events.h" diff --git a/Source/win32/w32_text_focus.m b/Source/win32/w32_text_focus.m index 500b392..e63f53f 100644 --- a/Source/win32/w32_text_focus.m +++ b/Source/win32/w32_text_focus.m @@ -7,23 +7,25 @@ Part of this code have been re-written by: Tom MacSween Date August 2005 + This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, + version 3 of the License, or (at your option) any later version. + + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "w32_Events.h" diff --git a/Source/win32/w32_windowdisplay.m b/Source/win32/w32_windowdisplay.m index 6b94097..8ba36d8 100644 --- a/Source/win32/w32_windowdisplay.m +++ b/Source/win32/w32_windowdisplay.m @@ -7,23 +7,25 @@ Part of this code have been re-written by: Tom MacSween Date August 2005 + This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, + version 3 of the License, or (at your option) any later version. + + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "w32_Events.h" diff --git a/Source/winlib/GNUmakefile b/Source/winlib/GNUmakefile index 8e737b2..12f4955 100644 --- a/Source/winlib/GNUmakefile +++ b/Source/winlib/GNUmakefile @@ -8,19 +8,20 @@ # This file is part of the GNUstep WIN32 GUI Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. GNUSTEP_INSTALLATION_DOMAIN = SYSTEM diff --git a/Source/winlib/GNUmakefile.preamble b/Source/winlib/GNUmakefile.preamble index a8232a5..5e5678d 100644 --- a/Source/winlib/GNUmakefile.preamble +++ b/Source/winlib/GNUmakefile.preamble @@ -8,19 +8,20 @@ # This file is part of the GNUstep WIN32 GUI Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # # GNUmakefile.preamble diff --git a/Source/winlib/WIN32Context.m b/Source/winlib/WIN32Context.m index 7e0cfd5..fd30306 100644 --- a/Source/winlib/WIN32Context.m +++ b/Source/winlib/WIN32Context.m @@ -8,20 +8,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include #include diff --git a/Source/winlib/WIN32FontEnumerator.m b/Source/winlib/WIN32FontEnumerator.m index 8036ee3..2fb2a70 100644 --- a/Source/winlib/WIN32FontEnumerator.m +++ b/Source/winlib/WIN32FontEnumerator.m @@ -8,19 +8,20 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include "Foundation/NSArray.h" diff --git a/Source/winlib/WIN32FontInfo.m b/Source/winlib/WIN32FontInfo.m index de12e00..d133a5b 100644 --- a/Source/winlib/WIN32FontInfo.m +++ b/Source/winlib/WIN32FontInfo.m @@ -8,21 +8,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. -*/ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include #include @@ -182,45 +182,47 @@ NSLog(@"No glyph for U%d", c); HDC hdc; HFONT old; + ms = [NSMutableCharacterSet new]; hdc = GetDC(NULL); old = SelectObject(hdc, hFont); count = (unsigned)GetFontUnicodeRanges(hdc, 0); if (count > 0) - { + { gs = (GLYPHSET*)objc_malloc(count); if ((unsigned)GetFontUnicodeRanges(hdc, gs) == count) - { - numberOfGlyphs = gs->cGlyphsSupported; - if (gs->flAccel == 1 /* GS_8BIT_INDICES */) - { - for (count = 0; count < gs->cRanges; count++) - { - NSRange range; - - range.location = gs->ranges[count].wcLow & 0xff; - range.length = gs->ranges[count].cGlyphs; - [ms addCharactersInRange: range]; - } - } - else - { - for (count = 0; count < gs->cRanges; count++) - { - NSRange range; - - range.location = gs->ranges[count].wcLow; - range.length = gs->ranges[count].cGlyphs; - [ms addCharactersInRange: range]; - } - } - } + { + numberOfGlyphs = gs->cGlyphsSupported; + if (gs->flAccel == 1 /* GS_8BIT_INDICES */) + { + for (count = 0; count < gs->cRanges; count++) + { + NSRange range; + + range.location = gs->ranges[count].wcLow & 0xff; + range.length = gs->ranges[count].cGlyphs; + [ms addCharactersInRange: range]; + } + } + else + { + for (count = 0; count < gs->cRanges; count++) + { + NSRange range; + + range.location = gs->ranges[count].wcLow; + range.length = gs->ranges[count].cGlyphs; + [ms addCharactersInRange: range]; + } + } + } objc_free(gs); - } + } SelectObject(hdc, old); ReleaseDC(NULL, hdc); coveredCharacterSet = [ms copy]; RELEASE(ms); } + return coveredCharacterSet; } diff --git a/Source/winlib/WIN32GState.m b/Source/winlib/WIN32GState.m index ae626f5..efad5d4 100644 --- a/Source/winlib/WIN32GState.m +++ b/Source/winlib/WIN32GState.m @@ -10,20 +10,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ // Currently the use of alpha blending is switched off by default. #define USE_ALPHABLEND diff --git a/Source/x11/GNUmakefile b/Source/x11/GNUmakefile index 6b8b910..14f0edf 100644 --- a/Source/x11/GNUmakefile +++ b/Source/x11/GNUmakefile @@ -8,22 +8,19 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# If you are interested in a warranty or support for this source code, -# contact Scott Christley at scottc@net-community.com -# -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, GNUSTEP_INSTALLATION_DOMAIN = SYSTEM diff --git a/Source/x11/GNUmakefile.preamble b/Source/x11/GNUmakefile.preamble index 11be07a..e7dce91 100644 --- a/Source/x11/GNUmakefile.preamble +++ b/Source/x11/GNUmakefile.preamble @@ -8,19 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # # Flags dealing with compiling and linking diff --git a/Source/x11/XGDragView.m b/Source/x11/XGDragView.m index 27d62ec..54e2761 100644 --- a/Source/x11/XGDragView.m +++ b/Source/x11/XGDragView.m @@ -12,22 +12,25 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include #include +#include #include #include #include @@ -256,40 +259,45 @@ static XGDragView *sharedDragView = nil; } - (void) sendExternalEvent: (GSAppKitSubtype)subtype - action: (NSDragOperation)action - position: (NSPoint)eventLocation - timestamp: (NSTimeInterval)time - toWindow: (int)dWindowNumber + action: (NSDragOperation)action + position: (NSPoint)eventLocation + timestamp: (NSTimeInterval)time + toWindow: (int)dWindowNumber { switch (subtype) { case GSAppKitDraggingDrop: - if (targetWindowRef == dragWindev->root) - { - // FIXME There is an xdnd extension for root drop - } - xdnd_send_drop(&dnd, dWindowNumber, dragWindev->ident, CurrentTime); - break; + if (targetWindowRef == dragWindev->root) + { + // FIXME There is an xdnd extension for root drop + } + xdnd_send_drop(&dnd, dWindowNumber, dragWindev->ident, CurrentTime); + break; case GSAppKitDraggingUpdate: - xdnd_send_position(&dnd, dWindowNumber, dragWindev->ident, - GSActionForDragOperation(dragMask & operationMask), - XX(newPosition), XY(newPosition), CurrentTime); - break; - + xdnd_send_position(&dnd, dWindowNumber, dragWindev->ident, + GSActionForDragOperation(dragMask & operationMask), + XX(newPosition), XY(newPosition), CurrentTime); + break; + case GSAppKitDraggingEnter: - xdnd_send_enter(&dnd, dWindowNumber, dragWindev->ident, typelist); - xdnd_send_position(&dnd, dWindowNumber, dragWindev->ident, - GSActionForDragOperation (dragMask & operationMask), - XX(dragPosition), XY(dragPosition), CurrentTime); - break; + // FIXME: The first two lines need only be called once for every drag operation. + // They should be moved to a different method. + xdnd_set_selection_owner(&dnd, dragWindev->ident, typelist[0]); + xdnd_set_type_list(&dnd, dragWindev->ident, typelist); + + xdnd_send_enter(&dnd, dWindowNumber, dragWindev->ident, typelist); + xdnd_send_position(&dnd, dWindowNumber, dragWindev->ident, + GSActionForDragOperation (dragMask & operationMask), + XX(dragPosition), XY(dragPosition), CurrentTime); + break; case GSAppKitDraggingExit: - xdnd_send_leave(&dnd, dWindowNumber, dragWindev->ident); - break; - + xdnd_send_leave(&dnd, dWindowNumber, dragWindev->ident); + break; + default: - break; + break; } } diff --git a/Source/x11/XGGLContext.m b/Source/x11/XGGLContext.m index 848ae13..aa980da 100644 --- a/Source/x11/XGGLContext.m +++ b/Source/x11/XGGLContext.m @@ -9,20 +9,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "config.h" #ifdef HAVE_GLX diff --git a/Source/x11/XGGLFormat.m b/Source/x11/XGGLFormat.m index efbcefe..b8ede9b 100644 --- a/Source/x11/XGGLFormat.m +++ b/Source/x11/XGGLFormat.m @@ -9,19 +9,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "config.h" #ifdef HAVE_GLX diff --git a/Source/x11/XGServer.m b/Source/x11/XGServer.m index 547b00b..b85376f 100644 --- a/Source/x11/XGServer.m +++ b/Source/x11/XGServer.m @@ -9,19 +9,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "config.h" #include @@ -356,6 +358,7 @@ _parse_display_name(NSString *name, int *dn, int *sn) NSDebugLog(@"Initializing GNUstep x11 backend.\n"); [GSDisplayServer setDefaultServerClass: [XGServer class]]; signal(SIGTERM, terminate); + signal(SIGINT, terminate); } /** diff --git a/Source/x11/XGServerEvent.m b/Source/x11/XGServerEvent.m index 51f4b6c..9786b1f 100644 --- a/Source/x11/XGServerEvent.m +++ b/Source/x11/XGServerEvent.m @@ -9,19 +9,20 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, +*/ #include "config.h" @@ -29,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -394,7 +396,7 @@ static int check_modifier (XEvent *xEvent, KeySym key_sym, } } generic.lastClick = xEvent.xbutton.time; - generic.lastTime = generic.lastClick; + [self setLastTime: generic.lastClick]; deltaY = 0.0; if (xEvent.xbutton.button == generic.lMouse) @@ -444,14 +446,14 @@ static int check_modifier (XEvent *xEvent, KeySym key_sym, & (NSMiniWindowMask | NSIconWindowMask)) != 0 && eventType == NSLeftMouseDown && clickCount == 1) { - if (cWin->parent == None) - break; - xEvent.xbutton.window = cWin->parent; - XUngrabPointer(dpy, CurrentTime); - XSendEvent(dpy, cWin->parent, True, - ButtonPressMask, &xEvent); - XFlush(dpy); - break; + if (cWin->parent == None) + break; + xEvent.xbutton.window = cWin->parent; + XUngrabPointer(dpy, CurrentTime); + XSendEvent(dpy, cWin->parent, True, + ButtonPressMask, &xEvent); + XFlush(dpy); + break; } } @@ -474,7 +476,7 @@ static int check_modifier (XEvent *xEvent, KeySym key_sym, case ButtonRelease: NSDebugLLog(@"NSEvent", @"%d ButtonRelease\n", xEvent.xbutton.window); - generic.lastTime = xEvent.xbutton.time; + [self setLastTime: xEvent.xbutton.time]; if (xEvent.xbutton.button == generic.lMouse) eventType = NSLeftMouseUp; else if (xEvent.xbutton.button == generic.rMouse @@ -542,7 +544,7 @@ static int check_modifier (XEvent *xEvent, KeySym key_sym, break; if (xEvent.xclient.message_type == generic.protocols_atom) { - generic.lastTime = (Time)xEvent.xclient.data.l[1]; + [self setLastTime: (Time)xEvent.xclient.data.l[1]]; NSDebugLLog(@"NSEvent", @"WM Protocol - %s\n", XGetAtomName(dpy, xEvent.xclient.data.l[0])); @@ -981,116 +983,121 @@ static int check_modifier (XEvent *xEvent, KeySym key_sym, break; } - // keyboard focus entered a window + // keyboard focus entered a window case FocusIn: - NSDebugLLog(@"NSEvent", @"%d FocusIn\n", - xEvent.xfocus.window); - if (cWin == 0 || xEvent.xfocus.window != cWin->ident) - { - generic.cachedWindow - = [XGServer _windowForXWindow:xEvent.xfocus.window]; - } - if (cWin == 0) - break; - NSDebugLLog(@"Focus", @"%d got focus on %d\n", - xEvent.xfocus.window, cWin->number); - generic.currentFocusWindow = cWin->number; - if (xEvent.xfocus.serial == generic.focusRequestNumber) - { - /* - * This is a response to our own request - so we mark the - * request as complete. - */ - generic.desiredFocusWindow = 0; - generic.focusRequestNumber = 0; - } - break; - + NSDebugLLog(@"NSEvent", @"%d FocusIn\n", + xEvent.xfocus.window); + if (cWin == 0 || xEvent.xfocus.window != cWin->ident) + { + generic.cachedWindow + = [XGServer _windowForXWindow:xEvent.xfocus.window]; + } + if (cWin == 0) + break; + NSDebugLLog(@"Focus", @"%d got focus on %d\n", + xEvent.xfocus.window, cWin->number); + // Store this for debugging, may not be the real focus window + generic.currentFocusWindow = cWin->number; + if (xEvent.xfocus.serial == generic.focusRequestNumber) + { + /* + * This is a response to our own request - so we mark the + * request as complete. + */ + generic.desiredFocusWindow = 0; + generic.focusRequestNumber = 0; + } + break; + // keyboard focus left a window case FocusOut: - { - Window fw; - int rev; + { + Window fw; + int rev; + + /* + * See where the focus has moved to - + * If it has gone to 'none' or 'PointerRoot' then + * it's not one of ours. + * If it has gone to our root window - use the icon window. + * If it has gone to a window - we see if it is one of ours. + */ + XGetInputFocus(xEvent.xfocus.display, &fw, &rev); + NSDebugLLog(@"NSEvent", @"%d FocusOut\n", + xEvent.xfocus.window); + if (fw != None && fw != PointerRoot) + { + generic.cachedWindow = [XGServer _windowForXWindow: fw]; + if (cWin == 0) + { + generic.cachedWindow = [XGServer _windowForXParent: fw]; + } + if (cWin == 0) + { + nswin = nil; + } + else + { + nswin = GSWindowWithNumber(cWin->number); + } + } + else + { + nswin = nil; + } + NSDebugLLog(@"Focus", @"Focus went to %d (xwin %d)\n", + (nswin != nil) ? cWin->number : 0, fw); - /* - * See where the focus has moved to - - * If it has gone to 'none' or 'PointerRoot' then - * it's not one of ours. - * If it has gone to our root window - use the icon window. - * If it has gone to a window - we see if it is one of ours. - */ - XGetInputFocus(xEvent.xfocus.display, &fw, &rev); - NSDebugLLog(@"NSEvent", @"%d FocusOut\n", - xEvent.xfocus.window); - generic.cachedWindow = [XGServer _windowForXWindow: fw]; - if (cWin == 0) - { - generic.cachedWindow = [XGServer _windowForXParent: fw]; - } - if (cWin == 0) - { - nswin = nil; - } - else - { - nswin = GSWindowWithNumber(cWin->number); - } - NSDebugLLog(@"Focus", @"Focus went to %d (xwin %d)\n", - (cWin) ? cWin->number : 0, fw); - if (nswin == nil) - { - if (fw == 0) - { - /* What? This is bogus. Focus has to go somewhere. */ - } - else - { - [NSApp deactivate]; - } - } - generic.cachedWindow - = [XGServer _windowForXWindow: xEvent.xfocus.window]; - NSDebugLLog(@"Focus", @"%d lost focus on %d\n", - xEvent.xfocus.window, (cWin) ? cWin->number : 0); - generic.currentFocusWindow = 0; - if (cWin && generic.desiredFocusWindow == cWin->number) - { - /* Request not valid anymore since we lost focus */ - generic.focusRequestNumber = 0; - } - } - break; + // Focus went to a window not in this application. + if (nswin == nil) + { + [NSApp deactivate]; + } + + // Clean up old focus request + generic.cachedWindow + = [XGServer _windowForXWindow: xEvent.xfocus.window]; + NSDebugLLog(@"Focus", @"%d lost focus on %d\n", + xEvent.xfocus.window, (cWin) ? cWin->number : 0); + generic.currentFocusWindow = 0; + if (cWin && generic.desiredFocusWindow == cWin->number) + { + /* Request not valid anymore since we lost focus */ + generic.focusRequestNumber = 0; + } + } + break; case GraphicsExpose: - NSDebugLLog(@"NSEvent", @"%d GraphicsExpose\n", - xEvent.xexpose.window); - break; + NSDebugLLog(@"NSEvent", @"%d GraphicsExpose\n", + xEvent.xexpose.window); + break; case NoExpose: - NSDebugLLog(@"NSEvent", @"NoExpose\n"); - break; + NSDebugLLog(@"NSEvent", @"NoExpose\n"); + break; - // window is moved because of a change in the size of its parent + // window is moved because of a change in the size of its parent case GravityNotify: - NSDebugLLog(@"NSEvent", @"%d GravityNotify\n", - xEvent.xgravity.window); - break; + NSDebugLLog(@"NSEvent", @"%d GravityNotify\n", + xEvent.xgravity.window); + break; // a key has been pressed case KeyPress: - NSDebugLLog(@"NSEvent", @"%d KeyPress\n", - xEvent.xkey.window); - generic.lastTime = xEvent.xkey.time; - e = process_key_event (&xEvent, self, NSKeyDown, event_queue); - break; + NSDebugLLog(@"NSEvent", @"%d KeyPress\n", + xEvent.xkey.window); + [self setLastTime: xEvent.xkey.time]; + e = process_key_event (&xEvent, self, NSKeyDown, event_queue); + break; // a key has been released case KeyRelease: - NSDebugLLog(@"NSEvent", @"%d KeyRelease\n", - xEvent.xkey.window); - generic.lastTime = xEvent.xkey.time; - e = process_key_event (&xEvent, self, NSKeyUp, event_queue); - break; + NSDebugLLog(@"NSEvent", @"%d KeyRelease\n", + xEvent.xkey.window); + [self setLastTime: xEvent.xkey.time]; + e = process_key_event (&xEvent, self, NSKeyUp, event_queue); + break; // reports the state of the keyboard when pointer or // focus enters a window @@ -1163,34 +1170,34 @@ static int check_modifier (XEvent *xEvent, KeySym key_sym, // when a window changes state from ummapped to // mapped or vice versa case MapNotify: - NSDebugLLog(@"NSEvent", @"%d MapNotify\n", - xEvent.xmap.window); - if (cWin == 0 || xEvent.xmap.window != cWin->ident) - { - generic.cachedWindow - = [XGServer _windowForXWindow:xEvent.xmap.window]; - } - if (cWin != 0) - { - cWin->map_state = IsViewable; - /* - * if the window that was just mapped wants the input - * focus, re-do the request. - */ - if (generic.desiredFocusWindow == cWin->number - && generic.focusRequestNumber == 0) - { - NSDebugLLog(@"Focus", @"Refocusing %d on map notify", - cWin->number); - [self setinputfocus: cWin->number]; - } - /* - * Make sure that the newly mapped window displays. - */ - nswin = GSWindowWithNumber(cWin->number); - [nswin update]; - } - break; + NSDebugLLog(@"NSEvent", @"%d MapNotify\n", + xEvent.xmap.window); + if (cWin == 0 || xEvent.xmap.window != cWin->ident) + { + generic.cachedWindow + = [XGServer _windowForXWindow:xEvent.xmap.window]; + } + if (cWin != 0) + { + cWin->map_state = IsViewable; + /* + * if the window that was just mapped wants the input + * focus, re-do the request. + */ + if (generic.desiredFocusWindow == cWin->number + && generic.focusRequestNumber == 0) + { + NSDebugLLog(@"Focus", @"Refocusing %d on map notify", + cWin->number); + [self setinputfocus: cWin->number]; + } + /* + * Make sure that the newly mapped window displays. + */ + nswin = GSWindowWithNumber(cWin->number); + [nswin update]; + } + break; // Window is no longer visible. case UnmapNotify: @@ -1253,7 +1260,7 @@ static int check_modifier (XEvent *xEvent, KeySym key_sym, } generic.lastMotion = xEvent.xmotion.time; - generic.lastTime = generic.lastMotion; + [self setLastTime: generic.lastMotion]; state = xEvent.xmotion.state; if (state & generic.lMouseMask) { @@ -1466,25 +1473,66 @@ static int check_modifier (XEvent *xEvent, KeySym key_sym, // another client attempts to change the size of a window case ResizeRequest: - NSDebugLLog(@"NSEvent", @"%d ResizeRequest\n", - xEvent.xresizerequest.window); - break; + NSDebugLLog(@"NSEvent", @"%d ResizeRequest\n", + xEvent.xresizerequest.window); + break; // events dealing with the selection case SelectionClear: - NSDebugLLog(@"NSEvent", @"%d SelectionClear\n", - xEvent.xselectionclear.window); - break; + NSDebugLLog(@"NSEvent", @"%d SelectionClear\n", + xEvent.xselectionclear.window); + break; case SelectionNotify: - NSDebugLLog(@"NSEvent", @"%d SelectionNotify\n", - xEvent.xselection.requestor); - break; + NSDebugLLog(@"NSEvent", @"%d SelectionNotify\n", + xEvent.xselection.requestor); + break; case SelectionRequest: - NSDebugLLog(@"NSEvent", @"%d SelectionRequest\n", - xEvent.xselectionrequest.requestor); - break; + NSDebugLLog(@"NSEvent", @"%d SelectionRequest\n", + xEvent.xselectionrequest.requestor); + { + NSPasteboard *pb = [NSPasteboard pasteboardWithName: NSDragPboard]; + NSArray *types = [pb types]; + NSData *data = nil; + Atom xType = xEvent.xselectionrequest.target; + static Atom XG_UTF8_STRING = None; + static Atom XG_TEXT = None; + + if (XG_UTF8_STRING == None) + { + XG_UTF8_STRING = XInternAtom(dpy, "UTF8_STRING", False); + XG_TEXT = XInternAtom(dpy, "TEXT", False); + } + + if (((xType == XG_UTF8_STRING) || + (xType == XA_STRING) || + (xType == XG_TEXT)) && + [types containsObject: NSStringPboardType]) + { + NSString *s = [pb stringForType: NSStringPboardType]; + + if (xType == XG_UTF8_STRING) + { + data = [s dataUsingEncoding: NSUTF8StringEncoding]; + } + else if ((xType == XA_STRING) || (xType == XG_TEXT)) + { + data = [s dataUsingEncoding: NSISOLatin1StringEncoding]; + } + } + // FIXME: Add support for more types. See: xpbs.m + + if (data != nil) + { + DndClass dnd = xdnd(); + + // Send the data to the other process + xdnd_selection_send(&dnd, &xEvent.xselectionrequest, + (unsigned char *)[data bytes], [data length]); + } + } + break; // We shouldn't get here unless we forgot to trap an event above default: @@ -1511,7 +1559,7 @@ static int check_modifier (XEvent *xEvent, KeySym key_sym, * WM is asking us to take the keyboard focus */ - (NSEvent *)_handleTakeFocusAtom: (XEvent)xEvent - forContext: (NSGraphicsContext *)gcontext + forContext: (NSGraphicsContext *)gcontext { int key_num; NSWindow *key_win; @@ -1522,7 +1570,8 @@ static int check_modifier (XEvent *xEvent, KeySym key_sym, cWin->number, generic.currentFocusWindow, key_num); /* Sometimes window managers lose the setinputfocus on the key window - * e.g. when ordering out a window with focus then ordering in the key window. * it might search for a window until one accepts its take focus request. + * e.g. when ordering out a window with focus then ordering in the key window. + * it might search for a window until one accepts its take focus request. */ if (key_num == cWin->number) cWin->ignore_take_focus = NO; @@ -2277,4 +2326,45 @@ process_modifier_flags(unsigned int state) @end +@implementation XGServer (TimeKeeping) +// Sync time with X server every 10 seconds +#define MAX_TIME_DIFF 10 +// Regard an X time stamp as valid for half a second +#define OUT_DATE_TIME_DIFF 0.5 + +- (void) setLastTime: (Time)last +{ + if (generic.lastTimeStamp == 0 + || generic.baseXServerTime + MAX_TIME_DIFF * 1000 < last) + { + // We have not sync'ed with the clock for at least + // MAX_TIME_DIFF seconds ... so we do it now. + generic.lastTimeStamp = [NSDate timeIntervalSinceReferenceDate]; + generic.baseXServerTime = last; + } + else + { + // Optimisation to compute the new time stamp instead. + generic.lastTimeStamp += (last - generic.lastTime) / 1000.0; + } + + generic.lastTime = last; +} + +- (Time) lastTime +{ + // In the case of activation via DO the lastTime is outdated and cannot be used. + if (generic.lastTimeStamp == 0 + || ((generic.lastTimeStamp + OUT_DATE_TIME_DIFF) + < [NSDate timeIntervalSinceReferenceDate])) + { + return CurrentTime; + } + else + { + return generic.lastTime; + } +} + +@end diff --git a/Source/x11/XGServerWindow.m b/Source/x11/XGServerWindow.m index 4865317..b7bf80b 100644 --- a/Source/x11/XGServerWindow.m +++ b/Source/x11/XGServerWindow.m @@ -8,19 +8,21 @@ This file is part of GNUstep This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "config.h" #include @@ -533,6 +535,144 @@ static void setWindowHintsForStyle (Display *dpy, Window window, return x; } +- (void)_sendRoot: (Window)root + type: (Atom)type + window: (Window)window + data0: (long)data0 + data1: (long)data1 + data2: (long)data2 + data3: (long)data3 +{ + XEvent event; + + memset(&event, 0, sizeof(event)); + event.xclient.type = ClientMessage; + event.xclient.message_type = type; + event.xclient.format = 32; + event.xclient.display = dpy; + event.xclient.window = window; + event.xclient.data.l[0] = data0; + event.xclient.data.l[1] = data1; + event.xclient.data.l[2] = data2; + event.xclient.data.l[3] = data3; + XSendEvent(dpy, root, False, + (SubstructureNotifyMask|SubstructureRedirectMask), &event); + XFlush(dpy); +} + +/* + * Check if the window manager supports a feature. + */ +- (BOOL) _checkWMSupports: (Atom)feature +{ + Window root; + int count; + Atom *data; + Atom supported; + + if ((generic.wm & XGWM_EWMH) == 0) + { + return NO; + } + + supported = XInternAtom(dpy, "_NET_SUPPORTED", False); + root = DefaultRootWindow(dpy); + data = (Atom*)PropGetCheckProperty(dpy, root, supported, XA_ATOM, 32, -1, &count); + if (data != 0) + { + int i = 0; + + while (i < count && data[i] != feature) + { + i++; + } + XFree(data); + + if (i < count) + { + return YES; + } + } + return NO; +} + +Bool +_get_next_prop_new_event(Display *display, XEvent *event, char *arg) +{ + XID *data = (XID*)arg; + + if (event->type == PropertyNotify && + event->xproperty.window == data[0] && + event->xproperty.atom == data[1] && + event->xproperty.state == PropertyNewValue) + { + return True; + } + else + { + return False; + } +} + +- (BOOL) _tryRequestFrameExtents: (gswindow_device_t *)window +{ + static Atom _net_request_frame_extents = None; + XEvent xEvent; + XID event_data[2]; + NSDate *limit; + + if (_net_frame_extents == None) + { + _net_frame_extents = XInternAtom(dpy, "_NET_FRAME_EXTENTS", False); + } + + event_data[0] = window->ident; + event_data[1] = _net_frame_extents; + + if (_net_request_frame_extents == None) + { + _net_request_frame_extents = XInternAtom(dpy, "_NET_REQUEST_FRAME_EXTENTS", + False); + } + + if (![self _checkWMSupports: _net_request_frame_extents]) + { + return NO; + } + + [self _sendRoot: window->root + type: _net_request_frame_extents + window: window->ident + data0: 0 + data1: 0 + data2: 0 + data3: 0]; + + limit = [NSDate dateWithTimeIntervalSinceNow: 1.0]; + while ([limit timeIntervalSinceNow] > 0.0) + { + if (XCheckTypedWindowEvent(dpy, window->ident, DestroyNotify, &xEvent)) + { + return NO; + } + else if (XCheckIfEvent(dpy, &xEvent, _get_next_prop_new_event, + (char*)(&event_data))) + { + return YES; + } + else + { + CREATE_AUTORELEASE_POOL(pool); + + [NSThread sleepUntilDate: + [NSDate dateWithTimeIntervalSinceNow: 0.01]]; + DESTROY(pool); + } + } + + + return NO; +} - (BOOL) _checkStyle: (unsigned)style { @@ -553,13 +693,13 @@ static void setWindowHintsForStyle (Display *dpy, Window window, NSDebugLLog(@"Offset", @"Checking offsets for style %d\n", style); - root = [self _rootWindowForScreen: 0]; - context = [self xrContextForScreen: 0]; + root = [self _rootWindowForScreen: defScreen]; + context = [self xrContextForScreen: defScreen]; window = objc_malloc(sizeof(gswindow_device_t)); memset(window, '\0', sizeof(gswindow_device_t)); window->display = dpy; - window->screen = 0; + window->screen = defScreen; window->win_attrs.flags |= GSWindowStyleAttr; window->win_attrs.window_style = style; @@ -615,7 +755,7 @@ static void setWindowHintsForStyle (Display *dpy, Window window, | EnterWindowMask | LeaveWindowMask | FocusChangeMask -// | PropertyChangeMask + | PropertyChangeMask // | ColormapChangeMask | KeymapStateMask | VisibilityChangeMask @@ -668,12 +808,14 @@ static void setWindowHintsForStyle (Display *dpy, Window window, window->numProtocols = 0; window->protocols[window->numProtocols++] = generic.take_focus_atom; window->protocols[window->numProtocols++] = generic.delete_win_atom; - window->protocols[window->numProtocols++] = generic.net_wm_ping_atom; + if ((generic.wm & XGWM_EWMH) != 0) + { + window->protocols[window->numProtocols++] = generic.net_wm_ping_atom; + } if ((generic.wm & XGWM_WINDOWMAKER) != 0) { window->protocols[window->numProtocols++] = generic.miniaturize_atom; } - // FIXME Add ping protocol for EWMH XSetWMProtocols(dpy, window->ident, window->protocols, window->numProtocols); window->exposedRects = [NSMutableArray new]; @@ -700,60 +842,66 @@ static void setWindowHintsForStyle (Display *dpy, Window window, NSMapInsert(windowmaps, (void*)(uintptr_t)window->ident, window); NSMapInsert(windowtags, (void*)(uintptr_t)window->number, window); [self _setWindowOwnedByServer: window->number]; - [self orderwindow: NSWindowAbove : 0 : window->number]; - XSync(dpy, False); - while (XPending(dpy) > 0 || window->visibility > 1) + if (![self _tryRequestFrameExtents: window]) { - if (XPending(dpy) == 0) + // Only display the window, if the window manager does not support + // _NET_REQUEST_FRAME_EXTENTS + [self orderwindow: NSWindowAbove : 0 : window->number]; + + XSync(dpy, False); + while (XPending(dpy) > 0 || window->visibility > 1) { - NSDate *until; - - /* In theory, after executing XSync() all events resulting from - * our window creation and ordering front should be available in - * the X event queue. However, it's possible that a window manager - * could send soime events after the XSync() has been satisfied, - * so if we have not received a visibility notification we can wait - * for up to a second for more events. - */ - until = [NSDate dateWithTimeIntervalSinceNow: 1.0]; - while (XPending(dpy) == 0 && [until timeIntervalSinceNow] > 0.0) - { - CREATE_AUTORELEASE_POOL(pool); - - [NSThread sleepUntilDate: - [NSDate dateWithTimeIntervalSinceNow: 0.01]]; - DESTROY(pool); - } - if (XPending(dpy) == 0) - { - NSLog(@"Waited for a second, but the X system never" - @" made the window visible"); - break; - } - } - XNextEvent(dpy, &xEvent); - NSDebugLLog(@"Offset", @"Testing ... event %d window %d\n", - xEvent.type, xEvent.xany.window); - if (xEvent.xany.window != window->ident) - { - continue; - } - switch (xEvent.type) - { - case VisibilityNotify: - window->visibility = xEvent.xvisibility.state; - break; - - case ReparentNotify: - NSDebugLLog(@"Offset", @"%d ReparentNotify - offset %d %d\n", - xEvent.xreparent.window, xEvent.xreparent.x, - xEvent.xreparent.y); - repp = xEvent.xreparent.parent; - repx = xEvent.xreparent.x; - repy = xEvent.xreparent.y; - break; - } + if (XPending(dpy) == 0) + { + NSDate *until; + + /* In theory, after executing XSync() all events resulting from + * our window creation and ordering front should be available in + * the X event queue. However, it's possible that a window manager + * could send some events after the XSync() has been satisfied, + * so if we have not received a visibility notification we can wait + * for up to a second for more events. + */ + until = [NSDate dateWithTimeIntervalSinceNow: 1.0]; + while (XPending(dpy) == 0 && [until timeIntervalSinceNow] > 0.0) + { + CREATE_AUTORELEASE_POOL(pool); + + [NSThread sleepUntilDate: + [NSDate dateWithTimeIntervalSinceNow: 0.01]]; + DESTROY(pool); + } + if (XPending(dpy) == 0) + { + NSLog(@"Waited for a second, but the X system never" + @" made the window visible"); + break; + } + } + XNextEvent(dpy, &xEvent); + NSDebugLLog(@"Offset", @"Testing ... event %d window %d\n", + xEvent.type, xEvent.xany.window); + if (xEvent.xany.window != window->ident) + { + continue; + } + switch (xEvent.type) + { + case VisibilityNotify: + window->visibility = xEvent.xvisibility.state; + break; + + case ReparentNotify: + NSDebugLLog(@"Offset", @"%d ReparentNotify - offset %d %d\n", + xEvent.xreparent.window, xEvent.xreparent.x, + xEvent.xreparent.y); + repp = xEvent.xreparent.parent; + repx = xEvent.xreparent.x; + repy = xEvent.xreparent.y; + break; + } + } } /* If our window manager supports _NET_FRAME_EXTENTS we trust that as @@ -761,15 +909,13 @@ static void setWindowHintsForStyle (Display *dpy, Window window, */ if (_net_frame_extents == None) { - _net_frame_extents = XInternAtom(dpy, - "_NET_FRAME_EXTENTS", False); + _net_frame_extents = XInternAtom(dpy, "_NET_FRAME_EXTENTS", False); } extents = (unsigned long *)PropGetCheckProperty(dpy, window->ident, _net_frame_extents, XA_CARDINAL, 32, 4, &count); if (extents != 0) { - NSDebugLLog(@"Offset", - @"Offsets retrieved from _NET_FRAME_EXTENTS"); + NSDebugLLog(@"Offset", @"Offsets retrieved from _NET_FRAME_EXTENTS"); } if (extents == 0) { @@ -777,17 +923,17 @@ static void setWindowHintsForStyle (Display *dpy, Window window, * its as reliable as _NET_FRAME_EXTENTS */ if (_kde_frame_strut == None) - { - _kde_frame_strut = XInternAtom(dpy, - "_KDE_NET_WM_FRAME_STRUT", False); - } + { + _kde_frame_strut = XInternAtom(dpy, + "_KDE_NET_WM_FRAME_STRUT", False); + } extents = (unsigned long *)PropGetCheckProperty(dpy, - window->ident, _kde_frame_strut, XA_CARDINAL, 32, 4, &count); + window->ident, _kde_frame_strut, XA_CARDINAL, 32, 4, &count); if (extents!= 0) { - NSDebugLLog(@"Offset", - @"Offsets retrieved from _KDE_NET_WM_FRAME_STRUT"); - } + NSDebugLLog(@"Offset", + @"Offsets retrieved from _KDE_NET_WM_FRAME_STRUT"); + } } if (extents != 0) @@ -798,106 +944,105 @@ static void setWindowHintsForStyle (Display *dpy, Window window, o->b = extents[3]; o->known = YES; NSDebugLLog(@"Offset", @"Extents left %d, right %d, top %d, bottom %d", - extents[0], extents[1], extents[2], extents[3]); + extents[0], extents[1], extents[2], extents[3]); XFree(extents); } else if (repp != 0) { - NSDebugLLog(@"Offset", - @"Offsets retrieved from ReparentNotify"); + NSDebugLLog(@"Offset", @"Offsets retrieved from ReparentNotify"); window->parent = repp; if (repp != window->root) - { - Window parent = repp; - XWindowAttributes wattr; - float l; - float r; - float t; - float b; + { + Window parent = repp; + XWindowAttributes wattr; + float l; + float r; + float t; + float b; - /* Get the WM offset info which we hope is the same - * for all parented windows with the same style. - * The coordinates in the event are insufficient to determine - * the offsets as the new parent window may have a border, - * so we must get the attributes of that window and use them - * to determine our offsets. - */ - XGetWindowAttributes(dpy, parent, &wattr); - NSDebugLLog(@"Offset", @"Parent border,width,height %d,%d,%d\n", - wattr.border_width, wattr.width, wattr.height); - l = repx + wattr.border_width; - t = repy + wattr.border_width; + /* Get the WM offset info which we hope is the same + * for all parented windows with the same style. + * The coordinates in the event are insufficient to determine + * the offsets as the new parent window may have a border, + * so we must get the attributes of that window and use them + * to determine our offsets. + */ + XGetWindowAttributes(dpy, parent, &wattr); + NSDebugLLog(@"Offset", @"Parent border,width,height %d,%d,%d\n", + wattr.border_width, wattr.width, wattr.height); + l = repx + wattr.border_width; + t = repy + wattr.border_width; + + /* Find total parent size and subtract window size and + * top-left-corner offset to determine bottom-right-corner + * offset. + */ + r = wattr.width + wattr.border_width * 2; + r -= (window->xframe.size.width + l); + b = wattr.height + wattr.border_width * 2; + b -= (window->xframe.size.height + t); + + // Some window manager e.g. KDE2 put in multiple windows, + // so we have to find the right parent, closest to root + /* FIXME: This section of code has caused problems with + certain users. An X error occurs in XQueryTree and + later a seg fault in XFree. It's 'commented' out for + now unless you set the default 'GSDoubleParentWindows' + or we are reparented to 0,0 (which presumably must mean + that we have a double parent). + */ + if (generic.flags.doubleParentWindow == YES + || (repx == 0 && repy == 0)) + { + Window new_parent = parent; - /* Find total parent size and subtract window size and - * top-left-corner offset to determine bottom-right-corner - * offset. - */ - r = wattr.width + wattr.border_width * 2; - r -= (window->xframe.size.width + l); - b = wattr.height + wattr.border_width * 2; - b -= (window->xframe.size.height + t); - - // Some window manager e.g. KDE2 put in multiple windows, - // so we have to find the right parent, closest to root - /* FIXME: This section of code has caused problems with - certain users. An X error occurs in XQueryTree and - later a seg fault in XFree. It's 'commented' out for - now unless you set the default 'GSDoubleParentWindows' - or we are reparented to 0,0 (which presumably must mean - that we have a double parent). - */ - if (generic.flags.doubleParentWindow == YES - || (repx == 0 && repy == 0)) - { - Window new_parent = parent; - - r = wattr.width + wattr.border_width * 2; - b = wattr.height + wattr.border_width * 2; - while (new_parent && (new_parent != window->root)) - { - Window root; - Window *children = 0; - unsigned int nchildren; - - parent = new_parent; - NSLog(@"QueryTree window is %d (root %d cwin root %d)", - parent, root, window->root); - if (!XQueryTree(dpy, parent, &root, &new_parent, - &children, &nchildren)) - { - new_parent = None; - if (children) - { - NSLog(@"Bad pointer from failed X call?"); - children = 0; - } - } - if (children) - { - XFree(children); - } - if (new_parent && new_parent != window->root) - { - XGetWindowAttributes(dpy, parent, &wattr); - l += wattr.x + wattr.border_width; - t += wattr.y + wattr.border_width; - r = wattr.width + wattr.border_width * 2; - b = wattr.height + wattr.border_width * 2; - } - } /* while */ - r -= (window->xframe.size.width + l); - b -= (window->xframe.size.height + t); - } /* generic.flags.doubleParentWindow */ - - o->l = l; - o->r = r; - o->t = t; - o->b = b; - o->known = YES; - NSDebugLLog(@"Offset", - @"Style %d lrtb set to %d,%d,%d,%d\n", - style, (int)o->l, (int)o->r, (int)o->t, (int)o->b); - } + r = wattr.width + wattr.border_width * 2; + b = wattr.height + wattr.border_width * 2; + while (new_parent && (new_parent != window->root)) + { + Window root; + Window *children = 0; + unsigned int nchildren; + + parent = new_parent; + NSLog(@"QueryTree window is %d (root %d cwin root %d)", + parent, root, window->root); + if (!XQueryTree(dpy, parent, &root, &new_parent, + &children, &nchildren)) + { + new_parent = None; + if (children) + { + NSLog(@"Bad pointer from failed X call?"); + children = 0; + } + } + if (children) + { + XFree(children); + } + if (new_parent && new_parent != window->root) + { + XGetWindowAttributes(dpy, parent, &wattr); + l += wattr.x + wattr.border_width; + t += wattr.y + wattr.border_width; + r = wattr.width + wattr.border_width * 2; + b = wattr.height + wattr.border_width * 2; + } + } /* while */ + r -= (window->xframe.size.width + l); + b -= (window->xframe.size.height + t); + } /* generic.flags.doubleParentWindow */ + + o->l = l; + o->r = r; + o->t = t; + o->b = b; + o->known = YES; + NSDebugLLog(@"Offset", + @"Style %d lrtb set to %d,%d,%d,%d\n", + style, (int)o->l, (int)o->r, (int)o->t, (int)o->b); + } } [self termwindow: window->number]; @@ -906,11 +1051,11 @@ static void setWindowHintsForStyle (Display *dpy, Window window, { XNextEvent(dpy, &xEvent); NSDebugLLog(@"Offset", @"Destroying ... event %d window %d\n", - xEvent.type, xEvent.xany.window); + xEvent.type, xEvent.xany.window); if (xEvent.xany.window != window->ident) { - continue; - } + continue; + } } if (o->known == NO) { @@ -942,35 +1087,35 @@ static void setWindowHintsForStyle (Display *dpy, Window window, noticeboard = XInternAtom(dpy, "_WINDOWMAKER_NOTICEBOARD", False); while (i < count && data[i] != noticeboard) - { - i++; - } + { + i++; + } XFree(data); if (i < count) - { - Window *win; - void *d; - - win = (Window*)PropGetCheckProperty(dpy, root, - noticeboard, XA_WINDOW, 32, -1, &count); - - if (win != 0) - { - d = PropGetCheckProperty(dpy, *win, noticeboard, - XA_WINDOW, 32, 1, NULL); - if (d != 0) - { - XFree(d); - wmflags |= XGWM_WINDOWMAKER; - } - XFree(win); - } - } + { + Window *win; + void *d; + + win = (Window*)PropGetCheckProperty(dpy, root, + noticeboard, XA_WINDOW, 32, -1, &count); + + if (win != 0) + { + d = PropGetCheckProperty(dpy, *win, noticeboard, + XA_WINDOW, 32, 1, NULL); + if (d != 0) + { + XFree(d); + wmflags |= XGWM_WINDOWMAKER; + } + XFree(win); + } + } else - { - wmflags |= XGWM_WINDOWMAKER; - } + { + wmflags |= XGWM_WINDOWMAKER; + } } /* Now check for Gnome */ @@ -987,15 +1132,15 @@ static void setWindowHintsForStyle (Display *dpy, Window window, // a left over from an old window manager. if (win1 && *win1 == *win) { - wmflags |= XGWM_GNOME; + wmflags |= XGWM_GNOME; - generic.wintypes.win_type_atom = - XInternAtom(dpy, "_WIN_LAYER", False); - } + generic.wintypes.win_type_atom = + XInternAtom(dpy, "_WIN_LAYER", False); + } if (win1) { - XFree(win1); - } + XFree(win1); + } XFree(win); } @@ -1014,44 +1159,44 @@ static void setWindowHintsForStyle (Display *dpy, Window window, // a left over from an old window manager. if (win1 && *win1 == *win) { - wmflags |= XGWM_EWMH; - - // Store window type Atoms for this WM - generic.wintypes.win_type_atom = - XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False); - generic.wintypes.win_desktop_atom = - XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DESKTOP", False); - generic.wintypes.win_dock_atom = - XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DOCK", False); - generic.wintypes.win_floating_atom = - XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_TOOLBAR", False); - generic.wintypes.win_menu_atom = - XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_MENU", False); - generic.wintypes.win_modal_atom = - XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False); - generic.wintypes.win_normal_atom = - XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_NORMAL", False); - // New in wmspec 1.2 - generic.wintypes.win_utility_atom = - XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_UTILITY", False); - generic.wintypes.win_splash_atom = - XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_SPLASH", False); - //KDE extensions - generic.wintypes.win_override_atom = - XInternAtom(dpy, "_KDE_NET_WM_WINDOW_TYPE_OVERRIDE", False); - generic.wintypes.win_topmenu_atom = - XInternAtom(dpy, "_KDE_NET_WM_WINDOW_TYPE_TOPMENU", False); - - // Window state - generic.netstates.net_wm_state_atom = - XInternAtom(dpy, "_NET_WM_STATE", False); - generic.netstates.net_wm_state_skip_taskbar_atom = - XInternAtom(dpy, "_NET_WM_STATE_SKIP_TASKBAR", False); - } + wmflags |= XGWM_EWMH; + + // Store window type Atoms for this WM + generic.wintypes.win_type_atom = + XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False); + generic.wintypes.win_desktop_atom = + XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DESKTOP", False); + generic.wintypes.win_dock_atom = + XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DOCK", False); + generic.wintypes.win_floating_atom = + XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_TOOLBAR", False); + generic.wintypes.win_menu_atom = + XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_MENU", False); + generic.wintypes.win_modal_atom = + XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False); + generic.wintypes.win_normal_atom = + XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_NORMAL", False); + // New in wmspec 1.2 + generic.wintypes.win_utility_atom = + XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_UTILITY", False); + generic.wintypes.win_splash_atom = + XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_SPLASH", False); + //KDE extensions + generic.wintypes.win_override_atom = + XInternAtom(dpy, "_KDE_NET_WM_WINDOW_TYPE_OVERRIDE", False); + generic.wintypes.win_topmenu_atom = + XInternAtom(dpy, "_KDE_NET_WM_WINDOW_TYPE_TOPMENU", False); + + // Window state + generic.netstates.net_wm_state_atom = + XInternAtom(dpy, "_NET_WM_STATE", False); + generic.netstates.net_wm_state_skip_taskbar_atom = + XInternAtom(dpy, "_NET_WM_STATE_SKIP_TASKBAR", False); + } if (win1) { - XFree(win1); - } + XFree(win1); + } XFree(win); } @@ -1203,12 +1348,9 @@ static void setWindowHintsForStyle (Display *dpy, Window window, * Initialize time of last events to be the start of time - not * the current time! */ - if (CurrentTime == 0) - { - generic.lastClick = 1; - generic.lastMotion = 1; - generic.lastTime = 1; - } + generic.lastClick = 1; + generic.lastMotion = 1; + generic.lastTime = 1; /* * Set up standard atoms. @@ -1254,20 +1396,20 @@ static void setWindowHintsForStyle (Display *dpy, Window window, if ((generic.wm & XGWM_WINDOWMAKER) != 0) { generic.flags.useWindowMakerIcons = YES; - if ([defs stringForKey: @"UseWindowMakerIcons"] != nil + if ([defs objectForKey: @"UseWindowMakerIcons"] != nil && [defs boolForKey: @"UseWindowMakerIcons"] == NO) { generic.flags.useWindowMakerIcons = NO; } } generic.flags.appOwnsMiniwindow = YES; - if ([defs stringForKey: @"GSAppOwnsMiniwindow"] != nil + if ([defs objectForKey: @"GSAppOwnsMiniwindow"] != nil && [defs boolForKey: @"GSAppOwnsMiniwindow"] == NO) { generic.flags.appOwnsMiniwindow = NO; } generic.flags.doubleParentWindow = NO; - if ([defs stringForKey: @"GSDoubleParentWindows"] != nil + if ([defs objectForKey: @"GSDoubleParentWindows"] != nil && [defs boolForKey: @"GSDoubleParentWindows"] == YES) { generic.flags.doubleParentWindow = YES; @@ -1352,9 +1494,9 @@ static void setWindowHintsForStyle (Display *dpy, Window window, * hold 64bit values. */ XChangeProperty(dpy, ROOT, - generic.win_decor_atom, generic.win_decor_atom, - 32, PropModeReplace, (unsigned char *)&win_attrs, - sizeof(GNUstepWMAttributes)/sizeof(CARD32)); + generic.win_decor_atom, generic.win_decor_atom, + 32, PropModeReplace, (unsigned char *)&win_attrs, + sizeof(GNUstepWMAttributes)/sizeof(CARD32)); } if ((generic.wm & XGWM_EWMH) != 0) @@ -1400,70 +1542,70 @@ static void setWindowHintsForStyle (Display *dpy, Window window, */ if (_offsets_name == None) { - _offsets_name = XInternAtom(dpy, "_GNUSTEP_FRAME_OFFSETS", False); - } + _offsets_name = XInternAtom(dpy, "_GNUSTEP_FRAME_OFFSETS", False); + } if ([defs boolForKey: @"GSIgnoreRootOffsets"] == YES) { - offsets = 0; - } + offsets = 0; + } else { - offsets = (uint16_t *)PropGetCheckProperty(dpy, - DefaultRootWindow(dpy), _offsets_name, XA_CARDINAL, 16, 60, &count); - } + offsets = (uint16_t *)PropGetCheckProperty(dpy, + DefaultRootWindow(dpy), _offsets_name, XA_CARDINAL, 16, 60, &count); + } if (offsets == 0) { - BOOL ok = YES; + BOOL ok = YES; - /* No offsets available on the root window ... so we test each - * style of window to determine its offsets. - */ - for (i = 1; i < 16; i++) - { - if ([self _checkStyle: i] == NO) - { - ok = NO; // test failed for this style - } - } + /* No offsets available on the root window ... so we test each + * style of window to determine its offsets. + */ + for (i = 1; i < 16; i++) + { + if ([self _checkStyle: i] == NO) + { + ok = NO; // test failed for this style + } + } - if (ok == YES) - { - uint16_t off[60]; + if (ok == YES) + { + uint16_t off[60]; - /* We have obtained all the offsets, so we store them to - * the root window so that other GNUstep applications don't - * need to test to determine offsets. - */ - count = 0; - for (i = 1; i < 16; i++) - { - off[count++] = (uint16_t)generic.offsets[i].l; - off[count++] = (uint16_t)generic.offsets[i].r; - off[count++] = (uint16_t)generic.offsets[i].t; - off[count++] = (uint16_t)generic.offsets[i].b; - } - XChangeProperty(dpy, DefaultRootWindow(dpy), - _offsets_name, XA_CARDINAL, 16, PropModeReplace, - (unsigned char *)off, 60); - } - } + /* We have obtained all the offsets, so we store them to + * the root window so that other GNUstep applications don't + * need to test to determine offsets. + */ + count = 0; + for (i = 1; i < 16; i++) + { + off[count++] = (uint16_t)generic.offsets[i].l; + off[count++] = (uint16_t)generic.offsets[i].r; + off[count++] = (uint16_t)generic.offsets[i].t; + off[count++] = (uint16_t)generic.offsets[i].b; + } + XChangeProperty(dpy, DefaultRootWindow(dpy), + _offsets_name, XA_CARDINAL, 16, PropModeReplace, + (unsigned char *)off, 60); + } + } else { - /* Got offsets from the root window. - * Let's copy them into our local table. - */ - count = 0; - for (i = 1; i < 16; i++) - { - generic.offsets[i].l = (float)(offsets[count++]); - generic.offsets[i].r = (float)(offsets[count++]); - generic.offsets[i].t = (float)(offsets[count++]); - generic.offsets[i].b = (float)(offsets[count++]); - generic.offsets[i].known = YES; - } - XFree(offsets); - } + /* Got offsets from the root window. + * Let's copy them into our local table. + */ + count = 0; + for (i = 1; i < 16; i++) + { + generic.offsets[i].l = (float)(offsets[count++]); + generic.offsets[i].r = (float)(offsets[count++]); + generic.offsets[i].t = (float)(offsets[count++]); + generic.offsets[i].b = (float)(offsets[count++]); + generic.offsets[i].known = YES; + } + XFree(offsets); + } } } @@ -1692,7 +1834,7 @@ static void setWindowHintsForStyle (Display *dpy, Window window, else { window->win_attrs.window_style - = style & (NSIconWindowMask | NSMiniWindowMask); + = style & (NSIconWindowMask | NSMiniWindowMask); } frame = [self _OSFrameToXFrame: frame for: window]; @@ -2045,37 +2187,36 @@ static void setWindowHintsForStyle (Display *dpy, Window window, if (_net_frame_extents == None) { - _net_frame_extents = XInternAtom(dpy, - "_NET_FRAME_EXTENTS", False); - } + _net_frame_extents = XInternAtom(dpy, + "_NET_FRAME_EXTENTS", False); + } extents = (unsigned long *)PropGetCheckProperty(dpy, - win, _net_frame_extents, XA_CARDINAL, 32, 4, &count); - + win, _net_frame_extents, XA_CARDINAL, 32, 4, &count); if (!extents) // && (generic.wm & XGWM_KDE)) { - if (_kde_frame_strut == None) - { - _kde_frame_strut = XInternAtom(dpy, - "_KDE_NET_WM_FRAME_STRUT", False); - } - extents = (unsigned long *)PropGetCheckProperty(dpy, - win, _kde_frame_strut, XA_CARDINAL, 32, 4, &count); - } + if (_kde_frame_strut == None) + { + _kde_frame_strut = XInternAtom(dpy, + "_KDE_NET_WM_FRAME_STRUT", False); + } + extents = (unsigned long *)PropGetCheckProperty(dpy, + win, _kde_frame_strut, XA_CARDINAL, 32, 4, &count); + } if (extents) { - NSDebugLLog(@"Frame", - @"Window %d, left %d, right %d, top %d, bottom %d", - win, extents[0], extents[1], extents[2], extents[3]); - *l = extents[0]; - *r = extents[1]; - *t = extents[2]; - *b = extents[3]; - XFree(extents); - return; - } + NSDebugLLog(@"Frame", + @"Window %d, left %d, right %d, top %d, bottom %d", + win, extents[0], extents[1], extents[2], extents[3]); + *l = extents[0]; + *r = extents[1]; + *t = extents[2]; + *b = extents[3]; + XFree(extents); + return; + } } if ((style & NSIconWindowMask) || (style & NSMiniWindowMask)) @@ -2096,8 +2237,8 @@ static void setWindowHintsForStyle (Display *dpy, Window window, *b = o->b; *t = o->t; NSDebugLLog(@"Frame", - @"Window %d, offsets %f, %f, %f, %f", - win, *l, *r, *t, *b); + @"Window %d, offsets %f, %f, %f, %f", + win, *l, *r, *t, *b); return; } @@ -2107,33 +2248,33 @@ NSLog(@"styleoffsets ... guessing offsets\n"); { *l = *r = *t = *b = 1.0; if (NSResizableWindowMask & style) - { - *b = 9.0; - } + { + *b = 9.0; + } if ((style & NSTitledWindowMask) || (style & NSClosableWindowMask) - || (style & NSMiniaturizableWindowMask)) - { - *t = 25.0; - } + || (style & NSMiniaturizableWindowMask)) + { + *t = 25.0; + } NSDebugLLog(@"Frame", - @"Window %d, windowmaker %f, %f, %f, %f", - win, *l, *r, *t, *b); + @"Window %d, windowmaker %f, %f, %f, %f", + win, *l, *r, *t, *b); } else if ((generic.wm & XGWM_EWMH) != 0) { *l = *r = *t = *b = 4; if (NSResizableWindowMask & style) - { - *b = 7; - } + { + *b = 7; + } if ((style & NSTitledWindowMask) || (style & NSClosableWindowMask) - || (style & NSMiniaturizableWindowMask)) - { - *t = 20; - } + || (style & NSMiniaturizableWindowMask)) + { + *t = 20; + } NSDebugLLog(@"Frame", - @"Window %d, EWMH %f, %f, %f, %f", - win, *l, *r, *t, *b); + @"Window %d, EWMH %f, %f, %f, %f", + win, *l, *r, *t, *b); } else { @@ -2144,8 +2285,8 @@ NSLog(@"styleoffsets ... guessing offsets\n"); */ *l = *r = *t = *b = 0.0; NSDebugLLog(@"Frame", - @"Window %d, unknown %f, %f, %f, %f", - win, *l, *r, *t, *b); + @"Window %d, unknown %f, %f, %f, %f", + win, *l, *r, *t, *b); } } @@ -2796,6 +2937,18 @@ static BOOL didCreatePixmaps; move = YES; } + /* Temporarily remove minimum and maximum window size hints to make + * the window resizable programatically. + */ + if (window->siz_hints.flags & (PMinSize | PMaxSize)) + { + long flags = window->siz_hints.flags; + + window->siz_hints.flags &= ~(PMinSize | PMaxSize); + XSetWMNormalHints(dpy, window->ident, &window->siz_hints); + window->siz_hints.flags = flags; + } + xVal = [self _OSFrameToXFrame: rect for: window]; xHint = [self _XFrameToXHints: xVal for: window]; window->siz_hints.width = (int)xHint.size.width; @@ -2878,6 +3031,7 @@ static BOOL didCreatePixmaps; - (void) setwindowlevel: (int)level : (int)win { + static Atom net_wm_state_skip_pager = None; gswindow_device_t *window; window = WINDOW_WITH_TAG(win); @@ -2893,166 +3047,177 @@ static BOOL didCreatePixmaps; // send WindowMaker WM window style hints // Always send GNUstepWMAttributes - { - XEvent event; - - /* - * First change the window properties so that, if the window - * is not mapped, we have stored the required info for when - * the WM maps it. - */ + /* + * First change the window properties so that, if the window + * is not mapped, we have stored the required info for when + * the WM maps it. + */ /* Warning ... X-bug .. when we specify 32bit data X actually expects data * of type 'long' or 'unsigned long' even on machines where those types * hold 64bit values. */ - XChangeProperty(dpy, window->ident, - generic.win_decor_atom, generic.win_decor_atom, - 32, PropModeReplace, (unsigned char *)&window->win_attrs, - sizeof(GNUstepWMAttributes)/sizeof(CARD32)); - /* - * Now send a message for rapid handling. - */ - event.xclient.type = ClientMessage; - event.xclient.message_type = generic.win_decor_atom; - event.xclient.format = 32; - event.xclient.display = dpy; - event.xclient.window = window->ident; - event.xclient.data.l[0] = GSWindowLevelAttr; - event.xclient.data.l[1] = window->win_attrs.window_level; - event.xclient.data.l[2] = 0; - event.xclient.data.l[3] = 0; - XSendEvent(dpy, DefaultRootWindow(dpy), False, - SubstructureRedirectMask, &event); - } + XChangeProperty(dpy, window->ident, + generic.win_decor_atom, generic.win_decor_atom, + 32, PropModeReplace, (unsigned char *)&window->win_attrs, + sizeof(GNUstepWMAttributes)/sizeof(CARD32)); + /* + * Now send a message for rapid handling. + */ + [self _sendRoot: window->root + type: generic.win_decor_atom + window: window->ident + data0: GSWindowLevelAttr + data1: window->win_attrs.window_level + data2: 0 + data3: 0]; if ((generic.wm & XGWM_EWMH) != 0) - { - int len; - long data[2]; - BOOL skipTaskbar = NO; + { + int len; + long data[2]; + BOOL skipTaskbar = NO; + + data[0] = generic.wintypes.win_normal_atom; + data[1] = None; + len = 1; - data[0] = generic.wintypes.win_normal_atom; - data[1] = None; - len = 1; - - if (level == NSModalPanelWindowLevel) - { - data[0] = generic.wintypes.win_modal_atom; - skipTaskbar = YES; - } - else if (level == NSMainMenuWindowLevel) - { - // For strange reasons menu level does not - // work out for the main menu - //data[0] = generic.wintypes.win_topmenu_atom; - data[0] = generic.wintypes.win_dock_atom; - //len = 2; - skipTaskbar = YES; - } - else if (level == NSSubmenuWindowLevel - || level == NSFloatingWindowLevel - || level == NSTornOffMenuWindowLevel) - { + if (level == NSModalPanelWindowLevel) + { + data[0] = generic.wintypes.win_modal_atom; + skipTaskbar = YES; + } + else if (level == NSMainMenuWindowLevel) + { + // For strange reasons menu level does not + // work out for the main menu + //data[0] = generic.wintypes.win_topmenu_atom; + data[0] = generic.wintypes.win_dock_atom; + //len = 2; + skipTaskbar = YES; + } + else if (level == NSSubmenuWindowLevel + || level == NSFloatingWindowLevel + || level == NSTornOffMenuWindowLevel) + { #ifdef USE_KDE_OVERRIDE - data[0] = generic.wintypes.win_override_atom; - //data[0] = generic.wintypes.win_utility_atom; - data[1] = generic.wintypes.win_menu_atom; - len = 2; + data[0] = generic.wintypes.win_override_atom; + //data[0] = generic.wintypes.win_utility_atom; + data[1] = generic.wintypes.win_menu_atom; + len = 2; #else - data[0] = generic.wintypes.win_menu_atom; - len = 1; + data[0] = generic.wintypes.win_menu_atom; + len = 1; #endif - skipTaskbar = YES; - } - else if (level == NSDockWindowLevel - || level == NSStatusWindowLevel) - { - data[0] =generic.wintypes.win_dock_atom; - skipTaskbar = YES; - } - // Does this belong into a different category? - else if (level == NSPopUpMenuWindowLevel) - { + skipTaskbar = YES; + } + else if (level == NSDockWindowLevel + || level == NSStatusWindowLevel) + { + data[0] =generic.wintypes.win_dock_atom; + skipTaskbar = YES; + } + // Does this belong into a different category? + else if (level == NSPopUpMenuWindowLevel) + { #ifdef USE_KDE_OVERRIDE - data[0] = generic.wintypes.win_override_atom; - data[1] = generic.wintypes.win_floating_atom; - len = 2; + data[0] = generic.wintypes.win_override_atom; + data[1] = generic.wintypes.win_floating_atom; + len = 2; #else - data[0] = generic.wintypes.win_modal_atom; - len = 1; + data[0] = generic.wintypes.win_modal_atom; + len = 1; #endif - skipTaskbar = YES; - } - else if (level == NSDesktopWindowLevel) - { - data[0] = generic.wintypes.win_desktop_atom; - skipTaskbar = YES; - } + skipTaskbar = YES; + } + else if (level == NSDesktopWindowLevel) + { + data[0] = generic.wintypes.win_desktop_atom; + skipTaskbar = YES; + } /* Warning ... X-bug .. when we specify 32bit data X actually expects data * of type 'long' or 'unsigned long' even on machines where those types * hold 64bit values. */ - XChangeProperty(dpy, window->ident, generic.wintypes.win_type_atom, - XA_ATOM, 32, PropModeReplace, - (unsigned char *)&data, len); - + XChangeProperty(dpy, window->ident, generic.wintypes.win_type_atom, + XA_ATOM, 32, PropModeReplace, + (unsigned char *)&data, len); + /* * Change _NET_WM_STATE based on window level. * This should be based on real window type (NSMenu, NSPanel, etc). * This feature is only needed for window managers that cannot properly * handle the window type set above. */ - if (skipTaskbar) - { - len = 1; - data[0] = generic.netstates.net_wm_state_skip_taskbar_atom; - XChangeProperty(dpy, window->ident, - generic.netstates.net_wm_state_atom, - XA_ATOM, 32, PropModeReplace, - (unsigned char *)&data, len); - } - else - { - XDeleteProperty(dpy, window->ident, - generic.netstates.net_wm_state_atom); - } - } + if (skipTaskbar) + { + static Atom net_wm_state_add = None; + + if (net_wm_state_add == None) + net_wm_state_add = XInternAtom(dpy, "_NET_WM_STATE_ADD", False); + if (net_wm_state_skip_pager == None) + net_wm_state_skip_pager = XInternAtom(dpy, "_NET_WM_STATE_SKIP_PAGER", + False); + [self _sendRoot: window->root + type: generic.netstates.net_wm_state_atom + window: window->ident + data0: net_wm_state_add + data1: generic.netstates.net_wm_state_skip_taskbar_atom + data2: net_wm_state_skip_pager + data3: 1]; + } + else + { + static Atom net_wm_state_remove = None; + + if (net_wm_state_remove == None) + net_wm_state_remove = XInternAtom(dpy, "_NET_WM_STATE_REMOVE", False); + if (net_wm_state_skip_pager == None) + net_wm_state_skip_pager = XInternAtom(dpy, "_NET_WM_STATE_SKIP_PAGER", + False); + + [self _sendRoot: window->root + type: generic.netstates.net_wm_state_atom + window: window->ident + data0: net_wm_state_remove + data1: generic.netstates.net_wm_state_skip_taskbar_atom + data2: net_wm_state_skip_pager + data3: 1]; + } + } else if ((generic.wm & XGWM_GNOME) != 0) - { - XEvent event; - long flag = WIN_LAYER_NORMAL; + { + long flag = WIN_LAYER_NORMAL; - if (level == NSDesktopWindowLevel) - flag = WIN_LAYER_DESKTOP; - else if (level == NSSubmenuWindowLevel - || level == NSFloatingWindowLevel - || level == NSTornOffMenuWindowLevel) - flag = WIN_LAYER_ONTOP; - else if (level == NSMainMenuWindowLevel) - flag = WIN_LAYER_MENU; - else if (level == NSDockWindowLevel - || level == NSStatusWindowLevel) - flag = WIN_LAYER_DOCK; - else if (level == NSModalPanelWindowLevel - || level == NSPopUpMenuWindowLevel) - flag = WIN_LAYER_ONTOP; - else if (level == NSScreenSaverWindowLevel) - flag = WIN_LAYER_ABOVE_DOCK; - - XChangeProperty(dpy, window->ident, generic.wintypes.win_type_atom, - XA_CARDINAL, 32, PropModeReplace, - (unsigned char *)&flag, 1); - - event.xclient.type = ClientMessage; - event.xclient.window = window->ident; - event.xclient.display = dpy; - event.xclient.message_type = generic.wintypes.win_type_atom; - event.xclient.format = 32; - event.xclient.data.l[0] = flag; - XSendEvent(dpy, window->root, False, - SubstructureNotifyMask, &event); - } + if (level == NSDesktopWindowLevel) + flag = WIN_LAYER_DESKTOP; + else if (level == NSSubmenuWindowLevel + || level == NSFloatingWindowLevel + || level == NSTornOffMenuWindowLevel) + flag = WIN_LAYER_ONTOP; + else if (level == NSMainMenuWindowLevel) + flag = WIN_LAYER_MENU; + else if (level == NSDockWindowLevel + || level == NSStatusWindowLevel) + flag = WIN_LAYER_DOCK; + else if (level == NSModalPanelWindowLevel + || level == NSPopUpMenuWindowLevel) + flag = WIN_LAYER_ONTOP; + else if (level == NSScreenSaverWindowLevel) + flag = WIN_LAYER_ABOVE_DOCK; + + XChangeProperty(dpy, window->ident, generic.wintypes.win_type_atom, + XA_CARDINAL, 32, PropModeReplace, + (unsigned char *)&flag, 1); + + [self _sendRoot: window->root + type: generic.wintypes.win_type_atom + window: window->ident + data0: flag + data1: 0 + data2: 0 + data3: 0]; + } } } @@ -3081,7 +3246,7 @@ static BOOL didCreatePixmaps; if (!client_stack_atom) client_stack_atom = XInternAtom(dpy, "_NET_CLIENT_LIST_STACKING", False); - rootWindow = [self _rootWindowForScreen:0]; + rootWindow = [self _rootWindowForScreen: defScreen]; windowOrder = (Window *)PropGetCheckProperty(dpy, rootWindow->ident, client_stack_atom, @@ -3100,7 +3265,7 @@ static BOOL didCreatePixmaps; * interested in the ones which are ours. */ if (tmp) { - [ret addObject:[NSNumber numberWithInt:tmp->number]]; + [ret addObject:[NSNumber numberWithInt:tmp->number]]; } } @@ -3355,7 +3520,7 @@ static BOOL didCreatePixmaps; ret = XGrabPointer(dpy, window->ident, False, PointerMotionMask | ButtonReleaseMask | ButtonPressMask, - GrabModeAsync, GrabModeAsync, None, None, CurrentTime); + GrabModeAsync, GrabModeAsync, None, None, [self lastTime]); if (ret != GrabSuccess) NSDebugLLog(@"XGTrace", @"Failed to grab pointer %d\n", win); @@ -3370,7 +3535,7 @@ static BOOL didCreatePixmaps; - (void) releasemouse { NSDebugLLog(@"XGTrace", @"Released pointer\n"); - XUngrabPointer(dpy, CurrentTime); + XUngrabPointer(dpy, [self lastTime]); grab_window = NULL; } @@ -3398,7 +3563,7 @@ static BOOL didCreatePixmaps; NSDebugLLog(@"Focus", @"Setting focus to %d", window->number); generic.desiredFocusWindow = win; generic.focusRequestNumber = XNextRequest(dpy); - XSetInputFocus(dpy, window->ident, RevertToParent, generic.lastTime); + XSetInputFocus(dpy, window->ident, RevertToParent, [self lastTime]); [inputServer ximFocusICWindow: window]; } @@ -3415,24 +3580,19 @@ static BOOL didCreatePixmaps; if ((generic.wm & XGWM_WINDOWMAKER) != 0) { gswindow_device_t *window = WINDOW_WITH_TAG(win); - XEvent event; if (win == 0 || window == 0) - { - return; - } + { + return; + } - event.xclient.type = ClientMessage; - event.xclient.message_type = generic.titlebar_state_atom; - event.xclient.format = 32; - event.xclient.display = dpy; - event.xclient.window = window->ident; - event.xclient.data.l[0] = st; - event.xclient.data.l[1] = 0; - event.xclient.data.l[2] = 0; - event.xclient.data.l[3] = 0; - XSendEvent(dpy, DefaultRootWindow(dpy), False, - SubstructureRedirectMask, &event); + [self _sendRoot: window->root + type: generic.titlebar_state_atom + window: window->ident + data0: st + data1: 0 + data2: 0 + data3: 0]; } } @@ -3460,21 +3620,55 @@ static BOOL didCreatePixmaps; } else { - unsigned long opacity; + unsigned int opacity; - opacity = (unsigned int)(alpha * 0xffffffff); + opacity = (unsigned int)(alpha * 0xffffffffU); XChangeProperty(window->display, window->ident, opacity_atom, XA_CARDINAL, 32, PropModeReplace, (unsigned char*)&opacity, 1L); if (window->parent != window->root) { - XChangeProperty(window->display, window->parent, opacity_atom, - XA_CARDINAL, 32, PropModeReplace, - (unsigned char*)&opacity, 1); - } + XChangeProperty(window->display, window->parent, opacity_atom, + XA_CARDINAL, 32, PropModeReplace, + (unsigned char*)&opacity, 1); + } + + // GDK uses an event to set opacity, but most window manager still wait + // for property changes. What is the official stanard? } } +- (float) getAlpha: (int)win +{ + gswindow_device_t *window = WINDOW_WITH_TAG(win); + static Atom opacity_atom = None; + int c; + unsigned int *num; + float alpha = 0.0; + + if (win == 0 || window == 0) + { + NSDebugLLog(@"XGTrace", @"Setting alpha to unknown win %d", win); + return alpha; + } + + /* Initialize the atom if needed */ + if (opacity_atom == None) + opacity_atom = XInternAtom (window->display, "_NET_WM_WINDOW_OPACITY", False); + + num = (unsigned int*)PropGetCheckProperty(dpy, window->ident, + opacity_atom, XA_CARDINAL, + 32, 1, &c); + + if (num) + { + if (*num) + alpha = (float)*num / 0xffffffffU; + XFree(num); + } + + return alpha; +} - (void *) serverDevice { @@ -4067,5 +4261,212 @@ _computeDepth(int class, int bpp) return [super iconSize]; } -@end +- (unsigned int) numberOfDesktops: (int)screen +{ + static Atom number_of_desktops = None; + int c; + unsigned int *num; + unsigned int number = 0; + if (number_of_desktops == None) + number_of_desktops = XInternAtom(dpy, "_NET_NUMBER_OF_DESKTOPS", False); + + num = (unsigned int*)PropGetCheckProperty(dpy, RootWindow(dpy, screen), + number_of_desktops, XA_CARDINAL, + 32, 1, &c); + + if (num) + { + number = *num; + XFree(num); + } + return number; +} + +- (NSArray *) namesOfDesktops: (int)screen +{ + static Atom utf8_string = None; + static Atom desktop_names = None; + int c; + char *names; + + if (utf8_string == None) + { + utf8_string = XInternAtom(dpy, "UTF8_STRING", False); + desktop_names = XInternAtom(dpy, "_NET_DESKTOP_NAMES", False); + } + + names = (char *)PropGetCheckProperty(dpy, RootWindow(dpy, screen), + desktop_names, utf8_string, + 0, 0, &c); + if (names) + { + NSMutableArray *array = [[NSMutableArray alloc] init]; + char *p = names; + + while (p < names + c - 1) + { + [array addObject: [NSString stringWithUTF8String: p]]; + p += strlen(p) + 1; + } + XFree(names); + return AUTORELEASE(array); + } + + return nil; +} + +- (unsigned int) desktopNumberForScreen: (int)screen +{ + static Atom current_desktop = None; + int c; + unsigned int *num; + unsigned int number = 0; + + if (current_desktop == None) + current_desktop = XInternAtom(dpy, "_NET_CURRENT_DESKTOP", False); + + num = (unsigned int*)PropGetCheckProperty(dpy, RootWindow(dpy, screen), + current_desktop, XA_CARDINAL, + 32, 1, &c); + + if (num) + { + number = *num; + XFree(num); + } + return number; +} + +- (void) setDesktopNumber: (unsigned int)workspace forScreen: (int)screen +{ + static Atom current_desktop = None; + Window root = RootWindow(dpy, screen); + + if (current_desktop == None) + current_desktop = XInternAtom(dpy, "_NET_CURRENT_DESKTOP", False); + + [self _sendRoot: root + type: current_desktop + window: root + data0: workspace + data1: [self lastTime] + data2: 0 + data3: 0]; +} + +- (unsigned int) desktopNumberForWindow: (int)win +{ + gswindow_device_t *window; + static Atom wm_desktop = None; + int c; + unsigned int *num; + unsigned int number = 0; + + window = WINDOW_WITH_TAG(win); + if (!window) + return 0; + + if (wm_desktop == None) + wm_desktop = XInternAtom(dpy, "_NET_WM_DESKTOP", False); + + num = (unsigned int*)PropGetCheckProperty(dpy, window->ident, + wm_desktop, XA_CARDINAL, + 32, 1, &c); + + if (num) + { + number = *num; + XFree(num); + } + return number; +} + +- (void) setDesktopNumber: (unsigned int)workspace forWindow: (int)win +{ + gswindow_device_t *window; + static Atom wm_desktop = None; + + window = WINDOW_WITH_TAG(win); + if (!window) + return; + + if (wm_desktop == None) + wm_desktop = XInternAtom(dpy, "_NET_WM_DESKTOP", False); + + [self _sendRoot: window->root + type: wm_desktop + window: window->ident + data0: workspace + data1: 1 + data2: 0 + data3: 0]; +} + +- (void) setShadow: (BOOL)hasShadow : (int)win +{ + gswindow_device_t *window; + static Atom wm_window_shadow = None; + unsigned long shadow; + + window = WINDOW_WITH_TAG(win); + if (!window) + return; + + if (wm_window_shadow == None) + wm_window_shadow = XInternAtom(dpy, "_NET_WM_WINDOW_SHADOW", False); + + if (hasShadow) + { + // FIXME: What size? + shadow = (unsigned int)(0.1 * 0xffffffff); + + XChangeProperty(window->display, window->ident, wm_window_shadow, + XA_CARDINAL, 32, PropModeReplace, + (unsigned char*)&shadow, 1L); + if (window->parent != window->root) + { + XChangeProperty(window->display, window->parent, wm_window_shadow, + XA_CARDINAL, 32, PropModeReplace, + (unsigned char*)&shadow, 1); + } + } + else + { + XDeleteProperty(window->display, window->ident, wm_window_shadow); + if (window->parent != window->root) + { + XDeleteProperty(window->display, window->parent, wm_window_shadow); + } + } +} + +- (BOOL) hasShadow: (int)win +{ + gswindow_device_t *window; + static Atom wm_window_shadow = None; + int c; + unsigned int *num; + BOOL hasShadow = NO; + + window = WINDOW_WITH_TAG(win); + if (!window) + return hasShadow; + + if (wm_window_shadow == None) + wm_window_shadow = XInternAtom(dpy, "_NET_WM_WINDOW_SHADOW", False); + + num = (unsigned int*)PropGetCheckProperty(dpy, window->ident, + wm_window_shadow, XA_CARDINAL, + 32, 1, &c); + + if (num) + { + if (*num) + hasShadow = YES; + XFree(num); + } + return hasShadow; +} + +@end diff --git a/Source/x11/XIMInputServer.m b/Source/x11/XIMInputServer.m index e45c8d5..12d04d6 100644 --- a/Source/x11/XIMInputServer.m +++ b/Source/x11/XIMInputServer.m @@ -10,19 +10,20 @@ This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include "config.h" @@ -33,7 +34,7 @@ #include #include #include -#include +#include #include "x11/XGInputServer.h" #include diff --git a/Source/x11/XWindowBuffer.m b/Source/x11/XWindowBuffer.m index a2299b9..8db5a0f 100644 --- a/Source/x11/XWindowBuffer.m +++ b/Source/x11/XWindowBuffer.m @@ -6,18 +6,20 @@ This file is part of GNUstep. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/x11/context.c b/Source/x11/context.c index 01aef38..5c0b564 100644 --- a/Source/x11/context.c +++ b/Source/x11/context.c @@ -42,6 +42,9 @@ #include "x11/wraster.h" +#ifdef XRENDER +#include +#endif extern void _wraster_change_filter(int type); @@ -822,15 +825,42 @@ bestContext(Display *dpy, int screen_number, RContext *context) rvinfo.class = TrueColor; rvinfo.screen = screen_number; - flags = VisualClassMask | VisualScreenMask; - + + #ifdef XRENDER + + rvinfo.depth = 32; + flags = VisualClassMask | VisualScreenMask | VisualDepthMask; + vinfo = XGetVisualInfo(dpy, flags, &rvinfo, &numvis); - if (vinfo) { /* look for a TrueColor, 24-bit or more (pref 24) */ - for (i=numvis-1, best = -1; i>=0; i--) { - if (vinfo[i].depth == 24) best = i; - else if (vinfo[i].depth>24 && best<0) best = i; - } - } + if (vinfo) + { + for (i=numvis-1, best = -1; i>=0; i--) + { + XRenderPictFormat* pictFormat = + XRenderFindVisualFormat (dpy, vinfo[i].visual); + if ((pictFormat->type == PictTypeDirect) + && (pictFormat->direct.alphaMask)) + { + best = i; + } + } + } + + #endif + + if (best == -1) + { + flags = VisualClassMask | VisualScreenMask; + vinfo = XGetVisualInfo(dpy, flags, &rvinfo, &numvis); + if (vinfo) + { /* look for a TrueColor, 24-bit or more (pref 24) */ + for (i=numvis-1, best = -1; i>=0; i--) + { + if (vinfo[i].depth == 24) best = i; + else if (vinfo[i].depth>24 && best<0) best = i; + } + } + } #if 0 if (best == -1) { /* look for a DirectColor, 24-bit or more (pref 24) */ diff --git a/Source/x11/convert.c b/Source/x11/convert.c index e248d77..036c569 100644 --- a/Source/x11/convert.c +++ b/Source/x11/convert.c @@ -140,9 +140,9 @@ computeStdTable(unsigned int mult, unsigned int max) static void convertTrueColor_generic(RXImage *ximg, RImage *image, signed char *err, signed char *nerr, - const short *rtable, - const short *gtable, - const short *btable, + const unsigned short *rtable, + const unsigned short *gtable, + const unsigned short *btable, const int dr, const int dg, const int db, const unsigned short roffs, const unsigned short goffs, @@ -342,8 +342,8 @@ image2TrueColor(RContext *ctx, RImage *image) puts("true color dither"); #endif { - char *err; - char *nerr; + signed char *err; + signed char *nerr; int ch = (image->format == RRGBAFormat ? 4 : 3); err = malloc(ch*(image->width+2)); @@ -381,9 +381,9 @@ image2TrueColor(RContext *ctx, RImage *image) static void convertPseudoColor_to_8(RXImage *ximg, RImage *image, signed char *err, signed char *nerr, - const short *rtable, - const short *gtable, - const short *btable, + const unsigned short *rtable, + const unsigned short *gtable, + const unsigned short *btable, const int dr, const int dg, const int db, unsigned long *pixels, int cpc) @@ -393,7 +393,7 @@ convertPseudoColor_to_8(RXImage *ximg, RImage *image, int pixel; int rer, ger, ber; unsigned char *ptr = image->data; - unsigned char *optr = ximg->image->data; + unsigned char *optr = (unsigned char *)ximg->image->data; int channels = (image->format == RRGBAFormat ? 4 : 3); int cpcpc = cpc*cpc; @@ -507,8 +507,8 @@ image2PseudoColor(RContext *ctx, RImage *image) } } else { /* dither */ - char *err; - char *nerr; + signed char *err; + signed char *nerr; const int dr=0xff/rmask; const int dg=0xff/gmask; const int db=0xff/bmask; diff --git a/Source/x11/raster.c b/Source/x11/raster.c index e3fad42..f53f281 100644 --- a/Source/x11/raster.c +++ b/Source/x11/raster.c @@ -299,7 +299,7 @@ RCombineImagesWithOpaqueness(RImage *image, RImage *src, int opaqueness) int calculateCombineArea(RImage *des, RImage *src, int *sx, int *sy, - int *swidth, int *sheight, int *dx, int *dy) + unsigned *swidth, unsigned *sheight, int *dx, int *dy) { if (*dx < 0) { *sx = -*dx; diff --git a/Source/xdps/AFMFileFontInfo.h b/Source/xdps/AFMFileFontInfo.h index 2d3e6ee..2da299c 100644 --- a/Source/xdps/AFMFileFontInfo.h +++ b/Source/xdps/AFMFileFontInfo.h @@ -11,18 +11,20 @@ This file is part of the GNUstep GUI X/DPS Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #ifndef __AFMFileFontInfo_h__ diff --git a/Source/xdps/AFMFileFontInfo.m b/Source/xdps/AFMFileFontInfo.m index 552b966..180c189 100644 --- a/Source/xdps/AFMFileFontInfo.m +++ b/Source/xdps/AFMFileFontInfo.m @@ -9,18 +9,20 @@ This file is part of the GNUstep GUI X/DPS Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/xdps/GNUmakefile b/Source/xdps/GNUmakefile index 8db1982..48e866e 100644 --- a/Source/xdps/GNUmakefile +++ b/Source/xdps/GNUmakefile @@ -8,22 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# If you are interested in a warranty or support for this source code, -# contact Scott Christley at scottc@net-community.com -# -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. GNUSTEP_INSTALLATION_DOMAIN = SYSTEM diff --git a/Source/xdps/GNUmakefile.preamble b/Source/xdps/GNUmakefile.preamble index 0d6ebcd..22d6a4b 100644 --- a/Source/xdps/GNUmakefile.preamble +++ b/Source/xdps/GNUmakefile.preamble @@ -8,19 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # # Flags dealing with compiling and linking diff --git a/Source/xdps/NSDPSContext.m b/Source/xdps/NSDPSContext.m index 7164e17..4d92148 100644 --- a/Source/xdps/NSDPSContext.m +++ b/Source/xdps/NSDPSContext.m @@ -11,19 +11,20 @@ This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/xdps/NSDPSContextOps.m b/Source/xdps/NSDPSContextOps.m index 889a97e..f96238f 100644 --- a/Source/xdps/NSDPSContextOps.m +++ b/Source/xdps/NSDPSContextOps.m @@ -9,19 +9,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. + version 3 of the License, or (at your option) any later version. This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include diff --git a/Source/xdps/PXKEPSImageRep.m b/Source/xdps/PXKEPSImageRep.m index d910265..7d60108 100644 --- a/Source/xdps/PXKEPSImageRep.m +++ b/Source/xdps/PXKEPSImageRep.m @@ -9,19 +9,20 @@ This file is part of the GNUstep GUI X/DPS Backend. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include "config.h" diff --git a/Source/xdps/PXKFontManager.m b/Source/xdps/PXKFontManager.m index 0ff9200..38725c0 100644 --- a/Source/xdps/PXKFontManager.m +++ b/Source/xdps/PXKFontManager.m @@ -12,18 +12,20 @@ This file is part of the GNUstep GUI X/DPS Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/xdps/drawingfuncs.psw b/Source/xdps/drawingfuncs.psw index d548861..11587e9 100644 --- a/Source/xdps/drawingfuncs.psw +++ b/Source/xdps/drawingfuncs.psw @@ -13,18 +13,20 @@ This file is part of the GNUstep GUI X/DPS Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. + version 3 of the License, or (at your option) any later version. This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/xdps/extensions.psw b/Source/xdps/extensions.psw index 56decf9..c408214 100644 --- a/Source/xdps/extensions.psw +++ b/Source/xdps/extensions.psw @@ -9,18 +9,20 @@ This file is part of the GNUstep GUI X/DPS Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/xdps/fonts.psw b/Source/xdps/fonts.psw index 3385747..38ce716 100644 --- a/Source/xdps/fonts.psw +++ b/Source/xdps/fonts.psw @@ -11,18 +11,20 @@ This file is part of the GNUstep GUI X/DPS Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/xdps/general.psw b/Source/xdps/general.psw index 91cdd38..013b9e4 100644 --- a/Source/xdps/general.psw +++ b/Source/xdps/general.psw @@ -9,18 +9,20 @@ This file is part of the GNUstep GUI X/DPS Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/xlib/GNUmakefile b/Source/xlib/GNUmakefile index c5aef9a..b65fe7d 100644 --- a/Source/xlib/GNUmakefile +++ b/Source/xlib/GNUmakefile @@ -8,22 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# If you are interested in a warranty or support for this source code, -# contact Scott Christley at scottc@net-community.com -# -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. GNUSTEP_INSTALLATION_DOMAIN = SYSTEM diff --git a/Source/xlib/GNUmakefile.preamble b/Source/xlib/GNUmakefile.preamble index 0d6ebcd..22d6a4b 100644 --- a/Source/xlib/GNUmakefile.preamble +++ b/Source/xlib/GNUmakefile.preamble @@ -8,19 +8,20 @@ # This file is part of the GNUstep Backend. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # # Flags dealing with compiling and linking diff --git a/Source/xlib/GSXftFontInfo.m b/Source/xlib/GSXftFontInfo.m index c96a18b..c53f8af 100644 --- a/Source/xlib/GSXftFontInfo.m +++ b/Source/xlib/GSXftFontInfo.m @@ -11,19 +11,20 @@ This file is part of the GNUstep GUI X/GPS Backend. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. + version 3 of the License, or (at your option) any later version. This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include "config.h" diff --git a/Source/xlib/XGBitmap.m b/Source/xlib/XGBitmap.m index 51f14c1..9f51273 100644 --- a/Source/xlib/XGBitmap.m +++ b/Source/xlib/XGBitmap.m @@ -16,19 +16,20 @@ This file is part of the GNUstep GUI X/GPS Backend. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. + version 3 of the License, or (at your option) any later version. This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/xlib/XGCommonFont.m b/Source/xlib/XGCommonFont.m index 5fc8fa3..f8adbcd 100644 --- a/Source/xlib/XGCommonFont.m +++ b/Source/xlib/XGCommonFont.m @@ -18,19 +18,20 @@ This file is part of the GNUstep GUI X/GPS Backend. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. + version 3 of the License, or (at your option) any later version. This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/xlib/XGContext.m b/Source/xlib/XGContext.m index 2681bfa..1e8ee66 100644 --- a/Source/xlib/XGContext.m +++ b/Source/xlib/XGContext.m @@ -9,19 +9,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "config.h" #include diff --git a/Source/xlib/XGFont.m b/Source/xlib/XGFont.m index 29603fc..c25bbdd 100644 --- a/Source/xlib/XGFont.m +++ b/Source/xlib/XGFont.m @@ -18,19 +18,20 @@ This file is part of the GNUstep GUI X/GPS Backend. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. + version 3 of the License, or (at your option) any later version. This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Source/xlib/XGFontManager.m b/Source/xlib/XGFontManager.m index 15bf26a..5de8708 100644 --- a/Source/xlib/XGFontManager.m +++ b/Source/xlib/XGFontManager.m @@ -15,18 +15,20 @@ This file is part of the GNUstep GUI X/GPS Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include @@ -149,7 +151,7 @@ load_cache(NSString *cacheName, BOOL async) if ((o == nil) || ((v = [o objectForKey: @"Version"]) == nil) - || ([v intValue] != 2)) + || ([v intValue] != 3)) { NSString *file_name = [cacheName lastPathComponent]; NSString *path; diff --git a/Source/xlib/XGFontSetFontInfo.m b/Source/xlib/XGFontSetFontInfo.m index d002b23..9a9ea72 100644 --- a/Source/xlib/XGFontSetFontInfo.m +++ b/Source/xlib/XGFontSetFontInfo.m @@ -10,19 +10,21 @@ This file is part of the GNU Objective C User Interface library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "x11/XGServer.h" #include "xlib/XGPrivate.h" diff --git a/Source/xlib/XGGState.m b/Source/xlib/XGGState.m index d6131b2..bda99aa 100644 --- a/Source/xlib/XGGState.m +++ b/Source/xlib/XGGState.m @@ -8,20 +8,21 @@ This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "config.h" #include diff --git a/Source/xlib/XGGeometry.m b/Source/xlib/XGGeometry.m index ce4685f..bb53762 100644 --- a/Source/xlib/XGGeometry.m +++ b/Source/xlib/XGGeometry.m @@ -3,24 +3,24 @@ Copyright (C) 2002 Free Software Foundation, Inc. Written by: Willem Oudshoorn - This file is part of the GNU Objective C User Interface Library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include "config.h" diff --git a/Source/xlib/linking.m b/Source/xlib/linking.m index 26f849d..d713ce3 100644 --- a/Source/xlib/linking.m +++ b/Source/xlib/linking.m @@ -7,19 +7,21 @@ This file is part of the GNU Objective C User Interface library. This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - + version 3 of the License, or (at your option) any later version. + This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ #include "xlib/XGContext.h" diff --git a/Tools/GNUmakefile b/Tools/GNUmakefile index bd61bf7..8d1d9f3 100644 --- a/Tools/GNUmakefile +++ b/Tools/GNUmakefile @@ -8,19 +8,20 @@ # This file is part of the GNUstep GUI Library. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. GNUSTEP_INSTALLATION_DOMAIN = SYSTEM diff --git a/Tools/GNUmakefile.postamble b/Tools/GNUmakefile.postamble index f3318dd..a814c80 100644 --- a/Tools/GNUmakefile.postamble +++ b/Tools/GNUmakefile.postamble @@ -6,20 +6,20 @@ # This file is part of the GNUstep User Interface Library. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # Uncomment the targets you want. # The double colons (::) are important, do not make them single colons diff --git a/Tools/GNUmakefile.preamble b/Tools/GNUmakefile.preamble index 2710221..04bdd66 100644 --- a/Tools/GNUmakefile.preamble +++ b/Tools/GNUmakefile.preamble @@ -8,19 +8,20 @@ # This file is part of the GNUstep User Interface Library. # # This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public +# modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 3 of the License, or (at your option) any later version. # # This library 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 -# Library General Public License for more details. +# Lesser General Public License for more details. # -# You should have received a copy of the GNU Library General Public +# You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # Do not put any Makefile rules in this file, instead they should # be put into Makefile.postamble. diff --git a/Tools/font_cacher.m b/Tools/font_cacher.m index f2ca227..011c740 100644 --- a/Tools/font_cacher.m +++ b/Tools/font_cacher.m @@ -8,19 +8,21 @@ This file is part of the GNUstep GUI X/GPS Library. - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, + 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 3 + 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 - Library General Public License for more details. + 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 Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. + You should have received a copy of the GNU General Public + License along with this library; see the file COPYING. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include @@ -472,7 +474,7 @@ static NSComparisonResult fontDefSorter(id e1, id e2, void *context) NSData *data; NSMutableDictionary *cache = [NSMutableDictionary dictionaryWithCapacity: 4]; - [cache setObject: [NSNumber numberWithInt: 2] forKey: @"Version"]; + [cache setObject: [NSNumber numberWithInt: 3] forKey: @"Version"]; [cache setObject: allFontNames forKey: @"AllFontNames"]; [cache setObject: allFontFamilies forKey: @"AllFontFamilies"]; [cache setObject: creationDictionary forKey: @"CreationDictionary"]; diff --git a/Tools/gpbs.m b/Tools/gpbs.m index 26c274c..e118895 100644 --- a/Tools/gpbs.m +++ b/Tools/gpbs.m @@ -10,16 +10,21 @@ This file is part of the GNUstep Project - This library is free software; you can redistribute it and/or + 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 + as published by the Free Software Foundation; either version 3 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 library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + You should have received a copy of the GNU General Public + License along with this library; see the file COPYING. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include diff --git a/Tools/win32pbs.m b/Tools/win32pbs.m index bbcdf54..89522cd 100755 --- a/Tools/win32pbs.m +++ b/Tools/win32pbs.m @@ -10,16 +10,21 @@ This file is part of the GNUstep Project - This library is free software; you can redistribute it and/or + 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 + as published by the Free Software Foundation; either version 3 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 library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + You should have received a copy of the GNU General Public + License along with this library; see the file COPYING. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* Access Windows 2000 (and later) API. Required for HWND_MESSAGE. */ diff --git a/Tools/xpbs.m b/Tools/xpbs.m index 28d7c89..64fd5b8 100644 --- a/Tools/xpbs.m +++ b/Tools/xpbs.m @@ -10,16 +10,21 @@ This file is part of the GNUstep Project - This library is free software; you can redistribute it and/or + 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 + as published by the Free Software Foundation; either version 3 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 library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + You should have received a copy of the GNU General Public + License along with this library; see the file COPYING. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include @@ -34,7 +39,7 @@ /* * Non-predefined atoms that are used in the X selection mechanism */ -static char* atom_names[] = { +static char *atom_names[] = { "CHARACTER_POSITION", "CLIENT_WINDOW", "HOST_NAME", @@ -54,7 +59,17 @@ static char* atom_names[] = { "UTF8_STRING", "MULTIPLE", "COMPOUND_TEXT", - "INCR" + "INCR", + + // MIME types + "text/plain", + "text/uri-list", + "application/postscript", + "text/tab-separated-values", + "text/richtext", + "image/tiff", + "application/octet-stream", + "application/x-rootwindow-drop" }; static Atom atoms[sizeof(atom_names)/sizeof(char*)]; @@ -82,6 +97,8 @@ static Atom atoms[sizeof(atom_names)/sizeof(char*)]; #define XG_MULTIPLE atoms[17] #define XG_COMPOUND_TEXT atoms[18] #define XG_INCR atoms[19] +#define XG_MIME_PLAIN atoms[20] +#define XG_MIME_URI atoms[21] @@ -274,38 +291,38 @@ static NSString *xWaitMode = @"XPasteboardWaitMode"; while ((count = XPending(xDisplay)) > 0) { while (count-- > 0) - { - XEvent xEvent; + { + XEvent xEvent; - XNextEvent(xDisplay, &xEvent); + XNextEvent(xDisplay, &xEvent); + + switch (xEvent.type) + { + case PropertyNotify: + [self xPropertyNotify: (XPropertyEvent*)&xEvent]; + NSDebugLLog(@"Pbs", @"PropertyNotify."); + break; + + case SelectionNotify: + [self xSelectionNotify: (XSelectionEvent*)&xEvent]; + NSDebugLLog(@"Pbs", @"SelectionNotify."); + break; - switch (xEvent.type) - { - case PropertyNotify: - [self xPropertyNotify: (XPropertyEvent*)&xEvent]; - NSDebugLLog(@"Pbs", @"PropertyNotify."); - break; + case SelectionClear: + [self xSelectionClear: (XSelectionClearEvent*)&xEvent]; + NSDebugLLog(@"Pbs", @"SelectionClear."); + break; - case SelectionNotify: - [self xSelectionNotify: (XSelectionEvent*)&xEvent]; - NSDebugLLog(@"Pbs", @"SelectionNotify."); - break; + case SelectionRequest: + [self xSelectionRequest: (XSelectionRequestEvent*)&xEvent]; + NSDebugLLog(@"Pbs", @"SelectionRequest."); + break; - case SelectionClear: - [self xSelectionClear: (XSelectionClearEvent*)&xEvent]; - NSDebugLLog(@"Pbs", @"SelectionClear."); - break; - - case SelectionRequest: - [self xSelectionRequest: (XSelectionRequestEvent*)&xEvent]; - NSDebugLLog(@"Pbs", @"SelectionRequest."); - break; - - default: - NSDebugLLog(@"Pbs", @"Unexpected X event."); - break; - } - } + default: + NSDebugLLog(@"Pbs", @"Unexpected X event."); + break; + } + } } } @@ -332,7 +349,7 @@ static NSString *xWaitMode = @"XPasteboardWaitMode"; char *name = XGetAtomName(xDisplay, xEvent->selection); NSDebugLLog(@"Pbs", @"Selection clear for unknown selection - '%s'.", - name); + name); XFree(name); return; } @@ -355,7 +372,7 @@ static NSString *xWaitMode = @"XPasteboardWaitMode"; { char *name = XGetAtomName(xDisplay, xEvent->atom); NSDebugLLog(@"Pbs", @"Property notify for unknown property - '%s'.", - name); + name); XFree(name); return; } @@ -374,14 +391,14 @@ static NSString *xWaitMode = @"XPasteboardWaitMode"; + (void) xSelectionNotify: (XSelectionEvent*)xEvent { - XPbOwner *o; + XPbOwner *o; o = [self ownerByXPb: xEvent->selection]; if (o == nil) { char *name = XGetAtomName(xDisplay, xEvent->selection); NSDebugLLog(@"Pbs", @"Selection notify for unknown selection - '%s'.", - name); + name); XFree(name); return; } @@ -393,19 +410,19 @@ static NSString *xWaitMode = @"XPasteboardWaitMode"; } else { - char *sel_name = XGetAtomName(xDisplay, xEvent->selection); - char *pro_name; + char *sel_name = XGetAtomName(xDisplay, xEvent->selection); + char *pro_name; + + if (xEvent->property == None) + pro_name = NULL; + else + pro_name = XGetAtomName(xDisplay, xEvent->property); - if (xEvent->property == None) - pro_name = NULL; - else - pro_name = XGetAtomName(xDisplay, xEvent->property); - - NSDebugLLog(@"Pbs", @"Selection (%s) notify - '%s'.", sel_name, - pro_name? pro_name : "None"); - XFree(sel_name); - if (pro_name) - XFree(pro_name); + NSDebugLLog(@"Pbs", @"Selection (%s) notify - '%s'.", sel_name, + pro_name? pro_name : "None"); + XFree(sel_name); + if (pro_name) + XFree(pro_name); } [o xSelectionNotify: xEvent]; @@ -420,7 +437,7 @@ static NSString *xWaitMode = @"XPasteboardWaitMode"; { char *name = XGetAtomName(xDisplay, xEvent->selection); NSDebugLLog(@"Pbs", @"Selection request for unknown selection - '%s'.", - name); + name); XFree(name); return; } @@ -505,7 +522,7 @@ static NSString *xWaitMode = @"XPasteboardWaitMode"; - (void) requestData: (Atom)xType { - Time whenRequested; + Time whenRequested; /* * Do a nul append to a property to get a timestamp, if it returns the @@ -514,7 +531,7 @@ static NSString *xWaitMode = @"XPasteboardWaitMode"; whenRequested = [self xTimeByAppending]; if (whenRequested != CurrentTime) { - NSDate *limit; + NSDate *limit; /* * Ok - we got a timestamp, so we can ask the selection system for @@ -523,7 +540,7 @@ static NSString *xWaitMode = @"XPasteboardWaitMode"; * appropriate property of our application root window. */ XConvertSelection(xDisplay, [self xPb], xType, - [self xPb], xAppWin, whenRequested); + [self xPb], xAppWin, whenRequested); XFlush(xDisplay); /* @@ -534,19 +551,19 @@ static NSString *xWaitMode = @"XPasteboardWaitMode"; [self setWaitingForSelection: whenRequested]; while ([self waitingForSelection] == whenRequested) { - [[NSRunLoop currentRunLoop] runMode: xWaitMode - beforeDate: limit]; - if ([limit timeIntervalSinceNow] <= 0.0) - break; /* Timeout */ - } + [[NSRunLoop currentRunLoop] runMode: xWaitMode + beforeDate: limit]; + if ([limit timeIntervalSinceNow] <= 0.0) + break; /* Timeout */ + } if ([self waitingForSelection] != 0) { - char *name = XGetAtomName(xDisplay, xType); + char *name = XGetAtomName(xDisplay, xType); - [self setWaitingForSelection: 0]; - NSLog(@"Timed out waiting for X selection '%s'", name); - XFree(name); - } + [self setWaitingForSelection: 0]; + NSLog(@"Timed out waiting for X selection '%s'", name); + XFree(name); + } } } @@ -563,8 +580,13 @@ static NSString *xWaitMode = @"XPasteboardWaitMode"; { [self requestData: XG_UTF8_STRING]; if ([self data] == nil) - [self requestData: XA_STRING]; + [self requestData: XA_STRING]; } + else if ([type isEqual: NSFilenamesPboardType]) + { + [self requestData: XG_FILE_NAME]; + } + // FIXME: Support more types else { NSLog(@"Request for non-string info from X pasteboard: %@", type); @@ -630,7 +652,7 @@ xErrorHandler(Display *d, XErrorEvent *e) } - (NSMutableData*) getSelectionData: (XSelectionEvent*)xEvent - type: (Atom*)type + type: (Atom*)type { int status; unsigned char *data; @@ -649,51 +671,51 @@ xErrorHandler(Display *d, XErrorEvent *e) do { status = XGetWindowProperty(xDisplay, - xEvent->requestor, - xEvent->property, - long_offset, // offset - long_length, - True, // Delete prop when read. - req_type, - &actual_type, - &actual_format, - &number_items, - &bytes_remaining, - &data); + xEvent->requestor, + xEvent->property, + long_offset, // offset + long_length, + True, // Delete prop when read. + req_type, + &actual_type, + &actual_format, + &number_items, + &bytes_remaining, + &data); if ((status == Success) && (number_items > 0)) { - long count = number_items * actual_format / 8; - - if (md == nil) - { - md = [[NSMutableData alloc] initWithBytes: (void *)data - length: count]; - req_type = actual_type; - } - else - { - if (req_type != actual_type) - { - char *req_name = XGetAtomName(xDisplay, req_type); - char *act_name = XGetAtomName(xDisplay, actual_type); - - NSLog(@"Selection changed type from %s to %s.", - req_name, act_name); - XFree(req_name); - XFree(act_name); - RELEASE(md); - return nil; - } - [md appendBytes: (void *)data length: count]; - } - - long_offset += count / 4; - if (data) - { - XFree(data); - } - } + long count = number_items * actual_format / 8; + + if (md == nil) + { + md = [[NSMutableData alloc] initWithBytes: (void *)data + length: count]; + req_type = actual_type; + } + else + { + if (req_type != actual_type) + { + char *req_name = XGetAtomName(xDisplay, req_type); + char *act_name = XGetAtomName(xDisplay, actual_type); + + NSLog(@"Selection changed type from %s to %s.", + req_name, act_name); + XFree(req_name); + XFree(act_name); + RELEASE(md); + return nil; + } + [md appendBytes: (void *)data length: count]; + } + + long_offset += count / 4; + if (data) + { + XFree(data); + } + } } while ((status == Success) && (bytes_remaining > 0)); @@ -733,79 +755,99 @@ xErrorHandler(Display *d, XErrorEvent *e) if (md != nil) { if (actual_type == XG_INCR) - { - XEvent event; - NSMutableData *imd = nil; - BOOL wait = YES; - - md = nil; - while (wait) - { - XNextEvent(xDisplay, &event); - - if (event.type == PropertyNotify) - { - if (event.xproperty.state != PropertyNewValue) continue; - - imd = [self getSelectionData: xEvent type: &actual_type]; - if (imd != nil) - { - if (md == nil) - { - md = imd; - } - else - { - [md appendData: imd]; - } - } - else - { - wait = NO; - } - } - } - } + { + XEvent event; + NSMutableData *imd = nil; + BOOL wait = YES; + + md = nil; + while (wait) + { + XNextEvent(xDisplay, &event); + + if (event.type == PropertyNotify) + { + if (event.xproperty.state != PropertyNewValue) continue; + + imd = [self getSelectionData: xEvent type: &actual_type]; + if (imd != nil) + { + if (md == nil) + { + md = imd; + } + else + { + [md appendData: imd]; + } + } + else + { + wait = NO; + } + } + } + } } - + if (md != nil) { // Convert data to text string. if (actual_type == XG_UTF8_STRING) - { - NSString *s; - NSData *d; - - s = [[NSString alloc] initWithData: md - encoding: NSUTF8StringEncoding]; - if (s != nil) - { - d = [NSSerializer serializePropertyList: s]; - RELEASE(s); - [self setData: d]; - } - } + { + NSString *s; + NSData *d; + + s = [[NSString alloc] initWithData: md + encoding: NSUTF8StringEncoding]; + if (s != nil) + { + d = [NSSerializer serializePropertyList: s]; + RELEASE(s); + [self setData: d]; + } + } else if (actual_type == XA_STRING) - { - NSString *s; - NSData *d; + { + NSString *s; + NSData *d; + + s = [[NSString alloc] initWithData: md + encoding: NSISOLatin1StringEncoding]; + if (s != nil) + { + d = [NSSerializer serializePropertyList: s]; + RELEASE(s); + [self setData: d]; + } + } + else if (actual_type == XG_FILE_NAME) + { + NSArray *names; + NSData *d; + NSString *s; + NSURL *url; - s = [[NSString alloc] initWithData: md - encoding: NSISOLatin1StringEncoding]; - if (s != nil) - { - d = [NSSerializer serializePropertyList: s]; - RELEASE(s); - [self setData: d]; - } - } + s = [[NSString alloc] initWithData: md + encoding: NSUTF8StringEncoding]; + url = [[NSURL alloc] initWithString: s]; + RELEASE(s); + if ([url isFileURL]) + { + s = [url path]; + names = [NSArray arrayWithObject: s]; + d = [NSSerializer serializePropertyList: names]; + [self setData: d]; + } + RELEASE(url); + } else - { - char *name = XGetAtomName(xDisplay, actual_type); - - NSLog(@"Unsupported data type '%s' from X selection.", name); - XFree(name); - } + { + char *name = XGetAtomName(xDisplay, actual_type); + + NSLog(@"Unsupported data type '%s' from X selection.", name); + XFree(name); + } } } @@ -873,16 +915,16 @@ xErrorHandler(Display *d, XErrorEvent *e) if ([types containsObject: NSStringPboardType]) { - xTypes[numTypes++] = XG_UTF8_STRING; - xTypes[numTypes++] = XG_COMPOUND_TEXT; - xTypes[numTypes++] = XA_STRING; - xTypes[numTypes++] = XG_TEXT; - } + xTypes[numTypes++] = XG_UTF8_STRING; + xTypes[numTypes++] = XG_COMPOUND_TEXT; + xTypes[numTypes++] = XA_STRING; + xTypes[numTypes++] = XG_TEXT; + } if ([types containsObject: NSFilenamesPboardType]) { - xTypes[numTypes++] = XG_FILE_NAME; - } + xTypes[numTypes++] = XG_FILE_NAME; + } xType = XA_ATOM; format = 32; @@ -906,59 +948,59 @@ xErrorHandler(Display *d, XErrorEvent *e) */ if ([types containsObject: NSStringPboardType]) { - xEvent->target = XG_UTF8_STRING; - [self xProvideSelection: xEvent]; - } + xEvent->target = XG_UTF8_STRING; + [self xProvideSelection: xEvent]; + } else if ([types containsObject: NSFilenamesPboardType]) { - xEvent->target = XG_FILE_NAME; - [self xProvideSelection: xEvent]; - } + xEvent->target = XG_FILE_NAME; + [self xProvideSelection: xEvent]; + } } else if (xEvent->target == XG_MULTIPLE) { if (xEvent->property != None) { - Atom *multipleAtoms= NULL; - int actual_format; - Atom actual_type; - unsigned long number_items, bytes_remaining; - int status; + Atom *multipleAtoms= NULL; + int actual_format; + Atom actual_type; + unsigned long number_items, bytes_remaining; + int status; - status = XGetWindowProperty(xDisplay, - xEvent->requestor, - xEvent->property, - 0, - 100, - False, - AnyPropertyType, - &actual_type, - &actual_format, - &number_items, - &bytes_remaining, - (unsigned char **)&multipleAtoms); - if ((status == Success) && (bytes_remaining == 0) && - (actual_format == 32) && (actual_type == XA_ATOM)) - { - int i; - XSelectionRequestEvent requestEvent; - - memcpy(&requestEvent, xEvent, sizeof(XSelectionRequestEvent)); - for (i = 0; i < number_items; i += 2) - { - requestEvent.target= multipleAtoms[i]; - requestEvent.property= multipleAtoms[i+1]; - if (requestEvent.target != None) - { - // Recursive call to this method for each pair. - if (![self xProvideSelection: &requestEvent]) - { - multipleAtoms[i+1]= None; - } - } - } - // FIXME: Should we call XChangeProperty to set the invalid types? - } + status = XGetWindowProperty(xDisplay, + xEvent->requestor, + xEvent->property, + 0, + 100, + False, + AnyPropertyType, + &actual_type, + &actual_format, + &number_items, + &bytes_remaining, + (unsigned char **)&multipleAtoms); + if ((status == Success) && (bytes_remaining == 0) && + (actual_format == 32) && (actual_type == XA_ATOM)) + { + int i; + XSelectionRequestEvent requestEvent; + + memcpy(&requestEvent, xEvent, sizeof(XSelectionRequestEvent)); + for (i = 0; i < number_items; i += 2) + { + requestEvent.target= multipleAtoms[i]; + requestEvent.property= multipleAtoms[i+1]; + if (requestEvent.target != None) + { + // Recursive call to this method for each pair. + if (![self xProvideSelection: &requestEvent]) + { + multipleAtoms[i+1]= None; + } + } + } + // FIXME: Should we call XChangeProperty to set the invalid types? + } } } else if ((xEvent->target == XG_COMPOUND_TEXT) && @@ -973,25 +1015,25 @@ xErrorHandler(Display *d, XErrorEvent *e) d = [s cString]; if (d) { - char *list[]= {(char *)d, NULL}; - XTextProperty textProperty; - - status = XmbTextListToTextProperty(xEvent->display, list, 1, - XCompoundTextStyle, &textProperty); - if (status == Success) - { - NSAssert(textProperty.format == 8, @"textProperty.format == 8"); - numItems = textProperty.nitems; - data = malloc(numItems + 1); - memcpy(data, textProperty.value, numItems + 1); - XFree((void *)textProperty.value); - } - } + char *list[]= {(char *)d, NULL}; + XTextProperty textProperty; + + status = XmbTextListToTextProperty(xEvent->display, list, 1, + XCompoundTextStyle, &textProperty); + if (status == Success) + { + NSAssert(textProperty.format == 8, @"textProperty.format == 8"); + numItems = textProperty.nitems; + data = malloc(numItems + 1); + memcpy(data, textProperty.value, numItems + 1); + XFree((void *)textProperty.value); + } + } } else if (((xEvent->target == XG_UTF8_STRING) || - (xEvent->target == XA_STRING) || - (xEvent->target == XG_TEXT)) && - [types containsObject: NSStringPboardType]) + (xEvent->target == XA_STRING) || + (xEvent->target == XG_TEXT)) && + [types containsObject: NSStringPboardType]) { NSString *s = [_pb stringForType: NSStringPboardType]; NSData *d = nil; @@ -1005,24 +1047,43 @@ xErrorHandler(Display *d, XErrorEvent *e) */ if (xType == XG_UTF8_STRING) { - d = [s dataUsingEncoding: NSUTF8StringEncoding]; - } + d = [s dataUsingEncoding: NSUTF8StringEncoding]; + } else if ((xType == XA_STRING) || (xType == XG_TEXT)) { - d = [s dataUsingEncoding: NSISOLatin1StringEncoding]; - } + d = [s dataUsingEncoding: NSISOLatin1StringEncoding]; + } if (d != nil) { - numItems = [d length]; - data = malloc(numItems + 1); - if (data) - [d getBytes: data]; - } + numItems = [d length]; + data = malloc(numItems + 1); + if (data) + [d getBytes: data]; + } } else if ((xEvent->target == XG_FILE_NAME) && [types containsObject: NSFilenamesPboardType]) { + NSArray *names = [_pb propertyListForType: NSFilenamesPboardType]; + NSString *file = [[names lastObject] stringByStandardizingPath]; + NSURL *url = [[NSURL alloc] initWithScheme: NSURLFileScheme + host: @"localhost" + path: file]; + NSString *s = [url absoluteString]; + NSData *d; + + xType = xEvent->target; + format = 8; + RELEASE(url); + d = [s dataUsingEncoding: NSISOLatin1StringEncoding]; + if (d != nil) + { + numItems = [d length]; + data = malloc(numItems + 1); + if (data) + [d getBytes: data]; + } } else { @@ -1034,12 +1095,12 @@ xErrorHandler(Display *d, XErrorEvent *e) } return [self xSendData: data format: format items: numItems type: xType - to: xEvent->requestor property: xEvent->property]; + to: xEvent->requestor property: xEvent->property]; } - (BOOL) xSendData: (unsigned char*) data format: (int) format - items: (int) numItems type: (Atom) xType - to: (Window) window property: (Atom) property + items: (int) numItems type: (Atom) xType + to: (Window) window property: (Atom) property { BOOL status = NO; @@ -1061,23 +1122,23 @@ xErrorHandler(Display *d, XErrorEvent *e) oldHandler = XSetErrorHandler(xErrorHandler); while (appendFailure == NO && pos < numItems) - { - if (pos + maxItems > numItems) - { - maxItems = numItems - pos; - } - XChangeProperty(xDisplay, window, property, - xType, format, mode, &data[pos*format/8], maxItems); - mode = PropModeAppend; - pos += maxItems; - XSync(xDisplay, False); - } + { + if (pos + maxItems > numItems) + { + maxItems = numItems - pos; + } + XChangeProperty(xDisplay, window, property, + xType, format, mode, &data[pos*format/8], maxItems); + mode = PropModeAppend; + pos += maxItems; + XSync(xDisplay, False); + } free(data); XSetErrorHandler(oldHandler); if (appendFailure == NO) - { - status = YES; - } + { + status = YES; + } } return status; } @@ -1125,7 +1186,7 @@ xErrorHandler(Display *d, XErrorEvent *e) [[NSRunLoop currentRunLoop] runMode: xWaitMode beforeDate: limit]; if ([limit timeIntervalSinceNow] <= 0.0) - break; /* Timeout */ + break; /* Timeout */ } if ((whenRequested = [self timeOfLastAppend]) == 0) { @@ -1204,12 +1265,7 @@ static DndClass dnd; NSArray *types; Atom *typelist; - // Some GNUstep application did grap the drag pasteboard. Report this to X. - if (xdnd_set_selection_owner(&dnd, xAppWin, None)) - { - NSLog(@"Failed to set X drag selection owner to the pasteboard server."); - } - [self setOwnedByOpenStep: YES]; + [super pasteboardChangedOwner: sender]; // We also have to set the supported types for our window types = [_pb types]; @@ -1237,35 +1293,9 @@ static DndClass dnd; { NSString *mime = [NSPasteboard mimeTypeForPasteboardType: type]; Atom mType = XInternAtom(xDisplay, [mime cString], False); - Window window; - Time whenRequested = CurrentTime; - NSDate *limit; [self setData: nil]; - // How can we get the selection owner? - window = XGetSelectionOwner(xDisplay, dnd.XdndSelection); - - xdnd_convert_selection(&dnd, window, xAppWin, mType); - XFlush(xDisplay); - - /* - * Run an event loop to read X events until we have aquired the - * pasteboard data we need. - */ - limit = [NSDate dateWithTimeIntervalSinceNow: 20.0]; - [self setWaitingForSelection: whenRequested]; - while ([self waitingForSelection] == whenRequested) - { - [[NSRunLoop currentRunLoop] runMode: xWaitMode - beforeDate: limit]; - if ([limit timeIntervalSinceNow] <= 0.0) - break; /* Timeout */ - } - if ([self waitingForSelection] != 0) - { - [self setWaitingForSelection: 0]; - NSLog(@"Timed out waiting for X selection"); - } + [self requestData: mType]; [pb setData: [self data] forType: type]; } diff --git a/Version b/Version index b44e195..59ddc4f 100644 --- a/Version +++ b/Version @@ -4,9 +4,9 @@ # The version number of this release. GNUSTEP_BACK_MAJOR_VERSION=0 GNUSTEP_BACK_MINOR_VERSION=12 -GNUSTEP_BACK_SUBMINOR_VERSION=0 +GNUSTEP_BACK_SUBMINOR_VERSION=1 # This numeric value should match above -VERSION_NUMBER=012.0 +VERSION_NUMBER=012.1 # This numeric value should match the compatible gui interface version INTERFACE_VERSION_NUMBER=012 diff --git a/back.make.in b/back.make.in index 79ea264..e3642cd 100644 --- a/back.make.in +++ b/back.make.in @@ -10,15 +10,21 @@ # # This file is part of the GNUstep Back Library. # -# This library 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. -# -# You should have received a copy of the GNU General Public -# License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 3 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; see the file COPYING.LIB. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. ifeq ($(BACK_MAKE_LOADED),) BACK_MAKE_LOADED=yes diff --git a/config.h.in b/config.h.in index 3c580c5..93995e9 100644 --- a/config.h.in +++ b/config.h.in @@ -123,5 +123,8 @@ /* Define if you have X11 XShm extensions */ #undef XSHM +/* Define if you have X11 Xrender extensions */ +#undef XRENDER + /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING diff --git a/configure b/configure index b93dd86..66f2693 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61. +# Generated by GNU Autoconf 2.60. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -10,8 +10,7 @@ ## M4sh Initialization. ## ## --------------------- ## -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -20,13 +19,10 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi - - +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh # PATH needs CR @@ -219,7 +215,7 @@ test \$exitcode = 0) || { (exit 1); exit 1; } else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -237,6 +233,7 @@ IFS=$as_save_IFS # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -245,12 +242,10 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi - +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh : _ASEOF @@ -258,6 +253,7 @@ _ASEOF CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -266,12 +262,10 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi - +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh : (as_func_return () { @@ -518,28 +512,19 @@ else as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' +# Find out whether ``test -x'' works. Don't use a zero-byte file, as +# systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + as_executable_p="test -x" else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' + as_executable_p=: fi -as_executable_p=$as_test_x +rm -f conf$$.file # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -580,36 +565,36 @@ ac_unique_file="back.make.in" # Factoring default headers for most tests. ac_includes_default="\ #include -#ifdef HAVE_SYS_TYPES_H +#if HAVE_SYS_TYPES_H # include #endif -#ifdef HAVE_SYS_STAT_H +#if HAVE_SYS_STAT_H # include #endif -#ifdef STDC_HEADERS +#if STDC_HEADERS # include # include #else -# ifdef HAVE_STDLIB_H +# if HAVE_STDLIB_H # include # endif #endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif -#ifdef HAVE_STRINGS_H +#if HAVE_STRINGS_H # include #endif -#ifdef HAVE_INTTYPES_H +#if HAVE_INTTYPES_H # include #endif -#ifdef HAVE_STDINT_H +#if HAVE_STDINT_H # include #endif -#ifdef HAVE_UNISTD_H +#if HAVE_UNISTD_H # include #endif" @@ -713,7 +698,6 @@ target_alias CC CFLAGS LDFLAGS -LIBS CPPFLAGS CPP XMKMF' @@ -822,10 +806,10 @@ do -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + 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'` + ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval enable_$ac_feature=no ;; -docdir | --docdir | --docdi | --doc | --do) @@ -841,10 +825,10 @@ do -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + 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'` + ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ @@ -1038,19 +1022,19 @@ do -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + 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'` + ac_package=`echo $ac_package| sed 's/-/_/g'` eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + 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'` + ac_package=`echo $ac_package | sed 's/-/_/g'` eval with_$ac_package=no ;; --x) @@ -1313,7 +1297,6 @@ Some influential environment variables: CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor @@ -1383,7 +1366,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure -generated by GNU Autoconf 2.61 +generated by GNU Autoconf 2.60 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -1397,7 +1380,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was -generated by GNU Autoconf 2.61. Invocation command line was +generated by GNU Autoconf 2.60. Invocation command line was $ $0 $@ @@ -1817,7 +1800,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -1857,7 +1840,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -1914,7 +1897,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -1955,7 +1938,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -2013,7 +1996,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2057,7 +2040,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2198,7 +2181,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. -for ac_file in $ac_files '' +for ac_file in $ac_files do test -f "$ac_file" || continue case $ac_file in @@ -2226,12 +2209,6 @@ done test "$ac_cv_exeext" = no && ac_cv_exeext= else - ac_file='' -fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -2243,6 +2220,8 @@ See \`config.log' for more details." >&2;} fi ac_exeext=$ac_cv_exeext +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. @@ -2420,10 +2399,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 @@ -2478,10 +2474,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 @@ -2516,10 +2529,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 @@ -2555,10 +2585,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 @@ -2674,10 +2721,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 @@ -2947,10 +3011,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -2984,10 +3055,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_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 @@ -3052,10 +3130,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -3089,10 +3174,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_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 @@ -3147,7 +3239,7 @@ do for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + { test -f "$ac_path_GREP" && $as_executable_p "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in @@ -3229,7 +3321,7 @@ do for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + { test -f "$ac_path_EGREP" && $as_executable_p "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in @@ -3325,10 +3417,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 @@ -3504,10 +3613,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 @@ -3570,10 +3696,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -3609,10 +3752,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -3738,11 +3888,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -3751,7 +3917,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -3909,10 +4075,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # We can compile using X headers with no special include directory. ac_x_includes= else @@ -3935,7 +4108,7 @@ if test "$ac_x_libraries" = no; then # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS - LIBS="-lX11 $LIBS" + LIBS="-lXt $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3964,11 +4137,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= @@ -3981,7 +4170,7 @@ for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl; do - if test -r "$ac_dir/libX11.$ac_extension"; then + if test -r "$ac_dir/libXt.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi @@ -3989,7 +4178,7 @@ do done fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no @@ -4044,12 +4233,12 @@ else X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . - { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 + case `(uname -sr) 2>/dev/null` in + "SunOS 5"*) + { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; } - ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" - ac_xsave_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - cat >conftest.$ac_ext <<_ACEOF + ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4077,20 +4266,44 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - X_LIBS="$X_LIBS -R$x_libraries" + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_R_nospace=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + ac_R_nospace=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test $ac_R_nospace = yes; then + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + X_LIBS="$X_LIBS -R$x_libraries" + else LIBS="$ac_xsave_LIBS -R $x_libraries" - cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4118,30 +4331,48 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - { echo "$as_me:$LINENO: result: yes" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_R_space=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_R_space=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test $ac_R_space = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } X_LIBS="$X_LIBS -R $x_libraries" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - { echo "$as_me:$LINENO: result: neither works" >&5 + else + { echo "$as_me:$LINENO: result: neither works" >&5 echo "${ECHO_T}neither works" >&6; } -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - ac_c_werror_flag=$ac_xsave_c_werror_flag - LIBS=$ac_xsave_LIBS + fi + fi + LIBS=$ac_xsave_LIBS + esac fi # Check for system-dependent libraries X programs must link with. @@ -4190,11 +4421,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 @@ -4242,11 +4489,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dnet_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 @@ -4255,7 +4518,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -4308,11 +4571,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 @@ -4321,7 +4600,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -4334,7 +4613,7 @@ fi fi fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" @@ -4409,11 +4688,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_gethostbyname=yes else echo "$as_me: failed program was:" >&5 @@ -4422,7 +4717,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 @@ -4471,11 +4766,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyname=yes else echo "$as_me: failed program was:" >&5 @@ -4484,7 +4795,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -4537,11 +4848,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_bsd_gethostbyname=yes else echo "$as_me: failed program was:" >&5 @@ -4550,7 +4877,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -4633,11 +4960,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_connect=yes else echo "$as_me: failed program was:" >&5 @@ -4646,7 +4989,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 @@ -4695,11 +5038,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_socket_connect=yes else echo "$as_me: failed program was:" >&5 @@ -4708,7 +5067,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -4784,11 +5143,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_remove=yes else echo "$as_me: failed program was:" >&5 @@ -4797,7 +5172,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 @@ -4846,11 +5221,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_posix_remove=yes else echo "$as_me: failed program was:" >&5 @@ -4859,7 +5250,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -4935,11 +5326,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_shmat=yes else echo "$as_me: failed program was:" >&5 @@ -4948,7 +5355,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 @@ -4997,11 +5404,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_ipc_shmat=yes else echo "$as_me: failed program was:" >&5 @@ -5010,7 +5433,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -5074,11 +5497,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_ICE_IceConnectionNumber=yes else echo "$as_me: failed program was:" >&5 @@ -5087,7 +5526,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -5152,11 +5591,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_Xext_main=yes else echo "$as_me: failed program was:" >&5 @@ -5165,7 +5620,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xext_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -5217,11 +5672,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_Xmu_main=yes else echo "$as_me: failed program was:" >&5 @@ -5230,7 +5701,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xmu_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -5329,10 +5800,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -5368,10 +5856,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -5479,10 +5974,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -5518,10 +6030,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -5606,7 +6125,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5735,11 +6254,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_Xft_XftFontOpen=yes else echo "$as_me: failed program was:" >&5 @@ -5748,7 +6283,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xft_XftFontOpen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -5797,10 +6332,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -5836,10 +6388,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -5955,11 +6514,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_Xft_XftDrawStringUtf8=yes else echo "$as_me: failed program was:" >&5 @@ -5968,7 +6543,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xft_XftDrawStringUtf8=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -6029,11 +6604,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_Xft_XftPatternGetString=yes else echo "$as_me: failed program was:" >&5 @@ -6042,7 +6633,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xft_XftPatternGetString=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -6121,11 +6712,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -6134,7 +6741,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -6190,11 +6797,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_fontconfig_FcPatternCreate=yes else echo "$as_me: failed program was:" >&5 @@ -6203,7 +6826,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_fontconfig_FcPatternCreate=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -6249,10 +6872,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -6288,10 +6928,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -6413,11 +7060,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_GL_glXMakeContextCurrent=yes else echo "$as_me: failed program was:" >&5 @@ -6426,7 +7089,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_GL_glXMakeContextCurrent=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -6472,10 +7135,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -6511,10 +7191,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -6690,11 +7377,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -6703,7 +7406,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -6751,10 +7454,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 @@ -6844,11 +7564,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -6857,7 +7593,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -6918,11 +7654,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_gdi32_main=yes else echo "$as_me: failed program was:" >&5 @@ -6931,7 +7683,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gdi32_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -6982,11 +7734,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_msimg32_main=yes else echo "$as_me: failed program was:" >&5 @@ -6995,7 +7763,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_msimg32_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -7059,11 +7827,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_opengl32_main=yes else echo "$as_me: failed program was:" >&5 @@ -7072,7 +7856,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_opengl32_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -7120,10 +7904,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -7159,10 +7960,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -7250,11 +8058,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then use_wgl=yes else echo "$as_me: failed program was:" >&5 @@ -7263,7 +8087,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 use_wgl=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_libs" { echo "$as_me:$LINENO: result: $use_wgl" >&5 @@ -7330,11 +8154,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_art_lgpl_2_main=yes else echo "$as_me: failed program was:" >&5 @@ -7343,7 +8183,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_art_lgpl_2_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -7390,10 +8230,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -7429,10 +8286,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -7522,7 +8386,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7622,7 +8486,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7722,7 +8586,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7822,7 +8686,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7922,7 +8786,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8000,6 +8864,93 @@ echo "${ECHO_T}$CAIRO_GLITZ_LIBS" >&6; } fi +#-------------------------------------------------------------------- +# XRender support +#-------------------------------------------------------------------- + +have_xrender=no +{ echo "$as_me:$LINENO: checking for XRenderFindVisualFormat in -lXrender" >&5 +echo $ECHO_N "checking for XRenderFindVisualFormat in -lXrender... $ECHO_C" >&6; } +if test "${ac_cv_lib_Xrender_XRenderFindVisualFormat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXrender $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char XRenderFindVisualFormat (); +int +main () +{ +return XRenderFindVisualFormat (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_Xrender_XRenderFindVisualFormat=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_Xrender_XRenderFindVisualFormat=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xrender_XRenderFindVisualFormat" >&5 +echo "${ECHO_T}$ac_cv_lib_Xrender_XRenderFindVisualFormat" >&6; } +if test $ac_cv_lib_Xrender_XRenderFindVisualFormat = yes; then + have_xrender=yes +fi + + #-------------------------------------------------------------------- # Glitz libraries #-------------------------------------------------------------------- @@ -8035,7 +8986,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8148,10 +9099,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -8187,10 +9155,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -8272,7 +9247,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8385,10 +9360,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -8424,10 +9416,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -8519,7 +9518,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8632,10 +9631,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -8671,10 +9687,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -8845,6 +9868,17 @@ echo "$as_me: Switching to $BUILD_GRAPHICS" >&6;} echo $ECHO_N "checking Cairo backend... $ECHO_C" >&6; } CAIRO_LIBS="$CAIRO_FT_LIBS" CAIRO_CFLAGS="$CAIRO_FT_CFLAGS" + + if test "$have_xrender" = yes; then + if test $BUILD_SERVER = x11 -a "x$have_cairo_xlib" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define XRENDER 1 +_ACEOF + + CAIRO_LIBS="$CAIRO_LIBS -lXrender" + fi + fi if test "x$WITH_GLITZ" = "xyes" -a "x$have_cairo_glitz" = "xyes"; then if test $BUILD_SERVER = win32 -a "x$have_cairo_win32" = "xyes"; then CAIRO_GLITZ_LIBS="$CAIRO_GLITZ_LIBS $GLITZ_WGL_LIBS" @@ -9079,8 +10113,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF ## M4sh Initialization. ## ## --------------------- ## -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -9089,13 +10122,10 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi - - +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh # PATH needs CR @@ -9319,28 +10349,19 @@ else as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' +# Find out whether ``test -x'' works. Don't use a zero-byte file, as +# systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + as_executable_p="test -x" else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' + as_executable_p=: fi -as_executable_p=$as_test_x +rm -f conf$$.file # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -9356,7 +10377,7 @@ exec 6>&1 # values after options handling. ac_log=" This file was extended by $as_me, which was -generated by GNU Autoconf 2.61. Invocation command line was +generated by GNU Autoconf 2.60. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -9384,7 +10405,7 @@ current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit + -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions @@ -9405,7 +10426,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status -configured by $0, generated by GNU Autoconf 2.61, +configured by $0, generated by GNU Autoconf 2.60, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2006 Free Software Foundation, Inc. diff --git a/configure.ac b/configure.ac index 6c3af3c..1d4c54e 100644 --- a/configure.ac +++ b/configure.ac @@ -1,27 +1,27 @@ -# configure.in for GNUstep GUI Backend -# Process this file with autoconf to produce a configure script. +# configure.in for GNUstep GUI Backend +# Process this file with autoconf to produce a configure script. # -# Copyright (C) 1996-2002 Free Software Foundation, Inc. +# Copyright (C) 1996-2002 Free Software Foundation, Inc. # -# Author: Adam Fedor +# Author: Adam Fedor # -# This file is part of the GNUstep Backend. +# This file is part of the GNUstep Backend. # -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library 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 -# Library General Public License for more details. +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 3 of the License, or (at your option) any later version. # -# You should have received a copy of the GNU Library General Public -# License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# This library 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 +# Lesser General Public License for more details. # +# You should have received a copy of the GNU Lesser General Public +# License along with this library; see the file COPYING.LIB. +# If not, see or write to the +# Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. builtin(include, pkg.m4)dnl @@ -371,6 +371,13 @@ PKG_CHECK_MODULES(CAIRO_WIN32, cairo-win32, have_cairo_win32=yes, have_cairo_win PKG_CAIRO_GLITZ=no PKG_CHECK_MODULES(CAIRO_GLITZ, cairo-glitz, have_cairo_glitz=yes, have_cairo_glitz=no) +#-------------------------------------------------------------------- +# XRender support +#-------------------------------------------------------------------- + +have_xrender=no +AC_CHECK_LIB(Xrender, XRenderFindVisualFormat, have_xrender=yes) + #-------------------------------------------------------------------- # Glitz libraries #-------------------------------------------------------------------- @@ -491,6 +498,13 @@ elif test x"$BUILD_GRAPHICS" = "xcairo"; then AC_MSG_CHECKING(Cairo backend) CAIRO_LIBS="$CAIRO_FT_LIBS" CAIRO_CFLAGS="$CAIRO_FT_CFLAGS" + + if test "$have_xrender" = yes; then + if test $BUILD_SERVER = x11 -a "x$have_cairo_xlib" = "xyes"; then + AC_DEFINE(XRENDER,1,[Define if you have X11 XRender extension]) + CAIRO_LIBS="$CAIRO_LIBS -lXrender" + fi + fi if test "x$WITH_GLITZ" = "xyes" -a "x$have_cairo_glitz" = "xyes"; then if test $BUILD_SERVER = win32 -a "x$have_cairo_win32" = "xyes"; then CAIRO_GLITZ_LIBS="$CAIRO_GLITZ_LIBS $GLITZ_WGL_LIBS" diff --git a/gnustep-back.spec.in b/gnustep-back.spec.in index 9794ac0..96f3df4 100644 --- a/gnustep-back.spec.in +++ b/gnustep-back.spec.in @@ -1,6 +1,6 @@ Summary: The GNUstep backend library Release: 1 -Copyright: LGPL +License: LGPL Group: Development/Libraries Source: ftp://ftp.gnustep.org/pub/gnustep/core/%{gs_name}-%{gs_version}.tar.gz Requires: gnustep-gui