File:  [Public] / Amaya / amaya / SVG.S
Revision 1.35: download - view: text, annotated - select for diffs
Fri Mar 7 09:41:29 2003 UTC (21 years, 3 months ago) by cheyroul
Branches: MAIN
CVS tags: HEAD

_GLTRANSFORMATION updates


      { Thot structure schema for Scalable Vector Graphics }

STRUCTURE SVG;

DEFPRES SVGP;

ATTR

   { global attributes for all SVG elements }
   id = text;
   class = text;
   PseudoClass = Text;
   style_ = text;
   xml_space = xml_space_default, xml_space_preserve;
   { xml_base = Text; }
	
   { global attributes for internal processing }
   Unknown_attribute = text;
   Ghost_restruct = text;
   Highlight = Yes_;        { to show the SVG element corresponding to the
			      current selection in the source view }
   Namespace = text;        { for children of element foreignObject }
   IntEmptyShape = yes_, no_;

STRUCT

{ Document Structure }

   SVG
	(ATTR requiredFeatures = text;
	      requiredExtensions = text;
	      systemLanguage = text;
	      baseProfile = text;
	      externalResourcesRequired = false, true;
	      fill = text;
	      stroke = text;
	      stroke_width = text;
	      font_family = text;
	      font_size = text;
	      font_style = normal_, italic, oblique_, inherit;
	      font_variant = normal_, small_caps, inherit;
	      font_weight = normal_, bold_, bolder, lighter, w100, w200, w300,
			    w400, w500, w600, w700, w800, w900, inherit;
	      direction_ = ltr_, rtl_, inherit;
	      text_anchor = start, middle, end__, inherit;
	      text_decoration = text;
	      unicode_bidi = normal_, embed_, bidi_override, inherit;
	      viewBox = text;
	      version = text;
	      x = text;
              y = text; 
	      width_ = text;
	      height_ = text;
	      opacity_ = text; 
	      RealLang = Yes_;
	      Charset = text)
        = LIST OF (GraphicsElement) + (XMLcomment, XMLPI, CDATA,
	                               Unknown_namespace);

   g
        (ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      fill; stroke; stroke_width;
	      opacity_; 
	      font_family; font_size; font_style; font_variant; font_weight;
	      direction_; text_anchor; text_decoration; unicode_bidi;
	      transform = text)
        = LIST OF (GraphicsElement);

   defs
        (ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired;
	      fill; stroke; stroke_width;
	      font_family; font_size; font_style; font_variant; font_weight;
	      direction_; text_anchor; text_decoration; unicode_bidi;
	      transform;
	      { graphicsElementEvents })
        = LIST OF (GraphicsElement);

   desc = TEXT;
	
   title = TEXT;
	
   symbol_  { not in SVG Tiny }
	(ATTR externalResourcesRequired;
	      fill; stroke; stroke_width;
	      font_family; font_size; font_style; font_variant; font_weight;
	      direction_; text_anchor; text_decoration; unicode_bidi;
	      viewBox;
	      preserveAspectRatio = text; 
	      { graphicsElementEvents })
        = LIST OF (GraphicsElement);

   use_  { not in SVG Tiny }
        (ATTR xlink_href = text;
	      requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired;
	      opacity_; fill; stroke; stroke_width;
	      font_family; font_size; font_style; font_variant; font_weight;
	      direction_; text_anchor; text_decoration; unicode_bidi;
	      transform;
	      { graphicsElementEvents }
	      x; 
	      y;
              width_;
              height_)
        = AGGREGATE
              desc; title; metadata;
	      LIST OF (Anim);
	      END;
	
{ Images }

   image
	(ATTR xlink_href;
	      requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      transform;
	      opacity_; 
	      x; 
	      y;
              width_;
              height_)		
        = AGGREGATE
              desc; ? title; ? metadata;
	      LIST OF (Anim);
              PICTURE;
              SVG_Image = SVG;
	      END;

