feat: Detect background color info in VRML 1 and encode it in VRML 97
Resolves #7
This commit is contained in:
parent
8a0ece1dde
commit
029bb7650c
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
name: 'vrml1to97',
|
name: 'vrml1to97',
|
||||||
version: '0.1.0',
|
version: '0.1.1',
|
||||||
description: 'JavaScript converter from VRML 1 to VRML97',
|
description: 'JavaScript converter from VRML 1 to VRML97',
|
||||||
scripts: {
|
scripts: {
|
||||||
test: 'echo "Error: no test specified" && exit 1',
|
test: 'echo "Error: no test specified" && exit 1',
|
||||||
|
@ -143,14 +143,27 @@ function parse(stream: Lexer, tree: Tree = {}): Tree
|
|||||||
else
|
else
|
||||||
parse stream // discard the subgroup
|
parse stream // discard the subgroup
|
||||||
held = filtered stream
|
held = filtered stream
|
||||||
if not held or held.type === 'cbrace' then break
|
|
||||||
{ht: 'word', hv: 'vertexOrdering', nt: 'word', nv: 'COUNTERCLOCKWISE'}
|
{ht: 'word', hv: 'vertexOrdering', nt: 'word', nv: 'COUNTERCLOCKWISE'}
|
||||||
tree.vertexOrdering = ['ccw']
|
tree.vertexOrdering = ['ccw']
|
||||||
held = filtered stream
|
held = filtered stream
|
||||||
if not held or held.type === 'cbrace' then break
|
{ht: 'word', hv: 'BackgroundColor', nt: 'word', nv: 'Info'}
|
||||||
|
opener := filtered stream
|
||||||
|
if opener and opener.type === 'obrace'
|
||||||
|
contents := toksUntilClose stream
|
||||||
|
// Find the first string token and assume it is the color
|
||||||
|
stok := contents.find .type[0] === 'string'
|
||||||
|
colorString := stok?.value[0]
|
||||||
|
if colorString and typeof colorString === 'string'
|
||||||
|
color := colorString.replace /^"|"$/g, ''
|
||||||
|
addChild `Background {
|
||||||
|
groundColor [ ${color} ]
|
||||||
|
skyColor [ ${color} ]
|
||||||
|
}\n`, tree
|
||||||
|
held = filtered stream
|
||||||
|
else held = opener
|
||||||
else
|
else
|
||||||
held = next // ignore unknown words
|
held = next // ignore unknown words
|
||||||
if not held or held.type === 'cbrace' then break
|
if not held or held.type === 'cbrace' then break
|
||||||
if held and held.type !== 'cbrace'
|
if held and held.type !== 'cbrace'
|
||||||
console.log 'Oddly ended up with held', held
|
console.log 'Oddly ended up with held', held
|
||||||
tree
|
tree
|
||||||
|
Loading…
Reference in New Issue
Block a user