Code

modify calculation of control arm length
[inkscape.git] / share / extensions / simplestyle.py
index 32fd987b7529306f2bc0396da0ddb24c810487a4..356d75581c472866e03f56af6964fd78b83a94c0 100755 (executable)
@@ -2,6 +2,7 @@
 """
 simplestyle.py
 Two simple functions for working with inline css
+and some color handling on top.
 
 Copyright (C) 2005 Aaron Spike, aaron@ekips.org
 
@@ -19,9 +20,208 @@ You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 """
+
+svgcolors={
+    'aliceblue':'#f0f8ff',
+    'antiquewhite':'#faebd7',
+    'aqua':'#00ffff',
+    'aquamarine':'#7fffd4',
+    'azure':'#f0ffff',
+    'beige':'#f5f5dc',
+    'bisque':'#ffe4c4',
+    'black':'#000000',
+    'blanchedalmond':'#ffebcd',
+    'blue':'#0000ff',
+    'blueviolet':'#8a2be2',
+    'brown':'#a52a2a',
+    'burlywood':'#deb887',
+    'cadetblue':'#5f9ea0',
+    'chartreuse':'#7fff00',
+    'chocolate':'#d2691e',
+    'coral':'#ff7f50',
+    'cornflowerblue':'#6495ed',
+    'cornsilk':'#fff8dc',
+    'crimson':'#dc143c',
+    'cyan':'#00ffff',
+    'darkblue':'#00008b',
+    'darkcyan':'#008b8b',
+    'darkgoldenrod':'#b8860b',
+    'darkgray':'#a9a9a9',
+    'darkgreen':'#006400',
+    'darkgrey':'#a9a9a9',
+    'darkkhaki':'#bdb76b',
+    'darkmagenta':'#8b008b',
+    'darkolivegreen':'#556b2f',
+    'darkorange':'#ff8c00',
+    'darkorchid':'#9932cc',
+    'darkred':'#8b0000',
+    'darksalmon':'#e9967a',
+    'darkseagreen':'#8fbc8f',
+    'darkslateblue':'#483d8b',
+    'darkslategray':'#2f4f4f',
+    'darkslategrey':'#2f4f4f',
+    'darkturquoise':'#00ced1',
+    'darkviolet':'#9400d3',
+    'deeppink':'#ff1493',
+    'deepskyblue':'#00bfff',
+    'dimgray':'#696969',
+    'dimgrey':'#696969',
+    'dodgerblue':'#1e90ff',
+    'firebrick':'#b22222',
+    'floralwhite':'#fffaf0',
+    'forestgreen':'#228b22',
+    'fuchsia':'#ff00ff',
+    'gainsboro':'#dcdcdc',
+    'ghostwhite':'#f8f8ff',
+    'gold':'#ffd700',
+    'goldenrod':'#daa520',
+    'gray':'#808080',
+    'grey':'#808080',
+    'green':'#008000',
+    'greenyellow':'#adff2f',
+    'honeydew':'#f0fff0',
+    'hotpink':'#ff69b4',
+    'indianred':'#cd5c5c',
+    'indigo':'#4b0082',
+    'ivory':'#fffff0',
+    'khaki':'#f0e68c',
+    'lavender':'#e6e6fa',
+    'lavenderblush':'#fff0f5',
+    'lawngreen':'#7cfc00',
+    'lemonchiffon':'#fffacd',
+    'lightblue':'#add8e6',
+    'lightcoral':'#f08080',
+    'lightcyan':'#e0ffff',
+    'lightgoldenrodyellow':'#fafad2',
+    'lightgray':'#d3d3d3',
+    'lightgreen':'#90ee90',
+    'lightgrey':'#d3d3d3',
+    'lightpink':'#ffb6c1',
+    'lightsalmon':'#ffa07a',
+    'lightseagreen':'#20b2aa',
+    'lightskyblue':'#87cefa',
+    'lightslategray':'#778899',
+    'lightslategrey':'#778899',
+    'lightsteelblue':'#b0c4de',
+    'lightyellow':'#ffffe0',
+    'lime':'#00ff00',
+    'limegreen':'#32cd32',
+    'linen':'#faf0e6',
+    'magenta':'#ff00ff',
+    'maroon':'#800000',
+    'mediumaquamarine':'#66cdaa',
+    'mediumblue':'#0000cd',
+    'mediumorchid':'#ba55d3',
+    'mediumpurple':'#9370db',
+    'mediumseagreen':'#3cb371',
+    'mediumslateblue':'#7b68ee',
+    'mediumspringgreen':'#00fa9a',
+    'mediumturquoise':'#48d1cc',
+    'mediumvioletred':'#c71585',
+    'midnightblue':'#191970',
+    'mintcream':'#f5fffa',
+    'mistyrose':'#ffe4e1',
+    'moccasin':'#ffe4b5',
+    'navajowhite':'#ffdead',
+    'navy':'#000080',
+    'oldlace':'#fdf5e6',
+    'olive':'#808000',
+    'olivedrab':'#6b8e23',
+    'orange':'#ffa500',
+    'orangered':'#ff4500',
+    'orchid':'#da70d6',
+    'palegoldenrod':'#eee8aa',
+    'palegreen':'#98fb98',
+    'paleturquoise':'#afeeee',
+    'palevioletred':'#db7093',
+    'papayawhip':'#ffefd5',
+    'peachpuff':'#ffdab9',
+    'peru':'#cd853f',
+    'pink':'#ffc0cb',
+    'plum':'#dda0dd',
+    'powderblue':'#b0e0e6',
+    'purple':'#800080',
+    'red':'#ff0000',
+    'rosybrown':'#bc8f8f',
+    'royalblue':'#4169e1',
+    'saddlebrown':'#8b4513',
+    'salmon':'#fa8072',
+    'sandybrown':'#f4a460',
+    'seagreen':'#2e8b57',
+    'seashell':'#fff5ee',
+    'sienna':'#a0522d',
+    'silver':'#c0c0c0',
+    'skyblue':'#87ceeb',
+    'slateblue':'#6a5acd',
+    'slategray':'#708090',
+    'slategrey':'#708090',
+    'snow':'#fffafa',
+    'springgreen':'#00ff7f',
+    'steelblue':'#4682b4',
+    'tan':'#d2b48c',
+    'teal':'#008080',
+    'thistle':'#d8bfd8',
+    'tomato':'#ff6347',
+    'turquoise':'#40e0d0',
+    'violet':'#ee82ee',
+    'wheat':'#f5deb3',
+    'white':'#ffffff',
+    'whitesmoke':'#f5f5f5',
+    'yellow':'#ffff00',
+    'yellowgreen':'#9acd32'
+}
 def parseStyle(s):