{ Conditional Processing }

   switch
	(ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired;
	      { PresentationAttributes-All }
	      fill; stroke; stroke_width;
	      font_family; font_size; font_style; font_variant; font_weight;
	      direction_; text_anchor; text_decoration; unicode_bidi;
	      transform;
	      { graphicsElementEvents })
	= LIST OF (CASE OF
		      GraphicsElement; foreignObject;
	              END);

{ Styling }

   style__  { not in SVG Tiny }
	(ATTR type = text;
	      media = text;
	      title_ = text)
	= TEXT;

{ Paths }

   path
	(ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      opacity_; 
	      fill_opacity=text; 
	      stroke_opacity=text; 
	      fill; stroke; stroke_width;
              transform;
	      d = text;
	      pathLength = text)
        = AGGREGATE
	      desc; title; metadata;
	      LIST OF (Anim);
	      GRAPHICS;
	      END;
	
{ Basic Shapes }

   rect
        (ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      fill; stroke; stroke_width;
	      transform;
	      x;
              y;
              width_;
              height_;
	      opacity_; fill_opacity; stroke_opacity;
	      rx = text;
	      ry = text)
        = AGGREGATE
	      desc; title; metadata;
	      LIST OF (Anim);
	      GRAPHICS;
	      END;
	
   circle
        (ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      fill; stroke; stroke_width;
	      transform;
	      cx = text;
	      cy = text;
              r = text;
	      opacity_; fill_opacity; stroke_opacity)
        = AGGREGATE
	      desc; title; metadata;
	      LIST OF (Anim);
	      GRAPHICS;
	      END;
	
   ellipse
        (ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      fill; stroke; stroke_width;
	      transform;
	      cx;
	      cy;
	      rx;
	      ry;
	      opacity_; fill_opacity; stroke_opacity)
        = AGGREGATE
	      desc; title; metadata;
	      LIST OF (Anim);
	      GRAPHICS;
	      END;
	
   line_
        (ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      fill; stroke; stroke_width;
	      transform;
	      x1 = text;
	      y1 = text;
              x2 = text;
	      y2 = text;
	      opacity_; fill_opacity; stroke_opacity)
        = AGGREGATE
	      desc; title; metadata;
	      LIST OF (Anim);
	      GRAPHICS;
	      END;
	
   polyline
        (ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      fill; stroke; stroke_width;
	      transform;
              points = text;
	      opacity_; fill_opacity; stroke_opacity)
        = AGGREGATE
	      desc; title; metadata;
	      LIST OF (Anim);
	      GRAPHICS;
	      END;
	
   polygon
        (ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      fill; stroke; stroke_width;
	      transform;
              points;
	      opacity_; fill_opacity; stroke_opacity)
        = AGGREGATE
	      desc; title; metadata;
	      LIST OF (Anim);
	      GRAPHICS;
	      END;

{ Text }
	
   text_
        (ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      fill; stroke; stroke_width;
	      font_family; font_size; font_style; font_variant; font_weight;
	      direction_; text_anchor; text_decoration; unicode_bidi;
	      transform;
	      writing_mode = lr_tb, rl_tb, tb_rl, lr, rl, tb, inherit;
	      x;
	      y;
	      dx = text;
	      dy = text;
	      opacity_)
        = LIST OF (CASE OF
		   tspan;	{ must be the first option, to allow the Return key
				  to create tspan elements }
		   TEXT; desc; title; metadata;
	           tref; a;
	           animate; set_; animateMotion; animateColor; animateTransform;
		   END);

   tspan  { not in SVG Tiny }
	(ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      fill; stroke; stroke_width;
	      font_family; font_size; font_style; font_variant; font_weight;
	      baseline_shift = text;
	      direction_; text_anchor; text_decoration; unicode_bidi;
	      writing_mode;
	      x;
              y;
	      dx;
	      dy;
	      opacity_)
	= LIST OF (SpanElement = CASE OF
		      TEXT;
		      desc; title; metadata;
		      tspan; tref;
		      a;
		      animate; set_; animateColor;
		      END);
   tref
	(ATTR xlink_href;
	      requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      fill; stroke; stroke_width;
	      font_family; font_size; font_style; font_variant; font_weight;
	      baseline_shift;
	      direction_; text_anchor; text_decoration; unicode_bidi;
	      writing_mode;
	      x;
              y;
	      dx;
	      dy;
	      opacity_)
	= LIST OF (CASE OF
		   desc; title; metadata;
	           animate; set_; animateColor;
		   END);

   { textPath }
   { altGlyph }
   { altGlyphDef }
   { altGlyphItem }
   { glyphRef }

