- From: Fred P. <fprog26@hotmail.com>
- Date: Mon, 06 Oct 2003 05:14:52 -0400
- To: www-svg@w3.org
- Cc: svg-developers@yahoogroups.com
<!--
Goals:
- A pure XML based template declaration
- SVG Editor with simple ecmascript can 'understand' these templates
by using them as objects with parameters (or attributes or properties)
- Parameters type can be typesafe, declared, with min/max/default
values, etc.
- An editor can therefore design objects parameter "editor" dialog
using such information like IDL have done for OOP language.
- An editor can drag, resize, move, create, delete these objects.
- Fully descriptive
- No need to invent any new language
- SVG 1.0/1.1 can be supported using a proper ecmascript translator:
left as an exercise shouldn't be too complicated to implement
non-native.
- Need an XML standard on which all SVG editor 1.2 can rely on
for describing unknown objects/figures/entities...
-->
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE svg SYSTEM
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-flat-20030114.dtd">
<svg
width='1024' height='700' enableZoomAndPanControls='false'
xmlns="http://www.w3.org/2000/svg"
xmlns:f='http://xmlns.fred.com/'
>
<defs>
<template xmlns='http://xmlns.fred.com/'
name='user'
function='drawUser(x,y,w,h,id,drag,child)'
resize='resizeUser(node,w,h)'
move='moveUser(node,x,y)'
>
<param name='x' type='Integer' min='0' max='100' default='0' />
<param name='y' type='Integer' min='0' max='100' default='0' />
<param name='w' type='Integer' min='0' max='20' default='10' />
<param name='h' type='Integer' min='0' max='20' default='10' />
<param name='id' type='String' min='0' max='80' default='fred' />
<param name='drag' type='Boolean' default='false' />
<param name='child' type='NodeList' empty='true' default='null' />
</template>
<!-- Cannot be move or resize -->
<template name='f:pizza' function='drawPizza(x,y)'>
<param name='x' type='Integer' min='0' max='100' default='0' />
<param name='y' type='Integer' min='0' max='100' default='0' />
</template>
</defs>
<f:user x='10' y='10' w='10' h='10'/>
<f:pizza x='30' y='30'/>
<script type='text/ecmascript'
<![CDATA[
function drawPizza(x,y) { return drawUser(x,y,10,10,'pizza',false,null); }
function resizeUser(node,w,h) { node.setAttribute( 'width', w );
node.setAttribute( 'height', h ); return node; }
function moveUser(node,w,h) { node.setAttribute( 'x', x );
node.setAttribute( 'y', y ); return node; }
function drawUser(x,y,w,h,id,drag,child)
{
var s = "<rect x='" + x + "' y='" + y + "' width='"+ w +"' height='"+ h
+"'/>";
// Return an XML node
return parseXML( s, document );
}
]]>
</script>
</svg>
Comments, suggestions welcome.
Sincerely yours,
Fred.
_________________________________________________________________
Tired of spam? Get advanced junk mail protection with MSN 8.
http://join.msn.com/?page=features/junkmail
Received on Monday, 6 October 2003 05:14:54 UTC