Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
<!--{{{-->
<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]];}
#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]];}
#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 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 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:0em 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 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}
.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}
#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}
.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 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 0em;}
.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 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 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 0em 14em;}
.toolbar {text-align:right; font-size:.9em;}
.tiddler {padding:1em 1em 0em 1em;}
.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:0em 0.25em; padding:0em 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 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}
.fieldsetFix {border:0; padding:0; margin:1px 0px 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 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 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 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<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 closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></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 +saveTiddler -cancelTiddler deleteTiddler'></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'></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
http://hg.plopbyte.net/animtk
http:/animtk.plopbyte.net
! ~ProjectorVisitor
<<tiddler ProjectorVisitor>>
! ~EarthManipulator
<<tiddler EarthManipulator>>
! ~PatchLODDatabase
<<tiddler PatchLODDatabase>>
! ~ProjectShapeToGeometryLOD
<<tiddler ProjectShapeToGeometryLOD>>
! OSG ~SplashScreen
<<tiddler "OSG SplashScreen">>
! OSG ~BetSlider
<<tiddler "OSG BetSlider">>
! Easy3d
<<tiddler Easy3d>>
! ~Pok3D
<<tiddler Pok3d>>
! GLSL Glass effect
<<tiddler "GLSL Glass effect">>
! ODE Physic and Collision
<<tiddler "ODE Physic and Collision">>
! Intro ~Morph-SynRJ
<<tiddler "Intro Morph-SynRJ">>
! Demo ~Abstract-SynRJ
<<tiddler "Demo Abstract-SynRJ">>
/***
|''Name:''|CryptoFunctionsPlugin|
|''Description:''|Support for cryptographic functions|
***/
//{{{
if(!version.extensions.CryptoFunctionsPlugin) {
version.extensions.CryptoFunctionsPlugin = {installed:true};
//--
//-- Crypto functions and associated conversion routines
//--
// Crypto "namespace"
function Crypto() {}
// Convert a string to an array of big-endian 32-bit words
Crypto.strToBe32s = function(str)
{
var be = Array();
var len = Math.floor(str.length/4);
var i, j;
for(i=0, j=0; i<len; i++, j+=4) {
be[i] = ((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff);
}
while (j<str.length) {
be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32);
j++;
}
return be;
};
// Convert an array of big-endian 32-bit words to a string
Crypto.be32sToStr = function(be)
{
var str = "";
for(var i=0;i<be.length*32;i+=8)
str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff);
return str;
};
// Convert an array of big-endian 32-bit words to a hex string
Crypto.be32sToHex = function(be)
{
var hex = "0123456789ABCDEF";
var str = "";
for(var i=0;i<be.length*4;i++)
str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF);
return str;
};
// Return, in hex, the SHA-1 hash of a string
Crypto.hexSha1Str = function(str)
{
return Crypto.be32sToHex(Crypto.sha1Str(str));
};
// Return the SHA-1 hash of a string
Crypto.sha1Str = function(str)
{
return Crypto.sha1(Crypto.strToBe32s(str),str.length);
};
// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
Crypto.sha1 = function(x,blen)
{
// Add 32-bit integers, wrapping at 32 bits
add32 = function(a,b)
{
var lsw = (a&0xFFFF)+(b&0xFFFF);
var msw = (a>>16)+(b>>16)+(lsw>>16);
return (msw<<16)|(lsw&0xFFFF);
};
// Add five 32-bit integers, wrapping at 32 bits
add32x5 = function(a,b,c,d,e)
{
var lsw = (a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
var msw = (a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
return (msw<<16)|(lsw&0xFFFF);
};
// Bitwise rotate left a 32-bit integer by 1 bit
rol32 = function(n)
{
return (n>>>31)|(n<<1);
};
var len = blen*8;
// Append padding so length in bits is 448 mod 512
x[len>>5] |= 0x80 << (24-len%32);
// Append length
x[((len+64>>9)<<4)+15] = len;
var w = Array(80);
var k1 = 0x5A827999;
var k2 = 0x6ED9EBA1;
var k3 = 0x8F1BBCDC;
var k4 = 0xCA62C1D6;
var h0 = 0x67452301;
var h1 = 0xEFCDAB89;
var h2 = 0x98BADCFE;
var h3 = 0x10325476;
var h4 = 0xC3D2E1F0;
for(var i=0;i<x.length;i+=16) {
var j,t;
var a = h0;
var b = h1;
var c = h2;
var d = h3;
var e = h4;
for(j = 0;j<16;j++) {
w[j] = x[i+j];
t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
for(j=16;j<20;j++) {
w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
for(j=20;j<40;j++) {
w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k2);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
for(j=40;j<60;j++) {
w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
t = add32x5(e,(a>>>27)|(a<<5),(b&c)|(d&(b|c)),w[j],k3);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
for(j=60;j<80;j++) {
w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k4);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
h0 = add32(h0,a);
h1 = add32(h1,b);
h2 = add32(h2,c);
h3 = add32(h3,d);
h4 = add32(h4,e);
}
return Array(h0,h1,h2,h3,h4);
};
}
//}}}
{{ justified {
2003-08
This the demo that we have presented at the ASM (2003) competition made in 7 days, try it. You can find others prods of the same group [[here|http://www.synrj.org/demos.php]]
}}}
[img[news/news_2003_08_05_17_00_synRJ and ASM/abstract/abstract_assembly03_small_00.png][news/news_2003_08_05_17_00_synRJ and ASM/abstract/abstract_assembly03_00.png]]<<imagebox>> [img[news/news_2003_08_05_17_00_synRJ and ASM/abstract/abstract_assembly03_small_01.png][news/news_2003_08_05_17_00_synRJ and ASM/abstract/abstract_assembly03_01.png]]<<imagebox>> [img[news/news_2003_08_05_17_00_synRJ and ASM/abstract/abstract_assembly03_small_02.png][news/news_2003_08_05_17_00_synRJ and ASM/abstract/abstract_assembly03_02.png]]<<imagebox>> [img[news/news_2003_08_05_17_00_synRJ and ASM/abstract/abstract_assembly03_small_03.png][news/news_2003_08_05_17_00_synRJ and ASM/abstract/abstract_assembly03_03.png]]<<imagebox>> [img[news/news_2003_08_05_17_00_synRJ and ASM/abstract/abstract_assembly03_small_04.png][news/news_2003_08_05_17_00_synRJ and ASM/abstract/abstract_assembly03_04.png]]<<imagebox>>
You can find the demo [[here|http://www.synrj.org/files/prods/synrj.tsl-abstrakt.zip]]
/***
|''Name:''|DeprecatedFunctionsPlugin|
|''Description:''|Support for deprecated functions removed from core|
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};
//--
//-- Deprecated code
//--
// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};
// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
{
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var text = lookaheadMatch[1];
if(config.browser.isIE)
text = text.replace(/\n/g,"\r");
createTiddlyElement(w.output,"pre",null,null,text);
w.nextMatch = lookaheadRegExp.lastIndex;
}
};
// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
createTiddlyElement(place,"br");
};
// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
var i = this.indexOf(item);
return i == -1 ? null : i;
};
// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
return store.getLoader().internalizeTiddler(store,this,title,divRef);
};
// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
return store.getSaver().externalizeTiddler(store,this);
};
// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
return store.allTiddlersAsHtml();
}
// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
refreshPageTemplate(title);
}
// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
story.displayTiddlers(srcElement,titles,template,animate);
}
// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
story.displayTiddler(srcElement,title,template,animate);
}
// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;
// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");
}
//}}}
{{ justified {
2007-11
It just a simple osgGA::Manipulator used for display planet with a tilt, heading, and trackball behaviour, like the standard ~OpenSceneGraph trackball manipulator. You can browse the code [[here|http://hg.plopbyte.net/EarthManipulator/]]
}}}
{{justified {
2007-08
Easy3d is a 3d front end for application on [[EasyGate|http://www.easyneuf.org]] plateform, for users who are not familiar with computer. The application is designed to runs on a Intel chip 855 with a Celeron 600. It uses [[OpenSceneGraph|http://www.openscenegraph.org]] , [[AnimTK|https://gna.org/projects/animtk]] and [[libxmxl2|http://xmlsoft.org]]. We use ~OpenSceneGraph without osgUtils so this application is also an example for developpers who wants to see how to fully control the rendering with osg without the osgUtils. Here an [[installer|news/news_2007_06_03_20_00_Easy3d/easy3d-devel-windows-installer.exe]] for windows to test application. And here the video
}}}
[img[news/news_2007_06_03_20_00_Easy3d/easy3d_small.png][news/news_2007_06_03_20_00_Easy3d/easy3d.avi]]
{{ justified {
2005-11
Here a try to make a glass shader on a sphere you can see the code [[here|http://hg.plopbyte.net/demo-fw/file/cb034f540887/demo.01/]]. And there is a small video below.
[img[news/news_2005_11_12_14_00_Playing with OpenGL(GLSL)/glass_shader/glass_shader.jpg][news/news_2005_11_12_14_00_Playing with OpenGL(GLSL)/glass_shader/glass_shader2.avi]] [img[news/news_2005_11_12_14_00_Playing with OpenGL(GLSL)/glass_shader/glass_shader.jpg][news/news_2005_11_12_14_00_Playing with OpenGL(GLSL)/glass_shader/glass_shader1.mpeg]]
}}}
{{ justified {
2004-01
Hi guys, this is a good news for syn[rj] and me. We won the second prize at the st(art) 2004 with our intro 64k called morph. Here some screens. This production was made in 2 weeks and half so the quality reflect the time to develop it. You can get the source code [[here|http://hg.plopbyte.net/Morph-SynRJ/file/22de913c2d84]] and the release version [[here|http://www.synrj.org/files/prods/synrj-morph.zip]]. You can find others productions of syn[rj] [[here|http://www.synrj.org/demos.php]].
[img[news/news_2004_01_27_12_00_synRJ 2nd at st(ART)/morph/morph_start02_small_02.png][news/news_2004_01_27_12_00_synRJ 2nd at st(ART)/morph/morph_start02_02.png]]<<imagebox>> [img[news/news_2004_01_27_12_00_synRJ 2nd at st(ART)/morph/morph_start02_small_01.png][news/news_2004_01_27_12_00_synRJ 2nd at st(ART)/morph/morph_start02_01.png]]<<imagebox>> [img[news/news_2004_01_27_12_00_synRJ 2nd at st(ART)/morph/morph_start02_small_03.png][news/news_2004_01_27_12_00_synRJ 2nd at st(ART)/morph/morph_start02_03.png]]<<imagebox>> [img[news/news_2004_01_27_12_00_synRJ 2nd at st(ART)/morph/morph_start02_small_04.png][news/news_2004_01_27_12_00_synRJ 2nd at st(ART)/morph/morph_start02_04.png]]<<imagebox>> [img[news/news_2004_01_27_12_00_synRJ 2nd at st(ART)/morph/morph_start02_small_05.png][news/news_2004_01_27_12_00_synRJ 2nd at st(ART)/morph/morph_start02_05.png]]<<imagebox>>
}}}
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.2|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
***/
//{{{
// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin) {
version.extensions.LegacyStrikeThroughPlugin = {installed:true};
config.formatters.push(
{
name: "legacyStrikeByChar",
match: "==",
termRegExp: /(==)/mg,
element: "strike",
handler: config.formatterHelpers.createElementAndWikify
});
} //# end of "install only once"
//}}}
! [[PortFolio]]
! [[Articles]]
[[ProjectorVisitor]]
[[EarthManipulator]]
[[PatchLODDatabase]]
[[ProjectShapeToGeometryLOD]]
[[OSG SplashScreen]]
[[OSG BetSlider]]
[[Easy3d]]
[[Vserver on dedibox]]
[[Pok3d]]
[[GLSL Glass effect]]
[[ODE Physic and Collision]]
[[Intro Morph-SynRJ]]
[[Demo Abstract-SynRJ]]
! [[Profile & Contact]]
! [[Projects]]
[[AnimTK]]
[[WiiMelon]]
! [[Links]]
[[gentoo-packages]]
<html>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-3126078-1";
urchinTracker();
</script>
</html>
<<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
Last Updated:
Copyright ©
{{ justified {
2005-05
Here some try about [[ode|http://www.ode.org/]], you can check the code [[here|http://hg.plopbyte.net/demo-fw/file/cb034f540887/demo.02/]]. You can find video about these tests below
[img[news/news_2005_05_02_16_20_Playing with ODE/ode_try/rope.jpg][news/news_2005_05_02_16_20_Playing with ODE/ode_try/rope.mpeg]] [img[news/news_2005_05_02_16_20_Playing with ODE/ode_try/tower.jpg][news/news_2005_05_02_16_20_Playing with ODE/ode_try/tower.mpeg]]
}}}
2007-09
It's an [[OpenSceneGraph|http://www.openscenegraph.org]] GUI ~NodeKit to display ~BetValue in [[Pok3D|http://www.pok3d.com]]. It works in vertical and horizontal. There are coverage, unittest, and valgrind check in the [[mercurial repository|http://hg.plopbyte.net/betslider/]]. There is example with all cases in the mercurial.
[img[news/news_2007_09_05_10_00_OSG BetSlider NodeKit/small_Screenshot_0.png][news/news_2007_09_05_10_00_OSG BetSlider NodeKit/Screenshot_0.png]]<<imagebox>> [img[news/news_2007_09_05_10_00_OSG BetSlider NodeKit/small_Screenshot_2.png][news/news_2007_09_05_10_00_OSG BetSlider NodeKit/Screenshot_2.png]]<<imagebox>>
{{ justified {
2007-09
It's a small [[OpenSceneGraph|http://www.openscenegraph.org]] nodekit to display splashscreen, with a progress bar that display the loading state. The [[mercurial repository|http://hg.plopbyte.net/splashscreen/]] contains the nodekit with unittest, coverage and valgrind check.
}}}
[img[news/news_2007_09_18_10_00_OSG SplashScreen NodeKit/small_Screenshot_1.png][news/news_2007_09_18_10_00_OSG SplashScreen NodeKit/Screenshot_1.png]]<<imagebox>> [img[news/news_2007_09_18_10_00_OSG SplashScreen NodeKit/small_Screenshot_4.png][news/news_2007_09_18_10_00_OSG SplashScreen NodeKit/Screenshot_4.png]]<<imagebox>> [img[news/news_2007_09_18_10_00_OSG SplashScreen NodeKit/small_Screenshot_5.png][news/news_2007_09_18_10_00_OSG SplashScreen NodeKit/Screenshot_5.png]]<<imagebox>> [img[news/news_2007_09_18_10_00_OSG SplashScreen NodeKit/small_Screenshot_10.png][news/news_2007_09_18_10_00_OSG SplashScreen NodeKit/Screenshot_10.png]]<<imagebox>> [img[news/news_2007_09_18_10_00_OSG SplashScreen NodeKit/small_Screenshot_12.png][news/news_2007_09_18_10_00_OSG SplashScreen NodeKit/Screenshot_12.png]]<<imagebox>>
<!--{{{-->
<div id='header' class='header'>
<div class='headerShadow'>
<span class='searchBar' macro='search'></span>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu'>
<span refresh='content' tiddler='MainMenu'></span>
<span id='noticeBoard' refresh='content' tiddler='NoticeBoard'></span>
</div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='MochaSideBarOptions'></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 id='contentFooter' refresh='content' tiddler='contentFooter'></div>
<!--}}}-->
{{ justified {
2007-11
This tool was made to add a patch details (high resolution) to an existing database (ive) without rebuilding everything. The algorithme is very simple, it builds with osgdem the part of patch you want, using very low res data for the rest of world, when the build is finished you have to report the patch coordinate tile in the osgDB::DatabasePager (a modified version) with the directory where to get those new data. Then in real time the osgDB::DatabasePager will make the hook based from filename request by a osg::PagedLOD (the name contains the tile coordinate), if the coordinates are inside the 'box' of the patch we built we will use data from the new directory. With this process you can make a low res Earth, and after build details part as you want, it can be used to run multi-process of osgdem for differents details zone on a multi core processor. In the screenshot, i use a very low res earth and a higher res for the france, the france was pre processed on another machine. I configured the DataPager patched to get it.
}}}
[img[news/news_2007_11_PatchLODDatabase/small_Screenshot-8.png][news/news_2007_11_PatchLODDatabase/Screenshot-8.png]]<<imagebox>> [img[news/news_2007_11_PatchLODDatabase/small_Screenshot-9.png][news/news_2007_11_PatchLODDatabase/Screenshot-9.png]]<<imagebox>> [img[news/news_2007_11_PatchLODDatabase/small_Screenshot-10.png][news/news_2007_11_PatchLODDatabase/Screenshot-10.png]]<<imagebox>> [img[news/news_2007_11_PatchLODDatabase/small_Screenshot-11.png][news/news_2007_11_PatchLODDatabase/Screenshot-11.png]]<<imagebox>>
config.macros.listTags = { text: "Hello" };
config.macros.listTags.handler = function(place,macroName,params)
{
var tagged = store.getTaggedTiddlers(params[0]);
var ul = createTiddlyElement(place,"ul",null,null,"");
for(var r=0;r<tagged.length;r++)
{
var li = createTiddlyElement(ul,"li",null,null,"");
createTiddlyLink(li,tagged[r].title,true);
}
}
2007-02
You can see video of [[Pok3d|http://www.pok3d.com/]] my last project
[img[news/news_2007_01_12_13_00_Pok3D/video_outfit.jpg][news/news_2007_01_12_13_00_Pok3D/video_outfit.mpeg]] [img[news/news_2007_01_12_13_00_Pok3D/video_outfit2.jpg][news/news_2007_01_12_13_00_Pok3D/video_outfit2.mpeg]] [img[news/news_2007_01_12_13_00_Pok3D/ingame.jpg][news/news_2007_01_12_13_00_Pok3D/ingame.mpeg]]
{{ borderless {
|Click on [[Articles]] to see everything in one page | |
| | |
| [img[portfolio01|portfolio/portfolio_06.jpg][infos/pok3d/32.jpg]]<<imagebox>> | [img[portfolio02|portfolio/portfolio_07.jpg][infos/pok3d/44.jpg]]<<imagebox>> |
| [[www.pok3d.com|http://www.pok3d.com]] | [[www.pok3d.com|http://www.pok3d.com]] |
| [img[portfolio03|portfolio/portfolio_03.jpg][infos/easy3d/easy3d_0.png]]<<imagebox>> | [img[portfolio04|portfolio/portfolio_04.jpg][news/news_2007_11_16_10_00_Project%20shape%20to%20geometry/Screenshot-1.png]]<<imagebox>> |
| [[Source Code|http://hg.plopbyte.net/easy3d/file/f1099c73f84c/easy3d]] | [[Source Code|http://hg.plopbyte.net/ProjectShapeToGeometryLOD/file/a9ca49700b5e/]] |
}}}
Most of my time are spent working with OpenSceneGraph on free software project. My reference and [[CV|infos/cv_08_02.pdf]]
mailto:mornifle@plopbyte.net
! 2007-05 to 2007-07 - Developper for Neuf Cegetel
!! Easy3d
[img[infos/easy3d/small_easy3d_3.png][infos/easy3d/easy3d_3.png]]<<imagebox>> [img[infos/easy3d/small_easy3d_2.png][infos/easy3d/easy3d_2.png]]<<imagebox>> [img[infos/easy3d/small_easy3d_1.png][infos/easy3d/easy3d_1.png]]<<imagebox>> [img[infos/easy3d/small_easy3d_0.png][infos/easy3d/easy3d_0.png]]<<imagebox>>
! 2004-02 to 2007-03 - Developper at Mekensleep
!! Pok3d
[img[infos/pok3d/small_9.jpg][infos/pok3d/9.jpg]]<<imagebox>> [img[infos/pok3d/small_8.jpg][infos/pok3d/8.jpg]]<<imagebox>> [img[infos/pok3d/small_7.jpg][infos/pok3d/7.jpg]]<<imagebox>> [img[infos/pok3d/small_6.jpg][infos/pok3d/6.jpg]]<<imagebox>> [img[infos/pok3d/small_5.jpg][infos/pok3d/5.jpg]]<<imagebox>> [img[infos/pok3d/small_49.jpg][infos/pok3d/49.jpg]]<<imagebox>> [img[infos/pok3d/small_48.jpg][infos/pok3d/48.jpg]]<<imagebox>> [img[infos/pok3d/small_47.jpg][infos/pok3d/47.jpg]]<<imagebox>> [img[infos/pok3d/small_46.jpg][infos/pok3d/46.jpg]]<<imagebox>> [img[infos/pok3d/small_45.jpg][infos/pok3d/45.jpg]]<<imagebox>> [img[infos/pok3d/small_44.jpg][infos/pok3d/44.jpg]]<<imagebox>> [img[infos/pok3d/small_43.jpg][infos/pok3d/43.jpg]]<<imagebox>> [img[infos/pok3d/small_42.jpg][infos/pok3d/42.jpg]]<<imagebox>> [img[infos/pok3d/small_41.jpg][infos/pok3d/41.jpg]]<<imagebox>> [img[infos/pok3d/small_40.jpg][infos/pok3d/40.jpg]]<<imagebox>> [img[infos/pok3d/small_4.jpg][infos/pok3d/4.jpg]]<<imagebox>> [img[infos/pok3d/small_39.jpg][infos/pok3d/39.jpg]]<<imagebox>> [img[infos/pok3d/small_38.jpg][infos/pok3d/38.jpg]]<<imagebox>> [img[infos/pok3d/small_37.jpg][infos/pok3d/37.jpg]]<<imagebox>> [img[infos/pok3d/small_36.jpg][infos/pok3d/36.jpg]]<<imagebox>> [img[infos/pok3d/small_35.jpg][infos/pok3d/35.jpg]]<<imagebox>> [img[infos/pok3d/small_34.jpg][infos/pok3d/34.jpg]]<<imagebox>> [img[infos/pok3d/small_33.jpg][infos/pok3d/33.jpg]]<<imagebox>> [img[infos/pok3d/small_32.jpg][infos/pok3d/32.jpg]]<<imagebox>> [img[infos/pok3d/small_31.jpg][infos/pok3d/31.jpg]]<<imagebox>> [img[infos/pok3d/small_30.jpg][infos/pok3d/30.jpg]]<<imagebox>> [img[infos/pok3d/small_3.jpg][infos/pok3d/3.jpg]]<<imagebox>> [img[infos/pok3d/small_29.jpg][infos/pok3d/29.jpg]]<<imagebox>> [img[infos/pok3d/small_28.jpg][infos/pok3d/28.jpg]]<<imagebox>> [img[infos/pok3d/small_27.jpg][infos/pok3d/27.jpg]]<<imagebox>> [img[infos/pok3d/small_26.jpg][infos/pok3d/26.jpg]]<<imagebox>> [img[infos/pok3d/small_25.jpg][infos/pok3d/25.jpg]]<<imagebox>> [img[infos/pok3d/small_24.jpg][infos/pok3d/24.jpg]]<<imagebox>> [img[infos/pok3d/small_23.jpg][infos/pok3d/23.jpg]]<<imagebox>> [img[infos/pok3d/small_22.jpg][infos/pok3d/22.jpg]]<<imagebox>> [img[infos/pok3d/small_21.jpg][infos/pok3d/21.jpg]]<<imagebox>> [img[infos/pok3d/small_20.jpg][infos/pok3d/20.jpg]]<<imagebox>> [img[infos/pok3d/small_2.jpg][infos/pok3d/2.jpg]]<<imagebox>> [img[infos/pok3d/small_19.jpg][infos/pok3d/19.jpg]]<<imagebox>> [img[infos/pok3d/small_18.jpg][infos/pok3d/18.jpg]]<<imagebox>> [img[infos/pok3d/small_17.jpg][infos/pok3d/17.jpg]]<<imagebox>> [img[infos/pok3d/small_16.jpg][infos/pok3d/16.jpg]]<<imagebox>> [img[infos/pok3d/small_15.jpg][infos/pok3d/15.jpg]]<<imagebox>> [img[infos/pok3d/small_14.jpg][infos/pok3d/14.jpg]]<<imagebox>> [img[infos/pok3d/small_13.jpg][infos/pok3d/13.jpg]]<<imagebox>> [img[infos/pok3d/small_1.jpg][infos/pok3d/1.jpg]]<<imagebox>>
! 2000-11 to 2003-01- Developper at Nemosoft
!! Cars'n'Girls
[img[infos/carsngirls/small_carsngirls_9.jpg][infos/carsngirls/carsngirls_9.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_8.jpg][infos/carsngirls/carsngirls_8.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_7.jpg][infos/carsngirls/carsngirls_7.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_6.jpg][infos/carsngirls/carsngirls_6.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_5.jpg][infos/carsngirls/carsngirls_5.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_4.jpg][infos/carsngirls/carsngirls_4.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_3.jpg][infos/carsngirls/carsngirls_3.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_22.jpg][infos/carsngirls/carsngirls_22.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_21.jpg][infos/carsngirls/carsngirls_21.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_20.jpg][infos/carsngirls/carsngirls_20.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_2.jpg][infos/carsngirls/carsngirls_2.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_19.jpg][infos/carsngirls/carsngirls_19.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_18.jpg][infos/carsngirls/carsngirls_18.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_17.jpg][infos/carsngirls/carsngirls_17.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_16.jpg][infos/carsngirls/carsngirls_16.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_15.jpg][infos/carsngirls/carsngirls_15.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_14.jpg][infos/carsngirls/carsngirls_14.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_13.jpg][infos/carsngirls/carsngirls_13.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_12.jpg][infos/carsngirls/carsngirls_12.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_11.jpg][infos/carsngirls/carsngirls_11.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_10.jpg][infos/carsngirls/carsngirls_10.jpg]]<<imagebox>> [img[infos/carsngirls/small_carsngirls_1.jpg][infos/carsngirls/carsngirls_1.jpg]]<<imagebox>>
!! ~SharpShooter
[img[infos/sharpshooter/small_sharpshooter_5.jpg][infos/sharpshooter/sharpshooter_5.jpg]]<<imagebox>> [img[infos/sharpshooter/small_sharpshooter_4.jpg][infos/sharpshooter/sharpshooter_4.jpg]]<<imagebox>> [img[infos/sharpshooter/small_sharpshooter_3.jpg][infos/sharpshooter/sharpshooter_3.jpg]]<<imagebox>> [img[infos/sharpshooter/small_sharpshooter_2.jpg][infos/sharpshooter/sharpshooter_2.jpg]]<<imagebox>> [img[infos/sharpshooter/small_sharpshooter_1.jpg][infos/sharpshooter/sharpshooter_1.jpg]]<<imagebox>>
!! Taxi 3
[img[infos/taxi3/small_taxi3_4.jpg][infos/taxi3/taxi3_4.jpg]]<<imagebox>> [img[infos/taxi3/small_taxi3_3.jpg][infos/taxi3/taxi3_3.jpg]]<<imagebox>> [img[infos/taxi3/small_taxi3_2.jpg][infos/taxi3/taxi3_2.jpg]]<<imagebox>> [img[infos/taxi3/small_taxi3_1.jpg][infos/taxi3/taxi3_1.jpg]]<<imagebox>>
!! Trackdown
[img[infos/trackdown/small_trackdown_9.jpg][infos/trackdown/trackdown_9.jpg]]<<imagebox>> [img[infos/trackdown/small_trackdown_8.jpg][infos/trackdown/trackdown_8.jpg]]<<imagebox>> [img[infos/trackdown/small_trackdown_7.jpg][infos/trackdown/trackdown_7.jpg]]<<imagebox>> [img[infos/trackdown/small_trackdown_6.jpg][infos/trackdown/trackdown_6.jpg]]<<imagebox>> [img[infos/trackdown/small_trackdown_5.jpg][infos/trackdown/trackdown_5.jpg]]<<imagebox>> [img[infos/trackdown/small_trackdown_4.jpg][infos/trackdown/trackdown_4.jpg]]<<imagebox>> [img[infos/trackdown/small_trackdown_3.jpg][infos/trackdown/trackdown_3.jpg]]<<imagebox>> [img[infos/trackdown/small_trackdown_2.jpg][infos/trackdown/trackdown_2.jpg]]<<imagebox>> [img[infos/trackdown/small_trackdown_11.jpg][infos/trackdown/trackdown_11.jpg]]<<imagebox>> [img[infos/trackdown/small_trackdown_10.jpg][infos/trackdown/trackdown_10.jpg]]<<imagebox>> [img[infos/trackdown/small_trackdown_1.jpg][infos/trackdown/trackdown_1.jpg]]<<imagebox>>
{{ justified {
2007-11
~ProjectShapeToGeometryLOD is a program to project a geometry on another as preprocess pass, and write as result projected shape. It's used in a simulation project when you have a big database of geometry (the Earth) and you want to add frontiere on it. If we dont project this shape on the geometry, the shape is under the Earth or in the sky (when you navigate the world). As you can see there is some Z issue because the level of detail used to project the shape is not the same ( in real time it change with the distance), but it's enough near to use a polygon offset. The other way could be to have a shape projected for each LOD of Earth, it would be perfect but need more data and pre processing time.
}}}
[img[news/news_2007_11_16_10_00_Project shape to geometry/small_Screenshot-0.png][news/news_2007_11_16_10_00_Project shape to geometry/Screenshot-0.png]]<<imagebox>> [img[news/news_2007_11_16_10_00_Project shape to geometry/small_Screenshot-1.png][news/news_2007_11_16_10_00_Project shape to geometry/Screenshot-1.png]]<<imagebox>> [img[news/news_2007_11_16_10_00_Project shape to geometry/small_Screenshot-2.png][news/news_2007_11_16_10_00_Project shape to geometry/Screenshot-2.png]]<<imagebox>> [img[news/news_2007_11_16_10_00_Project shape to geometry/small_Screenshot-3.png][news/news_2007_11_16_10_00_Project shape to geometry/Screenshot-3.png]]<<imagebox>>
{{ justified {
2008-01
The last month i wrote an application to display tiff georeferenced where you can project misc other object, like polygons, lines, points. The idea is to find which squares of the heightfiled touched by the object you want to project (for lines and triangles).
* For triangles i find the contours, then i use the osgUtil::Tesselator and use the mode equal 2 it's like a And between 2 polygons. Then for the center of the triangle not touch by the contours i generate a quads from the heightfield directly. An improvement should be to replace the osgUtil::Tesselator by an efficient specialized clipper triangle/square
* For lines it's easy i just need to intersect each grid boundary with the line then i sort the result and project each interesection points to the corresponding triangle from the good square.
* For points i just select to good square and the good triangle and i project on that triangle
}}}
[img[news/news_2008_01_ProjectorVisitor/small_Screenshot-0.png][news/news_2008_01_ProjectorVisitor/Screenshot-0.png]]<<imagebox>> [img[news/news_2008_01_ProjectorVisitor/small_Screenshot-2.png][news/news_2008_01_ProjectorVisitor/Screenshot-2.png]]<<imagebox>> [img[news/news_2008_01_ProjectorVisitor/small_Screenshot-4.png][news/news_2008_01_ProjectorVisitor/Screenshot-4.png]]<<imagebox>> [img[news/news_2008_01_ProjectorVisitor/small_Screenshot-6.png][news/news_2008_01_ProjectorVisitor/Screenshot-6.png]]<<imagebox>>
You can browse the code [[here|http://hg.plopbyte.net/ProjectorVisitor/]]
My main current projects in spare time are WiiMelon and AnimTK. For older projects you can browse my [[mercurial repository|http://hg.plopbyte.net/]]
! ~AnimTK
<<tiddler AnimTK>>
! ~WiiMelon
<<tiddler WiiMelon>>
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Version|2.5.2|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.displayTiddler(), Story.prototype.displayTiddlers()|
|Description|Display tiddlers one at a time with automatic update of URL (permalink). Also, options to always open tiddlers at top/bottom of page|
Normally, as you click on the links in TiddlyWiki, more and more tiddlers are displayed on the page. The order of this tiddler display depends upon when and where you have clicked. Some people like this non-linear method of reading the document, while others have reported that when many tiddlers have been opened, it can get somewhat confusing. SinglePageModePlugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one item displayed at a time.
!!!!!Usage
<<<
When the plugin is enabled, only one tiddler will be displayed at a time and the browser window's titlebar is updated to include the current tiddler title. The browser's location URL is also updated with a 'permalink' for the current tiddler so that it is easier to create a browser 'bookmark' for the current tiddler. Alternatively, even when displaying multiple tiddlers //is// permitted, you can still reduce the potential for confusion by forcing tiddlers to always open at the top (or bottom) of the page instead of being displayed following the tiddler containing the link that was clicked.
<<<
!!!!!Configuration
<<<
When installed, this plugin automatically adds checkboxes in the AdvancedOptions tiddler so you can enable/disable the plugin behavior. For convenience, these checkboxes are also included here:
<<option chkSinglePageMode>> Display one tiddler at a time
<<option chkSinglePagePermalink>> Automatically permalink current tiddler
<<option chkTopOfPageMode>> Always open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Always open tiddlers at the bottom of the page
//Note: if both 'top' and 'bottom' settings are selected, "top of page" will be used. Also, in Apple's Safari browser, automatically setting the permalink causes an error and is disabled.//
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''SinglePageModePlugin'' (tagged with <<tag systemConfig>>)
When installed, this plugin automatically adds checkboxes in the ''shadow'' AdvancedOptions tiddler so you can enable/disable this behavior. However, if you have customized your AdvancedOptions, you may need to ''manually add these checkboxes to your customized tiddler.''
<<<
!!!!!Revision History
<<<
2007.10.26 [2.5.2] documentation cleanup
| Please see [[SinglePageModePluginHistory]] for previous revision details |
2005.08.15 [1.0.0] Initial Release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].
Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageMode= {major: 2, minor: 5, revision: 2, date: new Date(2007,10,26)};
if (config.options.chkSinglePageMode==undefined) config.options.chkSinglePageMode=true;
if (config.options.chkSinglePagePermalink==undefined) config.options.chkSinglePagePermalink=true;
if (config.options.chkTopOfPageMode==undefined) config.options.chkTopOfPageMode=true;
if (config.options.chkBottomOfPageMode==undefined) config.options.chkBottomOfPageMode=false;
if (config.optionsDesc) {
config.optionsDesc.chkSinglePageMode="Display one tiddler at a time";
config.optionsDesc.chkSinglePagePermalink="Automatically permalink current tiddler";
config.optionsDesc.chkTopOfPageMode="Always open tiddlers at the top of the page";
config.optionsDesc.chkBottomOfPageMode="Always open tiddlers at the bottom of the page";
} else {
config.shadowTiddlers.AdvancedOptions += "\
\n<<option chkSinglePageMode>> Display one tiddler at a time \
\n<<option chkSinglePagePermalink>> Automatically permalink current tiddler \
\n<<option chkTopOfPageMode>> Always open tiddlers at the top of the page \
\n<<option chkBottomOfPageMode>> Always open tiddlers at the bottom of the page";
}
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
if (!config.options.chkSinglePageMode)
{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
if (config.lastURL == window.location.hash)
return;
var tiddlerName = convertUTF8ToUnicode(decodeURI(window.location.hash.substr(1)));
tiddlerName=tiddlerName.replace(/\[\[/,"").replace(/\]\]/,""); // strip any [[ ]] bracketing
if (tiddlerName.length) story.displayTiddler(null,tiddlerName,1,null,null);
}
if (Story.prototype.SPM_coreDisplayTiddler==undefined) Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)
{
if (config.options.chkSinglePageMode)
story.closeAllTiddlers();
else if (config.options.chkTopOfPageMode)
arguments[0]=null;
else if (config.options.chkBottomOfPageMode)
arguments[0]="bottom";
if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
window.location.hash = encodeURIComponent(convertUnicodeToUTF8(String.encodeTiddlyLink(title)));
config.lastURL = window.location.hash;
document.title = wikifyPlain("SiteTitle") + " - " + title;
if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
}
this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
var tiddlerElem=document.getElementById(story.idPrefix+title);
if (tiddlerElem) {
var yPos=ensureVisible(tiddlerElem); // scroll to top of tiddler
if (config.options.chkSinglePageMode||config.options.chkTopOfPageMode)
yPos=0; // scroll to top of page instead of top of tiddler
if (config.options.chkAnimate) // defer scroll until 200ms after animation completes
setTimeout("window.scrollTo(0,"+yPos+")",config.animDuration+200);
else
window.scrollTo(0,yPos); // scroll immediately
}
}
if (Story.prototype.SPM_coreDisplayTiddlers==undefined) Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function(srcElement,titles,template,unused1,unused2,animate,slowly)
{
// suspend single-page mode (and/or top/bottom display options) when showing multiple tiddlers
var saveSPM=config.options.chkSinglePageMode; config.options.chkSinglePageMode=false;
var saveTPM=config.options.chkTopOfPageMode; config.options.chkTopOfPageMode=false;
var saveBPM=config.options.chkBottomOfPageMode; config.options.chkBottomOfPageMode=false;
this.SPM_coreDisplayTiddlers.apply(this,arguments);
config.options.chkBottomOfPageMode=saveBPM;
config.options.chkTopOfPageMode=saveTPM;
config.options.chkSinglePageMode=saveSPM;
}
//}}}
/***
|''Name:''|SparklinePlugin|
|''Description:''|Sparklines macro|
***/
//{{{
if(!version.extensions.SparklinePlugin) {
version.extensions.SparklinePlugin = {installed:true};
//--
//-- Sparklines
//--
config.macros.sparkline = {};
config.macros.sparkline.handler = function(place,macroName,params)
{
var data = [];
var min = 0;
var max = 0;
var v;
for(var t=0; t<params.length; t++) {
v = parseInt(params[t]);
if(v < min)
min = v;
if(v > max)
max = v;
data.push(v);
}
if(data.length < 1)
return;
var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160));
box.title = data.join(",");
var w = box.offsetWidth;
var h = box.offsetHeight;
box.style.paddingRight = (data.length * 2 - w) + "px";
box.style.position = "relative";
for(var d=0; d<data.length; d++) {
var tick = document.createElement("img");
tick.border = 0;
tick.className = "sparktick";
tick.style.position = "absolute";
tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";
tick.style.left = d*2 + "px";
tick.style.width = "2px";
v = Math.floor(((data[d] - min)/(max-min)) * h);
tick.style.top = (h-v) + "px";
tick.style.height = v + "px";
box.appendChild(tick);
}
};
}
//}}}
/*{{{*/
/*Mocha TiddlyWiki Theme*/
/*Version 1.0*/
/*Design and CSS originally by Anthonyy, ported to TiddlyWiki by Saq Imtiaz.*/
/*}}}*/
/*{{{*/
#contentWrapper{
margin: 0 3.4em;
font-family: Lucida Grande, Tahoma, Arial, Helvetica, sans-serif; /* Lucida Grande for the Macs, Tahoma for the PCs */
font-size: 11px;
line-height: 1.6em;
color: #666;
}
.header {
background: #fff;
padding-top: 10px;
clear: both;
border-bottom: 2px solid #948979;
}
.headerShadow { padding: 2.6em 0em 0.5em 0em; }
.siteTitle {
font-family: 'Trebuchet MS' sans-serif;
font-weight: bold;
font-size: 40px;
color: #CC6633;
margin-bottom: 30px;
background-color: #FFF;
}
.siteTitle a{color:#CC6633; border-bottom:1px dotted #cc6633;}
.siteSubtitle {
font-size: 1.0em;
display: block;
margin: .5em 3em; color: #999999;
}
#mainMenu {
position:relative;
float:left;
margin-bottom:1em;
display:inline;
text-align:left;
padding: 2em 0.5em 0.5em 0em;
width:13em;
font-size:1em;
}
#sidebar{
position:relative;
float:right;
margin-bottom:1em;
padding-top:2em;
display:inline;
}
#displayArea {
margin: 0em 17em 0em 15em;
}
.tagClear {clear:none;}
#contentFooter {background:#575352; color:#BFB6B3; clear: both; padding: 0.5em 1em;}
#contentFooter a {
color: #BFB6B3;
border-bottom: 1px dotted #BFB6B3;
}
#contentFooter a:hover {
color: #FFFFFF;
background-color:#575352;
}
a,#sidebarOptions .sliderPanel a{
color:#CC6714;
text-decoration: none;
}
a:hover,#sidebarOptions .sliderPanel a:hover {
color:#CC6714;
background-color: #F5F5F5;
}
.viewer .button, .editorFooter .button{
color: #666;
border: 1px solid #CC6714;
}
.viewer .button:hover,
.editorFooter .button:hover{
color: #fff;
background: #CC6714;
border-color: #CC6714;
}
.viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{color:#fff; background:#575352;border-color:#575352;}
#mainMenu a {
display: block;
padding: 5px;
// border-bottom: 1px solid #CCC;
}
#mainMenu a:link, #navlist a:visited {
color:#CC6714;
text-decoration: none;
}
#mainMenu a:hover {
background: #000000 url(arrow.gif) 96% 50% no-repeat;
background-color: #F5F5F5;
color:#CC6714;
}
#mainMenu a:hover, #mainMenu a:active, #mainMenu .highlight, #mainMenu .marked {
background: #000000 url(arrow.gif) 96% 50% no-repeat;
background-color: #F5F5F5;
color:#CC6714;
}
#mainMenu span {position:relative;}
#mainMenu br {display:none;}
#sidebarOptions a {
color:#999;
text-decoration: none;
}
#sidebarOptions a:hover {
color:#4F4B45;
background-color: #F5F5F5;border:1px solid #fff;
}
#sidebarOptions {line-height:1.4em;}
.tiddler {
padding-bottom: 40px;
border-bottom: 1px solid #DDDDDD;
}
.title {color:#CC6633;}
.subtitle, .subtitle a { color: #999999; font-size: 1.0em;margin:0.2em;}
.shadow .title{color:#948979;}
.selected .toolbar a {color:#999999;}
.selected .toolbar a:hover {color:#4F4B45; background:transparent;border:1px solid #fff;}
.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#4F4B45; background:transparent;border:1px solid #fff;}
.listLink,#sidebarTabs .tabContents {line-height:1.5em;}
.listTitle {color:#888;}
#sidebarTabs .tabContents {background:#fff;}
#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#999;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#4F4B45;background:#fff}
#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#4F4B45;background:#fff}
.tabSelected{color:#fff; background:#948979;}
.tabUnselected {
background: #ccc;
}
.tabSelected, .tabSelected:hover {
color: #fff;
background: #948979;
border: solid 1px #948979;
padding-bottom:1px;
}
.tabUnselected {
color: #999;
background: #eee;
border: solid 1px #ccc;
padding-bottom:1px;
}
.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody { border:0 !important; margin:0 !important; padding:2px !important; td.vertical-align:top !important;margin-left: auto !important; margin-right: auto !important;}
.justified { text-align: justify ;}
#sidebarTabs .tabUnselected { border-bottom: none;padding-bottom:3px;}
#sidebarTabs .tabSelected{padding-bottom:3px;}
#sidebarTabs .tabUnselected:hover { border-bottom: none;padding-bottom:3px;color:#4F4B45}
#sidebarOptions .sliderPanel {
background: #fff; border:none;
font-size: .9em;
}
#sidebarOptions .sliderPanel a {font-weight:normal;}
#sidebarOptions .sliderPanel input {border:1px solid #999;}
.viewer blockquote {
border-left: 3px solid #948979;
}
.viewer table {
border: 2px solid [[ColorPalette::TertiaryDark]];
}
.viewer th, thead td {
background: #948979;
border: 1px solid #948979;
color: #fff;
}
.viewer a {
text-decoration: none;
font-size: 1.5em;
font-weight: bold;
}
.viewer pre {
border: 1px solid #948979;
background: #f5f5f5;
}
.viewer code {
color: #2F2A29;
}
.viewer hr {
border-top: dashed 1px #948979;
}
.editor input {
border: 1px solid #948979;
}
.editor textarea {
border: 1px solid #948979;
}
.popup {
background: #948979;
border: 1px solid #948979;
}
.popup li.disabled {
color: #000;
}
.popup li a, .popup li a:visited {
color: #eee;
border: none;
}
.popup li a:hover {
background: #575352;
color: #fff;
border: none;
}
.tagging, .tagged {
border: 1px solid #eee;
background-color: #F7F7F7;
}
.selected .tagging, .selected .tagged {
background-color: #eee;
border: 1px solid #BFBAB3;
}
.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}
.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #666;
}
.tagging .button, .tagged .button {
color:#aaa;
}
.selected .tagging .button, .selected .tagged .button {
color:#4F4B45;
}
.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}
.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {
border: none; background:transparent; text-decoration:underline; color:#000;
}
h1,h2,h3,h4,h5 { color: #666; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}
#messageArea {
border: 4px solid #948979;
background: #f5f5f5;
color: #999;
font-size:90%;
}
#messageArea a:hover { background:#f5f5f5;}
#messageArea .button{
color: #666;
border: 1px solid #CC6714;
}
#messageArea .button:hover {
color: #fff;
background: #948979;
border-color: #948979;
}
* html .viewer pre {
margin-left: 0em;
}
* html .editor textarea, * html .editor input {
width: 98%;
}
.searchBar {float:right;font-size: 1.0em;}
.searchBar .button {color:#999;display:block;}
.searchBar .button:hover {border:1px solid #fff;color:#4F4B45;}
.searchBar input {
background-color: #FFF;
color: #999999;
border: 1px solid #CCC; margin-right:3px;
}
#sidebarOptions .button:active, #sidebarOptions .highlight {background:#F5F5F5;}
*html #contentFooter { padding:0.25em 1em 0.5em 1em;}
#noticeBoard {font-size: 0.9em; color:#999; position:relative;display:block;background:#fff; clear: both; margin-right:0.5em; margin-top:60px; padding:5px; border-bottom: 1px dotted #CCC; border-top: 1px dotted #CCC;}
#mainMenu #noticeBoard a,#mainMenu #noticeBoard .tiddlyLink {display:inline;border:none;padding:5px 2px;color:#DF9153 }
#noticeBoard a:hover {border:none;}
#noticeBoard br {display:inline;}
#mainMenu #noticeBoard .button{
color: #666;
border: 1px solid #DF9153;padding:2px;
}
#mainMenu #noticeBoard .button:hover{
color: #fff;
background: #DF9153;
border-color: #DF9153;
}
.searchbar {position:relative; width:11em;}
.searchbar .button{margin:0; width:11em;}
#header {display:inline-block;}
/*}}}*/
/***
|''Name:''|TiddlyLightBox|
|''Date:''|Jan 1, 2006|
|''Version:''|1.0 beta|
|''Author:''|Saq Imtiaz|
|''Location:''|http://tw.lewcid.org/#TiddlyLightBoxPlugin|
|''Documentation:''|http://tw.lewcid.org/#TiddlyLightBoxDocs|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''Based on:''|DC3.LightBox<br>Light Box Gone Wild <br>Ibox|
!!Code
***/
//{{{
config.macros.imagebox ={};
config.macros.imagebox.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
var e = place.lastChild;
e.onclick = function(){TiddlyLightBox.initBox('image',this,params[1],params[2],params[0]);return false;};
}
config.macros.divbox ={};
config.macros.divbox.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
if (params[0]!=".")
createTiddlyButton(place,params[0],params[0],function(){TiddlyLightBox.initBox('html',params[1],params[3],params[4],params[2]);return false;});
else
{
var e = place.lastChild;
e.onclick = function(){TiddlyLightBox.initBox('html',params[1],params[3],params[4],params[2]);return false;};
}
}
config.macros.tiddlerbox ={}
config.macros.tiddlerbox.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
config.macros.divbox.handler(place,macroName,[params[0],"tiddler:"+params[1],params[2],params[3],params[4]]);
return false;
}
store.addNotification("TiddlyLightBoxStyles",refreshStyles);
if (!window.TiddlyLightBox)
window.TiddlyLightBox = {};
var loadingImage = "indicator.gif";
window.TiddlyLightBox =
{
_curBox: null, // [sentinel]
lightBoxHtml : '<div id="lightBoxOverlay" onclick="TiddlyLightBox.hideBox()" style="display:none"></div><div id="lightboxprogress" style="display:none;"><img src=\''+loadingImage+'\' alt=\'loading\' style="width:128px;height:128px;"></div><div class="lightBox" id="lightBox" style="display:none"><div id="lightBoxContent"></div><div id="lightBoxTitle">This is a title</div><div id="lightBoxClose"><a href:"#" onclick="TiddlyLightBox.hideBox();return false;">Click to close</a></div></div>',
createBoxWrapper : function()
{
var wrapper = createTiddlyElement(document.getElementsByTagName("body")[0],"div","tiddlyLightBoxWrapper");
wrapper.innerHTML = this.lightBoxHtml;
},
initBox : function(contentType,url,w,h,text)
{
if (this._curBox)
return;
this.showProgress();
this.hideSelects("hidden");
this.showBg();
this._curBox = true;
this.sizeTheBox(contentType,w,h);
if (contentType == 'image')
this.showImage(url,text);
else if (contentType == 'html')
this.showHtml(url,text);
return false;
},
sizeTheBox : function(contentType,w,h)
{
var box = document.getElementById("lightBoxContent");
if (w && isNaN(parseInt(w)))
{
addClass(box,w);
}
else if (w ||h || contentType == 'html')
{
box.style.width = w? w+ "px" : "450px";
box.style.height = h? h+ "px" : "280px";
if (contentType=='image')
setStylesheet("#lightBoxContent img{height:100%;width:100%;}","lightBoxImageSizeHack");
}
},
showProgress : function()
{
var progress = document.getElementById("lightboxprogress");
progress.style.display='';
this._center(progress);
},
hideProgress: function()
{
var progress = document.getElementById("lightboxprogress");
progress.style.display='none';
},
//this function lifted from Lightbox Gone Wild
hideSelects: function(visibility)
{
var selects = document.getElementsByTagName('select');
for(i = 0; i < selects.length; i++)
{
selects[i].style.visibility = visibility;
}
},
showBg: function()
{
var overlay = document.getElementById('lightBoxOverlay');
if (config.browser.isIE)
{
overlay.style.height = Math.max(document.documentElement.scrollHeight,document.documentElement.offsetHeight);
overlay.style.width = document.documentElement.scrollWidth;
}
overlay.style.display = 'block';
},
showImage: function (url,text)
{
imgPreloader = new Image();
imgPreloader.onload = function ()
{
var lb = document.getElementById("lightBoxContent");
lb.innerHTML = "<img src="+url+">";
lb.onclick = function(){TiddlyLightBox.hideBox();return false;};
TiddlyLightBox.posBox(text);
};
imgPreloader.src = url;
},
showHtml : function(theID,text)
{
var lb = document.getElementById("lightBoxContent");
if (theID.indexOf("tiddler:")==-1)
lb.innerHTML = document.getElementById(theID).innerHTML;
else
{
wikify(store.getTiddlerText(theID.replace("tiddler:","")),lb);
lb.className='tiddler';
}
lb.style.overflow = "auto";
this.posBox(text);
},
posBox: function(text)
{
this.setTitle(text);
this.hideProgress();
var lb = document.getElementById("lightBox");
lb.style.display = "";
lb.style.visibilty = "hidden";
lb.style.position = "absolute";
this._center(lb);
if(!TiddlyLightBox._curBox) return;
lb.style.visibility = "visible";
lb.style.display = "block";
},
setTitle: function(text)
{
document.getElementById("lightBoxTitle").innerHTML= (text==undefined)? '': text;
},
_center: function(lb)
{
var lbSize = new TiddlyLightBox.getElementSize(lb);
lb.style.left = (Math.round(findWindowWidth()/2) - (lbSize.width /2) + findScrollX())+'px';
lb.style.top = (Math.round(findWindowHeight()/2) - (lbSize.height /2) + findScrollY())+'px';
},
//this function lifted from Ibox
getElementSize : function(elem)
{
this.width = elem.offsetWidth || elem.style.pixelWidth;
this.height = elem.offsetHeight || elem.style.pixelHeight;
},
hideBox: function()
{
if(!this._curBox)
return;
document.getElementById("tiddlyLightBoxWrapper").innerHTML= this.lightBoxHtml;
setStylesheet("","lightBoxImageSizeHack");
this._curBox = null;
return false;
}
}
TiddlyLightBox.createBoxWrapper();
Story.prototype.findContainingTiddler = function(e)
{
while(e && (!hasClass(e,"tiddler") || !e.getAttribute("tiddler")))
e = e.parentNode;
return(e);
}
config.shadowTiddlers.TiddlyLightBoxStyles="/*{{{*/\n#lightBoxOverlay {\n position:absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 90; \n background-color: #000;\n -moz-opacity: 0.75;\n opacity: .75;\n filter: alpha(opacity=75);\n}\n#lightBoxOverlay[id]{ \n position: fixed;\n}\n\n#lightboxprogress { \n margin:0;padding:0;\n position: absolute;\n z-index:95;\n}\n\ndiv.lightBox {\n background: #fff;\n color: #fff;\n border: 4px solid #525252;\npadding:20px 20px 25px 20px; position:absolute; z-index:99;\n}\n\n#lightBoxClose {text-align:right; color:#000; font-size:1.0em; position:absolute; bottom:6px; right:20px;}\n#lightBoxClose a{color:#666; border-bottom:1px solid #666;cursor:pointer;}\n#lightBoxClose a:hover {color:#111; border-bottom:1px solid #666; cursor:pointer; background:transparent;}\n\n#lightBoxContent {border:1px solid #525252;color:#000; background:#fff;}\n#lightBox .tiddler {background:#fff;}\n\n#lightBoxContent img {border:0;margin:0;padding:0;display:block;cursor:pointer;}\n\n#lightBoxTitle {padding:0px; font-weight:bold; position:absolute; left:20px;bottom:6px; font-size:1.1em; color:#000;}\n\n/*}}}*/";
//}}}
/***
|Name|ToggleSideBarMacro|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#ToggleSideBarMacro|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Provides a button for toggling visibility of the SideBar. You can choose whether the SideBar should initially be hidden or displayed.
!Demo
<<toggleSideBar "Toggle Sidebar">>
!Usage:
{{{<<toggleSideBar>>}}} <<toggleSideBar>>
additional options:
{{{<<toggleSideBar label tooltip show/hide>>}}} where:
label = custom label for the button,
tooltip = custom tooltip for the button,
show/hide = use one or the other, determines whether the sidebar is shown at first or not.
(default is to show the sidebar)
You can add it to your tiddler toolbar, your MainMenu, or where you like really.
If you are using a horizontal MainMenu and want the button to be right aligned, put the following in your StyleSheet:
{{{ .HideSideBarButton {float:right;} }}}
!History
*23-07-06: version 1.0: completely rewritten, now works with custom stylesheets too, and easier to customize start behaviour.
*20-07-06: version 0.11
*27-04-06: version 0.1: working.
!Code
***/
//{{{
config.macros.toggleSideBar={};
config.macros.toggleSideBar.settings={
styleHide : "#sidebar { display: none;}\n"+"#contentWrapper #displayArea { margin-right: 1em;}\n"+"",
styleShow : " ",
arrow1: "«",
arrow2: "»"
};
config.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)
{
var tooltip= params[1]||'toggle sidebar';
var mode = (params[2] && params[2]=="hide")? "hide":"show";
var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;
var label= (params[0]&¶ms[0]!='.')?params[0]+" "+arrow:arrow;
var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");
if (mode == "hide")
{
(document.getElementById("sidebar")).setAttribute("toggle","hide");
setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");
}
};
config.macros.toggleSideBar.onToggleSideBar = function(){
var sidebar = document.getElementById("sidebar");
var settings = config.macros.toggleSideBar.settings;
if (sidebar.getAttribute("toggle")=='hide')
{
setStylesheet(settings.styleShow,"ToggleSideBarStyles");
sidebar.setAttribute("toggle","show");
this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);
}
else
{
setStylesheet(settings.styleHide,"ToggleSideBarStyles");
sidebar.setAttribute("toggle","hide");
this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);
}
return false;
}
setStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\n","ToggleSideBarButtonStyles");
//}}}
ToggleSideBarMacro has been completely rewritten. Now works flawlessly with custom stylesheets too, and is easier to customize. You can specify whether the sidebar is hidden or displayed to start off with.
{{ justified {
After 8 months and on dedibox with a gentoo as host I must say it's not ready and stable as it should be, so i reinstalled my dedibox with a debian host and differents type of guest vserver (debian and gentoo).
With debian there is no problem it works out of the box, but with gentoo there is issue related to init script and lo/127.0.0.1. I will explain the history, it maybe helps other people. On gentoo when you want to start eg apache daemon the init script try to run net service because apache depends on it (and many others), but the problem with vserver is that lo and 127.0.0.1 is something special and there is no lo device when you list net devices by default. So a net service does not start in guest gentoo without modification. There is a tricks to add a lo interface with 127.0.0.1 inside the guest (configuring an lo interface with nodev and 127.0.0.1 in ip on the host /etc/vservers/foo/interface/x). With that net service can start but lo and 127.0.0.1 but there is side effect, it's not possible to ping and access external network (unable to ping google or yahoo). The good solution should be to be able to start services without lo/127.0.0.1 interface. I find a fix, i have not used it for a long time ago so there is maybe side effect but i did not notice yet. The fix consist of removing depends to net services in init script. It's not a good way to fix every init script, so i tried to dummy the net service, it seems to work here the script to fix a gentoo vserser.
}}}
{{{
#!/bin/bash
set -x
serv=$1
serverpath=/var/lib/vservers/$serv
if [ -z $serv ]
then
echo "usage ${0} : vserver"
exit 0
fi
if [ ! -f ${serverpath}/etc/gentoo-release ]
then
echo "no vserver ${serv} found or it's not a gentoo type"
exit 0
fi
if [ ! -f ${serverpath}/etc/init.d/net.lo ]
then
echo "nothing to fix for ${serv}, ${serverpath}/etc/init.d/net.lo not found"
exit 0
fi
echo "fixing ${serv}"
cp -a ${serverpath}/etc/init.d ${serverpath}/etc/bakup_init.d
rm ${serverpath}/etc/init.d/net.lo ${serverpath}/etc/init.d/netmount
touch ${serverpath}/etc/init.d/net
chmod +x ${serverpath}/etc/init.d/net
}}}
links:
http://garden.dachary.org/universe.html
http://hg.plopbyte.net/wiimelon
http://www.plopbyte.net/wiimelon.html
[[TiddlyWiki|http://www.tiddlywiki.com]] © Osmosoft <<toggleSideBar '' '' hide>>
//{{{
//This ensures that the footer sticks to the bottom of the screen when there are no tiddlers open. If that is not desirable, it can be deleted.
function setFooter() {
if (document.getElementById && document.getElementById("contentFooter") ) {
var windowHeight=findWindowHeight();
if (windowHeight>0) {
var contentHeight= document.getElementById('mainMenu').offsetHeight + document.getElementById("header").offsetHeight + document.getElementById("contentFooter").offsetHeight;
var menu= document.getElementById('mainMenu');
if (windowHeight-(contentHeight)>=0) {
menu.style.position='relative';
menu.style.marginBottom=(windowHeight-(contentHeight))+'px';
}
else {
menu.style.position='';
menu.style.marginBottom='';
}
}
}
}
window.onresize = function() {
setFooter();
}
Story.prototype.refreshTiddler_footerhack=Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function (title,template,force)
{
var theTiddler = Story.prototype.refreshTiddler_footerhack.apply(this,arguments);
setFooter();
return theTiddler;}
//}}}
Gentoo package is a mercurial repository containaing OpenSceneGraph and my own projects ebuild. Following instruction will install the last version available (~OpenSceneGraph-2.4) in the repository.
* install mercurial and layman
{{{
emerge layman mercurial
}}}
* add layman make.conf to the main make.conf
{{{
echo "source /usr/portage/local/layman/make.conf" >> /etc/make.conf
}}}
* edit /etc/layman.cfg
{{{
overlays : http://hg.plopbyte.net/gentoo-packages/raw-file/e6b4fc0d766a/list.xml
http://www.gentoo.org/proj/en/overlays/layman-global.txt
nocheck : yes
}}}
* then add the overlay
{{{
layman -a mornifle-gentoo-package
}}}
* then emerge
{{{
emerge openscenegraph
}}}
if you want to install previous or specific version of OpenSceneGraph you can try something like
{{{
emerge =media-gfx/openscenegraph-1.2.0-r3
emerge =media-gfx/openscenegraph-2.0-r0
emerge =media-gfx/openscenegraph-2.2.0-r0
emerge =media-gfx/openscenegraph-2.3.5 # this one is masked because it was a developer release
emerge =media-gfx/openscenegraph-2.4.0-r1
}}}
Other instruction to install layman is available here http://gentoo-wiki.com/TIP_Overlays#Layman
If you notice any problem or you want to report something, write to mailto:mornifle@plopbyte.net