Skip to content

Commit

Permalink
Deterministic identifiers in generated svg
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@19057 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed Feb 11, 2014
1 parent 64d687f commit c5640a5
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 15 deletions.
4 changes: 3 additions & 1 deletion Examples/GenerateDoc.mos
Expand Up @@ -336,8 +336,10 @@ writeFile("FindFiles.sh","#!/bin/bash
rm -f *.png *.pdf FindFiles.log
touch FindFiles.log
OMLIBRARY=\""+getInstallationDirectoryPath()+"/lib/omlibrary\"
alias urldecode='python -c \"import sys, urllib as ul; print ul.unquote_plus(sys.argv[1])\"'
for f in `sort -u tidy.links`; do
link=`echo $f | cut '-d!' -f2- | sed 's/%20/ /'`
link=`echo $f | cut '-d!' -f2-`
link=`urldecode $link`
if test -f \"$OMLIBRARY/$link\"; then
d=`dirname \"$link\"`
mkdir -p \"$d\"
Expand Down
44 changes: 30 additions & 14 deletions Examples/generate_icons.py
Expand Up @@ -31,7 +31,6 @@
import os
import re
import math
import uuid
import json
import logging
import sys
Expand All @@ -58,6 +57,7 @@ def classToFileName(cl):
# fileName
# imageSource

element_id = 0
regex_equal_key_value = re.compile("([^ =]+) *= *(\"[^\"]*\"|[^ ]*)")
regex_points = re.compile("{([+-]?\d+(?:.\d+)?), ([+-]?\d+(?:.\d+)?)}")

Expand Down Expand Up @@ -476,6 +476,7 @@ def getCoordinates(xy, graphics, minX, maxY, transformation, coordinateSystem):

# get svg object from modelica graphics object
def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transformation=None, coordinateSystem=None):
global element_id
shape = None
definitions = svgwrite.container.Defs()
origin = None
Expand Down Expand Up @@ -521,7 +522,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor

# markers
if graphics['arrow'][0] != 'Arrow.None':
url_id_start = graphics['arrow'][0] + '_start' + str(uuid.uuid4())
url_id_start = graphics['arrow'][0] + '_start' + str(element_id)
element_id += 1
marker = svgwrite.container.Marker(insert=(10, 5), size=(4, 3), orient='auto', id=url_id_start, viewBox="0 0 10 10")
p = svgwrite.path.Path(d="M 10 0 L 0 5 L 10 10 z")
p.fill("rgb(" + ','.join([str(v) for v in graphics['color']]) + ")")
Expand All @@ -530,7 +532,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor
shape['marker-start'] = marker.get_funciri()

if graphics['arrow'][1] != 'Arrow.None':
url_id_end = graphics['arrow'][1] + '_end' + str(uuid.uuid4())
url_id_end = graphics['arrow'][1] + '_end' + str(element_id)
element_id += 1
marker = svgwrite.container.Marker(insert=(0, 5), size=(4, 3), orient='auto', id=url_id_end, viewBox="0 0 10 10")
p = svgwrite.path.Path(d="M 0 0 L 10 5 L 0 10 z")
p.fill("rgb(" + ','.join([str(v) for v in graphics['color']]) + ")")
Expand Down Expand Up @@ -671,7 +674,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor
if graphics['borderPattern'] == 'BorderPattern.None':
pass
elif graphics['borderPattern'] == 'BorderPattern.Raised':
url_id = graphics['borderPattern'] + '_' + str(uuid.uuid4())
url_id = graphics['borderPattern'] + '_' + str(element_id)
element_id += 1
shape['filter'] = 'url(#' + url_id + ')'

filter = svgwrite.filters.Filter(id=url_id, filterUnits="objectBoundingBox", x="-0.1", y="-0.1", width="1.2", height="1.2")
Expand Down Expand Up @@ -724,7 +728,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor
elif graphics['fillPattern'] == 'FillPattern.Solid':
shape.fill("rgb(" + ','.join([str(v) for v in graphics['fillColor']]) + ")")
elif graphics['fillPattern'] == 'FillPattern.Horizontal':
url_id = str(uuid.uuid4())
url_id = str(element_id)
element_id += 1
shape.fill('url(#' + url_id + ')')

