<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity=60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
Each of the functions below sets a GLUT callback function; each takes a single call reference or closure argument to set the callback.

Please see your GLUT or freeglut documentation for more information on these functions.

|!Function Name|!Description|h
|{{{glutButtonBoxFunc()}}}|no description available yet|
|{{{glutDialsFunc()}}}|no description available yet|
|{{{glutDisplayFunc()}}}|no description available yet|
|{{{glutEntryFunc()}}}|no description available yet|
|{{{glutForceJoystickFunc()}}}|no description available yet|
|{{{glutIdleFunc()}}}|no description available yet|
|{{{glutJoystickFunc()}}}|no description available yet|
|{{{glutKeyboardFunc()}}}|no description available yet|
|{{{glutKeyboardUpFunc()}}}|no description available yet|
|{{{glutMenuStateFunc()}}}|no description available yet|
|{{{glutMenuStatusFunc()}}}|no description available yet|
|{{{glutMotionFunc()}}}|no description available yet|
|{{{glutMouseFunc()}}}|no description available yet|
|{{{glutOverlayDisplayFunc()}}}|no description available yet|
|{{{glutPassiveMotionFunc()}}}|no description available yet|
|{{{glutReshapeFunc()}}}|no description available yet|
|{{{glutSpaceballButtonFunc()}}}|no description available yet|
|{{{glutSpaceballMotionFunc()}}}|no description available yet|
|{{{glutSpaceballRotateFunc()}}}|no description available yet|
|{{{glutSpecialFunc()}}}|no description available yet|
|{{{glutSpecialMotionFunc()}}}|no description available yet|
|{{{glutSpecialUpFunc()}}}|no description available yet|
|{{{glutTabletButtonFunc()}}}|no description available yet|
|{{{glutTabletMotionFunc()}}}|no description available yet|
|{{{glutTimerFunc()}}}|no description available yet|
|{{{glutVisibilityFunc()}}}|no description available yet|
|{{{glutWindowStatusFunc()}}}|no description available yet|
|{{{glutWMCloseFunc()}}}|no description available yet|
Background: #fff
Foreground: #000
PrimaryPale: #5a0
PrimaryLight: #4a0
PrimaryMid: #020
PrimaryDark: #390
SecondaryPale: #ffc
SecondaryLight: #af0
SecondaryMid: #340
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
David Nichols is the author of the [[Qore programming language|http://qoretechnologies.com/qore]] and of this module.
You can reach me at: mailto:david_nichols@users.sourceforge.net
[[Introduction]]
Here is a list of all non-callback functions provided by the module - please see your GLUT or freeglut documentation or man pages for more information on arguments and a description of functionality until this documentation can be updated properly.

See [[Callback Functions]] for a list of callback functions.

|!Function|!Description|h
|{{{glutAddMenuEntry()}}}|no description available yet|
|{{{glutAddSubMenu()}}}|no description available yet|
|{{{glutAttachMenu()}}}|no description available yet|
|{{{glutBitmapCharacter()}}}|no description available yet|
|{{{glutBitmapLength()}}}|no description available yet|
|{{{glutBitmapWidth()}}}|no description available yet|
|{{{glutChangeToMenuEntry()}}}|no description available yet|
|{{{glutChangeToSubMenu()}}}|no description available yet|
|{{{glutCheckLoop()}}}|no description available yet|
|{{{glutCopyColormap()}}}|no description available yet|
|{{{glutCreateMenu()}}}|no description available yet|
|{{{glutCreateSubWindow()}}}|no description available yet|
|{{{glutCreateWindow()}}}|no description available yet|
|{{{glutDestroyMenu()}}}|no description available yet|
|{{{glutDestroyWindow()}}}|no description available yet|
|{{{glutDetachMenu()}}}|no description available yet|
|{{{glutDeviceGet()}}}|no description available yet|
|{{{glutEnterGameMode()}}}|no description available yet|
|{{{glutEstablishOverlay()}}}|no description available yet|
|{{{glutExtensionSupported()}}}|no description available yet|
|{{{glutFullScreen()}}}|no description available yet|
|{{{glutGameModeGet()}}}|no description available yet|
|{{{glutGameModeString()}}}|no description available yet|
|{{{glutGet()}}}|no description available yet|
|{{{glutGetColor()}}}|no description available yet|
|{{{glutGetMenu()}}}|no description available yet|
|{{{glutGetModifiers()}}}|no description available yet|
|{{{glutGetProcAddress()}}}|no description available yet|
|{{{glutGetWindow()}}}|no description available yet|
|{{{glutHideOverlay()}}}|no description available yet|
|{{{glutHideWindow()}}}|no description available yet|
|{{{glutIconifyWindow()}}}|no description available yet|
|{{{glutIgnoreKeyRepeat()}}}|no description available yet|
|{{{glutInit()}}}|no description available yet|
|{{{glutInitDisplayMode()}}}|no description available yet|
|{{{glutInitDisplayString()}}}|no description available yet|
|{{{glutInitWindowPosition()}}}|no description available yet|
|{{{glutInitWindowSize()}}}|no description available yet|
|{{{glutLayerGet()}}}|no description available yet|
|{{{glutLeaveGameMode()}}}|no description available yet|
|{{{glutMainLoop()}}}|no description available yet|
|{{{glutPopWindow()}}}|no description available yet|
|{{{glutPositionWindow()}}}|no description available yet|
|{{{glutPostOverlayRedisplay()}}}|no description available yet|
|{{{glutPostRedisplay()}}}|no description available yet|
|{{{glutPostWindowOverlayRedisplay()}}}|no description available yet|
|{{{glutPostWindowRedisplay()}}}|no description available yet|
|{{{glutPushWindow()}}}|no description available yet|
|{{{glutRemoveMenuItem()}}}|no description available yet|
|{{{glutRemoveOverlay()}}}|no description available yet|
|{{{glutReportErrors()}}}|no description available yet|
|{{{glutReshapeWindow()}}}|no description available yet|
|{{{glutSetColor()}}}|no description available yet|
|{{{glutSetCursor()}}}|no description available yet|
|{{{glutSetIconTitle()}}}|no description available yet|
|{{{glutSetKeyRepeat()}}}|no description available yet|
|{{{glutSetMenu()}}}|no description available yet|
|{{{glutSetWindow()}}}|no description available yet|
|{{{glutSetWindowTitle()}}}|no description available yet|
|{{{glutSetupVideoResizing()}}}|no description available yet|
|{{{glutShowOverlay()}}}|no description available yet|
|{{{glutShowWindow()}}}|no description available yet|
|{{{glutSolidCone()}}}|no description available yet|
|{{{glutSolidCube()}}}|no description available yet|
|{{{glutSolidDodecahedron()}}}|no description available yet|
|{{{glutSolidIcosahedron()}}}|no description available yet|
|{{{glutSolidOctahedron()}}}|no description available yet|
|{{{glutSolidSphere()}}}|no description available yet|
|{{{glutSolidTeapot()}}}|no description available yet|
|{{{glutSolidTetrahedron()}}}|no description available yet|
|{{{glutSolidTorus()}}}|no description available yet|
|{{{glutStopVideoResizing()}}}|no description available yet|
|{{{glutStrokeCharacter()}}}|no description available yet|
|{{{glutStrokeLength()}}}|no description available yet|
|{{{glutStrokeWidth()}}}|no description available yet|
|{{{glutSurfaceTexture()}}}|no description available yet|
|{{{glutSwapBuffers()}}}|no description available yet|
|{{{glutUseLayer()}}}|no description available yet|
|{{{glutVideoPan()}}}|no description available yet|
|{{{glutVideoResize()}}}|no description available yet|
|{{{glutVideoResizeGet()}}}|no description available yet|
|{{{glutWarpPointer()}}}|no description available yet|
|{{{glutWireCone()}}}|no description available yet|
|{{{glutWireCube()}}}|no description available yet|
|{{{glutWireDodecahedron()}}}|no description available yet|
|{{{glutWireIcosahedron()}}}|no description available yet|
|{{{glutWireOctahedron()}}}|no description available yet|
|{{{glutWireSphere()}}}|no description available yet|
|{{{glutWireTeapot()}}}|no description available yet|
|{{{glutWireTetrahedron()}}}|no description available yet|
|{{{glutWireTorus()}}}|no description available yet|
The module implements the {{{Glut}}} namespace that contains all constants defined by the module.

Please see your glut or freeglut documentation for more information on these constants.

!Constants
|!Constant|h
|{{{GLUT_ACCUM}}}|
|{{{GLUT_ACTIVE_ALT}}}|
|{{{GLUT_ACTIVE_CTRL}}}|
|{{{GLUT_ACTIVE_SHIFT}}}|
|{{{GLUT_ALPHA}}}|
|{{{GLUT_API_VERSION}}}|
|{{{GLUT_BLUE}}}|
|{{{GLUT_CURSOR_BOTTOM_LEFT_CORNER}}}|
|{{{GLUT_CURSOR_BOTTOM_RIGHT_CORNER}}}|
|{{{GLUT_CURSOR_BOTTOM_SIDE}}}|
|{{{GLUT_CURSOR_CROSSHAIR}}}|
|{{{GLUT_CURSOR_CYCLE}}}|
|{{{GLUT_CURSOR_DESTROY}}}|
|{{{GLUT_CURSOR_FULL_CROSSHAIR}}}|
|{{{GLUT_CURSOR_HELP}}}|
|{{{GLUT_CURSOR_INFO}}}|
|{{{GLUT_CURSOR_INHERIT}}}|
|{{{GLUT_CURSOR_LEFT_ARROW}}}|
|{{{GLUT_CURSOR_LEFT_RIGHT}}}|
|{{{GLUT_CURSOR_LEFT_SIDE}}}|
|{{{GLUT_CURSOR_NONE}}}|
|{{{GLUT_CURSOR_RIGHT_ARROW}}}|
|{{{GLUT_CURSOR_RIGHT_SIDE}}}|
|{{{GLUT_CURSOR_SPRAY}}}|
|{{{GLUT_CURSOR_TEXT}}}|
|{{{GLUT_CURSOR_TOP_LEFT_CORNER}}}|
|{{{GLUT_CURSOR_TOP_RIGHT_CORNER}}}|
|{{{GLUT_CURSOR_TOP_SIDE}}}|
|{{{GLUT_CURSOR_UP_DOWN}}}|
|{{{GLUT_CURSOR_WAIT}}}|
|{{{GLUT_DEPTH}}}|
|{{{GLUT_DEVICE_IGNORE_KEY_REPEAT}}}|
|{{{GLUT_DEVICE_KEY_REPEAT}}}|
|{{{GLUT_DISPLAY_MODE_POSSIBLE}}}|
|{{{GLUT_DOUBLE}}}|
|{{{GLUT_DOWN}}}|
|{{{GLUT_ELAPSED_TIME}}}|
|{{{GLUT_ENTERED}}}|
|{{{GLUT_FULLY_COVERED}}}|
|{{{GLUT_FULLY_RETAINED}}}|
|{{{GLUT_GAME_MODE_ACTIVE}}}|
|{{{GLUT_GAME_MODE_DISPLAY_CHANGED}}}|
|{{{GLUT_GAME_MODE_HEIGHT}}}|
|{{{GLUT_GAME_MODE_PIXEL_DEPTH}}}|
|{{{GLUT_GAME_MODE_POSSIBLE}}}|
|{{{GLUT_GAME_MODE_REFRESH_RATE}}}|
|{{{GLUT_GAME_MODE_WIDTH}}}|
|{{{GLUT_GREEN}}}|
|{{{GLUT_HAS_DIAL_AND_BUTTON_BOX}}}|
|{{{GLUT_HAS_JOYSTICK}}}|
|{{{GLUT_HAS_KEYBOARD}}}|
|{{{GLUT_HAS_MOUSE}}}|
|{{{GLUT_HAS_OVERLAY}}}|
|{{{GLUT_HAS_SPACEBALL}}}|
|{{{GLUT_HAS_TABLET}}}|
|{{{GLUT_HIDDEN}}}|
|{{{GLUT_INDEX}}}|
|{{{GLUT_INIT_DISPLAY_MODE}}}|
|{{{GLUT_INIT_WINDOW_HEIGHT}}}|
|{{{GLUT_INIT_WINDOW_WIDTH}}}|
|{{{GLUT_INIT_WINDOW_X}}}|
|{{{GLUT_INIT_WINDOW_Y}}}|
|{{{GLUT_JOYSTICK_AXES}}}|
|{{{GLUT_JOYSTICK_BUTTONS}}}|
|{{{GLUT_JOYSTICK_BUTTON_A}}}|
|{{{GLUT_JOYSTICK_BUTTON_B}}}|
|{{{GLUT_JOYSTICK_BUTTON_C}}}|
|{{{GLUT_JOYSTICK_BUTTON_D}}}|
|{{{GLUT_JOYSTICK_POLL_RATE}}}|
|{{{GLUT_KEY_DOWN}}}|
|{{{GLUT_KEY_END}}}|
|{{{GLUT_KEY_F1}}}|
|{{{GLUT_KEY_F10}}}|
|{{{GLUT_KEY_F11}}}|
|{{{GLUT_KEY_F12}}}|
|{{{GLUT_KEY_F2}}}|
|{{{GLUT_KEY_F3}}}|
|{{{GLUT_KEY_F4}}}|
|{{{GLUT_KEY_F5}}}|
|{{{GLUT_KEY_F6}}}|
|{{{GLUT_KEY_F7}}}|
|{{{GLUT_KEY_F8}}}|
|{{{GLUT_KEY_F9}}}|
|{{{GLUT_KEY_HOME}}}|
|{{{GLUT_KEY_INSERT}}}|
|{{{GLUT_KEY_LEFT}}}|
|{{{GLUT_KEY_PAGE_DOWN}}}|
|{{{GLUT_KEY_PAGE_UP}}}|
|{{{GLUT_KEY_REPEAT_DEFAULT}}}|
|{{{GLUT_KEY_REPEAT_OFF}}}|
|{{{GLUT_KEY_REPEAT_ON}}}|
|{{{GLUT_KEY_RIGHT}}}|
|{{{GLUT_KEY_UP}}}|
|{{{GLUT_LAYER_IN_USE}}}|
|{{{GLUT_LEFT}}}|
|{{{GLUT_LEFT_BUTTON}}}|
|{{{GLUT_LUMINANCE}}}|
|{{{GLUT_MACOSX_IMPLEMENTATION}}}|
|{{{GLUT_MACOSX_IMPLEMENTATION}}}|
|{{{GLUT_MENU_IN_USE}}}|
|{{{GLUT_MENU_NOT_IN_USE}}}|
|{{{GLUT_MENU_NUM_ITEMS}}}|
|{{{GLUT_MIDDLE_BUTTON}}}|
|{{{GLUT_MULTISAMPLE}}}|
|{{{GLUT_NORMAL}}}|
|{{{GLUT_NORMAL_DAMAGED}}}|
|{{{GLUT_NOT_VISIBLE}}}|
|{{{GLUT_NO_RECOVERY}}}|
|{{{GLUT_NUM_BUTTON_BOX_BUTTONS}}}|
|{{{GLUT_NUM_DIALS}}}|
|{{{GLUT_NUM_MOUSE_BUTTONS}}}|
|{{{GLUT_NUM_SPACEBALL_BUTTONS}}}|
|{{{GLUT_NUM_TABLET_BUTTONS}}}|
|{{{GLUT_OVERLAY}}}|
|{{{GLUT_OVERLAY_DAMAGED}}}|
|{{{GLUT_OVERLAY_POSSIBLE}}}|
|{{{GLUT_OWNS_JOYSTICK}}}|
|{{{GLUT_PARTIALLY_RETAINED}}}|
|{{{GLUT_RED}}}|
|{{{GLUT_RGB}}}|
|{{{GLUT_RGBA}}}|
|{{{GLUT_RIGHT_BUTTON}}}|
|{{{GLUT_SCREEN_HEIGHT}}}|
|{{{GLUT_SCREEN_HEIGHT_MM}}}|
|{{{GLUT_SCREEN_WIDTH}}}|
|{{{GLUT_SCREEN_WIDTH_MM}}}|
|{{{GLUT_SINGLE}}}|
|{{{GLUT_STENCIL}}}|
|{{{GLUT_STEREO}}}|
|{{{GLUT_TRANSPARENT_INDEX}}}|
|{{{GLUT_UP}}}|
|{{{GLUT_VIDEO_RESIZE_HEIGHT}}}|
|{{{GLUT_VIDEO_RESIZE_HEIGHT_DELTA}}}|
|{{{GLUT_VIDEO_RESIZE_IN_USE}}}|
|{{{GLUT_VIDEO_RESIZE_POSSIBLE}}}|
|{{{GLUT_VIDEO_RESIZE_WIDTH}}}|
|{{{GLUT_VIDEO_RESIZE_WIDTH_DELTA}}}|
|{{{GLUT_VIDEO_RESIZE_X}}}|
|{{{GLUT_VIDEO_RESIZE_X_DELTA}}}|
|{{{GLUT_VIDEO_RESIZE_Y}}}|
|{{{GLUT_VIDEO_RESIZE_Y_DELTA}}}|
|{{{GLUT_VISIBLE}}}|
|{{{GLUT_WINDOW_ACCUM_ALPHA_SIZE}}}|
|{{{GLUT_WINDOW_ACCUM_BLUE_SIZE}}}|
|{{{GLUT_WINDOW_ACCUM_GREEN_SIZE}}}|
|{{{GLUT_WINDOW_ACCUM_RED_SIZE}}}|
|{{{GLUT_WINDOW_ALPHA_SIZE}}}|
|{{{GLUT_WINDOW_BLUE_SIZE}}}|
|{{{GLUT_WINDOW_BUFFER_SIZE}}}|
|{{{GLUT_WINDOW_COLORMAP_SIZE}}}|
|{{{GLUT_WINDOW_CURSOR}}}|
|{{{GLUT_WINDOW_DEPTH_SIZE}}}|
|{{{GLUT_WINDOW_DOUBLEBUFFER}}}|
|{{{GLUT_WINDOW_FORMAT_ID}}}|
|{{{GLUT_WINDOW_GREEN_SIZE}}}|
|{{{GLUT_WINDOW_HEIGHT}}}|
|{{{GLUT_WINDOW_NUM_CHILDREN}}}|
|{{{GLUT_WINDOW_NUM_SAMPLES}}}|
|{{{GLUT_WINDOW_PARENT}}}|
|{{{GLUT_WINDOW_RED_SIZE}}}|
|{{{GLUT_WINDOW_RGBA}}}|
|{{{GLUT_WINDOW_STENCIL_SIZE}}}|
|{{{GLUT_WINDOW_STEREO}}}|
|{{{GLUT_WINDOW_WIDTH}}}|
|{{{GLUT_WINDOW_X}}}|
|{{{GLUT_WINDOW_Y}}}|
|{{{GLUT_XLIB_IMPLEMENTATION}}}|
The {{{glut}}} module exports GLUT functionality to qore by using the [[GLUT|http://www.opengl.org/resources/libraries/glut/]] or [[freeglut|http://freeglut.sourceforge.net/]] libraries (depending on how Qore was compiled).

This module is released under the [[LGPL 2.1|http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html]] and is tagged as such in the module's header (meaning it can be loaded unconditionally regardless of how the Qore library was initialized).

Note that this documentation is based on [[TittldyWiki|http://www.tiddlywiki.com/]], a wiki entirely contained in a single web page.

This documentation is not yet complete; please see your GLUT or freeglut documentation for more information on the functionality provided by this module.

Note that most of the C++ code for this module was generated automatically by a Qore script that scanned the header files and generated the C++ module code based on the function prototypes (by generating the C++ bindings to create Qore functions) and the defines (by generating C++ code to create Qore constants).

This module requires the {{{opengl}}} module to load and to be usable from a Qore script/program.

This documentation does not describe the GLUT API at the moment, however the Qore GLUT API corresponds basically 1:1 to the C GLUT API with the exception of the functions to set callbacks: in Qore these take a call reference or a closure in the place of the C function pointer.  Additionally the API coverage should be 100%; meaning that all GLUT functions should be exported through Qore.

For example, to set the Idle function to a function called {{{Animate()}}}, call:

{{{
glutIdleFunc(\Animate());
}}}

See [[Callback Functions]] for a list of callback functions provided by this module.

See [[Functions]] for a list of the rest of the functions provided by this module.

See [[Glut Constants]] for a list of constants provided by this module.

See the source distribution in test/ for many concrete examples of how to use the {{{glut}}} module.
[[Introduction]]
[[Glut Constants]]
[[Callback Functions]]
[[Functions]]

Qore glut Module Documentation