Update chart XSL

• Move planet group (<g>) creation to a template
• Add planet-X class to all aspect and antiscia lines so they can be hidden
  later one by one
• Move houses to their separate group
• Chart base is now a separate group, as it was intended
• Move from value_name to value_nick. It's shorter and makes using the
  substring function obsolete
• Antiscion lines got their own class
• Move away from visibility to display attribute. visibility in SVG can
  can be overridden, thus switching between aspects and antiscia cannot
  be done if the future display themes tamper with the lines’ visibility
  style
This commit is contained in:
Gergely Polonkai 2014-09-07 00:28:49 +02:00
parent d2f0ab2bc6
commit 4ecef146c2
4 changed files with 198 additions and 186 deletions

View File

@ -1549,7 +1549,7 @@ ag_chart_create_svg(AgChart *chart, gsize *length, GError **err)
G_ENUM_CLASS(planets_class),
gswe_planet_data_get_planet(planet_data)
);
xmlNewProp(node, BAD_CAST "name", BAD_CAST enum_value->value_name);
xmlNewProp(node, BAD_CAST "name", BAD_CAST enum_value->value_nick);
value = g_malloc0(12);
g_ascii_dtostr(value, 12, gswe_planet_data_get_position(planet_data));
@ -1598,14 +1598,14 @@ ag_chart_create_svg(AgChart *chart, gsize *length, GError **err)
G_ENUM_CLASS(planets_class),
gswe_planet_data_get_planet(planet_data)
);
xmlNewProp(node, BAD_CAST "body1", BAD_CAST enum_value->value_name);
xmlNewProp(node, BAD_CAST "body1", BAD_CAST enum_value->value_nick);
planet_data = gswe_aspect_data_get_planet2(aspect_data);
enum_value = g_enum_get_value(
G_ENUM_CLASS(planets_class),
gswe_planet_data_get_planet(planet_data)
);
xmlNewProp(node, BAD_CAST "body2", BAD_CAST enum_value->value_name);
xmlNewProp(node, BAD_CAST "body2", BAD_CAST enum_value->value_nick);
enum_value = g_enum_get_value(
G_ENUM_CLASS(aspects_class),
@ -1643,20 +1643,20 @@ ag_chart_create_svg(AgChart *chart, gsize *length, GError **err)
G_ENUM_CLASS(planets_class),
gswe_planet_data_get_planet(planet_data)
);
xmlNewProp(node, BAD_CAST "body1", BAD_CAST enum_value->value_name);
xmlNewProp(node, BAD_CAST "body1", BAD_CAST enum_value->value_nick);
planet_data = gswe_antiscion_data_get_planet2(antiscion_data);
enum_value = g_enum_get_value(
G_ENUM_CLASS(planets_class),
gswe_planet_data_get_planet(planet_data)
);
xmlNewProp(node, BAD_CAST "body2", BAD_CAST enum_value->value_name);
xmlNewProp(node, BAD_CAST "body2", BAD_CAST enum_value->value_nick);
enum_value = g_enum_get_value(
G_ENUM_CLASS(antiscia_class),
gswe_antiscion_data_get_axis(antiscion_data)
);
xmlNewProp(node, BAD_CAST "axis", BAD_CAST enum_value->value_name);
xmlNewProp(node, BAD_CAST "axis", BAD_CAST enum_value->value_nick);
}
g_type_class_unref(planets_class);

View File

