diff options
Diffstat (limited to 'manuals/chickadee')
59 files changed, 0 insertions, 13672 deletions
diff --git a/manuals/chickadee/API-Reference.html b/manuals/chickadee/API-Reference.html deleted file mode 100644 index 4b69116..0000000 --- a/manuals/chickadee/API-Reference.html +++ /dev/null @@ -1,109 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>API Reference (The Chickadee Game Toolkit)</title> - -<meta name="description" content="API Reference (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="API Reference (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="index.html" rel="up" title="Top" /> -<link href="Kernel.html" rel="next" title="Kernel" /> -<link href="Live-Coding.html" rel="prev" title="Live Coding" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="API-Reference"></span><div class="header"> -<p> -Next: <a href="Copying-This-Manual.html" accesskey="n" rel="next">Copying This Manual</a>, Previous: <a href="Live-Coding.html" accesskey="p" rel="prev">Live Coding</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="API-Reference-1"></span><h2 class="chapter">5 API Reference</h2> - -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="Kernel.html" accesskey="1">Kernel</a></td><td> </td><td align="left" valign="top">The fundamental components. -</td></tr> -<tr><td align="left" valign="top">• <a href="Math.html" accesskey="2">Math</a></td><td> </td><td align="left" valign="top">Vectors, matrices, bounding boxes, and more. -</td></tr> -<tr><td align="left" valign="top">• <a href="Graphics.html" accesskey="3">Graphics</a></td><td> </td><td align="left" valign="top">2D and 3D rendering. -</td></tr> -<tr><td align="left" valign="top">• <a href="Audio.html" accesskey="4">Audio</a></td><td> </td><td align="left" valign="top">Make some noise. -</td></tr> -<tr><td align="left" valign="top">• <a href="Scripting.html" accesskey="5">Scripting</a></td><td> </td><td align="left" valign="top">Bringing the game world to life. -</td></tr> -<tr><td align="left" valign="top">• <a href="Data-Structures.html" accesskey="6">Data Structures</a></td><td> </td><td align="left" valign="top">Queues, heaps, spatial partitioning, and more. -</td></tr> -</table> - - - - -</body> -</html> diff --git a/manuals/chickadee/Agendas.html b/manuals/chickadee/Agendas.html deleted file mode 100644 index 51be160..0000000 --- a/manuals/chickadee/Agendas.html +++ /dev/null @@ -1,223 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Agendas (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Agendas (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Agendas (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Scripting.html" rel="up" title="Scripting" /> -<link href="Scripts.html" rel="next" title="Scripts" /> -<link href="Scripting.html" rel="prev" title="Scripting" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Agendas"></span><div class="header"> -<p> -Next: <a href="Scripts.html" accesskey="n" rel="next">Scripts</a>, Up: <a href="Scripting.html" accesskey="u" rel="up">Scripting</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Agendas-1"></span><h4 class="subsection">5.5.1 Agendas</h4> - -<p>To schedule a task to be performed later, an “agenda” is used. -There is a default, global agenda that is ready to be used, or -additional agendas may be created for different purposes. The -following example prints the text “hello” when the agenda has -advanced to time unit 10. -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">at</span> <span class="syntax-symbol">10</span> <span class="syntax-open">(</span><span class="syntax-symbol">display</span> <span class="syntax-string">"hello\n"</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>Most of the time it is more convenient to schedule tasks relative to -the current time. This is where <code>after</code> comes in handy: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">after</span> <span class="syntax-symbol">10</span> <span class="syntax-open">(</span><span class="syntax-symbol">display</span> <span class="syntax-string">"hello\n"</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>Time units in the agenda are in no way connected to real time. It’s -up to the programmer to decide what agenda time means. A simple and -effective approach is to map each call of the update procedure -(see <a href="Kernel.html">Kernel</a>) to 1 unit of agenda time, like so: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-open">(</span><span class="syntax-symbol">update</span> <span class="syntax-symbol">dt</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">update-agenda</span> <span class="syntax-symbol">1</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>It is important to call <code>update-agenda</code> periodically, otherwise -no tasks will ever be run! -</p> -<p>In addition to using the global agenda, it is useful to have multiple -agendas for different purposes. For example, the game world can use a -different agenda than the user interface, so that pausing the game is -a simple matter of not updating the world’s agenda while continuing to -update the user interface’s agenda. The current agenda is dynamically -scoped and can be changed using the <code>with-agenda</code> special form: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">game-world-agenda</span> <span class="syntax-open">(</span><span class="syntax-symbol">make-agenda</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-symbol">with-agenda</span> <span class="syntax-symbol">game-world-agenda</span> - <span class="syntax-open">(</span><span class="syntax-symbol">at</span> <span class="syntax-symbol">60</span> <span class="syntax-open">(</span><span class="syntax-symbol">spawn-goblin</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">at</span> <span class="syntax-symbol">120</span> <span class="syntax-open">(</span><span class="syntax-symbol">spawn-goblin</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">at</span> <span class="syntax-symbol">240</span> <span class="syntax-open">(</span><span class="syntax-symbol">spawn-goblin-king</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<dl> -<dt id="index-make_002dagenda">Procedure: <strong>make-agenda</strong></dt> -<dd><p>Return a new task scheduler. -</p></dd></dl> - -<dl> -<dt id="index-agenda_003f">Procedure: <strong>agenda?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is an agenda. -</p></dd></dl> - -<dl> -<dt id="index-current_002dagenda">Procedure: <strong>current-agenda</strong></dt> -<dt id="index-current_002dagenda-1">Procedure: <strong>current-agenda</strong> <em>agenda</em></dt> -<dd><p>When called with no arguments, return the current agenda. When called -with one argument, set the current agenda to <var>agenda</var>. -</p></dd></dl> - -<dl> -<dt id="index-with_002dagenda">Syntax: <strong>with-agenda</strong> <em>agenda body …</em></dt> -<dd><p>Evaluate <var>body</var> with the current agenda set to <var>agenda</var>. -</p></dd></dl> - -<dl> -<dt id="index-agenda_002dtime">Procedure: <strong>agenda-time</strong></dt> -<dd><p>Return the current agenda time. -</p></dd></dl> - -<dl> -<dt id="index-update_002dagenda">Procedure: <strong>update-agenda</strong> <em>dt</em></dt> -<dd><p>Advance the current agenda by <var>dt</var>. -</p></dd></dl> - -<dl> -<dt id="index-schedule_002dat">Procedure: <strong>schedule-at</strong> <em>time thunk</em></dt> -<dd><p>Schedule <var>thunk</var>, a procedure of zero arguments, to be run at -<var>time</var>. -</p></dd></dl> - -<dl> -<dt id="index-schedule_002dafter">Procedure: <strong>schedule-after</strong> <em>delay thunk</em></dt> -<dd><p>Schedule <var>thunk</var>, a procedure of zero arguments, to be run after -<var>delay</var>. -</p></dd></dl> - -<dl> -<dt id="index-schedule_002devery">Procedure: <strong>schedule-every</strong> <em>interval thunk [n]</em></dt> -<dd><p>Schedule <var>thunk</var>, a procedure of zero arguments, to be run every -<var>interval</var> amount of time. Repeat this <var>n</var> times, or -indefinitely if not specified. -</p></dd></dl> - -<dl> -<dt id="index-at">Syntax: <strong>at</strong> <em>time body …</em></dt> -<dd><p>Schedule <var>body</var> to be evaluated at <var>time</var>. -</p></dd></dl> - -<dl> -<dt id="index-after">Syntax: <strong>after</strong> <em>delay body …</em></dt> -<dd><p>Schedule <var>body</var> to be evaluated after <var>delay</var>. -</p></dd></dl> - -<dl> -<dt id="index-every">Syntax: <strong>every</strong> <em>interval body …</em></dt> -<dt id="index-every-1">Syntax: <strong>every</strong> <em>(interval n) body …</em></dt> -<dd><p>Schedule <var>body</var> to be evaluated every <var>interval</var> amount of -time. Repeat this <var>n</var> times, or indefinitely if not specified. -</p></dd></dl> - -<p>It is also possible to schedule things that are not dependent on how -much time passes. The agenda will periodically poll to see if any -registered conditions are met. -</p> -<dl> -<dt id="index-call_002dwhen">Procedure: <strong>call-when</strong> <em>pred thunk</em></dt> -<dd><p>Call <var>thunk</var> sometime in the future when <var>pred</var> is satisfied -(returns a value other than <code>#f</code>.) -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Scripts.html" accesskey="n" rel="next">Scripts</a>, Up: <a href="Scripting.html" accesskey="u" rel="up">Scripting</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Apache-2_002e0-License.html b/manuals/chickadee/Apache-2_002e0-License.html deleted file mode 100644 index 361c858..0000000 --- a/manuals/chickadee/Apache-2_002e0-License.html +++ /dev/null @@ -1,305 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Apache 2.0 License (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Apache 2.0 License (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Apache 2.0 License (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Copying-This-Manual.html" rel="up" title="Copying This Manual" /> -<link href="Index.html" rel="next" title="Index" /> -<link href="Copying-This-Manual.html" rel="prev" title="Copying This Manual" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Apache-2_002e0-License"></span><div class="header"> -<p> -Up: <a href="Copying-This-Manual.html" accesskey="u" rel="up">Copying This Manual</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Apache-2_002e0-License-1"></span><h3 class="section">A.1 Apache 2.0 License</h3> - -<p>Apache License -</p> -<p>Version 2.0, January 2004 -</p> -<p><a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a> -</p> -<p>TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -</p> -<ol> -<li> Definitions. - -<p>“License” shall mean the terms and conditions for use, reproduction, -and distribution as defined by Sections 1 through 9 of this document. -</p> -<p>“Licensor” shall mean the copyright owner or entity authorized by -the copyright owner that is granting the License. -</p> -<p>“Legal Entity” shall mean the union of the acting entity and all -other entities that control, are controlled by, or are under common -control with that entity. For the purposes of this definition, -“control” means (i) the power, direct or indirect, to cause the -direction or management of such entity, whether by contract or -otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. -</p> -<p>“You” (or “Your”) shall mean an individual or Legal Entity -exercising permissions granted by this License. -</p> -<p>“Source” form shall mean the preferred form for making modifications, -including but not limited to software source code, documentation -source, and configuration files. -</p> -<p>“Object” form shall mean any form resulting from mechanical -transformation or translation of a Source form, including but -not limited to compiled object code, generated documentation, -and conversions to other media types. -</p> -<p>“Work” shall mean the work of authorship, whether in Source or -Object form, made available under the License, as indicated by a -copyright notice that is included in or attached to the work -(an example is provided in the Appendix below). -</p> -<p>“Derivative Works” shall mean any work, whether in Source or Object -form, that is based on (or derived from) the Work and for which the -editorial revisions, annotations, elaborations, or other modifications -represent, as a whole, an original work of authorship. For the purposes -of this License, Derivative Works shall not include works that remain -separable from, or merely link (or bind by name) to the interfaces of, -the Work and Derivative Works thereof. -</p> -<p>“Contribution” shall mean any work of authorship, including -the original version of the Work and any modifications or additions -to that Work or Derivative Works thereof, that is intentionally -submitted to Licensor for inclusion in the Work by the copyright owner -or by an individual or Legal Entity authorized to submit on behalf of -the copyright owner. For the purposes of this definition, “submitted” -means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, -and issue tracking systems that are managed by, or on behalf of, the -Licensor for the purpose of discussing and improving the Work, but -excluding communication that is conspicuously marked or otherwise -designated in writing by the copyright owner as “Not a Contribution.” -</p> -<p>“Contributor” shall mean Licensor and any individual or Legal Entity -on behalf of whom a Contribution has been received by Licensor and -subsequently incorporated within the Work. -</p> -</li><li> Grant of Copyright License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the -Work and such Derivative Works in Source or Object form. - -</li><li> Grant of Patent License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -(except as stated in this section) patent license to make, have made, -use, offer to sell, sell, import, and otherwise transfer the Work, -where such license applies only to those patent claims licensable -by such Contributor that are necessarily infringed by their -Contribution(s) alone or by combination of their Contribution(s) -with the Work to which such Contribution(s) was submitted. If You -institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work -or a Contribution incorporated within the Work constitutes direct -or contributory patent infringement, then any patent licenses -granted to You under this License for that Work shall terminate -as of the date such litigation is filed. - -</li><li> Redistribution. You may reproduce and distribute copies of the -Work or Derivative Works thereof in any medium, with or without -modifications, and in Source or Object form, provided that You -meet the following conditions: - -<p>(a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and -</p> -<p>(b) You must cause any modified files to carry prominent notices - stating that You changed the files; and -</p> -<p>(c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and -</p> -<p>(d) If the Work includes a “NOTICE” text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. -</p> -<p>You may add Your own copyright statement to Your modifications and -may provide additional or different license terms and conditions -for use, reproduction, or distribution of Your modifications, or -for any such Derivative Works as a whole, provided Your use, -reproduction, and distribution of the Work otherwise complies with -the conditions stated in this License. -</p> -</li><li> Submission of Contributions. Unless You explicitly state otherwise, -any Contribution intentionally submitted for inclusion in the Work -by You to the Licensor shall be under the terms and conditions of -this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify -the terms of any separate license agreement you may have executed -with Licensor regarding such Contributions. - -</li><li> Trademarks. This License does not grant permission to use the trade -names, trademarks, service marks, or product names of the Licensor, -except as required for reasonable and customary use in describing the -origin of the Work and reproducing the content of the NOTICE file. - -</li><li> Disclaimer of Warranty. Unless required by applicable law or -agreed to in writing, Licensor provides the Work (and each -Contributor provides its Contributions) on an “AS IS” BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -implied, including, without limitation, any warranties or conditions -of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -PARTICULAR PURPOSE. You are solely responsible for determining the -appropriateness of using or redistributing the Work and assume any -risks associated with Your exercise of permissions under this License. - -</li><li> Limitation of Liability. In no event and under no legal theory, -whether in tort (including negligence), contract, or otherwise, -unless required by applicable law (such as deliberate and grossly -negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, -incidental, or consequential damages of any character arising as a -result of this License or out of the use or inability to use the -Work (including but not limited to damages for loss of goodwill, -work stoppage, computer failure or malfunction, or any and all -other commercial damages or losses), even if such Contributor -has been advised of the possibility of such damages. - -</li><li> Accepting Warranty or Additional Liability. While redistributing -the Work or Derivative Works thereof, You may choose to offer, -and charge a fee for, acceptance of support, warranty, indemnity, -or other liability obligations and/or rights consistent with this -License. However, in accepting such obligations, You may act only -on Your own behalf and on Your sole responsibility, not on behalf -of any other Contributor, and only if You agree to indemnify, -defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason -of your accepting any such warranty or additional liability. -</li></ol> - -<p>END OF TERMS AND CONDITIONS -</p> -<p>APPENDIX: How to apply the Apache License to your work. -</p> -<p>To apply the Apache License to your work, attach the following -boilerplate notice, with the fields enclosed by brackets “[]” -replaced with your own identifying information. (Don’t include -the brackets!) The text should be enclosed in the appropriate -comment syntax for the file format. We also recommend that a -file or class name and description of purpose be included on the -same “printed page” as the copyright notice for easier -identification within third-party archives. -</p> -<p>Copyright [yyyy] [name of copyright owner] -</p> -<p>Licensed under the Apache License, Version 2.0 (the “License”); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at -</p> -<p><a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a> -</p> -<p>Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an “AS IS” BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -</p> -<hr /> -<div class="header"> -<p> -Up: <a href="Copying-This-Manual.html" accesskey="u" rel="up">Copying This Manual</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Array-Lists.html b/manuals/chickadee/Array-Lists.html deleted file mode 100644 index ca30f16..0000000 --- a/manuals/chickadee/Array-Lists.html +++ /dev/null @@ -1,179 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Array Lists (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Array Lists (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Array Lists (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Data-Structures.html" rel="up" title="Data Structures" /> -<link href="Queues.html" rel="next" title="Queues" /> -<link href="Data-Structures.html" rel="prev" title="Data Structures" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Array-Lists"></span><div class="header"> -<p> -Next: <a href="Queues.html" accesskey="n" rel="next">Queues</a>, Up: <a href="Data-Structures.html" accesskey="u" rel="up">Data Structures</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Array-Lists-1"></span><h4 class="subsection">5.6.1 Array Lists</h4> - -<p>The <code>(chickadee data array-list)</code> module provides an array/vector -that dynamically expands to hold all of the data that is added to it. -It is named after the <code>ArrayList</code> class in Java. -</p> -<p>In addition to being used as a dynamic vector, it can also be used as -a stack via the <code>array-list-push!</code> and <var>array-list-pop!</var> -procedures. -</p> -<dl> -<dt id="index-make_002darray_002dlist">Procedure: <strong>make-array-list</strong> <em>[initial-capacity]</em></dt> -<dd><p>Return a new empty array list with an initial capacity of -<var>initial-capacity</var>, or 32 by default. -</p></dd></dl> - -<dl> -<dt id="index-array_002dlist">Procedure: <strong>array-list</strong> <em>items ...</em></dt> -<dd><p>Return a new array list with <var>items</var> in it. -</p></dd></dl> - -<dl> -<dt id="index-array_002dlist_003f">Procedure: <strong>array-list?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is an array list. -</p></dd></dl> - -<dl> -<dt id="index-array_002dlist_002dempty_003f">Procedure: <strong>array-list-empty?</strong> <em>array-list</em></dt> -<dd><p>Return <code>#t</code> if <var>array-list</var> is empty. -</p></dd></dl> - -<dl> -<dt id="index-array_002dlist_002dsize">Procedure: <strong>array-list-size</strong> <em>array-list</em></dt> -<dd><p>Return the current size of <var>array-list</var>. -</p></dd></dl> - -<dl> -<dt id="index-array_002dlist_002dref">Procedure: <strong>array-list-ref</strong> <em>array-list i</em></dt> -<dd><p>Return the item in <var>array-list</var> at index <var>i</var>. -</p></dd></dl> - -<dl> -<dt id="index-array_002dlist_002dset_0021">Procedure: <strong>array-list-set!</strong> <em>array-list i value</em></dt> -<dd><p>Set the value in <var>array-list</var> at index <var>i</var> to <var>value</var>. -</p></dd></dl> - -<dl> -<dt id="index-array_002dlist_002dpush_0021">Procedure: <strong>array-list-push!</strong> <em>array-list item</em></dt> -<dd><p>Append <var>item</var> to <var>array-list</var>. -</p></dd></dl> - -<dl> -<dt id="index-array_002dlist_002dpop_0021">Procedure: <strong>array-list-pop!</strong> <em>array-list</em></dt> -<dd><p>Remove and return the last object in <var>array-list</var>. -</p></dd></dl> - -<dl> -<dt id="index-array_002dlist_002ddelete_0021">Procedure: <strong>array-list-delete!</strong> <em>array-list item [#:equal? equal?] [#:fast? #f]</em></dt> -<dd><p>Delete <var>item</var> from <var>array-list</var>. Use <var>equal?</var> as the -equivalence predicate, which defaults to Guile’s <code>equal?</code> -procedure. By default, deletion preserves the order of the array, but -takes linear time in the worst case. If <var>fast?</var> is <code>#t</code> then -<var>item</var> will deleted in constant time, but order is not preserved. -</p></dd></dl> - -<dl> -<dt id="index-array_002dlist_002dclear_0021">Procedure: <strong>array-list-clear!</strong> <em>array-list</em></dt> -<dd><p>Remove all items from <var>array-list</var>. -</p></dd></dl> - -<dl> -<dt id="index-array_002dlist_002dfor_002deach">Procedure: <strong>array-list-for-each</strong> <em>proc array-list</em></dt> -<dd><p>Apply <var>proc</var> with each item in <var>array-list</var>. -</p></dd></dl> - -<dl> -<dt id="index-array_002dlist_002dfold">Procedure: <strong>array-list-fold</strong> <em>proc init array-list</em></dt> -<dd><p>Apply <var>proc</var> to all items in <var>array-list</var> to build a result and -return that result. <var>init</var> is the initial result. If there are -no objects in the vicinity of <var>rect</var>, just <var>init</var> is returned. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Queues.html" accesskey="n" rel="next">Queues</a>, Up: <a href="Data-Structures.html" accesskey="u" rel="up">Data Structures</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Audio-Files.html b/manuals/chickadee/Audio-Files.html deleted file mode 100644 index a4d7994..0000000 --- a/manuals/chickadee/Audio-Files.html +++ /dev/null @@ -1,221 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Audio Files (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Audio Files (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Audio Files (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Audio.html" rel="up" title="Audio" /> -<link href="Sources.html" rel="next" title="Sources" /> -<link href="Audio.html" rel="prev" title="Audio" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Audio-Files"></span><div class="header"> -<p> -Next: <a href="Sources.html" accesskey="n" rel="next">Sources</a>, Up: <a href="Audio.html" accesskey="u" rel="up">Audio</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Audio-Files-1"></span><h4 class="subsection">5.4.1 Audio Files</h4> - -<p>Sound data is represented by a special <code><audio></code> data type that -stores not only the audio samples themselves, but metadata such as -sample rate, number of channels, and how many bits are used for each -sample. -</p> -<dl> -<dt id="index-load_002daudio">Procedure: <strong>load-audio</strong> <em>file-name [#:mode <code>static</code>]</em></dt> -<dd><p>Load audio within <var>file-name</var>. The following file formats are -currently supported: -</p> -<ul> -<li> WAV -</li><li> MP3 -</li><li> Ogg Vorbis -</li></ul> - -<p>Audio files can be loaded in two different ways, as indicated by -<var>mode</var>: -</p> -<ul> -<li> static: -Load the entire audio file into memory. -</li><li> stream: -Load chunks of the audio file as needed. -</li></ul> - -<p>Generally speaking, sound effects don’t take up much space and should -be loaded statically, but music files are much larger and should use -streaming. Static loading is the default. -</p></dd></dl> - -<dl> -<dt id="index-audio_003f">Procedure: <strong>audio?</strong> <em><var>obj</var></em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is an audio object. -</p></dd></dl> - -<dl> -<dt id="index-streaming_002daudio_003f">Procedure: <strong>streaming-audio?</strong> <em><var>audio</var></em></dt> -<dd><p>Return <code>#t</code> if <var>audio</var> uses stream loading. -</p></dd></dl> - -<dl> -<dt id="index-static_002daudio_003f">Procedure: <strong>static-audio?</strong></dt> -<dd><p>Return <code>#t</code> if <var>audio</var> uses static loading. -</p></dd></dl> - -<dl> -<dt id="index-audio_002dmode">Procedure: <strong>audio-mode</strong> <em>audio</em></dt> -<dd><p>Return the loading mode for <var>audio</var>, either <code>static</code> or -<code>stream</code>. -</p></dd></dl> - -<dl> -<dt id="index-audio_002dduration">Procedure: <strong>audio-duration</strong> <em>audio</em></dt> -<dd><p>Return the duration of <var>audio</var> in seconds. -</p></dd></dl> - -<dl> -<dt id="index-audio_002dbits_002dper_002dsample">Procedure: <strong>audio-bits-per-sample</strong> <em>audio</em></dt> -<dd><p>Return the number of bits per sample in <var>audio</var>. -</p></dd></dl> - -<dl> -<dt id="index-audio_002dchannels">Procedure: <strong>audio-channels</strong> <em>audio</em></dt> -<dd><p>Return the number of channels in <var>audio</var>. -</p></dd></dl> - -<dl> -<dt id="index-audio_002dsample_002drate">Procedure: <strong>audio-sample-rate</strong> <em>audio</em></dt> -<dd><p>Return the sample rate of <var>audio</var>. -</p></dd></dl> - -<dl> -<dt id="index-audio_002dplay">Procedure: <strong>audio-play</strong> <em>audio [#:pitch 1.0] [#:volume 1.0] [#:min-volume 0.0] [#:max-volume 1.0] [#:max-distance] [#:reference-distance 0.0] [#:rolloff-factor 1.0] [#:cone-outer-volume 0.0] [#:cone-inner-angle 0.0] [#:cone-outer-angle] [#:position <code>(vec3 0.0 0.0 0.0)</code>] [#:velocity <code>(vec3 0.0 0.0 0.0)</code>] [#:direction <code>(vec3 0.0 0.0 0.0)</code>] [#:relative? <code>#f</code>]</em></dt> -<dd> -<p>Play <var>audio</var>. There are many, many knobs to tweak that will -affect the sound that comes out of the player’s speakers.: -</p> -<ul> -<li> <var>pitch</var>: -Pitch multiplier. The default value of 1.0 means no change in pitch. -</li><li> <var>volume</var>: -Volume multiplier. The default value of 1.0 means no change in volume. -</li><li> <var>min-volume</var>: -Minimum volume. -</li><li> <var>max-volume</var>: -Maximum volume. -</li><li> <var>max-distance</var>: -Used with the inverse clamped distance model (the default model) to -set the distance where there will no longer be any attenuation of the -source. -</li><li> <var>reference-distance</var>: -The distance where the volume for the audio would drop by half (before -being influenced by the rolloff factor or maximum distance.) -</li><li> <var>rolloff-factor</var>: -For slowing down or speeding up the rate of attenuation. The default -of 1.0 means no attenuation adjustment is made. -</li><li> <var>cone-outer-volume</var>: -The volume when outside the oriented cone. -</li><li> <var>cone-inner-angle</var>: -Inner angle of the sound cone, in radians. The default value is 0. -</li><li> <var>cone-outer-angle</var>: -Outer angle of the sound cone, in radians. The default value is 2pi -radians, or 360 degrees. -</li><li> <var>position</var>: -The source of the sound emitter in 3D space. -</li><li> <var>velocity</var>: -The velocity of the sound emitter in 3D space. -</li><li> <var>direction</var>: -The direction of the sound emitter in 3D space. -</li><li> <var>relative?</var>: -A flag that determines whether the position is in absolute coordinates -or relative to the listener’s location. Absolute coordinates are used -by default. -</li></ul> - -<p>For games with basic sound needs (that is to say they don’t need 3D -sound modeling), the only things that really matter are <var>volume</var> -and <var>pitch</var>. -</p> -</dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Sources.html" accesskey="n" rel="next">Sources</a>, Up: <a href="Audio.html" accesskey="u" rel="up">Audio</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Audio.html b/manuals/chickadee/Audio.html deleted file mode 100644 index 8f167d0..0000000 --- a/manuals/chickadee/Audio.html +++ /dev/null @@ -1,123 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Audio (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Audio (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Audio (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="API-Reference.html" rel="up" title="API Reference" /> -<link href="Audio-Files.html" rel="next" title="Audio Files" /> -<link href="Rendering-Engine.html" rel="prev" title="Rendering Engine" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Audio"></span><div class="header"> -<p> -Next: <a href="Scripting.html" accesskey="n" rel="next">Scripting</a>, Previous: <a href="Graphics.html" accesskey="p" rel="prev">Graphics</a>, Up: <a href="API-Reference.html" accesskey="u" rel="up">API Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Audio-1"></span><h3 class="section">5.4 Audio</h3> - -<p>A game isn’t complete without sound. Most games play some cool -background music to set the mood and have many sound effects to play -when events happen. The <code>(chickadee audio)</code> module provides a -robust audio API backed by the OpenAL 3D audio system. -</p> -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="Audio-Files.html" accesskey="1">Audio Files</a></td><td> </td><td align="left" valign="top">Not audiophiles. -</td></tr> -<tr><td align="left" valign="top">• <a href="Sources.html" accesskey="2">Sources</a></td><td> </td><td align="left" valign="top">Audio emitters. -</td></tr> -<tr><td align="left" valign="top">• <a href="The-Listener.html" accesskey="3">The Listener</a></td><td> </td><td align="left" valign="top">The player’s ears. -</td></tr> -<tr><td align="left" valign="top">• <a href="The-Environment.html" accesskey="4">The Environment</a></td><td> </td><td align="left" valign="top">Global sound model settings. -</td></tr> -</table> - -<p>The basics of playing audio are very simple. Just load an audio file -in the load hook (or anywhere else once the game loop is running) and -play it! -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">sample</span> <span class="syntax-open">(</span><span class="syntax-symbol">load-audio</span> <span class="syntax-string">"neat-sound-effect.wav"</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-symbol">audio-play</span> <span class="syntax-symbol">sample</span><span class="syntax-close">)</span> -</pre></div> - -<p>For more advanced usage, check out the full API reference in the -following sections. -</p> - - - -</body> -</html> diff --git a/manuals/chickadee/Basics.html b/manuals/chickadee/Basics.html deleted file mode 100644 index c968a8c..0000000 --- a/manuals/chickadee/Basics.html +++ /dev/null @@ -1,140 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Basics (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Basics (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Basics (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Math.html" rel="up" title="Math" /> -<link href="Vectors.html" rel="next" title="Vectors" /> -<link href="Math.html" rel="prev" title="Math" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Basics"></span><div class="header"> -<p> -Next: <a href="Vectors.html" accesskey="n" rel="next">Vectors</a>, Up: <a href="Math.html" accesskey="u" rel="up">Math</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Basics-1"></span><h4 class="subsection">5.2.1 Basics</h4> - -<dl> -<dt id="index-pi">Variable: <strong>pi</strong></dt> -<dd><p>An essential constant for all trigonometry. Pi is the ratio of a -circle’s circumferences to its diameter. Since pi is an irrational -number, the <var>pi</var> in Chickadee is a mere floating point -approximation that is “good enough.” -</p></dd></dl> - -<dl> -<dt id="index-pi_002f2">Variable: <strong>pi/2</strong></dt> -<dd><p>Half of <var>pi</var>. -</p></dd></dl> - -<dl> -<dt id="index-tau">Variable: <strong>tau</strong></dt> -<dd><p>Twice <var>pi</var>. -</p></dd></dl> - -<dl> -<dt id="index-cotan">Procedure: <strong>cotan</strong> <em>z</em></dt> -<dd><p>Return the cotangent of <var>z</var>. -</p></dd></dl> - -<dl> -<dt id="index-clamp">Procedure: <strong>clamp</strong> <em>min max x</em></dt> -<dd><p>Restrict <var>x</var> to the inclusive range defined by <var>min</var> and -<var>max</var>. This procedure assumes that <var>min</var> is actually less -than <var>max</var>. -</p></dd></dl> - -<dl> -<dt id="index-lerp">Procedure: <strong>lerp</strong> <em>start end alpha</em></dt> -<dd><p>Linearly interpolate the numbers <var>start</var> and <var>end</var> using the -factor <var>alpha</var>, a number in the range [0, 1]. -</p></dd></dl> - -<dl> -<dt id="index-degrees_002d_003eradians">Procedure: <strong>degrees->radians</strong> <em>degrees</em></dt> -<dd><p>Convert <var>degrees</var> to radians. -</p></dd></dl> - -<dl> -<dt id="index-radians_002d_003edegrees">Procedure: <strong>radians->degrees</strong> <em>radians</em></dt> -<dd><p>Convert <var>radians</var> to degrees. -</p></dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/Bezier-Curves.html b/manuals/chickadee/Bezier-Curves.html deleted file mode 100644 index 8935b0f..0000000 --- a/manuals/chickadee/Bezier-Curves.html +++ /dev/null @@ -1,161 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Bezier Curves (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Bezier Curves (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Bezier Curves (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Math.html" rel="up" title="Math" /> -<link href="Graphics.html" rel="next" title="Graphics" /> -<link href="Easings.html" rel="prev" title="Easings" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Bezier-Curves"></span><div class="header"> -<p> -Previous: <a href="Easings.html" accesskey="p" rel="prev">Easings</a>, Up: <a href="Math.html" accesskey="u" rel="up">Math</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Bezier-Curves-1"></span><h4 class="subsection">5.2.7 Bezier Curves</h4> - -<p>The <code>(chickadee math bezier)</code> module provides an API for -describing cubic Bezier curves in 2D space. These curves are notably -used in font description, vector graphics programs, and when it comes -to games: path building. With Bezier curves, it’s somewhat easy to -create a smooth looking path for an enemy to move along, for example. -Bezier curves become particularly interesting when they are chained -together to form a Bezier “path”, where the end point of one curve -becomes the starting point of the next. -</p> -<dl> -<dt id="index-make_002dbezier_002dcurve">Procedure: <strong>make-bezier-curve</strong> <em>p0 p1 p2 p3</em></dt> -<dd><p>Return a new Bezier curve object whose starting point is <var>p0</var>, -ending point is <var>p3</var>, and control points are <var>p1</var> and -<var>p2</var>. All points are 2D vectors. -</p></dd></dl> - -<dl> -<dt id="index-bezier_002dcurve_003f">Procedure: <strong>bezier-curve?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a Bezier curve. -</p></dd></dl> - -<dl> -<dt id="index-bezier_002dcurve_002dp0">Procedure: <strong>bezier-curve-p0</strong> <em>bezier</em></dt> -<dd><p>Return the starting point of <var>bezier</var>. -</p></dd></dl> - -<dl> -<dt id="index-bezier_002dcurve_002dp1">Procedure: <strong>bezier-curve-p1</strong> <em>bezier</em></dt> -<dd><p>Return the first control point of <var>bezier</var>. -</p></dd></dl> - -<dl> -<dt id="index-bezier_002dcurve_002dp2">Procedure: <strong>bezier-curve-p2</strong> <em>bezier</em></dt> -<dd><p>Return the second control point of <var>bezier</var>. -</p></dd></dl> - -<dl> -<dt id="index-bezier_002dcurve_002dp3">Procedure: <strong>bezier-curve-p3</strong> <em>bezier</em></dt> -<dd><p>Return the end point of <var>bezier</var>. -</p></dd></dl> - -<dl> -<dt id="index-bezier_002dpath">Procedure: <strong>bezier-path</strong> <em>. control-points</em></dt> -<dd><p>Return a list of connected bezier curves defined by -<var>control-points</var>. The first curve is defined by the first 4 -arguments and every additional curve thereafter requires 3 additional -arguments. -</p></dd></dl> - -<dl> -<dt id="index-bezier_002dcurve_002dpoint_002dat">Procedure: <strong>bezier-curve-point-at</strong> <em>bezier t</em></dt> -<dd><p>Return the coordinates for <var>bezier</var> at <var>t</var> (a value in the -range [0, 1] representing how far from the start of the curve to -check) as a 2D vector. -</p></dd></dl> - -<dl> -<dt id="index-bezier_002dcurve_002dpoint_002dat_0021">Procedure: <strong>bezier-curve-point-at!</strong> <em>dest bezier t</em></dt> -<dd><p>Modify the 2D vector <var>dest</var> in-place to contain the coordinates -for <var>bezier</var> at <var>t</var>. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Previous: <a href="Easings.html" accesskey="p" rel="prev">Easings</a>, Up: <a href="Math.html" accesskey="u" rel="up">Math</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Buffers.html b/manuals/chickadee/Buffers.html deleted file mode 100644 index ac5fb02..0000000 --- a/manuals/chickadee/Buffers.html +++ /dev/null @@ -1,482 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Buffers (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Buffers (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Buffers (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Shaders.html" rel="next" title="Shaders" /> -<link href="Meshes.html" rel="prev" title="Meshes" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Buffers"></span><div class="header"> -<p> -Next: <a href="Shaders.html" accesskey="n" rel="next">Shaders</a>, Previous: <a href="Meshes.html" accesskey="p" rel="prev">Meshes</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Buffers-1"></span><h4 class="subsection">5.3.12 Buffers</h4> - -<p>Alright, let’s brush aside all of those pretty high level abstractions -and discuss what is going on under the hood. The GPU exists as a -discrete piece of hardware separate from the CPU. In order to make it -draw things, we must ship lots of data out of our memory space and -into the GPU. The <code>(chickadee graphics buffer</code>) module provides an -API for manipulating GPU buffers. -</p> -<p>In OpenGL terminology, a chunk of data allocated on the GPU is a -“vertex buffer object” or VBO. For example, here is a bytevector -that could be transformed into a GPU buffer that packs together vertex -position and texture coordinates: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">use-modules</span> <span class="syntax-open">(</span><span class="syntax-symbol">chickadee</span> <span class="syntax-symbol">graphics</span> <span class="syntax-symbol">buffer</span><span class="syntax-close">)</span> <span class="syntax-open">(</span><span class="syntax-symbol">srfi</span> <span class="syntax-symbol">srfi-4</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">data</span> - <span class="syntax-open">(</span><span class="syntax-symbol">f32vector</span> <span class="syntax-symbol">-8.0</span> <span class="syntax-symbol">-8.0</span> <span class="syntax-comment">; 2D vertex -</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">0.0</span> <span class="syntax-comment">; 2D texture coordinate -</span> <span class="syntax-symbol">8.0</span> <span class="syntax-symbol">-8.0</span> <span class="syntax-comment">; 2D vertex -</span> <span class="syntax-symbol">1.0</span> <span class="syntax-symbol">0.0</span> <span class="syntax-comment">; 2D texture coordinate -</span> <span class="syntax-symbol">8.0</span> <span class="syntax-symbol">8.0</span> <span class="syntax-comment">; 2D vertex -</span> <span class="syntax-symbol">1.0</span> <span class="syntax-symbol">1.0</span> <span class="syntax-comment">; 2D texture coordinate -</span> <span class="syntax-symbol">-8.0</span> <span class="syntax-symbol">8.0</span> <span class="syntax-comment">; 2D vertex -</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">1.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> <span class="syntax-comment">; 2D texture coordinate -</span></pre></div> - -<p>This data represents a textured 16x16 square centered on the -origin. To send this data to the GPU, the <code>make-buffer</code> procedure -is needed: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">buffer</span> <span class="syntax-open">(</span><span class="syntax-symbol">make-buffer</span> <span class="syntax-symbol">data</span> <span class="syntax-keyword">#:stride</span> <span class="syntax-symbol">16</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>The <code>#:stride</code> keyword argument indicates how many bytes make up -each element of the buffer. In this case, there are 4 floats per -element: 2 for the vertex, and 2 for the texture coordinate. A 32-bit -float is 4 bytes in length, so the buffer’s stride is 16. -</p> -<p>Within a VBO, one or more “attributes”, as OpenGL calls them, may be -present. Attributes are subregions within the buffer that have a -particular data type. In this case, there are two attributes packed -into the buffer. To define vertex attributes, the -<code>make-vertex-attribute</code> procedure is needed: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">vertices</span> - <span class="syntax-open">(</span><span class="syntax-symbol">make-vertex-attribute</span> <span class="syntax-keyword">#:buffer</span> <span class="syntax-symbol">buffer</span> - <span class="syntax-keyword">#:type</span> <span class="syntax-symbol">'vec2</span> - <span class="syntax-keyword">#:component-type</span> <span class="syntax-symbol">'float</span> - <span class="syntax-keyword">#:length</span> <span class="syntax-symbol">4</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">texcoords</span> - <span class="syntax-open">(</span><span class="syntax-symbol">make-vertex-attribute</span> <span class="syntax-keyword">#:buffer</span> <span class="syntax-symbol">buffer</span> - <span class="syntax-keyword">#:type</span> <span class="syntax-symbol">'vec2</span> - <span class="syntax-keyword">#:component-type</span> <span class="syntax-symbol">'float</span> - <span class="syntax-keyword">#:length</span> <span class="syntax-symbol">4</span> - <span class="syntax-keyword">#:offset</span> <span class="syntax-symbol">8</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>To render a square, the GPU needs to draw two triangles, which means -we need 6 vertices in total. However, the above buffer only contains -data for 4 vertices. This is because there are only 4 unique vertices -for a square, but 2 of them must be repeated for each triangle. To -work with deduplicated vertex data, an “index buffer” must be -created. -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">index-buffer</span> - <span class="syntax-open">(</span><span class="syntax-symbol">make-buffer</span> <span class="syntax-open">(</span><span class="syntax-symbol">u32vector</span> <span class="syntax-symbol">0</span> <span class="syntax-symbol">3</span> <span class="syntax-symbol">2</span> <span class="syntax-symbol">0</span> <span class="syntax-symbol">2</span> <span class="syntax-symbol">1</span><span class="syntax-close">)</span> - <span class="syntax-keyword">#:target</span> <span class="syntax-symbol">'index</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">indices</span> - <span class="syntax-open">(</span><span class="syntax-symbol">make-vertex-attribute</span> <span class="syntax-keyword">#:type</span> <span class="syntax-symbol">'scalar</span> - <span class="syntax-keyword">#:component-type</span> <span class="syntax-symbol">'unsigned-int</span> - <span class="syntax-keyword">#:buffer</span> <span class="syntax-symbol">index-buffer</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>Note the use of the <code>#:target</code> keyword argument. It is required -because the GPU treats index data in a special way and must be told -which data is index data. -</p> -<p>Now that the vertex attributes have been created, all that’s left is -to bind them all together in a vertex array. Vertex arrays associate -each vertex attribute with an attribute index on the GPU. The indices -that are chosen must correspond with the indices that the shader -(see <a href="Shaders.html">Shaders</a>) expects for each attribute. -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">vertex-array</span> - <span class="syntax-open">(</span><span class="syntax-symbol">make-vertex-array</span> <span class="syntax-keyword">#:indices</span> <span class="syntax-symbol">indices</span> - <span class="syntax-keyword">#:attributes</span> <span class="syntax-symbol">`</span><span class="syntax-open">(</span><span class="syntax-open">(</span><span class="syntax-symbol">0</span> <span class="syntax-symbol">.</span> <span class="syntax-symbol">,vertices</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">1</span> <span class="syntax-symbol">.</span> <span class="syntax-symbol">,texcoords</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>With the vertex array created, the GPU is now fully aware of how to -interpret the data that it has been given in the original buffer. -Actually rendering this square is left as an exercise to the reader. -See the <a href="Shaders.html">Shaders</a> section and the <code>shader-apply</code> procedure in -<a href="Rendering-Engine.html">Rendering Engine</a> for the remaining pieces of a successful draw -call. Additionally, consider reading the source code for sprites, -shapes, or particles to see GPU buffers in action. -</p> -<p>Without further ado, the API reference: -</p> -<dl> -<dt id="index-make_002dbuffer">Procedure: <strong>make-buffer</strong> <em>data [#:name "anonymous"] [#:length] [#:offset 0] [#:stride 0] [#:target <code>vertex</code>] [#:usage <code>static</code>]</em></dt> -<dd> -<p>Upload <var>data</var>, a bytevector, to the GPU. By default, the entire -bytevector is uploaded. A subset of the data may be uploaded by -specifying the <var>offset</var>, the index of the first byte to be -uploaded, and <var>length</var>, the number of bytes to upload. -</p> -<p>If <var>data</var> is <code>#f</code>, allocate <var>length</var> bytes of fresh GPU -memory instead. -</p> -<p><var>target</var> and <var>usage</var> are hints that tell the GPU how the -buffer is intended to be used. -</p> -<p><var>target</var> may be: -</p> -<ul> -<li> <code>vertex</code> -Vertex attribute data. - -</li><li> <code>index</code> -Index buffer data. - -</li></ul> - -<p><var>usage</var> may be: -</p> -<ul> -<li> <code>static</code> -The buffer data will not be modified after creation. - -</li><li> <code>stream</code> -The buffer data will be modified frequently. - -</li></ul> - -<p><var>name</var> is simply an arbitrary string for debugging purposes that -is never sent to the GPU. -</p></dd></dl> - -<dl> -<dt id="index-buffer_003f">Procedure: <strong>buffer?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a GPU buffer. -</p></dd></dl> - -<dl> -<dt id="index-index_002dbuffer_003f">Procedure: <strong>index-buffer?</strong> <em>buffer</em></dt> -<dd><p>Return <code>#t</code> if <var>buffer</var> is an index buffer. -</p></dd></dl> - -<dl> -<dt id="index-null_002dbuffer">Variable: <strong>null-buffer</strong></dt> -<dd><p>Represents the absence of a buffer. -</p></dd></dl> - -<dl> -<dt id="index-buffer_002dname">Procedure: <strong>buffer-name</strong> <em>buffer</em></dt> -<dd><p>Return the name of <var>buffer</var>. -</p></dd></dl> - -<dl> -<dt id="index-buffer_002dlength">Procedure: <strong>buffer-length</strong> <em>buffer</em></dt> -<dd><p>Return the length of <var>buffer</var>. -</p></dd></dl> - -<dl> -<dt id="index-buffer_002dstride">Procedure: <strong>buffer-stride</strong> <em>buffer</em></dt> -<dd><p>Return the amount of space, in bytes, between each element in -<var>buffer</var>. -</p></dd></dl> - -<dl> -<dt id="index-buffer_002dtarget">Procedure: <strong>buffer-target</strong> <em>buffer</em></dt> -<dd><p>Return the the intended usage of <var>buffer</var>, either <code>vertex</code> or -<code>index</code>. -</p></dd></dl> - -<dl> -<dt id="index-buffer_002dusage">Procedure: <strong>buffer-usage</strong> <em>buffer</em></dt> -<dd><p>Return the intended usage of <var>buffer</var>, either <code>static</code> for -buffer data that will not change once sent to the GPU, or -<code>stream</code> for buffer data that will be frequently updated from the -client-side. -</p></dd></dl> - -<dl> -<dt id="index-buffer_002ddata">Procedure: <strong>buffer-data</strong> <em>buffer</em></dt> -<dd><p>Return a bytevector containing all the data within <var>buffer</var>. If -<var>buffer</var> has not been mapped (see <code>with-mapped-buffer</code>) then -this procedure will return <code>#f</code>. -</p></dd></dl> - -<dl> -<dt id="index-with_002dmapped_002dbuffer">Syntax: <strong>with-mapped-buffer</strong> <em>buffer body …</em></dt> -<dd><p>Evaluate <var>body</var> in the context of <var>buffer</var> having its data -synced from GPU memory to RAM. In this context, <code>buffer-data</code> -will return a bytevector of all the data stored in <var>buffer</var>. When -program execution exits this form, the data (including any -modifications) is synced back to the GPU. -</p> -<dl> -<dt id="index-current_002dbuffer">Procedure: <strong>current-buffer</strong></dt> -<dd><p>Return the current buffer. -</p></dd></dl> - -<dl> -<dt id="index-g_003abuffer">Variable: <strong>g:buffer</strong></dt> -<dd><p>Render state for buffers (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - -<p>This form is useful for streaming buffers that need to update their -contents dynamically, such as a sprite batch. -</p></dd></dl> - -<dl> -<dt id="index-make_002dvertex_002dattribute">Procedure: <strong>make-vertex-attribute</strong> <em>#:buffer #:type #:component-type #:length [#:offset <code>0</code>] [#:divisor <code>1</code>] [#:name <code>"anonymous"</code>]</em></dt> -<dd> -<p>Return a new vertex attribute for <var>buffer</var> starting at byte index -<var>offset</var> of <var>length</var> elements, where each element is of -<var>type</var> and composed of <var>component-type</var> values. -</p> -<p>Valid values for <var>type</var> are: -</p> -<ul> -<li> <code>scalar</code> -single number - -</li><li> <code>vec2</code> -2D vector - -</li><li> <code>vec3</code> -3D vector - -</li><li> <code>vec4</code> -4D vector - -</li><li> <code>mat2</code> -2x2 matrix - -</li><li> <code>mat3</code> -3x3 matrix - -</li><li> <code>mat4</code> -4x4 matrix -</li></ul> - -<p>Valid values for <var>component-type</var> are: -</p> -<ul> -<li> <code>byte</code> -</li><li> <code>unsigned-byte</code> -</li><li> <code>short</code> -</li><li> <code>unsigned-short</code> -</li><li> <code>int</code> -</li><li> <code>unsigned-int</code> -</li><li> <code>float</code> -</li><li> <code>double</code> - -</li></ul> - -<p><var>divisor</var> is only needed for instanced rendering applications (see -<code>shader-apply/instanced</code> in <a href="Rendering-Engine.html">Rendering Engine</a>) and represents -how many instances each vertex element applies to. A divisor of 0 -means that a single element is used for every instance and is used for -the data being instanced. A divisor of 1 means that each element is -used for 1 instance. A divisor of 2 means that each element is used -for 2 instances, and so on. -</p></dd></dl> - -<dl> -<dt id="index-vertex_002dattribute_003f">Procedure: <strong>vertex-attribute?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a vertex attribute. -</p></dd></dl> - -<dl> -<dt id="index-vertex_002dattribute_002d_003ebuffer">Procedure: <strong>vertex-attribute->buffer</strong> <em>vertex-attribute</em></dt> -<dd><p>Return the buffer that <var>vertex-attribute</var> is using. -</p></dd></dl> - -<dl> -<dt id="index-vertex_002dattribute_002dname">Procedure: <strong>vertex-attribute-name</strong> <em>vertex-attribute</em></dt> -<dd><p>Return the name of <var>vertex-attribute</var>. -</p></dd></dl> - -<dl> -<dt id="index-vertex_002dattribute_002doffset">Procedure: <strong>vertex-attribute-offset</strong> <em>vertex-attribute</em></dt> -<dd><p>Return the byte offset of <var>vertex-attribute</var>. -</p></dd></dl> - -<dl> -<dt id="index-vertex_002dattribute_002dtype">Procedure: <strong>vertex-attribute-type</strong> <em>vertex-attribute</em></dt> -<dd><p>Return the data type of <var>vertex-attribute</var>. -</p></dd></dl> - -<dl> -<dt id="index-vertex_002dattribute_002dcomponent_002dtype">Procedure: <strong>vertex-attribute-component-type</strong> <em>vertex-attribute</em></dt> -<dd><p>Return the component data type of <var>vertex-attribute</var> -</p></dd></dl> - -<dl> -<dt id="index-vertex_002dattribute_002ddivisor">Procedure: <strong>vertex-attribute-divisor</strong> <em>vertex-attribute</em></dt> -<dd><p>Return the instance divisor for <var>vertex-attribute</var>. -</p></dd></dl> - -<dl> -<dt id="index-with_002dmapped_002dvertex_002dattribute">Syntax: <strong>with-mapped-vertex-attribute</strong> <em>vertex-attribute body …</em></dt> -<dd> -<p>Evaluate <var>body</var> in the context of <var>vertex-attribute</var> having -its data synced from GPU memory to RAM. See <code>with-mapped-buffer</code> -for more information. -</p></dd></dl> - -<dl> -<dt id="index-make_002dvertex_002darray">Procedure: <strong>make-vertex-array</strong> <em>#:indices #:attributes [#:mode <code>triangles</code>]</em></dt> -<dd> -<p>Return a new vertex array using the index data within the vertex -attributes <var>indices</var> and the vertex attribute data within -<var>attributes</var>. -</p> -<p><var>attributes</var> is an alist mapping shader attribute indices to -vertex attributes: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-symbol">`</span><span class="syntax-open">(</span><span class="syntax-open">(</span><span class="syntax-symbol">1</span> <span class="syntax-symbol">.</span> <span class="syntax-symbol">,vertex-attribute-a</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">2</span> <span class="syntax-symbol">.</span> <span class="syntax-symbol">,vertex-attribute-b</span><span class="syntax-close">)</span> - <span class="syntax-symbol">...</span><span class="syntax-close">)</span> -</pre></div> - -<p>By default, the vertex array is interpreted as containing a series of -triangles. If another primtive type is desired, the <var>mode</var> -keyword argument may be overridden. The following values are -supported: -</p> -<ul> -<li> <code>points</code> -</li><li> <code>lines</code> -</li><li> <code>line-loop</code> -</li><li> <code>line-strip</code> -</li><li> <code>triangles</code> -</li><li> <code>triangle-strip</code> -</li><li> <code>triangle-fan</code> -</li></ul> - -</dd></dl> - -<dl> -<dt id="index-null_002dvertex_002darray">Variable: <strong>null-vertex-array</strong></dt> -<dd><p>Represents the absence of a vertex array. -</p></dd></dl> - -<dl> -<dt id="index-vertex_002darray_003f">Procedure: <strong>vertex-array?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a vertex array. -</p></dd></dl> - -<dl> -<dt id="index-vertex_002darray_002dindices">Procedure: <strong>vertex-array-indices</strong> <em>vertex-array</em></dt> -<dd><p>Return the buffer view containing index data for <var>vertex-array</var>. -</p></dd></dl> - -<dl> -<dt id="index-vertex_002darray_002dattributes">Procedure: <strong>vertex-array-attributes</strong> <em>vertex-array</em></dt> -<dd><p>Return the attribute index -> buffer view mapping of vertex attribute -data for <var>vertex-array</var>. -</p></dd></dl> - -<dl> -<dt id="index-vertex_002darray_002dmode">Procedure: <strong>vertex-array-mode</strong> <em>vertex-array</em></dt> -<dd><p>Return the primitive rendering mode for <var>vertex-array</var>. -</p></dd></dl> - -<dl> -<dt id="index-current_002dvertex_002darray">Procedure: <strong>current-vertex-array</strong></dt> -<dd><p>Return the current vertex array. -</p></dd></dl> - -<dl> -<dt id="index-g_003avertex_002darray">Variable: <strong>g:vertex-array</strong></dt> -<dd><p>Render state for vertex arrays (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Shaders.html" accesskey="n" rel="next">Shaders</a>, Previous: <a href="Meshes.html" accesskey="p" rel="prev">Meshes</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Channels.html b/manuals/chickadee/Channels.html deleted file mode 100644 index 78f8564..0000000 --- a/manuals/chickadee/Channels.html +++ /dev/null @@ -1,157 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Channels (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Channels (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Channels (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Scripting.html" rel="up" title="Scripting" /> -<link href="Data-Structures.html" rel="next" title="Data Structures" /> -<link href="Tweening.html" rel="prev" title="Tweening" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Channels"></span><div class="header"> -<p> -Previous: <a href="Tweening.html" accesskey="p" rel="prev">Tweening</a>, Up: <a href="Scripting.html" accesskey="u" rel="up">Scripting</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Channels-1"></span><h4 class="subsection">5.5.4 Channels</h4> - -<p>Channels are a tool for communicating amongst different scripts. One -script can write a value to the channel and another can read from it. -Reading or writing to a channel suspends that script until there is -someone on the other end of the line to complete the transaction. -</p> -<p>Here’s a simplistic example: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">c</span> <span class="syntax-open">(</span><span class="syntax-symbol">make-channel</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-symbol">script</span> - <span class="syntax-open">(</span><span class="syntax-symbol">forever</span> - <span class="syntax-open">(</span><span class="syntax-special">let</span> <span class="syntax-open">(</span><span class="syntax-open">(</span><span class="syntax-symbol">item</span> <span class="syntax-open">(</span><span class="syntax-symbol">channel-get</span> <span class="syntax-symbol">c</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">pk</span> <span class="syntax-symbol">'got</span> <span class="syntax-symbol">item</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-symbol">script</span> - <span class="syntax-open">(</span><span class="syntax-symbol">channel-put</span> <span class="syntax-symbol">c</span> <span class="syntax-symbol">'sword</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">channel-put</span> <span class="syntax-symbol">c</span> <span class="syntax-symbol">'shield</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">channel-put</span> <span class="syntax-symbol">c</span> <span class="syntax-symbol">'potion</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<dl> -<dt id="index-make_002dchannel">Procedure: <strong>make-channel</strong></dt> -<dd><p>Return a new channel -</p></dd></dl> - -<dl> -<dt id="index-channel_003f">Procedure: <strong>channel?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a channel. -</p></dd></dl> - -<dl> -<dt id="index-channel_002dget">Procedure: <strong>channel-get</strong> <em>channel</em></dt> -<dd><p>Retrieve a value from <var>channel</var>. The current script suspends -until a value is available. -</p></dd></dl> - -<dl> -<dt id="index-channel_002dput">Procedure: <strong>channel-put</strong> <em>channel data</em></dt> -<dd><p>Send <var>data</var> to <var>channel</var>. The current script suspends until -another script is available to retrieve the value. -</p></dd></dl> - -<p>A low-level API also exists for using channels outside of a script via -callback procedures: -</p> -<dl> -<dt id="index-channel_002dget_0021">Procedure: <strong>channel-get!</strong> <em>channel proc</em></dt> -<dd><p>Asynchronously retrieve a value from <var>channel</var> and call <var>proc</var> -with that value. -</p></dd></dl> - -<dl> -<dt id="index-channel_002dput_0021">Procedure: <strong>channel-put!</strong> <em>channel data [thunk]</em></dt> -<dd><p>Asynchronously send <var>data</var> to <var>channel</var> and call <var>thunk</var> -after it has been received. -</p></dd></dl> - -<dl> -<dt id="index-channel_002dclear_0021">Procedure: <strong>channel-clear!</strong> <em>channel</em></dt> -<dd><p>Clear all messages and scripts awaiting messages in <var>channel</var>. -</p></dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/Colors.html b/manuals/chickadee/Colors.html deleted file mode 100644 index 4a361b1..0000000 --- a/manuals/chickadee/Colors.html +++ /dev/null @@ -1,377 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Colors (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Colors (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Colors (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Textures.html" rel="next" title="Textures" /> -<link href="Graphics.html" rel="prev" title="Graphics" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Colors"></span><div class="header"> -<p> -Next: <a href="Textures.html" accesskey="n" rel="next">Textures</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Colors-1"></span><h4 class="subsection">5.3.1 Colors</h4> - -<p>Merriam-Webster defines color as “a phenomenon of light (such as red, -brown, pink, or gray) or visual perception that enables one to -differentiate otherwise identical objects.” In this essay, I -will… -</p> -<p>Okay, okay. We all know what colors are. Chickadee provides a data -type to represent color and some convenient procedures to work with -them in the <code>(chickadee graphics color)</code> module. Colors are made -up of four components, or channels: red, green, blue, and alpha -(transparency.) Each of these values is expressed as a uniform -floating point value in the range [0, 1]. 0 means that color channel -is unrepresented in the resulting color, whereas 1 means that color -channel is at full intensity. -</p> -<p>Making a color object is easy, and there’s a few ways to do it -depending on what’s most convenient. The first is <code>make-color</code>, -where you specify each channel exactly as described above. This is -fully opaque magenta: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">make-color</span> <span class="syntax-symbol">1.0</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">1.0</span> <span class="syntax-symbol">1.0</span><span class="syntax-close">)</span> -</pre></div> - -<p>Many people are used to representing colors as 6 or 8 digit -hexadecimal numbers, so Chickadee also allows that. Here’s magenta, -again: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">rgba</span> <span class="syntax-symbol">#xFF00FFFF</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-symbol">rgb</span> <span class="syntax-symbol">#xFF00FF</span><span class="syntax-close">)</span> <span class="syntax-comment">; equivalent to the above -</span></pre></div> - -<dl> -<dt id="index-make_002dcolor">Procedure: <strong>make-color</strong> <em>r g b a</em></dt> -<dd><p>Return a new color object with a red value of <var>r</var>, a green value -of <var>g</var>, a blue value of <var>b</var>, and an alpha (transparency) value -of <var>a</var>. All values are clamped to the range [0, 1]. -</p></dd></dl> - -<dl> -<dt id="index-rgba">Procedure: <strong>rgba</strong> <em>color-code</em></dt> -<dd><p>Return a new color object using the values of the first 32 bits of -<var>color-code</var>. Each channel occupies 8 bits. Starting from the -most significant bit, red is first, followed by green, then blue, then -alpha. Color codes are often represented as 6 or 8 digit hexadecimal -numbers in various other programs. -</p></dd></dl> - -<dl> -<dt id="index-rgb">Procedure: <strong>rgb</strong> <em>color-code</em></dt> -<dd><p>Like <code>rgba</code>, but <var>color-code</var> is a 24 bit code with no alpha -channel. -</p></dd></dl> - -<dl> -<dt id="index-color_003f">Procedure: <strong>color?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a color object. -</p></dd></dl> - -<dl> -<dt id="index-color_002dr">Procedure: <strong>color-r</strong> <em>color</em></dt> -<dd><p>Return the red channel of <var>color</var>. -</p></dd></dl> - -<dl> -<dt id="index-color_002dg">Procedure: <strong>color-g</strong> <em>color</em></dt> -<dd><p>Return the green channel of <var>color</var>. -</p></dd></dl> - -<dl> -<dt id="index-color_002db">Procedure: <strong>color-b</strong> <em>color</em></dt> -<dd><p>Return the blue channel of <var>color</var>. -</p></dd></dl> - -<dl> -<dt id="index-color_002da">Procedure: <strong>color-a</strong> <em>color</em></dt> -<dd><p>Return the alpha channel of <var>color</var>. -</p></dd></dl> - -<dl> -<dt id="index-transparency">Procedure: <strong>transparency</strong> <em>alpha</em></dt> -<dd><p>Return a new color that is white (RGB channels set to 1) with an alpha -channel value of <var>alpha</var>. This can be useful for creating a color -that can be multiplied against another color to make it more -transparent. -</p></dd></dl> - -<dl> -<dt id="index-string_002d_003ecolor">Procedure: <strong>string->color</strong> <em>s</em></dt> -<dd><p>Convert the hexadecimal color code in the string <var>s</var> to a color -object. The following string formats are supported: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">string->color</span> <span class="syntax-string">"#FF00FFFF"</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-symbol">string->color</span> <span class="syntax-string">"FF00FFFF"</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-symbol">string->color</span> <span class="syntax-string">"#FF00FF"</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-symbol">string->color</span> <span class="syntax-string">"FF00FF"</span><span class="syntax-close">)</span> -</pre></div> - -</dd></dl> - -<dl> -<dt id="index-color_002a">Procedure: <strong>color*</strong> <em>a b</em></dt> -<dd><p>Multiply the color <var>a</var> with the color or number <var>b</var> and return -a new color with the result. -</p></dd></dl> - -<dl> -<dt id="index-color_002b">Procedure: <strong>color+</strong> <em>a b</em></dt> -<dd><p>Add the color <var>a</var> to the color <var>b</var> and return a new color with -the result. -</p></dd></dl> - -<dl> -<dt id="index-color_002d">Procedure: <strong>color-</strong> <em>a b</em></dt> -<dd><p>Subtract the color <var>b</var> from the color <var>a</var> and return a new -color with the result. -</p></dd></dl> - -<dl> -<dt id="index-color_002dinverse">Procedure: <strong>color-inverse</strong> <em>color</em></dt> -<dd><p>Invert the red, green, and blue channels of <var>color</var> and return a -new color with the result. -</p></dd></dl> - -<dl> -<dt id="index-color_002dlerp">Procedure: <strong>color-lerp</strong> <em>start end alpha</em></dt> -<dd><p>Linearly interpolate the colors <var>start</var> and <var>end</var> using the -factor <var>alpha</var>, a number in the range [0, 1]. -</p></dd></dl> - -<span id="Stock-Colors"></span><h4 class="subsubsection">5.3.1.1 Stock Colors</h4> - -<p>For convenience, Chickadee comes with some basic colors predefined: -</p> -<dl> -<dt id="index-white">Variable: <strong>white</strong></dt> -</dl> - -<dl> -<dt id="index-black">Variable: <strong>black</strong></dt> -</dl> - -<dl> -<dt id="index-red">Variable: <strong>red</strong></dt> -</dl> - -<dl> -<dt id="index-green">Variable: <strong>green</strong></dt> -</dl> - -<dl> -<dt id="index-blue">Variable: <strong>blue</strong></dt> -</dl> - -<dl> -<dt id="index-yellow">Variable: <strong>yellow</strong></dt> -</dl> - -<dl> -<dt id="index-magenta">Variable: <strong>magenta</strong></dt> -</dl> - -<dl> -<dt id="index-cyan">Variable: <strong>cyan</strong></dt> -</dl> - -<p>For fun, there are also predefined colors for the classic -<a href="https://en.wikipedia.org/wiki/Tango_Desktop_Project#Palette">Tango color palette</a>. -</p> -<dl> -<dt id="index-tango_002dlight_002dbutter">Variable: <strong>tango-light-butter</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dbutter">Variable: <strong>tango-butter</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002ddark_002dbutter">Variable: <strong>tango-dark-butter</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dlight_002dorange">Variable: <strong>tango-light-orange</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dorange">Variable: <strong>tango-orange</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002ddark_002dorange">Variable: <strong>tango-dark-orange</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dlight_002dchocolate">Variable: <strong>tango-light-chocolate</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dchocolate">Variable: <strong>tango-chocolate</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002ddark_002dchocolate">Variable: <strong>tango-dark-chocolate</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dlight_002dchameleon">Variable: <strong>tango-light-chameleon</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dchameleon">Variable: <strong>tango-chameleon</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002ddark_002dchameleon">Variable: <strong>tango-dark-chameleon</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dlight_002dsky_002dblue">Variable: <strong>tango-light-sky-blue</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dsky_002dblue">Variable: <strong>tango-sky-blue</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002ddark_002dsky_002dblue">Variable: <strong>tango-dark-sky-blue</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dlight_002dplum">Variable: <strong>tango-light-plum</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dplum">Variable: <strong>tango-plum</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002ddark_002dplum">Variable: <strong>tango-dark-plum</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dlight_002dscarlet_002dred">Variable: <strong>tango-light-scarlet-red</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002dscarlet_002dred">Variable: <strong>tango-scarlet-red</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002ddark_002dscarlet_002dred">Variable: <strong>tango-dark-scarlet-red</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002daluminium_002d1">Variable: <strong>tango-aluminium-1</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002daluminium_002d2">Variable: <strong>tango-aluminium-2</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002daluminium_002d3">Variable: <strong>tango-aluminium-3</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002daluminium_002d4">Variable: <strong>tango-aluminium-4</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002daluminium_002d5">Variable: <strong>tango-aluminium-5</strong></dt> -</dl> - -<dl> -<dt id="index-tango_002daluminium_002d6">Variable: <strong>tango-aluminium-6</strong></dt> -</dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Textures.html" accesskey="n" rel="next">Textures</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Command-Line-Interface.html b/manuals/chickadee/Command-Line-Interface.html deleted file mode 100644 index 01d2e90..0000000 --- a/manuals/chickadee/Command-Line-Interface.html +++ /dev/null @@ -1,104 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Command Line Interface (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Command Line Interface (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Command Line Interface (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="index.html" rel="up" title="Top" /> -<link href="Invoking-chickadee-play.html" rel="next" title="Invoking chickadee play" /> -<link href="Getting-Started.html" rel="prev" title="Getting Started" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Command-Line-Interface"></span><div class="header"> -<p> -Next: <a href="Live-Coding.html" accesskey="n" rel="next">Live Coding</a>, Previous: <a href="Getting-Started.html" accesskey="p" rel="prev">Getting Started</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Command-Line-Interface-1"></span><h2 class="chapter">3 Command Line Interface</h2> - -<p>While Chickadee is a library at heart, it also comes with a command -line utility to make it easier to get started. -</p> -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="Invoking-chickadee-play.html" accesskey="1">Invoking chickadee play</a></td><td> </td><td align="left" valign="top">Run Chickadee programs -</td></tr> -<tr><td align="left" valign="top">• <a href="Invoking-chickadee-bundle.html" accesskey="2">Invoking chickadee bundle</a></td><td> </td><td align="left" valign="top">Create redistributable binary bundles -</td></tr> -</table> - - - - -</body> -</html> diff --git a/manuals/chickadee/Copying-This-Manual.html b/manuals/chickadee/Copying-This-Manual.html deleted file mode 100644 index 9fd7c29..0000000 --- a/manuals/chickadee/Copying-This-Manual.html +++ /dev/null @@ -1,99 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Copying This Manual (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Copying This Manual (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Copying This Manual (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="index.html" rel="up" title="Top" /> -<link href="Apache-2_002e0-License.html" rel="next" title="Apache 2.0 License" /> -<link href="Path-Finding.html" rel="prev" title="Path Finding" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Copying-This-Manual"></span><div class="header"> -<p> -Next: <a href="Index.html" accesskey="n" rel="next">Index</a>, Previous: <a href="API-Reference.html" accesskey="p" rel="prev">API Reference</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Copying-This-Manual-1"></span><h2 class="appendix">Appendix A Copying This Manual</h2> - -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="Apache-2_002e0-License.html" accesskey="1">Apache 2.0 License</a></td><td> </td><td align="left" valign="top">License for copying this manual. -</td></tr> -</table> - - - - -</body> -</html> diff --git a/manuals/chickadee/Data-Structures.html b/manuals/chickadee/Data-Structures.html deleted file mode 100644 index d268bf3..0000000 --- a/manuals/chickadee/Data-Structures.html +++ /dev/null @@ -1,109 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Data Structures (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Data Structures (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Data Structures (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="API-Reference.html" rel="up" title="API Reference" /> -<link href="Array-Lists.html" rel="next" title="Array Lists" /> -<link href="Channels.html" rel="prev" title="Channels" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Data-Structures"></span><div class="header"> -<p> -Previous: <a href="Scripting.html" accesskey="p" rel="prev">Scripting</a>, Up: <a href="API-Reference.html" accesskey="u" rel="up">API Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Data-Structures-1"></span><h3 class="section">5.6 Data Structures</h3> - -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="Array-Lists.html" accesskey="1">Array Lists</a></td><td> </td><td align="left" valign="top">Dynamically expanding vectors. -</td></tr> -<tr><td align="left" valign="top">• <a href="Queues.html" accesskey="2">Queues</a></td><td> </td><td align="left" valign="top">First-in, first-out data structure. -</td></tr> -<tr><td align="left" valign="top">• <a href="Heaps.html" accesskey="3">Heaps</a></td><td> </td><td align="left" valign="top">Binary heaps. -</td></tr> -<tr><td align="left" valign="top">• <a href="Quadtrees.html" accesskey="4">Quadtrees</a></td><td> </td><td align="left" valign="top">Spatial partitioning with recursive subdivision. -</td></tr> -<tr><td align="left" valign="top">• <a href="Grids.html" accesskey="5">Grids</a></td><td> </td><td align="left" valign="top">Spatial partitioning with a fixed grid. -</td></tr> -<tr><td align="left" valign="top">• <a href="Path-Finding.html" accesskey="6">Path Finding</a></td><td> </td><td align="left" valign="top">Generic A* path finding. -</td></tr> -</table> - - - - -</body> -</html> diff --git a/manuals/chickadee/Easings.html b/manuals/chickadee/Easings.html deleted file mode 100644 index 67aba95..0000000 --- a/manuals/chickadee/Easings.html +++ /dev/null @@ -1,171 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Easings (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Easings (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Easings (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Math.html" rel="up" title="Math" /> -<link href="Bezier-Curves.html" rel="next" title="Bezier Curves" /> -<link href="Quaternions.html" rel="prev" title="Quaternions" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Easings"></span><div class="header"> -<p> -Next: <a href="Bezier-Curves.html" accesskey="n" rel="next">Bezier Curves</a>, Previous: <a href="Quaternions.html" accesskey="p" rel="prev">Quaternions</a>, Up: <a href="Math.html" accesskey="u" rel="up">Math</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Easings-1"></span><h4 class="subsection">5.2.6 Easings</h4> - -<p>Easing functions are essential for animation. Each easing function -provides a different path to go from an initial value to a final -value. These functions make an excellent companion to the -<code>tween</code> procedure (see <a href="Tweening.html">Tweening</a>). Experiment with them to -figure out which function makes an animation look the best. -</p> -<p>Pro tip: <code>smoothstep</code> provides nice results most of the time and -creates smoother animation than using <code>linear</code>. -</p> -<dl> -<dt id="index-linear">Procedure: <strong>linear</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-smoothstep">Procedure: <strong>smoothstep</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002din_002dquad">Procedure: <strong>ease-in-quad</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002dout_002dquad">Procedure: <strong>ease-out-quad</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002din_002dout_002dquad">Procedure: <strong>ease-in-out-quad</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002din_002dcubic">Procedure: <strong>ease-in-cubic</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002dout_002dcubic">Procedure: <strong>ease-out-cubic</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002din_002dout_002dcubic">Procedure: <strong>ease-in-out-cubic</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002din_002dquart">Procedure: <strong>ease-in-quart</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002dout_002dquart">Procedure: <strong>ease-out-quart</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002din_002dout_002dquart">Procedure: <strong>ease-in-out-quart</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002din_002dquint">Procedure: <strong>ease-in-quint</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002dout_002dquint">Procedure: <strong>ease-out-quint</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002din_002dout_002dquint">Procedure: <strong>ease-in-out-quint</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002din_002dsine">Procedure: <strong>ease-in-sine</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002dout_002dsine">Procedure: <strong>ease-out-sine</strong> <em>t</em></dt> -</dl> - -<dl> -<dt id="index-ease_002din_002dout_002dsine">Procedure: <strong>ease-in-out-sine</strong> <em>t</em></dt> -</dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/Fonts.html b/manuals/chickadee/Fonts.html deleted file mode 100644 index 9383789..0000000 --- a/manuals/chickadee/Fonts.html +++ /dev/null @@ -1,184 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Fonts (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Fonts (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Fonts (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Vector-Paths.html" rel="next" title="Vector Paths" /> -<link href="Sprites.html" rel="prev" title="Sprites" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Fonts"></span><div class="header"> -<p> -Next: <a href="Vector-Paths.html" accesskey="n" rel="next">Vector Paths</a>, Previous: <a href="Sprites.html" accesskey="p" rel="prev">Sprites</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Fonts-1"></span><h4 class="subsection">5.3.4 Fonts</h4> - -<p>Printing text to the screen is quite easy: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">draw-text</span> <span class="syntax-string">"Hello, world"</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">100.0</span> <span class="syntax-symbol">100.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>Chickadee supports OpenType/TrueType fonts (via the FreeType library), -bitmap fonts in Angel Code bmfont format, and simple sprite sheet -bitmap fonts. A default font named Inconsolata is used for all text -rendering operations where a font is not specified, as is the case in -the above example. -</p> -<p>The following procedures can be found in the <code>(chickadee graphics -text)</code> module: -</p> -<dl> -<dt id="index-load_002dfont">Procedure: <strong>load-font</strong> <em>file-name point-size [#:char-set] [#:smooth? #t]</em></dt> -<dd><p>Load the scalable (OpenType, TrueType, etc.) font in the file -<var>file-name</var> and display it at the given <var>point-size</var>. By -default, all the characters in the ASCII character set are loaded. -This can be changed by passing a different character set -(see <a href="https://www.gnu.org/software/guile/manual/html_node/Character-Sets.html#Character-Sets">Character Sets</a> in <cite>GNU Guile Reference Manual</cite>) using -the <var>char-set</var> keyword argument. -</p> -<p>If <var>smooth?</var> is <code>#t</code> (the default), text rendered with this -font will have a smoother appearance when text is rotated or scaled, -otherwise non-smooth scaling will be used. -</p></dd></dl> - -<dl> -<dt id="index-load_002dbitmap_002dfont">Procedure: <strong>load-bitmap-font</strong> <em>file</em></dt> -<dd><p>Load the Angel Code font (in either XML or FNT format) in <var>file</var> -and return a new font object. -</p></dd></dl> - -<dl> -<dt id="index-font_003f">Procedure: <strong>font?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a font object. -</p></dd></dl> - -<dl> -<dt id="index-font_002dface">Procedure: <strong>font-face</strong> <em>font</em></dt> -<dd><p>Return the name of <var>font</var>. -</p></dd></dl> - -<dl> -<dt id="index-font_002dline_002dheight">Procedure: <strong>font-line-height</strong> <em>font</em></dt> -<dd><p>Return the line height of <var>font</var>. -</p></dd></dl> - -<dl> -<dt id="index-font_002dline_002dheight-1">Procedure: <strong>font-line-height</strong> <em>font</em></dt> -<dd><p>Return the line height of <var>font</var>. -</p></dd></dl> - -<dl> -<dt id="index-font_002dbold_003f">Procedure: <strong>font-bold?</strong> <em>font</em></dt> -<dd><p>Return <code>#t</code> if <var>font</var> is a bold font. -</p></dd></dl> - -<dl> -<dt id="index-font_002ditalic_003f">Procedure: <strong>font-italic?</strong> <em>font</em></dt> -<dd><p>Return <code>#t</code> if <var>font</var> is an italicized font. -</p></dd></dl> - -<dl> -<dt id="index-draw_002dtext">Procedure: <strong>draw-text</strong> <em>text position</em></dt> -<dd><p>[#:font] [#:color] [#:origin] [#:scale] [#:rotation] [#:blend-mode] - [#:start 0] [#:end <code>(string-length text)</code>] -</p> -<p>Draw the string <var>text</var> with the first character starting at -<var>position</var> using <var>font</var>. If <var>font</var> is not specified, a -built-in font is used. -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">draw-text</span> <span class="syntax-string">"Hello, world!"</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">128.0</span> <span class="syntax-symbol">128.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>To render a substring of <var>text</var>, use the <var>start</var> and <var>end</var> -arguments. -</p> -<p>Refer to <code>draw-sprite</code> (see <a href="Sprites.html">Sprites</a>) for information about -the other arguments. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Vector-Paths.html" accesskey="n" rel="next">Vector Paths</a>, Previous: <a href="Sprites.html" accesskey="p" rel="prev">Sprites</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Framebuffers.html b/manuals/chickadee/Framebuffers.html deleted file mode 100644 index 6560323..0000000 --- a/manuals/chickadee/Framebuffers.html +++ /dev/null @@ -1,147 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Framebuffers (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Framebuffers (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Framebuffers (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Viewports.html" rel="next" title="Viewports" /> -<link href="Shaders.html" rel="prev" title="Shaders" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Framebuffers"></span><div class="header"> -<p> -Next: <a href="Viewports.html" accesskey="n" rel="next">Viewports</a>, Previous: <a href="Shaders.html" accesskey="p" rel="prev">Shaders</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Framebuffers-1"></span><h4 class="subsection">5.3.14 Framebuffers</h4> - -<p>A framebuffer is a chunk of memory that the GPU can render things -onto. By default, the framebuffer that is used for rendering is the -one belonging to the game window, but custom framebuffers can be used -as well. A common use-case for custom framebuffers is applying -post-processing effects: The entire scene is rendered to a -framebuffer, and then the contents of that framebuffer are applied to -a post-processing shader and rendered to the game window. The -post-processing shader could do any number of things: scaling, -antialiasing, motion blur, etc. -</p> -<dl> -<dt id="index-make_002dframebuffer">Procedure: <strong>make-framebuffer</strong> <em>width height [#:min-filter <code>linear</code>] [#:mag-filter <code>linear</code>] [#:wrap-s <code>repeat</code>] [#:wrap-t <code>repeat</code>]</em></dt> -<dd> -<p>Create a new framebuffer that is <var>width</var> pixels wide and <var>height</var> pixels high. -</p> -<p><var>min-filter</var> and <var>mag-filter</var> determine the scaling algorithm -applied to the framebuffer when rendering. By default, linear scaling -is used in both cases. To perform no smoothing at all, use -<code>nearest</code> for simple nearest neighbor scaling. This is typically -the best choice for pixel art games. -</p></dd></dl> - -<dl> -<dt id="index-framebuffer_003f">Procedure: <strong>framebuffer?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a framebuffer. -</p></dd></dl> - -<dl> -<dt id="index-framebuffer_002dtexture">Procedure: <strong>framebuffer-texture</strong> <em>fb</em></dt> -<dd><p>Return the texture backing the framebuffer <var>fb</var>. -</p></dd></dl> - -<dl> -<dt id="index-framebuffer_002dviewport">Procedure: <strong>framebuffer-viewport</strong> <em>fb</em></dt> -<dd><p>Return the default viewport (see <a href="Viewports.html">Viewports</a>) used by the -framebuffer <var>fb</var>. -</p></dd></dl> - -<dl> -<dt id="index-null_002dframebuffer">Procedure: <strong>null-framebuffer</strong></dt> -<dd><p>The default framebuffer. -</p></dd></dl> - -<dl> -<dt id="index-current_002dframebuffer">Procedure: <strong>current-framebuffer</strong></dt> -<dd><p>Return the current framebuffer. -</p></dd></dl> - -<dl> -<dt id="index-g_003aframebuffer">Variable: <strong>g:framebuffer</strong></dt> -<dd><p>Render state for framebuffers (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/Getting-Started.html b/manuals/chickadee/Getting-Started.html deleted file mode 100644 index e7d695d..0000000 --- a/manuals/chickadee/Getting-Started.html +++ /dev/null @@ -1,177 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Getting Started (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Getting Started (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Getting Started (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="index.html" rel="up" title="Top" /> -<link href="Command-Line-Interface.html" rel="next" title="Command Line Interface" /> -<link href="Requirements.html" rel="prev" title="Requirements" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Getting-Started"></span><div class="header"> -<p> -Next: <a href="Command-Line-Interface.html" accesskey="n" rel="next">Command Line Interface</a>, Previous: <a href="Installation.html" accesskey="p" rel="prev">Installation</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Getting-Started-1"></span><h2 class="chapter">2 Getting Started</h2> - -<p>One of the simplest programs we can make with Chickadee is rendering -the text “Hello, world” on screen. Here’s what that looks like: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-open">(</span><span class="syntax-symbol">draw</span> <span class="syntax-symbol">alpha</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">draw-text</span> <span class="syntax-string">"Hello, world!"</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">64.0</span> <span class="syntax-symbol">240.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>The <code>draw</code> procedure is called frequently to draw the game scene. -For the sake of simplicity, we will ignore the <code>alpha</code> variable -in this tutorial. -</p> -<p>To run this program, we’ll use the <code>chickadee play</code> command: -</p> -<div class="example"> -<pre class="example">chickadee play hello.scm -</pre></div> - -<p>This is a good start, but it’s boring. Let’s make the text move! -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">position</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">240.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-open">(</span><span class="syntax-symbol">draw</span> <span class="syntax-symbol">alpha</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">draw-text</span> <span class="syntax-string">"Hello, world!"</span> <span class="syntax-symbol">position</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-open">(</span><span class="syntax-symbol">update</span> <span class="syntax-symbol">dt</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">set-vec2-x!</span> <span class="syntax-symbol">position</span> <span class="syntax-open">(</span><span class="syntax-symbol">+</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2-x</span> <span class="syntax-symbol">position</span><span class="syntax-close">)</span> <span class="syntax-open">(</span><span class="syntax-symbol">*</span> <span class="syntax-symbol">100.0</span> <span class="syntax-symbol">dt</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>The <code>vec2</code> type is used to store 2D coordinates -(see <a href="Vectors.html">Vectors</a>.) A variable named <code>position</code> contains the -position where the text should be rendered. A new hook called -<code>update</code> has been added to handle the animation. This hook is -called frequently to update the state of the game. The variable -<code>dt</code> (short for “delta-time”) contains the amount of time that -has passed since the last update, in seconds. Putting it all -together, this update procedure is incrementing the x coordinate of -the position by 100 pixels per second. -</p> -<p>This is neat, but after a few seconds the text moves off the screen -completely, never to be seen again. It would be better if the text -bounced back and forth against the sides of the window. -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">position</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">240.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-open">(</span><span class="syntax-symbol">draw</span> <span class="syntax-symbol">alpha</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">draw-text</span> <span class="syntax-string">"Hello, world!"</span> <span class="syntax-symbol">position</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-open">(</span><span class="syntax-symbol">update</span> <span class="syntax-symbol">dt</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">update-agenda</span> <span class="syntax-symbol">dt</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-open">(</span><span class="syntax-symbol">update-x</span> <span class="syntax-symbol">x</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">set-vec2-x!</span> <span class="syntax-symbol">position</span> <span class="syntax-symbol">x</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-special">let</span> <span class="syntax-open">(</span><span class="syntax-open">(</span><span class="syntax-symbol">start</span> <span class="syntax-symbol">0.0</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">end</span> <span class="syntax-symbol">536.0</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">duration</span> <span class="syntax-symbol">4.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">script</span> - <span class="syntax-open">(</span><span class="syntax-symbol">while</span> <span class="syntax-symbol">#t</span> - <span class="syntax-open">(</span><span class="syntax-symbol">tween</span> <span class="syntax-symbol">duration</span> <span class="syntax-symbol">start</span> <span class="syntax-symbol">end</span> <span class="syntax-symbol">update-x</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">tween</span> <span class="syntax-symbol">duration</span> <span class="syntax-symbol">end</span> <span class="syntax-symbol">start</span> <span class="syntax-symbol">update-x</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>This final example uses Chickadee’s scripting features -(see <a href="Scripting.html">Scripting</a>) to bounce the text between the edges of the window -indefinitely using the handy <code>tween</code> procedure. The only thing -the <code>update</code> procedure needs to do now is advance the clock of -the “agenda” (the thing that runs scripts.) The script takes care -of the rest. -</p> -<p>This quick tutorial has hopefully given you a taste of what you can do -with Chickadee. The rest of this manual gets into all of the details -that were glossed over, and much more. Try rendering a sprite, -playing a sound effect, or handling keyboard input. But most -importantly: Have fun! -</p> -<hr /> -<div class="header"> -<p> -Next: <a href="Command-Line-Interface.html" accesskey="n" rel="next">Command Line Interface</a>, Previous: <a href="Installation.html" accesskey="p" rel="prev">Installation</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Graphics.html b/manuals/chickadee/Graphics.html deleted file mode 100644 index e8b409b..0000000 --- a/manuals/chickadee/Graphics.html +++ /dev/null @@ -1,145 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Graphics (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Graphics (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Graphics (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="API-Reference.html" rel="up" title="API Reference" /> -<link href="Colors.html" rel="next" title="Colors" /> -<link href="Bezier-Curves.html" rel="prev" title="Bezier Curves" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Graphics"></span><div class="header"> -<p> -Next: <a href="Audio.html" accesskey="n" rel="next">Audio</a>, Previous: <a href="Math.html" accesskey="p" rel="prev">Math</a>, Up: <a href="API-Reference.html" accesskey="u" rel="up">API Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Graphics-1"></span><h3 class="section">5.3 Graphics</h3> - -<p>Chickadee aims to make hardware-accelerated graphics rendering as -simple and efficient as possible by providing high-level APIs that -interact with the low-level OpenGL API under the hood. Anyone that -has worked with OpenGL directly knows that it has a steep learning -curve and a lot of effort is needed to render even a single triangle. -The Chickadee rendering engine attempts to make it easy to do common -tasks like rendering a sprite while also providing all of the building -blocks to implement additional rendering techniques. -</p> -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="Colors.html" accesskey="1">Colors</a></td><td> </td><td align="left" valign="top">Such pretty colors... -</td></tr> -<tr><td align="left" valign="top">• <a href="Textures.html" accesskey="2">Textures</a></td><td> </td><td align="left" valign="top">2D images, tile atlases, cube maps, etc. -</td></tr> -<tr><td align="left" valign="top">• <a href="Sprites.html" accesskey="3">Sprites</a></td><td> </td><td align="left" valign="top">Draw 2D images. -</td></tr> -<tr><td align="left" valign="top">• <a href="Fonts.html" accesskey="4">Fonts</a></td><td> </td><td align="left" valign="top">Drawing text. -</td></tr> -<tr><td align="left" valign="top">• <a href="Vector-Paths.html" accesskey="5">Vector Paths</a></td><td> </td><td align="left" valign="top">Draw filled and stroked paths. -</td></tr> -<tr><td align="left" valign="top">• <a href="Particles.html" accesskey="6">Particles</a></td><td> </td><td align="left" valign="top">Pretty little flying pieces! -</td></tr> -<tr><td align="left" valign="top">• <a href="Tile-Maps.html" accesskey="7">Tile Maps</a></td><td> </td><td align="left" valign="top">Draw 2D tile maps. -</td></tr> -<tr><td align="left" valign="top">• <a href="Models.html" accesskey="8">Models</a></td><td> </td><td align="left" valign="top">Load 3D models from disk. -</td></tr> -<tr><td align="left" valign="top">• <a href="Lights.html" accesskey="9">Lights</a></td><td> </td><td align="left" valign="top">Dynamic 3D lighting. -</td></tr> -<tr><td align="left" valign="top">• <a href="Skyboxes.html">Skyboxes</a></td><td> </td><td align="left" valign="top">Backgrounds for 3D environments. -</td></tr> -<tr><td align="left" valign="top">• <a href="Meshes.html">Meshes</a></td><td> </td><td align="left" valign="top">3D meshes and materials. -</td></tr> -<tr><td align="left" valign="top">• <a href="Buffers.html">Buffers</a></td><td> </td><td align="left" valign="top">Send data to the GPU. -</td></tr> -<tr><td align="left" valign="top">• <a href="Shaders.html">Shaders</a></td><td> </td><td align="left" valign="top">Create custom GPU programs. -</td></tr> -<tr><td align="left" valign="top">• <a href="Framebuffers.html">Framebuffers</a></td><td> </td><td align="left" valign="top">Render to texture. -</td></tr> -<tr><td align="left" valign="top">• <a href="Viewports.html">Viewports</a></td><td> </td><td align="left" valign="top">Restrict rendering to a particular area. -</td></tr> -<tr><td align="left" valign="top">• <a href="Render-Settings.html">Render Settings</a></td><td> </td><td align="left" valign="top">Depth tests, stencil tests, polygon modes, etc. -</td></tr> -<tr><td align="left" valign="top">• <a href="Rendering-Engine.html">Rendering Engine</a></td><td> </td><td align="left" valign="top">Rendering state management. -</td></tr> -</table> - -<hr /> -<div class="header"> -<p> -Next: <a href="Audio.html" accesskey="n" rel="next">Audio</a>, Previous: <a href="Math.html" accesskey="p" rel="prev">Math</a>, Up: <a href="API-Reference.html" accesskey="u" rel="up">API Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Grids.html b/manuals/chickadee/Grids.html deleted file mode 100644 index e8ec2b6..0000000 --- a/manuals/chickadee/Grids.html +++ /dev/null @@ -1,214 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Grids (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Grids (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Grids (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Data-Structures.html" rel="up" title="Data Structures" /> -<link href="Path-Finding.html" rel="next" title="Path Finding" /> -<link href="Quadtrees.html" rel="prev" title="Quadtrees" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Grids"></span><div class="header"> -<p> -Next: <a href="Path-Finding.html" accesskey="n" rel="next">Path Finding</a>, Previous: <a href="Quadtrees.html" accesskey="p" rel="prev">Quadtrees</a>, Up: <a href="Data-Structures.html" accesskey="u" rel="up">Data Structures</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Grids-1"></span><h4 class="subsection">5.6.5 Grids</h4> - -<p>The <code>(chickadee data grid)</code> module provides a simple spatial -partitioning system for axis-aligned bounding boxes -(see <a href="Rectangles.html">Rectangles</a>) in 2D space. The grid divides the world into -tiles and keeps track of which rectangles occupy which tiles. When -there are lots of moving objects in the game world that need collision -detection, the grid greatly speeds up the process. Instead of -checking collisions of each object against every other object (an -O(n^2) operation), the grid quickly narrows down which objects could -possibly be colliding and only performs collision testing against a -small set of objects. -</p> -<p>In addition to checking for collisions, the grid also handles the -resolution of collisions. Exactly how each collision is resolved is -user-defined. A player bumping into a wall may slide against it. An -enemy colliding with a projectile shot by the player may get pushed -back in the opposite direction. Two players colliding may not need -resolution at all and will just pass through each other. The way this -works is that each time an object (A) is moved within the grid, the -grid looks for an object (B) that may possibly be colliding with A. A -user-defined procedure known as a “filter” is then called with both -A and B. If the filter returns <code>#f</code>, it means that even if A and -B are colliding, no collision resolution is needed. In this case the -grid won’t waste time checking if they really do collide because it -doesn’t matter. If A and B are collidable, then the filter returns a -procedure that implements the resolution technique. The grid will -then perform a collision test. If A and B are colliding, the resolver -procedure is called. It’s the resolvers job to adjust the objects -such that they are no longer colliding. The grid module comes with a -very simple resolution procedure, <code>slide</code>, that adjusts object A -by the smallest amount so that it no longer overlaps with B. By using -this filtering technique, a game can resolve collisions between -different objects in different ways. -</p> -<dl> -<dt id="index-make_002dgrid">Procedure: <strong>make-grid</strong> <em>[cell-size 64]</em></dt> -<dd><p>Return a new grid partitioned into <var>cell-size</var> tiles. -</p></dd></dl> - -<dl> -<dt id="index-grid_003f">Procedure: <strong>grid?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a grid. -</p></dd></dl> - -<dl> -<dt id="index-cell_003f">Procedure: <strong>cell?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a grid cell. -</p></dd></dl> - -<dl> -<dt id="index-cell_002dcount">Procedure: <strong>cell-count</strong> <em>cell</em></dt> -<dd><p>Return the number of items in <var>cell</var>. -</p></dd></dl> - -<dl> -<dt id="index-grid_002dcell_002dsize">Procedure: <strong>grid-cell-size</strong> <em>grid</em></dt> -<dd><p>Return the cell size of <var>grid</var>. -</p></dd></dl> - -<dl> -<dt id="index-grid_002dcell_002dcount">Procedure: <strong>grid-cell-count</strong> <em>grid</em></dt> -<dd><p>Return the number of cells currently in <var>grid</var>. -</p></dd></dl> - -<dl> -<dt id="index-grid_002ditem_002dcount">Procedure: <strong>grid-item-count</strong> <em>grid</em></dt> -<dd><p>Return the number of items in <var>grid</var>. -</p></dd></dl> - -<dl> -<dt id="index-grid_002dadd">Procedure: <strong>grid-add</strong> <em>grid item x y width height</em></dt> -<dd> -<p>Add <var>item</var> to <var>grid</var> represented by the axis-aligned bounding -box whose lower-left corner is at (<var>x</var>, <var>y</var>) and is -<var>width</var> x <var>height</var> in size. -</p></dd></dl> - -<dl> -<dt id="index-grid_002dremove">Procedure: <strong>grid-remove</strong> <em>grid item</em></dt> -<dd><p>Return <var>item</var> from <var>grid</var>. -</p></dd></dl> - -<dl> -<dt id="index-grid_002dclear">Procedure: <strong>grid-clear</strong> <em>grid</em></dt> -<dd><p>Remove all items from <var>grid</var>. -</p></dd></dl> - -<dl> -<dt id="index-grid_002dmove">Procedure: <strong>grid-move</strong> <em>grid item position filter</em></dt> -<dd><p>Attempt to move <var>item</var> in <var>grid</var> to <var>position</var> (a 2D -vector) and check for collisions. For each collision, <var>filter</var> -will be called with two arguments: <var>item</var> and the item it collided -with. If a collision occurs, <var>position</var> may be modified to -resolve the colliding objects. -</p></dd></dl> - -<dl> -<dt id="index-for_002deach_002dcell">Procedure: <strong>for-each-cell</strong> <em>proc grid [rect]</em></dt> -<dd><p>Call <var>proc</var> with each cell in <var>grid</var> that intersects -<var>rect</var>, or every cell if <var>rect</var> is <code>#f</code>. -</p></dd></dl> - -<dl> -<dt id="index-for_002deach_002ditem">Procedure: <strong>for-each-item</strong> <em>proc grid</em></dt> -<dd><p>Call <var>proc</var> for each item in <var>grid</var>. -</p></dd></dl> - -<dl> -<dt id="index-slide">Procedure: <strong>slide</strong> <em>item item-rect other other-rect goal</em></dt> -<dd> -<p>Resolve the collision that occurs between <var>item</var> and <var>other</var> -when moving <var>item-rect</var> to <var>goal</var> by sliding <var>item-rect</var> -the minimum amount needed to make it no longer overlap -<var>other-rect</var>. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Path-Finding.html" accesskey="n" rel="next">Path Finding</a>, Previous: <a href="Quadtrees.html" accesskey="p" rel="prev">Quadtrees</a>, Up: <a href="Data-Structures.html" accesskey="u" rel="up">Data Structures</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Heaps.html b/manuals/chickadee/Heaps.html deleted file mode 100644 index effdb89..0000000 --- a/manuals/chickadee/Heaps.html +++ /dev/null @@ -1,139 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Heaps (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Heaps (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Heaps (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Data-Structures.html" rel="up" title="Data Structures" /> -<link href="Quadtrees.html" rel="next" title="Quadtrees" /> -<link href="Queues.html" rel="prev" title="Queues" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Heaps"></span><div class="header"> -<p> -Next: <a href="Quadtrees.html" accesskey="n" rel="next">Quadtrees</a>, Previous: <a href="Queues.html" accesskey="p" rel="prev">Queues</a>, Up: <a href="Data-Structures.html" accesskey="u" rel="up">Data Structures</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Heaps-1"></span><h4 class="subsection">5.6.3 Heaps</h4> - -<p>The <code>(chickadee data heap)</code> module provides a binary heap data -structure. The heap orders data from smallest to largest, according -to a custom comparison predicate, making it a good choice for priority -queues. -</p> -<dl> -<dt id="index-make_002dheap">Procedure: <strong>make-heap</strong> <em>[#:< <]</em></dt> -<dd><p>Return a new heap that uses the predicate <var><</var> to determine order. -</p></dd></dl> - -<dl> -<dt id="index-heap_003f">Procedure: <strong>heap?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a heap. -</p></dd></dl> - -<dl> -<dt id="index-heap_002dempty_003f">Procedure: <strong>heap-empty?</strong> <em>heap</em></dt> -<dd><p>Return <code>#t</code> if <var>heap</var> is empty. -</p></dd></dl> - -<dl> -<dt id="index-heap_002dsize">Procedure: <strong>heap-size</strong> <em>heap</em></dt> -<dd><p>Return the current size of <var>heap</var>. -</p></dd></dl> - -<dl> -<dt id="index-heap_002dmin">Procedure: <strong>heap-min</strong> <em>heap</em></dt> -<dd><p>Return the minimum item in <var>heap</var>. -</p></dd></dl> - -<dl> -<dt id="index-heap_002dinsert_0021">Procedure: <strong>heap-insert!</strong> <em>heap item</em></dt> -<dd><p>Add <var>item</var> to <var>heap</var>. -</p></dd></dl> - -<dl> -<dt id="index-heap_002dremove_0021">Procedure: <strong>heap-remove!</strong> <em>heap</em></dt> -<dd><p>Remove the minimum item in <var>heap</var>. -</p></dd></dl> - -<dl> -<dt id="index-heap_002dclear_0021">Procedure: <strong>heap-clear!</strong> <em>heap</em></dt> -<dd><p>Remove all items from <var>heap</var>. -</p></dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/Index.html b/manuals/chickadee/Index.html deleted file mode 100644 index 4d64ac2..0000000 --- a/manuals/chickadee/Index.html +++ /dev/null @@ -1,1034 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Index (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Index (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Index (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="#Index" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="index.html" rel="up" title="Top" /> -<link href="Apache-2_002e0-License.html" rel="prev" title="Apache 2.0 License" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Index"></span><div class="header"> -<p> -Previous: <a href="Copying-This-Manual.html" accesskey="p" rel="prev">Copying This Manual</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Index-1"></span><h2 class="unnumbered">Index</h2> - -<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#Index_fn_symbol-1"><b>%</b></a> - -<br /> -<a class="summary-letter" href="#Index_fn_letter-A"><b>A</b></a> - -<a class="summary-letter" href="#Index_fn_letter-B"><b>B</b></a> - -<a class="summary-letter" href="#Index_fn_letter-C"><b>C</b></a> - -<a class="summary-letter" href="#Index_fn_letter-D"><b>D</b></a> - -<a class="summary-letter" href="#Index_fn_letter-E"><b>E</b></a> - -<a class="summary-letter" href="#Index_fn_letter-F"><b>F</b></a> - -<a class="summary-letter" href="#Index_fn_letter-G"><b>G</b></a> - -<a class="summary-letter" href="#Index_fn_letter-H"><b>H</b></a> - -<a class="summary-letter" href="#Index_fn_letter-I"><b>I</b></a> - -<a class="summary-letter" href="#Index_fn_letter-J"><b>J</b></a> - -<a class="summary-letter" href="#Index_fn_letter-K"><b>K</b></a> - -<a class="summary-letter" href="#Index_fn_letter-L"><b>L</b></a> - -<a class="summary-letter" href="#Index_fn_letter-M"><b>M</b></a> - -<a class="summary-letter" href="#Index_fn_letter-N"><b>N</b></a> - -<a class="summary-letter" href="#Index_fn_letter-O"><b>O</b></a> - -<a class="summary-letter" href="#Index_fn_letter-P"><b>P</b></a> - -<a class="summary-letter" href="#Index_fn_letter-Q"><b>Q</b></a> - -<a class="summary-letter" href="#Index_fn_letter-R"><b>R</b></a> - -<a class="summary-letter" href="#Index_fn_letter-S"><b>S</b></a> - -<a class="summary-letter" href="#Index_fn_letter-T"><b>T</b></a> - -<a class="summary-letter" href="#Index_fn_letter-U"><b>U</b></a> - -<a class="summary-letter" href="#Index_fn_letter-V"><b>V</b></a> - -<a class="summary-letter" href="#Index_fn_letter-W"><b>W</b></a> - -<a class="summary-letter" href="#Index_fn_letter-Y"><b>Y</b></a> - -</td></tr></table> -<table class="index-fn" border="0"> -<tr><td></td><th align="left">Index Entry</th><td> </td><th align="left"> Section</th></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_symbol-1">%</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Invoking-chickadee-bundle.html#index-_0025default_002dconfig"><code>%default-config</code></a>:</td><td> </td><td valign="top"><a href="Invoking-chickadee-bundle.html">Invoking chickadee bundle</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-A">A</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Path-Finding.html#index-a_002a"><code>a*</code></a>:</td><td> </td><td valign="top"><a href="Path-Finding.html">Path Finding</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Game-Loop.html#index-abort_002dgame"><code>abort-game</code></a>:</td><td> </td><td valign="top"><a href="The-Game-Loop.html">The Game Loop</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-add_002dparticle_002demitter"><code>add-particle-emitter</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-after"><code>after</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-agenda_002dtime"><code>agenda-time</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-agenda_003f"><code>agenda?</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-animation_002dduration"><code>animation-duration</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-animation_002dframe_002dduration"><code>animation-frame-duration</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-animation_002dframe_002dtile"><code>animation-frame-tile</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-animation_002dframe_003f"><code>animation-frame?</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-animation_002dframes"><code>animation-frames</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-animation_003f"><code>animation?</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-arc"><code>arc</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-arc_002dto"><code>arc-to</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-array_002dlist"><code>array-list</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-array_002dlist_002dclear_0021"><code>array-list-clear!</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-array_002dlist_002ddelete_0021"><code>array-list-delete!</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-array_002dlist_002dempty_003f"><code>array-list-empty?</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-array_002dlist_002dfold"><code>array-list-fold</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-array_002dlist_002dfor_002deach"><code>array-list-for-each</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-array_002dlist_002dpop_0021"><code>array-list-pop!</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-array_002dlist_002dpush_0021"><code>array-list-push!</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-array_002dlist_002dref"><code>array-list-ref</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-array_002dlist_002dset_0021"><code>array-list-set!</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-array_002dlist_002dsize"><code>array-list-size</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-array_002dlist_003f"><code>array-list?</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-at"><code>at</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-attribute_002dlocation"><code>attribute-location</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-attribute_002dname"><code>attribute-name</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-attribute_002dtype"><code>attribute-type</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-attribute_003f"><code>attribute?</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_002dbits_002dper_002dsample"><code>audio-bits-per-sample</code></a>:</td><td> </td><td valign="top"><a href="Audio-Files.html">Audio Files</a></td></tr> -<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_002dchannels"><code>audio-channels</code></a>:</td><td> </td><td valign="top"><a href="Audio-Files.html">Audio Files</a></td></tr> -<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_002dduration"><code>audio-duration</code></a>:</td><td> </td><td valign="top"><a href="Audio-Files.html">Audio Files</a></td></tr> -<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_002dmode"><code>audio-mode</code></a>:</td><td> </td><td valign="top"><a href="Audio-Files.html">Audio Files</a></td></tr> -<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_002dplay"><code>audio-play</code></a>:</td><td> </td><td valign="top"><a href="Audio-Files.html">Audio Files</a></td></tr> -<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_002dsample_002drate"><code>audio-sample-rate</code></a>:</td><td> </td><td valign="top"><a href="Audio-Files.html">Audio Files</a></td></tr> -<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_003f"><code>audio?</code></a>:</td><td> </td><td valign="top"><a href="Audio-Files.html">Audio Files</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-B">B</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-back_002dcull_002dface_002dmode"><code>back-cull-face-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-below"><code>below</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-beside"><code>beside</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dcurve_002dp0"><code>bezier-curve-p0</code></a>:</td><td> </td><td valign="top"><a href="Bezier-Curves.html">Bezier Curves</a></td></tr> -<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dcurve_002dp1"><code>bezier-curve-p1</code></a>:</td><td> </td><td valign="top"><a href="Bezier-Curves.html">Bezier Curves</a></td></tr> -<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dcurve_002dp2"><code>bezier-curve-p2</code></a>:</td><td> </td><td valign="top"><a href="Bezier-Curves.html">Bezier Curves</a></td></tr> -<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dcurve_002dp3"><code>bezier-curve-p3</code></a>:</td><td> </td><td valign="top"><a href="Bezier-Curves.html">Bezier Curves</a></td></tr> -<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dcurve_002dpoint_002dat"><code>bezier-curve-point-at</code></a>:</td><td> </td><td valign="top"><a href="Bezier-Curves.html">Bezier Curves</a></td></tr> -<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dcurve_002dpoint_002dat_0021"><code>bezier-curve-point-at!</code></a>:</td><td> </td><td valign="top"><a href="Bezier-Curves.html">Bezier Curves</a></td></tr> -<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dcurve_003f"><code>bezier-curve?</code></a>:</td><td> </td><td valign="top"><a href="Bezier-Curves.html">Bezier Curves</a></td></tr> -<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dpath"><code>bezier-path</code></a>:</td><td> </td><td valign="top"><a href="Bezier-Curves.html">Bezier Curves</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-bezier_002dpath-1"><code>bezier-path</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-bezier_002dto"><code>bezier-to</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-black"><code>black</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-blend_003aadd"><code>blend:add</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-blend_003aalpha"><code>blend:alpha</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-blend_003adarken"><code>blend:darken</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-blend_003alighten"><code>blend:lighten</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-blend_003amultiply"><code>blend:multiply</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-blend_003areplace"><code>blend:replace</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-blend_003ascreen"><code>blend:screen</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-blend_003asubtract"><code>blend:subtract</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-blue"><code>blue</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-bool"><code>bool</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-buffer_002ddata"><code>buffer-data</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-buffer_002dlength"><code>buffer-length</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-buffer_002dname"><code>buffer-name</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-buffer_002dstride"><code>buffer-stride</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-buffer_002dtarget"><code>buffer-target</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-buffer_002dusage"><code>buffer-usage</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-buffer_003f"><code>buffer?</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-C">C</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-call_002dwhen"><code>call-when</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Scripts.html#index-cancel_002dscript"><code>cancel-script</code></a>:</td><td> </td><td valign="top"><a href="Scripts.html">Scripts</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-canvas_003f"><code>canvas?</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-cell_002dcount"><code>cell-count</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-cell_003f"><code>cell?</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Channels.html#index-channel_002dclear_0021"><code>channel-clear!</code></a>:</td><td> </td><td valign="top"><a href="Channels.html">Channels</a></td></tr> -<tr><td></td><td valign="top"><a href="Channels.html#index-channel_002dget"><code>channel-get</code></a>:</td><td> </td><td valign="top"><a href="Channels.html">Channels</a></td></tr> -<tr><td></td><td valign="top"><a href="Channels.html#index-channel_002dget_0021"><code>channel-get!</code></a>:</td><td> </td><td valign="top"><a href="Channels.html">Channels</a></td></tr> -<tr><td></td><td valign="top"><a href="Channels.html#index-channel_002dput"><code>channel-put</code></a>:</td><td> </td><td valign="top"><a href="Channels.html">Channels</a></td></tr> -<tr><td></td><td valign="top"><a href="Channels.html#index-channel_002dput_0021"><code>channel-put!</code></a>:</td><td> </td><td valign="top"><a href="Channels.html">Channels</a></td></tr> -<tr><td></td><td valign="top"><a href="Channels.html#index-channel_003f"><code>channel?</code></a>:</td><td> </td><td valign="top"><a href="Channels.html">Channels</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-circle"><code>circle</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Basics.html#index-clamp"><code>clamp</code></a>:</td><td> </td><td valign="top"><a href="Basics.html">Basics</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-close_002dpath"><code>close-path</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-color_002a"><code>color*</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-color_002b"><code>color+</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-color_002d"><code>color-</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-color_002da"><code>color-a</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-color_002db"><code>color-b</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-color_002dg"><code>color-g</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-color_002dinverse"><code>color-inverse</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-color_002dlerp"><code>color-lerp</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-color_002dr"><code>color-r</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-color_003f"><code>color?</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Input-Devices.html#index-controller_002daxis"><code>controller-axis</code></a>:</td><td> </td><td valign="top"><a href="Input-Devices.html">Input Devices</a></td></tr> -<tr><td></td><td valign="top"><a href="Input-Devices.html#index-controller_002dbutton_002dpressed_003f"><code>controller-button-pressed?</code></a>:</td><td> </td><td valign="top"><a href="Input-Devices.html">Input Devices</a></td></tr> -<tr><td></td><td valign="top"><a href="Input-Devices.html#index-controller_002dbutton_002dreleased_003f"><code>controller-button-released?</code></a>:</td><td> </td><td valign="top"><a href="Input-Devices.html">Input Devices</a></td></tr> -<tr><td></td><td valign="top"><a href="Input-Devices.html#index-controller_002dname"><code>controller-name</code></a>:</td><td> </td><td valign="top"><a href="Input-Devices.html">Input Devices</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-corner_002dsplit"><code>corner-split</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Basics.html#index-cotan"><code>cotan</code></a>:</td><td> </td><td valign="top"><a href="Basics.html">Basics</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-cube_002dmap_003f"><code>cube-map?</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-cull_002dface_002dmode_002dback_003f"><code>cull-face-mode-back?</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-cull_002dface_002dmode_002dfront_003f"><code>cull-face-mode-front?</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-cull_002dface_002dmode_003f"><code>cull-face-mode?</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-current_002dagenda"><code>current-agenda</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-current_002dagenda-1"><code>current-agenda</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-current_002dbuffer"><code>current-buffer</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-current_002dcull_002dface_002dmode"><code>current-cull-face-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-current_002ddepth_002dtest"><code>current-depth-test</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Framebuffers.html#index-current_002dframebuffer"><code>current-framebuffer</code></a>:</td><td> </td><td valign="top"><a href="Framebuffers.html">Framebuffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-current_002dmultisample"><code>current-multisample</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-current_002dpolygon_002dmode"><code>current-polygon-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-current_002dprojection"><code>current-projection</code></a>:</td><td> </td><td valign="top"><a href="Rendering-Engine.html">Rendering Engine</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-current_002dstencil_002dtest"><code>current-stencil-test</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-current_002dtexture_002d0"><code>current-texture-0</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-current_002dtexture_002d1"><code>current-texture-1</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-current_002dtexture_002d2"><code>current-texture-2</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-current_002dtexture_002d3"><code>current-texture-3</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-current_002dtexture_002d4"><code>current-texture-4</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-current_002dvertex_002darray"><code>current-vertex-array</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Viewports.html#index-current_002dviewport"><code>current-viewport</code></a>:</td><td> </td><td valign="top"><a href="Viewports.html">Viewports</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-current_002dwindow"><code>current-window</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-cyan"><code>cyan</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-D">D</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-default_002dstencil_002dtest"><code>default-stencil-test</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-define_002dshader_002dtype"><code>define-shader-type</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Basics.html#index-degrees_002d_003eradians"><code>degrees->radians</code></a>:</td><td> </td><td valign="top"><a href="Basics.html">Basics</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-depth_002dtest_002dfar"><code>depth-test-far</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-depth_002dtest_002dfunction"><code>depth-test-function</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-depth_002dtest_002dnear"><code>depth-test-near</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-depth_002dtest_002dwrite_003f"><code>depth-test-write?</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-depth_002dtest_003f"><code>depth-test?</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Queues.html#index-dequeue_0021"><code>dequeue!</code></a>:</td><td> </td><td valign="top"><a href="Queues.html">Queues</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-directional_002dlight_003f"><code>directional-light?</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Environment.html#index-distance_002dmodel"><code>distance-model</code></a>:</td><td> </td><td valign="top"><a href="The-Environment.html">The Environment</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Environment.html#index-doppler_002dfactor"><code>doppler-factor</code></a>:</td><td> </td><td valign="top"><a href="The-Environment.html">The Environment</a></td></tr> -<tr><td></td><td valign="top"><a href="Sprites.html#index-draw_002d9_002dpatch"><code>draw-9-patch</code></a>:</td><td> </td><td valign="top"><a href="Sprites.html">Sprites</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-draw_002dcanvas"><code>draw-canvas</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Models.html#index-draw_002dmodel"><code>draw-model</code></a>:</td><td> </td><td valign="top"><a href="Models.html">Models</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-draw_002dparticles"><code>draw-particles</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-draw_002dparticles_002a"><code>draw-particles*</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td></td><td valign="top"><a href="Skyboxes.html#index-draw_002dskybox"><code>draw-skybox</code></a>:</td><td> </td><td valign="top"><a href="Skyboxes.html">Skyboxes</a></td></tr> -<tr><td></td><td valign="top"><a href="Sprites.html#index-draw_002dsprite"><code>draw-sprite</code></a>:</td><td> </td><td valign="top"><a href="Sprites.html">Sprites</a></td></tr> -<tr><td></td><td valign="top"><a href="Sprites.html#index-draw_002dsprite_002dbatch"><code>draw-sprite-batch</code></a>:</td><td> </td><td valign="top"><a href="Sprites.html">Sprites</a></td></tr> -<tr><td></td><td valign="top"><a href="Fonts.html#index-draw_002dtext"><code>draw-text</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html">Fonts</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-draw_002dtile_002dmap"><code>draw-tile-map</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-E">E</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dcubic"><code>ease-in-cubic</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dout_002dcubic"><code>ease-in-out-cubic</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dout_002dquad"><code>ease-in-out-quad</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dout_002dquart"><code>ease-in-out-quart</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dout_002dquint"><code>ease-in-out-quint</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dout_002dsine"><code>ease-in-out-sine</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dquad"><code>ease-in-quad</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dquart"><code>ease-in-quart</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dquint"><code>ease-in-quint</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dsine"><code>ease-in-sine</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002dout_002dcubic"><code>ease-out-cubic</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002dout_002dquad"><code>ease-out-quad</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002dout_002dquart"><code>ease-out-quart</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002dout_002dquint"><code>ease-out-quint</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002dout_002dsine"><code>ease-out-sine</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Game-Loop.html#index-elapsed_002dtime"><code>elapsed-time</code></a>:</td><td> </td><td valign="top"><a href="The-Game-Loop.html">The Game Loop</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-ellipse"><code>ellipse</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Queues.html#index-enqueue_0021"><code>enqueue!</code></a>:</td><td> </td><td valign="top"><a href="Queues.html">Queues</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-every"><code>every</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-every-1"><code>every</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-F">F</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-fill"><code>fill</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-fill_002dand_002dstroke"><code>fill-and-stroke</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-fill_002dpolygon_002dmode"><code>fill-polygon-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-float"><code>float</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-float_002dvec2"><code>float-vec2</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-float_002dvec3"><code>float-vec3</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-float_002dvec4"><code>float-vec4</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002dbold_003f"><code>font-bold?</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html">Fonts</a></td></tr> -<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002dface"><code>font-face</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html">Fonts</a></td></tr> -<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002ditalic_003f"><code>font-italic?</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html">Fonts</a></td></tr> -<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002dline_002dheight"><code>font-line-height</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html">Fonts</a></td></tr> -<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002dline_002dheight-1"><code>font-line-height</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html">Fonts</a></td></tr> -<tr><td></td><td valign="top"><a href="Fonts.html#index-font_003f"><code>font?</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html">Fonts</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-for_002deach_002dcell"><code>for-each-cell</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-for_002deach_002ditem"><code>for-each-item</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Scripts.html#index-forever"><code>forever</code></a>:</td><td> </td><td valign="top"><a href="Scripts.html">Scripts</a></td></tr> -<tr><td></td><td valign="top"><a href="Framebuffers.html#index-framebuffer_002dtexture"><code>framebuffer-texture</code></a>:</td><td> </td><td valign="top"><a href="Framebuffers.html">Framebuffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Framebuffers.html#index-framebuffer_002dviewport"><code>framebuffer-viewport</code></a>:</td><td> </td><td valign="top"><a href="Framebuffers.html">Framebuffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Framebuffers.html#index-framebuffer_003f"><code>framebuffer?</code></a>:</td><td> </td><td valign="top"><a href="Framebuffers.html">Framebuffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-front_002dand_002dback_002dcull_002dface_002dmode"><code>front-and-back-cull-face-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-front_002dcull_002dface_002dmode"><code>front-cull-face-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-G">G</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-g_003abuffer"><code>g:buffer</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-g_003acull_002dface_002dmode"><code>g:cull-face-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-g_003adepth_002dtest"><code>g:depth-test</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Framebuffers.html#index-g_003aframebuffer"><code>g:framebuffer</code></a>:</td><td> </td><td valign="top"><a href="Framebuffers.html">Framebuffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-g_003amultisample_003f"><code>g:multisample?</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-g_003apolygon_002dmode"><code>g:polygon-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-g_003astencil_002dtest"><code>g:stencil-test</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-g_003atexture_002d0"><code>g:texture-0</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-g_003atexture_002d1"><code>g:texture-1</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-g_003atexture_002d2"><code>g:texture-2</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-g_003atexture_002d3"><code>g:texture-3</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-g_003atexture_002d4"><code>g:texture-4</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-g_003avertex_002darray"><code>g:vertex-array</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Viewports.html#index-g_003aviewport"><code>g:viewport</code></a>:</td><td> </td><td valign="top"><a href="Viewports.html">Viewports</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-gradient_003f"><code>gradient?</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-green"><code>green</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-grid_002dadd"><code>grid-add</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-grid_002dcell_002dcount"><code>grid-cell-count</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-grid_002dcell_002dsize"><code>grid-cell-size</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-grid_002dclear"><code>grid-clear</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-grid_002ditem_002dcount"><code>grid-item-count</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-grid_002dmove"><code>grid-move</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-grid_002dremove"><code>grid-remove</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-grid_003f"><code>grid?</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-H">H</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Heaps.html#index-heap_002dclear_0021"><code>heap-clear!</code></a>:</td><td> </td><td valign="top"><a href="Heaps.html">Heaps</a></td></tr> -<tr><td></td><td valign="top"><a href="Heaps.html#index-heap_002dempty_003f"><code>heap-empty?</code></a>:</td><td> </td><td valign="top"><a href="Heaps.html">Heaps</a></td></tr> -<tr><td></td><td valign="top"><a href="Heaps.html#index-heap_002dinsert_0021"><code>heap-insert!</code></a>:</td><td> </td><td valign="top"><a href="Heaps.html">Heaps</a></td></tr> -<tr><td></td><td valign="top"><a href="Heaps.html#index-heap_002dmin"><code>heap-min</code></a>:</td><td> </td><td valign="top"><a href="Heaps.html">Heaps</a></td></tr> -<tr><td></td><td valign="top"><a href="Heaps.html#index-heap_002dremove_0021"><code>heap-remove!</code></a>:</td><td> </td><td valign="top"><a href="Heaps.html">Heaps</a></td></tr> -<tr><td></td><td valign="top"><a href="Heaps.html#index-heap_002dsize"><code>heap-size</code></a>:</td><td> </td><td valign="top"><a href="Heaps.html">Heaps</a></td></tr> -<tr><td></td><td valign="top"><a href="Heaps.html#index-heap_003f"><code>heap?</code></a>:</td><td> </td><td valign="top"><a href="Heaps.html">Heaps</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-hide_002dwindow_0021"><code>hide-window!</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-horizontal_002dflip"><code>horizontal-flip</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-I">I</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-index_002dbuffer_003f"><code>index-buffer?</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-int"><code>int</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-J">J</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Scripts.html#index-join"><code>join</code></a>:</td><td> </td><td valign="top"><a href="Scripts.html">Scripts</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-K">K</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Input-Devices.html#index-key_002dpressed_003f"><code>key-pressed?</code></a>:</td><td> </td><td valign="top"><a href="Input-Devices.html">Input Devices</a></td></tr> -<tr><td></td><td valign="top"><a href="Input-Devices.html#index-key_002dreleased_003f"><code>key-released?</code></a>:</td><td> </td><td valign="top"><a href="Input-Devices.html">Input Devices</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-L">L</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Basics.html#index-lerp"><code>lerp</code></a>:</td><td> </td><td valign="top"><a href="Basics.html">Basics</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-light_002dcolor"><code>light-color</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-light_002dcut_002doff"><code>light-cut-off</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-light_002ddirection"><code>light-direction</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-light_002dintensity"><code>light-intensity</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-light_002dposition"><code>light-position</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-light_002dtype"><code>light-type</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-line"><code>line</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-line_002dpolygon_002dmode"><code>line-polygon-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-line_002dto"><code>line-to</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-linear"><code>linear</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-linear_002dgradient"><code>linear-gradient</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Listener.html#index-listener_002dorientation"><code>listener-orientation</code></a>:</td><td> </td><td valign="top"><a href="The-Listener.html">The Listener</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Listener.html#index-listener_002dposition"><code>listener-position</code></a>:</td><td> </td><td valign="top"><a href="The-Listener.html">The Listener</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Listener.html#index-listener_002dvelocity"><code>listener-velocity</code></a>:</td><td> </td><td valign="top"><a href="The-Listener.html">The Listener</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Listener.html#index-listener_002dvolume"><code>listener-volume</code></a>:</td><td> </td><td valign="top"><a href="The-Listener.html">The Listener</a></td></tr> -<tr><td></td><td valign="top"><a href="Audio-Files.html#index-load_002daudio"><code>load-audio</code></a>:</td><td> </td><td valign="top"><a href="Audio-Files.html">Audio Files</a></td></tr> -<tr><td></td><td valign="top"><a href="Fonts.html#index-load_002dbitmap_002dfont"><code>load-bitmap-font</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html">Fonts</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-load_002dcube_002dmap"><code>load-cube-map</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Fonts.html#index-load_002dfont"><code>load-font</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html">Fonts</a></td></tr> -<tr><td></td><td valign="top"><a href="Models.html#index-load_002dgltf"><code>load-gltf</code></a>:</td><td> </td><td valign="top"><a href="Models.html">Models</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-load_002dimage"><code>load-image</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Models.html#index-load_002dobj"><code>load-obj</code></a>:</td><td> </td><td valign="top"><a href="Models.html">Models</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-load_002dshader"><code>load-shader</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-load_002dtile_002dmap"><code>load-tile-map</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-load_002dtileset"><code>load-tileset</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-local_002dfield"><code>local-field</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-M">M</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-magenta"><code>magenta</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-make_002dagenda"><code>make-agenda</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Array-Lists.html#index-make_002darray_002dlist"><code>make-array-list</code></a>:</td><td> </td><td valign="top"><a href="Array-Lists.html">Array Lists</a></td></tr> -<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-make_002dbezier_002dcurve"><code>make-bezier-curve</code></a>:</td><td> </td><td valign="top"><a href="Bezier-Curves.html">Bezier Curves</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-make_002dblend_002dmode"><code>make-blend-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-make_002dbuffer"><code>make-buffer</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-make_002dcanvas"><code>make-canvas</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Channels.html#index-make_002dchannel"><code>make-channel</code></a>:</td><td> </td><td valign="top"><a href="Channels.html">Channels</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-make_002dcolor"><code>make-color</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-make_002dcube"><code>make-cube</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-make_002ddepth_002dtest"><code>make-depth-test</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-make_002ddirectional_002dlight"><code>make-directional-light</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-make_002dempty_002dcanvas"><code>make-empty-canvas</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Framebuffers.html#index-make_002dframebuffer"><code>make-framebuffer</code></a>:</td><td> </td><td valign="top"><a href="Framebuffers.html">Framebuffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-make_002dgrid"><code>make-grid</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Heaps.html#index-make_002dheap"><code>make-heap</code></a>:</td><td> </td><td valign="top"><a href="Heaps.html">Heaps</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-make_002didentity_002dmatrix3"><code>make-identity-matrix3</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-make_002didentity_002dmatrix4"><code>make-identity-matrix4</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Quaternions.html#index-make_002didentity_002dquaternion"><code>make-identity-quaternion</code></a>:</td><td> </td><td valign="top"><a href="Quaternions.html">Quaternions</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-make_002dmatrix3"><code>make-matrix3</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-make_002dmatrix4"><code>make-matrix4</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-make_002dmesh"><code>make-mesh</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-make_002dnull_002dmatrix3"><code>make-null-matrix3</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-make_002dnull_002dmatrix4"><code>make-null-matrix4</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-make_002dparticle_002demitter"><code>make-particle-emitter</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-make_002dparticles"><code>make-particles</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td></td><td valign="top"><a href="Path-Finding.html#index-make_002dpath_002dfinder"><code>make-path-finder</code></a>:</td><td> </td><td valign="top"><a href="Path-Finding.html">Path Finding</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-make_002dpbr_002dmaterial"><code>make-pbr-material</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-make_002dpbr_002dproperties"><code>make-pbr-properties</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-make_002dphong_002dmaterial"><code>make-phong-material</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-make_002dphong_002dproperties"><code>make-phong-properties</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-make_002dplane"><code>make-plane</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-make_002dpoint_002dlight"><code>make-point-light</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-make_002dpolygon_002dmode"><code>make-polygon-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-make_002dprimitive"><code>make-primitive</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-make_002dquadtree"><code>make-quadtree</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Queues.html#index-make_002dqueue"><code>make-queue</code></a>:</td><td> </td><td valign="top"><a href="Queues.html">Queues</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-make_002drect"><code>make-rect</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-make_002dshader"><code>make-shader</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Skyboxes.html#index-make_002dskybox"><code>make-skybox</code></a>:</td><td> </td><td valign="top"><a href="Skyboxes.html">Skyboxes</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-make_002dsource"><code>make-source</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-make_002dsphere"><code>make-sphere</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-make_002dspot_002dlight"><code>make-spot-light</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Sprites.html#index-make_002dsprite_002dbatch"><code>make-sprite-batch</code></a>:</td><td> </td><td valign="top"><a href="Sprites.html">Sprites</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-make_002dstencil_002dtest"><code>make-stencil-test</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-make_002dtesselated_002dplane"><code>make-tesselated-plane</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-make_002dvertex_002darray"><code>make-vertex-array</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-make_002dvertex_002dattribute"><code>make-vertex-attribute</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Viewports.html#index-make_002dviewport"><code>make-viewport</code></a>:</td><td> </td><td valign="top"><a href="Viewports.html">Viewports</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-map_002dobject_002did"><code>map-object-id</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-map_002dobject_002dname"><code>map-object-name</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-map_002dobject_002dproperties"><code>map-object-properties</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-map_002dobject_002dshape"><code>map-object-shape</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-map_002dobject_002dtype"><code>map-object-type</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-map_002dobject_003f"><code>map-object?</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-mat3"><code>mat3</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-mat4"><code>mat4</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dblend_002dmode"><code>material-blend-mode</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dcull_002dface_002dmode"><code>material-cull-face-mode</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002ddepth_002dtest"><code>material-depth-test</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dmultisample_003f"><code>material-multisample?</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dname"><code>material-name</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dpolygon_002dmode"><code>material-polygon-mode</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dproperties"><code>material-properties</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dshader"><code>material-shader</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dstencil_002dtest"><code>material-stencil-test</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dtexture_002d0"><code>material-texture-0</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dtexture_002d1"><code>material-texture-1</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dtexture_002d2"><code>material-texture-2</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dtexture_002d3"><code>material-texture-3</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_002dtexture_002d4"><code>material-texture-4</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-material_003f"><code>material?</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002a"><code>matrix3*</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002dcopy"><code>matrix3-copy</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002dcopy_0021"><code>matrix3-copy!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002didentity_0021"><code>matrix3-identity!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002dinverse"><code>matrix3-inverse</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002dinverse_0021"><code>matrix3-inverse!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002dmult_0021"><code>matrix3-mult!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002drotate"><code>matrix3-rotate</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002drotate_0021"><code>matrix3-rotate!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002dscale"><code>matrix3-scale</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002dscale_0021"><code>matrix3-scale!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002dtransform"><code>matrix3-transform</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002dtransform_0021"><code>matrix3-transform!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002dtranslate"><code>matrix3-translate</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_002dtranslate_0021"><code>matrix3-translate!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_003d"><code>matrix3=</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix3_003f"><code>matrix3?</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002a"><code>matrix4*</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002d2d_002dtransform_0021"><code>matrix4-2d-transform!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002dcopy"><code>matrix4-copy</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002dcopy_0021"><code>matrix4-copy!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002didentity_0021"><code>matrix4-identity!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002dinverse"><code>matrix4-inverse</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002dinverse_0021"><code>matrix4-inverse!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002dmult_0021"><code>matrix4-mult!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002drotate"><code>matrix4-rotate</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002drotate_0021"><code>matrix4-rotate!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002drotate_002dz"><code>matrix4-rotate-z</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002drotate_002dz_0021"><code>matrix4-rotate-z!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002dscale"><code>matrix4-scale</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002dscale_0021"><code>matrix4-scale!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002dtransform_0021"><code>matrix4-transform!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002dtranslate"><code>matrix4-translate</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002dtranslate_0021"><code>matrix4-translate!</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_003d"><code>matrix4=</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_003f"><code>matrix4?</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-maximize_002dwindow_0021"><code>maximize-window!</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-mesh_002dname"><code>mesh-name</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-mesh_002dprimitives"><code>mesh-primitives</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-mesh_003f"><code>mesh?</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-minimize_002dwindow_0021"><code>minimize-window!</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Models.html#index-model_003f"><code>model?</code></a>:</td><td> </td><td valign="top"><a href="Models.html">Models</a></td></tr> -<tr><td></td><td valign="top"><a href="Input-Devices.html#index-mouse_002dbutton_002dpressed_003f"><code>mouse-button-pressed?</code></a>:</td><td> </td><td valign="top"><a href="Input-Devices.html">Input Devices</a></td></tr> -<tr><td></td><td valign="top"><a href="Input-Devices.html#index-mouse_002dbutton_002dreleased_003f"><code>mouse-button-released?</code></a>:</td><td> </td><td valign="top"><a href="Input-Devices.html">Input Devices</a></td></tr> -<tr><td></td><td valign="top"><a href="Input-Devices.html#index-mouse_002dx"><code>mouse-x</code></a>:</td><td> </td><td valign="top"><a href="Input-Devices.html">Input Devices</a></td></tr> -<tr><td></td><td valign="top"><a href="Input-Devices.html#index-mouse_002dy"><code>mouse-y</code></a>:</td><td> </td><td valign="top"><a href="Input-Devices.html">Input Devices</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-move_002dto"><code>move-to</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-N">N</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-no_002dcull_002dface_002dmode"><code>no-cull-face-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-null_002dbuffer"><code>null-buffer</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Framebuffers.html#index-null_002dframebuffer"><code>null-framebuffer</code></a>:</td><td> </td><td valign="top"><a href="Framebuffers.html">Framebuffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-null_002dshader"><code>null-shader</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-null_002dvertex_002darray"><code>null-vertex-array</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-O">O</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-object_002dlayer_002dname"><code>object-layer-name</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-object_002dlayer_002dobjects"><code>object-layer-objects</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-object_002dlayer_002dproperties"><code>object-layer-properties</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-object_002dlayer_003f"><code>object-layer?</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-orthographic_002dprojection"><code>orthographic-projection</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-P">P</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-pad"><code>pad</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-particle_002demitter_002ddone_003f"><code>particle-emitter-done?</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-particle_002demitter_002dlife"><code>particle-emitter-life</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-particle_002demitter_002drate"><code>particle-emitter-rate</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-particle_002demitter_002dspawn_002darea"><code>particle-emitter-spawn-area</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-particle_002demitter_003f"><code>particle-emitter?</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-particles_003f"><code>particles?</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-path"><code>path</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Path-Finding.html#index-path_002dfinder_003f"><code>path-finder?</code></a>:</td><td> </td><td valign="top"><a href="Path-Finding.html">Path Finding</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-pbr_002dproperties_002dalpha_002dcutoff"><code>pbr-properties-alpha-cutoff</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-pbr_002dproperties_002dalpha_002dmode"><code>pbr-properties-alpha-mode</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-pbr_002dproperties_002dbase_002dcolor_002dfactor"><code>pbr-properties-base-color-factor</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-pbr_002dproperties_002dbase_002dcolor_002dtexcoord"><code>pbr-properties-base-color-texcoord</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-pbr_002dproperties_002demissive_002dfactor"><code>pbr-properties-emissive-factor</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-pbr_002dproperties_002demissive_002dtexcoord"><code>pbr-properties-emissive-texcoord</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-pbr_002dproperties_002dmetallic_002dfactor"><code>pbr-properties-metallic-factor</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-pbr_002dproperties_002dmetallic_002droughness_002dtexcoord"><code>pbr-properties-metallic-roughness-texcoord</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-pbr_002dproperties_002dnormal_002dtexcoord"><code>pbr-properties-normal-texcoord</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-pbr_002dproperties_002docclusion_002dtexcoord"><code>pbr-properties-occlusion-texcoord</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-pbr_002dproperties_002droughness"><code>pbr-properties-roughness</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-pbr_002dproperties_003f"><code>pbr-properties?</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Matrices.html#index-perspective_002dprojection"><code>perspective-projection</code></a>:</td><td> </td><td valign="top"><a href="Matrices.html">Matrices</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-phong_002dproperties_002dambient"><code>phong-properties-ambient</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-phong_002dproperties_002ddiffuse"><code>phong-properties-diffuse</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-phong_002dproperties_002dshininess"><code>phong-properties-shininess</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-phong_002dproperties_002dspecular"><code>phong-properties-specular</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-phong_002dproperties_003f"><code>phong-properties?</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Basics.html#index-pi"><code>pi</code></a>:</td><td> </td><td valign="top"><a href="Basics.html">Basics</a></td></tr> -<tr><td></td><td valign="top"><a href="Basics.html#index-pi_002f2"><code>pi/2</code></a>:</td><td> </td><td valign="top"><a href="Basics.html">Basics</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-point_002d_003etile"><code>point->tile</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-point_002dlight_003f"><code>point-light?</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-point_002dpolygon_002dmode"><code>point-polygon-mode</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-polygon_002dmode_003f"><code>polygon-mode?</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-polygon_002dpoints"><code>polygon-points</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-polygon_003f"><code>polygon?</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-polyline"><code>polyline</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-primitive_002dmaterial"><code>primitive-material</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-primitive_002dname"><code>primitive-name</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-primitive_002dvertex_002darray"><code>primitive-vertex-array</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td></td><td valign="top"><a href="Meshes.html#index-primitive_003f"><code>primitive?</code></a>:</td><td> </td><td valign="top"><a href="Meshes.html">Meshes</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-Q">Q</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dbounds"><code>quadtree-bounds</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dclear_0021"><code>quadtree-clear!</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002ddelete_0021"><code>quadtree-delete!</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002ddepth"><code>quadtree-depth</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dfind"><code>quadtree-find</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dfold"><code>quadtree-fold</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dfor_002deach"><code>quadtree-for-each</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dinsert_0021"><code>quadtree-insert!</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dleaf_003f"><code>quadtree-leaf?</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dmax_002ddepth"><code>quadtree-max-depth</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dmax_002dsize"><code>quadtree-max-size</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dq1"><code>quadtree-q1</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dq2"><code>quadtree-q2</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dq3"><code>quadtree-q3</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dq4"><code>quadtree-q4</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_002dsize"><code>quadtree-size</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quadtrees.html#index-quadtree_003f"><code>quadtree?</code></a>:</td><td> </td><td valign="top"><a href="Quadtrees.html">Quadtrees</a></td></tr> -<tr><td></td><td valign="top"><a href="Quaternions.html#index-quaternion"><code>quaternion</code></a>:</td><td> </td><td valign="top"><a href="Quaternions.html">Quaternions</a></td></tr> -<tr><td></td><td valign="top"><a href="Quaternions.html#index-quaternion_002dw"><code>quaternion-w</code></a>:</td><td> </td><td valign="top"><a href="Quaternions.html">Quaternions</a></td></tr> -<tr><td></td><td valign="top"><a href="Quaternions.html#index-quaternion_002dx"><code>quaternion-x</code></a>:</td><td> </td><td valign="top"><a href="Quaternions.html">Quaternions</a></td></tr> -<tr><td></td><td valign="top"><a href="Quaternions.html#index-quaternion_002dy"><code>quaternion-y</code></a>:</td><td> </td><td valign="top"><a href="Quaternions.html">Quaternions</a></td></tr> -<tr><td></td><td valign="top"><a href="Quaternions.html#index-quaternion_002dz"><code>quaternion-z</code></a>:</td><td> </td><td valign="top"><a href="Quaternions.html">Quaternions</a></td></tr> -<tr><td></td><td valign="top"><a href="Quaternions.html#index-quaternion_003f"><code>quaternion?</code></a>:</td><td> </td><td valign="top"><a href="Quaternions.html">Quaternions</a></td></tr> -<tr><td></td><td valign="top"><a href="Queues.html#index-queue_002dclear_0021"><code>queue-clear!</code></a>:</td><td> </td><td valign="top"><a href="Queues.html">Queues</a></td></tr> -<tr><td></td><td valign="top"><a href="Queues.html#index-queue_002dempty_003f"><code>queue-empty?</code></a>:</td><td> </td><td valign="top"><a href="Queues.html">Queues</a></td></tr> -<tr><td></td><td valign="top"><a href="Queues.html#index-queue_002dlength"><code>queue-length</code></a>:</td><td> </td><td valign="top"><a href="Queues.html">Queues</a></td></tr> -<tr><td></td><td valign="top"><a href="Queues.html#index-queue_003f"><code>queue?</code></a>:</td><td> </td><td valign="top"><a href="Queues.html">Queues</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-R">R</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-radial_002dgradient"><code>radial-gradient</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Basics.html#index-radians_002d_003edegrees"><code>radians->degrees</code></a>:</td><td> </td><td valign="top"><a href="Basics.html">Basics</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-raise_002dwindow_0021"><code>raise-window!</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect"><code>rect</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002darea"><code>rect-area</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dbottom"><code>rect-bottom</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dcenter_002dx"><code>rect-center-x</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dcenter_002dy"><code>rect-center-y</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dclamp"><code>rect-clamp</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dclamp_0021"><code>rect-clamp!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dclamp_002dx"><code>rect-clamp-x</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dclamp_002dy"><code>rect-clamp-y</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dclip"><code>rect-clip</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dclip_0021"><code>rect-clip!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dcontains_002dvec2_003f"><code>rect-contains-vec2?</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dcontains_003f"><code>rect-contains?</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dheight"><code>rect-height</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dinflate"><code>rect-inflate</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dinflate_0021"><code>rect-inflate!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dintersects_003f"><code>rect-intersects?</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dleft"><code>rect-left</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dmove"><code>rect-move</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dmove_0021"><code>rect-move!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dmove_002dby"><code>rect-move-by</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dmove_002dby_0021"><code>rect-move-by!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dmove_002dby_002dvec2"><code>rect-move-by-vec2</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dmove_002dby_002dvec2_0021"><code>rect-move-by-vec2!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dmove_002dvec2"><code>rect-move-vec2</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dmove_002dvec2_0021"><code>rect-move-vec2!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dright"><code>rect-right</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dtop"><code>rect-top</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dunion"><code>rect-union</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dunion_0021"><code>rect-union!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dwidth"><code>rect-width</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dwithin_003f"><code>rect-within?</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dx"><code>rect-x</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dy"><code>rect-y</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_003f"><code>rect?</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-rectangle"><code>rectangle</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-red"><code>red</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-regular_002dpolygon"><code>regular-polygon</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-remove_002dparticle_002demitter"><code>remove-particle-emitter</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-restore_002dwindow_0021"><code>restore-window!</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-rgb"><code>rgb</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-rgba"><code>rgba</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-right_002dsplit"><code>right-split</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-rotate"><code>rotate</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-rounded_002drectangle"><code>rounded-rectangle</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Game-Loop.html#index-run_002dgame"><code>run-game</code></a>:</td><td> </td><td valign="top"><a href="The-Game-Loop.html">The Game Loop</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Game-Loop.html#index-run_002dgame_002a"><code>run-game*</code></a>:</td><td> </td><td valign="top"><a href="The-Game-Loop.html">The Game Loop</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-S">S</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-sampler_002d2d"><code>sampler-2d</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-sampler_002dcube"><code>sampler-cube</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-scale"><code>scale</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-schedule_002dafter"><code>schedule-after</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-schedule_002dat"><code>schedule-at</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-schedule_002devery"><code>schedule-every</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Scripts.html#index-script"><code>script</code></a>:</td><td> </td><td valign="top"><a href="Scripts.html">Scripts</a></td></tr> -<tr><td></td><td valign="top"><a href="Scripts.html#index-script_002dcancelled_003f"><code>script-cancelled?</code></a>:</td><td> </td><td valign="top"><a href="Scripts.html">Scripts</a></td></tr> -<tr><td></td><td valign="top"><a href="Scripts.html#index-script_002dcomplete_003f"><code>script-complete?</code></a>:</td><td> </td><td valign="top"><a href="Scripts.html">Scripts</a></td></tr> -<tr><td></td><td valign="top"><a href="Scripts.html#index-script_002drunning_003f"><code>script-running?</code></a>:</td><td> </td><td valign="top"><a href="Scripts.html">Scripts</a></td></tr> -<tr><td></td><td valign="top"><a href="Scripts.html#index-script_003f"><code>script?</code></a>:</td><td> </td><td valign="top"><a href="Scripts.html">Scripts</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-set_002dcanvas_002dmatrix_0021"><code>set-canvas-matrix!</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-set_002dcanvas_002dpainter_0021"><code>set-canvas-painter!</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Environment.html#index-set_002ddistance_002dmodel_0021"><code>set-distance-model!</code></a>:</td><td> </td><td valign="top"><a href="The-Environment.html">The Environment</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Environment.html#index-set_002ddoppler_002dfactor_0021"><code>set-doppler-factor!</code></a>:</td><td> </td><td valign="top"><a href="The-Environment.html">The Environment</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-set_002dlight_002dcolor_0021"><code>set-light-color!</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-set_002dlight_002dcut_002doff_0021"><code>set-light-cut-off!</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-set_002dlight_002ddirection_0021"><code>set-light-direction!</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-set_002dlight_002dposition_0021"><code>set-light-position!</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Listener.html#index-set_002dlistener_002dorientation_0021"><code>set-listener-orientation!</code></a>:</td><td> </td><td valign="top"><a href="The-Listener.html">The Listener</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Listener.html#index-set_002dlistener_002dposition_0021"><code>set-listener-position!</code></a>:</td><td> </td><td valign="top"><a href="The-Listener.html">The Listener</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Listener.html#index-set_002dlistener_002dvelocity_0021"><code>set-listener-velocity!</code></a>:</td><td> </td><td valign="top"><a href="The-Listener.html">The Listener</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Listener.html#index-set_002dlistener_002dvolume_0021"><code>set-listener-volume!</code></a>:</td><td> </td><td valign="top"><a href="The-Listener.html">The Listener</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-set_002drect_002dheight_0021"><code>set-rect-height!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-set_002drect_002dwidth_0021"><code>set-rect-width!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-set_002drect_002dx_0021"><code>set-rect-x!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-set_002drect_002dy_0021"><code>set-rect-y!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002daudio_0021"><code>set-source-audio!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dcone_002dinner_002dangle_0021"><code>set-source-cone-inner-angle!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dcone_002douter_002dangle_0021"><code>set-source-cone-outer-angle!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dcone_002douter_002dvolume_0021"><code>set-source-cone-outer-volume!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002ddirection_0021"><code>set-source-direction!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dloop_0021"><code>set-source-loop!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dmax_002ddistance_0021"><code>set-source-max-distance!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dmax_002dvolume_0021"><code>set-source-max-volume!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dmin_002dvolume_0021"><code>set-source-min-volume!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dpitch_0021"><code>set-source-pitch!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dposition_0021"><code>set-source-position!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dreference_002ddistance_0021"><code>set-source-reference-distance!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002drelative_0021"><code>set-source-relative!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002drolloff_002dfactor_0021"><code>set-source-rolloff-factor!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dvelocity_0021"><code>set-source-velocity!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dvolume_0021"><code>set-source-volume!</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Environment.html#index-set_002dspeed_002dof_002dsound_0021"><code>set-speed-of-sound!</code></a>:</td><td> </td><td valign="top"><a href="The-Environment.html">The Environment</a></td></tr> -<tr><td></td><td valign="top"><a href="Sprites.html#index-set_002dsprite_002dbatch_002dtexture_0021"><code>set-sprite-batch-texture!</code></a>:</td><td> </td><td valign="top"><a href="Sprites.html">Sprites</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-set_002dvec2_0021"><code>set-vec2!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-set_002dvec2_002dx_0021"><code>set-vec2-x!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-set_002dvec2_002dy_0021"><code>set-vec2-y!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-set_002dvec3_0021"><code>set-vec3!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-set_002dvec3_002dx_0021"><code>set-vec3-x!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-set_002dvec3_002dy_0021"><code>set-vec3-y!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-set_002dvec3_002dz_0021"><code>set-vec3-z!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-set_002dwindow_002dborder_0021"><code>set-window-border!</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-set_002dwindow_002dfullscreen_0021"><code>set-window-fullscreen!</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-set_002dwindow_002dposition_0021"><code>set-window-position!</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-set_002dwindow_002dsize_0021"><code>set-window-size!</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-set_002dwindow_002dtitle_0021"><code>set-window-title!</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-shader_002dapply"><code>shader-apply</code></a>:</td><td> </td><td valign="top"><a href="Rendering-Engine.html">Rendering Engine</a></td></tr> -<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-shader_002dapply_002a"><code>shader-apply*</code></a>:</td><td> </td><td valign="top"><a href="Rendering-Engine.html">Rendering Engine</a></td></tr> -<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-shader_002dapply_002finstanced"><code>shader-apply/instanced</code></a>:</td><td> </td><td valign="top"><a href="Rendering-Engine.html">Rendering Engine</a></td></tr> -<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-shader_002dapply_002finstanced-1"><code>shader-apply/instanced</code></a>:</td><td> </td><td valign="top"><a href="Rendering-Engine.html">Rendering Engine</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-shader_002dattributes"><code>shader-attributes</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-shader_002ddata_002dtype_003f"><code>shader-data-type?</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-shader_002duniform"><code>shader-uniform</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-shader_002duniform_002dset_0021"><code>shader-uniform-set!</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-shader_002duniforms"><code>shader-uniforms</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-shader_003f"><code>shader?</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-show_002dwindow_0021"><code>show-window!</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Skyboxes.html#index-skybox_002dcube_002dmap"><code>skybox-cube-map</code></a>:</td><td> </td><td valign="top"><a href="Skyboxes.html">Skyboxes</a></td></tr> -<tr><td></td><td valign="top"><a href="Skyboxes.html#index-skybox_003f"><code>skybox?</code></a>:</td><td> </td><td valign="top"><a href="Skyboxes.html">Skyboxes</a></td></tr> -<tr><td></td><td valign="top"><a href="Scripts.html#index-sleep"><code>sleep</code></a>:</td><td> </td><td valign="top"><a href="Scripts.html">Scripts</a></td></tr> -<tr><td></td><td valign="top"><a href="Grids.html#index-slide"><code>slide</code></a>:</td><td> </td><td valign="top"><a href="Grids.html">Grids</a></td></tr> -<tr><td></td><td valign="top"><a href="Easings.html#index-smoothstep"><code>smoothstep</code></a>:</td><td> </td><td valign="top"><a href="Easings.html">Easings</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dcone_002dinner_002dangle"><code>source-cone-inner-angle</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dcone_002douter_002dangle"><code>source-cone-outer-angle</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dcone_002douter_002dvolume"><code>source-cone-outer-volume</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002ddirection"><code>source-direction</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dmax_002ddistance"><code>source-max-distance</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dmax_002dvolume"><code>source-max-volume</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dmin_002dvolume"><code>source-min-volume</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dpause"><code>source-pause</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dpaused_003f"><code>source-paused?</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dpitch"><code>source-pitch</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dplay"><code>source-play</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dplaying_003f"><code>source-playing?</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dposition"><code>source-position</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dreference_002ddistance"><code>source-reference-distance</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002drelative_003f"><code>source-relative?</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002drewind"><code>source-rewind</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002drolloff_002dfactor"><code>source-rolloff-factor</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dstop"><code>source-stop</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dstopped_003f"><code>source-stopped?</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dtoggle"><code>source-toggle</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dvelocity"><code>source-velocity</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dvolume"><code>source-volume</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-source_003f"><code>source?</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Scripts.html#index-spawn_002dscript"><code>spawn-script</code></a>:</td><td> </td><td valign="top"><a href="Scripts.html">Scripts</a></td></tr> -<tr><td></td><td valign="top"><a href="The-Environment.html#index-speed_002dof_002dsound"><code>speed-of-sound</code></a>:</td><td> </td><td valign="top"><a href="The-Environment.html">The Environment</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-split_002dtexture"><code>split-texture</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Lights.html#index-spot_002dlight_003f"><code>spot-light?</code></a>:</td><td> </td><td valign="top"><a href="Lights.html">Lights</a></td></tr> -<tr><td></td><td valign="top"><a href="Sprites.html#index-sprite_002dbatch_002dadd_0021"><code>sprite-batch-add!</code></a>:</td><td> </td><td valign="top"><a href="Sprites.html">Sprites</a></td></tr> -<tr><td></td><td valign="top"><a href="Sprites.html#index-sprite_002dbatch_002dclear_0021"><code>sprite-batch-clear!</code></a>:</td><td> </td><td valign="top"><a href="Sprites.html">Sprites</a></td></tr> -<tr><td></td><td valign="top"><a href="Sprites.html#index-sprite_002dbatch_002dtexture"><code>sprite-batch-texture</code></a>:</td><td> </td><td valign="top"><a href="Sprites.html">Sprites</a></td></tr> -<tr><td></td><td valign="top"><a href="Sprites.html#index-sprite_002dbatch_003f"><code>sprite-batch?</code></a>:</td><td> </td><td valign="top"><a href="Sprites.html">Sprites</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-square"><code>square</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Audio-Files.html#index-static_002daudio_003f"><code>static-audio?</code></a>:</td><td> </td><td valign="top"><a href="Audio-Files.html">Audio Files</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-static_002dsource_003f"><code>static-source?</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002dfunction_002dback"><code>stencil-test-function-back</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002dfunction_002dfront"><code>stencil-test-function-front</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002dfunction_002dmask_002dback"><code>stencil-test-function-mask-back</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002dfunction_002dmask_002dfront"><code>stencil-test-function-mask-front</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002dmask_002dback"><code>stencil-test-mask-back</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002dmask_002dfront"><code>stencil-test-mask-front</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002don_002ddepth_002dfail_002dback"><code>stencil-test-on-depth-fail-back</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002don_002ddepth_002dfail_002dfront"><code>stencil-test-on-depth-fail-front</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002don_002dfail_002dback"><code>stencil-test-on-fail-back</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002don_002dfail_002dfront"><code>stencil-test-on-fail-front</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002don_002dpass_002dback"><code>stencil-test-on-pass-back</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002don_002dpass_002dfront"><code>stencil-test-on-pass-front</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002dreference_002dback"><code>stencil-test-reference-back</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_002dreference_002dfront"><code>stencil-test-reference-front</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Render-Settings.html#index-stencil_002dtest_003f"><code>stencil-test?</code></a>:</td><td> </td><td valign="top"><a href="Render-Settings.html">Render Settings</a></td></tr> -<tr><td></td><td valign="top"><a href="Audio-Files.html#index-streaming_002daudio_003f"><code>streaming-audio?</code></a>:</td><td> </td><td valign="top"><a href="Audio-Files.html">Audio Files</a></td></tr> -<tr><td></td><td valign="top"><a href="Sources.html#index-streaming_002dsource_003f"><code>streaming-source?</code></a>:</td><td> </td><td valign="top"><a href="Sources.html">Sources</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-string_002d_003ecolor"><code>string->color</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-strings_002d_003eshader"><code>strings->shader</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-stroke"><code>stroke</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-superimpose"><code>superimpose</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-T">T</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002daluminium_002d1"><code>tango-aluminium-1</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002daluminium_002d2"><code>tango-aluminium-2</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002daluminium_002d3"><code>tango-aluminium-3</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002daluminium_002d4"><code>tango-aluminium-4</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002daluminium_002d5"><code>tango-aluminium-5</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002daluminium_002d6"><code>tango-aluminium-6</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dbutter"><code>tango-butter</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dchameleon"><code>tango-chameleon</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dchocolate"><code>tango-chocolate</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dbutter"><code>tango-dark-butter</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dchameleon"><code>tango-dark-chameleon</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dchocolate"><code>tango-dark-chocolate</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dorange"><code>tango-dark-orange</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dplum"><code>tango-dark-plum</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dscarlet_002dred"><code>tango-dark-scarlet-red</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dsky_002dblue"><code>tango-dark-sky-blue</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dbutter"><code>tango-light-butter</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dchameleon"><code>tango-light-chameleon</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dchocolate"><code>tango-light-chocolate</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dorange"><code>tango-light-orange</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dplum"><code>tango-light-plum</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dscarlet_002dred"><code>tango-light-scarlet-red</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dsky_002dblue"><code>tango-light-sky-blue</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dorange"><code>tango-orange</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dplum"><code>tango-plum</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dscarlet_002dred"><code>tango-scarlet-red</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dsky_002dblue"><code>tango-sky-blue</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Basics.html#index-tau"><code>tau</code></a>:</td><td> </td><td valign="top"><a href="Basics.html">Basics</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002datlas_002dref"><code>texture-atlas-ref</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002datlas_002dtexture"><code>texture-atlas-texture</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002datlas_003f"><code>texture-atlas?</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002dheight"><code>texture-height</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002dmag_002dfilter"><code>texture-mag-filter</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002dmin_002dfilter"><code>texture-min-filter</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002dparent"><code>texture-parent</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002dregion_003f"><code>texture-region?</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002dwidth"><code>texture-width</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002dwrap_002ds"><code>texture-wrap-s</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002dwrap_002dt"><code>texture-wrap-t</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Textures.html#index-texture_003f"><code>texture?</code></a>:</td><td> </td><td valign="top"><a href="Textures.html">Textures</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002danimation"><code>tile-animation</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002did"><code>tile-id</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dlayer_002dheight"><code>tile-layer-height</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dlayer_002dname"><code>tile-layer-name</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dlayer_002dproperties"><code>tile-layer-properties</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dlayer_002dtiles"><code>tile-layer-tiles</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dlayer_002dwidth"><code>tile-layer-width</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dlayer_003f"><code>tile-layer?</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dmap_002dheight"><code>tile-map-height</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dmap_002dlayers"><code>tile-map-layers</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dmap_002dorientation"><code>tile-map-orientation</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dmap_002dproperties"><code>tile-map-properties</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dmap_002dtile_002dheight"><code>tile-map-tile-height</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dmap_002dtile_002dwidth"><code>tile-map-tile-width</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dmap_002dtilesets"><code>tile-map-tilesets</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dmap_002dwidth"><code>tile-map-width</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dmap_003f"><code>tile-map?</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_002dproperties"><code>tile-properties</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tile_003f"><code>tile?</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_002datlas"><code>tileset-atlas</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_002dcolumns"><code>tileset-columns</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_002dfirst_002dgid"><code>tileset-first-gid</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_002dname"><code>tileset-name</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_002dproperties"><code>tileset-properties</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_002drows"><code>tileset-rows</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_002dsize"><code>tileset-size</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_002dtile_002dheight"><code>tileset-tile-height</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_002dtile_002dwidth"><code>tileset-tile-width</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_002dtiles"><code>tileset-tiles</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_003f"><code>tileset?</code></a>:</td><td> </td><td valign="top"><a href="Tile-Maps.html">Tile Maps</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-transform"><code>transform</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-translate"><code>translate</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-transparency"><code>transparency</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Tweening.html#index-tween"><code>tween</code></a>:</td><td> </td><td valign="top"><a href="Tweening.html">Tweening</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-U">U</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-uniform_002dname"><code>uniform-name</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-uniform_002dtype"><code>uniform-type</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-uniform_002dvalue"><code>uniform-value</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-uniform_003f"><code>uniform?</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Shaders.html#index-unsigned_002dint"><code>unsigned-int</code></a>:</td><td> </td><td valign="top"><a href="Shaders.html">Shaders</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-up_002dsplit"><code>up-split</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-update_002dagenda"><code>update-agenda</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Particles.html#index-update_002dparticles"><code>update-particles</code></a>:</td><td> </td><td valign="top"><a href="Particles.html">Particles</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-V">V</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2"><code>vec2</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002a"><code>vec2*</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002b"><code>vec2+</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002d"><code>vec2-</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002dadd_0021"><code>vec2-add!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Rectangles.html#index-vec2_002dclamp_002dto_002drect_0021"><code>vec2-clamp-to-rect!</code></a>:</td><td> </td><td valign="top"><a href="Rectangles.html">Rectangles</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002dcopy"><code>vec2-copy</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002dcopy_0021"><code>vec2-copy!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002ddot"><code>vec2-dot</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002dmagnitude"><code>vec2-magnitude</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002dmult_0021"><code>vec2-mult!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002dnormalize"><code>vec2-normalize</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002dsub_0021"><code>vec2-sub!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002dx"><code>vec2-x</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002dy"><code>vec2-y</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002fpolar"><code>vec2/polar</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_003f"><code>vec2?</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3"><code>vec3</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002a"><code>vec3*</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002b"><code>vec3+</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002d"><code>vec3-</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dadd_0021"><code>vec3-add!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dcopy"><code>vec3-copy</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dcopy_0021"><code>vec3-copy!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dcross"><code>vec3-cross</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dcross_0021"><code>vec3-cross!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002ddot"><code>vec3-dot</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dmagnitude"><code>vec3-magnitude</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dmult_0021"><code>vec3-mult!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dnormalize"><code>vec3-normalize</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dsub_0021"><code>vec3-sub!</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dx"><code>vec3-x</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dy"><code>vec3-y</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dz"><code>vec3-z</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_003f"><code>vec3?</code></a>:</td><td> </td><td valign="top"><a href="Vectors.html">Vectors</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-vertex_002darray_002dattributes"><code>vertex-array-attributes</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-vertex_002darray_002dindices"><code>vertex-array-indices</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-vertex_002darray_002dmode"><code>vertex-array-mode</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-vertex_002darray_003f"><code>vertex-array?</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-vertex_002dattribute_002d_003ebuffer"><code>vertex-attribute->buffer</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-vertex_002dattribute_002dcomponent_002dtype"><code>vertex-attribute-component-type</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-vertex_002dattribute_002ddivisor"><code>vertex-attribute-divisor</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-vertex_002dattribute_002dname"><code>vertex-attribute-name</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-vertex_002dattribute_002doffset"><code>vertex-attribute-offset</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-vertex_002dattribute_002dtype"><code>vertex-attribute-type</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-vertex_002dattribute_003f"><code>vertex-attribute?</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-vertical_002dflip"><code>vertical-flip</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td></td><td valign="top"><a href="Viewports.html#index-viewport_002dclear_002dcolor"><code>viewport-clear-color</code></a>:</td><td> </td><td valign="top"><a href="Viewports.html">Viewports</a></td></tr> -<tr><td></td><td valign="top"><a href="Viewports.html#index-viewport_002dclear_002dflags"><code>viewport-clear-flags</code></a>:</td><td> </td><td valign="top"><a href="Viewports.html">Viewports</a></td></tr> -<tr><td></td><td valign="top"><a href="Viewports.html#index-viewport_002dheight"><code>viewport-height</code></a>:</td><td> </td><td valign="top"><a href="Viewports.html">Viewports</a></td></tr> -<tr><td></td><td valign="top"><a href="Viewports.html#index-viewport_002dwidth"><code>viewport-width</code></a>:</td><td> </td><td valign="top"><a href="Viewports.html">Viewports</a></td></tr> -<tr><td></td><td valign="top"><a href="Viewports.html#index-viewport_002dx"><code>viewport-x</code></a>:</td><td> </td><td valign="top"><a href="Viewports.html">Viewports</a></td></tr> -<tr><td></td><td valign="top"><a href="Viewports.html#index-viewport_002dy"><code>viewport-y</code></a>:</td><td> </td><td valign="top"><a href="Viewports.html">Viewports</a></td></tr> -<tr><td></td><td valign="top"><a href="Viewports.html#index-viewport_003f"><code>viewport?</code></a>:</td><td> </td><td valign="top"><a href="Viewports.html">Viewports</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-W">W</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Scripts.html#index-wait_002duntil"><code>wait-until</code></a>:</td><td> </td><td valign="top"><a href="Scripts.html">Scripts</a></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-white"><code>white</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-window_002dheight"><code>window-height</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-window_002dtitle"><code>window-title</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-window_002dwidth"><code>window-width</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-window_002dx"><code>window-x</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-window_002dy"><code>window-y</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-window_003f"><code>window?</code></a>:</td><td> </td><td valign="top"><a href="Window-Manipulation.html">Window Manipulation</a></td></tr> -<tr><td></td><td valign="top"><a href="Agendas.html#index-with_002dagenda"><code>with-agenda</code></a>:</td><td> </td><td valign="top"><a href="Agendas.html">Agendas</a></td></tr> -<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-with_002dgraphics_002dstate"><code>with-graphics-state</code></a>:</td><td> </td><td valign="top"><a href="Rendering-Engine.html">Rendering Engine</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-with_002dmapped_002dbuffer"><code>with-mapped-buffer</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Buffers.html#index-with_002dmapped_002dvertex_002dattribute"><code>with-mapped-vertex-attribute</code></a>:</td><td> </td><td valign="top"><a href="Buffers.html">Buffers</a></td></tr> -<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-with_002dprojection"><code>with-projection</code></a>:</td><td> </td><td valign="top"><a href="Rendering-Engine.html">Rendering Engine</a></td></tr> -<tr><td></td><td valign="top"><a href="Vector-Paths.html#index-with_002dstyle"><code>with-style</code></a>:</td><td> </td><td valign="top"><a href="Vector-Paths.html">Vector Paths</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -<tr><th id="Index_fn_letter-Y">Y</th><td></td><td></td></tr> -<tr><td></td><td valign="top"><a href="Colors.html#index-yellow"><code>yellow</code></a>:</td><td> </td><td valign="top"><a href="Colors.html">Colors</a></td></tr> -<tr><td></td><td valign="top"><a href="Scripts.html#index-yield"><code>yield</code></a>:</td><td> </td><td valign="top"><a href="Scripts.html">Scripts</a></td></tr> -<tr><td colspan="4"> <hr /></td></tr> -</table> -<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#Index_fn_symbol-1"><b>%</b></a> - -<br /> -<a class="summary-letter" href="#Index_fn_letter-A"><b>A</b></a> - -<a class="summary-letter" href="#Index_fn_letter-B"><b>B</b></a> - -<a class="summary-letter" href="#Index_fn_letter-C"><b>C</b></a> - -<a class="summary-letter" href="#Index_fn_letter-D"><b>D</b></a> - -<a class="summary-letter" href="#Index_fn_letter-E"><b>E</b></a> - -<a class="summary-letter" href="#Index_fn_letter-F"><b>F</b></a> - -<a class="summary-letter" href="#Index_fn_letter-G"><b>G</b></a> - -<a class="summary-letter" href="#Index_fn_letter-H"><b>H</b></a> - -<a class="summary-letter" href="#Index_fn_letter-I"><b>I</b></a> - -<a class="summary-letter" href="#Index_fn_letter-J"><b>J</b></a> - -<a class="summary-letter" href="#Index_fn_letter-K"><b>K</b></a> - -<a class="summary-letter" href="#Index_fn_letter-L"><b>L</b></a> - -<a class="summary-letter" href="#Index_fn_letter-M"><b>M</b></a> - -<a class="summary-letter" href="#Index_fn_letter-N"><b>N</b></a> - -<a class="summary-letter" href="#Index_fn_letter-O"><b>O</b></a> - -<a class="summary-letter" href="#Index_fn_letter-P"><b>P</b></a> - -<a class="summary-letter" href="#Index_fn_letter-Q"><b>Q</b></a> - -<a class="summary-letter" href="#Index_fn_letter-R"><b>R</b></a> - -<a class="summary-letter" href="#Index_fn_letter-S"><b>S</b></a> - -<a class="summary-letter" href="#Index_fn_letter-T"><b>T</b></a> - -<a class="summary-letter" href="#Index_fn_letter-U"><b>U</b></a> - -<a class="summary-letter" href="#Index_fn_letter-V"><b>V</b></a> - -<a class="summary-letter" href="#Index_fn_letter-W"><b>W</b></a> - -<a class="summary-letter" href="#Index_fn_letter-Y"><b>Y</b></a> - -</td></tr></table> - -<hr /> -<div class="header"> -<p> -Previous: <a href="Copying-This-Manual.html" accesskey="p" rel="prev">Copying This Manual</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Input-Devices.html b/manuals/chickadee/Input-Devices.html deleted file mode 100644 index 93b86d4..0000000 --- a/manuals/chickadee/Input-Devices.html +++ /dev/null @@ -1,156 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Input Devices (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Input Devices (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Input Devices (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Kernel.html" rel="up" title="Kernel" /> -<link href="Window-Manipulation.html" rel="next" title="Window Manipulation" /> -<link href="The-Game-Loop.html" rel="prev" title="The Game Loop" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Input-Devices"></span><div class="header"> -<p> -Next: <a href="Window-Manipulation.html" accesskey="n" rel="next">Window Manipulation</a>, Previous: <a href="The-Game-Loop.html" accesskey="p" rel="prev">The Game Loop</a>, Up: <a href="Kernel.html" accesskey="u" rel="up">Kernel</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Input-Devices-1"></span><h4 class="subsection">5.1.2 Input Devices</h4> - -<p>While <code>run-game</code> provides hooks for mouse/keyboard/controller -input events, it is often necessary to query input devices for their -current state. For example, it could be desirable to query the state -of the arrow keys every time the update hook is called to determine -which direction the player should move that frame. -</p> -<dl> -<dt id="index-key_002dpressed_003f">Procedure: <strong>key-pressed?</strong> <em>key</em></dt> -<dd><p>Return <code>#t</code> if <var>key</var> is currently being pressed. -</p></dd></dl> - -<dl> -<dt id="index-key_002dreleased_003f">Procedure: <strong>key-released?</strong> <em>key</em></dt> -<dd><p>Return <code>#t</code> if <var>key</var> is <em>not</em> currently being pressed. -</p></dd></dl> - -<dl> -<dt id="index-mouse_002dx">Procedure: <strong>mouse-x</strong></dt> -<dd><p>Return the current X coordinate of the mouse cursor. -</p></dd></dl> - -<dl> -<dt id="index-mouse_002dy">Procedure: <strong>mouse-y</strong></dt> -<dd><p>Return the current Y coordinate of the mouse cursor. -</p></dd></dl> - -<dl> -<dt id="index-mouse_002dbutton_002dpressed_003f">Procedure: <strong>mouse-button-pressed?</strong> <em>button</em></dt> -<dd><p>Return <code>#t</code> if <var>button</var> is currently being pressed. -</p></dd></dl> - -<dl> -<dt id="index-mouse_002dbutton_002dreleased_003f">Procedure: <strong>mouse-button-released?</strong> <em>button</em></dt> -<dd><p>Return <code>#t</code> if <var>button</var> is <em>not</em> currently being -pressed. -</p></dd></dl> - -<dl> -<dt id="index-controller_002daxis">Procedure: <strong>controller-axis</strong> <em>controller axis</em></dt> -<dd><p>Return a floating point value in the range [-1, 1] corresponding to -how much <var>axis</var> (an analog stick or trigger) is being pushed on -<var>controller</var>. 0 is returned if <var>axis</var> is not being pushed at -all. -</p></dd></dl> - -<dl> -<dt id="index-controller_002dname">Procedure: <strong>controller-name</strong> <em>controller</em></dt> -<dd><p>Return the name of <var>controller</var>. -</p></dd></dl> - -<dl> -<dt id="index-controller_002dbutton_002dpressed_003f">Procedure: <strong>controller-button-pressed?</strong> <em>controller button</em></dt> -<dd><p>Return <code>#t</code> if <var>button</var> on <var>controller</var> is currently -being pressed. -</p></dd></dl> - -<dl> -<dt id="index-controller_002dbutton_002dreleased_003f">Procedure: <strong>controller-button-released?</strong> <em>controller button</em></dt> -<dd><p>Return <code>#t</code> if <var>button</var> on <var>controller</var> is <em>not</em> -currently being pressed. -</p></dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/Installation.html b/manuals/chickadee/Installation.html deleted file mode 100644 index 810d4d0..0000000 --- a/manuals/chickadee/Installation.html +++ /dev/null @@ -1,107 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Installation (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Installation (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Installation (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="index.html" rel="up" title="Top" /> -<link href="Requirements.html" rel="next" title="Requirements" /> -<link href="index.html" rel="prev" title="Top" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Installation"></span><div class="header"> -<p> -Next: <a href="Getting-Started.html" accesskey="n" rel="next">Getting Started</a>, Previous: <a href="index.html" accesskey="p" rel="prev">Top</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Installation-1"></span><h2 class="chapter">1 Installation</h2> - -<p>Chickadee is available for download from its website at -<a href="dthompson.us/projects/chickadee.html">dthompson.us/projects/chickadee.html</a>. This section describes -the software requirements of Chickadee, as well as how to install it. -</p> -<p>The build procedure for Chickadee is the same as for GNU software -packages, and is not covered here. Please see the files <samp>README</samp> -and <samp>INSTALL</samp> for additional details. -</p> -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="Requirements.html" accesskey="1">Requirements</a></td><td> </td><td align="left" valign="top">Software needed to build and run Chickadee. -</td></tr> -</table> - - - - -</body> -</html> diff --git a/manuals/chickadee/Invoking-chickadee-bundle.html b/manuals/chickadee/Invoking-chickadee-bundle.html deleted file mode 100644 index 060c8ad..0000000 --- a/manuals/chickadee/Invoking-chickadee-bundle.html +++ /dev/null @@ -1,219 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Invoking chickadee bundle (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Invoking chickadee bundle (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Invoking chickadee bundle (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Command-Line-Interface.html" rel="up" title="Command Line Interface" /> -<link href="Live-Coding.html" rel="next" title="Live Coding" /> -<link href="Invoking-chickadee-play.html" rel="prev" title="Invoking chickadee play" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Invoking-chickadee-bundle"></span><div class="header"> -<p> -Previous: <a href="Invoking-chickadee-play.html" accesskey="p" rel="prev">Invoking chickadee play</a>, Up: <a href="Command-Line-Interface.html" accesskey="u" rel="up">Command Line Interface</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Invoking-chickadee-bundle-1"></span><h3 class="section">3.2 Invoking <code>chickadee bundle</code></h3> - -<p>Distributing games is difficult. While Chickadee games are free -software, it would be far too burdensome on the player to ask them to -compile a game from source in order to try it out. Many potential -players will simply not even try. Players expect to be able to -download a compressed archive, extract it, and play. If there are any -more steps than that then the chances of the game being played drop -dramatically. If you can’t beat ’em, join ’em. The -<code>chickadee bundle</code> tool creates redistributable binary bundles -by combining the game code and assets with shared libraries and -executables from the host operating system. -</p> -<p>Bundling is currently only supported on Linux. In the future, it may -be possible to bundle on MacOS. Patches very much welcome for that. -</p> -<p>It should be noted that bundling is a problematic way to distribute -software. All of the libraries that the bundled application includes -are separated from the distribution that was so carefully making sure -that they stay up-to-date with regard to security patches. The -bundled libraries are frozen in time, vulnerabilities and all. -Unfortunately, the release model used by the most popular -distributions, while wonderful for stable, mature software, does not -fit the needs of game distribution at all. So, we compromise, knowing -that most games are only played for only a short amount of time before -being disposed. Perhaps, in time, the Linux world will shift to using -more robust package management solutions such as -<a href="https://guix.gnu.org">GNU Guix</a> which support long-term -maintenance of stable software as well as the “fire and forget” -nature of game releases. And maybe a game made with Chickadee will -become so popular that major distributions decide to package it, but -let’s get back to reality. -</p> -<p>To get started with bundling, simply add a <samp>bundle.scm</samp> file to -the root of the project directory. It could look something like this: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-symbol">'</span><span class="syntax-open">(</span><span class="syntax-open">(</span><span class="syntax-symbol">asset-directories</span> <span class="syntax-symbol">.</span> <span class="syntax-open">(</span><span class="syntax-string">"images"</span> <span class="syntax-string">"models"</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">bundle-name</span> <span class="syntax-symbol">.</span> <span class="syntax-string">"the-legend-of-emacs-1.0"</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">code</span> <span class="syntax-symbol">.</span> <span class="syntax-string">"the-legend-of-emacs.scm"</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">launcher-name</span> <span class="syntax-symbol">.</span> <span class="syntax-string">"the-legend-of-emacs"</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>To create the bundle, simply run <code>chickadee bundle</code>. Upon -success, the file <samp>the-legend-of-emacs-1.0.tar.gz</samp> would be -created in the current directory. -</p> -<p>To maximize the chances that the bundle will work on someone else’s -computer, it’s best to build on the oldest supported Linux -distribution available. As of this writing, Ubuntu 18.04 LTS is a -good choice. -</p> -<p>In addition to including system libraries and executables, -<code>chickadee bundle</code> also includes the compiled Guile bytecode -(the <samp>.go</samp> files) for all modules used by the game. The module -source files are <em>not</em> included, so it’s critical that all of the -modules used by the game have been compiled. -</p> -<p>Available options: -</p> -<ul> -<li> <code>asset-directories</code> - -<p>A list of directories that hold static game assets such as images or -audio. Files in these directories will be copied into the bundle -archive. -</p> -</li><li> <code>binary-directories</code> - -<p>A list of directories to search for system binaries, such as -<code>guile</code>. By default, <samp>/usr/bin</samp> is searched. -</p> -</li><li> <code>bundle-name</code> - -<p>The name of the bundle archive. By default, the name is -<code>"chickadee-bundle"</code>. -</p> -</li><li> <code>launcher-name</code> - -<p>The name of the launcher script. By default, the name is -<code>"launch-game"</code>. -</p> -</li><li> <code>libraries</code> - -<p>A list of shared libraries to include in the bundle. By default, all -of the libraries necessary for running Guile, Guile-SDL2, and -Chickadee are included. This list is compatible with the names given -to the libraries on Ubuntu, which may be different than on other -distributions. In such cases, this list will need to be customized. -See below for more information on the <code>%default-config</code> variable -that can be of help. -</p> -</li><li> <code>library-directories</code> - -<p>A list of directories to search for system shared libraries. By -default, the list contains common directories used by most -distributions. -</p> -</li><li> <code>method</code> - -<p>The method by which the game is launched. Can be either <code>play</code> -or <code>manual</code>. The default is <code>play</code>, which means that -<code>chickadee play</code> will be used to launch the game. For games -that do not use <code>chickadee play</code>, opting to start the game -loop on their own, the <code>manual</code> method should be used. -</p> -</li><li> <code>play-args</code> - -<p>A list of command line arguments to pass to <code>chickadee play</code>. -Only used when the <code>method</code> option is set to <code>play</code>. -</p> -</li></ul> - -<p>Default configuration options, such as the list of C shared libaries, -can be found in the <code>%default-config</code> variable. This way they -can be programatically modified, if necessary. -</p> -<dl> -<dt id="index-_0025default_002dconfig">Variable: <strong>%default-config</strong></dt> -<dd><p>An association list of default configuration options. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Previous: <a href="Invoking-chickadee-play.html" accesskey="p" rel="prev">Invoking chickadee play</a>, Up: <a href="Command-Line-Interface.html" accesskey="u" rel="up">Command Line Interface</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Invoking-chickadee-play.html b/manuals/chickadee/Invoking-chickadee-play.html deleted file mode 100644 index 786626a..0000000 --- a/manuals/chickadee/Invoking-chickadee-play.html +++ /dev/null @@ -1,239 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Invoking chickadee play (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Invoking chickadee play (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Invoking chickadee play (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Command-Line-Interface.html" rel="up" title="Command Line Interface" /> -<link href="Invoking-chickadee-bundle.html" rel="next" title="Invoking chickadee bundle" /> -<link href="Command-Line-Interface.html" rel="prev" title="Command Line Interface" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Invoking-chickadee-play"></span><div class="header"> -<p> -Next: <a href="Invoking-chickadee-bundle.html" accesskey="n" rel="next">Invoking chickadee bundle</a>, Up: <a href="Command-Line-Interface.html" accesskey="u" rel="up">Command Line Interface</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Invoking-chickadee-play-1"></span><h3 class="section">3.1 Invoking <code>chickadee play</code></h3> - -<p>The <code>chickadee play</code> command is used to open a window and run -the Chickadee game contained within a Scheme source file. -</p> -<div class="example"> -<pre class="example">chickadee play the-legend-of-emacs.scm -</pre></div> - -<p>In this file, special procedures may be defined to handle various -events from the game loop: -</p> -<ul> -<li> quit-game -</li><li> draw -</li><li> update -</li><li> key-press -</li><li> key-release -</li><li> text-input -</li><li> mouse-press -</li><li> mouse-release -</li><li> mouse-move -</li><li> mouse-wheel -</li><li> controller-add -</li><li> controller-remove -</li><li> controller-press -</li><li> controller-release -</li><li> controller-move -</li></ul> - -<p>See <a href="The-Game-Loop.html">The Game Loop</a> for complete information on all of these -hooks, such as the arguments that each procedure receives. -</p> -<p>In additional to evaluating the specified source file, the directory -containing that file is added to Guile’s load path so that games can -easily be divided into many different files. Furthermore, that -directory is entered prior to evaluating the file so that data files -(images, sounds, etc.) can be loaded relative to the main source file, -regardless of what the current directory was when <code>chickadee -play</code> was invoked. -</p> -<p>Many aspects of the initial game window and environment can be -controlled via the following options: -</p> -<dl compact="compact"> -<dt><code>--title=<var>title</var></code></dt> -<dt><code>-t <var>title</var></code></dt> -<dd> -<p>Set the window title to <var>title</var>. -</p> -</dd> -<dt><code>--width=<var>width</var></code></dt> -<dt><code>-w <var>width</var></code></dt> -<dd> -<p>Set the window width to <var>width</var> pixels. -</p> -</dd> -<dt><code>--height=<var>height</var></code></dt> -<dt><code>-h <var>height</var></code></dt> -<dd> -<p>Set the window height to <var>height</var> pixels. -</p> -</dd> -<dt><code>--fullscreen</code></dt> -<dt><code>-f</code></dt> -<dd> -<p>Open window in fullscreen mode. -</p> -</dd> -<dt><code>--resizable</code></dt> -<dt><code>-r</code></dt> -<dd> -<p>Make window resizable. -</p> -</dd> -<dt><code>--update-hz=<var>n</var></code></dt> -<dt><code>-u <var>n</var></code></dt> -<dd> -<p>Update the game <var>n</var> times per second. -</p> -</dd> -<dt><code>--clear-color=<var>color</var></code></dt> -<dt><code>-c <var>color</var></code></dt> -<dd> -<p>Set the screen clear color to <var>color</var>, a hex code in the format -<code>#RRGGBB</code>. For example, to set the clear color to black, pass -<code>--clear-color=#000000</code>. -</p> -</dd> -<dt><code>--repl</code></dt> -<dd> -<p>Launch a REPL in the terminal. This will allow the game environment -to be debugged and modified without having to stop and restart the -game after each change. -</p> -</dd> -<dt><code>--repl-server[=<var>port</var>]</code></dt> -<dd> -<p>Launch a REPL server on port <var>port</var>, or 37146 by default. -</p> -<p><code>telnet localhost 37146</code> (or whatever port number was given) -will do the trick, but using the <a href="https://www.nongnu.org/geiser/">Geiser</a> extension for Emacs is by far the best way to develop at the -REPL with Guile. Use <code>M-x connect-to-guile</code> to connect to the -REPL server. -</p> -</dd> -<dt><code>--language=<var>language</var></code></dt> -<dd> -<p>Process the input program using <var>language</var>, the identifier of a -language within Guile’s language tower. By default, unsurprisingly, -Scheme is used. -</p> -<p>For example, to use the neat -<a href="https://www.draketo.de/software/wisp">Wisp</a> language as an -alternative to Scheme’s parenthetical syntax, pass -<code>--language=wisp</code>. Wisp is not included with Guile and must be -installed separately. -</p> -</dd> -<dt><code>-x <var>extension</var></code></dt> -<dd> -<p>Add <var>extension</var> to the list of file extensions that Guile will -load. -</p> -<p>For example, Wisp files canonically use the <samp>.w</samp> extension. -Here’s what a “hello, world” Chickadee program looks like in Wisp: -</p> -<div class="example"> -<pre class="example">define : draw alpha - draw-text "Hello, world!" : vec2 260.0 240.0 -</pre></div> - -<p>Assuming the above code is saved to a <samp>hello.w</samp> file, -<code>chickadee play</code> be invoked as follows: -</p> -<div class="example"> -<pre class="example">chickadee play --language=wisp -x .w hello.w -</pre></div> - -</dd> -</dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Invoking-chickadee-bundle.html" accesskey="n" rel="next">Invoking chickadee bundle</a>, Up: <a href="Command-Line-Interface.html" accesskey="u" rel="up">Command Line Interface</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Kernel.html b/manuals/chickadee/Kernel.html deleted file mode 100644 index da55234..0000000 --- a/manuals/chickadee/Kernel.html +++ /dev/null @@ -1,106 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Kernel (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Kernel (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Kernel (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="API-Reference.html" rel="up" title="API Reference" /> -<link href="The-Game-Loop.html" rel="next" title="The Game Loop" /> -<link href="API-Reference.html" rel="prev" title="API Reference" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Kernel"></span><div class="header"> -<p> -Next: <a href="Math.html" accesskey="n" rel="next">Math</a>, Up: <a href="API-Reference.html" accesskey="u" rel="up">API Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Kernel-1"></span><h3 class="section">5.1 Kernel</h3> - -<p>This section of the manual covers the foundation of Chickadee: The -game loop and desktop environment interaction. -</p> -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="The-Game-Loop.html" accesskey="1">The Game Loop</a></td><td> </td><td align="left" valign="top">The core event loop. -</td></tr> -<tr><td align="left" valign="top">• <a href="Input-Devices.html" accesskey="2">Input Devices</a></td><td> </td><td align="left" valign="top">Mouse, keyboard, controller input. -</td></tr> -<tr><td align="left" valign="top">• <a href="Window-Manipulation.html" accesskey="3">Window Manipulation</a></td><td> </td><td align="left" valign="top">Inspect and modify the graphical window. -</td></tr> -</table> - - - - -</body> -</html> diff --git a/manuals/chickadee/Lights.html b/manuals/chickadee/Lights.html deleted file mode 100644 index 4ae75ff..0000000 --- a/manuals/chickadee/Lights.html +++ /dev/null @@ -1,212 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Lights (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Lights (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Lights (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Skyboxes.html" rel="next" title="Skyboxes" /> -<link href="Models.html" rel="prev" title="Models" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Lights"></span><div class="header"> -<p> -Next: <a href="Skyboxes.html" accesskey="n" rel="next">Skyboxes</a>, Previous: <a href="Models.html" accesskey="p" rel="prev">Models</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Lights-1"></span><h4 class="subsection">5.3.9 Lights</h4> - -<p>The <code>(chickadee graphics light)</code> module provides a data type for -dynamic lights that can be used to light 3D objects (such as -<a href="Models.html">Models</a> or <a href="Meshes.html">Meshes</a>.) -</p> -<p>There are 3 types of dynamic lights: -</p> -<ul> -<li> point light: -Emits light in all directions from a specific point in space, like a -light bulb. -</li><li> directional light: -Emits light of a constant intensity in a direction, like sunlight. -</li><li> spot light: -Emits a cone of light in a direction, like a flashlight. -</li></ul> - -<dl> -<dt id="index-make_002dpoint_002dlight">Procedure: <strong>make-point-light</strong> <em>[#:position (vec3 0 0 0)] [#:color black] [#:intensity 1]</em></dt> -<dd> -<p>Return a new point light located at <var>position</var> that emits -<var>color</var> light. -</p></dd></dl> - -<dl> -<dt id="index-make_002ddirectional_002dlight">Procedure: <strong>make-directional-light</strong> <em>[#:direction (vec3 0 -1 0)] [#:color black] [#:intensity 1]</em></dt> -<dd> -<p>Return a new directional light that emits <var>color</var> light in -<var>direction</var>. -</p></dd></dl> - -<dl> -<dt id="index-make_002dspot_002dlight">Procedure: <strong>make-spot-light</strong> <em>[#:position (vec3 0 0 0)] [#:direction (vec3 0 -1 0)] [#:color black] [#:cut-off <em>Ï€/4</em>] [#:intensity 1]</em></dt> -<dd> -<p>Return a new spot light located at <var>position</var> that emits -<var>color</var> light in <var>direction</var> in a cone that cuts off at -<var>cut-off</var> radians. -</p></dd></dl> - -<dl> -<dt id="index-point_002dlight_003f">Procedure: <strong>point-light?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a point light. -</p></dd></dl> - -<dl> -<dt id="index-directional_002dlight_003f">Procedure: <strong>directional-light?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a directional light. -</p></dd></dl> - -<dl> -<dt id="index-spot_002dlight_003f">Procedure: <strong>spot-light?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a spot light. -</p></dd></dl> - -<dl> -<dt id="index-light_002dtype">Procedure: <strong>light-type</strong> <em>light</em></dt> -<dd><p>Return the type of <var>light</var>, one of: -</p> -<ul> -<li> point -</li><li> directional -</li><li> spot -</li></ul> - -</dd></dl> - -<dl> -<dt id="index-light_002dcolor">Procedure: <strong>light-color</strong> <em>light</em></dt> -<dd><p>Return the color of <var>light</var>. -</p></dd></dl> - -<dl> -<dt id="index-light_002dintensity">Procedure: <strong>light-intensity</strong> <em>light</em></dt> -<dd><p>Return the intensity of <var>light</var>. -</p></dd></dl> - -<dl> -<dt id="index-light_002dposition">Procedure: <strong>light-position</strong> <em>light</em></dt> -<dd><p>Return the position of <var>light</var>. The value is irrelevant for -directional lights. -</p></dd></dl> - -<dl> -<dt id="index-light_002ddirection">Procedure: <strong>light-direction</strong> <em>light</em></dt> -<dd><p>Return the direction of <var>light</var>. The value is irrelevant for -point lights. -</p></dd></dl> - -<dl> -<dt id="index-light_002dcut_002doff">Procedure: <strong>light-cut-off</strong> <em>light</em></dt> -<dd><p>Return the cosine of the cut off angle of <var>light</var>. The value is -only relevant for spot lights. -</p></dd></dl> - -<dl> -<dt id="index-set_002dlight_002dcolor_0021">Procedure: <strong>set-light-color!</strong> <em>light color</em></dt> -<dd><p>Set the color of <var>light</var> to <var>color</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dlight_002dposition_0021">Procedure: <strong>set-light-position!</strong> <em>light position</em></dt> -<dd><p>Set the position of <var>light</var> to <var>position</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dlight_002ddirection_0021">Procedure: <strong>set-light-direction!</strong> <em>light direction</em></dt> -<dd><p>Set the direction of <var>light</var> to <var>direction</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dlight_002dcut_002doff_0021">Procedure: <strong>set-light-cut-off!</strong> <em>light cut-off</em></dt> -<dd><p>Set the cut off angle of <var>light</var> to <var>cut-off</var>. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Skyboxes.html" accesskey="n" rel="next">Skyboxes</a>, Previous: <a href="Models.html" accesskey="p" rel="prev">Models</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Live-Coding.html b/manuals/chickadee/Live-Coding.html deleted file mode 100644 index e34b29e..0000000 --- a/manuals/chickadee/Live-Coding.html +++ /dev/null @@ -1,133 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Live Coding (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Live Coding (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Live Coding (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="index.html" rel="up" title="Top" /> -<link href="API-Reference.html" rel="next" title="API Reference" /> -<link href="Invoking-chickadee-bundle.html" rel="prev" title="Invoking chickadee bundle" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Live-Coding"></span><div class="header"> -<p> -Next: <a href="API-Reference.html" accesskey="n" rel="next">API Reference</a>, Previous: <a href="Command-Line-Interface.html" accesskey="p" rel="prev">Command Line Interface</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Live-Coding-1"></span><h2 class="chapter">4 Live Coding</h2> - -<p>One of the biggest appeals of any Lisp dialect is the ability to use -the “read-eval-print loop” (REPL for short) to build programs -iteratively and interactively while the program is running. However, -programs that run in an event loop and respond to user input (such as -a game using the Chickadee library!) require special care for this -workflow to be pleasant. -</p> -<p>If you are using the <code>chickadee play</code> command to run your -game, then the <code>--repl</code> or <code>--repl-server</code> arguments are all -you need to get a live coding environment running. -</p> -<p>If, however, you are using <code>run-game</code> to start the game loop then -it’s still fairly easy to hook up a special kind of REPL by yourself. -</p> -<p>First, create a cooperative REPL server (It’s important to use Guile’s -cooperative REPL server instead of the standard REPL server in -<code>(system repl server)</code> to avoid thread synchronization issues). -Then, in the game loop’s update procedure, call -<code>poll-coop-repl-server</code> and pass the REPL object. Here is a -template to follow: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">use-modules</span> <span class="syntax-open">(</span><span class="syntax-symbol">chickadee</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">system</span> <span class="syntax-symbol">repl</span> <span class="syntax-symbol">coop-server</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">repl</span> <span class="syntax-open">(</span><span class="syntax-symbol">spawn-coop-repl-server</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-open">(</span><span class="syntax-symbol">update</span> <span class="syntax-symbol">dt</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">poll-coop-repl-server</span> <span class="syntax-symbol">repl</span><span class="syntax-close">)</span> - <span class="syntax-symbol">...</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-symbol">run-game</span> <span class="syntax-keyword">#:update</span> <span class="syntax-symbol">update</span> <span class="syntax-symbol">...</span><span class="syntax-close">)</span> -</pre></div> - -<p>To use the REPL, connect to it via port 37146. Telnet will do the -trick, but using the <a href="https://www.nongnu.org/geiser/">Geiser</a> -extension for Emacs is by far the best way to develop at the REPL with -Guile. Use <code>M-x connect-to-guile</code> to connect to the REPL server. -</p> - - - -</body> -</html> diff --git a/manuals/chickadee/Math.html b/manuals/chickadee/Math.html deleted file mode 100644 index 7b6456c..0000000 --- a/manuals/chickadee/Math.html +++ /dev/null @@ -1,116 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Math (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Math (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Math (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="API-Reference.html" rel="up" title="API Reference" /> -<link href="Basics.html" rel="next" title="Basics" /> -<link href="Window-Manipulation.html" rel="prev" title="Window Manipulation" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Math"></span><div class="header"> -<p> -Next: <a href="Graphics.html" accesskey="n" rel="next">Graphics</a>, Previous: <a href="Kernel.html" accesskey="p" rel="prev">Kernel</a>, Up: <a href="API-Reference.html" accesskey="u" rel="up">API Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Math-1"></span><h3 class="section">5.2 Math</h3> - -<p>Chickadee contains data types and procedures for performing the most -common computations in video game simulations such as linear algebra -with vectors and matrices and axis-aligned bounding box collision -detection. -</p> -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="Basics.html" accesskey="1">Basics</a></td><td> </td><td align="left" valign="top">Commonly used, miscellaneous things. -</td></tr> -<tr><td align="left" valign="top">• <a href="Vectors.html" accesskey="2">Vectors</a></td><td> </td><td align="left" valign="top">Euclidean vectors. -</td></tr> -<tr><td align="left" valign="top">• <a href="Rectangles.html" accesskey="3">Rectangles</a></td><td> </td><td align="left" valign="top">Axis-aligned bounding boxes. -</td></tr> -<tr><td align="left" valign="top">• <a href="Matrices.html" accesskey="4">Matrices</a></td><td> </td><td align="left" valign="top">Transformation matrices. -</td></tr> -<tr><td align="left" valign="top">• <a href="Quaternions.html" accesskey="5">Quaternions</a></td><td> </td><td align="left" valign="top">Rotations about an arbitrary axis. -</td></tr> -<tr><td align="left" valign="top">• <a href="Easings.html" accesskey="6">Easings</a></td><td> </td><td align="left" valign="top">Easing functions for interesting animations. -</td></tr> -<tr><td align="left" valign="top">• <a href="Bezier-Curves.html" accesskey="7">Bezier Curves</a></td><td> </td><td align="left" valign="top">Cubic Bezier curves and paths in 2D space. -</td></tr> -</table> - - - - -</body> -</html> diff --git a/manuals/chickadee/Matrices.html b/manuals/chickadee/Matrices.html deleted file mode 100644 index bf65917..0000000 --- a/manuals/chickadee/Matrices.html +++ /dev/null @@ -1,409 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Matrices (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Matrices (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Matrices (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Math.html" rel="up" title="Math" /> -<link href="Quaternions.html" rel="next" title="Quaternions" /> -<link href="Rectangles.html" rel="prev" title="Rectangles" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Matrices"></span><div class="header"> -<p> -Next: <a href="Quaternions.html" accesskey="n" rel="next">Quaternions</a>, Previous: <a href="Rectangles.html" accesskey="p" rel="prev">Rectangles</a>, Up: <a href="Math.html" accesskey="u" rel="up">Math</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Matrices-1"></span><h4 class="subsection">5.2.4 Matrices</h4> - -<p>The <code>(chickadee math matrix)</code> module provides an interface for -working with the most common type of matrices in game development: 4x4 -transformation matrices. -</p> -<p><em>Another Note About Performance</em> -</p> -<p>Much like the vector API, the matrix API is commonly used in -performance critical code paths. In order to reduce the amount of -garbage generated and improve matrix multiplication performance, there -are many procedures that perform in-place modifications of matrix -objects. -</p> -<span id="g_t3x3-Matrices"></span><h4 class="subsubsection">5.2.4.1 3x3 Matrices</h4> - -<dl> -<dt id="index-make_002dmatrix3">Procedure: <strong>make-matrix3</strong> <em>aa ab ac ba bb bc ca cb cc</em></dt> -<dd><p>Return a new 3x3 initialized with the given 9 values in column-major -format. -</p></dd></dl> - -<dl> -<dt id="index-make_002dnull_002dmatrix3">Procedure: <strong>make-null-matrix3</strong></dt> -<dd><p>Return a new 3x3 matrix with all values initialized to 0. -</p></dd></dl> - -<dl> -<dt id="index-make_002didentity_002dmatrix3">Procedure: <strong>make-identity-matrix3</strong></dt> -<dd><p>Return a new 3x3 identity matrix. Any matrix multiplied by the -identity matrix yields the original matrix. This procedure is -equivalent to the following code: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">make-matrix3</span> <span class="syntax-symbol">1</span> <span class="syntax-symbol">0</span> <span class="syntax-symbol">0</span> - <span class="syntax-symbol">0</span> <span class="syntax-symbol">1</span> <span class="syntax-symbol">0</span> - <span class="syntax-symbol">0</span> <span class="syntax-symbol">0</span> <span class="syntax-symbol">1</span><span class="syntax-close">)</span> -</pre></div> - -</dd></dl> - -<dl> -<dt id="index-matrix3_003f">Procedure: <strong>matrix3?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a 3x3 matrix. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_003d">Procedure: <strong>matrix3=</strong> <em>m1 m2</em></dt> -<dd><p>Return <code>#t</code> if <var>m1</var> is the same matrix as <var>m2</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002dcopy">Procedure: <strong>matrix3-copy</strong> <em>matrix</em></dt> -<dd><p>Return a new 3x3 matrix that is a copy of <var>matrix</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002a">Procedure: <strong>matrix3*</strong> <em>. matrices</em></dt> -<dd><p>Return a new 3x3 matrix containing the product of multiplying all of -the given <var>matrices</var>. -</p> -<p>Note: Remember that matrix multiplication is <strong>not</strong> commutative! -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002dtranslate">Procedure: <strong>matrix3-translate</strong> <em>v</em></dt> -<dd><p>Return a new 3x3 matrix that represents a translation by <var>v</var>, a 2D -vector. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002dscale">Procedure: <strong>matrix3-scale</strong> <em>s</em></dt> -<dd><p>Return a new 3x3 matrix that represents a scaling along the x and y -axes by the scaling factor <var>s</var>, a number or 2D vector. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002drotate">Procedure: <strong>matrix3-rotate</strong> <em>angle</em></dt> -<dd><p>Return a new 3x3 matrix that represents a rotation by <var>angle</var> -radians. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002dtransform">Procedure: <strong>matrix3-transform</strong> <em>matrix v</em></dt> -<dd><p>Return a new 2D vector that is <var>v</var> as transformed by the 3x3 -matrix <var>matrix</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002dinverse">Procedure: <strong>matrix3-inverse</strong> <em>matrix</em></dt> -<dd><p>Return the inverse of <var>matrix</var>. -</p></dd></dl> - -<p>The following procedures perform in-place, destructive updates to 3x3 -matrix objects: -</p> -<dl> -<dt id="index-matrix3_002dcopy_0021">Procedure: <strong>matrix3-copy!</strong> <em>src dest</em></dt> -<dd><p>Copy the contents of matrix <var>src</var> to <var>dest</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002didentity_0021">Procedure: <strong>matrix3-identity!</strong> <em>matrix</em></dt> -<dd><p>Modify <var>matrix</var> in-place to contain the identity matrix. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002dmult_0021">Procedure: <strong>matrix3-mult!</strong> <em>dest a b</em></dt> -<dd><p>Multiply the 3x3 matrix <var>a</var> by the 3x3 matrix <var>b</var> and store -the result in the 3x3 matrix <var>dest</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002dtranslate_0021">Procedure: <strong>matrix3-translate!</strong> <em>matrix v</em></dt> -<dd><p>Modify <var>matrix</var> in-place to contain a translation by <var>v</var>, a 2D -vector. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002dscale_0021">Procedure: <strong>matrix3-scale!</strong> <em>matrix s</em></dt> -<dd><p>Modify <var>matrix</var> in-place to contain a scaling along the x and y -axes by the scaling factor <var>s</var>, a number or 2D vector. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002drotate_0021">Procedure: <strong>matrix3-rotate!</strong> <em>matrix angle</em></dt> -<dd><p>Modify <var>matrix</var> in-place to contain a rotation by <var>angle</var> -radians. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002dtransform_0021">Procedure: <strong>matrix3-transform!</strong> <em>matrix v</em></dt> -<dd><p>Modify the 2D vector <var>v</var> in-place to contain <var>v</var> as -transformed by the 3x3 matrix <var>matrix</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix3_002dinverse_0021">Procedure: <strong>matrix3-inverse!</strong> <em>matrix target</em></dt> -<dd><p>Compute the inverse of <var>matrix</var> and store the results in -<var>target</var>. -</p></dd></dl> - -<span id="g_t4x4-Matrices"></span><h4 class="subsubsection">5.2.4.2 4x4 Matrices</h4> - -<dl> -<dt id="index-make_002dmatrix4">Procedure: <strong>make-matrix4</strong> <em>aa ab ac ad ba bb bc bd ca cb cc cd da db dc dd</em></dt> -<dd> -<p>Return a new 4x4 matrix initialized with the given 16 values in -column-major format. -</p></dd></dl> - -<dl> -<dt id="index-make_002dnull_002dmatrix4">Procedure: <strong>make-null-matrix4</strong></dt> -<dd><p>Return a new 4x4 matrix with all values initialized to 0. -</p></dd></dl> - -<dl> -<dt id="index-make_002didentity_002dmatrix4">Procedure: <strong>make-identity-matrix4</strong></dt> -<dd><p>Return a new 4x4 identity matrix. Any matrix multiplied by the -identity matrix yields the original matrix. This procedure is -equivalent to the following code: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">make-matrix4</span> <span class="syntax-symbol">1</span> <span class="syntax-symbol">0</span> <span class="syntax-symbol">0</span> <span class="syntax-symbol">0</span> - <span class="syntax-symbol">0</span> <span class="syntax-symbol">1</span> <span class="syntax-symbol">0</span> <span class="syntax-symbol">0</span> - <span class="syntax-symbol">0</span> <span class="syntax-symbol">0</span> <span class="syntax-symbol">1</span> <span class="syntax-symbol">0</span> - <span class="syntax-symbol">0</span> <span class="syntax-symbol">0</span> <span class="syntax-symbol">0</span> <span class="syntax-symbol">1</span><span class="syntax-close">)</span> -</pre></div> - -</dd></dl> - -<dl> -<dt id="index-matrix4_003f">Procedure: <strong>matrix4?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a 4x4 matrix. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_003d">Procedure: <strong>matrix4=</strong> <em>m1 m2</em></dt> -<dd><p>Return <code>#t</code> if <var>m1</var> is the same matrix as <var>m2</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002dcopy">Procedure: <strong>matrix4-copy</strong> <em>matrix</em></dt> -<dd><p>Return a new 4x4 matrix that is a copy of <var>matrix</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002a">Procedure: <strong>matrix4*</strong> <em>. matrices</em></dt> -<dd><p>Return a new 4x4 matrix containing the product of multiplying all of -the given <var>matrices</var>. -</p> -<p>Note: Remember that matrix multiplication is <strong>not</strong> commutative! -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002dinverse">Procedure: <strong>matrix4-inverse</strong> <em>matrix</em></dt> -<dd><p>Return the inverse of <var>matrix</var>. -</p> -<p>A matrix multiplied by its inverse is the identity matrix, thought not -always exactly due to the nature of floating point numbers. -</p></dd></dl> - -<dl> -<dt id="index-orthographic_002dprojection">Procedure: <strong>orthographic-projection</strong> <em>left right top bottom near far</em></dt> -<dd> -<p>Return a new 4x4 matrix that represents an orthographic (2D) -projection for the horizontal clipping plane <var>top</var> and -<var>bottom</var>, the vertical clipping plane <var>top</var> and <var>bottom</var>, -and the depth clipping plane <var>near</var> and <var>far</var>. -</p></dd></dl> - -<dl> -<dt id="index-perspective_002dprojection">Procedure: <strong>perspective-projection</strong> <em>fov aspect-ratio near far</em></dt> -<dd> -<p>Return a new 4x4 matrix that represents a perspective (3D) projection -with a field of vision of <var>fov</var> radians, an aspect ratio of -<var>aspect-ratio</var>, and a depth clipping plane defined by <var>near</var> -and <var>far</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002dtranslate">Procedure: <strong>matrix4-translate</strong> <em>x</em></dt> -<dd><p>Return a new 4x4 matrix that represents a translation by <var>x</var>, a 2D -vector, a 3D vector, or a rectangle (in which case the bottom-left -corner of the rectangle is used). -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002dscale">Procedure: <strong>matrix4-scale</strong> <em>s</em></dt> -<dd><p>Return a new 4x4 matrix that represents a scaling along the X, Y, and -Z axes by the scaling factor <var>s</var>, a real number. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002drotate">Procedure: <strong>matrix4-rotate</strong> <em>q</em></dt> -<dd><p>Return a new 4x4 matrix that represents a rotation about an arbitrary -axis defined by the quaternion <var>q</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002drotate_002dz">Procedure: <strong>matrix4-rotate-z</strong> <em>theta</em></dt> -<dd><p>Return a new 4x4 matrix that represents a rotation about the Z axis by -<var>theta</var> radians. -</p></dd></dl> - -<p>The following procedures perform in-place, destructive updates to 4x4 -matrix objects: -</p> -<dl> -<dt id="index-matrix4_002dcopy_0021">Procedure: <strong>matrix4-copy!</strong> <em>src dest</em></dt> -<dd><p>Copy the contents of matrix <var>src</var> to <var>dest</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002didentity_0021">Procedure: <strong>matrix4-identity!</strong> <em>matrix</em></dt> -<dd><p>Modify <var>matrix</var> in-place to contain the identity matrix. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002dmult_0021">Procedure: <strong>matrix4-mult!</strong> <em>dest a b</em></dt> -<dd><p>Multiply the 4x4 matrix <var>a</var> by the 4x4 matrix <var>b</var> and store -the result in the 4x4 matrix <var>dest</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002dinverse_0021">Procedure: <strong>matrix4-inverse!</strong> <em>matrix target</em></dt> -<dd><p>Compute the inverse of <var>matrix</var> and store the result in -<var>target</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002dtranslate_0021">Procedure: <strong>matrix4-translate!</strong> <em>matrix x</em></dt> -<dd><p>Modify <var>matrix</var> in-place to contain a translation by <var>x</var>, a 2D -vector, a 3D vector, or a rectangle (in which case the bottom-left -corner of the rectangle is used). -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002dscale_0021">Procedure: <strong>matrix4-scale!</strong> <em>matrix s</em></dt> -<dd><p>Modify <var>matrix</var> in-place to contain a scaling along the X, Y, and -Z axes by the scaling factor <var>s</var>, a real number. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002drotate_0021">Procedure: <strong>matrix4-rotate!</strong> <em>matrix q</em></dt> -<dd><p>Modify <var>matrix</var> in-place to contain a rotation about an arbitrary -axis defined by the quaternion <var>q</var>. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002drotate_002dz_0021">Procedure: <strong>matrix4-rotate-z!</strong> <em>matrix theta</em></dt> -<dd><p>Modify <var>matrix</var> in-place to contain a rotation about the Z axis by -<var>theta</var> radians. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002d2d_002dtransform_0021">Procedure: <strong>matrix4-2d-transform!</strong> <em>matrix [#:origin] [#:position] [#:rotation] [#:scale] [#:shear]</em></dt> -<dd> -<p>Modify <var>matrix</var> in-place to contain the transformation described -by <var>position</var>, a 2D vector or rectangle, <var>rotation</var>, a scalar -representing a rotation about the Z axis, <var>scale</var>, a 2D vector, -and <var>shear</var>, a 2D vector. The transformation happens with respect -to <var>origin</var>, a 2D vector. If an argument is not provided, that -particular transformation will not be included in the result. -</p></dd></dl> - -<dl> -<dt id="index-matrix4_002dtransform_0021">Procedure: <strong>matrix4-transform!</strong> <em>matrix v</em></dt> -<dd><p>Modify the 2D vector <var>v</var> in-place by multiplying it by the 4x4 -matrix <var>matrix</var>. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Quaternions.html" accesskey="n" rel="next">Quaternions</a>, Previous: <a href="Rectangles.html" accesskey="p" rel="prev">Rectangles</a>, Up: <a href="Math.html" accesskey="u" rel="up">Math</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Meshes.html b/manuals/chickadee/Meshes.html deleted file mode 100644 index 7e66c4d..0000000 --- a/manuals/chickadee/Meshes.html +++ /dev/null @@ -1,413 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Meshes (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Meshes (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Meshes (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Buffers.html" rel="next" title="Buffers" /> -<link href="Skyboxes.html" rel="prev" title="Skyboxes" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Meshes"></span><div class="header"> -<p> -Next: <a href="Buffers.html" accesskey="n" rel="next">Buffers</a>, Previous: <a href="Skyboxes.html" accesskey="p" rel="prev">Skyboxes</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Meshes-1"></span><h4 class="subsection">5.3.11 Meshes</h4> - -<p>The <code>(chickadee graphics mesh)</code> modules provides procedures for -programmatically creating 3D objects (to load 3D models from a file on -disk, see <a href="#Meshes">Meshes</a>.) -</p> -<span id="Materials"></span><h4 class="subsubsection">5.3.11.1 Materials</h4> - -<p>Before we talk about meshes themselves, let’s discuss “materials.” -Materials control the appearance of 3D objects. Whether an object -appears like a rough rock, a smooth and shiny metal, etc. depends on -the material that is applied to it. Different types of materials use -different lighting models. Chickadee supports two lighting models: -The classic Blinn-Phong model and a more modern physically based -rendering (PBR) model. -</p> -<p>All materials share some common data: -</p> -<dl> -<dt id="index-material_003f">Procedure: <strong>material?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a material. -</p></dd></dl> - -<dl> -<dt id="index-material_002dname">Procedure: <strong>material-name</strong> <em>material</em></dt> -<dd><p>Return the name of <var>material</var>. -</p></dd></dl> - -<dl> -<dt id="index-material_002dshader">Procedure: <strong>material-shader</strong> <em>material</em></dt> -<dd><p>Return the shader of <var>material</var>. -</p></dd></dl> - -<dl> -<dt id="index-material_002dblend_002dmode">Procedure: <strong>material-blend-mode</strong> <em>material</em></dt> -<dd><p>Return the blend mode of <var>material</var>. -</p></dd></dl> - -<dl> -<dt id="index-material_002dpolygon_002dmode">Procedure: <strong>material-polygon-mode</strong> <em>material</em></dt> -<dd><p>Return the polygon mode of <var>material</var>. -</p></dd></dl> - -<dl> -<dt id="index-material_002dcull_002dface_002dmode">Procedure: <strong>material-cull-face-mode</strong> <em>material</em></dt> -<dd><p>Return the cull face mode of <var>material</var>. -</p></dd></dl> - -<dl> -<dt id="index-material_002ddepth_002dtest">Procedure: <strong>material-depth-test</strong> <em>material</em></dt> -<dd><p>Return the depth test of <var>material</var>. -</p></dd></dl> - -<dl> -<dt id="index-material_002dstencil_002dtest">Procedure: <strong>material-stencil-test</strong> <em>material</em></dt> -<dd><p>Return the stencil test of <var>material</var>. -</p></dd></dl> - -<dl> -<dt id="index-material_002dmultisample_003f">Procedure: <strong>material-multisample?</strong> <em>material</em></dt> -<dd><p>Return <code>#t</code> if <var>material</var> uses multisampling. -</p></dd></dl> - -<p>Materials support 5 textures. What each texture is used for depends -on the lighting model. -</p> -<dl> -<dt id="index-material_002dtexture_002d0">Procedure: <strong>material-texture-0</strong> <em>material</em></dt> -<dd><p>Return the first texture of <var>material</var>. -</p></dd></dl> - -<dl> -<dt id="index-material_002dtexture_002d1">Procedure: <strong>material-texture-1</strong> <em>material</em></dt> -<dd><p>Return the second texture of <var>material</var>. -</p></dd></dl> - -<dl> -<dt id="index-material_002dtexture_002d2">Procedure: <strong>material-texture-2</strong> <em>material</em></dt> -<dd><p>Return the third texture of <var>material</var>. -</p></dd></dl> - -<dl> -<dt id="index-material_002dtexture_002d3">Procedure: <strong>material-texture-3</strong> <em>material</em></dt> -<dd><p>Return the fourth texture of <var>material</var>. -</p></dd></dl> - -<dl> -<dt id="index-material_002dtexture_002d4">Procedure: <strong>material-texture-4</strong> <em>material</em></dt> -<dd><p>Return the fifth texture of <var>material</var>. -</p></dd></dl> - -<p>For all data that is specific to the lighting model, materials have a -“properties” field. -</p> -<dl> -<dt id="index-material_002dproperties">Procedure: <strong>material-properties</strong> <em>material</em></dt> -<dd><p>Return the lighting model specific properties of <var>material</var>. -</p></dd></dl> - -<span id="Blinn_002dPhong-Materials"></span><h4 class="subsubsection">5.3.11.2 Blinn-Phong Materials</h4> - -<p>The <code>(chickadee graphics phong)</code> module has the Blinn-Phong -lighting model: -</p> -<dl> -<dt id="index-make_002dphong_002dmaterial">Procedure: <strong>make-phong-material</strong> <em>[#:name "anonymous"] [#:blend-mode] [#:polygon-mode] [#:cull-face-mode] [#:depth-test] [#:stencil-test] [#:multisample? #f] [#:ambient-factor (vec3 1 1 1)] [#:diffuse-factor (vec3 1 1 1)] [#:specular-factor (vec3 1 1 1)] [#:shininess 32] [#:ambient-texture] [#:diffuse-texture] [#:specular-texture] [#:normal-texture]</em></dt> -<dd> -<p>Return a new Blinn-Phong material. -</p></dd></dl> - -<dl> -<dt id="index-make_002dphong_002dproperties">Procedure: <strong>make-phong-properties</strong> <em>[#:ambient] [#:diffuse] [#:specular] [#:shininess]</em></dt> -<dd> -<p>Return a new Blinn-Phong properties object. -</p></dd></dl> - -<dl> -<dt id="index-phong_002dproperties_003f">Procedure: <strong>phong-properties?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a Blinn-Phong properties object. -</p></dd></dl> - -<dl> -<dt id="index-phong_002dproperties_002dambient">Procedure: <strong>phong-properties-ambient</strong> <em>properties</em></dt> -<dd><p>Return the ambient factor of <var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-phong_002dproperties_002ddiffuse">Procedure: <strong>phong-properties-diffuse</strong> <em>properties</em></dt> -<dd><p>Return the diffuse factor of <var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-phong_002dproperties_002dspecular">Procedure: <strong>phong-properties-specular</strong> <em>properties</em></dt> -<dd><p>Return the specular factor of <var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-phong_002dproperties_002dshininess">Procedure: <strong>phong-properties-shininess</strong> <em>properties</em></dt> -<dd><p>Return the shininess factor of <var>properties</var>. -</p></dd></dl> - -<span id="PBR-Materials"></span><h4 class="subsubsection">5.3.11.3 PBR Materials</h4> - -<p>The <code>(chickadee graphics pbr)</code> module has the PBR lighting model: -</p> -<dl> -<dt id="index-make_002dpbr_002dmaterial">Procedure: <strong>make-pbr-material</strong> <em>[#:name "anonymous"] [#:blend-mode] [#:polygon-mode] [#:cull-face-mode] [#:depth-test] [#:stencil-test] [#:multisample? #f] [#:base-color-factor (vec3 1 1 1)] [#:base-color-texcoord 0] [#:metallic-factor 1.0] [#:roughness-factor 1.0] [#:metallic-roughness-texcoord 0] [#:normal-texcoord 0] [#:occlusion-texcoord 0] [#:emissive-factor (vec3 1 1 1)] [#:emissive-texcoord 0] [#:alpha-mode opaque] [#:alpha-cutoff 0.5] [#:base-color-texture] [#:metallic-roughness-texture] [#:normal-texture] [#:occlusion-texture] [#:emissive-texture]</em></dt> -<dd> -<p>Return a new PBR material. -</p></dd></dl> - -<dl> -<dt id="index-make_002dpbr_002dproperties">Procedure: <strong>make-pbr-properties</strong> <em>[#:base-color-factor] [#:base-color-texcoord] [#:metallic-factor] [#:roughness-factor] [#:metallic-roughness-texcoord] [#:normal-texcoord] [#:occlusion-texcoord] [#:emissive-factor] [#:emissive-texcoord] [#:alpha-mode] [#:alpha-cutoff]</em></dt> -<dd> -<p>Return a new PBR properties object. -</p></dd></dl> - -<dl> -<dt id="index-pbr_002dproperties_003f">Procedure: <strong>pbr-properties?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a PBR properties object. -</p></dd></dl> - -<dl> -<dt id="index-pbr_002dproperties_002dbase_002dcolor_002dfactor">Procedure: <strong>pbr-properties-base-color-factor</strong> <em>properties</em></dt> -<dd><p>Return the base color factor of <var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-pbr_002dproperties_002dbase_002dcolor_002dtexcoord">Procedure: <strong>pbr-properties-base-color-texcoord</strong> <em>properties</em></dt> -<dd><p>Return the base color texture coordinate attribute index of -<var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-pbr_002dproperties_002dmetallic_002dfactor">Procedure: <strong>pbr-properties-metallic-factor</strong> <em>properties</em></dt> -<dd><p>Return the metallic factor of <var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-pbr_002dproperties_002droughness">Procedure: <strong>pbr-properties-roughness</strong> <em>properties</em></dt> -<dd><p>Return the roughness factor of <var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-pbr_002dproperties_002dmetallic_002droughness_002dtexcoord">Procedure: <strong>pbr-properties-metallic-roughness-texcoord</strong> <em>properties</em></dt> -<dd><p>Return the metallic-roughness texture coordinate attribute index of -<var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-pbr_002dproperties_002dnormal_002dtexcoord">Procedure: <strong>pbr-properties-normal-texcoord</strong> <em>properties</em></dt> -<dd><p>Return the normal texture coordinate attribute index of -<var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-pbr_002dproperties_002docclusion_002dtexcoord">Procedure: <strong>pbr-properties-occlusion-texcoord</strong> <em>properties</em></dt> -<dd><p>Return the ambient occlusion texture coordinate attribute index of -<var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-pbr_002dproperties_002demissive_002dfactor">Procedure: <strong>pbr-properties-emissive-factor</strong> <em>properties</em></dt> -<dd><p>Return the emissive factor of <var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-pbr_002dproperties_002demissive_002dtexcoord">Procedure: <strong>pbr-properties-emissive-texcoord</strong> <em>properties</em></dt> -<dd><p>Return the emissive texture coordinate attribute index of -<var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-pbr_002dproperties_002dalpha_002dmode">Procedure: <strong>pbr-properties-alpha-mode</strong> <em>properties</em></dt> -<dd><p>Return the alpha mode of <var>properties</var>. -</p></dd></dl> - -<dl> -<dt id="index-pbr_002dproperties_002dalpha_002dcutoff">Procedure: <strong>pbr-properties-alpha-cutoff</strong> <em>properties</em></dt> -<dd><p>Return the alpha cutoff threshold of <var>properties</var>. -</p></dd></dl> - -<span id="Primitives-and-Meshes"></span><h4 class="subsubsection">5.3.11.4 Primitives and Meshes</h4> - -<p>A mesh is a collection of “primitives,” so we should discuss those -next. A primitive contains vertex data and a material. -</p> -<dl> -<dt id="index-make_002dprimitive">Procedure: <strong>make-primitive</strong> <em>name vertex-array material</em></dt> -<dd><p>Return a new primitive named <var>name</var> that renders -<var>vertex-array</var> (see <a href="Buffers.html">Buffers</a>) using <var>material</var>. -</p></dd></dl> - -<dl> -<dt id="index-primitive_003f">Procedure: <strong>primitive?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a primitive. -</p></dd></dl> - -<dl> -<dt id="index-primitive_002dname">Procedure: <strong>primitive-name</strong> <em>primitive</em></dt> -<dd><p>Return the name of <var>primitive</var>. -</p></dd></dl> - -<dl> -<dt id="index-primitive_002dvertex_002darray">Procedure: <strong>primitive-vertex-array</strong> <em>primitive</em></dt> -<dd><p>Return the vertex array of <var>primitive</var>. -</p></dd></dl> - -<dl> -<dt id="index-primitive_002dmaterial">Procedure: <strong>primitive-material</strong> <em>primitive</em></dt> -<dd><p>Return the material of <var>primitive</var>. -</p></dd></dl> - -<p>Okay, now we can talk about meshes, which are just a glorified list of -primitive objects. -</p> -<dl> -<dt id="index-make_002dmesh">Procedure: <strong>make-mesh</strong> <em>name primitives</em></dt> -<dd><p>Return a new mesh named <var>name</var> that is composed of the list -<var>primitives</var>. -</p></dd></dl> - -<dl> -<dt id="index-mesh_003f">Procedure: <strong>mesh?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a mesh. -</p></dd></dl> - -<dl> -<dt id="index-mesh_002dname">Procedure: <strong>mesh-name</strong> <em>mesh</em></dt> -<dd><p>Return the name of <var>mesh</var>. -</p></dd></dl> - -<dl> -<dt id="index-mesh_002dprimitives">Procedure: <strong>mesh-primitives</strong> <em>mesh</em></dt> -<dd><p>Return the list of primitives for <var>mesh</var>. -</p></dd></dl> - -<p>The mesh module also conveniently provides procedures to build several -basic 3D shapes. -</p> -<dl> -<dt id="index-make_002dplane">Procedure: <strong>make-plane</strong> <em>length width material</em></dt> -<dd><p>Return a new mesh that forms a flat plane on the XZ axis that is -<var>width</var> units long along the X axis and <var>length</var> units long -along the Z axis. -</p></dd></dl> - -<dl> -<dt id="index-make_002dtesselated_002dplane">Procedure: <strong>make-tesselated-plane</strong> <em>length width resolution material</em></dt> -<dd><p>Return a new mesh that forms a tesselated plane on the XZ axis that is -<var>width</var> units long along the X axis and <var>length</var> units long -along the Z axis. -</p> -<p>A regular plane is a single rectangle, but a tesselated plane is -subdivided into many smaller rectangles by <var>resolution</var>. This -allows for transforming the vertices in a shader to achieve effects -such as waves in water or mountainous terrain. -</p></dd></dl> - -<dl> -<dt id="index-make_002dcube">Procedure: <strong>make-cube</strong> <em>size material</em></dt> -<dd><p>Return a new mesh that forms a cube that is <var>size</var> units big. -</p></dd></dl> - -<dl> -<dt id="index-make_002dsphere">Procedure: <strong>make-sphere</strong> <em>radius material [#:quality 2]</em></dt> -<dd><p>Return a new mesh that forms a sphere that has a radius of -<var>radius</var> units. Since 3D models are composed of triangles, the -quality of a sphere is entirely dependent upon how many triangles are -used to appromixate the shape. The higher the value of <var>quality</var>, -the better the appromixation, but the more time it will take to -generate and the more expensive it will be to draw. The number of -triangles in the resulting sphere increases exponentially with each -increment to <var>quality</var>. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Buffers.html" accesskey="n" rel="next">Buffers</a>, Previous: <a href="Skyboxes.html" accesskey="p" rel="prev">Skyboxes</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Models.html b/manuals/chickadee/Models.html deleted file mode 100644 index 4d319a1..0000000 --- a/manuals/chickadee/Models.html +++ /dev/null @@ -1,167 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Models (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Models (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Models (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Lights.html" rel="next" title="Lights" /> -<link href="Tile-Maps.html" rel="prev" title="Tile Maps" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Models"></span><div class="header"> -<p> -Next: <a href="Lights.html" accesskey="n" rel="next">Lights</a>, Previous: <a href="Tile-Maps.html" accesskey="p" rel="prev">Tile Maps</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Models-1"></span><h4 class="subsection">5.3.8 Models</h4> - -<p><em>Disclaimer: Chickadee is alpha software, but 3D model support is -even more alpha than that. There are many missing features in both -the model loading and rendering components, so set your expectations -accordingly!</em> -</p> -<p>The <code>(chickadee graphics model)</code> module provides procedures to -load and render 3D models in the classic OBJ and more modern glTF 2.0 -formats. -</p> -<p>Here’s some basic boilerplate to render a 3D model: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">use-modules</span> <span class="syntax-open">(</span><span class="syntax-symbol">chickadee</span> <span class="syntax-symbol">graphics</span> <span class="syntax-symbol">light</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">chickadee</span> <span class="syntax-symbol">graphics</span> <span class="syntax-symbol">model</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">chickadee</span> <span class="syntax-symbol">graphics</span> <span class="syntax-symbol">skybox</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">model</span> <span class="syntax-open">(</span><span class="syntax-symbol">load-gltf</span> <span class="syntax-string">"Suzanne.gltf"</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">camera-position</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec3</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">3.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">world</span> <span class="syntax-open">(</span><span class="syntax-symbol">make-identity-matrix4</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">view</span> <span class="syntax-open">(</span><span class="syntax-symbol">look-at</span> <span class="syntax-symbol">camera-position</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec3</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">0.0</span><span class="syntax-close">)</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec3</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">1.0</span> <span class="syntax-symbol">0.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">projection</span> <span class="syntax-open">(</span><span class="syntax-symbol">perspective-projection</span> <span class="syntax-open">(</span><span class="syntax-symbol">/</span> <span class="syntax-symbol">pi</span> <span class="syntax-symbol">3.0</span><span class="syntax-close">)</span> <span class="syntax-open">(</span><span class="syntax-symbol">/</span> <span class="syntax-symbol">4.0</span> <span class="syntax-symbol">3.0</span><span class="syntax-close">)</span> <span class="syntax-symbol">0.1</span> <span class="syntax-symbol">5.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-open">(</span><span class="syntax-symbol">draw</span> <span class="syntax-symbol">alpha</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">with-projection</span> <span class="syntax-symbol">projection</span> - <span class="syntax-open">(</span><span class="syntax-symbol">draw-model</span> <span class="syntax-symbol">model</span> <span class="syntax-symbol">world</span> <span class="syntax-symbol">view</span> <span class="syntax-symbol">camera-position</span> -</pre></div> - -<dl> -<dt id="index-load_002dobj">Procedure: <strong>load-obj</strong> <em>file-name</em></dt> -<dd><p>Load the OBJ formatted model in <var>file-name</var> and return a 3D model -object. -</p> -<p>OBJ models are rendered using a Phong lighting model, which is a -work-in-progress. -</p></dd></dl> - -<dl> -<dt id="index-load_002dgltf">Procedure: <strong>load-gltf</strong> <em>file-name</em></dt> -<dd><p>Load the glTF 2.0 formatted model in <var>file-name</var> and return a 3D -model object. -</p> -<p>glTF models are rendered using a physically based lighting model, -which is currently a stub to be implemented later. -</p></dd></dl> - -<dl> -<dt id="index-model_003f">Procedure: <strong>model?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a 3D model. -</p></dd></dl> - -<dl> -<dt id="index-draw_002dmodel">Procedure: <strong>draw-model</strong> <em>model [#:model-matrix] [#:view-matrix] [#:camera-position (vec3 0 0 0)] [#:skybox] [#:lights '()]</em></dt> -<dd> -<p>Render <var>model</var> with the transformation matrices <var>model-matrix</var> -and <var>view-matrix</var> applied. <var>camera-position</var> is the world -position of the camera, for correct specular lighting calculations. -<var>skybox</var> is used to apply ambient lighting to the model. -<var>lights</var> contains all of the dynamic lights (see <a href="Lights.html">Lights</a>) that -should have an effect on the model. -</p></dd></dl> - -<p>Models are composed of simpler data types: meshes, primitives, and -materials. Let’s start with materials. A material controls the -appearance of a 3D object. Is the object a rough stone? Or maybe a -smooth metal? Materials control all of this and more. -</p> -<p>There are two types of materials in Chickadee: Phong and PBR. -</p> -<hr /> -<div class="header"> -<p> -Next: <a href="Lights.html" accesskey="n" rel="next">Lights</a>, Previous: <a href="Tile-Maps.html" accesskey="p" rel="prev">Tile Maps</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Particles.html b/manuals/chickadee/Particles.html deleted file mode 100644 index 116e2e6..0000000 --- a/manuals/chickadee/Particles.html +++ /dev/null @@ -1,252 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Particles (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Particles (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Particles (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Tile-Maps.html" rel="next" title="Tile Maps" /> -<link href="Vector-Paths.html" rel="prev" title="Vector Paths" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Particles"></span><div class="header"> -<p> -Next: <a href="Tile-Maps.html" accesskey="n" rel="next">Tile Maps</a>, Previous: <a href="Vector-Paths.html" accesskey="p" rel="prev">Vector Paths</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Particles-1"></span><h4 class="subsection">5.3.6 Particles</h4> - -<p>Effects like smoke, fire, sparks, etc. are often achieved by animating -lots of little, short-lived sprites known as “particles”. In fact, -all of these effects, and more, can be accomplished by turning a few -configuration knobs in a “particle system”. A particle system takes -care of managing the many miniscule moving morsels so the developer -can quickly produce an effect and move on with their life. The -<code>(chickadee graphics particles)</code> module provides an API for -manipulating particle systems. -</p> -<p>Below is an example of a very simple particle system that utilizes -nearly all of the default configuration settings: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">use-modules</span> <span class="syntax-open">(</span><span class="syntax-symbol">chickadee</span> <span class="syntax-symbol">graphics</span> <span class="syntax-symbol">particles</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">texture</span> <span class="syntax-open">(</span><span class="syntax-symbol">load-image</span> <span class="syntax-string">"particle.png"</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">particles</span> <span class="syntax-open">(</span><span class="syntax-symbol">make-particles</span> <span class="syntax-symbol">2000</span> <span class="syntax-keyword">#:texture</span> <span class="syntax-symbol">texture</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>In order to put particles into a particle system, a particle -“emitter” is needed. Emitters know where to spawn new particles, -how many of them to spawn, and for how long they should do it. -</p> -<p>Below is an example of an emitter that spawns 16 particles per frame -at the coordinates <code>(320, 240)</code>: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">use-modules</span> <span class="syntax-open">(</span><span class="syntax-symbol">chickadee</span> <span class="syntax-symbol">math</span> <span class="syntax-symbol">rect</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">emitter</span> <span class="syntax-open">(</span><span class="syntax-symbol">make-particle-emitter</span> <span class="syntax-open">(</span><span class="syntax-symbol">make-rect</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">320.0</span> <span class="syntax-symbol">240.0</span><span class="syntax-close">)</span> <span class="syntax-symbol">16</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-symbol">add-particle-emitter</span> <span class="syntax-symbol">particles</span> <span class="syntax-symbol">emitter</span><span class="syntax-close">)</span> -</pre></div> - -<p>To see all of the tweakable knobs and switches, read on! -</p> -<dl> -<dt id="index-make_002dparticles">Procedure: <strong>make-particles</strong> <em>capacity [#:blend-mode] [#:color white] [#:end-color transparent] [#:texture] [#:animation-rows 1] [#:animation-columns 1] [#:width] [#:height] [#:speed-range (vec2 0.1 1.0)] [#:acceleration-range (vec2 0.0 0.1)] [#:direction-range (vec2 0 (* 2 pi))] [#:lifetime 30] [#:sort]</em></dt> -<dd> -<p>Return a new particle system that may contain up to <var>capacity</var> -particles. Achieving the desired particle effect involves tweaking -the following keyword arguments as needed: -</p> -<p>- <var>blend-mode</var>: Pixel blending mode. Alpha blending is used by -default. (see <a href="Render-Settings.html">Render Settings</a> for more about blend modes). -</p> -<p>- <var>start-color</var>: The tint color of the particle at the beginning of its -life. White by default. -</p> -<p>- <var>end-color</var>: The tint color of the particle at the end of of its -life. Completely transparent by default for a fade-out effect. The -color in the middle of a particle’s life will be an interpolation of -<var>start-color</var> and <var>end-color</var>. -</p> -<p>- <var>texture</var>: The texture applied to the particles. The texture -may be subdivided into many animation frames. -</p> -<p>- <var>animation-rows</var>: How many animation frame rows there are in the -texture. Default is 1. -</p> -<p>- <var>animation-columns</var>: How many animation frame columns there are -in the texture. Default is 1. -</p> -<p>- <var>width</var>: The width of each particle. By default, the width of -an animation frame (in pixels) is used. -</p> -<p>- <var>height</var>: The height of each particle. By default, the height -of an animation frame (in pixels) is used. -</p> -<p>- <var>speed-range</var>: A 2D vector containing the min and max particle -speed. Each particle will have a speed chosen at random from this -range. By default, speed ranges from 0.1 to 1.0. -</p> -<p>- <var>acceleration-range</var>: A 2D vector containing the min and max -particle acceleration. Each particle will have an acceleration chosen -at random from this range. By default, acceleration ranges from 0.0 -to 0.1. -</p> -<p>- <var>direction-range</var>: A 2D vector containing the min and max -particle direction as an angle in radians. Each particle will have a -direction chosen at random from this range. By default, the range -covers all possible angles. -</p> -<p>- <var>lifetime</var>: How long each particle lives, measured in -updates. 30 by default. -</p> -<p>- <var>sort</var>: <code>youngest</code> if youngest particle should be drawn -last or <code>oldest</code> for the reverse. By default, no sorting is -applied at all. -</p></dd></dl> - -<dl> -<dt id="index-particles_003f">Procedure: <strong>particles?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a particle system. -</p></dd></dl> - -<dl> -<dt id="index-update_002dparticles">Procedure: <strong>update-particles</strong> <em>particles</em></dt> -<dd><p>Advance the simulation of <var>particles</var>. -</p></dd></dl> - -<dl> -<dt id="index-draw_002dparticles">Procedure: <strong>draw-particles</strong> <em>particles</em></dt> -<dd><p>Render <var>particles</var>. -</p></dd></dl> - -<dl> -<dt id="index-draw_002dparticles_002a">Procedure: <strong>draw-particles*</strong> <em>particles matrix</em></dt> -<dd><p>Render <var>particles</var> with <var>matrix</var> applied. -</p></dd></dl> - -<dl> -<dt id="index-make_002dparticle_002demitter">Procedure: <strong>make-particle-emitter</strong> <em>spawn-area rate [duration]</em></dt> -<dd> -<p>Return a new particle emitter that spawns <var>rate</var> particles per -frame within <var>spawn-area</var> (a rectangle or 2D vector) for -<var>duration</var> frames. If <var>duration</var> is not specified, the -emitter will spawn particles indefinitely. -</p></dd></dl> - -<dl> -<dt id="index-particle_002demitter_003f">Procedure: <strong>particle-emitter?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a particle emitter. -</p></dd></dl> - -<dl> -<dt id="index-particle_002demitter_002dspawn_002darea">Procedure: <strong>particle-emitter-spawn-area</strong> <em>emitter</em></dt> -<dd><p>Return the spawn area for <var>emitter</var>. -</p></dd></dl> - -<dl> -<dt id="index-particle_002demitter_002drate">Procedure: <strong>particle-emitter-rate</strong> <em>emitter</em></dt> -<dd><p>Return the number of particles that <var>emitter</var> will spawn per -frame. -</p></dd></dl> - -<dl> -<dt id="index-particle_002demitter_002dlife">Procedure: <strong>particle-emitter-life</strong> <em>emitter</em></dt> -<dd><p>Return the number of frames remaining in <var>emitter</var>’s lifespan. -</p></dd></dl> - -<dl> -<dt id="index-particle_002demitter_002ddone_003f">Procedure: <strong>particle-emitter-done?</strong> <em>emitter</em></dt> -<dd><p>Return <code>#t</code> if <var>emitter</var> has finished spawning particlces. -</p></dd></dl> - -<dl> -<dt id="index-add_002dparticle_002demitter">Procedure: <strong>add-particle-emitter</strong> <em>particles emitter</em></dt> -<dd><p>Add <var>emitter</var> to <var>particles</var>. -</p></dd></dl> - -<dl> -<dt id="index-remove_002dparticle_002demitter">Procedure: <strong>remove-particle-emitter</strong> <em>particles emitter</em></dt> -<dd><p>Remove <var>emitter</var> from <var>particles</var> -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Tile-Maps.html" accesskey="n" rel="next">Tile Maps</a>, Previous: <a href="Vector-Paths.html" accesskey="p" rel="prev">Vector Paths</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Path-Finding.html b/manuals/chickadee/Path-Finding.html deleted file mode 100644 index 150ef88..0000000 --- a/manuals/chickadee/Path-Finding.html +++ /dev/null @@ -1,171 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Path Finding (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Path Finding (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Path Finding (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Data-Structures.html" rel="up" title="Data Structures" /> -<link href="Copying-This-Manual.html" rel="next" title="Copying This Manual" /> -<link href="Grids.html" rel="prev" title="Grids" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Path-Finding"></span><div class="header"> -<p> -Previous: <a href="Grids.html" accesskey="p" rel="prev">Grids</a>, Up: <a href="Data-Structures.html" accesskey="u" rel="up">Data Structures</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Path-Finding-1"></span><h4 class="subsection">5.6.6 Path Finding</h4> - -<p>Most game worlds have maps. Often, these games have a need to move -non-player characters around in an unscripted fashion. For example, -in a real-time strategy game, the player may command one of their -units to attack something in the enemy base. To do so, the unit must -calculate the shortest route to get there. It wouldn’t be a very fun -game if units didn’t know how to transport themselves efficiently. -This is where path finding algorithms come in handy. The -<code>(chickadee data path-finding)</code> module provides a generic -implementation of the popular A* path finding algorithm. Just add a -map implementation! -</p> -<p>The example below defines a very simple town map and finds the -quickest way to get from the town common to the school. -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">world-map</span> - <span class="syntax-symbol">'</span><span class="syntax-open">(</span><span class="syntax-open">(</span><span class="syntax-symbol">town-common</span> <span class="syntax-symbol">.</span> <span class="syntax-open">(</span><span class="syntax-symbol">town-hall</span> <span class="syntax-special">library</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">town-hall</span> <span class="syntax-symbol">.</span> <span class="syntax-open">(</span><span class="syntax-symbol">town-common</span> <span class="syntax-symbol">school</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-special">library</span> <span class="syntax-symbol">.</span> <span class="syntax-open">(</span><span class="syntax-symbol">town-common</span> <span class="syntax-symbol">cafe</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">school</span> <span class="syntax-symbol">.</span> <span class="syntax-open">(</span><span class="syntax-symbol">town-hall</span> <span class="syntax-symbol">cafe</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">cafe</span> <span class="syntax-symbol">.</span> <span class="syntax-open">(</span><span class="syntax-special">library</span> <span class="syntax-symbol">school</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-open">(</span><span class="syntax-symbol">neighbors</span> <span class="syntax-symbol">building</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">assq-ref</span> <span class="syntax-symbol">town-map</span> <span class="syntax-symbol">building</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-open">(</span><span class="syntax-symbol">cost</span> <span class="syntax-symbol">a</span> <span class="syntax-symbol">b</span><span class="syntax-close">)</span> <span class="syntax-symbol">1</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-open">(</span><span class="syntax-symbol">distance</span> <span class="syntax-symbol">a</span> <span class="syntax-symbol">b</span><span class="syntax-close">)</span> <span class="syntax-symbol">1</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">pf</span> <span class="syntax-open">(</span><span class="syntax-symbol">make-path-finder</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-symbol">a*</span> <span class="syntax-symbol">pf</span> <span class="syntax-symbol">'town-common</span> <span class="syntax-symbol">'school</span> <span class="syntax-symbol">neighbors</span> <span class="syntax-symbol">cost</span> <span class="syntax-symbol">distance</span><span class="syntax-close">)</span> -</pre></div> - -<p>In this case, the <code>a*</code> procedure will return the list -<code>(town-common town-hall school)</code>, which is indeed the shortest -route. (The other possible route is <code>(town-common library cafe -school)</code>.) -</p> -<p>The <code>a*</code> procedure does not know anything about about any kind of -map and therefore must be told how to look up neighboring nodes, which -is what the <code>neighbors</code> procedure in the example does. To -simulate different types of terrain, a cost procedure is used. In -this example, it is just as easy to move between any two nodes because -<code>cost</code> always returns 1. In a real game, perhaps moving from -from a field to a rocky hill would cost a lot more than moving from -one field to another. Finally, a heuristic is used to calculate an -approximate distance between two nodes on the map. In this simple -association list based graph it is tough to calculate a distance -between nodes, so the <code>distance</code> procedure isn’t helpful and -always returns 1. In a real game with a tile-based map, for example, -the heuristic could be a quick Manhattan distance calculation based on -the coordinates of the two map tiles. Choose an appropriate heuristic -for optimal path finding! -</p> -<dl> -<dt id="index-make_002dpath_002dfinder">Procedure: <strong>make-path-finder</strong></dt> -<dd><p>Return a new path finder object. -</p></dd></dl> - -<dl> -<dt id="index-path_002dfinder_003f">Procedure: <strong>path-finder?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a path finder. -</p></dd></dl> - -<dl> -<dt id="index-a_002a">Procedure: <strong>a*</strong> <em>path-finder start goal neighbors cost distance</em></dt> -<dd> -<p>Return a list of nodes forming a path from <var>start</var> to <var>goal</var> -using <var>path-finder</var> to hold state. <var>neighbors</var> is a procedure -that accepts a node and returns a list of nodes that neighbor it. -<var>cost</var> is a procedure that accepts two neighboring nodes and -returns the cost of moving from the first to the second as a real -number. <var>distance</var> is a procedure that accepts two nodes and -returns an approximate distance between them. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Previous: <a href="Grids.html" accesskey="p" rel="prev">Grids</a>, Up: <a href="Data-Structures.html" accesskey="u" rel="up">Data Structures</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Quadtrees.html b/manuals/chickadee/Quadtrees.html deleted file mode 100644 index 5675542..0000000 --- a/manuals/chickadee/Quadtrees.html +++ /dev/null @@ -1,222 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Quadtrees (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Quadtrees (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Quadtrees (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Data-Structures.html" rel="up" title="Data Structures" /> -<link href="Grids.html" rel="next" title="Grids" /> -<link href="Heaps.html" rel="prev" title="Heaps" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Quadtrees"></span><div class="header"> -<p> -Next: <a href="Grids.html" accesskey="n" rel="next">Grids</a>, Previous: <a href="Heaps.html" accesskey="p" rel="prev">Heaps</a>, Up: <a href="Data-Structures.html" accesskey="u" rel="up">Data Structures</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Quadtrees-1"></span><h4 class="subsection">5.6.4 Quadtrees</h4> - -<p>The <code>(chickadee data quadtree)</code> module provides a 2D spatial -partitioning implementation known as a “quadtree”. A quadtree -recursively subdivides the world into rectangular quadrants. This -data structure is very useful for handling broad-phase collision -detection because it can quickly determine the objects that may -possibly be colliding with another, resulting in fewer narrow-phase -collision tests that are typically much more expensive. -</p> -<dl> -<dt id="index-make_002dquadtree">Procedure: <strong>make-quadtree</strong> <em>bounds [#:max-size 5] [#:max-depth 4]</em></dt> -<dd><p>Return a new quadtree that covers the area <var>bounds</var>. Each node -will try to hold at maximum <var>max-size</var> objects and the tree depth -will be restricted to <var>max-depth</var>. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_003f">Procedure: <strong>quadtree?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a quadtree. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dclear_0021">Procedure: <strong>quadtree-clear!</strong> <em>quadtree</em></dt> -<dd><p>Clear all objects from <var>quadtree</var>. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dinsert_0021">Procedure: <strong>quadtree-insert!</strong> <em>quadtree rect object</em></dt> -<dd><p>Insert <var>object</var> with bounding box <var>rect</var> into <var>quadtree</var>. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002ddelete_0021">Procedure: <strong>quadtree-delete!</strong> <em>quadtree rect object</em></dt> -<dd><p>Delete <var>object</var>, who occupies the space <var>rect</var>, from -<var>quadtree</var>. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dfind">Procedure: <strong>quadtree-find</strong> <em>rect pred</em></dt> -<dd><p>Return the first object in <var>quadtree</var> in the vicinity of -<var>rect</var> that satisfies <var>pred</var>. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dfold">Procedure: <strong>quadtree-fold</strong> <em>quadtree rect init proc</em></dt> -<dd><p>Apply <var>proc</var> to all objects in the vicinity of <var>rect</var> in -<var>quadtree</var> to build a result and return that result. <var>init</var> -is the initial result. If there are no objects in the vicinity of -<var>rect</var>, just <var>init</var> is returned. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dfor_002deach">Procedure: <strong>quadtree-for-each</strong> <em>quadtree rect proc</em></dt> -<dd><p>Call <var>proc</var> for all objects in the vicinity of <var>rect</var> in -<var>quadtree</var>. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dleaf_003f">Procedure: <strong>quadtree-leaf?</strong> <em>quadtree</em></dt> -<dd><p>Return <code>#t</code> if <var>quadtree</var> is a leaf node. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dbounds">Procedure: <strong>quadtree-bounds</strong> <em>quadtree</em></dt> -<dd><p>Return the bounding rectangle of <var>quadtree</var>. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dmax_002ddepth">Procedure: <strong>quadtree-max-depth</strong> <em>quadtree</em></dt> -<dd><p>Return the maximum depth of <var>quadtree</var>. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dmax_002dsize">Procedure: <strong>quadtree-max-size</strong> <em>quadtree</em></dt> -<dd><p>Return the desired per-node maximum object count of <var>quadtree</var>. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002ddepth">Procedure: <strong>quadtree-depth</strong> <em>quadtree</em></dt> -<dd><p>Return the depth of the node <var>quadtree</var>. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dsize">Procedure: <strong>quadtree-size</strong> <em>quadtree</em></dt> -<dd><p>Return the number of objects stored in the node <var>quadtree</var>. -</p></dd></dl> - -<p>Non-leaf nodes always have four child nodes, which correspond to the -quadrants of a Cartesian coordinate system: -</p> -<pre class="verbatim">*------*------* -| | | -| Q2 | Q1 | -| | | -*------*------* -| | | -| Q3 | Q4 | -| | | -*------*------* -</pre> -<dl> -<dt id="index-quadtree_002dq1">Procedure: <strong>quadtree-q1</strong> <em>quadtree</em></dt> -<dd><p>Return the upper-right child node of <var>quadtree</var>, or <code>#f</code> if -<var>quadtree</var> is a leaf node. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dq2">Procedure: <strong>quadtree-q2</strong> <em>quadtree</em></dt> -<dd><p>Return the upper-left child node of <var>quadtree</var>, or <code>#f</code> if -<var>quadtree</var> is a leaf node. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dq3">Procedure: <strong>quadtree-q3</strong> <em>quadtree</em></dt> -<dd><p>Return the lower-left child node of <var>quadtree</var>, or <code>#f</code> if -<var>quadtree</var> is a leaf node. -</p></dd></dl> - -<dl> -<dt id="index-quadtree_002dq4">Procedure: <strong>quadtree-q4</strong> <em>quadtree</em></dt> -<dd><p>Return the lower-right child node of <var>quadtree</var>, or <code>#f</code> if -<var>quadtree</var> is a leaf node. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Grids.html" accesskey="n" rel="next">Grids</a>, Previous: <a href="Heaps.html" accesskey="p" rel="prev">Heaps</a>, Up: <a href="Data-Structures.html" accesskey="u" rel="up">Data Structures</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Quaternions.html b/manuals/chickadee/Quaternions.html deleted file mode 100644 index be875ee..0000000 --- a/manuals/chickadee/Quaternions.html +++ /dev/null @@ -1,137 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Quaternions (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Quaternions (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Quaternions (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Math.html" rel="up" title="Math" /> -<link href="Easings.html" rel="next" title="Easings" /> -<link href="Matrices.html" rel="prev" title="Matrices" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Quaternions"></span><div class="header"> -<p> -Next: <a href="Easings.html" accesskey="n" rel="next">Easings</a>, Previous: <a href="Matrices.html" accesskey="p" rel="prev">Matrices</a>, Up: <a href="Math.html" accesskey="u" rel="up">Math</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Quaternions-1"></span><h4 class="subsection">5.2.5 Quaternions</h4> - -<p>In game development, the quaternion is most often used to represent -rotations. Why not use a matrix for that, you may ask. Unlike -matrices, quaternions can be interpolated (animated) and produce a -meaningful result. When interpolating two quaternions, there is a -smooth transition from one rotation to another, whereas interpolating -two matrices would yield garbage. -</p> -<dl> -<dt id="index-quaternion">Procedure: <strong>quaternion</strong> <em>x y z w</em></dt> -<dd><p>Return a new quaternion with values <var>x</var>, <var>y</var>, <var>z</var>, and -<var>w</var>. -</p></dd></dl> - -<dl> -<dt id="index-quaternion_003f">Procedure: <strong>quaternion?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a quaternion. -</p></dd></dl> - -<dl> -<dt id="index-quaternion_002dw">Procedure: <strong>quaternion-w</strong> <em>q</em></dt> -<dd><p>Return the W component of the quaternion <var>q</var>. -</p></dd></dl> - -<dl> -<dt id="index-quaternion_002dx">Procedure: <strong>quaternion-x</strong> <em>q</em></dt> -<dd><p>Return the X component of the quaternion <var>q</var>. -</p></dd></dl> - -<dl> -<dt id="index-quaternion_002dy">Procedure: <strong>quaternion-y</strong> <em>q</em></dt> -<dd><p>Return the Y component of the quaternion <var>q</var>. -</p></dd></dl> - -<dl> -<dt id="index-quaternion_002dz">Procedure: <strong>quaternion-z</strong> <em>q</em></dt> -<dd><p>Return the Z component of the quaternion <var>q</var>. -</p></dd></dl> - -<dl> -<dt id="index-make_002didentity_002dquaternion">Procedure: <strong>make-identity-quaternion</strong></dt> -<dd><p>Return the identity quaternion. -</p></dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/Queues.html b/manuals/chickadee/Queues.html deleted file mode 100644 index 9e5d238..0000000 --- a/manuals/chickadee/Queues.html +++ /dev/null @@ -1,133 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Queues (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Queues (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Queues (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Data-Structures.html" rel="up" title="Data Structures" /> -<link href="Heaps.html" rel="next" title="Heaps" /> -<link href="Array-Lists.html" rel="prev" title="Array Lists" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Queues"></span><div class="header"> -<p> -Next: <a href="Heaps.html" accesskey="n" rel="next">Heaps</a>, Previous: <a href="Array-Lists.html" accesskey="p" rel="prev">Array Lists</a>, Up: <a href="Data-Structures.html" accesskey="u" rel="up">Data Structures</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Queues-1"></span><h4 class="subsection">5.6.2 Queues</h4> - -<p>The <code>(chickadee data queue)</code> module provides a mutable queue that -is more memory efficient than Guile’s built-in <code>(ice-9 q)</code> -module. -</p> -<dl> -<dt id="index-make_002dqueue">Procedure: <strong>make-queue</strong></dt> -<dd><p>Return a new, empty queue. -</p></dd></dl> - -<dl> -<dt id="index-queue_003f">Procedure: <strong>queue?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a queue. -</p></dd></dl> - -<dl> -<dt id="index-queue_002dempty_003f">Procedure: <strong>queue-empty?</strong> <em>queue</em></dt> -<dd><p>Return <code>#t</code> if <var>queue</var> is empty. -</p></dd></dl> - -<dl> -<dt id="index-queue_002dlength">Procedure: <strong>queue-length</strong> <em>queue</em></dt> -<dd><p>Return the current length of <var>queue</var>. -</p></dd></dl> - -<dl> -<dt id="index-enqueue_0021">Procedure: <strong>enqueue!</strong> <em>queue item</em></dt> -<dd><p>Add <var>item</var> to <var>queue</var>. -</p></dd></dl> - -<dl> -<dt id="index-dequeue_0021">Procedure: <strong>dequeue!</strong> <em>queue</em></dt> -<dd><p>Remove and return the first item in <var>queue</var>. -</p></dd></dl> - -<dl> -<dt id="index-queue_002dclear_0021">Procedure: <strong>queue-clear!</strong> <em>queue</em></dt> -<dd><p>Remove all items from <var>queue</var>. -</p></dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/Rectangles.html b/manuals/chickadee/Rectangles.html deleted file mode 100644 index 487fac7..0000000 --- a/manuals/chickadee/Rectangles.html +++ /dev/null @@ -1,330 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Rectangles (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Rectangles (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Rectangles (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Math.html" rel="up" title="Math" /> -<link href="Matrices.html" rel="next" title="Matrices" /> -<link href="Vectors.html" rel="prev" title="Vectors" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Rectangles"></span><div class="header"> -<p> -Next: <a href="Matrices.html" accesskey="n" rel="next">Matrices</a>, Previous: <a href="Vectors.html" accesskey="p" rel="prev">Vectors</a>, Up: <a href="Math.html" accesskey="u" rel="up">Math</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Rectangles-1"></span><h4 class="subsection">5.2.3 Rectangles</h4> - -<p>The <code>(chickadee math rect)</code> module provides an API for -manipulating axis-aligned bounding boxes (AABBs). AABBs are often -used for collision detection in games. Common use-cases are defining -“hitboxes” in platformers or using them for the “broad phase” of a -collision detection algorithm that uses a more complex (and thus -slower) method of determining the actual collisions. -</p> -<p>Like some of the other math modules, there exists a collection of -functions that do in-place modification of rectangles for use in -performance critical code paths. -</p> -<dl> -<dt id="index-rect">Procedure: <strong>rect</strong> <em>x y width height</em></dt> -<dt id="index-make_002drect">Procedure: <strong>make-rect</strong> <em><var>x</var> <var>y</var> <var>width</var> <var>height</var></em></dt> -<dd><p>Create a new rectangle that is <var>width</var> by <var>height</var> in size and -whose bottom-left corner is located at (<var>x</var>, <var>y</var>). -</p></dd></dl> - -<dl> -<dt id="index-rect_003f">Procedure: <strong>rect?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a rectangle. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dwithin_003f">Procedure: <strong>rect-within?</strong> <em>rect1 rect2</em></dt> -<dd><p>Return <code>#t</code> if <var>rect2</var> is completely within <var>rect1</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dintersects_003f">Procedure: <strong>rect-intersects?</strong> <em>rect1 rect2</em></dt> -<dd><p>Return <code>#t</code> if <var>rect2</var> overlaps <var>rect1</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dcontains_003f">Procedure: <strong>rect-contains?</strong> <em>rect x y</em></dt> -<dd><p>Return <code>#t</code> if the coordinates (<var>x</var>, <var>y</var>) are within -<var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dcontains_002dvec2_003f">Procedure: <strong>rect-contains-vec2?</strong> <em>rect v</em></dt> -<dd><p>Return <code>#t</code> if the 2D vector <var>v</var> is within the bounds of -<var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dx">Procedure: <strong>rect-x</strong> <em>rect</em></dt> -<dd><p>Return the X coordinate of the lower-left corner of <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dy">Procedure: <strong>rect-y</strong> <em>rect</em></dt> -<dd><p>Return the Y coordinate of the lower-left corner of <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dleft">Procedure: <strong>rect-left</strong> <em>rect</em></dt> -<dd><p>Return the left-most X coordinate of <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dright">Procedure: <strong>rect-right</strong> <em>rect</em></dt> -<dd><p>Return the right-most X coordinate of <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dbottom">Procedure: <strong>rect-bottom</strong> <em>rect</em></dt> -<dd><p>Return the bottom-most Y coordinate of <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dtop">Procedure: <strong>rect-top</strong> <em>rect</em></dt> -<dd><p>Return the top-most Y coordinate of <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dcenter_002dx">Procedure: <strong>rect-center-x</strong> <em>rect</em></dt> -<dd><p>Return the X coordinate of the center of <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dcenter_002dy">Procedure: <strong>rect-center-y</strong> <em>rect</em></dt> -<dd><p>Return the Y coordinate of the center of <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dwidth">Procedure: <strong>rect-width</strong> <em>rect</em></dt> -<dd><p>Return the width of <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dheight">Procedure: <strong>rect-height</strong> <em>rect</em></dt> -<dd><p>Return the height of <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002darea">Procedure: <strong>rect-area</strong> <em>rect</em></dt> -<dd><p>Return the surface area covered by <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dclamp_002dx">Procedure: <strong>rect-clamp-x</strong> <em>rect x</em></dt> -<dd><p>Restrict <var>x</var> to the portion of the X axis covered by <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dclamp_002dy">Procedure: <strong>rect-clamp-y</strong> <em>rect y</em></dt> -<dd><p>Restrict <var>y</var> to the portion of the Y axis covered by <var>rect</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dclamp">Procedure: <strong>rect-clamp</strong> <em>rect1 rect2</em></dt> -<dd><p>Return a new rect that adjusts the location of <var>rect1</var> so that it -is completely within <var>rect2</var>. An exception is thrown in the case -that <var>rect1</var> cannot fit completely within <var>rect2</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dmove">Procedure: <strong>rect-move</strong> <em>rect x y</em></dt> -<dd><p>Return a new rectangle based on <var>rect</var> but moved to the -coordinates (<var>x</var>, <var>y</var>). -</p></dd></dl> - -<dl> -<dt id="index-rect_002dmove_002dvec2">Procedure: <strong>rect-move-vec2</strong> <em>rect v</em></dt> -<dd><p>Return a new rectangle based on <var>rect</var> but moved to the -coordinates in the 2D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dmove_002dby">Procedure: <strong>rect-move-by</strong> <em>rect x y</em></dt> -<dd><p>Return a new rectangle based on <var>rect</var> but moved by (<var>x</var>, -<var>y</var>) units relative to its current location. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dmove_002dby_002dvec2">Procedure: <strong>rect-move-by-vec2</strong> <em>rect v</em></dt> -<dd><p>Return a new rectangle based on <var>rect</var> but moved by the 2D vector -<var>v</var> relative to its current location. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dinflate">Procedure: <strong>rect-inflate</strong> <em>rect width height</em></dt> -<dd><p>Return a new rectangle based on <var>rect</var>, but expanded by -<var>width</var> units on the X axis and <var>height</var> units on the Y axis, -while keeping the rectangle centered on the same point. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dunion">Procedure: <strong>rect-union</strong> <em>rect1 rect2</em></dt> -<dd><p>Return a new rectangle that completely covers the area of <var>rect1</var> -and <var>rect2</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dclip">Procedure: <strong>rect-clip</strong> <em>rect1 rect2</em></dt> -<dd><p>Return a new rectangle that is the overlapping region of <var>rect1</var> -and <var>rect2</var>. If the two rectangles do not overlap, a rectangle of -0 width and 0 height is returned. -</p></dd></dl> - -<dl> -<dt id="index-set_002drect_002dx_0021">Procedure: <strong>set-rect-x!</strong> <em>rect x</em></dt> -<dd><p>Set the left X coordinate of <var>rect</var> to <var>x</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002drect_002dy_0021">Procedure: <strong>set-rect-y!</strong> <em>rect y</em></dt> -<dd><p>Set the bottom Y coordinate of <var>rect</var> to <var>y</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002drect_002dwidth_0021">Procedure: <strong>set-rect-width!</strong> <em>rect width</em></dt> -<dd><p>Set the width of <var>rect</var> to <var>width</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002drect_002dheight_0021">Procedure: <strong>set-rect-height!</strong> <em>rect height</em></dt> -<dd><p>Set the height of <var>rect</var> to <var>height</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dmove_0021">Procedure: <strong>rect-move!</strong> <em>rect x y</em></dt> -<dd><p>Move <var>rect</var> to (<var>x</var>, <var>y</var>) in-place. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dmove_002dvec2_0021">Procedure: <strong>rect-move-vec2!</strong> <em>rect v</em></dt> -<dd><p>Move <var>rect</var> to the 2D vector <var>v</var> in-place. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dmove_002dby_0021">Procedure: <strong>rect-move-by!</strong> <em>rect x y</em></dt> -<dd><p>Move <var>rect</var> by (<var>x</var>, <var>y</var>) in-place. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dmove_002dby_002dvec2_0021">Procedure: <strong>rect-move-by-vec2!</strong> <em>rect v</em></dt> -<dd><p>Move <var>rect</var> by the 2D vector <var>v</var> in-place. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dinflate_0021">Procedure: <strong>rect-inflate!</strong> <em>rect width height</em></dt> -<dd><p>Expand <var>rect</var> by <var>width</var> and <var>height</var> in-place. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dunion_0021">Procedure: <strong>rect-union!</strong> <em>rect1 rect2</em></dt> -<dd><p>Modify <var>rect1</var> in-place to completely cover the area of both -<var>rect1</var> and <var>rect2</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dclip_0021">Procedure: <strong>rect-clip!</strong> <em>rect1 rect2</em></dt> -<dd><p>Modify <var>rect1</var> in-place to be the overlapping region of -<var>rect1</var> and <var>rect2</var>. -</p></dd></dl> - -<dl> -<dt id="index-rect_002dclamp_0021">Procedure: <strong>rect-clamp!</strong> <em>rect1 rect2</em></dt> -<dd><p>Adjust the location of <var>rect1</var> in-place so that its bounds are -completely within <var>rect2</var>. An exception is thrown in the case -that <var>rect1</var> cannot fit completely within <var>rect2</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002dclamp_002dto_002drect_0021">Procedure: <strong>vec2-clamp-to-rect!</strong> <em>v rect</em></dt> -<dd><p>Restrict the coordinates of the 2D vector <var>v</var> so that they are -within the bounds of <var>rect</var>. <var>v</var> is modified in-place. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Matrices.html" accesskey="n" rel="next">Matrices</a>, Previous: <a href="Vectors.html" accesskey="p" rel="prev">Vectors</a>, Up: <a href="Math.html" accesskey="u" rel="up">Math</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Render-Settings.html b/manuals/chickadee/Render-Settings.html deleted file mode 100644 index 66c0eb7..0000000 --- a/manuals/chickadee/Render-Settings.html +++ /dev/null @@ -1,512 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Render Settings (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Render Settings (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Render Settings (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Rendering-Engine.html" rel="next" title="Rendering Engine" /> -<link href="Viewports.html" rel="prev" title="Viewports" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Render-Settings"></span><div class="header"> -<p> -Next: <a href="Rendering-Engine.html" accesskey="n" rel="next">Rendering Engine</a>, Previous: <a href="Viewports.html" accesskey="p" rel="prev">Viewports</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Render-Settings-1"></span><h4 class="subsection">5.3.16 Render Settings</h4> - -<span id="Blending"></span><h4 class="subsubsection">5.3.16.1 Blending</h4> - -<p>Rendering a scene often involves drawing layers of objects that -overlap each other. Blending determines how two overlapping pixels -are combined in the final image that is rendered to the screen. The -<code>(chickadee graphics blend)</code> module provides a data type for -blending modes. -</p> -<p>Chickadee provides the following blend modes: -</p> -<dl> -<dt id="index-blend_003aalpha">Variable: <strong>blend:alpha</strong></dt> -<dd><p>Blend pixels according to the values of their alpha channels. This is -the most commonly used blend mode. -</p></dd></dl> - -<dl> -<dt id="index-blend_003areplace">Variable: <strong>blend:replace</strong></dt> -<dd><p>Overwrite the output pixel color with the color being drawn. -</p></dd></dl> - -<dl> -<dt id="index-blend_003aadd">Variable: <strong>blend:add</strong></dt> -<dd><p>Add all pixel color values together. The more colors blended -together, the more white the final color becomes. -</p></dd></dl> - -<dl> -<dt id="index-blend_003asubtract">Variable: <strong>blend:subtract</strong></dt> -<dd><p>Subtract all pixel color values. The more colors blended together, -the more black the final color becomes. -</p></dd></dl> - -<dl> -<dt id="index-blend_003amultiply">Variable: <strong>blend:multiply</strong></dt> -</dl> - -<dl> -<dt id="index-blend_003adarken">Variable: <strong>blend:darken</strong></dt> -</dl> - -<dl> -<dt id="index-blend_003alighten">Variable: <strong>blend:lighten</strong></dt> -</dl> - -<dl> -<dt id="index-blend_003ascreen">Variable: <strong>blend:screen</strong></dt> -</dl> - -<p>Custom blend modes can be created using the <code>make-blend-mode</code> procedure: -</p> -<dl> -<dt id="index-make_002dblend_002dmode">Procedure: <strong>make-blend-mode</strong> <em>equation source-function destination-function</em></dt> -<dd><p>Return a new custom blend mode that applies <var>source-function</var> to -the source color, <var>destination-function</var> to the destination color, -and finally applies <var>equation</var> to the transformed -source/destination color values. These arguments are <em>not</em> -procedures, but symbolic representations of the functions that OpenGL -supports. -</p> -<p>Valid values for <var>equation</var> are: -</p> -<ul> -<li> <code>add</code> -</li><li> <code>subtract</code> -</li><li> <code>reverse-subtract</code> -</li><li> <code>min</code> -</li><li> <code>max</code> -</li><li> <code>alpha-min</code> -</li><li> <code>alpha-max</code> -</li></ul> - -<p>Valid values for <var>source-function</var> are: -</p> -<ul> -<li> <code>zero</code> -</li><li> <code>one</code> -</li><li> <code>destination-color</code> -</li><li> <code>one-minus-destination-color</code> -</li><li> <code>source-alpha-saturate</code> -</li><li> <code>source-alpha</code> -</li><li> <code>one-minus-source-alpha</code> -</li><li> <code>destination-alpha</code> -</li><li> <code>one-minus-destination-alpha</code> -</li><li> <code>constant-color</code> -</li><li> <code>one-minus-constant-color</code> -</li><li> <code>constant-alpha</code> -</li><li> <code>one-minus-constant-alpha</code> -</li></ul> - -<p>Valid values for <var>destination-function</var> are: -</p> -<ul> -<li> <code>zero</code> -</li><li> <code>one</code> -</li><li> <code>source-color</code> -</li><li> <code>one-minus-source-color</code> -</li><li> <code>source-alpha</code> -</li><li> <code>one-minus-source-alpha</code> -</li><li> <code>destination-alpha</code> -</li><li> <code>one-minus-destination-alpha</code> -</li><li> <code>constant-color</code> -</li><li> <code>one-minus-constant-color</code> -</li><li> <code>constant-alpha</code> -</li><li> <code>one-minus-constant-alpha</code> -</li></ul> - -</dd></dl> - -<span id="Polygon-Modes-and-Culling"></span><h4 class="subsubsection">5.3.16.2 Polygon Modes and Culling</h4> - -<p>The <code>(chickadee graphics polygon)</code> module provides access to the -<code>g:polygon-mode</code> and <code>g:cull-face-mode</code> render states. -</p> -<dl> -<dt id="index-fill_002dpolygon_002dmode">Variable: <strong>fill-polygon-mode</strong></dt> -<dd><p>Completely fill in the polygon. This is the default mode. -</p></dd></dl> - -<dl> -<dt id="index-line_002dpolygon_002dmode">Variable: <strong>line-polygon-mode</strong></dt> -<dd><p>Render only the edges of the polygon. Produces a wireframe. -</p></dd></dl> - -<dl> -<dt id="index-point_002dpolygon_002dmode">Variable: <strong>point-polygon-mode</strong></dt> -<dd><p>Render only the vertex positions as points. -</p></dd></dl> - -<dl> -<dt id="index-make_002dpolygon_002dmode">Procedure: <strong>make-polygon-mode</strong> <em>front back</em></dt> -<dd><p>Return a new polygon mode that uses the method <var>front</var> for the -front face and <var>back</var> for the back face. The valid modes are -<code>fill</code>, <code>line</code>, and <var>point</var>. -</p></dd></dl> - -<dl> -<dt id="index-polygon_002dmode_003f">Procedure: <strong>polygon-mode?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a polygon mode. -</p></dd></dl> - -<dl> -<dt id="index-current_002dpolygon_002dmode">Procedure: <strong>current-polygon-mode</strong></dt> -<dd><p>Return the current polygon mode. -</p></dd></dl> - -<dl> -<dt id="index-g_003apolygon_002dmode">Variable: <strong>g:polygon-mode</strong></dt> -<dd><p>Render state for polygon modes (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - -<dl> -<dt id="index-no_002dcull_002dface_002dmode">Variable: <strong>no-cull-face-mode</strong></dt> -<dd><p>Don’t cull any faces. -</p></dd></dl> - -<dl> -<dt id="index-back_002dcull_002dface_002dmode">Variable: <strong>back-cull-face-mode</strong></dt> -<dd><p>Cull only back faces. -</p></dd></dl> - -<dl> -<dt id="index-front_002dcull_002dface_002dmode">Variable: <strong>front-cull-face-mode</strong></dt> -<dd><p>Cull only front faces. -</p></dd></dl> - -<dl> -<dt id="index-front_002dand_002dback_002dcull_002dface_002dmode">Variable: <strong>front-and-back-cull-face-mode</strong></dt> -<dd><p>Cull both front and back faces. -</p></dd></dl> - -<dl> -<dt id="index-cull_002dface_002dmode_003f">Procedure: <strong>cull-face-mode?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a cull face mode. -</p></dd></dl> - -<dl> -<dt id="index-cull_002dface_002dmode_002dfront_003f">Procedure: <strong>cull-face-mode-front?</strong> <em>cull-face-mode</em></dt> -<dd><p>Return <code>#t</code> if <var>cull-face-mode</var> culls front faces. -</p></dd></dl> - -<dl> -<dt id="index-cull_002dface_002dmode_002dback_003f">Procedure: <strong>cull-face-mode-back?</strong> <em>cull-face-mode</em></dt> -<dd><p>Return <code>#t</code> if <var>cull-face-mode</var> culls back faces. -</p></dd></dl> - -<dl> -<dt id="index-current_002dcull_002dface_002dmode">Procedure: <strong>current-cull-face-mode</strong></dt> -<dd><p>Return the current cull face mode. -</p></dd></dl> - -<dl> -<dt id="index-g_003acull_002dface_002dmode">Variable: <strong>g:cull-face-mode</strong></dt> -<dd><p>Render state for cull face modes (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - -<span id="Depth-Testing"></span><h4 class="subsubsection">5.3.16.3 Depth Testing</h4> - -<p>The <code>(chickadee graphics depth)</code> module provides access to the -<code>g:depth-test</code> render state. -</p> -<dl> -<dt id="index-make_002ddepth_002dtest">Procedure: <strong>make-depth-test</strong> <em>[#:write? #t] [#:function 'less-than] [#:near 0.0] [#:far 1.0]</em></dt> -<dd> -<p>Return a new depth test object. If <var>write</var> is <code>#t</code>, the -depth buffer will be written to during a draw call. <var>near</var> and -<var>far</var> define the min/max Z values for which depth testing may -pass. -</p> -<p><var>function</var> specifies how the depth value of pixel being drawn -compares to the depth value that is already in the depth buffer. When -this comparison is true, the depth test passes and the pixel is drawn. -When it fails, the pixel is discarded. -</p> -<p>The possible values of <var>function</var> are: -</p> -<ul> -<li> <code>always</code> -</li><li> <code>never</code> -</li><li> <code>equal</code> -</li><li> <code>not-equal</code> -</li><li> <code>less-than</code> -</li><li> <code>less-than-or-equal</code> -</li><li> <code>greater-than</code> -</li><li> <code>greater-than-or-equal</code> -</li></ul> - -</dd></dl> - -<dl> -<dt id="index-depth_002dtest_003f">Procedure: <strong>depth-test?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> when <var>obj</var> is a depth test object. -</p></dd></dl> - -<dl> -<dt id="index-depth_002dtest_002dwrite_003f">Procedure: <strong>depth-test-write?</strong> <em>depth-test</em></dt> -<dd><p>Return <code>#t</code> when <var>depth-test</var> will write to the depth buffer. -</p></dd></dl> - -<dl> -<dt id="index-depth_002dtest_002dfunction">Procedure: <strong>depth-test-function</strong> <em>depth-test</em></dt> -<dd><p>Return the comparison function of <var>depth-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-depth_002dtest_002dnear">Procedure: <strong>depth-test-near</strong> <em>depth-test</em></dt> -<dd><p>Return the near Z value of <var>depth-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-depth_002dtest_002dfar">Procedure: <strong>depth-test-far</strong> <em>depth-test</em></dt> -<dd><p>Return the far Z value of <var>depth-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-current_002ddepth_002dtest">Procedure: <strong>current-depth-test</strong></dt> -<dd><p>Return the current depth test. -</p></dd></dl> - -<dl> -<dt id="index-g_003adepth_002dtest">Variable: <strong>g:depth-test</strong></dt> -<dd><p>Render state for depth tests (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - -<span id="Stencil-Testing"></span><h4 class="subsubsection">5.3.16.4 Stencil Testing</h4> - -<p>The <code>(chickadee graphics stencil)</code> module provides access to the -<code>g:stencil-test</code> render state. -</p> -<dl> -<dt id="index-default_002dstencil_002dtest">Variable: <strong>default-stencil-test</strong></dt> -<dd><p>A stencil test that always passes. -</p></dd></dl> - -<dl> -<dt id="index-make_002dstencil_002dtest">Procedure: <strong>make-stencil-test</strong> <em>[#:mask #xFF] [#:function always] [#:function-mask #xFF] [#:reference 0] [#:on-fail keep] [#:on-depth-fail keep] [#:on-pass keep] [#:mask-front mask] [#:mask-back mask] [#:function-mask-front function-mask] [#:function-mask-back function-mask] [#:refrence-front reference] [#:reference-back reference] [#:on-fail-front on-fail] [#:on-fail-back on-fail] [#:on-depth-fail-front on-depth-fail] [#:on-depth-fail-back on-depth-fail] [#:on-pass-front on-pass] [#:on-pass-back on-pass]</em></dt> -<dd> -<p>Return a new stencil test object. Different configurations can be -used for the front and back faces by using the arguments that end in -“front” or “back”. -</p> -<p>Valid values for <var>on-pass</var>, <var>on-fail</var>, and <var>on-depth-fail</var> -are: -</p> -<ul> -<li> <code>zero</code> -</li><li> <code>keep</code> -</li><li> <code>replace</code> -</li><li> <code>increment</code> -</li><li> <code>increment-wrap</code> -</li><li> <code>decrement</code> -</li><li> <code>decrement-wrap</code> -</li><li> <code>invert</code> -</li></ul> - -<p>Valid values for <var>function</var> are: -</p> -<ul> -<li> <code>always</code> -</li><li> <code>never</code> -</li><li> <code>equal</code> -</li><li> <code>not-equal</code> -</li><li> <code>less-than</code> -</li><li> <code>less-than-or-equal</code> -</li><li> <code>greater-than</code> -</li><li> <code>greater-than-or-equal</code> -</li></ul> - -</dd></dl> - -<dl> -<dt id="index-stencil_002dtest_003f">Procedure: <strong>stencil-test?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> when <var>obj</var> is a stencil test object. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002dmask_002dfront">Procedure: <strong>stencil-test-mask-front</strong> <em>stencil-test</em></dt> -<dd><p>Return the front mask of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002dmask_002dback">Procedure: <strong>stencil-test-mask-back</strong> <em>stencil-test</em></dt> -<dd><p>Return the back mask of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002dfunction_002dfront">Procedure: <strong>stencil-test-function-front</strong> <em>stencil-test</em></dt> -<dd><p>Return the front function of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002dfunction_002dback">Procedure: <strong>stencil-test-function-back</strong> <em>stencil-test</em></dt> -<dd><p>Return the back function of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002dfunction_002dmask_002dfront">Procedure: <strong>stencil-test-function-mask-front</strong> <em>stencil-test</em></dt> -<dd><p>Return the front function-mask of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002dfunction_002dmask_002dback">Procedure: <strong>stencil-test-function-mask-back</strong> <em>stencil-test</em></dt> -<dd><p>Return the back function-mask of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002dreference_002dfront">Procedure: <strong>stencil-test-reference-front</strong> <em>stencil-test</em></dt> -<dd><p>Return the front reference value of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002dreference_002dback">Procedure: <strong>stencil-test-reference-back</strong> <em>stencil-test</em></dt> -<dd><p>Return the back reference value of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002don_002dfail_002dfront">Procedure: <strong>stencil-test-on-fail-front</strong> <em>stencil-test</em></dt> -<dd><p>Return the front failure action of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002don_002dfail_002dback">Procedure: <strong>stencil-test-on-fail-back</strong> <em>stencil-test</em></dt> -<dd><p>Return the back failure action of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002don_002ddepth_002dfail_002dfront">Procedure: <strong>stencil-test-on-depth-fail-front</strong> <em>stencil-test</em></dt> -<dd><p>Return the front depth test failure action of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002don_002ddepth_002dfail_002dback">Procedure: <strong>stencil-test-on-depth-fail-back</strong> <em>stencil-test</em></dt> -<dd><p>Return the back depth test failure action of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002don_002dpass_002dfront">Procedure: <strong>stencil-test-on-pass-front</strong> <em>stencil-test</em></dt> -<dd><p>Return the front pass action of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-stencil_002dtest_002don_002dpass_002dback">Procedure: <strong>stencil-test-on-pass-back</strong> <em>stencil-test</em></dt> -<dd><p>Return the back pass action of <var>stencil-test</var>. -</p></dd></dl> - -<dl> -<dt id="index-current_002dstencil_002dtest">Procedure: <strong>current-stencil-test</strong></dt> -<dd><p>Return the current stencil test. -</p></dd></dl> - -<dl> -<dt id="index-g_003astencil_002dtest">Variable: <strong>g:stencil-test</strong></dt> -<dd><p>Render state for stencil testing (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - -<span id="Multisample-Antialiasing"></span><h4 class="subsubsection">5.3.16.5 Multisample Antialiasing</h4> - -<p>Multisample antialiasing is a feature supported by many, but not all, -graphics cards. It is a nice easy way to improve the final frame that -the user sees, particularly in 3D scenes. The <code>(chickadee -graphics multisample)</code> module provides access to the -<code>g:multisample?</code> render state. -</p> -<dl> -<dt id="index-current_002dmultisample">Procedure: <strong>current-multisample</strong></dt> -<dd><p>Return <code>#t</code> if multisampling is enabled. -</p></dd></dl> - -<dl> -<dt id="index-g_003amultisample_003f">Variable: <strong>g:multisample?</strong></dt> -<dd><p>Render state for multisampling (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Rendering-Engine.html" accesskey="n" rel="next">Rendering Engine</a>, Previous: <a href="Viewports.html" accesskey="p" rel="prev">Viewports</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Rendering-Engine.html b/manuals/chickadee/Rendering-Engine.html deleted file mode 100644 index 8f81fc6..0000000 --- a/manuals/chickadee/Rendering-Engine.html +++ /dev/null @@ -1,176 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Rendering Engine (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Rendering Engine (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Rendering Engine (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Audio.html" rel="next" title="Audio" /> -<link href="Render-Settings.html" rel="prev" title="Render Settings" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Rendering-Engine"></span><div class="header"> -<p> -Previous: <a href="Render-Settings.html" accesskey="p" rel="prev">Render Settings</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Rendering-Engine-1"></span><h4 class="subsection">5.3.17 Rendering Engine</h4> - -<p>The <code>(chickadee graphics engine)</code> module provides a Scheme -abstraction to the state of the GPU driver. When the Chickadee game -loop launches, it takes care to initialize the engine. All draw calls -and state changes happen within the context of this engine. -</p> -<p>Performing a custom draw call could look something like this: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">with-graphics-state</span> <span class="syntax-open">(</span><span class="syntax-open">(</span><span class="syntax-symbol">g:blend-mode</span> <span class="syntax-symbol">blend:alpha</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">g:texture-0</span> <span class="syntax-symbol">my-texture</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">shader-apply</span> <span class="syntax-symbol">my-shader</span> <span class="syntax-keyword">#:foo</span> <span class="syntax-symbol">1</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<span id="Render-States"></span><h4 class="subsubsection">5.3.17.1 Render States</h4> - -<p>Render states represent individual state values on the GPU. For -example, the current shader. As a naming convention, Chickadee -prefixes variables containing render states with <code>g:</code>. Render -states can be manipulated using the <code>with-graphics-state</code> macro. -</p> -<dl> -<dt id="index-with_002dgraphics_002dstate">Syntax: <strong>with-graphics-state</strong> <em>((name value) …) body …</em></dt> -<dd><p>Evaluate <var>body</var> with render states defined by <var>name</var> changed -to <var>value</var>. The render states are restored to their previous -values afterwards. -</p></dd></dl> - -<p>One additional piece of state that the rendering engine has, that is -not part of the GPU state, is the current projection matrix: -</p> -<dl> -<dt id="index-current_002dprojection">Procedure: <strong>current-projection</strong></dt> -<dd><p>Return the currently bound projection matrix (see <a href="Matrices.html">Matrices</a>). -</p></dd></dl> - -<dl> -<dt id="index-with_002dprojection">Syntax: <strong>with-projection</strong> <em>projection body …</em></dt> -<dd><p>Evaluate <var>body</var> with the current projection matrix bound to -<var>projection</var> (see <a href="Matrices.html">Matrices</a>). -</p></dd></dl> - -<span id="Rendering"></span><h4 class="subsubsection">5.3.17.2 Rendering</h4> - -<p>Chickadee likens a GPU draw call to a Scheme procedure call. A shader -(see <a href="Shaders.html">Shaders</a>) is like a procedure for the GPU to apply. Shaders -are passed arguments: The positional arguments are vertex array -attributes (see <a href="Buffers.html">Buffers</a>) and the keyword arguments correspond to -the shader’s uniform variables. Scheme uses <code>apply</code> to call a -procedure, so Chickadee uses <code>shader-apply</code> to call a shader. -</p> -<dl> -<dt id="index-shader_002dapply">Syntax: <strong>shader-apply</strong> <em>shader vertex-array [#:uniform-key uniform-value …]</em></dt> -<dt id="index-shader_002dapply_002a">Syntax: <strong>shader-apply*</strong> <em>shader vertex-array count [#:uniform-key uniform-value …]</em></dt> -<dd> -<p>Render <var>vertex-array</var> using <var>shader</var> with the uniform values -specified in the following keyword arguments. -</p> -<p>While <code>shader-apply</code> will draw every vertex in <var>vertex-array</var>, -<code>shader-apply*</code> will only draw <var>count</var> vertices. -</p></dd></dl> - -<dl> -<dt id="index-shader_002dapply_002finstanced">Syntax: <strong>shader-apply/instanced</strong> <em>shader vertex-array n [#:uniform-key uniform-value …]</em></dt> -<dt id="index-shader_002dapply_002finstanced-1">Syntax: <strong>shader-apply/instanced</strong> <em>shader vertex-array count n [#:uniform-key uniform-value …]</em></dt> -<dd> -<p>Render <var>vertex-array</var> <var>n</var> times using <var>shader</var> with the -uniform values specified in the following keyword arguments. -</p> -<p>Instanced rendering is very beneficial for rendering the same object -many times with only small differences for each one. For example, the -particle effects described in <a href="Particles.html">Particles</a> use instanced rendering. -</p> -<p>While <code>shader-apply/instanced</code> will draw every vertex in -<var>vertex-array</var>, <code>shader-apply*</code> will only draw <var>count</var> -vertices. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Previous: <a href="Render-Settings.html" accesskey="p" rel="prev">Render Settings</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Requirements.html b/manuals/chickadee/Requirements.html deleted file mode 100644 index 1093943..0000000 --- a/manuals/chickadee/Requirements.html +++ /dev/null @@ -1,107 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Requirements (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Requirements (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Requirements (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Installation.html" rel="up" title="Installation" /> -<link href="Getting-Started.html" rel="next" title="Getting Started" /> -<link href="Installation.html" rel="prev" title="Installation" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Requirements"></span><div class="header"> -<p> -Up: <a href="Installation.html" accesskey="u" rel="up">Installation</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Requirements-1"></span><h3 class="section">1.1 Requirements</h3> - -<p>Chickadee depends on the following packages: -</p> -<ul> -<li> <a href="https://gnu.org/software/guile">GNU Guile</a>, version 3.0.0 or later; -</li><li> <a href="https://gnu.org/software/guile-opengl">GNU guile-opengl</a>, version 0.1 or later. -</li><li> <a href="https://dthompson.us/pages/software/guile-sdl2.html">guile-sdl2</a>, version 0.7.0 or later; -</li><li> libfreetype -</li><li> libmpg123 -</li><li> libopenal -</li><li> libreadline -</li><li> libvorbisfile -</li></ul> - - - - -</body> -</html> diff --git a/manuals/chickadee/Scripting.html b/manuals/chickadee/Scripting.html deleted file mode 100644 index 2ef1b5b..0000000 --- a/manuals/chickadee/Scripting.html +++ /dev/null @@ -1,118 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Scripting (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Scripting (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Scripting (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="API-Reference.html" rel="up" title="API Reference" /> -<link href="Agendas.html" rel="next" title="Agendas" /> -<link href="The-Environment.html" rel="prev" title="The Environment" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Scripting"></span><div class="header"> -<p> -Next: <a href="Data-Structures.html" accesskey="n" rel="next">Data Structures</a>, Previous: <a href="Audio.html" accesskey="p" rel="prev">Audio</a>, Up: <a href="API-Reference.html" accesskey="u" rel="up">API Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Scripting-1"></span><h3 class="section">5.5 Scripting</h3> - -<p>Game logic is a web of asynchronous events that are carefully -coordinated to bring the game world to life. In order to make an -enemy follow and attack the player, or move an NPC back and forth in -front of the item shop, or do both at the same time, a scripting -system is a necessity. Chickadee comes with an asynchronous -programming system in the <code>(chickadee scripting)</code> module. -Lightweight, cooperative threads known as “scripts” allow the -programmer to write asynchronous code as if it were synchronous, and -allow many such “threads” to run concurrently. -</p> -<p>But before we dig deeper into scripts, let’s discuss the simple act -of scheduling tasks. -</p> -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="Agendas.html" accesskey="1">Agendas</a></td><td> </td><td align="left" valign="top">Scheduling tasks. -</td></tr> -<tr><td align="left" valign="top">• <a href="Scripts.html" accesskey="2">Scripts</a></td><td> </td><td align="left" valign="top">Cooperative multitasking. -</td></tr> -<tr><td align="left" valign="top">• <a href="Tweening.html" accesskey="3">Tweening</a></td><td> </td><td align="left" valign="top">Animations. -</td></tr> -<tr><td align="left" valign="top">• <a href="Channels.html" accesskey="4">Channels</a></td><td> </td><td align="left" valign="top">Publish data to listeners. -</td></tr> -</table> - - - - -</body> -</html> diff --git a/manuals/chickadee/Scripts.html b/manuals/chickadee/Scripts.html deleted file mode 100644 index b62bb2d..0000000 --- a/manuals/chickadee/Scripts.html +++ /dev/null @@ -1,212 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Scripts (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Scripts (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Scripts (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Scripting.html" rel="up" title="Scripting" /> -<link href="Tweening.html" rel="next" title="Tweening" /> -<link href="Agendas.html" rel="prev" title="Agendas" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Scripts"></span><div class="header"> -<p> -Next: <a href="Tweening.html" accesskey="n" rel="next">Tweening</a>, Previous: <a href="Agendas.html" accesskey="p" rel="prev">Agendas</a>, Up: <a href="Scripting.html" accesskey="u" rel="up">Scripting</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Scripts-1"></span><h4 class="subsection">5.5.2 Scripts</h4> - -<p>Now that we can schedule tasks, let’s take things to the next level. -It sure would be great if we could make procedures that described a -series of actions that happened over time, especially if we could do -so without contorting our code into a nest of callback procedures. -This is where scripts come in. With scripts we can write code in a -linear way, in a manner that appears to be synchronous, but with the -ability to suspend periodically in order to let other scripts have a -turn and prevent blocking the game loop. Building on top of the -scheduling that agendas provide, here is a script that models a child -trying to get their mother’s attention: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">script</span> - <span class="syntax-open">(</span><span class="syntax-symbol">while</span> <span class="syntax-symbol">#t</span> - <span class="syntax-open">(</span><span class="syntax-symbol">display</span> <span class="syntax-string">"mom!"</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">newline</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">sleep</span> <span class="syntax-symbol">60</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> <span class="syntax-comment">; where 60 = 1 second of real time -</span></pre></div> - -<p>This code runs in an endless loop, but the <code>sleep</code> procedure -suspends the script and schedules it to be run later by the agenda. -So, after each iteration of the loop, control is returned back to the -game loop and the program is not stuck spinning in a loop that will -never exit. Pretty neat, eh? -</p> -<p>Scripts can suspend to any capable handler, not just the agenda. -The <code>yield</code> procedure will suspend the current script and pass -its “continuation” to a handler procedure. This handler procedure -could do anything. Perhaps the handler stashes the continuation -somewhere where it will be resumed when the user presses a specific -key on the keyboard, or maybe it will be resumed when the player picks -up an item off of the dungeon floor; the sky is the limit. -</p> -<p>Sometimes it is necessary to abruptly terminate a script after it has -been started. For example, when an enemy is defeated their AI routine -needs to be shut down. When a script is spawned, a handle to that -script is returned that can be used to cancel it when desired. -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">script</span> <span class="syntax-open">(</span><span class="syntax-symbol">script</span> <span class="syntax-open">(</span><span class="syntax-symbol">while</span> <span class="syntax-symbol">#t</span> <span class="syntax-open">(</span><span class="syntax-symbol">display</span> <span class="syntax-string">"hey\n"</span><span class="syntax-close">)</span> <span class="syntax-open">(</span><span class="syntax-symbol">sleep</span> <span class="syntax-symbol">60</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-comment">;; sometime later -</span><span class="syntax-open">(</span><span class="syntax-symbol">cancel-script</span> <span class="syntax-symbol">script</span><span class="syntax-close">)</span> -</pre></div> - -<dl> -<dt id="index-spawn_002dscript">Procedure: <strong>spawn-script</strong> <em>thunk</em></dt> -<dd><p>Apply <var>thunk</var> as a script and return a handle to it. -</p></dd></dl> - -<dl> -<dt id="index-script">Syntax: <strong>script</strong> <em>body …</em></dt> -<dd><p>Evaluate <var>body</var> as a script and return a handle to it. -</p></dd></dl> - -<dl> -<dt id="index-script_003f">Procedure: <strong>script?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a script handle. -</p></dd></dl> - -<dl> -<dt id="index-script_002dcancelled_003f">Procedure: <strong>script-cancelled?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> has been cancelled. -</p></dd></dl> - -<dl> -<dt id="index-script_002drunning_003f">Procedure: <strong>script-running?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> has not yet terminated or been -cancelled. -</p></dd></dl> - -<dl> -<dt id="index-script_002dcomplete_003f">Procedure: <strong>script-complete?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> has terminated. -</p></dd></dl> - -<dl> -<dt id="index-cancel_002dscript">Procedure: <strong>cancel-script</strong> <em>co</em></dt> -<dd><p>Prevent further execution of the script <var>co</var>. -</p></dd></dl> - -<dl> -<dt id="index-yield">Procedure: <strong>yield</strong> <em>handler</em></dt> -<dd><p>Suspend the current script and pass its continuation to the -procedure <var>handler</var>. -</p></dd></dl> - -<dl> -<dt id="index-join">Procedure: <strong>join</strong> <em>script</em></dt> -<dd><p>Suspend the current script until <var>script</var> has terminated. -</p></dd></dl> - -<dl> -<dt id="index-sleep">Procedure: <strong>sleep</strong> <em>duration</em></dt> -<dd><p>Wait <var>duration</var> before resuming the current script. -</p></dd></dl> - -<dl> -<dt id="index-wait_002duntil">Syntax: <strong>wait-until</strong> <em>condition</em></dt> -<dd><p>Wait until <var>condition</var> is met before resuming the current script. -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">script</span> - <span class="syntax-open">(</span><span class="syntax-symbol">wait-until</span> <span class="syntax-open">(</span><span class="syntax-symbol">key-pressed?</span> <span class="syntax-symbol">'z</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">display</span> <span class="syntax-string">"you pressed the Z key!\n"</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -</dd></dl> - -<dl> -<dt id="index-forever">Syntax: <strong>forever</strong> <em>body …</em></dt> -<dd><p>Evaluate <var>body</var> in an endless loop. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Tweening.html" accesskey="n" rel="next">Tweening</a>, Previous: <a href="Agendas.html" accesskey="p" rel="prev">Agendas</a>, Up: <a href="Scripting.html" accesskey="u" rel="up">Scripting</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Shaders.html b/manuals/chickadee/Shaders.html deleted file mode 100644 index 505e031..0000000 --- a/manuals/chickadee/Shaders.html +++ /dev/null @@ -1,405 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Shaders (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Shaders (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Shaders (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Framebuffers.html" rel="next" title="Framebuffers" /> -<link href="Buffers.html" rel="prev" title="Buffers" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Shaders"></span><div class="header"> -<p> -Next: <a href="Framebuffers.html" accesskey="n" rel="next">Framebuffers</a>, Previous: <a href="Buffers.html" accesskey="p" rel="prev">Buffers</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Shaders-1"></span><h4 class="subsection">5.3.13 Shaders</h4> - -<p>Shaders are programs that the GPU can evaluate that allow the -programmer to completely customized the final output of a GPU draw -call. The <code>(chickadee graphics shader)</code> module provides an API for -building custom shaders. -</p> -<p>Shaders are written in the OpenGL Shading Language, or GLSL for short. -Chickadee aspires to provide a domain specific language for writing -shaders in Scheme, but we are not there yet. -</p> -<p>Shader programs consist of two components: A vertex shader and a -fragment shader. A vertex shader receives vertex data (position -coordinates, texture coordinates, normals, etc.) and transforms them -as desired, whereas a fragment shader controls the color of each -pixel. -</p> -<p>Sample vertex shader: -</p> -<div class="example"> -<pre class="verbatim">#version 130 - -in vec2 position; -in vec2 tex; -out vec2 fragTex; -uniform mat4 mvp; - -void main(void) { - fragTex = tex; - gl_Position = mvp * vec4(position.xy, 0.0, 1.0); -} -</pre></div> - -<p>Sample fragment shader: -</p> -<div class="example"> -<pre class="verbatim">#version 130 - -in vec2 fragTex; -uniform sampler2D colorTexture; - -void main (void) { - gl_FragColor = texture2D(colorTexture, fragTex); -} -</pre></div> - -<p>This manual will not cover GLSL features and syntax as there is lots -of information already available about this topic. -</p> -<p>One way to think about rendering with shaders, and the metaphor -Chickadee uses, is to think about it as a function call: The shader is -a function, and it is applied to some “attributes” (positional -arguments), and some “uniforms” (keyword arguments). -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">my-shader</span> <span class="syntax-open">(</span><span class="syntax-symbol">load-shader</span> <span class="syntax-string">"vert.glsl"</span> <span class="syntax-string">"frag.glsl"</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">vertices</span> <span class="syntax-open">(</span><span class="syntax-symbol">make-vertex-array</span> <span class="syntax-symbol">...</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-symbol">shader-apply</span> <span class="syntax-symbol">my-shader</span> <span class="syntax-symbol">vertices</span> <span class="syntax-keyword">#:color</span> <span class="syntax-symbol">red</span><span class="syntax-close">)</span> -</pre></div> - -<p>See <a href="Rendering-Engine.html">Rendering Engine</a> for more details about the <code>shader-apply</code> -procedure. -</p> -<p>Shaders are incredibly powerful tools, and there’s more information -about them than we could ever fit into this manual, so we highly -recommend searching the web for more information and examples. What -we can say, though, is how to use our API: -</p> -<dl> -<dt id="index-strings_002d_003eshader">Procedure: <strong>strings->shader</strong> <em>vertex-source fragment-source</em></dt> -<dd><p>Compile <var>vertex-source</var>, the GLSL code for the vertex shader, and -<var>fragment-source</var>, the GLSL code for the fragment shader, into a -GPU shader program. -</p></dd></dl> - -<dl> -<dt id="index-load_002dshader">Procedure: <strong>load-shader</strong> <em>vertex-source-file fragment-source-file</em></dt> -<dd><p>Compile the GLSL source code within <var>vertex-source-file</var> and -<var>fragment-source-file</var> into a GPU shader program. -</p></dd></dl> - -<dl> -<dt id="index-make_002dshader">Procedure: <strong>make-shader</strong> <em>vertex-port fragment-port</em></dt> -<dd><p>Read GLSL source from <var>vertex-port</var> and <var>fragment-port</var> and -compile them into a GPU shader program. -</p></dd></dl> - -<dl> -<dt id="index-shader_003f">Procedure: <strong>shader?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a shader. -</p></dd></dl> - -<dl> -<dt id="index-null_002dshader">Variable: <strong>null-shader</strong></dt> -<dd><p>Represents the absence shader program. -</p></dd></dl> - -<dl> -<dt id="index-shader_002duniform">Procedure: <strong>shader-uniform</strong> <em>shader name</em></dt> -<dd><p>Return the metadata for the uniform <var>name</var> in <var>shader</var>. -</p></dd></dl> - -<dl> -<dt id="index-shader_002duniforms">Procedure: <strong>shader-uniforms</strong> <em>shader</em></dt> -<dd><p>Return a hash table of uniforms for <var>shader</var>. -</p></dd></dl> - -<dl> -<dt id="index-shader_002dattributes">Procedure: <strong>shader-attributes</strong> <em>shader</em></dt> -<dd><p>Return a hash table of attributes for <var>shader</var>. -</p></dd></dl> - -<dl> -<dt id="index-shader_002duniform_002dset_0021">Procedure: <strong>shader-uniform-set!</strong> <em>shader uniform value</em></dt> -</dl> - -<span id="Attributes"></span><h4 class="subsubsection">5.3.13.1 Attributes</h4> - -<dl> -<dt id="index-attribute_003f">Procedure: <strong>attribute?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is an attribute. -</p></dd></dl> - -<dl> -<dt id="index-attribute_002dname">Procedure: <strong>attribute-name</strong> <em>attribute</em></dt> -<dd><p>Return the variable name of <var>attribute</var>. -</p></dd></dl> - -<dl> -<dt id="index-attribute_002dlocation">Procedure: <strong>attribute-location</strong> <em>attribute</em></dt> -<dd><p>Return the binding location of <var>attribute</var>. -</p></dd></dl> - -<dl> -<dt id="index-attribute_002dtype">Procedure: <strong>attribute-type</strong> <em>attribute</em></dt> -<dd><p>Return the data type of <var>attribute</var>. -</p></dd></dl> - -<span id="Uniforms"></span><h4 class="subsubsection">5.3.13.2 Uniforms</h4> - -<dl> -<dt id="index-uniform_003f">Procedure: <strong>uniform?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a uniform. -</p></dd></dl> - -<dl> -<dt id="index-uniform_002dname">Procedure: <strong>uniform-name</strong> <em>uniform</em></dt> -<dd><p>Return the variable name of <var>uniform</var>. -</p></dd></dl> - -<dl> -<dt id="index-uniform_002dtype">Procedure: <strong>uniform-type</strong> <em>uniform</em></dt> -<dd><p>Return the data type of <var>uniform</var>. -</p></dd></dl> - -<dl> -<dt id="index-uniform_002dvalue">Procedure: <strong>uniform-value</strong> <em>uniform</em></dt> -<dd><p>Return the current value of <var>uniform</var>. -</p></dd></dl> - -<span id="User_002dDefined-Shader-Types"></span><h4 class="subsubsection">5.3.13.3 User-Defined Shader Types</h4> - -<p>The shader examples in this manual thus far have only shown uniforms -defined using primitive types. However, GLSL shaders support -user-defined compound structs, such as this one: -</p> -<div class="example"> -<pre class="verbatim">struct Light { - bool enabled; - int type; - vec3 position; - vec3 direction; - vec4 color; - float intensity; - float cutOff; -}; - -uniform Light light; -</pre></div> - -<p>While <code>light</code> is declared as a single uniform in the shader code, -OpenGL translates this into <em>seven</em> uniforms in this case: One -uniform each member of the <code>Light</code> struct. This poses a problem -for sending Scheme data to the GPU. How can compound Scheme data -translate into compound uniform data on the GPU? The answer is with -shader types. Shader types are a special kind of Guile struct that -provide a one-to-one mapping between a Scheme data structure and a -shader struct. -</p> -<p>Some example code will explain this concept best. Here is the Scheme -equivalent of the <code>Light</code> struct: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define-shader-type</span> <span class="syntax-symbol"><light></span> - <span class="syntax-symbol">make-light</span> - <span class="syntax-symbol">light?</span> - <span class="syntax-open">(</span><span class="syntax-symbol">bool</span> <span class="syntax-symbol">enabled</span> <span class="syntax-symbol">light-enabled?</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">int</span> <span class="syntax-symbol">type</span> <span class="syntax-symbol">light-type</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">float-vec3</span> <span class="syntax-symbol">position</span> <span class="syntax-symbol">light-position</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">float-vec3</span> <span class="syntax-symbol">direction</span> <span class="syntax-symbol">light-direction</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">float-vec4</span> <span class="syntax-symbol">color</span> <span class="syntax-symbol">light-color</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">float</span> <span class="syntax-symbol">intensity</span> <span class="syntax-symbol">light-intensity</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">float</span> <span class="syntax-symbol">cut-off</span> <span class="syntax-symbol">light-cut-off</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p>The macro <code>define-shader-type</code> closely resembles the familiar -<code>define-record-type</code> from SRFI-9, but with one notable -difference: Each struct field contains type information. The type -must be one of several primitive types (documented below) or another -shader type in the case of a nested structure. -</p> -<p>It is important to note that the names of the shader type fields -<em>must</em> match the names of the struct members in the GLSL code, -otherwise Chickadee will be unable to perform the proper translation. -</p> -<p>As of this writing, this interface is new and experimental. It -remains to be seen if this model is robust enough for all use-cases. -</p> -<p>Primitive data types: -</p> -<dl> -<dt id="index-bool">Variable: <strong>bool</strong></dt> -<dd><p>Either <code>#t</code> or <code>#f</code>. -</p></dd></dl> - -<dl> -<dt id="index-int">Variable: <strong>int</strong></dt> -<dd><p>An integer. -</p></dd></dl> - -<dl> -<dt id="index-unsigned_002dint">Variable: <strong>unsigned-int</strong></dt> -<dd><p>An unsigned integer. -</p></dd></dl> - -<dl> -<dt id="index-float">Variable: <strong>float</strong></dt> -<dd><p>A floating point number. -</p></dd></dl> - -<dl> -<dt id="index-float_002dvec2">Variable: <strong>float-vec2</strong></dt> -<dd><p>A 2D vector (see <a href="Vectors.html">Vectors</a>.) -</p></dd></dl> - -<dl> -<dt id="index-float_002dvec3">Variable: <strong>float-vec3</strong></dt> -<dd><p>A 3D vector (see <a href="Vectors.html">Vectors</a>.) -</p></dd></dl> - -<dl> -<dt id="index-float_002dvec4">Variable: <strong>float-vec4</strong></dt> -<dd><p>A color (see <a href="Colors.html">Colors</a>) or rectangle (see <a href="Rectangles.html">Rectangles</a>.) -</p></dd></dl> - -<dl> -<dt id="index-mat3">Variable: <strong>mat3</strong></dt> -<dd><p>A 3x3 matrix (see <a href="Matrices.html">Matrices</a>.) -</p></dd></dl> - -<dl> -<dt id="index-mat4">Variable: <strong>mat4</strong></dt> -<dd><p>A 4x4 matrix (see <a href="Matrices.html">Matrices</a>.) -</p></dd></dl> - -<dl> -<dt id="index-sampler_002d2d">Variable: <strong>sampler-2d</strong></dt> -<dd><p>A texture (see <a href="Textures.html">Textures</a>.) -</p></dd></dl> - -<dl> -<dt id="index-sampler_002dcube">Variable: <strong>sampler-cube</strong></dt> -<dd><p>A cube map (see <a href="Textures.html">Textures</a>.) -</p></dd></dl> - -<dl> -<dt id="index-local_002dfield">Variable: <strong>local-field</strong></dt> -<dd><p>A special type that means that the data is for the client-side -(Scheme-side) only and should not be sent to the GPU. Any object may -be stored in a local field. -</p></dd></dl> - -<dl> -<dt id="index-define_002dshader_002dtype">Syntax: <strong>define-shader-type</strong> <em><name> constructor predicate (field-type field-name [field-getter] [field-setter]) …</em></dt> -<dd> -<p>Define a new shader data type called <var><name></var>. -</p> -<p>Instances of this data type are created by calling the -<var>constructor</var> procedure. This procedure maps each field to a -keyword argument. A shader data type with the fields <code>foo</code>, -<code>bar</code>, and <code>baz</code> would have a constructor that accepts the -keyword arguments <code>#:foo</code>, <code>#:bar</code>, and <code>#:baz</code>. -</p> -<p>A procedure named <var>predicate</var> will test if an object is a -<var><name></var> shader data type. -</p> -<p>Fields follow the format <code>(field-type field-name [field-getter] -[field-setter])</code>. <var>field-type</var> and <var>field-name</var> are required -for each field, but <var>field-getter</var> and <var>field-setter</var> are -optional. -</p> -</dd></dl> - -<dl> -<dt id="index-shader_002ddata_002dtype_003f">Procedure: <strong>shader-data-type?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a shader data type object. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Framebuffers.html" accesskey="n" rel="next">Framebuffers</a>, Previous: <a href="Buffers.html" accesskey="p" rel="prev">Buffers</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Skyboxes.html b/manuals/chickadee/Skyboxes.html deleted file mode 100644 index 07cc5d6..0000000 --- a/manuals/chickadee/Skyboxes.html +++ /dev/null @@ -1,119 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Skyboxes (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Skyboxes (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Skyboxes (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Meshes.html" rel="next" title="Meshes" /> -<link href="Lights.html" rel="prev" title="Lights" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Skyboxes"></span><div class="header"> -<p> -Next: <a href="Meshes.html" accesskey="n" rel="next">Meshes</a>, Previous: <a href="Lights.html" accesskey="p" rel="prev">Lights</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Skyboxes-1"></span><h4 class="subsection">5.3.10 Skyboxes</h4> - -<p>Skyboxes are used as backgrounds in 3D environments, as well as a -source of ambient lighting data when rendering 3D objects. The -<code>(chickadee graphics skybox)</code> module provides an API for making -skyboxes. -</p> -<dl> -<dt id="index-make_002dskybox">Procedure: <strong>make-skybox</strong> <em>cube-map</em></dt> -<dd><p>Return a new skybox that uses <var>cube-map</var> for a texture. -</p></dd></dl> - -<dl> -<dt id="index-skybox_003f">Procedure: <strong>skybox?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a skybox. -</p></dd></dl> - -<dl> -<dt id="index-skybox_002dcube_002dmap">Procedure: <strong>skybox-cube-map</strong> <em>sky-box</em></dt> -<dd><p>Return the cube map of <var>skybox</var>. -</p></dd></dl> - -<dl> -<dt id="index-draw_002dskybox">Procedure: <strong>draw-skybox</strong> <em>skybox view</em></dt> -<dd><p>Render <var>skybox</var> to the screen using the view matrix <var>view</var>. -</p></dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/Sources.html b/manuals/chickadee/Sources.html deleted file mode 100644 index cca3b56..0000000 --- a/manuals/chickadee/Sources.html +++ /dev/null @@ -1,336 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Sources (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Sources (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Sources (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Audio.html" rel="up" title="Audio" /> -<link href="The-Listener.html" rel="next" title="The Listener" /> -<link href="Audio-Files.html" rel="prev" title="Audio Files" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Sources"></span><div class="header"> -<p> -Next: <a href="The-Listener.html" accesskey="n" rel="next">The Listener</a>, Previous: <a href="Audio-Files.html" accesskey="p" rel="prev">Audio Files</a>, Up: <a href="Audio.html" accesskey="u" rel="up">Audio</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Sources-1"></span><h4 class="subsection">5.4.2 Sources</h4> - -<p>While the <code>audio-play</code> procedure provides a quick and convenient -way to play audio, it has some limitations. What if the audio is a -long piece of music that might need to be paused or stopped later? -What if the audio should be looped? What if the volume or pitch needs -to be altered? For manipulating audio in these ways, a “source” is -required. Sources can be thought of like a boombox: They sit -somewhere in the room and play sound. The pause or stop buttons can -be pressed; it can be moved somewhere else; the volume knob can be -adjusted; the CD can be changed. -</p> -<p>Sources are a great fit for handling background music, among other -things. For quick, one-off sound effects, <code>audio-play</code> is a -better fit. -</p> -<dl> -<dt id="index-make_002dsource">Procedure: <strong>make-source</strong> <em>audio loop? [#:pitch 1.0] [#:volume 1.0] [#:min-volume 0.0] [#:max-volume 1.0] [#:max-distance] [#:reference-distance 0.0] [#:rolloff-factor 1.0] [#:cone-outer-volume 0.0] [#:cone-inner-angle 0.0] [#:cone-outer-angle] [#:position <code>(vec3 0.0 0.0 0.0)</code>] [#:velocity <code>(vec3 0.0 0.0 0.0)</code>] [#:direction <code>(vec3 0.0 0.0 0.0)</code>] [#:relative? <code>#f</code>]</em></dt> -<dd> -<p>Return a new audio source. <var>audio</var> is the audio data to use when -playing. <var>loop?</var> specifies whether or not to loop the audio -during playback. -</p> -<p>Refer to <code>audio-play</code> (see <a href="Audio-Files.html">Audio Files</a>) for information about -the optional keyword arguments. -</p></dd></dl> - -<dl> -<dt id="index-source_003f">Procedure: <strong>source?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is an audio source object. -</p></dd></dl> - -<dl> -<dt id="index-streaming_002dsource_003f">Procedure: <strong>streaming-source?</strong> <em>source</em></dt> -<dd><p>Return <code>#t</code> if <var>source</var> contains streaming audio. -</p></dd></dl> - -<dl> -<dt id="index-static_002dsource_003f">Procedure: <strong>static-source?</strong> <em>source</em></dt> -<dd><p>Return <code>#t</code> if <var>source</var> contains static audio. -</p></dd></dl> - -<dl> -<dt id="index-source_002dplaying_003f">Procedure: <strong>source-playing?</strong> <em>source</em></dt> -<dd><p>Return <code>#t</code> if <var>source</var> is currently playing. -</p></dd></dl> - -<dl> -<dt id="index-source_002dpaused_003f">Procedure: <strong>source-paused?</strong> <em>source</em></dt> -<dd><p>Return <code>#t</code> if <var>source</var> is currently paused. -</p></dd></dl> - -<dl> -<dt id="index-source_002dstopped_003f">Procedure: <strong>source-stopped?</strong> <em>source</em></dt> -<dd><p>Return <code>#t</code> if <var>source</var> is currently stopped. -</p></dd></dl> - -<dl> -<dt id="index-source_002dpitch">Procedure: <strong>source-pitch</strong> <em>source</em></dt> -<dd><p>Return the pitch multiplier of <var>source</var>. -</p></dd></dl> - -<dl> -<dt id="index-source_002dvolume">Procedure: <strong>source-volume</strong> <em>source</em></dt> -<dd><p>Return the volume multiplier of <var>source</var>. -</p></dd></dl> - -<dl> -<dt id="index-source_002dmin_002dvolume">Procedure: <strong>source-min-volume</strong> <em>source</em></dt> -<dd><p>Return the minimum volume of <var>source</var>. -</p></dd></dl> - -<dl> -<dt id="index-source_002dmax_002dvolume">Procedure: <strong>source-max-volume</strong> <em>source</em></dt> -<dd><p>Return the maximum volume of <var>source</var>. -</p></dd></dl> - -<dl> -<dt id="index-source_002dmax_002ddistance">Procedure: <strong>source-max-distance</strong> <em>source</em></dt> -<dd><p>Return the maximum distance of <var>source</var>. -</p></dd></dl> - -<dl> -<dt id="index-source_002dreference_002ddistance">Procedure: <strong>source-reference-distance</strong> <em>source</em></dt> -<dd><p>Return the reference distance of <var>source</var>. -</p></dd></dl> - -<dl> -<dt id="index-source_002drolloff_002dfactor">Procedure: <strong>source-rolloff-factor</strong> <em>source</em></dt> -<dd><p>Return the rolloff factor of <var>source</var>. -</p></dd></dl> - -<dl> -<dt id="index-source_002dcone_002douter_002dvolume">Procedure: <strong>source-cone-outer-volume</strong> <em>source</em></dt> -<dd><p>Return the volume of <var>source</var> when outside the oriented cone. -</p></dd></dl> - -<dl> -<dt id="index-source_002dcone_002dinner_002dangle">Procedure: <strong>source-cone-inner-angle</strong> <em>source</em></dt> -<dd><p>Return the inner angle of the sound cone of <var>source</var> in radians. -</p></dd></dl> - -<dl> -<dt id="index-source_002dcone_002douter_002dangle">Procedure: <strong>source-cone-outer-angle</strong> <em>source</em></dt> -<dd><p>Return the outer angle of the sound cone of <var>source</var> in radians. -</p></dd></dl> - -<dl> -<dt id="index-source_002dposition">Procedure: <strong>source-position</strong> <em>source</em></dt> -<dd><p>Return the position of <var>source</var> as a 3D vector. -</p></dd></dl> - -<dl> -<dt id="index-source_002dvelocity">Procedure: <strong>source-velocity</strong> <em>source</em></dt> -<dd><p>Return the velocity of <var>source</var> as a 3D vector. -</p></dd></dl> - -<dl> -<dt id="index-source_002ddirection">Procedure: <strong>source-direction</strong> <em>source</em></dt> -<dd><p>Return the direction of <var>source</var> as a 3D vector. -</p></dd></dl> - -<dl> -<dt id="index-source_002drelative_003f">Procedure: <strong>source-relative?</strong> <em>source</em></dt> -<dd><p>Return <code>#t</code> if the position of <var>source</var> is relative to the -listener’s position. -</p></dd></dl> - -<dl> -<dt id="index-source_002dplay">Procedure: <strong>source-play</strong> <em>source</em></dt> -<dd><p>Begin/resume playback of <var>source</var>. -</p></dd></dl> - -<dl> -<dt id="index-source_002dpause">Procedure: <strong>source-pause</strong> <em>source</em></dt> -<dd><p>Pause playback of <var>source</var>. -</p></dd></dl> - -<dl> -<dt id="index-source_002dtoggle">Procedure: <strong>source-toggle</strong> <em>source</em></dt> -<dd><p>Play <var>source</var> if it is currently paused or pause <var>source</var> if -it is currently playing. -</p></dd></dl> - -<dl> -<dt id="index-source_002dstop">Procedure: <strong>source-stop</strong> <em>[source]</em></dt> -<dd><p>Stop playing <var>source</var> or, if no source is specified, stop playing -<em>all</em> sources. -</p></dd></dl> - -<dl> -<dt id="index-source_002drewind">Procedure: <strong>source-rewind</strong> <em>source</em></dt> -<dd><p>Rewind <var>source</var> to the beginning of the audio stream. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002daudio_0021">Procedure: <strong>set-source-audio!</strong> <em>source audio</em></dt> -<dd><p>Set the playback stream for <var>source</var> to <var>audio</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002dloop_0021">Procedure: <strong>set-source-loop!</strong> <em>source loop?</em></dt> -<dd><p>Configure whether or not <var>source</var> should loop the audio stream. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002dpitch_0021">Procedure: <strong>set-source-pitch!</strong> <em>source pitch</em></dt> -<dd><p>Set the pitch multiplier of <var>source</var> to <var>pitch</var> -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002dvolume_0021">Procedure: <strong>set-source-volume!</strong> <em>source volume</em></dt> -<dd><p>Set the volume of <var>source</var> to <var>volume</var>. A value of 1.0 is -100% volume. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002dmin_002dvolume_0021">Procedure: <strong>set-source-min-volume!</strong> <em>source volume</em></dt> -<dd><p>Set the minimum volume of <var>source</var> to <var>volume</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002dmax_002dvolume_0021">Procedure: <strong>set-source-max-volume!</strong> <em>source volume</em></dt> -<dd><p>Set the maximum volume of <var>source</var> to <var>volume</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002dmax_002ddistance_0021">Procedure: <strong>set-source-max-distance!</strong> <em>source distance</em></dt> -<dd><p>Set the distance where there will no longer be any attenuation of -<var>source</var> to <var>distance</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002dreference_002ddistance_0021">Procedure: <strong>set-source-reference-distance!</strong> <em>source distance</em></dt> -<dd><p>Set the reference distance of <var>source</var> to <var>distance</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002drolloff_002dfactor_0021">Procedure: <strong>set-source-rolloff-factor!</strong> <em>source factor</em></dt> -<dd><p>Set the rolloff factor for <var>source</var> to <var>factor</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002dcone_002douter_002dvolume_0021">Procedure: <strong>set-source-cone-outer-volume!</strong> <em>source volume</em></dt> -<dd><p>Set the volume for <var>source</var> when outside the sound cone to <var>volume</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002dcone_002dinner_002dangle_0021">Procedure: <strong>set-source-cone-inner-angle!</strong> <em>source angle</em></dt> -<dd><p>Set the inner angle of the sound cone of <var>source</var> to <var>angle</var> radians. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002dcone_002douter_002dangle_0021">Procedure: <strong>set-source-cone-outer-angle!</strong> <em>source angle</em></dt> -<dd><p>Set the outer angle of the sound cone of <var>source</var> to <var>angle</var> radians. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002dposition_0021">Procedure: <strong>set-source-position!</strong> <em>source position</em></dt> -<dd><p>Set the position of <var>source</var> to the 3D vector <var>position</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002dvelocity_0021">Procedure: <strong>set-source-velocity!</strong> <em>source velocity</em></dt> -<dd><p>Set the velocity of <var>source</var> to the 3D vector <var>velocity</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002ddirection_0021">Procedure: <strong>set-source-direction!</strong> <em>source direction</em></dt> -<dd><p>Set the velocity of <var>source</var> to the 3D vector <var>direction</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsource_002drelative_0021">Procedure: <strong>set-source-relative!</strong> <em>source relative?</em></dt> -<dd><p>If <var>relative?</var> is <code>#t</code>, the position of <var>source</var> is -interpreted as relative to the listener’s position. Otherwise, the -position of <var>source</var> is in absolute coordinates. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="The-Listener.html" accesskey="n" rel="next">The Listener</a>, Previous: <a href="Audio-Files.html" accesskey="p" rel="prev">Audio Files</a>, Up: <a href="Audio.html" accesskey="u" rel="up">Audio</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Sprites.html b/manuals/chickadee/Sprites.html deleted file mode 100644 index 3d045ba..0000000 --- a/manuals/chickadee/Sprites.html +++ /dev/null @@ -1,233 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Sprites (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Sprites (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Sprites (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Fonts.html" rel="next" title="Fonts" /> -<link href="Textures.html" rel="prev" title="Textures" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Sprites"></span><div class="header"> -<p> -Next: <a href="Fonts.html" accesskey="n" rel="next">Fonts</a>, Previous: <a href="Textures.html" accesskey="p" rel="prev">Textures</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Sprites-1"></span><h4 class="subsection">5.3.3 Sprites</h4> - -<p>For those who are new to this game, a sprite is a 2D rectangular -bitmap that is rendered to the screen. For 2D games, sprites are the -most essential graphical abstraction. They are used for drawing maps, -players, NPCs, items, particles, text, etc. -</p> -<p>In Chickadee, the <code>(chickadee graphics sprite)</code> module provides the -interface for working with sprites. Bitmaps are stored in textures -(see <a href="Textures.html">Textures</a>) and can be used to draw sprites via the -<code>draw-sprite</code> procedure. -</p> -<dl> -<dt id="index-draw_002dsprite">Procedure: <strong>draw-sprite</strong> <em>texture position [#:blend-mode] [#:origin] [#:rect] [#:rotation] [#:scale] [#:shear] [#:tint white]</em></dt> -<dd> -<p>Draw <var>texture</var> at <var>position</var>. -</p> -<p>Optionally, other transformations may be applied to the sprite. -<var>rotation</var> specifies the angle to rotate the sprite, in radians. -<var>scale</var> specifies the scaling factor as a 2D vector. <var>shear</var> -specifies the shearing factor as a 2D vector. All transformations are -applied relative to <var>origin</var>, a 2D vector, which defaults to the -lower-left corner. -</p> -<p><var>tint</var> specifies the color to multiply against all the sprite’s -pixels. By default white is used, which does no tinting at all. -</p> -<p>Alpha blending is used by default but the blending method can be -changed by specifying <var>blend-mode</var>. -</p> -<p>The area drawn to is as big as the texture, by default. To draw to an -arbitrary section of the screen, specify <var>rect</var>. -</p></dd></dl> - -<span id="Sprite-Batches"></span><h4 class="subsubsection">5.3.3.1 Sprite Batches</h4> - -<p>It’s not uncommon to need to draw hundreds or thousands of sprites -each frame. However, GPUs (graphics processing units) are tricky -beasts that prefer to be sent few, large chunks of data to render -rather than many, small chunks. Using <code>draw-sprite</code> on its own -will involve at least one GPU call <em>per sprite</em>. This is fine -for rendering a few dozen sprites, but will become a serious -bottleneck when rendering hundreds or thousands of sprites. To deal -with this, a technique known as “sprite batching” is used. Instead -of drawing each sprite immediately, the sprite batch will build up a -large buffer of sprites to draw and send them to the GPU all at once. -There is one caveat, however. Batching only works if the sprites -being drawn share a common texture. A good strategy for reducing the -number of different textures is to stuff many bitmaps into a single -image file and create a “texture atlas” (see <a href="Textures.html">Textures</a>) to access -the sub-images within. -</p> -<dl> -<dt id="index-make_002dsprite_002dbatch">Procedure: <strong>make-sprite-batch</strong> <em>texture [#:capacity 256]</em></dt> -<dd><p>Create a new sprite batch for <var>texture</var> with initial space for -<var>capacity</var> sprites. Sprite batches automatically resize when they -are full to accomodate as many sprites as necessary. -</p></dd></dl> - -<dl> -<dt id="index-sprite_002dbatch_003f">Procedure: <strong>sprite-batch?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a sprite batch. -</p></dd></dl> - -<dl> -<dt id="index-sprite_002dbatch_002dtexture">Procedure: <strong>sprite-batch-texture</strong> <em>batch</em></dt> -<dd><p>Return the texture for <var>batch</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsprite_002dbatch_002dtexture_0021">Procedure: <strong>set-sprite-batch-texture!</strong> <em>batch texture</em></dt> -<dd><p>Set texture for <var>batch</var> to <var>texture</var>. -</p></dd></dl> - -<dl> -<dt id="index-sprite_002dbatch_002dadd_0021">Procedure: <strong>sprite-batch-add!</strong> <em>batch position [#:origin] [:rotation] [#:scale] [#:shear] [#:texture-region] [#:tint <code>white</code>]</em></dt> -<dd> -<p>Add sprite located at <var>position</var> to <var>batch</var>. -</p> -<p>To render a subsection of the batch’s texture, a texture object whose -parent is the batch texture may be specified as <var>texture-region</var>. -</p> -<p>See <code>draw-sprite</code> for information about the other arguments. -</p></dd></dl> - -<dl> -<dt id="index-sprite_002dbatch_002dclear_0021">Procedure: <strong>sprite-batch-clear!</strong> <em>batch</em></dt> -<dd><p>Reset size of <var>batch</var> to 0. -</p></dd></dl> - -<dl> -<dt id="index-draw_002dsprite_002dbatch">Procedure: <strong>draw-sprite-batch</strong> <em>batch [#:blend-mode]</em></dt> -<dd><p>Render <var>batch</var> using <var>blend-mode</var>. Alpha blending is used by -default. -</p></dd></dl> - -<span id="g_t9_002dPatches"></span><h4 class="subsubsection">5.3.3.2 9-Patches</h4> - -<p>A 9-patch is a method of rendering a texture so that it can be -stretched to cover an area of any size without becoming distorted. -This is achieved by dividing up the sprite into nine regions: -</p> -<ul> -<li> the center, which can be stretched or tiled horizontally and vertically -</li><li> the four corners, which are never stretched or tiled -</li><li> the left and right sides, which can be stretched or tiled vertically -</li><li> the top and bottom sides, which can be stretched or tiled horizontally -</li></ul> - -<p>The most common application of this technique is for graphical user -interface widgets like buttons and dialog boxes which are often -dynamically resizable. By using a 9-patch, they can be rendered at -any size without scaling artifacts. The <code>(chickadee graphics -9-patch)</code> module provides this functionality. -</p> -<dl> -<dt id="index-draw_002d9_002dpatch">Procedure: <strong>draw-9-patch</strong> <em>texture rect [#:margin 0] [#:top-margin margin] [#:bottom-margin margin] [#:left-margin margin] [#:right-margin margin] [#:mode stretch] [#:origin] [#:scale] [#:rotation] [#:blend-mode] [#:tint white]</em></dt> -<dd> -<p>Draw a 9-patch over the area <var>rect</var> using <var>texture</var> whose -stretchable/tileable patches are defined by the given margin -measurements. The corners are never stretched/tiled, the left and -right edges will be stretched/tiled vertically, the top and bottom -edges may be stretched/tiled horizontally, and the center may be -stretched/tiled in both directions. -</p> -<p><var>mode</var> may be either <code>stretch</code> (the default) or <code>tile</code>. -</p> -<p><var>margin</var> specifies the margin size for all sides of the 9-patch. -To make margins of differing sizes, the <var>top-margin</var>, -<var>bottom-margin</var>, <var>left-margin</var>, and <var>right-margin</var> -arguments may be used. -</p> -<p>Refer to <code>draw-sprite</code> for information about the other arguments -as they are the same. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Fonts.html" accesskey="n" rel="next">Fonts</a>, Previous: <a href="Textures.html" accesskey="p" rel="prev">Textures</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Textures.html b/manuals/chickadee/Textures.html deleted file mode 100644 index 5b8e506..0000000 --- a/manuals/chickadee/Textures.html +++ /dev/null @@ -1,297 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Textures (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Textures (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Textures (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Sprites.html" rel="next" title="Sprites" /> -<link href="Colors.html" rel="prev" title="Colors" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Textures"></span><div class="header"> -<p> -Next: <a href="Sprites.html" accesskey="n" rel="next">Sprites</a>, Previous: <a href="Colors.html" accesskey="p" rel="prev">Colors</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Textures-1"></span><h4 class="subsection">5.3.2 Textures</h4> - -<p>Textures are essentially images: a 2D grid of color values. However, -this is a great simplification. Textures can be used to store any -kind of data that can be encoded into color channels. The -<code>(chickadee graphics texture)</code> module provides an interface for -working with texture objects. -</p> -<dl> -<dt id="index-load_002dimage">Procedure: <strong>load-image</strong> <em>file [#:min-filter nearest] [#:mag-filter nearest] [#:wrap-s repeat] [#:wrap-t repeat] [#:transparent-color]</em></dt> -<dd> -<p>Load the image data from <var>file</var> and return a new texture object. -</p> -<p><var>min-filter</var> and <var>mag-filter</var> describe the method that should -be used for minification and magnification when rendering, -respectively. Possible values are <code>nearest</code> and <code>linear</code>. -</p> -<p><var>wrap-s</var> and <var>wrap-t</var> describe how to interpret texture -coordinates that are greater than <code>1.0</code>. Possible values are -<code>repeat</code>, <code>mirrored-repeat</code>, <code>clamp</code>, -<code>clamp-to-border</code>, and <code>clamp-to-edge</code>. -</p> -<p>For color-keyed images (images where a specific color should be made -transparent), specify the appropriate <var>transparent-color</var>. -</p> -</dd></dl> - -<dl> -<dt id="index-texture_003f">Procedure: <strong>texture?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a texture. -</p></dd></dl> - -<dl> -<dt id="index-texture_002dregion_003f">Procedure: <strong>texture-region?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a texture region. -</p></dd></dl> - -<dl> -<dt id="index-texture_002dparent">Procedure: <strong>texture-parent</strong> <em>texture</em></dt> -<dd><p>If <var>texture</var> is a texture region, return the full texture that it -is based upon. Otherwise, return <code>#f</code>. -</p></dd></dl> - -<dl> -<dt id="index-texture_002dmin_002dfilter">Procedure: <strong>texture-min-filter</strong> <em>texture</em></dt> -<dd><p>Return the minification filter for <var>texture</var>, either -<code>nearest</code> or <code>linear</code>. -</p></dd></dl> - -<dl> -<dt id="index-texture_002dmag_002dfilter">Procedure: <strong>texture-mag-filter</strong> <em>texture</em></dt> -<dd><p>Return the magnification filter for <var>texture</var>, either -<code>nearest</code> or <code>linear</code>. -</p></dd></dl> - -<dl> -<dt id="index-texture_002dwrap_002ds">Procedure: <strong>texture-wrap-s</strong> <em>texture</em></dt> -<dd><p>Return the method used for wrapping texture coordinates along the X -axis for <var>texture</var>. -</p> -<p>Possible wrapping methods: -</p><ul> -<li> <code>repeat</code> -</li><li> <code>clamp</code> -</li><li> <code>clamp-to-border</code> -</li><li> <code>clamp-to-edge</code> -</li></ul> - -</dd></dl> - -<dl> -<dt id="index-texture_002dwrap_002dt">Procedure: <strong>texture-wrap-t</strong> <em>texture</em></dt> -<dd><p>Return the method used for wrapping texture coordinates along the Y -axis for <var>texture</var>. -</p></dd></dl> - -<dl> -<dt id="index-texture_002dwidth">Procedure: <strong>texture-width</strong> <em>texture</em></dt> -<dd><p>Return the width of <var>texture</var> in pixels. -</p></dd></dl> - -<dl> -<dt id="index-texture_002dheight">Procedure: <strong>texture-height</strong> <em>texture</em></dt> -<dd><p>Return the height of <var>texture</var> in pixels. -</p></dd></dl> - -<dl> -<dt id="index-current_002dtexture_002d0">Procedure: <strong>current-texture-0</strong></dt> -<dd><p>Return the current texture associated with texture unit 0 on the GPU. -</p></dd></dl> - -<dl> -<dt id="index-current_002dtexture_002d1">Procedure: <strong>current-texture-1</strong></dt> -<dd><p>Return the current texture associated with texture unit 1 on the GPU. -</p></dd></dl> - -<dl> -<dt id="index-current_002dtexture_002d2">Procedure: <strong>current-texture-2</strong></dt> -<dd><p>Return the current texture associated with texture unit 2 on the GPU. -</p></dd></dl> - -<dl> -<dt id="index-current_002dtexture_002d3">Procedure: <strong>current-texture-3</strong></dt> -<dd><p>Return the current texture associated with texture unit 3 on the GPU. -</p></dd></dl> - -<dl> -<dt id="index-current_002dtexture_002d4">Procedure: <strong>current-texture-4</strong></dt> -<dd><p>Return the current texture associated with texture unit 4 on the GPU. -</p></dd></dl> - -<dl> -<dt id="index-g_003atexture_002d0">Variable: <strong>g:texture-0</strong></dt> -<dd><p>Render state for texture unit 0 (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - -<dl> -<dt id="index-g_003atexture_002d1">Variable: <strong>g:texture-1</strong></dt> -<dd><p>Render state for texture unit 1 (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - -<dl> -<dt id="index-g_003atexture_002d2">Variable: <strong>g:texture-2</strong></dt> -<dd><p>Render state for texture unit 2 (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - -<dl> -<dt id="index-g_003atexture_002d3">Variable: <strong>g:texture-3</strong></dt> -<dd><p>Render state for texture unit 3 (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - -<dl> -<dt id="index-g_003atexture_002d4">Variable: <strong>g:texture-4</strong></dt> -<dd><p>Render state for texture unit 4 (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - -<span id="Tile-Atlases"></span><h4 class="subsubsection">5.3.2.1 Tile Atlases</h4> - -<p>It is common practice to combine multiple bitmap images into a single -texture, known as a “tile atlas” or “tile set”, because it is more -efficient to render many regions of a large texture than it is to -render a bunch of small textures. Chickadee provides a tile atlas -data type for collecting texture regions into a single vector. -</p> -<dl> -<dt id="index-split_002dtexture">Procedure: <strong>split-texture</strong> <em>texture tile-width tile-height [#:margin 0] [#:spacing 0]</em></dt> -<dd> -<p>Return a new texture atlas that splits <var>texture</var> into a grid of -<var>tile-width</var> by <var>tile-height</var> rectangles. Optionally, each -tile may have <var>spacing</var> pixels of horizontal and vertical space -between surrounding tiles and the entire image may have <var>margin</var> -pixels of empty space around its border. -</p> -<p>This type of texture atlas layout is very common for 2D tile maps. -See <a href="Tile-Maps.html">Tile Maps</a> for more information. -</p></dd></dl> - -<dl> -<dt id="index-load_002dtileset">Procedure: <strong>load-tileset</strong> <em>file-name tile-width tile-height [#:margin 0] [#:spacing 0] [#:min-filter nearest] [#:mag-filter nearest] [#:wrap-s repeat] [#:wrap-t repeat] [#:transparent-color]</em></dt> -<dd> -<p>Return a new texture atlas that splits the texture loaded from the -file <var>file-name</var> into a grid of <var>tile-width</var> by -<var>tile-height</var> rectangles. See <code>load-image</code> and -<code>split-texture</code> for information about all keyword arguments. -</p></dd></dl> - -<dl> -<dt id="index-texture_002datlas_003f">Procedure: <strong>texture-atlas?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a texture atlas. -</p></dd></dl> - -<dl> -<dt id="index-texture_002datlas_002dtexture">Procedure: <strong>texture-atlas-texture</strong> <em>atlas</em></dt> -<dd><p>Return the texture that all texture regions in <var>atlas</var> have been created from. -</p></dd></dl> - -<dl> -<dt id="index-texture_002datlas_002dref">Procedure: <strong>texture-atlas-ref</strong> <em>atlas index</em></dt> -<dd><p>Return the texture region in <var>atlas</var> at <var>index</var>. -</p></dd></dl> - -<span id="Cube-Maps"></span><h4 class="subsubsection">5.3.2.2 Cube Maps</h4> - -<p>A cube map is a special type of texture composed of 6 images that can -be thought of as forming the 6 faces of a cube. See <a href="Skyboxes.html">Skyboxes</a> for a -practical use of cube maps. -</p> -<dl> -<dt id="index-load_002dcube_002dmap">Procedure: <strong>load-cube-map</strong> <em>#:right #:left #:top #:bottom #:front #:back [#:min-filter linear-mipmap-linear] [#:mag-filter linear]</em></dt> -<dd> -<p>Return a new cube map that uses the image data in the files -<var>right</var>, <var>left</var>, <var>top</var>, <var>bottom</var>, <var>front</var>, and -<var>back</var> for the 6 faces of the cube. -</p></dd></dl> - -<dl> -<dt id="index-cube_002dmap_003f">Procedure: <strong>cube-map?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a cube map. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Sprites.html" accesskey="n" rel="next">Sprites</a>, Previous: <a href="Colors.html" accesskey="p" rel="prev">Colors</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/The-Environment.html b/manuals/chickadee/The-Environment.html deleted file mode 100644 index 3e08719..0000000 --- a/manuals/chickadee/The-Environment.html +++ /dev/null @@ -1,152 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>The Environment (The Chickadee Game Toolkit)</title> - -<meta name="description" content="The Environment (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="The Environment (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Audio.html" rel="up" title="Audio" /> -<link href="Scripting.html" rel="next" title="Scripting" /> -<link href="The-Listener.html" rel="prev" title="The Listener" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="The-Environment"></span><div class="header"> -<p> -Previous: <a href="The-Listener.html" accesskey="p" rel="prev">The Listener</a>, Up: <a href="Audio.html" accesskey="u" rel="up">Audio</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="The-Environment-1"></span><h4 class="subsection">5.4.4 The Environment</h4> - -<p>The environment defines global parameters that govern how sound is -processed within the 3D modeling space. -</p> -<dl> -<dt id="index-doppler_002dfactor">Procedure: <strong>doppler-factor</strong></dt> -<dd><p>Return the current doppler factor. -</p></dd></dl> - -<dl> -<dt id="index-speed_002dof_002dsound">Procedure: <strong>speed-of-sound</strong></dt> -<dd><p>Return the current speed of sound. -</p></dd></dl> - -<dl> -<dt id="index-distance_002dmodel">Procedure: <strong>distance-model</strong></dt> -<dd><p>Return the current distance model. -</p> -<p>Possible return values are: -</p> -<ul> -<li> <code>none</code> -</li><li> <code>inverse-distance</code> -</li><li> <code>inverse-distance-clamped</code> (the default) -</li><li> <code>linear-distance</code> -</li><li> <code>linear-distance-clamped</code> -</li><li> <code>exponent-distance</code> -</li><li> <code>exponent-distance-clamped</code> -</li></ul> - -</dd></dl> - -<dl> -<dt id="index-set_002ddoppler_002dfactor_0021">Procedure: <strong>set-doppler-factor!</strong> <em>doppler-factor</em></dt> -<dd><p>Change the doppler factor to <var>doppler-factor</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dspeed_002dof_002dsound_0021">Procedure: <strong>set-speed-of-sound!</strong> <em>speed-of-sound</em></dt> -<dd><p>Change the speed of sound to <var>speed-of-sound</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002ddistance_002dmodel_0021">Procedure: <strong>set-distance-model!</strong> <em>distance-model</em></dt> -<dd><p>Change the distance model to <var>distance-model</var>. Valid distance -models are: -</p> -<ul> -<li> <code>none</code> -</li><li> <code>inverse-distance</code> -</li><li> <code>inverse-distance-clamped</code> -</li><li> <code>linear-distance</code> -</li><li> <code>linear-distance-clamped</code> -</li><li> <code>exponent-distance</code> -</li><li> <code>exponent-distance-clamped</code> -</li></ul> - -</dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/The-Game-Loop.html b/manuals/chickadee/The-Game-Loop.html deleted file mode 100644 index 45a4d42..0000000 --- a/manuals/chickadee/The-Game-Loop.html +++ /dev/null @@ -1,420 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>The Game Loop (The Chickadee Game Toolkit)</title> - -<meta name="description" content="The Game Loop (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="The Game Loop (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Kernel.html" rel="up" title="Kernel" /> -<link href="Input-Devices.html" rel="next" title="Input Devices" /> -<link href="Kernel.html" rel="prev" title="Kernel" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="The-Game-Loop"></span><div class="header"> -<p> -Next: <a href="Input-Devices.html" accesskey="n" rel="next">Input Devices</a>, Up: <a href="Kernel.html" accesskey="u" rel="up">Kernel</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="The-Game-Loop-1"></span><h4 class="subsection">5.1.1 The Game Loop</h4> - -<p>At the very core of Chickadee there is an event loop. This loop, or -“kernel”, is responsible for ensuring that the game is updated at -the desired interval, handling input devices, rendering the current -state of the game world, and handling errors if they occur. The -kernel implements what is known as a “fixed timestep” game loop, -meaning that the game simulation will be advanced by a fixed interval -of time and will never vary from frame to frame, unlike some other -styles of game loops. The appropriately named <code>run-game</code> and -<code>abort-game</code> procedures are the entry and exit points to the -Chickadee game loop. -</p> -<p>If you are using <code>chickadee play</code> to launch your game, then -calling <code>run-game</code> is already taken care of for you. -</p> -<dl> -<dt id="index-run_002dgame">Procedure: <strong>run-game</strong> <em>[#:window-title "Chickadee!"] [#:window-width 640] [#:window-height 480] [#:window-fullscreen? <code>#f</code>] [#:window-resizable? <code>#f</code>] [#:update-hz 60] [#:clear-color] [#:load] [#:update] [#:draw] [#:quit] [#:key-press] [#:key-release] [#:text-input] [#:mouse-press] [#:mouse-release] [#:mouse-move] [#:controller-add] [#:controller-remove] [#:controller-press] [#:controller-release] [#:controller-move] [#:window-keyboard-enter] [#:window-keyboard-leave] [#:window-mouse-enter] [#:window-mouse-leave] [#:window-show] [#:window-hide] [#:window-minimize] [#:window-maximize] [#:window-move] [#:window-resize] [#:error]</em></dt> -<dd> -<p>Run the Chickadee game loop. -</p> -<p>A new graphical window will be opened with <var>window-width</var> x -<var>window-height</var> as its dimensions, <var>window-title</var> as its -title, and in fullscreen mode if <var>window-fullscreen?</var> is -<code>#t</code>. If <var>window-resizable?</var> is <code>#t</code> then the window -can be resized by the user. The screen color will be set to -<var>clear-color</var>, or a pleasant light blue, by default. -</p> -<ul> -<li> <var>load</var>: Called with zero arguments when the game window has opened -but before the game loop has started. Can be used to perform -initialization that requires an open window and OpenGL context such as -loading textures. - -</li><li> <var>update</var>: Called <var>update-hz</var> times per second with one -argument: The amount of time to advance the game simulation. - -</li><li> <var>draw</var>: Called each time a frame should be rendered with a single -argument known as the <code>alpha</code> value. See the documentation for -<code>run-game*</code> for an explanation of this value. - -</li><li> <var>quit</var>: Called with zero arguments when the user tries to close -the game window. The default behavior is to exit the game. - -</li><li> <var>key-press</var>: Called with four arguments when a key is pressed on -the keyboard: - -<ol> -<li> <var>key</var>: The symbolic name of the key that was pressed. For -example: <code>backspace</code>. - -</li><li> <var>modifiers</var>: A list of the symbolic names of modifier keys that -were being held down when the key was pressed. Possible values -include <code>ctrl</code>, <code>alt</code>, and <code>shift</code>. - -</li><li> <var>repeat?</var>: <code>#t</code> if this is a repeated press of the same key. - -</li></ol> - -</li><li> <var>key-release</var>: Called with three arguments when a key is released -on the keyboard: - -<ol> -<li> <var>key</var>: The symbolic name of the key that was released. - -</li><li> <var>modifiers</var>: A list of the symbolic names of modifier keys that -were being held down when the key was released. - -</li></ol> - -</li><li> <var>text-input</var>: Called with a single argument, a string of text, -when printable text is typed on the keyboard. - -</li><li> <var>mouse-press</var>: Called with four arguments when a mouse button is -pressed: -<ol> -<li> <var>button</var>: The symbolic name of the button that was pressed, such -as <code>left</code>, <code>middle</code>, or <code>right</code>. - -</li><li> <var>clicks</var>: The number of times the button has been clicked in a row. - -</li><li> <var>x</var>: The x coordinate of the mouse cursor. - -</li><li> <var>y</var>: The y coordinate of the mouse cursor. - -</li></ol> - -</li><li> <var>mouse-release</var>: Called with three arguments when a mouse button -is released: - -<ol> -<li> <var>button</var>: The symbolic name of the button that was released. - -</li><li> <var>x</var>: The x coordinate of the mouse cursor. - -</li><li> <var>y</var>: The y coordinate of the mouse cursor. - -</li></ol> - -</li><li> <var>mouse-move</var>: Called with five arguments when the mouse is moved: - -<ol> -<li> <var>x</var>: The x coordinate of the mouse cursor. - -</li><li> <var>y</var>: The y coordinate of the mouse cursor. - -</li><li> <var>dx</var>: The amount the mouse has moved along the x axis since the -last mouse move event. - -</li><li> <var>dy</var>: The amount the mouse has moved along the y axis since the -last mouse move event. - -</li><li> <var>buttons</var>: A list of the buttons that were pressed down when the -mouse was moved. - -</li></ol> - -</li><li> <var>mouse-wheel</var>: Called with two arguments when the mouse wheel is -scrolled: - -<ol> -<li> <var>x</var>: The scroll amount along the X axis. - -</li><li> <var>y</var>: The scroll amount along the Y axis. - -</li></ol> - -</li><li> <var>controller-add</var>: Called with a single argument, an SDL game -controller object, when a game controller is connected. - -</li><li> <var>controller-remove</var>: Called with a single argument, an SDL game -controller object, when a game controller is disconnected. - -</li><li> <var>controller-press</var>: Called with two arguments when a button on a -game controller is pressed: - -<ol> -<li> <var>controller</var>: The controller that triggered the event. - -</li><li> <var>button</var>: The symbolic name of the button that was pressed. -Possible buttons are: - -<ul> -<li> <code>a</code> -</li><li> <code>b</code> -</li><li> <code>x</code> -</li><li> <code>y</code> -</li><li> <code>back</code> -</li><li> <code>guide</code> -</li><li> <code>start</code> -</li><li> <code>left-stick</code> -</li><li> <code>right-stick</code> -</li><li> <code>left-shoulder</code> -</li><li> <code>right-shoulder</code> -</li><li> <code>dpad-up</code> -</li><li> <code>dpad-down</code> -</li><li> <code>dpad-left</code> -</li><li> <code>dpad-right</code> - -</li></ul> - -</li></ol> - -</li><li> <var>controller-release</var>: Called with two arguments when a button on a -game controller is released: - -<ol> -<li> <var>controller</var>: The controller that triggered the event. - -</li><li> <var>button</var>: The symbolic name of the button that was released. - -</li></ol> - -</li><li> <var>controller-move</var>: Called with three arguments when an analog -stick or trigger on a game controller is moved: - -<ol> -<li> <var>controller</var>: The controller that triggered the event. - -</li><li> <var>axis</var>: The symbolic name of the axis that was moved. Possible -values are: - -<ul> -<li> <code>left-x</code> -</li><li> <code>left-y</code> -</li><li> <code>right-x</code> -</li><li> <code>right-y</code> -</li><li> <code>trigger-left</code> -</li><li> <code>trigger-right</code> -</li></ul> - -</li></ol> - -</li><li> <var>window-keyboard-enter</var>: Called with zero arguments when the -window gains keyboard focus. - -</li><li> <var>window-keyboard-leave</var>: Called with zero arguments when the -window loses keyboard focus. - -</li><li> <var>window-mouse-enter</var>: Called with zero arguments when the window -gains mouse focus. - -</li><li> <var>window-mouse-leave</var>: Called with zero arguments when the window -loses mouse focus. - -</li><li> <var>window-show</var>: Called with zero arguments when the window is -shown after having been hidden. - -</li><li> <var>window-hide</var>: Called with zero arguments when the window is -hidden. - -</li><li> <var>window-minimize</var>: Called with zero arguments when the window is -minimized. - -</li><li> <var>window-maximize</var>: Called with zero arguments when the window is -maximized. - -</li><li> <var>window-move</var>: Called with two arguments when the window is moved -within the desktop environment. - -<ol> -<li> <var>x</var>: The x coordinate of the top-left corner of the window, in -pixels. - -</li><li> <var>y</var>: The y coordinate of the top-left corner of the window, in -pixels. - -</li></ol> - -<p>Desktop environments use the top-left corner as the origin rather than -the bottom-left like Chickadee does, hence the discrepancy here. -</p> -</li><li> <var>window-resize</var>: Called with zero arguments when the window is -resized. - -<ol> -<li> <var>width</var>: The new width in pixels. - -</li><li> <var>height</var>: The new height in pixels. - -</li></ol> - -</li><li> <var>error</var>: Called with two arguments when an error occurs: - -<ol> -<li> <var>exception</var>: The exception object. - -</li><li> <var>stack</var>: The call stack at the point of the exception. - -</li></ol> - -<p>If no error handler is specified, exceptions will simply be re-raised. -</p> -</li></ul> - -</dd></dl> - -<p>To stop the game loop, simply call <code>abort-game</code>. -</p> -<dl> -<dt id="index-abort_002dgame">Procedure: <strong>abort-game</strong></dt> -<dd><p>Stop the currently running Chickadee game loop. -</p></dd></dl> - -<p>The above explanation of the game loop was partially a lie. It’s true -that there is a game loop at the center of Chickadee, but -<code>run-game</code> is not it’s true entry point. There exists an even -lower level procedure, <code>run-game*</code>, in the <code>(chickadee -game-loop)</code> module that <code>run-game</code> uses under the hood. -</p> -<p>On its own, <code>run-game*</code> does not do very much at all. In order -to actually respond to input events, update game state, or render -output, the developer must provide an engine. <code>run-game</code> is such -an engine, and it’s likely all a developer will need. However, what -if a developer wanted to use all of the useful Chickadee features to -make a terminal roguelike game instead? Chickadee doesn’t come with a -terminal rendering engine, but the developer could write one without -having to write their own core game loop. -</p> -<dl> -<dt id="index-run_002dgame_002a">Procedure: <strong>run-game*</strong> <em>[#:init] [#:update] [#:render] [#:time] [#:error] [#:update-hz 60]</em></dt> -<dd> -<p>Start the game loop. This procedure will not return until -<code>abort-game</code> is called. -</p> -<p>The core game loop is generic and requires four additional procedures -to operate: -</p> -<ul> -<li> <var>init</var>: Called just before game loop is started. Use it to -perform game initialization. -</li><li> <var>update</var>: Called <var>update-hz</var> times per second to advance the -game simulation. This procedure is called with a single argument: The -amount of time that has passed since the last update, in milliseconds. -</li><li> <var>render</var>: Called each iteration of the loop to render the game to -the desired output device. This procedure is called with a single -argument: A value in the range [0, 1] which represents how much time -has past since the last game state update relative to the upcoming -game state update, as a percentage. Because the game state is updated -independent of rendering, it is often the case that rendering is -occuring between two updates. If the game is rendered as it was -during the last update, a strange side-effect will occur that makes -animation appear rough or “choppy”. To counter this, the -<var>alpha</var> value can be used to perfrom a linear interpolation of a -moving object between its current position and its previous position. -This odd trick has the pleasing result of making the animation look -smooth again, but requires keeping track of previous state. -</li><li> <var>time</var>: Called to get the current time in seconds. This procedure -is called with no arguments. -</li><li> <var>error</var>: Called when an error from the <var>update</var> or -<var>render</var> procedures reaches the game loop. This procedure is -called with three arguments: The call stack, the error key, and the -error arguments. If no error handler is provided, the default -behavior is to simply re-throw the error. -</li></ul> - -</dd></dl> - -<dl> -<dt id="index-elapsed_002dtime">Procedure: <strong>elapsed-time</strong></dt> -<dd><p>Return the current value of the system timer in seconds. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Input-Devices.html" accesskey="n" rel="next">Input Devices</a>, Up: <a href="Kernel.html" accesskey="u" rel="up">Kernel</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/The-Listener.html b/manuals/chickadee/The-Listener.html deleted file mode 100644 index a6f5ab3..0000000 --- a/manuals/chickadee/The-Listener.html +++ /dev/null @@ -1,141 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>The Listener (The Chickadee Game Toolkit)</title> - -<meta name="description" content="The Listener (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="The Listener (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Audio.html" rel="up" title="Audio" /> -<link href="The-Environment.html" rel="next" title="The Environment" /> -<link href="Sources.html" rel="prev" title="Sources" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="The-Listener"></span><div class="header"> -<p> -Next: <a href="The-Environment.html" accesskey="n" rel="next">The Environment</a>, Previous: <a href="Sources.html" accesskey="p" rel="prev">Sources</a>, Up: <a href="Audio.html" accesskey="u" rel="up">Audio</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="The-Listener-1"></span><h4 class="subsection">5.4.3 The Listener</h4> - -<p>The listener is a collection of global state that represents the -player within the 3D sound model. For games that do not need 3D sound -modeling, manipulating the listener’s master volume is the only -interesting thing to do here. -</p> -<dl> -<dt id="index-listener_002dvolume">Procedure: <strong>listener-volume</strong></dt> -<dd><p>Return the current master volume of the listener. -</p></dd></dl> - -<dl> -<dt id="index-listener_002dposition">Procedure: <strong>listener-position</strong></dt> -<dd><p>Return the current position of the listener. -</p></dd></dl> - -<dl> -<dt id="index-listener_002dvelocity">Procedure: <strong>listener-velocity</strong></dt> -<dd><p>Return the current velocity of the listener. -</p></dd></dl> - -<dl> -<dt id="index-listener_002dorientation">Procedure: <strong>listener-orientation</strong></dt> -<dd><p>Return the current orientation of the listener. -</p></dd></dl> - -<dl> -<dt id="index-set_002dlistener_002dvolume_0021">Procedure: <strong>set-listener-volume!</strong> <em>volume</em></dt> -<dd><p>Set the listener’s master volume to <var>volume</var>, a value in the range [0, -1]. -</p></dd></dl> - -<dl> -<dt id="index-set_002dlistener_002dposition_0021">Procedure: <strong>set-listener-position!</strong> <em>position</em></dt> -<dd><p>Set the listener’s position to the 3D vector <var>position</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dlistener_002dvelocity_0021">Procedure: <strong>set-listener-velocity!</strong> <em>velocity</em></dt> -<dd><p>Set the listener’s velocity to the 3D vector <var>velocity</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dlistener_002dorientation_0021">Procedure: <strong>set-listener-orientation!</strong> <em>at up</em></dt> -<dd><p>Set the listener’s orientation to the 3D vectors <var>at</var> and -<var>up</var>. -</p></dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/Tile-Maps.html b/manuals/chickadee/Tile-Maps.html deleted file mode 100644 index c6d9339..0000000 --- a/manuals/chickadee/Tile-Maps.html +++ /dev/null @@ -1,366 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Tile Maps (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Tile Maps (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Tile Maps (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Models.html" rel="next" title="Models" /> -<link href="Particles.html" rel="prev" title="Particles" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Tile-Maps"></span><div class="header"> -<p> -Next: <a href="Models.html" accesskey="n" rel="next">Models</a>, Previous: <a href="Particles.html" accesskey="p" rel="prev">Particles</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Tile-Maps-1"></span><h4 class="subsection">5.3.7 Tile Maps</h4> - -<p>A tile map is a scene created by composing lots of small sprites, -called “tiles”, into a larger image. One program for editing such -maps is called <a href="http://mapeditor.org">Tiled</a>. Chickadee has native -support for loading and rendering Tiled maps in the <code>(chickadee -graphics tile-map)</code> module. -</p> -<dl> -<dt id="index-load_002dtile_002dmap">Procedure: <strong>load-tile-map</strong> <em>file-name [#:chunk-size]</em></dt> -<dd><p>Load the Tiled formatted map in <var>file-name</var> and return a new tile -map object. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dmap_003f">Procedure: <strong>tile-map?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a tile map. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dmap_002dorientation">Procedure: <strong>tile-map-orientation</strong> <em>tile-map</em></dt> -<dd><p>Return the orientation of <var>tile-map</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dmap_002dwidth">Procedure: <strong>tile-map-width</strong> <em>tile-map</em></dt> -<dd><p>Return the width of <var>tile-map</var> in tiles. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dmap_002dheight">Procedure: <strong>tile-map-height</strong> <em>tile-map</em></dt> -<dd><p>Return the height of <var>tile-map</var> in tiles. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dmap_002dtile_002dwidth">Procedure: <strong>tile-map-tile-width</strong> <em>tile-map</em></dt> -<dd><p>Return the width of tiles in <var>tile-map</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dmap_002dtile_002dheight">Procedure: <strong>tile-map-tile-height</strong> <em>tile-map</em></dt> -<dd><p>Return the height of tiles in <var>tile-map</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dmap_002dtilesets">Procedure: <strong>tile-map-tilesets</strong> <em>tile-map</em></dt> -<dd><p>Return the tilesets for <var>tile-map</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dmap_002dlayers">Procedure: <strong>tile-map-layers</strong> <em>tile-map</em></dt> -<dd><p>Return the layers of <var>tile-map</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dmap_002dproperties">Procedure: <strong>tile-map-properties</strong> <em>tile-map</em></dt> -<dd><p>Return the custom properties of <var>tile-map</var>. -</p></dd></dl> - -<dl> -<dt id="index-point_002d_003etile">Procedure: <strong>point->tile</strong> <em>tile-map x y</em></dt> -<dd><p>Translate the pixel coordinates (<var>x</var>, <var>y</var>) into tile -coordinates. -</p></dd></dl> - -<dl> -<dt id="index-draw_002dtile_002dmap">Procedure: <strong>draw-tile-map</strong> <em>tile-map [#:layers] [#:camera] [#:origin] [#:position] [#:scale] [#:rotation] [#:blend-mode] [#:tint] [#:time]</em></dt> -<dd> -<p>Draw the layers of <var>tile-map</var> as viewed from <var>camera</var>, a 2D -vector offset. By default, all layers are drawn. To draw a subset of -the available layers, pass a list of layer ids using the <var>layers</var> -keyword argument. -</p></dd></dl> - -<dl> -<dt id="index-tileset_003f">Procedure: <strong>tileset?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a tileset. -</p></dd></dl> - -<dl> -<dt id="index-tileset_002dname">Procedure: <strong>tileset-name</strong> <em>tileset</em></dt> -<dd><p>Return the name of <var>tileset</var>. -</p></dd></dl> - -<dl> -<dt id="index-tileset_002dfirst_002dgid">Procedure: <strong>tileset-first-gid</strong> <em>tileset</em></dt> -<dd><p>Return the starting GID of <var>tileset</var>. -</p></dd></dl> - -<dl> -<dt id="index-tileset_002dsize">Procedure: <strong>tileset-size</strong> <em>tileset</em></dt> -<dd><p>Return the number of tiles in <var>tileset</var>. -</p></dd></dl> - -<dl> -<dt id="index-tileset_002dtile_002dwidth">Procedure: <strong>tileset-tile-width</strong> <em>tileset</em></dt> -<dd><p>Return the width of tiles in <var>tileset</var>. -</p></dd></dl> - -<dl> -<dt id="index-tileset_002dtile_002dheight">Procedure: <strong>tileset-tile-height</strong> <em>tileset</em></dt> -<dd><p>Return the height of tiles in <var>tileset</var>. -</p></dd></dl> - -<dl> -<dt id="index-tileset_002datlas">Procedure: <strong>tileset-atlas</strong> <em>tileset</em></dt> -<dd><p>Return the texture atlas for <var>tileset</var>. -</p></dd></dl> - -<dl> -<dt id="index-tileset_002dtiles">Procedure: <strong>tileset-tiles</strong> <em>tileset</em></dt> -<dd><p>Return the tiles in <var>tileset</var>. -</p></dd></dl> - -<dl> -<dt id="index-tileset_002drows">Procedure: <strong>tileset-rows</strong> <em>tileset</em></dt> -<dd><p>Return the number of rows in <var>tileset</var>. -</p></dd></dl> - -<dl> -<dt id="index-tileset_002dcolumns">Procedure: <strong>tileset-columns</strong> <em>tileset</em></dt> -<dd><p>Return the number of columns in <var>tileset</var>. -</p></dd></dl> - -<dl> -<dt id="index-tileset_002dproperties">Procedure: <strong>tileset-properties</strong> <em>tileset</em></dt> -<dd><p>Return the custom properties of <var>tileset</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_003f">Procedure: <strong>tile?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a tile. -</p></dd></dl> - -<dl> -<dt id="index-tile_002did">Procedure: <strong>tile-id</strong> <em>tile</em></dt> -<dd><p>Return the ID of <var>tile</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_002danimation">Procedure: <strong>tile-animation</strong> <em>tile</em></dt> -<dd><p>Return the animation for <var>tile</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dproperties">Procedure: <strong>tile-properties</strong> <em>tile</em></dt> -<dd><p>Return the custom properties of <var>tile</var>. -</p></dd></dl> - -<dl> -<dt id="index-animation_003f">Procedure: <strong>animation?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is an animation. -</p></dd></dl> - -<dl> -<dt id="index-animation_002dframes">Procedure: <strong>animation-frames</strong> <em>animation</em></dt> -<dd><p>Return a vector of frames in <var>animation</var>. -</p></dd></dl> - -<dl> -<dt id="index-animation_002dduration">Procedure: <strong>animation-duration</strong> <em>animation</em></dt> -<dd><p>Return the duration of <var>animation</var>. -</p></dd></dl> - -<dl> -<dt id="index-animation_002dframe_003f">Procedure: <strong>animation-frame?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is an animation frame. -</p></dd></dl> - -<dl> -<dt id="index-animation_002dframe_002dtile">Procedure: <strong>animation-frame-tile</strong> <em>frame</em></dt> -<dd><p>Return the tile for <var>frame</var>. -</p></dd></dl> - -<dl> -<dt id="index-animation_002dframe_002dduration">Procedure: <strong>animation-frame-duration</strong> <em>frame</em></dt> -<dd><p>Return the duration of <var>frame</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dlayer_003f">Procedure: <strong>tile-layer?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a tile layer. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dlayer_002dname">Procedure: <strong>tile-layer-name</strong> <em>layer</em></dt> -<dd><p>Return the name of <var>layer</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dlayer_002dwidth">Procedure: <strong>tile-layer-width</strong> <em>layer</em></dt> -<dd><p>Return the width in tiles of <var>layer</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dlayer_002dheight">Procedure: <strong>tile-layer-height</strong> <em>layer</em></dt> -<dd><p>Return the height in tiles of <var>layer</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dlayer_002dtiles">Procedure: <strong>tile-layer-tiles</strong> <em>layer</em></dt> -<dd><p>Return the tile data for <var>layer</var>. -</p></dd></dl> - -<dl> -<dt id="index-tile_002dlayer_002dproperties">Procedure: <strong>tile-layer-properties</strong> <em>layer</em></dt> -<dd><p>Return the custom properties of <var>layer</var>. -</p></dd></dl> - -<dl> -<dt id="index-object_002dlayer_003f">Procedure: <strong>object-layer?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is an object layer. -</p></dd></dl> - -<dl> -<dt id="index-object_002dlayer_002dname">Procedure: <strong>object-layer-name</strong> <em>layer</em></dt> -<dd><p>Return the name of <var>layer</var>. -</p></dd></dl> - -<dl> -<dt id="index-object_002dlayer_002dobjects">Procedure: <strong>object-layer-objects</strong> <em>layer</em></dt> -<dd><p>Return the objects for <var>layer</var>. -</p></dd></dl> - -<dl> -<dt id="index-object_002dlayer_002dproperties">Procedure: <strong>object-layer-properties</strong> <em>layer</em></dt> -<dd><p>Return the custom properties of <var>layer</var>. -</p></dd></dl> - -<dl> -<dt id="index-map_002dobject_003f">Procedure: <strong>map-object?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a map object. -</p></dd></dl> - -<dl> -<dt id="index-map_002dobject_002did">Procedure: <strong>map-object-id</strong> <em>obj</em></dt> -<dd><p>Return the ID of <var>obj</var>. -</p></dd></dl> - -<dl> -<dt id="index-map_002dobject_002dname">Procedure: <strong>map-object-name</strong> <em>obj</em></dt> -<dd><p>Return the name of <var>obj</var>. -</p></dd></dl> - -<dl> -<dt id="index-map_002dobject_002dtype">Procedure: <strong>map-object-type</strong> <em>obj</em></dt> -<dd><p>Return the type of <var>obj</var>. -</p></dd></dl> - -<dl> -<dt id="index-map_002dobject_002dshape">Procedure: <strong>map-object-shape</strong> <em>obj</em></dt> -<dd><p>Return the shape of <var>obj</var>. -</p></dd></dl> - -<dl> -<dt id="index-map_002dobject_002dproperties">Procedure: <strong>map-object-properties</strong> <em>obj</em></dt> -<dd><p>Return the custom properties of <var>obj</var>. -</p></dd></dl> - -<dl> -<dt id="index-polygon_003f">Procedure: <strong>polygon?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a polygon. -</p></dd></dl> - -<dl> -<dt id="index-polygon_002dpoints">Procedure: <strong>polygon-points</strong> <em>polygon</em></dt> -<dd><p>Return the list of points that form <var>polygon</var>. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Models.html" accesskey="n" rel="next">Models</a>, Previous: <a href="Particles.html" accesskey="p" rel="prev">Particles</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Tweening.html b/manuals/chickadee/Tweening.html deleted file mode 100644 index b69b75e..0000000 --- a/manuals/chickadee/Tweening.html +++ /dev/null @@ -1,123 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Tweening (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Tweening (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Tweening (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Scripting.html" rel="up" title="Scripting" /> -<link href="Channels.html" rel="next" title="Channels" /> -<link href="Scripts.html" rel="prev" title="Scripts" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Tweening"></span><div class="header"> -<p> -Next: <a href="Channels.html" accesskey="n" rel="next">Channels</a>, Previous: <a href="Scripts.html" accesskey="p" rel="prev">Scripts</a>, Up: <a href="Scripting.html" accesskey="u" rel="up">Scripting</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Tweening-1"></span><h4 class="subsection">5.5.3 Tweening</h4> - -<p>Tweening is the process of transitioning something from an initial -state to a final state over a pre-determined period of time. In other -words, tweening is a way to create animation. The <code>tween</code> -procedure can be used within any script like so: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">x</span> <span class="syntax-symbol">0</span><span class="syntax-close">)</span> -<span class="syntax-open">(</span><span class="syntax-symbol">script</span> - <span class="syntax-comment">;; 0 to 100 in 60 ticks of the agenda. -</span> <span class="syntax-open">(</span><span class="syntax-symbol">tween</span> <span class="syntax-symbol">60</span> <span class="syntax-symbol">0</span> <span class="syntax-symbol">100</span> <span class="syntax-open">(</span><span class="syntax-special">lambda</span> <span class="syntax-open">(</span><span class="syntax-symbol">y</span><span class="syntax-close">)</span> <span class="syntax-open">(</span><span class="syntax-symbol">set!</span> <span class="syntax-symbol">x</span> <span class="syntax-symbol">y</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<dl> -<dt id="index-tween">Procedure: <strong>tween</strong> <em>duration start end proc [#:step <code>1</code>] [#:ease <code>smoothstep</code>] #:interpolate <code>lerp</code>]</em></dt> -<dd><p>Transition a value from <var>start</var> to <var>end</var> over <var>duration</var>, -sending each succesive value to <var>proc</var>. <var>step</var> controls the -amount of time between each update of the animation. -</p> -<p>To control how the animation goes from the initial to final state, an -“easing” procedure may be specified. By default, the -<code>smoothstep</code> easing is used, which is a more pleasing default -than a simplistic linear function. See <a href="Easings.html">Easings</a> for a complete list -of available easing procedures. -</p> -<p>The <var>interpolate</var> procedure computes the values in between -<var>start</var> and <var>end</var>. By default, linear interpolation (“lerp” -for short) is used. -</p></dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/Vector-Paths.html b/manuals/chickadee/Vector-Paths.html deleted file mode 100644 index 81d6307..0000000 --- a/manuals/chickadee/Vector-Paths.html +++ /dev/null @@ -1,462 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Vector Paths (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Vector Paths (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Vector Paths (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Particles.html" rel="next" title="Particles" /> -<link href="Fonts.html" rel="prev" title="Fonts" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Vector-Paths"></span><div class="header"> -<p> -Next: <a href="Particles.html" accesskey="n" rel="next">Particles</a>, Previous: <a href="Fonts.html" accesskey="p" rel="prev">Fonts</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Vector-Paths-1"></span><h4 class="subsection">5.3.5 Vector Paths</h4> - -<p>The <code>(chickadee graphics path)</code> module can be used to draw lines, -curves, circles, rectangles, and more in a scalable, resolution -independent manner. It is <em>not</em> an SVG compliant renderer, nor -does it intend to be. However, those familiar with SVG and/or the -HTML5 Canvas API should find lots of similarities. -</p> -<p><em>This API is considered to be experimental and may change -substantially in future releases of Chickadee. There are many missing -features.</em> -</p> -<p>The first step to rendering vector graphics is to create a -<em>path</em>: A series of commands that can be thought of as moving a -pen around a piece of paper. A path can be either open or closed. A -closed path draws a straight line from the last point in the path to -the first. -</p> -<dl> -<dt id="index-path">Procedure: <strong>path</strong> <em>. commands</em></dt> -<dd><p>Return a new path that follows <var>commands</var>. -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">path</span> <span class="syntax-open">(</span><span class="syntax-symbol">move-to</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">50.0</span> <span class="syntax-symbol">50.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">line-to</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">500.0</span> <span class="syntax-symbol">50.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">line-to</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">400.0</span> <span class="syntax-symbol">200.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">bezier-to</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">500.0</span> <span class="syntax-symbol">250.0</span><span class="syntax-close">)</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">380.0</span> <span class="syntax-symbol">300.0</span><span class="syntax-close">)</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">400.0</span> <span class="syntax-symbol">400.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">line-to</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">300.0</span> <span class="syntax-symbol">400.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">close-path</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -</dd></dl> - -<p>Available drawing commands: -</p> -<dl> -<dt id="index-move_002dto">Procedure: <strong>move-to</strong> <em>point</em></dt> -<dd><p>Pick up the pen and move it to <var>point</var>. -</p></dd></dl> - -<dl> -<dt id="index-line_002dto">Procedure: <strong>line-to</strong> <em>point</em></dt> -<dd><p>Draw a line from the current pen position to <var>point</var>. -</p></dd></dl> - -<dl> -<dt id="index-bezier_002dto">Procedure: <strong>bezier-to</strong> <em>control1 control2 point</em></dt> -<dd><p>Draw a cubic bezier curve from the current pen position to -<var>point</var>. The shape of the curve is determined by the two control -points: <var>control1</var> and <var>control2</var>. -</p></dd></dl> - -<dl> -<dt id="index-close_002dpath">Procedure: <strong>close-path</strong></dt> -<dd><p>Draw a straight line back to the first point drawn in the path. -</p></dd></dl> - -<dl> -<dt id="index-arc">Procedure: <strong>arc</strong> <em>center rx ry angle-start angle-end</em></dt> -<dd><p>Draw an elliptical arc spanning the angle range [<var>angle-start</var>, -<var>angle-end</var>], centered at <var>center</var> with radii <var>rx</var> and -<var>ry</var> (set both to the same value for a circular arc.) -</p></dd></dl> - -<dl> -<dt id="index-arc_002dto">Procedure: <strong>arc-to</strong> <em>c1 c2 radius</em></dt> -<dd><p>Draw a circular arc with radius <var>radius</var> that is tangential to the -line segment formed by the current pen position and <var>c1</var>, as well -as the line segment formed by <var>c1</var> and <var>c2</var>. The result is a -smooth corner. -</p></dd></dl> - -<p>Included are some helpful procedures for generating common types of -paths: -</p> -<dl> -<dt id="index-line">Procedure: <strong>line</strong> <em>start end</em></dt> -<dd><p>Return a path that draws a straight line from <var>start</var> to <var>end</var>. -</p></dd></dl> - -<dl> -<dt id="index-polyline">Procedure: <strong>polyline</strong> <em>. points</em></dt> -<dd><p>Return a path that draws a series of lines connecting <var>points</var>. -</p></dd></dl> - -<dl> -<dt id="index-bezier_002dpath-1">Procedure: <strong>bezier-path</strong> <em>p1 c1 c2 p2 . points</em></dt> -<dd><p>Return a path that draws a series of bezier points starting at -<var>p1</var>, moving to <var>p2</var> using control points <var>c1</var> and -<var>c2</var>, and proceeding to draw additional bezier curves as defined -by <var>points</var>. Each additional curve requires 3 additional -arguments: two control points and and an ending point. -</p></dd></dl> - -<dl> -<dt id="index-rectangle">Procedure: <strong>rectangle</strong> <em>bottom-left width height</em></dt> -<dd><p>Return a path that draws a rectangle whose bottom-left corner is at -<var>bottom-left</var> and whose size is defined by <var>width</var> and -<var>height</var>. -</p></dd></dl> - -<dl> -<dt id="index-square">Procedure: <strong>square</strong> <em>bottom-left size</em></dt> -<dd><p>Return a path draws a square whose bottom-left corner is at -<var>bottom-left</var> and whose size is defined by <var>size</var>. -</p></dd></dl> - -<dl> -<dt id="index-rounded_002drectangle">Procedure: <strong>rounded-rectangle</strong> <em>bottom-left width height [#:radius 4.0] [#:radius-bottom-left] [#:radius-bottom-right] [#:radius-top-left] [#:radius-top-right]</em></dt> -<dd> -<p>Return a path that draws a rectangle with rounded corners whose -bottom-left corner is at <var>bottom-left</var> and whose size is defined -by <var>width</var> and <var>height</var>. The argument <var>radius</var> is used to -define the corner radius for all corners. To use a different radius -value for a corner, use <var>radius-bottom-left</var>, -<var>radius-bottom-right</var>, <var>radius-top-left</var>, and/or -<var>radius-top-right</var>. -</p></dd></dl> - -<dl> -<dt id="index-regular_002dpolygon">Procedure: <strong>regular-polygon</strong> <em>center num-sides radius</em></dt> -<dd><p>Return a path that draws a regular polygon with <var>num-sides</var> sides -centered on the point <var>center</var> with each vertex <var>radius</var> units -away from the center. -</p></dd></dl> - -<dl> -<dt id="index-ellipse">Procedure: <strong>ellipse</strong> <em>center rx ry</em></dt> -<dd><p>Return a path that draws an ellipsed centered on the point -<var>center</var> with radii <var>rx</var> and <var>ry</var>. -</p></dd></dl> - -<dl> -<dt id="index-circle">Procedure: <strong>circle</strong> <em>center r</em></dt> -<dd><p>Return a path that draws a circle centered on the point <var>center</var> -with radius <var>r</var>. -</p></dd></dl> - -<p>With one or more paths created, a <em>painter</em> is needed to give the -path its style and placement in the final picture. Painters can be -combined together to form arbitrarily complex pictures. -</p> -<dl> -<dt id="index-stroke">Procedure: <strong>stroke</strong> <em>. paths</em></dt> -<dd><p>Apply a stroked drawing style to <var>paths</var>. -</p></dd></dl> - -<dl> -<dt id="index-fill">Procedure: <strong>fill</strong> <em>. paths</em></dt> -<dd><p>Apply a filled drawing style to <var>paths</var>. -</p></dd></dl> - -<dl> -<dt id="index-fill_002dand_002dstroke">Procedure: <strong>fill-and-stroke</strong> <em>. paths</em></dt> -<dd><p>Apply a filled and stroked drawing style to <var>paths</var>. -</p></dd></dl> - -<dl> -<dt id="index-with_002dstyle">Syntax: <strong>with-style</strong> <em>((style-name value) ...) painter</em></dt> -<dd><p>Apply all the given style settings to <var>painter</var>. -</p> -<p>Possible style attributes are: -</p> -<ul> -<li> <code>blend-mode</code> -</li><li> <code>fill-color</code> -</li><li> <code>stroke-color</code> -</li><li> <code>stroke-width</code> -</li><li> <code>stroke-feather</code> -</li><li> <code>stroke-cap</code> -</li></ul> - -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">with-style</span> <span class="syntax-open">(</span><span class="syntax-open">(</span><span class="syntax-symbol">stroke-color</span> <span class="syntax-symbol">green</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">stroke-width</span> <span class="syntax-symbol">4.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span> - <span class="syntax-open">(</span><span class="syntax-symbol">stroke</span> <span class="syntax-open">(</span><span class="syntax-symbol">circle</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">100.0</span> <span class="syntax-symbol">100.0</span><span class="syntax-close">)</span> <span class="syntax-symbol">50.0</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -</dd></dl> - -<p>Fill colors may be either solid colors (see <a href="Colors.html">Colors</a>) or gradients. -For gradient fills, there are two styles: linear or radial. -</p> -<dl> -<dt id="index-linear_002dgradient">Procedure: <strong>linear-gradient</strong> <em>[#:origin (vec2 0 0)] [#:start-color white] [#:end-color black] [#:rotation 0] [#:offset 0] [#:length 100]</em></dt> -<dd> -<p>Return a new linear gradient that transitions from <var>start-color</var> -on the left to <var>end-color</var> on the right over <var>length</var> pixels. -<var>offset</var> may be used to push the gradient start point to the -right, creating a solid block of <var>start-color</var> on the right hand -side of the painter. The line’s direction may be changed by -specifying a <var>rotation</var> value. The starting point for the -gradient is determined by <var>origin</var> and defaults to the lower left -corner of the painter’s bounding box. -</p></dd></dl> - -<dl> -<dt id="index-radial_002dgradient">Procedure: <strong>radial-gradient</strong> <em>[#:origin (vec2 0 0)] [#:start-color white] [#:end-color black] [#:radius 50.0] [#:radius-x] [#:radius-y] [#:rotation 0] [#:offset 0]</em></dt> -<dd> -<p>Return a new radial gradient that transitions from <var>start-color</var> -at the point <var>origin</var> to <var>end-color</var> at <var>radius</var> pixels -away. <var>offset</var> specifies the distance from the origin where -<var>start-color</var> begins to transition. The default is to immediately -start transitioning. The default shape of this type of gradient is a -circle, but it can also be made elliptical by specifying different -<var>radius-x</var> and <var>radius-y</var> values. When the gradient shape is -elliptical, <var>rotation</var> can be used to rotate it. -</p></dd></dl> - -<dl> -<dt id="index-gradient_003f">Procedure: <strong>gradient?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> when <var>obj</var> is a gradient object. -</p></dd></dl> - -<p>Painters can also be transformed and combined to form new painters. -</p> -<dl> -<dt id="index-transform">Procedure: <strong>transform</strong> <em>matrix painter</em></dt> -<dd><p>Apply <var>matrix</var>, a 3x3 transformation matrix (see <a href="Matrices.html">Matrices</a>), to -<var>painter</var>. -</p></dd></dl> - -<dl> -<dt id="index-translate">Procedure: <strong>translate</strong> <em>v painter</em></dt> -<dd><p>Translate <var>painter</var> by the 2D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-rotate">Procedure: <strong>rotate</strong> <em>angle painter</em></dt> -<dd><p>Rotate <var>painter</var> by <var>angle</var> radians. -</p></dd></dl> - -<dl> -<dt id="index-scale">Procedure: <strong>scale</strong> <em>x painter</em></dt> -<dd><p>Scale <var>painter</var> by the scalar <var>x</var>. -</p></dd></dl> - -<dl> -<dt id="index-horizontal_002dflip">Procedure: <strong>horizontal-flip</strong> <em>painter</em></dt> -<dd><p>Flip <var>painter</var> horizontally. -</p></dd></dl> - -<dl> -<dt id="index-vertical_002dflip">Procedure: <strong>vertical-flip</strong> <em>painter</em></dt> -<dd><p>Flip <var>painter</var> vertically. -</p></dd></dl> - -<dl> -<dt id="index-pad">Procedure: <strong>pad</strong> <em>pad-x pad-y painter</em></dt> -<dd><p>Add <var>pad-x</var> and <var>pad-y</var> amount of empty space around -<var>painter</var>. -</p></dd></dl> - -<dl> -<dt id="index-superimpose">Procedure: <strong>superimpose</strong> <em>. painters</em></dt> -<dd><p>Stack <var>painters</var> on top of each other. -</p></dd></dl> - -<p>The next batch of procedures is taken straight out of the picture -language described in -<a href="https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-15.html#%_sec_2.2.4">Structure and Interpretation of Computer Programs</a> section 2.2.4. -</p> -<dl> -<dt id="index-beside">Procedure: <strong>beside</strong> <em>. painters</em></dt> -<dd><p>Place <var>painters</var> next to each other in a row. -</p></dd></dl> - -<dl> -<dt id="index-below">Procedure: <strong>below</strong> <em>. painters</em></dt> -<dd><p>Place <var>painters</var> next to each other in a column. -</p></dd></dl> - -<dl> -<dt id="index-right_002dsplit">Procedure: <strong>right-split</strong> <em>painter n</em></dt> -<dd><p>Subdivide <var>painter</var> into 3 sections, recursively, like so: -</p> -<pre class="verbatim">*----------------*----------------* -| | | -| | right-split | -| | n - 1 | -| | | -| painter *----------------* -| | | -| | right-split | -| | n - 1 | -| | | -*----------------*----------------* -</pre> -</dd></dl> - -<dl> -<dt id="index-up_002dsplit">Procedure: <strong>up-split</strong> <em>painter n</em></dt> -<dd><p>Subdivide <var>painter</var> into 3 sections, recursively, like so: -</p> -<pre class="verbatim">*----------------*----------------* -| | | -| up-split | up-split | -| n - 1 | n - 1 | -| | | -*----------------*----------------* -| | -| painter | -| | -| | -*----------------*----------------* -</pre> -</dd></dl> - -<dl> -<dt id="index-corner_002dsplit">Procedure: <strong>corner-split</strong> <em>painter n</em></dt> -<dd><p>Subdivide <var>painter</var> into 4 sections, recursively, like so: -</p> -<pre class="verbatim">*----------------*----------------* -| | | -| up-split | corner-split | -| n - 1 | n - 1 | -| | | -*----------------*----------------* -| | | -| painter | right-split | -| | n - 1 | -| | | -*----------------*----------------* -</pre> -</dd></dl> - - -<p>As in real life, a painter cannot paint anything without a canvas. -Once a painter has been associated with a canvas, it can finally be -rendered to the screen. -</p> -<dl> -<dt id="index-make_002dcanvas">Procedure: <strong>make-canvas</strong> <em>painter [#:matrix]</em></dt> -<dd><p>Return a new canvas that will <var>painter</var> will draw on. Optionally, -a 3x3 <var>matrix</var> may be specified to apply an arbitrary -transformation to the resulting image. -</p></dd></dl> - -<dl> -<dt id="index-make_002dempty_002dcanvas">Procedure: <strong>make-empty-canvas</strong> <em>[#:matrix]</em></dt> -<dd><p>Return a new canvas that no painter is using. Optionally, a 3x3 -<var>matrix</var> may be specified to apply an arbitrary transformation to -the image, should a painter later be associated with this canvas. -</p></dd></dl> - -<dl> -<dt id="index-canvas_003f">Procedure: <strong>canvas?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> is <var>obj</var> is a canvas. -</p></dd></dl> - -<dl> -<dt id="index-set_002dcanvas_002dpainter_0021">Procedure: <strong>set-canvas-painter!</strong> <em>canvas painter</em></dt> -<dd><p>Associate <var>painter</var> with <var>canvas</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dcanvas_002dmatrix_0021">Procedure: <strong>set-canvas-matrix!</strong> <em>canvas matrix</em></dt> -<dd><p>Set the 3x3 transformation matrix of <var>canvas</var> to <var>matrix</var>. -</p></dd></dl> - -<dl> -<dt id="index-draw_002dcanvas">Procedure: <strong>draw-canvas</strong> <em>canvas</em></dt> -<dd><p>Render <var>canvas</var> to the screen. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Particles.html" accesskey="n" rel="next">Particles</a>, Previous: <a href="Fonts.html" accesskey="p" rel="prev">Fonts</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Vectors.html b/manuals/chickadee/Vectors.html deleted file mode 100644 index 8761fe9..0000000 --- a/manuals/chickadee/Vectors.html +++ /dev/null @@ -1,351 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Vectors (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Vectors (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Vectors (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Math.html" rel="up" title="Math" /> -<link href="Rectangles.html" rel="next" title="Rectangles" /> -<link href="Basics.html" rel="prev" title="Basics" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Vectors"></span><div class="header"> -<p> -Next: <a href="Rectangles.html" accesskey="n" rel="next">Rectangles</a>, Previous: <a href="Basics.html" accesskey="p" rel="prev">Basics</a>, Up: <a href="Math.html" accesskey="u" rel="up">Math</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Vectors-1"></span><h4 class="subsection">5.2.2 Vectors</h4> - -<p>Unlike Scheme’s vector data type, which is a sequence of arbitrary -Scheme objects, Chickadee’s <code>(chickadee math vector)</code> module -provides vectors in the linear algebra sense: Sequences of numbers -specialized for particular coordinate spaces. As of now, Chickadee -provides 2D and 3D vectors, with 4D vector support coming in a future -release. -</p> -<p>Here’s a quick example of adding two vectors: -</p> -<div class="lisp"> -<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">v</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2+</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">1</span> <span class="syntax-symbol">2</span><span class="syntax-close">)</span> <span class="syntax-open">(</span><span class="syntax-symbol">vec2</span> <span class="syntax-symbol">3</span> <span class="syntax-symbol">4</span><span class="syntax-close">)</span><span class="syntax-close">)</span><span class="syntax-close">)</span> -</pre></div> - -<p><em>A Note About Performance</em> -</p> -<p>A lot of time has been spent making Chickadee’s vector operations -perform relatively efficiently in critical code paths where excessive -garbage generation will cause major performance issues. The general -rule is that procedures ending with <code>!</code> perform an in-place -modification of one of the arguments in order to avoid allocating a -new vector. These procedures are also inlined by Guile’s compiler in -order to take advantage of optimizations relating to floating point -math operations. The downside is that since these are not pure -functions, they do not compose well and create more verbose code. -</p> -<span id="g_t2D-Vectors"></span><h4 class="subsubsection">5.2.2.1 2D Vectors</h4> - -<dl> -<dt id="index-vec2">Procedure: <strong>vec2</strong> <em>x y</em></dt> -<dd><p>Return a new 2D vector with coordinates (<var>x</var>, <var>y</var>). -</p></dd></dl> - -<dl> -<dt id="index-vec2_002fpolar">Procedure: <strong>vec2/polar</strong> <em>r theta</em></dt> -<dd><p>Return a new 2D vector containing the Cartesian representation of the -polar coordinate (<var>r</var>, <var>theta</var>). The angle <var>theta</var> is -measured in radians. -</p></dd></dl> - -<dl> -<dt id="index-vec2_003f">Procedure: <strong>vec2?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a 2D vector. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002dx">Procedure: <strong>vec2-x</strong> <em>v</em></dt> -<dd><p>Return the X coordinate of the 2D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002dy">Procedure: <strong>vec2-y</strong> <em>v</em></dt> -<dd><p>Return the Y coordinate of the 2D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002dcopy">Procedure: <strong>vec2-copy</strong> <em>v</em></dt> -<dd><p>Return a fresh copy of the 2D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002dmagnitude">Procedure: <strong>vec2-magnitude</strong> <em>v</em></dt> -<dd><p>Return the magnitude of the 2D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002ddot">Procedure: <strong>vec2-dot</strong> <em>v1 v2</em></dt> -<dd><p>Return the dot product of the 2D vectors <var>v1</var> and <var>v2</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002dnormalize">Procedure: <strong>vec2-normalize</strong> <em>v</em></dt> -<dd><p>Return the normalized form of the 2D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002b">Procedure: <strong>vec2+</strong> <em>v x</em></dt> -<dd><p>Add <var>x</var>, either a 2D vector or a scalar (i.e. a real number), to -the 2D vector <var>v</var> and return a new vector containing the sum. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002d">Procedure: <strong>vec2-</strong> <em>v x</em></dt> -<dd><p>Subtract <var>x</var>, either a 2D vector or a scalar, from the 2D vector -<var>v</var> and return a new vector containing the difference. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002a">Procedure: <strong>vec2*</strong> <em>v x</em></dt> -<dd><p>Multiply the 2D vector <var>v</var> by <var>x</var>, a 2D vector or a scalar, -and return a new vector containing the product. -</p></dd></dl> - -<dl> -<dt id="index-set_002dvec2_002dx_0021">Procedure: <strong>set-vec2-x!</strong> <em>v x</em></dt> -<dd><p>Set the X coordinate of the 2D vector <var>v</var> to <var>x</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dvec2_002dy_0021">Procedure: <strong>set-vec2-y!</strong> <em>v y</em></dt> -<dd><p>Set the Y coordinate of the 2D vector <var>v</var> to <var>y</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dvec2_0021">Procedure: <strong>set-vec2!</strong> <em>v x y</em></dt> -<dd><p>Set the X and Y coordinates of the 2D vector <var>v</var> to <var>x</var> and -<var>y</var>, respectively. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002dcopy_0021">Procedure: <strong>vec2-copy!</strong> <em>source target</em></dt> -<dd><p>Copy the 2D vector <var>source</var> into the 2D vector <var>target</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002dadd_0021">Procedure: <strong>vec2-add!</strong> <em>v x</em></dt> -<dd><p>Perform an in-place modification of the 2D vector <var>v</var> by adding -<var>x</var>, a 2D vector or a scalar. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002dsub_0021">Procedure: <strong>vec2-sub!</strong> <em>v x</em></dt> -<dd><p>Perform an in-place modification of the 2D vector <var>v</var> by -subtracting <var>x</var>, a 2D vector or a scalar. -</p></dd></dl> - -<dl> -<dt id="index-vec2_002dmult_0021">Procedure: <strong>vec2-mult!</strong> <em>v x</em></dt> -<dd><p>Perform an in-place modification of the 2D vector <var>v</var> by -multiplying it by <var>x</var>, a 2D vector or a scalar. -</p></dd></dl> - -<span id="g_t3D-Vectors"></span><h4 class="subsubsection">5.2.2.2 3D Vectors</h4> - -<dl> -<dt id="index-vec3">Procedure: <strong>vec3</strong> <em>x y</em></dt> -<dd><p>Return a new 2D vector with coordinates (<var>x</var>, <var>y</var>). -</p></dd></dl> - -<dl> -<dt id="index-vec3_003f">Procedure: <strong>vec3?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a 3D vector. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002dx">Procedure: <strong>vec3-x</strong> <em>v</em></dt> -<dd><p>Return the X coordinate of the 3D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002dy">Procedure: <strong>vec3-y</strong> <em>v</em></dt> -<dd><p>Return the Y coordinate of the 3D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002dz">Procedure: <strong>vec3-z</strong> <em>v</em></dt> -<dd><p>Return the Z coordinate of the 3D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002dcopy">Procedure: <strong>vec3-copy</strong> <em>v</em></dt> -<dd><p>Return a fresh copy of the 3D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002dmagnitude">Procedure: <strong>vec3-magnitude</strong> <em>v</em></dt> -<dd><p>Return the magnitude of the 3D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002ddot">Procedure: <strong>vec3-dot</strong> <em>v1 v2</em></dt> -<dd><p>Return the dot product of the 3D vectors <var>v1</var> and <var>v2</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002dcross">Procedure: <strong>vec3-cross</strong> <em>v1 v2</em></dt> -<dd><p>Return a new 3D vector containing the cross product of <var>v1</var> and -<var>v2</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002dnormalize">Procedure: <strong>vec3-normalize</strong> <em>v</em></dt> -<dd><p>Return the normalized form of the 3D vector <var>v</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002b">Procedure: <strong>vec3+</strong> <em>v x</em></dt> -<dd><p>Add <var>x</var>, either a 3D vector or a scalar (i.e. a real number), to -the 3D vector <var>v</var> and return a new vector containing the sum. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002d">Procedure: <strong>vec3-</strong> <em>v x</em></dt> -<dd><p>Subtract <var>x</var>, either a 3D vector or a scalar, from the 3D vector -<var>v</var> and return a new vector containing the difference. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002a">Procedure: <strong>vec3*</strong> <em>v x</em></dt> -<dd><p>Multiply the 3D vector <var>v</var> by <var>x</var>, a 3D vector or a scalar, -and return a new vector containing the product. -</p></dd></dl> - -<dl> -<dt id="index-set_002dvec3_002dx_0021">Procedure: <strong>set-vec3-x!</strong> <em>v x</em></dt> -<dd><p>Set the X coordinate of the 3D vector <var>v</var> to <var>x</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dvec3_002dy_0021">Procedure: <strong>set-vec3-y!</strong> <em>v y</em></dt> -<dd><p>Set the Y coordinate of the 3D vector <var>v</var> to <var>y</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dvec3_002dz_0021">Procedure: <strong>set-vec3-z!</strong> <em>v z</em></dt> -<dd><p>Set the Z coordinate of the 3D vector <var>v</var> to <var>z</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dvec3_0021">Procedure: <strong>set-vec3!</strong> <em>v x y z</em></dt> -<dd><p>Set the X, Y, and Z coordinates of the 3D vector <var>v</var> to <var>x</var>, -<var>y</var>, and <var>z</var>, respectively. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002dcopy_0021">Procedure: <strong>vec3-copy!</strong> <em>source target</em></dt> -<dd><p>Copy the 3D vector <var>source</var> into the 3D vector <var>target</var>. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002dadd_0021">Procedure: <strong>vec3-add!</strong> <em>v x</em></dt> -<dd><p>Perform an in-place modification of the 3D vector <var>v</var> by adding -<var>x</var>, a 3D vector or a scalar. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002dsub_0021">Procedure: <strong>vec3-sub!</strong> <em>v x</em></dt> -<dd><p>Perform an in-place modification of the 3D vector <var>v</var> by -subtracting <var>x</var>, a 3D vector or a scalar. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002dmult_0021">Procedure: <strong>vec3-mult!</strong> <em>v x</em></dt> -<dd><p>Perform an in-place modification of the 3D vector <var>v</var> by -multiplying it by <var>x</var>, a 3D vector or a scalar. -</p></dd></dl> - -<dl> -<dt id="index-vec3_002dcross_0021">Procedure: <strong>vec3-cross!</strong> <em>dest v1 v2</em></dt> -<dd><p>Compute the cross product of the 3D vectors <var>v1</var> and <var>v2</var> and -store the result in <var>dest</var>. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Rectangles.html" accesskey="n" rel="next">Rectangles</a>, Previous: <a href="Basics.html" accesskey="p" rel="prev">Basics</a>, Up: <a href="Math.html" accesskey="u" rel="up">Math</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> diff --git a/manuals/chickadee/Viewports.html b/manuals/chickadee/Viewports.html deleted file mode 100644 index c60adc3..0000000 --- a/manuals/chickadee/Viewports.html +++ /dev/null @@ -1,163 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Viewports (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Viewports (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Viewports (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Render-Settings.html" rel="next" title="Render Settings" /> -<link href="Framebuffers.html" rel="prev" title="Framebuffers" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Viewports"></span><div class="header"> -<p> -Next: <a href="Render-Settings.html" accesskey="n" rel="next">Render Settings</a>, Previous: <a href="Framebuffers.html" accesskey="p" rel="prev">Framebuffers</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Viewports-1"></span><h4 class="subsection">5.3.15 Viewports</h4> - -<p>A viewport represents a subset of the screen (or framebuffer). When -rendering a frame, the resulting image will only appear within that -viewport. These aren’t often needed, and Chickadee’s default viewport -occupies the entire screen, but there are certain situations where -they are useful. For example, a split-screen multiplayer game may -render to two different viewports, each occupying a different half of -the screen. -</p> -<p>The <code>(chickadee graphics viewport)</code> module provides the following -API: -</p> -<dl> -<dt id="index-make_002dviewport">Procedure: <strong>make-viewport</strong> <em>x y width height [#:clear-color] [#:clear-flags]</em></dt> -<dd> -<p>Create a viewport that covers an area of the window starting from -coordinates (<var>x</var>, <var>y</var>) and spanning <var>width</var> <code>x</code> -<var>height</var> pixels. Fill the viewport with <var>clear-color</var> when -clearing the screen. Clear the buffers denoted by the list of symbols -in <var>clear-flags</var>. -</p> -<p>Possible values for <var>clear-flags</var> are <var>color-buffer</var>, -<var>depth-buffer</var>, <var>accum-buffer</var>, and <var>stencil-buffer</var>. -</p></dd></dl> - -<dl> -<dt id="index-viewport_003f">Procedure: <strong>viewport?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a viewport. -</p></dd></dl> - -<dl> -<dt id="index-viewport_002dx">Procedure: <strong>viewport-x</strong> <em>viewport</em></dt> -<dd><p>Return the left edge of <var>viewport</var>. -</p></dd></dl> - -<dl> -<dt id="index-viewport_002dy">Procedure: <strong>viewport-y</strong> <em>viewport</em></dt> -<dd><p>Return the bottom edge of <var>viewport</var>. -</p></dd></dl> - -<dl> -<dt id="index-viewport_002dwidth">Procedure: <strong>viewport-width</strong> <em>viewport</em></dt> -<dd><p>Return the width of <var>viewport</var>. -</p></dd></dl> - -<dl> -<dt id="index-viewport_002dheight">Procedure: <strong>viewport-height</strong> <em>viewport</em></dt> -<dd><p>Return the height of <var>viewport</var>. -</p></dd></dl> - -<dl> -<dt id="index-viewport_002dclear_002dcolor">Procedure: <strong>viewport-clear-color</strong> <em>viewport</em></dt> -<dd><p>Return the clear color for <var>viewport</var>. -</p></dd></dl> - -<dl> -<dt id="index-viewport_002dclear_002dflags">Procedure: <strong>viewport-clear-flags</strong> <em>viewport</em></dt> -<dd><p>Return the list of clear flags for <var>viewport</var>. -</p></dd></dl> - -<dl> -<dt id="index-current_002dviewport">Procedure: <strong>current-viewport</strong></dt> -<dd><p>Return the current viewport. -</p></dd></dl> - -<dl> -<dt id="index-g_003aviewport">Variable: <strong>g:viewport</strong></dt> -<dd><p>Render state for viewports (see <a href="Rendering-Engine.html">Rendering Engine</a>.) -</p></dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/Window-Manipulation.html b/manuals/chickadee/Window-Manipulation.html deleted file mode 100644 index 879c12c..0000000 --- a/manuals/chickadee/Window-Manipulation.html +++ /dev/null @@ -1,190 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Window Manipulation (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Window Manipulation (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Window Manipulation (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Kernel.html" rel="up" title="Kernel" /> -<link href="Math.html" rel="next" title="Math" /> -<link href="Input-Devices.html" rel="prev" title="Input Devices" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Window-Manipulation"></span><div class="header"> -<p> -Previous: <a href="Input-Devices.html" accesskey="p" rel="prev">Input Devices</a>, Up: <a href="Kernel.html" accesskey="u" rel="up">Kernel</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Window-Manipulation-1"></span><h4 class="subsection">5.1.3 Window Manipulation</h4> - -<dl> -<dt id="index-current_002dwindow">Procedure: <strong>current-window</strong></dt> -<dd><p>Return the currently active game window. -</p></dd></dl> - -<dl> -<dt id="index-window_003f">Procedure: <strong>window?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a window object. -</p></dd></dl> - -<dl> -<dt id="index-window_002dtitle">Procedure: <strong>window-title</strong> <em>window</em></dt> -<dd><p>Return the title of <var>window</var>. -</p></dd></dl> - -<dl> -<dt id="index-window_002dwidth">Procedure: <strong>window-width</strong> <em>window</em></dt> -<dd><p>Return the width of <var>window</var> in pixels. -</p></dd></dl> - -<dl> -<dt id="index-window_002dheight">Procedure: <strong>window-height</strong> <em>window</em></dt> -<dd><p>Return the height of <var>window</var> in pixels. -</p></dd></dl> - -<dl> -<dt id="index-window_002dx">Procedure: <strong>window-x</strong> <em>window</em></dt> -<dd><p>Retun the X coordinate of the upper-left corner of <var>window</var>. -</p></dd></dl> - -<dl> -<dt id="index-window_002dy">Procedure: <strong>window-y</strong> <em>window</em></dt> -<dd><p>Return the Y coordinate of the upper-left corner of <var>window</var>. -</p></dd></dl> - -<dl> -<dt id="index-hide_002dwindow_0021">Procedure: <strong>hide-window!</strong> <em>window</em></dt> -<dd><p>Hide <var>window</var>. -</p></dd></dl> - -<dl> -<dt id="index-show_002dwindow_0021">Procedure: <strong>show-window!</strong> <em>window</em></dt> -<dd><p>Show <var>window</var>. -</p></dd></dl> - -<dl> -<dt id="index-maximize_002dwindow_0021">Procedure: <strong>maximize-window!</strong> <em>window</em></dt> -<dd><p>Maximize <var>window</var>. -</p></dd></dl> - -<dl> -<dt id="index-minimize_002dwindow_0021">Procedure: <strong>minimize-window!</strong> <em>window</em></dt> -<dd><p>Minimize <var>window</var>. -</p></dd></dl> - -<dl> -<dt id="index-raise_002dwindow_0021">Procedure: <strong>raise-window!</strong> <em>window</em></dt> -<dd><p>Make <var>window</var> visible over all other windows. -</p></dd></dl> - -<dl> -<dt id="index-restore_002dwindow_0021">Procedure: <strong>restore-window!</strong> <em>window</em></dt> -<dd><p>Restore the size and position of a minimized or maximized -<var>window</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dwindow_002dborder_0021">Procedure: <strong>set-window-border!</strong> <em>window border?</em></dt> -<dd><p>Enable/disable the border around <var>window</var>. If <var>border?</var> is -<code>#f</code>, the border is disabled, otherwise it is enabled. -</p></dd></dl> - -<dl> -<dt id="index-set_002dwindow_002dtitle_0021">Procedure: <strong>set-window-title!</strong> <em>window title</em></dt> -<dd><p>Change the title of <var>window</var> to <var>title</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dwindow_002dsize_0021">Procedure: <strong>set-window-size!</strong> <em>window width height</em></dt> -<dd><p>Change the dimensions of <var>window</var> to <var>width</var> x <var>height</var> -pixels. -</p></dd></dl> - -<dl> -<dt id="index-set_002dwindow_002dposition_0021">Procedure: <strong>set-window-position!</strong> <em>window x y</em></dt> -<dd><p>Move the upper-left corner of <var>window</var> to pixel coordinates -(<var>x</var>, <var>y</var>). -</p></dd></dl> - -<dl> -<dt id="index-set_002dwindow_002dfullscreen_0021">Procedure: <strong>set-window-fullscreen!</strong> <em>window fullscreen?</em></dt> -<dd><p>Enable or disable fullscreen mode for <var>window</var>. If -<var>fullscreen?</var> is <code>#f</code>, fullscreen mode is disabled, otherwise -it is enabled. -</p></dd></dl> - - - - -</body> -</html> diff --git a/manuals/chickadee/index.html b/manuals/chickadee/index.html deleted file mode 100644 index 0d414d5..0000000 --- a/manuals/chickadee/index.html +++ /dev/null @@ -1,267 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Top (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Top (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Top (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="#Top" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Installation.html" rel="next" title="Installation" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<h1 class="settitle" align="center">The Chickadee Game Toolkit</h1> - - -<span id="SEC_Contents"></span> -<h2 class="contents-heading">Table of Contents</h2> - -<div class="contents"> - -<ul class="no-bullet"> - <li><a id="toc-Installation-1" href="Installation.html#Installation">1 Installation</a> - <ul class="no-bullet"> - <li><a id="toc-Requirements-1" href="Requirements.html#Requirements">1.1 Requirements</a></li> - </ul></li> - <li><a id="toc-Getting-Started-1" href="Getting-Started.html#Getting-Started">2 Getting Started</a></li> - <li><a id="toc-Command-Line-Interface-1" href="Command-Line-Interface.html#Command-Line-Interface">3 Command Line Interface</a> - <ul class="no-bullet"> - <li><a id="toc-Invoking-chickadee-play-1" href="Invoking-chickadee-play.html#Invoking-chickadee-play">3.1 Invoking <code>chickadee play</code></a></li> - <li><a id="toc-Invoking-chickadee-bundle-1" href="Invoking-chickadee-bundle.html#Invoking-chickadee-bundle">3.2 Invoking <code>chickadee bundle</code></a></li> - </ul></li> - <li><a id="toc-Live-Coding-1" href="Live-Coding.html#Live-Coding">4 Live Coding</a></li> - <li><a id="toc-API-Reference-1" href="API-Reference.html#API-Reference">5 API Reference</a> - <ul class="no-bullet"> - <li><a id="toc-Kernel-1" href="Kernel.html#Kernel">5.1 Kernel</a> - <ul class="no-bullet"> - <li><a id="toc-The-Game-Loop-1" href="The-Game-Loop.html#The-Game-Loop">5.1.1 The Game Loop</a></li> - <li><a id="toc-Input-Devices-1" href="Input-Devices.html#Input-Devices">5.1.2 Input Devices</a></li> - <li><a id="toc-Window-Manipulation-1" href="Window-Manipulation.html#Window-Manipulation">5.1.3 Window Manipulation</a></li> - </ul></li> - <li><a id="toc-Math-1" href="Math.html#Math">5.2 Math</a> - <ul class="no-bullet"> - <li><a id="toc-Basics-1" href="Basics.html#Basics">5.2.1 Basics</a></li> - <li><a id="toc-Vectors-1" href="Vectors.html#Vectors">5.2.2 Vectors</a> - <ul class="no-bullet"> - <li><a id="toc-2D-Vectors" href="Vectors.html#g_t2D-Vectors">5.2.2.1 2D Vectors</a></li> - <li><a id="toc-3D-Vectors" href="Vectors.html#g_t3D-Vectors">5.2.2.2 3D Vectors</a></li> - </ul></li> - <li><a id="toc-Rectangles-1" href="Rectangles.html#Rectangles">5.2.3 Rectangles</a></li> - <li><a id="toc-Matrices-1" href="Matrices.html#Matrices">5.2.4 Matrices</a> - <ul class="no-bullet"> - <li><a id="toc-3x3-Matrices" href="Matrices.html#g_t3x3-Matrices">5.2.4.1 3x3 Matrices</a></li> - <li><a id="toc-4x4-Matrices" href="Matrices.html#g_t4x4-Matrices">5.2.4.2 4x4 Matrices</a></li> - </ul></li> - <li><a id="toc-Quaternions-1" href="Quaternions.html#Quaternions">5.2.5 Quaternions</a></li> - <li><a id="toc-Easings-1" href="Easings.html#Easings">5.2.6 Easings</a></li> - <li><a id="toc-Bezier-Curves-1" href="Bezier-Curves.html#Bezier-Curves">5.2.7 Bezier Curves</a></li> - </ul></li> - <li><a id="toc-Graphics-1" href="Graphics.html#Graphics">5.3 Graphics</a> - <ul class="no-bullet"> - <li><a id="toc-Colors-1" href="Colors.html#Colors">5.3.1 Colors</a> - <ul class="no-bullet"> - <li><a id="toc-Stock-Colors" href="Colors.html#Stock-Colors">5.3.1.1 Stock Colors</a></li> - </ul></li> - <li><a id="toc-Textures-1" href="Textures.html#Textures">5.3.2 Textures</a> - <ul class="no-bullet"> - <li><a id="toc-Tile-Atlases" href="Textures.html#Tile-Atlases">5.3.2.1 Tile Atlases</a></li> - <li><a id="toc-Cube-Maps" href="Textures.html#Cube-Maps">5.3.2.2 Cube Maps</a></li> - </ul></li> - <li><a id="toc-Sprites-1" href="Sprites.html#Sprites">5.3.3 Sprites</a> - <ul class="no-bullet"> - <li><a id="toc-Sprite-Batches" href="Sprites.html#Sprite-Batches">5.3.3.1 Sprite Batches</a></li> - <li><a id="toc-9_002dPatches" href="Sprites.html#g_t9_002dPatches">5.3.3.2 9-Patches</a></li> - </ul></li> - <li><a id="toc-Fonts-1" href="Fonts.html#Fonts">5.3.4 Fonts</a></li> - <li><a id="toc-Vector-Paths-1" href="Vector-Paths.html#Vector-Paths">5.3.5 Vector Paths</a></li> - <li><a id="toc-Particles-1" href="Particles.html#Particles">5.3.6 Particles</a></li> - <li><a id="toc-Tile-Maps-1" href="Tile-Maps.html#Tile-Maps">5.3.7 Tile Maps</a></li> - <li><a id="toc-Models-1" href="Models.html#Models">5.3.8 Models</a></li> - <li><a id="toc-Lights-1" href="Lights.html#Lights">5.3.9 Lights</a></li> - <li><a id="toc-Skyboxes-1" href="Skyboxes.html#Skyboxes">5.3.10 Skyboxes</a></li> - <li><a id="toc-Meshes-1" href="Meshes.html#Meshes">5.3.11 Meshes</a> - <ul class="no-bullet"> - <li><a id="toc-Materials" href="Meshes.html#Materials">5.3.11.1 Materials</a></li> - <li><a id="toc-Blinn_002dPhong-Materials" href="Meshes.html#Blinn_002dPhong-Materials">5.3.11.2 Blinn-Phong Materials</a></li> - <li><a id="toc-PBR-Materials" href="Meshes.html#PBR-Materials">5.3.11.3 PBR Materials</a></li> - <li><a id="toc-Primitives-and-Meshes" href="Meshes.html#Primitives-and-Meshes">5.3.11.4 Primitives and Meshes</a></li> - </ul></li> - <li><a id="toc-Buffers-1" href="Buffers.html#Buffers">5.3.12 Buffers</a></li> - <li><a id="toc-Shaders-1" href="Shaders.html#Shaders">5.3.13 Shaders</a> - <ul class="no-bullet"> - <li><a id="toc-Attributes" href="Shaders.html#Attributes">5.3.13.1 Attributes</a></li> - <li><a id="toc-Uniforms" href="Shaders.html#Uniforms">5.3.13.2 Uniforms</a></li> - <li><a id="toc-User_002dDefined-Shader-Types" href="Shaders.html#User_002dDefined-Shader-Types">5.3.13.3 User-Defined Shader Types</a></li> - </ul></li> - <li><a id="toc-Framebuffers-1" href="Framebuffers.html#Framebuffers">5.3.14 Framebuffers</a></li> - <li><a id="toc-Viewports-1" href="Viewports.html#Viewports">5.3.15 Viewports</a></li> - <li><a id="toc-Render-Settings-1" href="Render-Settings.html#Render-Settings">5.3.16 Render Settings</a> - <ul class="no-bullet"> - <li><a id="toc-Blending" href="Render-Settings.html#Blending">5.3.16.1 Blending</a></li> - <li><a id="toc-Polygon-Modes-and-Culling" href="Render-Settings.html#Polygon-Modes-and-Culling">5.3.16.2 Polygon Modes and Culling</a></li> - <li><a id="toc-Depth-Testing" href="Render-Settings.html#Depth-Testing">5.3.16.3 Depth Testing</a></li> - <li><a id="toc-Stencil-Testing" href="Render-Settings.html#Stencil-Testing">5.3.16.4 Stencil Testing</a></li> - <li><a id="toc-Multisample-Antialiasing" href="Render-Settings.html#Multisample-Antialiasing">5.3.16.5 Multisample Antialiasing</a></li> - </ul></li> - <li><a id="toc-Rendering-Engine-1" href="Rendering-Engine.html#Rendering-Engine">5.3.17 Rendering Engine</a> - <ul class="no-bullet"> - <li><a id="toc-Render-States" href="Rendering-Engine.html#Render-States">5.3.17.1 Render States</a></li> - <li><a id="toc-Rendering" href="Rendering-Engine.html#Rendering">5.3.17.2 Rendering</a></li> - </ul></li> - </ul></li> - <li><a id="toc-Audio-1" href="Audio.html#Audio">5.4 Audio</a> - <ul class="no-bullet"> - <li><a id="toc-Audio-Files-1" href="Audio-Files.html#Audio-Files">5.4.1 Audio Files</a></li> - <li><a id="toc-Sources-1" href="Sources.html#Sources">5.4.2 Sources</a></li> - <li><a id="toc-The-Listener-1" href="The-Listener.html#The-Listener">5.4.3 The Listener</a></li> - <li><a id="toc-The-Environment-1" href="The-Environment.html#The-Environment">5.4.4 The Environment</a></li> - </ul></li> - <li><a id="toc-Scripting-1" href="Scripting.html#Scripting">5.5 Scripting</a> - <ul class="no-bullet"> - <li><a id="toc-Agendas-1" href="Agendas.html#Agendas">5.5.1 Agendas</a></li> - <li><a id="toc-Scripts-1" href="Scripts.html#Scripts">5.5.2 Scripts</a></li> - <li><a id="toc-Tweening-1" href="Tweening.html#Tweening">5.5.3 Tweening</a></li> - <li><a id="toc-Channels-1" href="Channels.html#Channels">5.5.4 Channels</a></li> - </ul></li> - <li><a id="toc-Data-Structures-1" href="Data-Structures.html#Data-Structures">5.6 Data Structures</a> - <ul class="no-bullet"> - <li><a id="toc-Array-Lists-1" href="Array-Lists.html#Array-Lists">5.6.1 Array Lists</a></li> - <li><a id="toc-Queues-1" href="Queues.html#Queues">5.6.2 Queues</a></li> - <li><a id="toc-Heaps-1" href="Heaps.html#Heaps">5.6.3 Heaps</a></li> - <li><a id="toc-Quadtrees-1" href="Quadtrees.html#Quadtrees">5.6.4 Quadtrees</a></li> - <li><a id="toc-Grids-1" href="Grids.html#Grids">5.6.5 Grids</a></li> - <li><a id="toc-Path-Finding-1" href="Path-Finding.html#Path-Finding">5.6.6 Path Finding</a></li> - </ul></li> - </ul></li> - <li><a id="toc-Copying-This-Manual-1" href="Copying-This-Manual.html#Copying-This-Manual">Appendix A Copying This Manual</a> - <ul class="no-bullet"> - <li><a id="toc-Apache-2_002e0-License-1" href="Apache-2_002e0-License.html#Apache-2_002e0-License">A.1 Apache 2.0 License</a></li> - </ul></li> - <li><a id="toc-Index-1" href="Index.html#Index" rel="index">Index</a></li> -</ul> -</div> - - -<span id="Top"></span><div class="header"> -<p> -Next: <a href="Installation.html" accesskey="n" rel="next">Installation</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Chickadee"></span><h1 class="top">Chickadee</h1> - -<p>Copyright © 2017-2023 David Thompson <a href="mailto:dthompson2@worcester.edu">dthompson2@worcester.edu</a> -</p> -<blockquote> -<p>Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -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”. -</p> -<p>A copy of the license is also available from the Free Software -Foundation Web site at <a href="http://www.gnu.org/licenses/fdl.html">http://www.gnu.org/licenses/fdl.html</a>. -</p> -</blockquote> - - -<p>The document was typeset with -<a href="http://www.texinfo.org/">GNU Texinfo</a>. -</p> - -<table class="menu" border="0" cellspacing="0"> -<tr><td align="left" valign="top">• <a href="Installation.html" accesskey="1">Installation</a></td><td> </td><td align="left" valign="top">Installing Chickadee. -</td></tr> -<tr><td align="left" valign="top">• <a href="Getting-Started.html" accesskey="2">Getting Started</a></td><td> </td><td align="left" valign="top">Writing your first Chickadee program. -</td></tr> -<tr><td align="left" valign="top">• <a href="Command-Line-Interface.html" accesskey="3">Command Line Interface</a></td><td> </td><td align="left" valign="top">Run Chickadee programs from the terminal. -</td></tr> -<tr><td align="left" valign="top">• <a href="Live-Coding.html" accesskey="4">Live Coding</a></td><td> </td><td align="left" valign="top">Tips for building games from the REPL. -</td></tr> -<tr><td align="left" valign="top">• <a href="API-Reference.html" accesskey="5">API Reference</a></td><td> </td><td align="left" valign="top">Chickadee API reference. -</td></tr> -<tr><td align="left" valign="top">• <a href="Copying-This-Manual.html" accesskey="6">Copying This Manual</a></td><td> </td><td align="left" valign="top"> -</td></tr> -<tr><td align="left" valign="top">• <a href="Index.html" rel="index" accesskey="7">Index</a></td><td> </td><td align="left" valign="top"> -</td></tr> -</table> - - -<hr /> -<div class="header"> -<p> -Next: <a href="Installation.html" accesskey="n" rel="next">Installation</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> |