-       """Create a dictionary from the value of an inline style attribute"""
-       return dict([i.split(":") for i in s.split(";")])
+    """Create a dictionary from the value of an inline style attribute"""
+    return dict([i.split(":") for i in s.split(";") if len(i)])
 def formatStyle(a):
-       """Format an inline style attribute from a dictionary"""
-       return ";".join([":".join(i) for i in a.iteritems()])
+    """Format an inline style attribute from a dictionary"""
+    return ";".join([":".join(i) for i in a.iteritems()])
+def isColor(c):
+    """Determine if its a color we can use. If not, leave it unchanged."""
+    if c.startswith('#') and (len(c)==4 or len(c)==7):
+        return True
+    if c in svgcolors.keys():
+        return True
+    #might be "none" or some undefined color constant or rgb()
+    #however, rgb() shouldnt occur at this point
+    return False
+def parseColor(c):
+    """Creates a rgb int array"""
+    if c in svgcolors.keys():
+        c=svgcolors[c]
+    if c.startswith('#') and len(c)==4:
+        c='#'+c[1:2]+c[1:2]+c[2:3]+c[2:3]+c[3:]+c[3:]
+    elif c.startswith('rgb('):
+        # remove the rgb(...) stuff
+        tmp = c.strip()[4:-1]
+        numbers = [number.strip() for number in tmp.split(',')]
+        converted_numbers = []
+        if len(numbers) == 3:
+            for num in numbers:
+                if num.endswith(r'%'):
+                    converted_numbers.append( int(int(num[0:-1])*255/100))
+                else:
+                    converted_numbers.append(int(num))
+            return tuple(converted_numbers)
+        else:    
+            return (0,0,0)
+        
+    r=int(c[1:3],16)
+    g=int(c[3:5],16)
+    b=int(c[5:],16)
+    return (r,g,b)
+def formatColoria(a):
+    """int array to #rrggbb"""
+    return '#%02x%02x%02x' % (a[0],a[1],a[2])
+def formatColorfa(a):
+    """float array to #rrggbb"""
+    return '#%02x%02x%02x' % (int(round(a[0]*255)),int(round(a[1]*255)),int(round(a[2]*255)))
+def formatColor3i(r,g,b):
+    """3 ints to #rrggbb"""
+    return '#%02x%02x%02x' % (r,g,b)
+def formatColor3f(r,g,b):
+    """3 floats to #rrggbb"""
+    return '#%02x%02x%02x' % (int(round(r*255)),int(round(g*255)),int(round(b*255)))
+
+
+# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 encoding=utf-8 textwidth=99