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