Changeset 174

Show
Ignore:
Timestamp:
12/11/06 17:20:50
Author:
dan
Message:

Gerrit Karius' new svg xslt
http://osflash.org/pipermail/swfmill_osflash.org/2006-September/000956.html.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/xslt/simple-svg.xslt

    r163 r174  
    99                                extension-element-prefixes="swft" 
    1010                                version='1.0'> 
     11 
     12<!-- named template for redundant transforms --> 
     13<xsl:template name="transform"> 
     14        <transform> 
     15                <xsl:choose> 
     16                        <!-- catch empty transform attributes. --> 
     17                        <xsl:when test="not(@transform) or @transform=''"> 
     18                                <Transform transX="0" transY="0"/> 
     19                        </xsl:when> 
     20                        <xsl:otherwise> 
     21                                <xsl:copy-of select="swft:transform(@transform)"/> 
     22                        </xsl:otherwise> 
     23                </xsl:choose> 
     24        </transform> 
     25</xsl:template> 
    1126 
    1227<!-- named template for redundant placing --> 
     
    4661        <PlaceObject2 replace="0" depth="{swft:next-depth()}" name="{$name}"  
    4762objectID="{$id}"> 
    48                 <transform> 
    49                         <xsl:choose> 
    50                                 <xsl:when test="@transform"> 
    51                                         <xsl:copy-of select="swft:transform(@transform)"/> 
    52                                 </xsl:when> 
    53                                 <xsl:otherwise> 
     63                <!-- svg:use elements add an instance transform, all others have it  
     64included in their definition. --> 
     65                <xsl:choose> 
     66                        <xsl:when test="name()='use'"> 
     67                                <xsl:call-template name="transform" /> 
     68                        </xsl:when> 
     69                        <xsl:otherwise> 
     70                                <transform> 
    5471                                        <Transform transX="0" transY="0"/> 
    55                                 </xsl:otherwise
    56                         </xsl:choose> 
    57                 </transform
     72                                </transform
     73                        </xsl:otherwise> 
     74                </xsl:choose
    5875        </PlaceObject2> 
    5976</xsl:template> 
     
    6784                        <PlaceObject2 replace="0" depth="{swft:next-depth()}"  
    6885objectID="{$innerid}"> 
    69                                 <transform> 
    70                                         <Transform transX="0" transY="0"/> 
    71                                 </transform> 
     86                                <xsl:call-template name="transform" /> 
    7287                        </PlaceObject2> 
    7388                        <ShowFrame/> 
     
    107122        <!-- initiate the definition pass. --> 
    108123        <xsl:apply-templates mode="queue" /> 
    109         <!-- define svg as sprite. --> 
     124        <!-- define svg root as sprite. --> 
    110125        <DefineSprite objectID="{$id}" frames="1"> 
    111126                <tags> 
     
    118133</xsl:template> 
    119134 
    120 <xsl:template match="svg:g|svg:path|svg:rect|svg:use|svg:text" mode="queue"> 
     135<xsl:template match="svg:g|svg:path|svg:rect|svg:use|svg:text|svg:flowRoot"  
     136mode="queue"> 
    121137        <xsl:variable name="id"><xsl:value-of  
    122138select="swft:map-id(@id)"/></xsl:variable> 
     
    134150</xsl:template> 
    135151 
    136 <xsl:template match="svg:g|svg:path|svg:rect|svg:use|svg:text"  
     152<xsl:template match="svg:g|svg:path|svg:rect|svg:use|svg:text|svg:flowRoot"  
    137153mode="placement"> 
    138154        <!-- no definition. just place this element. --> 
     
    144160        <xsl:param name="name"/> 
    145161 
    146         <!-- define the group and place the subparts --> 
    147         <DefineSprite objectID="{$id}" frames="1"> 
    148                 <tags> 
    149                         <xsl:apply-templates mode="placement" /> 
    150                         <ShowFrame/> 
    151                         <End/> 
    152                 </tags> 
    153         </DefineSprite> 
     162        <!-- test if a wrapper is needed for a group transform --> 
     163        <xsl:choose> 
     164                <xsl:when test="not(@transform) or @transform='' or  
     165transform='translate(0,0)'"> 
     166                        <!-- no transform, define the group and place the subparts --> 
     167                        <DefineSprite objectID="{$id}" frames="1"> 
     168                                <tags> 
     169                                        <xsl:apply-templates mode="placement" /> 
     170                                        <ShowFrame/> 
     171                                        <End/> 
     172                                </tags> 
     173                        </DefineSprite> 
     174                </xsl:when> 
     175                <xsl:otherwise> 
     176                        <!-- define an inner group and wrap it with the group transform --> 
     177                        <xsl:variable name="innerid"><xsl:value-of  
     178select="swft:next-id()"/></xsl:variable> 
     179                        <DefineSprite objectID="{$innerid}" frames="1"> 
     180                                <tags> 
     181                                        <xsl:apply-templates mode="placement" /> 
     182                                        <ShowFrame/> 
     183                                        <End/> 
     184                                </tags> 
     185                        </DefineSprite> 
     186                        <xsl:call-template name="wrapElement"> 
     187                                <xsl:with-param name="innerid" select="$innerid" /> 
     188                        </xsl:call-template> 
     189                </xsl:otherwise> 
     190        </xsl:choose> 
    154191        <!-- export --> 
    155192        <xsl:call-template name="exportElement" /> 
     
    219256        <!-- define the element --> 
    220257        <DefineEditText objectID="{$shapeid}" wordWrap="1" multiLine="1"  
    221 password="0" 
    222                 readOnly="0" autoSize="0" hasLayout="1" 
    223                 notSelectable="0" hasBorder="1" isHTML="0" useOutlines="1" 
    224                 fontRef="{swft:map-id('vera')}" fontHeight="240" 
    225                 align="0" leftMargin="0" rightMargin="0" indent="0" leading="41" 
    226                 variableName="{@name}"> 
     258password="0" readOnly="0" autoSize="0" hasLayout="1" notSelectable="0"  
     259hasBorder="0" isHTML="0" useOutlines="0" fontRef="{swft:map-id('vera')}"  
     260fontHeight="240" align="0" leftMargin="0" rightMargin="0" indent="0"  
     261leading="40" variableName="{@name}"> 
    227262                <xsl:attribute name="initialText"> 
    228                         <xsl:value-of select="normalize-space(.)"/> 
     263                        <xsl:apply-templates mode="svg-text"/> 
    229264                </xsl:attribute> 
    230265                <size> 
    231                         <Rectangle left="{svg:flowRegion/svg:rect/@x * 20}" 
    232                                                 right="{(svg:flowRegion/svg:rect/@x + svg:flowRegion/svg:rect/@width)*  
    233 20}" 
    234                                                 top="{svg:flowRegion/svg:rect/@y * 20}" 
    235                                                 bottom="{(svg:flowRegion/svg:rect/@y +  
    236 svg:flowRegion/svg:rect/@height)* 20}"/> 
     266                        <Rectangle left="{svg:flowRegion/svg:rect/@x * 20}"  
     267right="{(svg:flowRegion/svg:rect/@x + svg:flowRegion/svg:rect/@width)* 20}"  
     268top="{svg:flowRegion/svg:rect/@y * 20}" bottom="{(svg:flowRegion/svg:rect/@y  
     269+ svg:flowRegion/svg:rect/@height)* 20}"/> 
    237270                </size> 
    238271                <color> 
    239                         <ColorRGBA red="100" green="150" blue="200" alpha="127"/> 
     272                        <Color red="0" green="0" blue="0" alpha="255"/> 
    240273                </color> 
    241274        </DefineEditText> 
     
    256289        <!-- define the element --> 
    257290        <DefineEditText objectID="{$shapeid}" wordWrap="0" multiLine="1"  
    258 password="0" 
    259                 readOnly="1" autoSize="1" hasLayout="1" 
    260                 notSelectable="1" hasBorder="0" isHTML="0" useOutlines="1" 
    261                 fontRef="{swft:map-id('vera')}" fontHeight="240" 
    262                 align="0" leftMargin="0" rightMargin="0" indent="0" leading="1" 
    263                 variableName="{@name}"> 
    264                 <xsl:attribute name="initialText"> 
    265                         <xsl:apply-templates mode="svg-text"/> 
    266                 </xsl:attribute> 
    267                 <size> 
    268                         <Rectangle left="{@x * 20}" 
    269                                                 right="{@x * 30}" 
    270                                                 top="{@y * 20}" 
    271                                                 bottom="{@y * 30}"/> 
    272                 </size> 
    273                 <color> 
    274                         <ColorRGBA red="255" green="255" blue="255" alpha="255"/> 
    275                 </color> 
     291password="0" readOnly="1" autoSize="1" hasLayout="1" notSelectable="1"  
     292hasBorder="0" isHTML="0" useOutlines="0" fontRef="{swft:map-id('vera')}"  
     293fontHeight="240" align="0" leftMargin="0" rightMargin="0" indent="0"  
     294leading="40" variableName="{@name}"> 
     295        <xsl:attribute name="initialText"> 
     296                <xsl:apply-templates mode="svg-text"/> 
     297        </xsl:attribute> 
     298        <size> 
     299                <Rectangle left="{@x * 20}" right="{@x * 30}" top="{@y * 20}" bottom="{@y  
     300* 30}"/> 
     301        </size> 
     302        <color> 
     303                <Color red="0" green="0" blue="0" alpha="255"/> 
     304        </color> 
    276305        </DefineEditText> 
    277306        <!-- wrap in sprite --> 
     
    283312</xsl:template> 
    284313 
     314<xsl:template match="svg:flowRegion" mode="svg-text"> 
     315        <xsl:apply-templates mode="svg-text"/> 
     316</xsl:template> 
     317 
     318<xsl:template match="svg:flowPara" mode="svg-text"> 
     319        <xsl:apply-templates mode="svg-text"/> 
     320</xsl:template> 
     321 
    285322<xsl:template match="svg:tspan[position()=1]" mode="svg-text"> 
    286323        <xsl:apply-templates mode="svg-text"/> 
     
    289326<xsl:template match="svg:tspan" mode="svg-text" priority="-1"> 
    290327        <xsl:text> 
    291 </xsl:text> 
     328       </xsl:text> 
    292329        <xsl:apply-templates mode="svg-text"/> 
    293330</xsl:template>