{ Marker Symbols }

   { marker }

{ Color }

   { color-profile }

{ Gradients and Patterns }

   linearGradient
	(ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired;
	      x1; y1; x2; y2;	      
	      gradientTransform = text;
	      gradientUnits = text;
              xlink_href;)
	= AGGREGATE
	      desc; title; metadata;
	LIST OF (Anim);
	      GRAPHICS;
	  END;

   stop
         (ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired;
	      offset = text;
	      style = text;
	      stop_color = text;)
	 = AGGREGATE
	      desc; title; metadata;
	  END;
	

   { radialGradient }
   { pattern }

{ Clipping, Masking and Compositing }

   clipPath
        (ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired;
	      fill; stroke; stroke_width;
	      font_family; font_size; font_style; font_variant; font_weight;
	      direction_; text_anchor; text_decoration; unicode_bidi;
	      transform;
	      clipPathUnits = userSpaceOnUse, objectBoundingBox;)
	= AGGREGATE
	    desc; title; metadata;
	    LIST OF
	      (CASE OF
	         path; text_; rect; circle; ellipse; line_; polyline; polygon;
	         use_; animate; set_; animateMotion; animateColor;
	         animateTransform;
	       END);
	  END;

   { mask }

{ Filter Effects }

   { filter }
   { feDistantLight }
   { fePointLight }
   { feSpotLight }
   { feBlend }
   { feColorMatrix }
   { feComponentTransfer }
   { feFuncR }
   { feFuncG }
   { feFuncB }
   { feFuncA }
   { feComposite }
   { feConvolveMatrix }
   { feDiffuseLighting }
   { feDisplacementMap }
   { feFlood }
   { feGaussianBlur }
   { feImage }
   { feMerge }
   { feMergeNode }
   { feMorphology }
   { feOffset }
   { feSpecularLighting }
   { feTile }
   { feTurbulence }

{ Interactivity }

   { cursor }

{ Linking }

   a
        (ATTR xlink_href;
	      requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired;
	      fill; stroke; stroke_width;
	      font_family; font_size; font_style; font_variant; font_weight;
	      direction_; text_anchor; text_decoration; unicode_bidi;
	      transform;
	      { graphicsElementEvents }
	      target_ = text)
	= LIST OF (CASE OF
		   TEXT; 
		   GraphicsElement;
	           END);
   { view }

{ Scripting }

   script_  { not in SVG Tiny }
	(ATTR externalResourcesRequired;
	      type)
	= TEXT;

