From: Matt Birkholz Date: Tue, 29 Mar 2016 22:13:18 +0000 (-0700) Subject: planetarium: Use automake; add manual; update copyright notices. X-Git-Tag: mit-scheme-pucked-9.2.12~349 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=f2295bd4f02a372921c069835d6e24d919017acb;p=mit-scheme.git planetarium: Use automake; add manual; update copyright notices. --- diff --git a/src/planetarium/AUTHORS b/src/planetarium/AUTHORS new file mode 100644 index 000000000..1c2a64189 --- /dev/null +++ b/src/planetarium/AUTHORS @@ -0,0 +1,5 @@ +To find out what should go in this file, see "Information For +Maintainers of GNU Software" (maintain.texi), the section called +"Recording Changes". + +Matthew Birkholz Everything. diff --git a/src/planetarium/COPYING b/src/planetarium/COPYING new file mode 100644 index 000000000..bf50f20de --- /dev/null +++ b/src/planetarium/COPYING @@ -0,0 +1,482 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 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 library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + 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. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + 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 a program 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. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + 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, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + 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. + + 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".) + + "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. + + 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 +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 compile 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) 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. + + c) 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. + + d) 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 source code 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 to +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 Library 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 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. + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307 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/src/planetarium/ChangeLog b/src/planetarium/ChangeLog new file mode 100644 index 000000000..0d470c96b --- /dev/null +++ b/src/planetarium/ChangeLog @@ -0,0 +1,8 @@ +-*-Text-*- + +Please see the git commit log: + +$ git clone git://git.savannah.gnu.org/mit-scheme.git +$ git remote add puck git://birchwood-abbey.net/~matt/mit-scheme.git +$ git fetch puck Gtk +$ git log puck/Gtk -- src/planetarium/ | more diff --git a/src/planetarium/Makefile b/src/planetarium/Makefile deleted file mode 100644 index 96e1210d1..000000000 --- a/src/planetarium/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (C) 2014 Matthew Birkholz -# -# This file is part of an extension to MIT/GNU Scheme. -# -# MIT/GNU Scheme 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. -# -# MIT/GNU Scheme is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301, USA. - -MIT_SCHEME_EXE = mit-scheme -exe = '$(MIT_SCHEME_EXE)' --batch-mode - -all: - echo '(load "mit-compile")' | $(exe) - -check: - echo '(load "mit-check")' | $(exe) - -.PHONY: all check - -maintainer-clean distclean clean: - rm -f *.bin *.ext *.com *.bci *.moc *.fni *.crf *.fre *.pkd - -tags: - etags *.scm - -.PHONY: clean distclean maintainer-clean tags diff --git a/src/planetarium/Makefile.am b/src/planetarium/Makefile.am new file mode 100644 index 000000000..080f382c1 --- /dev/null +++ b/src/planetarium/Makefile.am @@ -0,0 +1,143 @@ +## Process this file with automake to produce Makefile.in +## +## Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 +## Matthew Birkholz +## +## This file is part of a planetarium for MIT/GNU Scheme. +## +## This planetarium is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2 of the +## License, or (at your option) any later version. +## +## This planetarium is distributed in the hope that 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 planetarium; if not, write to the Free Software +## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +## 02110-1301, USA. + +EXTRA_DIST = autogen.sh + +MIT_SCHEME_EXE = @MIT_SCHEME_EXE@ +scmlibdir = $(libdir)/mit-scheme-@MIT_SCHEME_ARCH@ +scmlib_planetariumdir = $(scmlibdir)/planetarium + +source = earth.scm geometry.scm google-earth.scm graphics.scm +source += matrices.scm mit-cairo.scm mit-cil.scm mit-graphics.scm mit-gtk.scm +source += mit-r3rs.scm mit-syntax.scm mit-x.scm solar.scm tellurion.scm +source += terrain.scm time.scm + +scmlib_planetarium_DATA = $(source) +scmlib_planetarium_DATA += earth.bin earth.bci earth.com +scmlib_planetarium_DATA += geometry.bin geometry.bci geometry.com +scmlib_planetarium_DATA += google-earth.bin google-earth.bci google-earth.com +scmlib_planetarium_DATA += graphics.bin graphics.bci graphics.com +scmlib_planetarium_DATA += matrices.bin matrices.bci matrices.com +scmlib_planetarium_DATA += mit-cairo.bin mit-cairo.bci mit-cairo.com +scmlib_planetarium_DATA += mit-cil.bin mit-cil.bci mit-cil.com +scmlib_planetarium_DATA += mit-graphics.bin mit-graphics.bci mit-graphics.com +scmlib_planetarium_DATA += mit-gtk.bin mit-gtk.bci mit-gtk.com +scmlib_planetarium_DATA += mit-r3rs.bin mit-r3rs.bci mit-r3rs.com +scmlib_planetarium_DATA += mit-syntax.bin mit-syntax.bci mit-syntax.com +scmlib_planetarium_DATA += mit-x.bin mit-x.bci mit-x.com +scmlib_planetarium_DATA += solar.bin solar.bci solar.com +scmlib_planetarium_DATA += tellurion.bin tellurion.bci tellurion.com +scmlib_planetarium_DATA += terrain.bin terrain.bci terrain.com +scmlib_planetarium_DATA += time.bin time.bci time.com +scmlib_planetarium_DATA += make.scm mit-link.scm +scmlib_planetarium_DATA += mit-@MIT_SCHEME_OS_SUFFIX@.pkd +scmlib_planetarium_DATA += mit-3d-@MIT_SCHEME_OS_SUFFIX@.pkd + +info_TEXINFOS = mit-scheme-planetarium.texi +AM_MAKEINFOHTMLFLAGS = --no-split + +# Set these to the defaults used by Scheme. +infodir = $(datarootdir)/info +htmldir = $(libdir)/mit-scheme/doc + +make.scm: mit-make.scm + cp $< $@ + +earth.bin: stamp-scheme +earth.bci: stamp-scheme +earth.com: stamp-scheme +geometry.bin: stamp-scheme +geometry.bci: stamp-scheme +geometry.com: stamp-scheme +google-earth.bin: stamp-scheme +google-earth.bci: stamp-scheme +google-earth.com: stamp-scheme +graphics.bin: stamp-scheme +graphics.bci: stamp-scheme +graphics.com: stamp-scheme +matrices.bin: stamp-scheme +matrices.bci: stamp-scheme +matrices.com: stamp-scheme +mit-cairo.bin: stamp-scheme +mit-cairo.bci: stamp-scheme +mit-cairo.com: stamp-scheme +mit-cil.bin: stamp-scheme +mit-cil.bci: stamp-scheme +mit-cil.com: stamp-scheme +mit-graphics.bin: stamp-scheme +mit-graphics.bci: stamp-scheme +mit-graphics.com: stamp-scheme +mit-gtk.bin: stamp-scheme +mit-gtk.bci: stamp-scheme +mit-gtk.com: stamp-scheme +mit-r3rs.bin: stamp-scheme +mit-r3rs.bci: stamp-scheme +mit-r3rs.com: stamp-scheme +mit-syntax.bin: stamp-scheme +mit-syntax.bci: stamp-scheme +mit-syntax.com: stamp-scheme +mit-x.bin: stamp-scheme +mit-x.bci: stamp-scheme +mit-x.com: stamp-scheme +solar.bin: stamp-scheme +solar.bci: stamp-scheme +solar.com: stamp-scheme +tellurion.bin: stamp-scheme +tellurion.bci: stamp-scheme +tellurion.com: stamp-scheme +terrain.bin: stamp-scheme +terrain.bci: stamp-scheme +terrain.com: stamp-scheme +time.bin: stamp-scheme +time.bci: stamp-scheme +time.com: stamp-scheme +mit-@MIT_SCHEME_OS_SUFFIX@.pkd: stamp-scheme +mit-3d-@MIT_SCHEME_OS_SUFFIX@.pkd: stamp-scheme +stamp-scheme: $(source) + touch stamp-scheme + ./mit-compile.sh || rm stamp-scheme + +CLEANFILES = *.bin *.ext *.com *.bci *.moc *.fni *.crf *.fre *.pkd +CLEANFILES += make.scm + +TESTS = mit-check.sh +CLEANFILES += sample-terrain.txt + +ETAGS_ARGS = $(source) +TAGS_DEPENDENCIES = $(source) + +install-data-hook: + echo '(update-optiondb "$(DESTDIR)$(scmlibdir)/")' \ + | $(MIT_SCHEME_EXE) --batch-mode + +install-html: install-html-am + echo '(update-html-index "$(DESTDIR)$(htmldir)/")' \ + | $(MIT_SCHEME_EXE) --batch-mode + +uninstall-hook: + echo '(update-optiondb "$(DESTDIR)$(scmlibdir)/")' \ + | $(MIT_SCHEME_EXE) --batch-mode + [ -d "$(DESTDIR)$(scmlib_planetariumdir)" ] \ + && rmdir "$(DESTDIR)$(scmlib_planetariumdir)" + [ -d "$(DESTDIR)$(htmldir)" ] \ + && ( echo '(update-html-index "$(DESTDIR)$(htmldir)/")' \ + | $(MIT_SCHEME_EXE) --batch-mode ) diff --git a/src/planetarium/NEWS b/src/planetarium/NEWS new file mode 100644 index 000000000..97bf31848 --- /dev/null +++ b/src/planetarium/NEWS @@ -0,0 +1,27 @@ +mit-scheme-planetarium NEWS -- history of user-visible changes. + +Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 +Matthew Birkholz + +This file is part of a planetarium for MIT/GNU Scheme. + +MIT/GNU Scheme 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. + +MIT/GNU Scheme is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, +USA. + +mit-scheme-planetarium 0.1 - Matt Birkholz, 2016-03-26 +====================================================== + +* Added a manual with examples of messages that can be sent to a + tellurion. diff --git a/src/planetarium/README b/src/planetarium/README new file mode 100644 index 000000000..68d327f25 --- /dev/null +++ b/src/planetarium/README @@ -0,0 +1,23 @@ +-*-Text-*- + +A planetarium. + +Currently this is just a simple tellurion that shows the position of +the sun by drawing a face of Earth and shading its dark side. If an +old X11 graphics device is all that is available, just the terminator +is drawn. + +To build and install: + + ./configure + make all check + make install install-html + +To use: + + (load-option 'PLANETARIUM) + (make-tellurion) + +A tellurion should pop up in a new window on your desktop. + +For more information see the accompanying user / reference manual. diff --git a/src/planetarium/autogen.sh b/src/planetarium/autogen.sh new file mode 100755 index 000000000..70bd51f82 --- /dev/null +++ b/src/planetarium/autogen.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +set -e +autoreconf --force --install diff --git a/src/planetarium/configure.ac b/src/planetarium/configure.ac new file mode 100644 index 000000000..8e2a9e336 --- /dev/null +++ b/src/planetarium/configure.ac @@ -0,0 +1,47 @@ +dnl Process this file with autoconf to produce a configure script. + +AC_INIT([MIT/GNU Scheme planetarium], + [0.1], + [puck@birchwood-abbey.net], + [mit-scheme-planetarium]) +AC_CONFIG_SRCDIR([mit.pkg]) + +AC_COPYRIGHT( +[Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz + +This file is part of a planetarium for MIT/GNU Scheme. + +This planetarium is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +This planetarium is distributed in the hope that 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 planetarium; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, +USA. +]) + +AM_INIT_AUTOMAKE + +AC_PROG_CC +AC_PROG_CPP +AC_PROG_INSTALL + +: ${MIT_SCHEME_EXE=mit-scheme} +MIT_SCHEME_ARCH=`echo "(display microcode-id/compiled-code-type)" \ + | ${MIT_SCHEME_EXE} --batch-mode` +MIT_SCHEME_OS_SUFFIX=`echo "(display (microcode-id/operating-system-suffix))" \ + | ${MIT_SCHEME_EXE} --batch-mode` + +AC_SUBST([MIT_SCHEME_EXE]) +AC_SUBST([MIT_SCHEME_ARCH]) +AC_SUBST([MIT_SCHEME_OS_SUFFIX]) +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/src/planetarium/earth.scm b/src/planetarium/earth.scm index 7b2185909..6d43e4976 100644 --- a/src/planetarium/earth.scm +++ b/src/planetarium/earth.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/geometry.scm b/src/planetarium/geometry.scm index f9364552a..dd8873a70 100644 --- a/src/planetarium/geometry.scm +++ b/src/planetarium/geometry.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013, 2014 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/google-earth.scm b/src/planetarium/google-earth.scm index 8c2f2ad17..28ec2cd8a 100644 --- a/src/planetarium/google-earth.scm +++ b/src/planetarium/google-earth.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013, 2014 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/graphics.scm b/src/planetarium/graphics.scm index 7f9bf7184..086d63d6b 100644 --- a/src/planetarium/graphics.scm +++ b/src/planetarium/graphics.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/install-sh b/src/planetarium/install-sh new file mode 100755 index 000000000..e9de23842 --- /dev/null +++ b/src/planetarium/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/src/planetarium/matrices.scm b/src/planetarium/matrices.scm index fa38e983e..d27620f65 100644 --- a/src/planetarium/matrices.scm +++ b/src/planetarium/matrices.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/mit-3d.pkg b/src/planetarium/mit-3d.pkg index b43152fca..c7166217a 100644 --- a/src/planetarium/mit-3d.pkg +++ b/src/planetarium/mit-3d.pkg @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013, 2014 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. @@ -35,12 +36,13 @@ USA. (parent (planetarium)) (files "terrain") (import () - burst-string read-line ->namestring + burst-string read-line write-string ->namestring error:wrong-type-argument flo:= flo:>= flo:flonum? symbol-name guarantee-list-of-type->length guarantee-symbol guarantee-string + universal-time->local-time-string sleep-current-thread define-class define-method initialize-instance - define-syntax syntax-rules outf-error) + define-syntax syntax-rules outf-error ill-formed-syntax) (import (gtk) gtk-widget-set-hexpand gtk-widget-set-vexpand diff --git a/src/planetarium/mit-cairo.scm b/src/planetarium/mit-cairo.scm index d83920ed4..892ff27ec 100644 --- a/src/planetarium/mit-cairo.scm +++ b/src/planetarium/mit-cairo.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2014 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/mit-check.scm b/src/planetarium/mit-check.scm deleted file mode 100644 index 621e4b700..000000000 --- a/src/planetarium/mit-check.scm +++ /dev/null @@ -1,24 +0,0 @@ -#| -*-Scheme-*- |# - -;;;; Test the Planetarium. - -(load "mit-make") - -;;(make-fix-layout-demo) - -;;(make-tellurion) - -(if (name->package '(planetarium terrain)) - (if (file-readable? "monterey-bay-101x101.txt") - (let ((view (make-terrain "monterey-bay-101x101.txt" - 101 101 36. -122.5 .01))) - (view 'position 36.5 -122.7 15000.) - (view 'heading 85.) - (view 'tilt -25.)) - (warn "Could not test terrain viewer."))) - -(let wait () - (if (not (null? (access toplevel-windows (->environment '(gtk gtk-widget))))) - (begin - (sleep-current-thread 1000) - (wait)))) \ No newline at end of file diff --git a/src/planetarium/mit-check.sh b/src/planetarium/mit-check.sh new file mode 100755 index 000000000..ba701329c --- /dev/null +++ b/src/planetarium/mit-check.sh @@ -0,0 +1,75 @@ +#!/bin/sh +# -*-Scheme-*- +# +# Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, +# 2016 Matthew Birkholz +# +# This file is part of a planetarium for MIT/GNU Scheme. +# +# This planetarium is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This planetarium is distributed in the hope that 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 planetarium; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# Test the PLANETARIUM option. + +set -e +: ${MIT_SCHEME_EXE=mit-scheme} +${MIT_SCHEME_EXE} --prepend-library . <<\EOF +(begin + + (set! *initial-options-file* (merge-pathnames "mit-optiondb.scm")) + + (load-option 'PLANETARIUM) + + (if (not (gtk-initialized?)) + (warn "Could not test the planetarium without a DISPLAY.") + (begin + (make-tellurion) + + (let ((pkg (name->package '(planetarium terrain)))) + (if (not pkg) + (warn "Could not test terrain viewer.") + (let ((env (package/environment pkg))) + (if (not (file-exists? "sample-terrain.txt")) + ((access write-sample-terrain env) + "sample-terrain.txt" 20 20)) + ((access test-normals env)) + (let ((view (make-terrain "sample-terrain.txt" + 20 20 0. 0. .01))) + (view 'position 0. 0. 20000.) + (view 'heading 50.) + (view 'tilt -50.))))) + + (let ((env (->environment '(gtk gtk-widget)))) + (let loop () + (sleep-current-thread 1000) + (if (not (null? (access toplevel-windows env))) + (loop)))) + + ;;(gc-flip) + ;;(sleep-current-thread 100) ;Ensure GC deamons run? Hope they don't? + (let ((ffi (->environment '(runtime ffi)))) + (if (not (zero? (car ((access registered-callback-count ffi))))) + (error "The planetarium did not clean up its callbacks")) + (if (not (null? (access malloced-aliens ffi))) + (error "The planetarium did not free allocated memory:" + (map (lambda (elt) + (let ((alien (weak-car elt))) + (if (eq? 'uchar (alien/ctype alien)) + (c-peek-cstring alien) + alien))) + (access malloced-aliens ffi))))) + )) + ) +EOF diff --git a/src/planetarium/mit-cil.scm b/src/planetarium/mit-cil.scm index 584307354..38995030d 100644 --- a/src/planetarium/mit-cil.scm +++ b/src/planetarium/mit-cil.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/mit-compile.scm b/src/planetarium/mit-compile.scm deleted file mode 100644 index 0a1e5ba64..000000000 --- a/src/planetarium/mit-compile.scm +++ /dev/null @@ -1,72 +0,0 @@ -#| -*-Scheme-*- - -Copyright (C) 2013, 2014 Matthew Birkholz - -This file is part of an extension to MIT/GNU Scheme. - -MIT/GNU Scheme 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. - -MIT/GNU Scheme is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, -USA. - -|# - -(load-option 'CREF) -(load-option 'SOS) -(load-option 'GTK) - -(with-working-directory-pathname (directory-pathname (current-load-pathname)) - (lambda () - (define (cf files deps pkg-name) - (if (pair? files) - (for-each (lambda (f) (compile-file f deps (->environment pkg-name))) - files) - (compile-file files deps (->environment pkg-name)))) - (define (lf file pkg-name) - (load file (->environment pkg-name))) - - (if (name->package '(PLANETARIUM)) - (error "The PLANETARIUM package already exists.") - (let ((package-set (package-set-pathname "mit"))) - (if (not (file-modification-timeenvironment pkg-name))) + files) + (compile-file files deps (->environment pkg-name)))) + + (define (lf file pkg-name) + (load file (->environment pkg-name))) + + (parameterize ((param:suppress-loading-message? #t)) + (load-option 'CREF) + (load-option 'GTK)) + + (if (name->package '(PLANETARIUM)) + (error "The PLANETARIUM package already exists.")) + (let ((package-set (package-set-pathname "mit"))) + (if (not (file-modification-timeenvironment '(planetarium)))) - ((access test-julian-day env)) - ((access test-greenwich-mean-sidereal-time env)) - ((access test-solar-latitude/longitude env)) - ((access test-angular-separation env))) - (load "mit-link") - (if (not (warn-errors? (lambda () (load-option 'GL)))) - (begin - (load-package-set "mit-3d") - ((access test-normals (->environment '(planetarium terrain)))))))) \ No newline at end of file + (parameterize ((param:suppress-loading-message? #t)) + (load-package-set "mit") + (let ((env (->environment '(planetarium)))) + ((access test-julian-day env)) + ((access test-greenwich-mean-sidereal-time env)) + ((access test-solar-latitude/longitude env)) + ((access test-angular-separation env))) + (load "mit-link") + (if (not (warn-errors? (lambda () (load-option 'GL)))) + (begin + (load-package-set "mit-3d") + ((access test-normals (->environment '(planetarium terrain))))))))) \ No newline at end of file diff --git a/src/planetarium/mit-optiondb.scm b/src/planetarium/mit-optiondb.scm new file mode 100644 index 000000000..48482ec74 --- /dev/null +++ b/src/planetarium/mit-optiondb.scm @@ -0,0 +1,15 @@ +#| -*-Scheme-*- |# + +;;;; Test optiondb, includes the installed system's optiondb. + +(define-load-option 'PLANETARIUM + (let ((pathname + (merge-pathnames "mit-make" + (directory-pathname (current-load-pathname))))) + (named-lambda (planetarium-option-loader) + (load pathname)))) + +(further-load-options + (merge-pathnames "optiondb" + (cadr (access library-directory-path + (->environment '(runtime pathname)))))) \ No newline at end of file diff --git a/src/planetarium/mit-r3rs.scm b/src/planetarium/mit-r3rs.scm index a2b563ec7..4a28fe0b1 100644 --- a/src/planetarium/mit-r3rs.scm +++ b/src/planetarium/mit-r3rs.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/mit-scheme-planetarium.texi b/src/planetarium/mit-scheme-planetarium.texi new file mode 100644 index 000000000..91a554ead --- /dev/null +++ b/src/planetarium/mit-scheme-planetarium.texi @@ -0,0 +1,555 @@ +\input texinfo @c -*-Texinfo-*- +@comment %**start of header +@setfilename mit-scheme-planetarium.info +@set VERSION 0.5 +@settitle Planetarium @value{VERSION} +@comment %**end of header + +@copying +This manual documents a planetarium for MIT/GNU Scheme, version +@value{VERSION}. + +Copyright @copyright{} 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, + 2015, 2016 Matthew Birkholz + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with no Front-Cover Texts and no Back-Cover Texts. +A copy of the license is included in the section entitled ``GNU Free +Documentation License.'' +@end quotation +@end copying + +@dircategory Programming Languages +@direntry +* MIT/GNU Scheme Planetarium: (mit-scheme-planetarium). + Planetarium. +@end direntry + +@titlepage +@title A Planetarium +@subtitle for MIT/GNU Scheme version 9.3 +@author by Matt Birkholz (@email{birkholz@@alum.mit.edu}) +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage + +@ifnottex +@node Top, Introduction, (dir), (dir) +@top Planetarium + +@insertcopying +@end ifnottex + +@menu +* Introduction:: +* GNU Free Documentation License:: +@end menu + +@node Introduction, GNU Free Documentation License, Top, Top +@chapter Introduction + +This planetarium currently is just a simple tellurion that shows the +position of the sun by drawing a face of Earth and shading its dark +side. If an old X11 graphics device is all that is available, just +the terminator is drawn. + +To use, startup mit-scheme and enter these following two s-expressions +at the REPL prompt. + +@example + (load-option 'PLANETARIUM) + (define t (make-tellurion)) +@end example + +A tellurion should pop up in a new window on your desktop. + +@deffn Procedure make-tellurion +Returns a new tellurion, a closure to which messages can be sent. +@end deffn + +You can send a @code{turn-to} message to the tellurion, specifying a +latitude and longitude in degrees, by applying it to three arguments: +the symbol @code{turn-to} and the latitude and longitude (numbers). + +For example, to center the globe on Fairbanks, Alaska, enter this: +@example + (t 'TURN-TO 64.844 -147.723) +@end example + +You can also have the tellurion draw the terminator as it would appear +at a particular time (other than the current time). Apply it to the symbol +@code{time-to} and a time, either a decoded time or an integer to be +interpreted as a universal time. +@example + (t 'TIME-TO (make-decoded-time 0 29 9 19 3 2016)) ;; a vernal equinox +@end example + +You can return the tellurion to the current time by applying it to the +symbols @code{time-to} and @code{current}. + +@example + (t 'TIME-TO 'CURRENT) +@end example + +The tellurion redraws every 15 minutes to show the terminator's crawl +across the face of the globe. You can make it hold still by applying +it to the symbol @code{stop}. It will pick up where it left off when +you apply it to @code{go}. + +@example + (t 'STOP) + (t 'GO) +@end example + +@node GNU Free Documentation License, , Introduction, Top +@appendix GNU Free Documentation License + +@cindex FDL, GNU Free Documentation License +@center Version 1.2, November 2002 + +@display +Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc. +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +@end display + +@enumerate 0 +@item +PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document @dfn{free} in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of ``copyleft'', which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +@item +APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The ``Document'', below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as ``you''. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A ``Modified Version'' of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A ``Secondary Section'' is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The ``Invariant Sections'' are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The ``Cover Texts'' are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A ``Transparent'' copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not ``Transparent'' is called ``Opaque''. + +Examples of suitable formats for Transparent copies include plain +@sc{ascii} without markup, Texinfo input format, La@TeX{} input +format, @acronym{SGML} or @acronym{XML} using a publicly available +@acronym{DTD}, and standard-conforming simple @acronym{HTML}, +PostScript or @acronym{PDF} designed for human modification. Examples +of transparent image formats include @acronym{PNG}, @acronym{XCF} and +@acronym{JPG}. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, @acronym{SGML} or +@acronym{XML} for which the @acronym{DTD} and/or processing tools are +not generally available, and the machine-generated @acronym{HTML}, +PostScript or @acronym{PDF} produced by some word processors for +output purposes only. + +The ``Title Page'' means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, ``Title Page'' means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +A section ``Entitled XYZ'' means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as ``Acknowledgements'', +``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' +of such a section when you modify the Document means that it remains a +section ``Entitled XYZ'' according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +@item +VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +@item +COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +@item +MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +@enumerate A +@item +Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +@item +List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +@item +State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +@item +Preserve all the copyright notices of the Document. + +@item +Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +@item +Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +@item +Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +@item +Include an unaltered copy of this License. + +@item +Preserve the section Entitled ``History'', Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled ``History'' in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +@item +Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the ``History'' section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +@item +For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +@item +Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +@item +Delete any section Entitled ``Endorsements''. Such a section +may not be included in the Modified Version. + +@item +Do not retitle any existing section to be Entitled ``Endorsements'' or +to conflict in title with any Invariant Section. + +@item +Preserve any Warranty Disclaimers. +@end enumerate + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled ``Endorsements'', provided it contains +nothing but endorsements of your Modified Version by various +parties---for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +@item +COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled ``History'' +in the various original documents, forming one section Entitled +``History''; likewise combine any sections Entitled ``Acknowledgements'', +and any sections Entitled ``Dedications''. You must delete all +sections Entitled ``Endorsements.'' + +@item +COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +@item +AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an ``aggregate'' if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +@item +TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warrany Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled ``Acknowledgements'', +``Dedications'', or ``History'', the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +@item +TERMINATION + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document 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. + +@item +FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation 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. See +@uref{http://www.gnu.org/copyleft/}. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License ``or any later version'' applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. +@end enumerate + +@page +@appendixsec ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +@smallexample +@group + Copyright (C) @var{year} @var{your name}. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled ``GNU + Free Documentation License''. +@end group +@end smallexample + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the ``with...Texts.'' line with this: + +@smallexample +@group + with the Invariant Sections being @var{list their titles}, with + the Front-Cover Texts being @var{list}, and with the Back-Cover Texts + being @var{list}. +@end group +@end smallexample + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +@bye diff --git a/src/planetarium/mit-scheme.scm b/src/planetarium/mit-scheme.scm index 35c0450d0..d23879115 100644 --- a/src/planetarium/mit-scheme.scm +++ b/src/planetarium/mit-scheme.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/mit-snapshot.scm b/src/planetarium/mit-snapshot.scm index ca391e1f4..11ebd6c86 100644 --- a/src/planetarium/mit-snapshot.scm +++ b/src/planetarium/mit-snapshot.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013, 2014 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. @@ -44,8 +45,7 @@ USA. '(make-latitude/longitude draw-tellurion))) (let ((time (get-universal-time)) - (latitude 33.3) - (longitude -111.9) + (lat/long (make-latitude/longitude 64.844 -147.723)) ;Fairbanks (device (make-graphics-device 'cairo 400 400))) (graphics-set-coordinate-limits device -1.1 -1.1 1.1 1.1) @@ -57,8 +57,7 @@ USA. (lambda () (show-time (lambda () - (draw-tellurion device time (make-latitude/longitude - latitude longitude)))))) + (draw-tellurion device time lat/long))))) (write-char #\tab out) (write-string (universal-time->local-time-string time) out) (newline out))))) diff --git a/src/planetarium/mit-syntax.scm b/src/planetarium/mit-syntax.scm index b5462c96d..d3ab62577 100644 --- a/src/planetarium/mit-syntax.scm +++ b/src/planetarium/mit-syntax.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/mit-x.scm b/src/planetarium/mit-x.scm index de385b8b2..c08041b6e 100644 --- a/src/planetarium/mit-x.scm +++ b/src/planetarium/mit-x.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/mit.pkg b/src/planetarium/mit.pkg index 5e42ac6a1..62e6fc59a 100644 --- a/src/planetarium/mit.pkg +++ b/src/planetarium/mit.pkg @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013, 2014 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/mkinstalldirs b/src/planetarium/mkinstalldirs new file mode 100755 index 000000000..18f6d1782 --- /dev/null +++ b/src/planetarium/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $$ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/src/planetarium/solar.scm b/src/planetarium/solar.scm index 792e46331..e63391cab 100644 --- a/src/planetarium/solar.scm +++ b/src/planetarium/solar.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/tellurion.scm b/src/planetarium/tellurion.scm index 082f721d8..a7f6e664a 100644 --- a/src/planetarium/tellurion.scm +++ b/src/planetarium/tellurion.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013, 2014 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/src/planetarium/terrain.scm b/src/planetarium/terrain.scm index 8f720a732..52c94011b 100644 --- a/src/planetarium/terrain.scm +++ b/src/planetarium/terrain.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. @@ -384,11 +385,11 @@ USA. (let ((correct (flo:3d 0. 1. 0.)) (computed (normal 1. 0. 1. 1. 1. 1.))) (if (not (3d-~= computed correct 0.0000000000000005)) - (warn "; normal-test: bad normal 1:" computed correct))) + (warn "normal-test: bad normal 1:" computed correct))) (let ((correct (let ((a pi/4)) (flo:3d (cos a) (sin a) 0.))) (computed (normal 1. 0. 1. -1. 0. 0.))) (if (not (3d-~= computed correct 0.0000000000000005)) - (warn "; normal-test: bad normal 2:" computed correct)))) + (warn "normal-test: bad normal 2:" computed correct)))) (define-integrable-operator (3d-sum a b) (flo:3d (flo:+ (x a) (x b)) @@ -437,6 +438,31 @@ USA. (matrix-set! matrix columns x y height)))))))) matrix)) +(define (write-sample-terrain filename x-samples y-samples) + (with-output-to-file filename + (lambda () + (let ((time-string + (universal-time->local-time-string (get-universal-time))) + (x-min -3) (x-max 3) + (y-min -2) (y-max 2)) + (let ((x-step (/ (- x-max x-min) x-samples)) + (y-step (/ (- y-max y-min) y-samples))) + (do ((x x-min (+ x x-step))) + ((> x x-max)) + (do ((y y-min (+ y y-step))) + ((> y y-max)) + (write-string time-string) + (write-char #\tab) + (write-string (number->string x '(fix 3))) + (write-char #\,) + (write-string (number->string y '(fix 3))) + (write-char #\tab) + (write-string (number->string + (* 1000 ;One kilometer tall mountain. + (/ 1 (+ (* x x) (* y y) 1))) + '(fix 3))) + (write-char #\newline)))))))) + (define-integrable (matrix-set! m c x y v) (flo:vector-set! m (fix:+ x (fix:* c y)) v)) diff --git a/src/planetarium/time.scm b/src/planetarium/time.scm index cfeb3c5dc..fbac8800e 100644 --- a/src/planetarium/time.scm +++ b/src/planetarium/time.scm @@ -1,21 +1,22 @@ #| -*-Scheme-*- -Copyright (C) 2013 Matthew Birkholz +Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016 Matthew Birkholz -This file is part of an extension to MIT/GNU Scheme. +This file is part of a planetarium for MIT/GNU Scheme. -MIT/GNU Scheme is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. +This planetarium 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. -MIT/GNU Scheme is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of +This planetarium is distributed in the hope that 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 MIT/GNU Scheme; if not, write to the Free Software +along with this planetarium; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.