media @ VU
proto-slide-element-text.vr
proto-slide-element-text.vr
(wrl
)
[ flux /
bitmanagement /
cortona /
octaga
]
text
Web3D/VR
proto
PROTO TextElement [
exposedField SFString elementType "TEXTELEMENT"
exposedField SFInt32 startLevel -1
exposedField SFInt32 endLevel -1
exposedField SFFloat width 1
exposedField SFFloat height 1
exposedField SFBool linebreak FALSE
exposedField SFBool absolute FALSE
exposedField SFBool nochange FALSE
exposedField MFString string []
exposedField SFVec3f position 0 0 0
exposedField SFColor color 1 1 1
exposedField SFFloat alpha 0
exposedField SFColor bgColor 0 0 1
exposedField SFFloat bgTransparency 1
exposedField SFVec3f location 0 0 0
exposedField SFRotation rotation 0 1 0 0
exposedField SFVec3f scale 1 1 1
exposedField MFString justify [ "BEGIN" ]
exposedField MFString family [ "SERIF" ]
exposedField SFString style "PLAIN"
exposedField SFString href ""
exposedField MFString parameters []
] {
body
DEF TRANSFORMXX Transform {
translation IS position
children [
DEF TRANSFORM Transform {
translation IS location
rotation IS rotation
scale IS scale
children [
DEF BOXTRANSFORM Transform {
translation 0 0 -0.015
}
Shape {
appearance Appearance {
material Material {
diffuseColor 0 0 0
specularColor 0 0 0
emissiveColor IS color
transparency IS alpha
}
}
geometry DEF TEXT Text {
string IS string
fontStyle FontStyle {
size IS height
family IS family
style IS style
justify [ "BEGIN" ]
topToBottom TRUE
leftToRight TRUE
}
}
}
]
} ] }
script
DEF SCRIPT Script {
mustEvaluate TRUE
directOutput TRUE
field SFNode boxTransform USE BOXTRANSFORM
field SFNode transform USE TRANSFORM
field SFNode me USE SCRIPT
field MFString family IS family
field SFFloat size IS height
eventIn MFString set_string IS string
field MFString string IS string
field MFString justify IS justify
field SFFloat length IS width
eventOut SFFloat length_changed IS width
field SFColor bgColor IS bgColor
field SFFloat bgTransparency IS bgTransparency
field SFString href IS href
field MFString parameters IS parameters
eventIn SFTime touched
functions
url "vrmlscript:
function initialize() {
// guess length...
var factor = 1;
if(family[0]=='TYPEWRITER') {
factor = 0.6;
} else if(family[0]=='SANS') {
factor = 0.5;
} else if(family[0]=='SERIF') {
factor = 0.38;
}
length = string[0].length * factor * size;
length_changed = length;
// Setup backgroundBox to be size widthXheight
boxTransform.translation = new SFVec3f(length/2,size/2,-0.015);
var bgBox = Browser.createVrmlFromString(' Shape { appearance Appearance { material Material { diffuseColor 0 0 0 specularColor 0 0 0 emissiveColor ' + bgColor + ' transparency ' + bgTransparency + ' } } geometry Box { size ' + length + ' ' + size + ' 0.01 } } ');
boxTransform.children = bgBox;
if(href != '') {
var touch = Browser.createVrmlFromString(' TouchSensor{} ');
transform.addChildren = touch;
Browser.addRoute(touch[0],'touchTime',me,'touched');
}
}
function set_string(v,t) {
string = v;
initialize();
}
function touched(v,t) {
Browser.loadURLrel(href,parameter);
// Change, this for absolute URLs
// Browser.loadURL(href,parameter);
}
"
}
}
(C) A. Eliëns
21/5/2007
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.