{ Animation }

   animate
	(ATTR requiredFeatures; requiredExtensions; systemLanguage; {testAttrs}
	      externalResourcesRequired;
	      onbegin = text;  {animationEvents}
	      onend = text;
	      onrepeat = text;
	      {animElementAttrs - see XLink.S}
              xlink_href;
              attributeName_ = text;  {animAttributeAttrs}
	      attributeType = text;
	      begin_ = text;  {animTimingAttrs}
	      dur = text;
	      end_ = text;
	      min_ = text;
	      max_ = text;
	      restart = always, never, whenNotActive;
	      repeatCount = text;
	      repeatDur = text;
	      fill_ = remove_, freeze;
              calcMode = discrete, linear, paced, spline;  {animValueAttrs}
	      values = text;
	      keyTimes = text;
	      keySplines = text;
	      from = text;
	      to_ = text;
	      by = text;
              additive = replace, sum;  {animAdditionAttrs}
	      accumulate = none_, sum;)
	= AGGREGATE
	      desc; title; metadata;
	  END;

   set_
	(ATTR requiredFeatures; requiredExtensions; systemLanguage; {testAttrs}
	      externalResourcesRequired;
	      onbegin; onend; onrepeat; {animationEvents}
	      xlink_href; {animElementAttrs - see XLink.S}
              attributeName_; attributeType; {animAttributeAttrs}
	      begin_; dur; end_; min_; max_; restart; repeatCount; repeatDur; fill_;
	                                                      {animTimingAttrs}
	      to_;)
	= AGGREGATE
	      desc; title; metadata;
	  END;

   animateMotion
	(ATTR requiredFeatures; requiredExtensions; systemLanguage; {testAttrs}
	      externalResourcesRequired;
	      onbegin; onend; onrepeat; {animationEvents}
	      xlink_href; {animElementAttrs - see XLink.S}
              attributeName_; attributeType; {animAttributeAttrs}
	      begin_; dur; end_; min_; max_; restart; repeatCount; repeatDur; fill_;
	                                                      {animTimingAttrs}
	      calcMode; values; keyTimes; keySplines; from; to_; by;
              additive; accumulate; {animAdditionAttrs}
	      path_ = text;
              keyPoints = text;
              rotate = text;
              origin = text;)
	= AGGREGATE
	      desc; title; metadata; ? mpath;
	  END;

   mpath
	(ATTR
	   xlink_href;  {xlinkRefAttrs - see XLink.S}
	   externalResourcesRequired;)
	= AGGREGATE
	      desc; title; metadata;
	  END;

   animateColor
	(ATTR requiredFeatures; requiredExtensions; systemLanguage; {testAttrs}
	      externalResourcesRequired;
	      onbegin; onend; onrepeat; {animationEvents}
	      xlink_href; {animElementAttrs - see XLink.S}
              attributeName_; attributeType; {animAttributeAttrs}
	      begin_; dur; end_; min_; max_; restart; repeatCount; repeatDur; fill_;
	                                                      {animTimingAttrs}
              calcMode; values; keyTimes; keySplines; from; to_; by;
	                                                       {animValueAttrs}
              additive; accumulate;) {animAdditionAttrs}
	= AGGREGATE
	      desc; title; metadata;
	  END;
	
   animateTransform
	(ATTR requiredFeatures; requiredExtensions; systemLanguage; {testAttrs}
	      externalResourcesRequired;
	      onbegin; onend; onrepeat; {animationEvents}
	      xlink_href; {animElementAttrs - see XLink.S}
              attributeName_; attributeType; {animAttributeAttrs}
	      begin_; dur; end_; min_; max_; restart; repeatCount; repeatDur; fill_;
	                                                      {animTimingAttrs}
              calcMode; values; keyTimes; keySplines; from; to_; by;
	                                                       {animValueAttrs}
              additive; accumulate;  {animAdditionAttrs}
	      type_ = translate, scale, rotate_, skewX, skewY;)
	= AGGREGATE
	      desc; title; metadata;
	  END;

   Anim = CASE OF animate; set_; animateMotion; animateColor; animateTransform;
	  END;
{ Fonts }

   { font }
   { glyph }
   { missing-glyph }
   { hkern }
   { vkern }
   { font-face }
   { font-face-src }
   { font-face-uri }
   { font-face-format }
   { font-face-name }
   { definition-src }
   { cursor }

{ Metadata }
	
   metadata = TEXT;

{ Extensibility }

   foreignObject  { not in SVG Tiny }
        (ATTR requiredFeatures; requiredExtensions; systemLanguage;
	      externalResourcesRequired; 
	      opacity_; fill_opacity; stroke_opacity; fill; stroke; stroke_width;
	      font_family; font_size; font_style; font_variant; font_weight;
	      direction_; text_anchor; text_decoration; unicode_bidi;
	      transform;
	      x; 
              y;
              width_;
              height_)
	= BEGIN CASE OF
	      HTML; MathML;
	      END;
          END;