pattern = svgwrite.pattern.Pattern(id=url_id, insert=(0, 0), size=(5, 5), patternUnits='userSpaceOnUse')
Expand All @@ -740,7 +745,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor
definitions.add(pattern)

elif graphics['fillPattern'] == 'FillPattern.Vertical':
url_id = str(uuid.uuid4())
url_id = str(element_id)
element_id += 1
shape.fill('url(#' + url_id + ')')

pattern = svgwrite.pattern.Pattern(id=url_id, insert=(0, 0), size=(5, 5), patternUnits='userSpaceOnUse')
Expand All @@ -756,7 +762,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor
definitions.add(pattern)

elif graphics['fillPattern'] == 'FillPattern.Cross':
url_id = str(uuid.uuid4())
url_id = str(element_id)
element_id += 1
shape.fill('url(#' + url_id + ')')

pattern = svgwrite.pattern.Pattern(id=url_id, insert=(0, 0), size=(5, 5), patternUnits='userSpaceOnUse')
Expand All @@ -776,7 +783,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor
definitions.add(pattern)

elif graphics['fillPattern'] == 'FillPattern.Forward':
url_id = str(uuid.uuid4())
url_id = str(element_id)
element_id += 1
shape.fill('url(#' + url_id + ')')

pattern = svgwrite.pattern.Pattern(id=url_id, insert=(0, 0), size=(7, 7), patternUnits='userSpaceOnUse')
Expand All @@ -800,7 +808,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor
definitions.add(pattern)

elif graphics['fillPattern'] == 'FillPattern.Backward':
url_id = str(uuid.uuid4())
url_id = str(element_id)
element_id += 1
shape.fill('url(#' + url_id + ')')

pattern = svgwrite.pattern.Pattern(id=url_id, insert=(0, 0), size=(7, 7), patternUnits='userSpaceOnUse')
Expand All @@ -825,7 +834,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor

elif graphics['fillPattern'] == 'FillPattern.CrossDiag':

url_id = str(uuid.uuid4())
url_id = str(element_id)
element_id += 1
shape.fill('url(#' + url_id + ')')

pattern = svgwrite.pattern.Pattern(id=url_id, insert=(0, 0), size=(8, 8), patternUnits='userSpaceOnUse')
Expand All @@ -846,7 +856,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor

elif graphics['fillPattern'] == 'FillPattern.HorizontalCylinder':

url_id = str(uuid.uuid4())
url_id = str(element_id)
element_id += 1
shape.fill('url(#' + url_id + ')')

lineColor = graphics['lineColor']
Expand Down Expand Up @@ -874,7 +885,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor
definitions.add(gradient)

elif graphics['fillPattern'] == 'FillPattern.VerticalCylinder':
url_id = str(uuid.uuid4())
url_id = str(element_id)
element_id += 1
shape.fill('url(#' + url_id + ')')

lineColor = graphics['lineColor']
Expand Down Expand Up @@ -902,7 +914,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor
definitions.add(gradient)
elif graphics['fillPattern'] == 'FillPattern.Sphere':
if graphics['type'] == 'Ellipse':
url_id = str(uuid.uuid4())
url_id = str(element_id)
element_id += 1

shape.fill('url(#' + url_id + ')')

Expand All @@ -929,7 +942,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor

definitions.add(gradient)
elif graphics['type'] == 'Rectangle':
url_id = str(uuid.uuid4())
url_id = str(element_id)
element_id += 1

shape.fill('url(#' + url_id + ')')

Expand Down Expand Up @@ -962,6 +976,8 @@ def getSvgFromGraphics(dwg, graphics, minX, maxY, includeInvisibleText, transfor

# generate svgs from graphics objects
def generateSvg(filename, iconGraphics, includeInvisibleText):
global element_id
element_id = 0

width = 100
height = 100
Expand Down

0 comments on commit c5640a5

Please sign in to comment.