namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
namespace svg = "http://www.w3.org/2000/svg"


## 
##     SVG 1.1 Graphics Attribute Module
##     file: svg-graphics-attrib.rng
## 
##     This is SVG, a language for describing two-dimensional graphics in XML.
##     Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
##
##     Modifications Copyright 2007 Mozilla Foundation
## 
##     $Id$
##   

## 
##     Graphics Attribute
## 
##         display, image-rendering, pointer-events, shape-rendering,
##         text-rendering, visibility
## 
##     This module defines the Graphics attribute set.
##   
[ xml:lang = "en" ]
grammar {
    include "svg-basic-graphics-attrib.rnc" inherit = svg
    SVG.image-rendering.attrib =
        attribute image-rendering {
            string "auto" | string "optimizeSpeed" | string "optimizeQuality" | string "inherit"
        }?
    SVG.pointer-events.attrib =
        attribute pointer-events {
            string "visiblePainted"
            | string "visibleFill"
            | string "visibleStroke"
            | string "visible"
            | string "painted"
            | string "fill"
            | string "stroke"
            | string "all"
            | string "none"
            | string "inherit"
        }?
    SVG.shape-rendering.attrib =
        attribute shape-rendering {
            string "auto"
            | string "optimizeSpeed"
            | string "crispEdges"
            | string "geometricPrecision"
            | string "inherit"
        }?
    SVG.text-rendering.attrib =
        attribute text-rendering {
            string "auto"
            | string "optimizeSpeed"
            | string "optimizeLegibility"
            | string "geometricPrecision"
            | string "inherit"
        }?
    SVG.Graphics.attrib &=
        SVG.image-rendering.attrib,
        SVG.pointer-events.attrib,
        SVG.shape-rendering.attrib,
        SVG.text-rendering.attrib
}