{ The following elements are not defined in the SVG DTD }


  Timeline_cross
	(ATTR x; 
	      y;
	opacity_; 
          width_;
          height_)
        = PICTURE;

   GraphicsElement
	= CASE OF
	      desc; title; metadata; defs;
	      path; text_; rect; circle; ellipse; line_; polyline; polygon;
	      use_; image; Timeline_cross; SVG; g; switch; a;
	      script_; style__; symbol_; clipPath; Anim;
	      animate; set_; animateMotion; animateColor; animateTransform;
	      linearGradient; stop; 
	      XLink;
	      END;

   DOCTYPE = LIST OF (DOCTYPE_line = TEXT);	
	
   XMLcomment = LIST OF (XMLcomment_line = TEXT);

   XMLPI = LIST OF (XMLPI_line = TEXT);

   CDATA = LIST OF (CDATA_line = TEXT);

   Unknown_namespace = TEXT;

EXCEPT

   SVG:                 IsDraw, MoveResize, NoMove;
   g:                   NoMove, NoResize, HighlightChildren, NoShowBox,
                        NoCreate, IsGroup;
   defs:                NoMove, NoResize, NoShowBox, NoCreate;
   linearGradient:      NoMove, NoResize, NoShowBox, NoCreate;
   stop:	        NoMove, NoResize, NoShowBox, NoCreate;
   rect:                MoveResize, HighlightChildren, NoShowBox, NoCreate;
   circle:              MoveResize, HighlightChildren, NoShowBox, NoCreate;
   ellipse:             MoveResize, HighlightChildren, NoShowBox, NoCreate;
   line_:               MoveResize, HighlightChildren, NoShowBox, NoCreate;
   polyline:            MoveResize, HighlightChildren, NoShowBox, NoCreate;
   polygon:             MoveResize, HighlightChildren, NoShowBox, NoCreate;
   path:	        MoveResize, HighlightChildren, NoShowBox, NoCreate;
   text_:               MoveResize, NoResize, NoShowBox, ReturnCreateWithin,
	                NoCreate;
   tspan:	        NoShowBox; 
   use_:	        NoMove, NoResize, HighlightChildren, NoShowBox,
	                NoCreate;
   image:	        MoveResize, HighlightChildren, NoShowBox;
   symbol_:	        NoMove, NoResize,  HighlightChildren,NoShowBox,
                        NoCreate;
   a:	                NoMove, NoResize, HighlightChildren, NoShowBox,
                        NoCreate;
   script_:	        NoMove, NoResize, NoShowBox, NoCreate;
   style__:             NoMove, NoResize, NoShowBox, NoCreate;
   switch:              NoMove, NoResize, NoShowBox, NoCreate, HighlightChildren;
   foreignObject:       MoveResize, HighlightChildren, NoCreate;
   SVG_Image:           Hidden, SelectParent;
   GRAPHICS:	        SelectParent;
   PICTURE:             NoMove, NoResize, SelectParent;
   TEXT:                NoMove, NoResize;
   Unknown_namespace:   NoCreate;
   DOCTYPE:             NoCut;
   DOCTYPE_line:        Hidden, NoSpellCheck, NoCut;
   XMLcomment_line:     Hidden, NoSpellCheck;
   XMLPI_line:          Hidden, NoSpellCheck;
   CDATA_line:          Hidden;
   XMLPI:	        ReturnCreateNL, NoReplicate;
   XMLcomment:	        ReturnCreateNL, NoReplicate;
   id:                  CssId;
   class:               CssClass;
   PseudoClass:	        Invisible, CssPseudoClass;
   Unknown_attribute:   Invisible;
   Highlight:	        Invisible; 
   Ghost_restruct:      Invisible;
   Namespace:	        Invisible;
   IntEmptyShape:       Invisible;
   RealLang:	        Invisible;
   Charset:	        Invisible;
   Timeline_cross:      MoveResize, NoResize, HighlightChildren, NoShowBox, NoCut;

END

Webmaster