@ -1400,8 +1400,8 @@ ag_window_connection_action(GSimpleAction *action,
);
static gchar *js = "aspects = document.getElementById('aspects');\n" \
"antiscia = document.getElementById('antiscia');\n" \
"aspects.setAttribute('visibility', '%s');\n" \
"antiscia.setAttribute('visibility', '%s');\n";
"aspects.setAttribute('display', '%s');\n" \
"antiscia.setAttribute('display', '%s');\n";
current_state = g_action_get_state(G_ACTION(action));
@ -1415,10 +1415,10 @@ ag_window_connection_action(GSimpleAction *action,
if (strcmp("aspects", state) == 0) {
g_debug("Switching to aspects");
js_code = g_strdup_printf(js, "visible", "hidden");
js_code = g_strdup_printf(js, "block", "none");
} else if (strcmp("antiscia", state) == 0) {
g_debug("Switching to antiscia");
js_code = g_strdup_printf(js, "hidden", "visible");
js_code = g_strdup_printf(js, "none", "block");
} else {
g_warning("Connection type '%s' is invalid", state);
}

View File

@ -128,3 +128,9 @@ line.aspect-biquintile {
line.aspect-quincunx {
stroke: #cc0000;
}
line.antiscion {
stroke-width: 1;
stroke: #000000;
stroke-dasharray: 20,10;
}

View File

@ -2,6 +2,7 @@
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:math="http://exslt.org/math">
<xsl:output
method="xml"
@ -18,6 +19,49 @@
<xsl:variable name="icon_size" select="30" />
<xsl:variable name="r_aspect" select="$image_size * 0.3" />
<xsl:template name="planet-template">
<xsl:param name="planet_name"/>
<xsl:param name="planet_base"/>
<xsl:param name="rotate"/>
<xsl:param name="dist"/>
<xsl:param name="retrograde"/>
<xsl:param name="upside-down"/>
<g xmlns="http://www.w3.org/2000/svg">
<xsl:attribute name="id">planet-<xsl:value-of select="$planet_name"/></xsl:attribute>
<xsl:attribute name="class">planet planet-<xsl:value-of select="$planet_name"/></xsl:attribute>
<xsl:attribute name="transform">rotate(<xsl:value-of select="-$rotate"/>, 0, 0)</xsl:attribute>
<line y1="0" y2="0" class="planet-marker">
<xsl:attribute name="x1"><xsl:value-of select="$image_size * 0.2875"/></xsl:attribute>
<xsl:attribute name="x2"><xsl:value-of select="$image_size * 0.3"/></xsl:attribute>
</line>
<line y1="0" y2="0" class="planet-marker">
<xsl:attribute name="x1"><xsl:value-of select="$image_size * 0.375"/></xsl:attribute>
<xsl:attribute name="x2"><xsl:value-of select="$image_size * 0.3875"/></xsl:attribute>
</line>
<g>
<xsl:attribute name="transform">translate(<xsl:value-of select="$image_size * 0.4125 + $dist * ($icon_size * 1.1666666)"/>, <xsl:value-of select="-$icon_size div 2"/>) rotate(<xsl:value-of select="$rotate - $asc_rotate"/>, <xsl:value-of select="$icon_size div 2"/>, <xsl:value-of select="$icon_size div 2"/>)</xsl:attribute>
<use class="planet-symbol">
<xsl:attribute name="xlink:href">#<xsl:value-of select="$planet_base"/>_tmpl</xsl:attribute>
<xsl:choose>
<xsl:when test="$upside-down='yes'">
<xsl:attribute name="transform">rotate(180, <xsl:value-of select="$icon_size div 2"/>, <xsl:value-of select="$icon_size div 2"/>)</xsl:attribute>
</xsl:when>
</xsl:choose>
</use>
<xsl:choose>
<xsl:when test="$retrograde='True'">
<text>
<xsl:attribute name="font-size"><xsl:value-of select="$icon_size div 2"/></xsl:attribute>
<xsl:attribute name="transform">translate(<xsl:value-of select="$icon_size"/>, <xsl:value-of select="$icon_size * 1.5"/>)</xsl:attribute>
R
</text>
</xsl:when>
</xsl:choose>
</g>
</g>
</xsl:template>
<xsl:template match="/">
<svg
xmlns="http://www.w3.org/2000/svg"
@ -505,7 +549,9 @@
<use x="0" y="0" xlink:href="#sign_pisces_tmpl" id="sign_pisces" class="sign sign-water">
<xsl:attribute name="transform">rotate(-345,0,0) translate(<xsl:value-of select="$image_size * 0.32625"/>,-<xsl:value-of select="$icon_size div 2"/>) rotate(90,<xsl:value-of select="$icon_size div 2"/>,<xsl:value-of select="$icon_size div 2"/>)</xsl:attribute>
</use>
</g>
<g id="houes">
<xsl:for-each select="chartinfo/houses/house">
<xsl:variable name="next_house" select="@number + 1"/>
<xsl:variable name="next_degree_read">
@ -581,191 +627,151 @@
<xsl:attribute name="x2"><xsl:value-of select="$image_size * 0.0625"/></xsl:attribute>
<xsl:attribute name="transform"><xsl:value-of select="concat('rotate(-', $mc, ')')" /></xsl:attribute>
</line>
</g>
<g id="planets">
<xsl:for-each select="chartinfo/ascmcs/vertex">
<xsl:variable name="planet_base">point_vertex</xsl:variable>
<xsl:variable name="degree"><xsl:value-of select="@degree_ut" /></xsl:variable>
<xsl:variable name="negative_degree"><xsl:value-of select="0 - $degree" /></xsl:variable>
<g>
<xsl:attribute name="id"><xsl:value-of select="$planet_base"/></xsl:attribute>
<xsl:attribute name="transform"><xsl:value-of select="concat('rotate(', $negative_degree, ',0,0)')"/></xsl:attribute>
<line y1="0" y2="0" class="planet-marker">
<xsl:attribute name="x1"><xsl:value-of select="$image_size * 0.2875"/></xsl:attribute>
<xsl:attribute name="x2"><xsl:value-of select="$image_size * 0.3"/></xsl:attribute>
<xsl:attribute name="id"><xsl:value-of select="concat('mark_', $planet_base)" /></xsl:attribute>
</line>
<line y1="0" y2="0" class="planet-marker">
<xsl:attribute name="x1"><xsl:value-of select="$image_size * 0.375"/></xsl:attribute>
<xsl:attribute name="x2"><xsl:value-of select="$image_size * 0.4"/></xsl:attribute>
<xsl:attribute name="id"><xsl:value-of select="concat('mark_', $planet_base, '_outer')" /></xsl:attribute>
</line>
<use class="planet-symbol">
<xsl:attribute name="xlink:href"><xsl:value-of select="concat('#', $planet_base, '_tmpl')"/></xsl:attribute>
<xsl:attribute name="transform"><xsl:value-of select="concat('translate(',$image_size * 0.4125,',-',$icon_size div 2,') rotate(', $degree - $asc_rotate ,',', $icon_size div 2, ',', $icon_size div 2, ')')"/></xsl:attribute>
</use>
</g>
</xsl:for-each>
<xsl:for-each select="chartinfo/bodies/body">
<xsl:variable name="planet_base" select="substring(translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 6)"/>
<xsl:variable name="negative_degree"><xsl:value-of select="0 - @degree"/></xsl:variable>
<g>
<xsl:attribute name="id"><xsl:value-of select="$planet_base"/></xsl:attribute>
<xsl:attribute name="transform"><xsl:value-of select="concat('rotate(', $negative_degree, ',0,0)')"/></xsl:attribute>
<line y1="0" y2="0" class="planet-marker">
<xsl:attribute name="x1"><xsl:value-of select="$image_size * 0.2875"/></xsl:attribute>
<xsl:attribute name="x2"><xsl:value-of select="$image_size * 0.3"/></xsl:attribute>
<xsl:attribute name="id"><xsl:value-of select="concat('mark_', $planet_base)" /></xsl:attribute>
</line>
<line y1="0" y2="0" class="planet-marker">
<xsl:attribute name="x1"><xsl:value-of select="$image_size * 0.375"/></xsl:attribute>
<xsl:attribute name="x2"><xsl:value-of select="$image_size * 0.3875"/></xsl:attribute>
<xsl:attribute name="id"><xsl:value-of select="concat('mark_', $planet_base, '_outer')" /></xsl:attribute>
</line>
<use class="planet-symbol">
<xsl:attribute name="xlink:href"><xsl:value-of select="concat('#', $planet_base, '_tmpl')"/></xsl:attribute>
<xsl:attribute name="transform"><xsl:value-of select="concat('translate(', $image_size * 0.4125 + @dist * ($icon_size * 1.1666666), ',-', $icon_size div 2, ') rotate(', @degree - $asc_rotate ,',', $icon_size div 2, ',', $icon_size div 2, ')')"/></xsl:attribute>
</use>
<xsl:choose>
<xsl:when test="@retrograde='True'">
<text>
<xsl:attribute name="transform"><xsl:value-of select="concat('translate(', $image_size * 0.45625 + @dist * $icon_size * 1.1666666, ',', $icon_size div 2, ') rotate(', @degree - $asc_rotate, ',-', $icon_size * 0.666666, ',-', $icon_size * 0.666666, ')')"/></xsl:attribute>
R
</text>
</xsl:when>
</xsl:choose>
</g>
<g id="planets">
<xsl:for-each select="chartinfo/ascmcs/vertex">
<xsl:call-template name="planet-template">
<xsl:with-param name="planet_name">vertex</xsl:with-param>
<xsl:with-param name="rotate"><xsl:value-of select="@degree_ut"/></xsl:with-param>
<xsl:with-param name="planet_base">point_vertex</xsl:with-param>
<!-- TODO: dist must be calculated for Vertex, too! -->
<xsl:with-param name="dist">0</xsl:with-param>
<xsl:with-param name="retrograde">False</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
<xsl:for-each select="chartinfo/bodies/body">
<xsl:call-template name="planet-template">
<xsl:with-param name="planet_name"><xsl:value-of select="@name"/></xsl:with-param>
<xsl:with-param name="rotate"><xsl:value-of select="@degree"/></xsl:with-param>
<xsl:with-param name="planet_base">planet_<xsl:value-of select="translate(@name, '-', '_')"/></xsl:with-param>
<xsl:with-param name="dist"><xsl:value-of select="@dist"/></xsl:with-param>
<xsl:with-param name="retrograde"><xsl:value-of select="@retrograde"/></xsl:with-param>
</xsl:call-template>
<xsl:choose>
<xsl:when test="@name='moon-node'">
<xsl:call-template name="planet-template">
<xsl:with-param name="planet_name"><xsl:value-of select="@name"/>-desc</xsl:with-param>
<xsl:with-param name="rotate"><xsl:value-of select="180 + @degree"/></xsl:with-param>
<xsl:with-param name="planet_base">planet_moon_node</xsl:with-param>
<xsl:with-param name="dist"><xsl:value-of select="@dist"/></xsl:with-param>
<xsl:with-param name="retrograde"><xsl:value-of select="@retrograde"/></xsl:with-param>
<xsl:with-param name="upside-down">yes</xsl:with-param>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</g>
<g id="aspects">
<xsl:for-each select="chartinfo/aspects/aspect">
<xsl:variable name="planet1" select="@body1"/>
<xsl:variable name="deg1">
<xsl:choose>
<xsl:when test="@name='GSWE_PLANET_MOON_NODE'">
<g>
<xsl:attribute name="id"><xsl:value-of select="concat($planet_base, '_desc')"/></xsl:attribute>
<xsl:attribute name="transform"><xsl:value-of select="concat('rotate(', 180 + $negative_degree, ',0,0)')"/></xsl:attribute>
<line y1="0" y2="0" class="planet-marker">
<xsl:attribute name="x1"><xsl:value-of select="$image_size * 0.2875"/></xsl:attribute>
<xsl:attribute name="x2"><xsl:value-of select="$image_size * 0.3"/></xsl:attribute>
<xsl:attribute name="id"><xsl:value-of select="concat('mark_', $planet_base)" /></xsl:attribute>
</line>
<line y1="0" y2="0" class="planet-marker">
<xsl:attribute name="x1"><xsl:value-of select="$image_size * 0.375"/></xsl:attribute>
<xsl:attribute name="x2"><xsl:value-of select="$image_size * 0.3875"/></xsl:attribute>
<xsl:attribute name="id"><xsl:value-of select="concat('mark_', $planet_base, '_outer')" /></xsl:attribute>
</line>
<use class="planet-symbol">
<xsl:attribute name="xlink:href"><xsl:value-of select="concat('#', $planet_base, '_tmpl')"/></xsl:attribute>
<xsl:attribute name="transform"><xsl:value-of select="concat('translate(', $image_size * 0.4125, ',-', $icon_size div 2, ') rotate(', @degree - $asc_rotate ,',', $icon_size div 2, ',', $icon_size div 2, ')')"/></xsl:attribute>
</use>
</g>
<xsl:when test="$planet1='ascendant'">
<xsl:value-of select="/chartinfo/ascmcs/ascendant/@degree_ut" />
</xsl:when>
<xsl:when test="$planet1='mc'">
<xsl:value-of select="/chartinfo/ascmcs/mc/@degree_ut" />
</xsl:when>
<xsl:when test="$planet1='vertex'">
<xsl:value-of select="/chartinfo/ascmcs/vertex/@degree_ut" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/chartinfo/bodies/body[@name=$planet1]/@degree" />
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</g>
</xsl:variable>
<xsl:variable name="rad1" select="$deg1 * $PI div 180"/>
<xsl:variable name="x1" select="$r_aspect * math:cos($rad1)"/>
<xsl:variable name="y1" select="$r_aspect * -math:sin($rad1)"/>
<g id="aspects">
<xsl:for-each select="chartinfo/aspects/aspect">
<xsl:variable name="planet1" select="@body1"/>
<xsl:variable name="deg1">
<xsl:choose>
<xsl:when test="$planet1='GSWE_PLANET_ASCENDANT'">
<xsl:value-of select="/chartinfo/ascmcs/ascendant/@degree_ut" />
</xsl:when>
<xsl:when test="$planet1='GSWE_PLANET_MC'">
<xsl:value-of select="/chartinfo/ascmcs/mc/@degree_ut" />
</xsl:when>
<xsl:when test="$planet1='GSWE_PLANET_VERTEX'">
<xsl:value-of select="/chartinfo/ascmcs/vertex/@degree_ut" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/chartinfo/bodies/body[@name=$planet1]/@degree" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="rad1" select="$deg1 * $PI div 180"/>
<xsl:variable name="x1" select="$r_aspect * math:cos($rad1)"/>
<xsl:variable name="y1" select="$r_aspect * -math:sin($rad1)"/>
<xsl:variable name="planet2" select="@body2"/>
<xsl:variable name="deg2">
<xsl:choose>
<xsl:when test="$planet2='ascendant'">
<xsl:value-of select="/chartinfo/ascmcs/ascendant/@degree_ut" />
</xsl:when>
<xsl:when test="$planet2='mc'">
<xsl:value-of select="/chartinfo/ascmcs/mc/@degree_ut" />
</xsl:when>
<xsl:when test="$planet2='vertex'">
<xsl:value-of select="/chartinfo/ascmcs/vertex/@degree_ut" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/chartinfo/bodies/body[@name=$planet2]/@degree" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="rad2" select="$deg2 * $PI div 180"/>
<xsl:variable name="x2" select="$r_aspect * math:cos($rad2)"/>
<xsl:variable name="y2" select="$r_aspect * -math:sin($rad2)"/>
<xsl:variable name="planet2" select="@body2"/>
<xsl:variable name="deg2">
<xsl:choose>
<xsl:when test="$planet2='GSWE_PLANET_ASCENDANT'">
<xsl:value-of select="/chartinfo/ascmcs/ascendant/@degree_ut" />
</xsl:when>
<xsl:when test="$planet2='GSWE_PLANET_MC'">
<xsl:value-of select="/chartinfo/ascmcs/mc/@degree_ut" />
</xsl:when>
<xsl:when test="$planet2='GSWE_PLANET_VERTEX'">
<xsl:value-of select="/chartinfo/ascmcs/vertex/@degree_ut" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/chartinfo/bodies/body[@name=$planet2]/@degree" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="rad2" select="$deg2 * $PI div 180"/>
<xsl:variable name="x2" select="$r_aspect * math:cos($rad2)"/>
<xsl:variable name="y2" select="$r_aspect * -math:sin($rad2)"/>
<line class="aspect">
<xsl:attribute name="id">aspect-<xsl:value-of select="$planet1"/>-<xsl:value-of select="$planet2"/></xsl:attribute>
<xsl:attribute name="class">aspect aspect-<xsl:value-of select="@type"/> aspect-<xsl:value-of select="$planet1"/> aspect-<xsl:value-of select="$planet2"/></xsl:attribute>
<xsl:attribute name="x1"><xsl:value-of select="$x1"/></xsl:attribute>
<xsl:attribute name="y1"><xsl:value-of select="$y1"/></xsl:attribute>
<xsl:attribute name="x2"><xsl:value-of select="$x2"/></xsl:attribute>
<xsl:attribute name="y2"><xsl:value-of select="$y2"/></xsl:attribute>
</line>
</xsl:for-each>
</g>
<line class="aspect">
<xsl:attribute name="class"><xsl:value-of select="concat('aspect aspect-', @type)"/></xsl:attribute>
<xsl:attribute name="x1"><xsl:value-of select="$x1"/></xsl:attribute>
<xsl:attribute name="y1"><xsl:value-of select="$y1"/></xsl:attribute>
<xsl:attribute name="x2"><xsl:value-of select="$x2"/></xsl:attribute>
<xsl:attribute name="y2"><xsl:value-of select="$y2"/></xsl:attribute>
</line>
</xsl:for-each>
</g>
<g id="antiscia" display="none">
<xsl:for-each select="chartinfo/antiscia/antiscia">
<xsl:variable name="planet1" select="@body1"/>
<xsl:variable name="deg1">
<xsl:choose>
<xsl:when test="$planet1='ascendant'">
<xsl:value-of select="/chartinfo/ascmcs/ascendant/@degree_ut" />
</xsl:when>
<xsl:when test="$planet1='mc'">
<xsl:value-of select="/chartinfo/ascmcs/mc/@degree_ut" />
</xsl:when>
<xsl:when test="$planet1='vertex'">
<xsl:value-of select="/chartinfo/ascmcs/vertex/@degree_ut" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/chartinfo/bodies/body[@name=$planet1]/@degree" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="rad1" select="$deg1 * $PI div 180"/>
<xsl:variable name="x1" select="$r_aspect * math:cos($rad1)"/>
<xsl:variable name="y1" select="$r_aspect * -math:sin($rad1)"/>
<g id="antiscia" visibility="hidden">
<xsl:for-each select="chartinfo/antiscia/antiscia">
<xsl:variable name="planet1" select="@body1"/>
<xsl:variable name="deg1">
<xsl:choose>
<xsl:when test="$planet1='GSWE_PLANET_ASCENDANT'">
<xsl:value-of select="/chartinfo/ascmcs/ascendant/@degree_ut" />
</xsl:when>
<xsl:when test="$planet1='GSWE_PLANET_MC'">
<xsl:value-of select="/chartinfo/ascmcs/mc/@degree_ut" />
</xsl:when>
<xsl:when test="$planet1='GSWE_PLANET_VERTEX'">
<xsl:value-of select="/chartinfo/ascmcs/vertex/@degree_ut" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/chartinfo/bodies/body[@name=$planet1]/@degree" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="rad1" select="$deg1 * $PI div 180"/>
<xsl:variable name="x1" select="$r_aspect * math:cos($rad1)"/>
<xsl:variable name="y1" select="$r_aspect * -math:sin($rad1)"/>
<xsl:variable name="planet2" select="@body2"/>
<xsl:variable name="deg2">
<xsl:choose>
<xsl:when test="$planet2='ascendant'">
<xsl:value-of select="/chartinfo/ascmcs/ascendant/@degree_ut" />
</xsl:when>
<xsl:when test="$planet2='mc'">
<xsl:value-of select="/chartinfo/ascmcs/mc/@degree_ut" />
</xsl:when>
<xsl:when test="$planet2='vertex'">
<xsl:value-of select="/chartinfo/ascmcs/vertex/@degree_ut" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/chartinfo/bodies/body[@name=$planet2]/@degree" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="rad2" select="$deg2 * $PI div 180"/>
<xsl:variable name="x2" select="$r_aspect * math:cos($rad2)"/>
<xsl:variable name="y2" select="$r_aspect * -math:sin($rad2)"/>
<xsl:variable name="planet2" select="@body2"/>
<xsl:variable name="deg2">
<xsl:choose>
<xsl:when test="$planet2='GSWE_PLANET_ASCENDANT'">
<xsl:value-of select="/chartinfo/ascmcs/ascendant/@degree_ut" />
</xsl:when>
<xsl:when test="$planet2='GSWE_PLANET_MC'">
<xsl:value-of select="/chartinfo/ascmcs/mc/@degree_ut" />
</xsl:when>
<xsl:when test="$planet2='GSWE_PLANET_VERTEX'">
<xsl:value-of select="/chartinfo/ascmcs/vertex/@degree_ut" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/chartinfo/bodies/body[@name=$planet2]/@degree" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="rad2" select="$deg2 * $PI div 180"/>
<xsl:variable name="x2" select="$r_aspect * math:cos($rad2)"/>
<xsl:variable name="y2" select="$r_aspect * -math:sin($rad2)"/>
<line style="stroke-width:1;stroke:#000000;stroke-dasharray:20,10">
<xsl:attribute name="x1"><xsl:value-of select="$x1"/></xsl:attribute>
<xsl:attribute name="y1"><xsl:value-of select="$y1"/></xsl:attribute>
<xsl:attribute name="x2"><xsl:value-of select="$x2"/></xsl:attribute>
<xsl:attribute name="y2"><xsl:value-of select="$y2"/></xsl:attribute>
</line>
</xsl:for-each>
</g>
<line class="antiscion">
<xsl:attribute name="id">antiscion-<xsl:value-of select="$planet1"/>-<xsl:value-of select="$planet2"/></xsl:attribute>
<xsl:attribute name="class">antiscion antiscion-<xsl:value-of select="@axis"/> antiscion-<xsl:value-of select="$planet1"/> antiscion-<xsl:value-of select="$planet2"/></xsl:attribute>
<xsl:attribute name="x1"><xsl:value-of select="$x1"/></xsl:attribute>
<xsl:attribute name="y1"><xsl:value-of select="$y1"/></xsl:attribute>
<xsl:attribute name="x2"><xsl:value-of select="$x2"/></xsl:attribute>
<xsl:attribute name="y2"><xsl:value-of select="$y2"/></xsl:attribute>
</line>
</xsl:for-each>
</g>
</g>
</g>