?? mdtsvgblkd_ioports.xsl
字號:
<?xml version="1.0" standalone="no"?><xsl:stylesheet version="1.0" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:math="http://exslt.org/math" xmlns:xlink="http://www.w3.org/1999/xlink" extension-element-prefixes="math"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD SVG 1.0//EN" doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/> <!-- <xsl:param name="BLKD_IOP_H" select="16"/> <xsl:param name="BLKD_IOP_W" select="16"/> <xsl:param name="BLKD_IOP_SPC" select="12"/> <xsl:param name="MOD_IO_GAP" select="8"/> --> <!-- ======================= DEF BLOCK =============================== --><xsl:template name="Define_IOPorts"> <xsl:variable name="key_col_"> <xsl:call-template name="BusType2Color"> <xsl:with-param name="iBusType" select="'KEY'"/> </xsl:call-template> </xsl:variable> <xsl:variable name="key_lt_col_"> <xsl:call-template name="BusType2LightColor"> <xsl:with-param name="iBusType" select="'KEY'"/> </xsl:call-template> </xsl:variable> <symbol id="G_IOPort"> <rect x="0" y="0" width= "{$BLKD_IOP_W}" height="{$BLKD_IOP_H}" style="fill:{$COL_IORING_LT}; stroke:{$COL_IORING}; stroke-width:1"/> <path class="ioport" d="M 0,0 L {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)} L 0,{$BLKD_IOP_H} Z" style="stroke:none; fill:{$COL_SYSPRT}"/> </symbol> <symbol id="G_BIPort"> <rect x="0" y="0" width= "{$BLKD_IOP_W}" height="{$BLKD_IOP_H}" style="fill:{$COL_IORING_LT}; stroke:{$COL_IORING}; stroke-width:1"/> <path class="btop" d="M 0,{ceiling($BLKD_IOP_H div 2)} {ceiling($BLKD_IOP_W div 2)},0 {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)} Z" style="stroke:none; fill:{$COL_SYSPRT}"/> <path class="bbot" d="M 0,{ceiling($BLKD_IOP_H div 2)} {ceiling($BLKD_IOP_W div 2)},{$BLKD_IOP_H} {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)} Z" style="stroke:none; fill:{$COL_SYSPRT}"/> </symbol> <symbol id="KEY_IOPort"> <rect x="0" y="0" width= "{$BLKD_IOP_W}" height="{$BLKD_IOP_H}" style="fill:{$key_lt_col_}; stroke:none;"/> <path class="ioport" d="M 0,0 L {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)} L 0,{$BLKD_IOP_H} Z" style="stroke:none; fill:{$key_col_}"/> </symbol> <symbol id="KEY_BIPort"> <rect x="0" y="0" width= "{$BLKD_IOP_W}" height="{$BLKD_IOP_H}" style="fill:{$key_lt_col_}; stroke:none;"/> <path class="btop" d="M 0,{ceiling($BLKD_IOP_H div 2)} {ceiling($BLKD_IOP_W div 2)},0 {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)} Z" style="stroke:none; fill:{$key_col_}"/> <path class="bbot" d="M 0,{ceiling($BLKD_IOP_H div 2)} {ceiling($BLKD_IOP_W div 2)},{$BLKD_IOP_H} {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)} Z" style="stroke:none; fill:{$key_col_}"/> </symbol> <symbol id="KEY_INPort"> <use x="0" y="0" xlink:href="#KEY_IOPort"/> <rect x="{$BLKD_IOP_W}" y="0" width= "{ceiling($BLKD_IOP_W div 2)}" height="{$BLKD_IOP_H}" style="fill:{$COL_SYSPRT}; stroke:none;"/> </symbol> <symbol id="KEY_OUTPort"> <use x="0" y="0" xlink:href="#KEY_IOPort" transform="scale(-1,1) translate({$BLKD_IOP_W * -1},0)"/> <rect x="{$BLKD_IOP_W}" y="0" width= "{ceiling($BLKD_IOP_W div 2)}" height="{$BLKD_IOP_H}" style="fill:{$COL_SYSPRT}; stroke:none;"/> </symbol> <symbol id="KEY_INOUTPort"> <use x="0" y="0" xlink:href="#KEY_BIPort"/> <rect x="{$BLKD_IOP_W}" y="0" width= "{ceiling($BLKD_IOP_W div 2)}" height="{$BLKD_IOP_H}" style="fill:{$COL_SYSPRT}; stroke:none;"/> </symbol></xsl:template><!-- ======================= DRAW BLOCK =============================== --><xsl:template name="Draw_IOPorts"> <xsl:variable name="ports_count_" select="count(EXTERNALPORTS/PORT)"/> <xsl:if test="($ports_count_ > 30)"> <xsl:call-template name="Draw_IOPorts_4Sides"/> </xsl:if> <xsl:if test="($ports_count_ <= 30)"> <xsl:call-template name="Draw_IOPorts_2Sides"/> </xsl:if></xsl:template><xsl:template name="Draw_IOPorts_2Sides"> <xsl:variable name="ports_count_" select="count(EXTERNALPORTS/PORT)"/> <xsl:variable name="ports_per_side_" select="ceiling($ports_count_ div 2)"/> <xsl:variable name="h_ofs_"> <xsl:value-of select="$BLKD_PRTCHAN_W + ceiling(($G_total_drawarea_W - (($ports_per_side_ * $BLKD_IOP_W) + (($ports_per_side_ - 1) * $BLKD_IOP_SPC))) div 2)"/> </xsl:variable> <xsl:variable name="v_ofs_"> <xsl:value-of select="$BLKD_PRTCHAN_H + ceiling(($G_total_drawarea_H - (($ports_per_side_ * $BLKD_IOP_H) + (($ports_per_side_ - 1) * $BLKD_IOP_SPC))) div 2)"/> </xsl:variable> <xsl:for-each select="EXTERNALPORTS/PORT"> <xsl:sort data-type="number" select="@INDEX" order="ascending"/> <xsl:variable name="poffset_" select="0"/> <xsl:variable name="pcount_" select="$poffset_ + (position() -1)"/> <xsl:variable name="pdir_"> <xsl:choose> <xsl:when test="(@DIR='I' or @DIR='IN' or @DIR='INPUT')">I</xsl:when> <xsl:when test="(@DIR='O' or @DIR='OUT' or @DIR='OUTPUT')">O</xsl:when> <xsl:when test="(@DIR='IO' or @DIR='INOUT')">B</xsl:when> <xsl:otherwise>I</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="pside_"> <xsl:choose> <xsl:when test="($pcount_ >= ($ports_per_side_ * 0) and ($pcount_ < ($ports_per_side_ * 1)))">W</xsl:when> <xsl:when test="($pcount_ >= ($ports_per_side_ * 1) and ($pcount_ < ($ports_per_side_ * 2)))">E</xsl:when> <xsl:otherwise>D</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="pdec_"> <xsl:choose> <xsl:when test="($pside_ = 'W')"><xsl:value-of select="($ports_per_side_ * 0)"/></xsl:when> <xsl:when test="($pside_ = 'E')"><xsl:value-of select="($ports_per_side_ * 1)"/></xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="px_"> <xsl:choose> <xsl:when test="($pside_ = 'W')"><xsl:value-of select="($BLKD_PRTCHAN_W - $BLKD_IOP_W)"/></xsl:when> <xsl:when test="($pside_ = 'S')"><xsl:value-of select="($h_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_W)) - 2)"/></xsl:when> <xsl:when test="($pside_ = 'E')"><xsl:value-of select="($BLKD_PRTCHAN_W + ($BLKD_IORCHAN_W * 2) + $G_total_drawarea_W)"/></xsl:when> <xsl:when test="($pside_ = 'N')"><xsl:value-of select="($h_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_W)))"/></xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="py_"> <xsl:choose> <xsl:when test="($pside_ = 'W')"><xsl:value-of select="($v_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_H)))"/></xsl:when> <xsl:when test="($pside_ = 'S')"><xsl:value-of select="($BLKD_PRTCHAN_H + ($BLKD_IORCHAN_H * 2) + $G_total_drawarea_H)"/></xsl:when> <xsl:when test="($pside_ = 'E')"><xsl:value-of select="($v_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_H)))"/></xsl:when> <xsl:when test="($pside_ = 'N')"><xsl:value-of select="($BLKD_PRTCHAN_H - $BLKD_IOP_H)"/></xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="prot_"> <xsl:choose> <xsl:when test="(($pside_ = 'W') and ($pdir_ = 'I'))">0</xsl:when> <xsl:when test="(($pside_ = 'S') and ($pdir_ = 'I'))">-90</xsl:when> <xsl:when test="(($pside_ = 'E') and ($pdir_ = 'I'))">180</xsl:when> <xsl:when test="(($pside_ = 'N') and ($pdir_ = 'I'))">90</xsl:when> <xsl:when test="(($pside_ = 'W') and ($pdir_ = 'O'))">180</xsl:when> <xsl:when test="(($pside_ = 'S') and ($pdir_ = 'O'))">90</xsl:when> <xsl:when test="(($pside_ = 'E') and ($pdir_ = 'O'))">0</xsl:when> <xsl:when test="(($pside_ = 'N') and ($pdir_ = 'O'))">-90</xsl:when> <xsl:when test="(($pside_ = 'W') and ($pdir_ = 'B'))">0</xsl:when> <xsl:when test="(($pside_ = 'S') and ($pdir_ = 'B'))">0</xsl:when> <xsl:when test="(($pside_ = 'E') and ($pdir_ = 'B'))">0</xsl:when> <xsl:when test="(($pside_ = 'N') and ($pdir_ = 'B'))">0</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="txo_"> <xsl:choose> <xsl:when test="($pside_ = 'W')">-10</xsl:when> <xsl:when test="($pside_ = 'S')">6</xsl:when> <xsl:when test="($pside_ = 'E')"><xsl:value-of select="(($BLKD_IOP_W * 2) - 4)"/></xsl:when> <xsl:when test="($pside_ = 'N')">6</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="tyo_"> <xsl:choose> <xsl:when test="($pside_ = 'W')"><xsl:value-of select="ceiling($BLKD_IOP_H div 2) + 6"/></xsl:when>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -