summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2013-11-20 00:14:57 +0000
committerJabiertxof <jtx@jtx.marker.es>2013-11-20 00:14:57 +0000
commit98fc7e79f2ddbbcb2f8d1766eedb5e80d08c6300 (patch)
tree0dd822e6b40f98ac867aff3773483a3e59917fe4
parentFix repointed by su_v (diff)
parentBalloonSymbols.svg rewritten. Balloon symbols should render properly in all b... (diff)
downloadinkscape-98fc7e79f2ddbbcb2f8d1766eedb5e80d08c6300.tar.gz
inkscape-98fc7e79f2ddbbcb2f8d1766eedb5e80d08c6300.zip
Update to trunk
(bzr r12588.1.30)
-rw-r--r--share/extensions/hpgl_decoder.py2
-rw-r--r--share/extensions/hpgl_encoder.py19
-rwxr-xr-xshare/extensions/inkex.py10
-rw-r--r--share/extensions/plotter.py1
-rw-r--r--share/symbols/BalloonSymbols.svg261
-rw-r--r--src/extension/effect.cpp2
-rw-r--r--src/extension/internal/gdkpixbuf-input.cpp56
-rw-r--r--src/extension/system.cpp4
-rw-r--r--src/preferences-skeleton.h3
-rw-r--r--src/sp-ellipse.cpp2
-rw-r--r--src/sp-pattern.cpp3
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp37
-rw-r--r--src/ui/dialog/inkscape-preferences.h6
-rw-r--r--src/ui/dialog/object-attributes.cpp1
-rw-r--r--src/ui/dialog/object-properties.cpp82
-rw-r--r--src/ui/dialog/object-properties.h8
16 files changed, 319 insertions, 178 deletions
diff --git a/share/extensions/hpgl_decoder.py b/share/extensions/hpgl_decoder.py
index 0af2d5f5f..96571df94 100644
--- a/share/extensions/hpgl_decoder.py
+++ b/share/extensions/hpgl_decoder.py
@@ -33,6 +33,8 @@ class hpglDecoder:
"resolutionX":float
"resolutionY":float
"showMovements":bool
+ "docWidth":float
+ "docHeight":float
'''
self.hpglString = hpglString
self.options = options
diff --git a/share/extensions/hpgl_encoder.py b/share/extensions/hpgl_encoder.py
index b4191e7c0..692f11cd4 100644
--- a/share/extensions/hpgl_encoder.py
+++ b/share/extensions/hpgl_encoder.py
@@ -62,13 +62,14 @@ class hpglEncoder:
self.sizeY = 'False'
self.dryRun = True
self.lastPoint = [0, 0, 0]
- self.scaleX = self.options.resolutionX / 90 # inch to pixels
- self.scaleY = self.options.resolutionY / 90 # inch to pixels
- self.options.offsetX = self.options.offsetX * 3.5433070866 * self.scaleX # mm to dots (plotter coordinate system)
- self.options.offsetY = self.options.offsetY * 3.5433070866 * self.scaleY # mm to dots
- self.options.overcut = self.options.overcut * 3.5433070866 * ((self.scaleX + self.scaleY) / 2) # mm to dots
- self.options.toolOffset = self.options.toolOffset * 3.5433070866 * ((self.scaleX + self.scaleY) / 2) # mm to dots
- self.options.flat = ((self.options.resolutionX + self.options.resolutionY) / 2) * self.options.flat / 1000 # scale flatness to resolution
+ self.scaleX = self.options.resolutionX / effect.unittouu("1.0in") # dots per inch to dots per user unit
+ self.scaleY = self.options.resolutionY / effect.unittouu("1.0in") # dots per inch to dots per user unit
+ scaleXY = (self.scaleX + self.scaleY) / 2
+ self.options.offsetX = effect.unittouu(str(self.options.offsetX) + "mm") * self.scaleX # mm to dots (plotter coordinate system)
+ self.options.offsetY = effect.unittouu(str(self.options.offsetY) + "mm") * self.scaleY # mm to dots
+ self.options.overcut = effect.unittouu(str(self.options.overcut) + "mm") * scaleXY # mm to dots
+ self.options.toolOffset = effect.unittouu(str(self.options.toolOffset) + "mm") * scaleXY # mm to dots
+ self.options.flat = self.options.flat / (1016 / ((self.options.resolutionX + self.options.resolutionY) / 2)) # scale flatness to resolution
self.toolOffsetFlat = self.options.flat / self.options.toolOffset * 4.5 # scale flatness to offset
self.mirrorX = 1.0
if self.options.mirrorX:
@@ -83,8 +84,8 @@ class hpglEncoder:
if viewBox:
viewBox = string.split(viewBox, ' ')
if viewBox[2] and viewBox[3]:
- self.viewBoxTransformX = float(effect.unittouu(self.doc.get('width'))) / float(viewBox[2])
- self.viewBoxTransformY = float(effect.unittouu(self.doc.get('height'))) / float(viewBox[3])
+ self.viewBoxTransformX = effect.unittouu(self.doc.get('width')) / effect.unittouu(viewBox[2])
+ self.viewBoxTransformY = effect.unittouu(self.doc.get('height')) / effect.unittouu(viewBox[3])
def getHpgl(self):
# dryRun to find edges
diff --git a/share/extensions/inkex.py b/share/extensions/inkex.py
index 4542bc418..5333ef52b 100755
--- a/share/extensions/inkex.py
+++ b/share/extensions/inkex.py
@@ -269,11 +269,11 @@ class Effect:
return 'px'
#a dictionary of unit to user unit conversion factors
- uuconv = {'in':90.0, 'pt':1.25, 'px':1, 'mm':3.5433070866, 'cm':35.433070866, 'm':3543.3070866,
+ __uuconv = {'in':90.0, 'pt':1.25, 'px':1, 'mm':3.5433070866, 'cm':35.433070866, 'm':3543.3070866,
'km':3543307.0866, 'pc':15.0, 'yd':3240 , 'ft':1080}
def unittouu(self, string):
'''Returns userunits given a string representation of units in another system'''
- unit = re.compile('(%s)$' % '|'.join(self.uuconv.keys()))
+ unit = re.compile('(%s)$' % '|'.join(self.__uuconv.keys()))
param = re.compile(r'(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)')
p = param.match(string)
@@ -284,16 +284,16 @@ class Effect:
retval = 0.0
if u:
try:
- return retval * (self.uuconv[u.string[u.start():u.end()]] / self.uuconv[self.getDocumentUnit()])
+ return retval * (self.__uuconv[u.string[u.start():u.end()]] / self.__uuconv[self.getDocumentUnit()])
except KeyError:
pass
else: # default assume 'px' unit
- return retval / self.uuconv[self.getDocumentUnit()]
+ return retval / self.__uuconv[self.getDocumentUnit()]
return retval
def uutounit(self, val, unit):
- return val / (self.uuconv[unit] / self.uuconv[self.getDocumentUnit()])
+ return val / (self.__uuconv[unit] / self.__uuconv[self.getDocumentUnit()])
# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99
diff --git a/share/extensions/plotter.py b/share/extensions/plotter.py
index f57057435..78d480f05 100644
--- a/share/extensions/plotter.py
+++ b/share/extensions/plotter.py
@@ -79,6 +79,7 @@ class MyEffect(inkex.Effect):
raise ValueError, ('', type, value), traceback
# TODO: Get preview to work. This requires some work on the C++ side to be able to determine if it is
# a preview or a final run. (Remember to set <effect needs-live-preview='false'> to true)
+ # This outcommented code has a user unit issue (getSvg produces px, docWidth could be mm or something else)
'''
# reparse data for preview
self.options.showMovements = True
diff --git a/share/symbols/BalloonSymbols.svg b/share/symbols/BalloonSymbols.svg
index 8c7e840e2..0244f2f3a 100644
--- a/share/symbols/BalloonSymbols.svg
+++ b/share/symbols/BalloonSymbols.svg
@@ -1,128 +1,139 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ width="1200"
+ height="900"
+ viewBox="0,0,1200,900"
+ version="1.1"
+ style="fill:black;stroke:black">
+ <title>Word Balloons</title>
+ <desc>Ballons for holding text.</desc>
+ <metadata>
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>Word Balloons</dc:title>
+ <dc:date>2013-04-22</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Martin Owens, Tavmjong Bah</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Public Domain</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:language>English</dc:language>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>word</rdf:li>
+ <rdf:li>balloon</rdf:li>
+ <rdf:li>comic</rdf:li>
+ <rdf:li>cartoon</rdf:li>
+ <rdf:li>speach</rdf:li>
+ <rdf:li>exclaim</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+ </cc:Work>
+ <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/">
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <defs>
+
+ <symbol id="ThoughtBalloon">
+ <title>Thought Balloon</title>
+ <path d="m 170,60 c -18,-14 -51,-11 -62,7 -32,-19 -57,36 -22,56 -30,10 -30,50 3,57 -2,30 53,29 59,8 10,23 47,29 60,9 14,10 36,5 43,-9 11,25 41,21 50,1 35,4 40,-31 29,-50 24,-9 22,-39 3,-48 16,-26 -17,-58 -39,-29 -13,-14.3 -47,-14 -56,1 -16,-19 -53,-21 -68,-3 z" style="stroke:none"/>
+ <path d="m 165,55 c -18,-14 -51,-11 -62,7 -32,-19 -57,36 -22,56 -30,10 -30,50 3,57 -2,30 53,29 59,8 10,23 47,29 60,9 14,10 36,5 43,-9 11,25 41,21 50,1 35,4 40,-31 29,-50 24,-9 22,-39 3,-48 16,-26 -17,-58 -39,-29 -13,-14.3 -47,-14 -56,1 -16,-19 -53,-21 -68,-3 z" style="fill:#eeeeee;stroke-width:3.5"/>
+ <path d="m 163,58 c -17,-12 -48,-11 -58,6 -37,-14 -46,42 -17,53 -33,14 -20,48 2,50 -5,29 47,29 53,7 10,25 43,24 58,8 13,9 34,4 40,-8 10,22 41,19 48,1 31,7 37,-28 27,-43 23,-7 21,-38 3,-46 14,-26 -15,-52 -30,-22 -19,-15.6 -43,-23 -59,-1 -15,-20 -51,-23 -67,-5 z" style="fill:white;stroke:none"/>
+ <ellipse cx="117" cy="239" rx="30" ry="21" style="stroke:none"/>
+ <ellipse cx="113" cy="235" rx="30" ry="21" style="fill:#eeeeee;stroke-width:3.5"/>
+ <ellipse cx="110" cy="233" rx="23" ry="17" style="fill:white;stroke:none"/>
+ <ellipse cx="74" cy="275" rx="15" ry="11" style="stroke:none"/>
+ <ellipse cx="70" cy="271" rx="15" ry="11" style="fill:#eeeeee;stroke-width:3.5"/>
+ <ellipse cx="67" cy="269" rx=" 8" ry="7" style="fill:white;stroke:none"/>
+ </symbol>
+
+ <symbol id="DreamSpeaking">
+ <title>Dream Speaking</title>
+ <path d="m 170,60 c -18,-14 -51,-11 -62,7 -32,-19 -57,36 -22,56 -30,10 -30,50 3,57 -2,30 53,29 59,8 10,23 47,29 60,9 14,10 36,5 43,-9 11,25 41,21 50,1 35,4 40,-31 29,-50 24,-9 22,-39 3,-48 16,-26 -17,-58 -39,-29 -13,-14.3 -47,-14 -56,1 -16,-19 -53,-21 -68,-3 z" style="stroke:none"/>
+ <path d="m 160,180 c -33,35 58,-6 -53,96 57.1,-21 93,-56 111,-102" style="stroke:none"/>
+ <path d="m 165,55 c -18,-14 -51,-11 -62,7 -32,-19 -57,36 -22,56 -30,10 -30,50 3,57 -2,30 53,29 59,8 10,23 47,29 60,9 14,10 36,5 43,-9 11,25 41,21 50,1 35,4 40,-31 29,-50 24,-9 22,-39 3,-48 16,-26 -17,-58 -39,-29 -13,-14.3 -47,-14 -56,1 -16,-19 -53,-21 -68,-3 z" style="fill:#eeeeee;stroke-width:3.5"/>
+ <path d="m 155,176 c -33,35 58,-6 -53,96 57.1,-21 93,-56 111,-102" style="fill:#eeeeee;stroke-width:3.5"/>
+ <path d="m 163,58 c -17,-12 -48,-11 -58,6 -37,-14 -46,42 -17,53 -33,14 -20,48 2,50 -5,29 47,29 53,7 10,25 43,24 58,8 13,9 34,4 40,-8 10,22 41,19 48,1 31,7 37,-28 27,-43 23,-7 21,-38 3,-46 14,-26 -15,-52 -30,-22 -19,-15.6 -43,-23 -59,-1 -15,-20 -51,-23 -67,-5 z" style="fill:white;stroke:none"/>
+ <path d="m 150,168 c -31,33 67,1 -38,97 56,-37 78,-67 93,-102" style="fill:white;stroke:none"/>
+ </symbol>
+
+ <symbol id="RoundedBalloon" style="stroke-linejoin:miter;stroke-miterlimit:10">
+ <rect x="80" y="65" width="250" height="120" rx="32" style="stroke:none" />
+ <path d="m 124,179 -30,53 78,-53" style="stroke:none" />
+ <rect x="75" y="60" width="250" height="120" rx="30" style="fill:#eeeeee;stroke-width:3.5"/>
+ <path d="m 120,175 -30,53 78,-53" style="fill:#eeeeee;stroke-width:3.5" />
+ <rect x="80" y="65" width="235" height="105" rx="25" style="fill:white;stroke:none" />
+ <path d="m 132,160 -30,53 78,-53" style="fill:white;stroke:none" />
+ </symbol>
+
+ <symbol id="SquaredBalloon" style="stroke-linejoin:miter;stroke-miterlimit:10">
+ <rect x="80" y="65" width="250" height="140" rx="17" style="stroke:none" />
+ <path d="m 126,199 25,43 30,-43" style="stroke:none" />
+ <rect x="75" y="60" width="250" height="140" rx="15" style="fill:#eeeeee;stroke-width:3.5"/>
+ <path d="m 120,195 25,43 30,-43" style="fill:#eeeeee;stroke-width:3.5" />
+ <rect x="80" y="65" width="235" height="125" rx="10" style="fill:white;stroke:none" />
+ <path d="m 118,180 25,43 30,-43" style="fill:white;stroke:none" />
+ </symbol>
+
+ <symbol id="OverThePhone" style="stroke-linejoin:miter;stroke-miterlimit:10">
+ <rect x="80" y="65" width="250" height="120" style="stroke:none" />
+ <path d="m 124,179 -15,41 -21,-16 -35,76 40,-49 32,17 53,-70" style="stroke:none" />
+ <rect x="75" y="60" width="250" height="120" style="fill:#eeeeee;stroke-width:3.5"/>
+ <path d="m 120,175 -15,41 -21,-16 -35,76 40,-49 32,17 53,-70" style="fill:#eeeeee;stroke-width:3.5" />
+ <rect x="80" y="65" width="235" height="105" style="fill:white;stroke:none" />
+ <path d="m 125,166 -18,53 -22,-15 -26,56 29,-40 28,12 55,-68" style="fill:white;stroke:none" />
+ </symbol>
+
+ <symbol id="HipBalloon" style="stroke-linejoin:miter;stroke-miterlimit:10">
+ <path d="m 97,65 216,0 c 9,0 17,7.6 17,17 0,0 -14,35 -14,53 0,18 14,53 14,53 0,9 -8,17 -17,17 l -216,0 c -9.4,0 -17,-8 -17,-17 0,0 14,-35 14,-53 0,-18 -14,-53 -14,-53 0,-9.4 7.6,-17 17,-17 z" style="stroke:none"/>
+ <path d="m 126,199 -5,43 60,-43" style="stroke:none"/>
+ <path d="m 90,60 216,0 c 9,0 17,7.6 17,17 0,0 -14,35 -14,53 0,18 14,53 14,53 0,9 -8,17 -17,17 l -216,0 c -9.4,0 -17,-8 -17,-17 0,0 14,-35 14,-53 0,-18 -14,-53 -14,-53 0,-9.4 7.6,-17 17,-17 z" style="fill:#eeeeee;stroke-width:3.5"/>
+ <path d="m 120,195 -5,43 60,-43" style="fill:#eeeeee;stroke-width:3.5"/>
+ <path d="m 90,65 215,0 c 6,0 10,4.5 10,10 0,0 -14,36 -14,53 0,18 14,52 14,52 0,6 -4,10 -10,10 l -215,0 c -5.5,0 -10,-4 -10,-10 0,0 14,-34 14,-52 0,-17 -14,-53 -14,-53 0,-5.5 4.5,-10 10,-10 z" style="fill:white;stroke:none"/>
+ <path d="m 124,180 -5,43 60,-43" style="fill:white;stroke:none"/>
+ </symbol>
+
+ <symbol id="CircleBalloon" style="stroke-linejoin:miter;stroke-miterlimit:10">
+ <ellipse cx="205" cy="125" rx="125" ry="70" style="stroke:none" />
+ <path d="m 110,166 c 11,21 -10,30 -22,43 32,-3 59,-7 70,-26" style="stroke:none" />
+ <ellipse cx="200" cy="120" rx="125" ry="70" style="fill:#eeeeee;stroke-width:3.5"/>
+ <path d="m 106,162 c 11,21 -10,30 -22,43 32,-3 59,-7 70,-26" style="fill:#eeeeee;stroke-width:3.5" />
+ <ellipse cx="197" cy="117" rx="117" ry="63" style="fill:white;stroke:none" />
+ <path d="m 103,149 c 14,25 9,34 -6,47 30,-3 50,-10 58,-31" style="fill:white;stroke:none" />
+ </symbol>
+
+ <symbol id="ExclaimBalloon" style="stroke-linejoin:miter;stroke-miterlimit:10">
+ <path d="m 117,183 -88,110 146,-98 10,31 53,-46 39,49 0,-46 69,28 -29,-57 66,-33 -68,-23.9 29,-58 -58,29 -15,-46 -48,46 -18,-42 -35,42 -20,-42 -33,40 -36.2,-42 0,50 -55,-2 42,42 -42,29 48,9 -24,46 z" style="stroke:none"/>
+ <path d="m 110,177 -88,110 146,-98 10,31 53,-46 39,49 0,-46 69,28 -29,-57 66,-33 -68,-23.9 29,-58 -58,29 -15,-46 -48,46 -18,-42 -35,42 -20,-42 -33,40 -36.2,-42 0,50 -55,-2 42,42 -42,29 48,9 -24,46 z" style="fill:#eeeeee;stroke-width:3.5"/>
+ <path d="m 122,166 -82,102 129,-89 9,28 52,-45 30,39 0,-38 58,23 -24,-45 57,-28 -56,-20 23,-47 -47,23 -14,-42 -47,44 -17,-40 -33,40 -21,-44 -31,38 -32.9,-38 0,43 -46,-2 38,38 -36,25 43,8 -21,41 z" style="fill:white;stroke:none"/>
+ </symbol>
+
+ </defs>
+
+ <use x="0" y="0" xlink:href="#RoundedBalloon" style="fill:blue;stroke:blue"/>
+ <use x="0" y="300" xlink:href="#SquaredBalloon" style="fill:blue;stroke:blue"/>
+ <use x="0" y="600" xlink:href="#CircleBalloon" style="fill:blue;stroke:blue"/>
+ <use x="400" y="0" xlink:href="#OverThePhone" style="fill:blue;stroke:blue"/>
+ <use x="400" y="300" xlink:href="#HipBalloon" style="fill:blue;stroke:blue"/>
+ <use x="400" y="600" xlink:href="#ExclaimBalloon" style="fill:blue;stroke:blue"/>
+ <use x="800" y="0" xlink:href="#DreamSpeaking" style="fill:blue;stroke:blue"/>
+ <use x="800" y="300" xlink:href="#ThoughtBalloon" style="fill:blue;stroke:blue"/>
-<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="1057.922" height="891.2286" id="svg2" version="1.1" inkscape:version="0.48+devel r" sodipodi:docname="BalloonSymbols.svg">
-<title id="title7305">Word Balloons</title>
-<defs id="defs4">
-<symbol transform="translate(-92.67922,-18)" id="g4645">
-<title id="title5697">Exclaim Balloon</title>
-<path inkscape:transform-center-y="35.24693" inkscape:transform-center-x="17.91982" inkscape:connector-curvature="0" id="path5777" d="M 99.52634,593.425 -8.947475,717.2681 158.5448,604.8979 l 9.9589,31.249 54.1159,-46.3314 39.1874,50.038 0,-46.3315 70.9106,27.7989 -29.8571,-57.451 67.1785,-33.3587 -69.0445,-24.0922 29.857,-59.3042 -59.7141,29.652 -14.9286,-46.3313 -48.5178,46.3313 -18.6606,-42.6249 -35.4553,42.6249 -20.5268,-42.6249 -33.58917,40.7717 -37.32136,-42.6249 0,50.0379 L 6.15572,480.4734 49.0753,523.0983 6.155722,552.7504 54.67351,562.0167 30.41462,608.3481 Z" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccccccccccccccccccccccccccc" />
-<path sodipodi:nodetypes="ccccccccccccccccccccccccccc" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" d="M 93.40587,587.3968 -14.77767,716.9285 151.2898,598.7269 l 9.7674,30.8602 53.0756,-45.7549 38.4341,49.4153 0,-45.7549 69.5474,27.453 -29.2831,-56.7361 65.887,-32.9436 -67.7172,-23.7924 29.2831,-58.5663 -58.5662,29.2831 -14.6416,-45.7548 -47.5851,45.7548 -18.3019,-42.0945 -34.7737,42.0945 -20.1322,-42.0945 -32.94345,40.2643 -36.6039,-42.0945 0,49.4153 L 1.830194,475.8507 43.92469,517.9452 1.830196,547.2283 49.41528,556.3793 25.62274,602.1342 Z" id="path4490-2-6" inkscape:connector-curvature="0" inkscape:transform-center-x="17.57534" inkscape:transform-center-y="34.80832" />
-<path inkscape:transform-center-y="31.58565" inkscape:transform-center-x="16.64003" inkscape:connector-curvature="0" id="path5827" d="M 103.6703,577.3594 -1.75602,702.8985 153.4738,583.6405 l 8.2476,28.003 46.251,-38.5187 30.3887,38.8402 0,-41.5187 65.8463,26.9113 -27.7247,-51.4832 48.3806,-21.8936 -54.1134,-21.5896 31.7247,-49.1439 -51.4495,30.5719 -13.8624,-45.5186 -45.0527,41.5186 -15.3279,-42.1972 -32.9232,40.1972 -21.0608,-40.1972 -29.19025,34.5364 -34.65593,-42.1972 0,48.8403 -51.983904,-1.6608 43.854334,38.1972 -37.85433,26.572 43.05272,8.3037 L 35.49438,590.7323 Z" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccccccccccccccccccccccccccc" />
-<flowRoot transform="translate(-309.405,239.8055)" style="font-size:27.5px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" id="flowRoot4599-2" xml:space="preserve"><flowRegion id="flowRegion4601-9"><rect ry="29.28312" style="font-size:27.5px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans Bold" y="237.9254" x="360.5484" height="95.17012" width="226.9439" id="rect4603-9" /></flowRegion><flowPara id="flowPara4605-8">Exclaim Balloon!!</flowPara></flowRoot></symbol>
-<symbol transform="translate(-64.81137,-54.1698)" id="g4717">
-<title id="title5699">Speaking Dream</title>
-<path inkscape:connector-curvature="0" id="path5779" d="m 594.25,445.0625 c -14.2458,0 -26.6466,5.4502 -33,13.4375 -6.7126,-5.9485 -16.8847,-9.75 -28.3125,-9.75 -15.0267,0 -27.9553,6.5481 -33.5937,15.9375 -3.6717,-2.0039 -7.8109,-3.125 -12.1876,-3.125 -15.1618,0 -27.4374,13.5095 -27.4374,30.1875 0,12.3742 6.7841,22.991 16.4687,27.6562 l 0,3.5626 c -11.6047,3.3126 -20.125,14.2985 -20.125,27.3437 0,14.5773 10.6507,26.5871 24.3437,28.1875 -0.3604,1.2436 -0.5624,2.53 -0.5624,3.8438 0,11.1186 13.5407,20.125 30.2187,20.125 16.5518,0 29.985,-8.8725 30.1875,-19.875 l 50.2188,0 c 2.9587,10.3728 13.7734,18.0624 26.6562,18.0624 11.2971,0 20.9748,-5.9244 25.1875,-14.375 3.547,10.4816 13.4457,18.0313 25.125,18.0313 11.4848,0 21.2734,-7.2905 24.9687,-17.5 2.2583,0.661 4.6151,1.0313 7.0626,1.0313 15.1618,0 27.4687,-13.5408 27.4687,-30.2188 0,-6.7918 -2.0595,-13.0491 -5.5,-18.0938 l 0,-1.9687 c 10.5453,-2.9226 18.3125,-12.924 18.3125,-24.7813 0,-10.6996 -6.3292,-19.8519 -15.3125,-23.6874 2.7234,-4.1671 4.3125,-9.2359 4.3125,-14.7188 0,-14.151 -10.641,-25.625 -23.7812,-25.625 -8.2985,0 -15.5863,4.5641 -19.8438,11.5 -5.1417,-6.8312 -15.6414,-11.5 -27.75,-11.5 -12.6191,0 -23.4624,5.0714 -28.3438,12.375 C 623.4784,451.716 610.0155,445.0625 594.25,445.0625 Z" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
-<path inkscape:transform-center-y="34.80832" inkscape:transform-center-x="17.57534" inkscape:connector-curvature="0" id="path5781" d="m 540.3131,578.5854 c -33.6213,35.0107 57.884,-5.1415 -53.2777,96.5881 57.1072,-21.3765 93.0926,-55.9542 111.1617,-101.7296" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccc" />
-<path inkscape:connector-curvature="0" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" d="m 590.25,441.0625 c -14.2458,0 -26.6466,5.4502 -33,13.4375 -6.7126,-5.9485 -16.8847,-9.75 -28.3125,-9.75 -15.0267,0 -27.9553,6.5481 -33.5937,15.9375 -3.6717,-2.0039 -7.8109,-3.125 -12.1876,-3.125 -15.1618,0 -27.4374,13.5095 -27.4374,30.1875 0,12.3742 6.7841,22.991 16.4687,27.6562 l 0,3.5626 c -11.6047,3.3126 -20.125,14.2985 -20.125,27.3437 0,14.5773 10.6507,26.5871 24.3437,28.1875 -0.3604,1.2436 -0.5624,2.53 -0.5624,3.8438 0,11.1186 13.5407,20.125 30.2187,20.125 16.5518,0 29.985,-8.8725 30.1875,-19.875 l 50.2188,0 c 2.9587,10.3728 13.7734,18.0624 26.6562,18.0624 11.2971,0 20.9748,-5.9244 25.1875,-14.375 3.547,10.4816 13.4457,18.0313 25.125,18.0313 11.4848,0 21.2734,-7.2905 24.9687,-17.5 2.2583,0.661 4.6151,1.0313 7.0626,1.0313 15.1618,0 27.4687,-13.5408 27.4687,-30.2188 0,-6.7918 -2.0595,-13.0491 -5.5,-18.0938 l 0,-1.9687 c 10.5453,-2.9226 18.3125,-12.924 18.3125,-24.7813 0,-10.6996 -6.3292,-19.8519 -15.3125,-23.6874 2.7234,-4.1671 4.3125,-9.2359 4.3125,-14.7188 0,-14.151 -10.641,-25.625 -23.7812,-25.625 -8.2985,0 -15.5863,4.5641 -19.8438,11.5 -5.1417,-6.8312 -15.6414,-11.5 -27.75,-11.5 -12.6191,0 -23.4624,5.0714 -28.3438,12.375 C 619.4784,447.716 606.0155,441.0625 590.25,441.0625 Z" id="rect4488-0-6" />
-<path sodipodi:nodetypes="ccc" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" d="m 536.3131,574.5854 c -33.6213,35.0107 57.884,-5.1415 -53.2777,96.5881 57.1072,-21.3765 93.0926,-55.9542 111.1617,-101.7296" id="path4490-2-8" inkscape:connector-curvature="0" inkscape:transform-center-x="17.57534" inkscape:transform-center-y="34.80832" />
-<path sodipodi:nodetypes="scscssccscssccscscssccscsscscs" id="path5829" d="m 590.4819,444.0625 c -13.3418,0 -24.9558,5.0394 -30.9061,12.4249 -6.2866,-5.5003 -15.8133,-9.0153 -26.516,-9.0153 -14.0733,0 -26.1815,6.0546 -31.4621,14.7364 -3.4388,-1.8529 -7.3155,-2.8894 -11.4144,-2.8894 -14.1998,0 -29.6964,12.4914 -29.6964,27.9125 0,11.4417 6.3536,21.2584 15.4237,25.572 l 0,5.2942 c -10.8685,3.0629 -18.8481,13.2209 -18.8481,25.2831 0,13.4787 9.975,22.5834 22.799,24.0633 -0.3374,1.1498 -0.5266,2.3393 -0.5266,3.5541 0,10.2807 12.6815,18.6083 28.3012,18.6083 15.5017,0 28.0826,-8.2038 28.2722,-18.3772 l 47.0324,0 c 2.7709,9.5911 12.8994,16.7012 24.9649,16.7012 10.5803,0 23.6439,-7.4779 27.5892,-15.2917 3.322,9.6917 12.5927,16.6725 23.5309,16.6725 10.7561,0 15.9236,-4.7411 19.3845,-14.1812 2.115,0.6112 4.3222,0.9535 6.6145,0.9535 14.1997,0 25.7257,-12.5203 25.7257,-27.9415 0,-6.2799 -1.9288,-12.0657 -5.1509,-16.7302 l 0,-1.8203 c 9.8761,-2.7024 17.1505,-11.9501 17.1505,-22.9138 0,-9.8932 -5.9275,-18.3558 -14.3409,-21.9023 2.5506,-3.8531 4.0389,-8.5399 4.0389,-13.6096 0,-13.0846 -1.9659,-23.6939 -14.2723,-23.6939 -7.7719,0 -12.5974,4.2202 -16.5847,10.6334 -4.8155,-6.3164 -20.6491,-10.6334 -31.9893,-10.6334 -11.8184,0 -21.9737,4.6892 -26.5454,11.4424 C 617.8559,450.2146 605.2472,444.0625 590.4819,444.0625 Z" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" inkscape:connector-curvature="0" />
-<flowRoot xml:space="preserve" id="flowRoot4599-5" style="font-size:17.5px;font-style:normal;font-weight:normal;text-align:justify;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" transform="translate(120.7929,235.0875)"><flowRegion id="flowRegion4601-5"><rect id="rect4603-2" width="226.9439" height="95.17012" x="360.5484" y="237.9254" style="font-size:17.5px;text-align:justify;text-anchor:start" ry="29.28312" /></flowRegion><flowPara id="flowPara4605-9">Dream Speaking</flowPara></flowRoot><path inkscape:transform-center-y="32.84085" inkscape:transform-center-x="16.52214" inkscape:connector-curvature="0" id="path5831" d="m 531.2644,567.0384 c -31.6066,33.0319 66.4153,1.1491 -38.0851,97.1288 55.9746,-37.2407 77.8094,-67.3654 92.5004,-101.9797" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccc" />
-</symbol>
-<symbol transform="translate(-24,-32.50941)" id="squared">
-<title id="title5683">Squared Balloon</title>
-<rect ry="14.64156" y="221.7932" x="53.41527" height="142.7552" width="245.2461" id="rect5765" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
-<rect style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" id="rect4488" width="245.2461" height="142.7552" x="49.41527" y="217.7932" ry="14.64156" />
-<path inkscape:transform-center-y="29.16837" inkscape:transform-center-x="25.87892" inkscape:connector-curvature="0" id="path5767" d="m 100.0592,359.3396 24.9735,43.3766 35.3685,-43.3766" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccc" />
-<path sodipodi:nodetypes="ccc" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" d="m 96.05919,355.3396 24.97351,43.3766 35.3685,-43.3766" id="path4490" inkscape:connector-curvature="0" inkscape:transform-center-x="25.87892" inkscape:transform-center-y="29.16837" />
-<rect ry="13.38393" y="219.7932" x="51.41528" height="130.4932" width="232.4347" id="rect5815" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
-<flowRoot xml:space="preserve" id="flowRoot4583" style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:justify;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:FreeSans;-inkscape-font-specification:FreeSans"><flowRegion id="flowRegion4585"><rect id="rect4587" width="226.9442" height="124.4533" x="58.56624" y="226.9442" style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:justify;text-anchor:start;font-family:FreeSans;-inkscape-font-specification:FreeSans" ry="12.81137" /></flowRegion><flowPara id="flowPara4589">Squared Balloon</flowPara></flowRoot><path inkscape:transform-center-y="27.41085" inkscape:transform-center-x="24.91328" inkscape:connector-curvature="0" id="path5817" d="m 94.31875,345.0519 24.04165,40.7629 34.0488,-40.7629" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccc" />
-</symbol>
-<symbol transform="translate(-40,-98)" id="g4609">
-<title id="title5685">Rounded Balloon</title>
-<rect ry="33.45972" y="234.0316" x="355.3975" height="113.4721" width="245.2461" id="rect5769" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
-<path inkscape:transform-center-y="34.80832" inkscape:transform-center-x="17.57534" inkscape:connector-curvature="0" id="path5771" d="m 395.7277,342.9272 -29.4852,53.404 78.2182,-53.404" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccc" />
-<rect style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" id="rect4488-0" width="245.2461" height="113.4721" x="351.3975" y="230.0316" ry="33.45972" />
-<path sodipodi:nodetypes="ccc" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" d="m 391.7277,338.9272 -29.4852,53.404 78.2182,-53.404" id="path4490-2" inkscape:connector-curvature="0" inkscape:transform-center-x="17.57534" inkscape:transform-center-y="34.80832" />
-<rect ry="29.03715" y="232.0316" x="353.3975" height="100.304" width="234.2649" id="rect5819" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
-<flowRoot xml:space="preserve" id="flowRoot4599" style="font-size:17.5px;font-style:normal;font-weight:normal;text-align:justify;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion id="flowRegion4601"><rect id="rect4603" width="226.9439" height="95.17012" x="360.5484" y="237.9254" style="font-size:17.5px;text-align:justify;text-anchor:start" ry="29.28312" /></flowRegion><flowPara id="flowPara4605">Rounded Balloon</flowPara></flowRoot><path inkscape:transform-center-y="37.22477" inkscape:transform-center-x="14.60102" inkscape:connector-curvature="0" id="path5821" d="M 401.3223,324.2385 374.827,377.35 437.8081,328.2385" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccc" />
-</symbol>
-<symbol transform="translate(0,-50)" id="g5687">
-<title id="title5695">Cricle Balloon</title>
-<path transform="translate(4,4)" d="m 873.003,280.0198 a 115.3023,64.05683 0 1 1 -230.6046,0 A 115.3023,64.05683 0 1 1 873.003,280.0198 Z" sodipodi:ry="64.05683" sodipodi:rx="115.3023" sodipodi:cy="280.0198" sodipodi:cx="757.7007" id="path5773" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:type="arc" />
-<path inkscape:transform-center-y="34.80832" inkscape:transform-center-x="17.57534" inkscape:connector-curvature="0" id="path5775" d="m 668.4267,320.5279 c 10.9674,21.8463 -10.664,30.6531 -22.1643,43.5124 32.2983,-2.5746 62.5959,-6.7497 70.8973,-28.5218" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccc" />
-<path sodipodi:type="arc" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" id="path4881" sodipodi:cx="757.7007" sodipodi:cy="280.0198" sodipodi:rx="115.3023" sodipodi:ry="64.05683" d="m 873.003,280.0198 a 115.3023,64.05683 0 1 1 -230.6046,0 A 115.3023,64.05683 0 1 1 873.003,280.0198 Z" />
-<path sodipodi:nodetypes="ccc" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" d="m 664.4267,316.5279 c 10.9674,21.8463 -10.664,30.6531 -22.1643,43.5124 32.1799,-2.693 58.7436,-6.5922 69.2934,-26.1159" id="path4490-2-3" inkscape:connector-curvature="0" inkscape:transform-center-x="17.57534" inkscape:transform-center-y="34.80832" />
-<path transform="matrix(0.9133189,0,0,0.8937789,61.14469,26.1428)" d="m 873.003,280.0198 a 115.3023,64.05683 0 1 1 -230.6046,0 A 115.3023,64.05683 0 1 1 873.003,280.0198 Z" sodipodi:ry="64.05683" sodipodi:rx="115.3023" sodipodi:cy="280.0198" sodipodi:cx="757.7007" id="path5823" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.7200758;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:type="arc" />
-<flowRoot xml:space="preserve" id="flowRoot4599-4" style="font-size:17.5px;font-style:normal;font-weight:normal;text-align:justify;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" transform="translate(300.152,-2.837883)"><flowRegion id="flowRegion4601-55"><rect id="rect4603-233" width="226.9439" height="95.17012" x="360.5484" y="237.9254" style="font-size:17.5px;text-align:justify;text-anchor:start" ry="47.58506" /></flowRegion><flowPara id="flowPara4605-3">Circle Balloon</flowPara></flowRoot><path inkscape:transform-center-y="32.60273" inkscape:transform-center-x="16.6098" inkscape:connector-curvature="0" id="path5825" d="m 661.0686,303.7399 c 14.3747,25.2739 8.7681,34.3246 -6.1103,46.7701 30.524,-2.4115 50.3257,-9.921 58.1711,-30.3136" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccc" />
-</symbol>
-<symbol transform="translate(1195.664,-72)" id="g5755">
-<title id="title5859">Hip Balloon</title>
-<path sodipodi:nodetypes="sssssssss" inkscape:connector-curvature="0" id="path5751" d="m -239.2461,224.1791 201.32145,0 c 12.16714,0 25.42757,10.2991 21.96234,21.9623 -7.26108,24.4391 -20.60595,41.8681 0,98.8306 4.1389,11.4415 -9.7952,21.9623 -21.96234,21.9623 l -201.32145,0 c -12.1671,0 -27.6188,-11.19 -21.9623,-21.9623 18.7013,-35.6151 15.3949,-68.0863 0,-98.8306 C -266.6561,235.262 -251.4132,224.1791 -239.2461,224.1791 Z" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
-<path inkscape:transform-center-y="29.16837" inkscape:transform-center-x="25.87892" inkscape:connector-curvature="0" id="path5753" d="m -214.5645,355.7255 -11.6304,48.8672 71.9724,-48.8672" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccc" />
-<path style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" d="m -245.2461,218.1791 201.32145,0 c 12.16714,0 25.42757,10.2991 21.96234,21.9623 -7.26108,24.4391 -20.60595,41.8681 0,98.8306 4.1389,11.4415 -9.7952,21.9623 -21.96234,21.9623 l -201.32145,0 c -12.1671,0 -27.6188,-11.19 -21.9623,-21.9623 18.7013,-35.6151 15.3949,-68.0863 0,-98.8306 C -272.6561,229.262 -257.4132,218.1791 -245.2461,218.1791 Z" id="rect4488-7" inkscape:connector-curvature="0" sodipodi:nodetypes="sssssssss" />
-<path sodipodi:nodetypes="ccc" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" d="m -220.5645,355.7255 -11.6304,48.8672 71.9724,-48.8672" id="path4490-0" inkscape:connector-curvature="0" inkscape:transform-center-x="25.87892" inkscape:transform-center-y="29.16837" />
-<path sodipodi:nodetypes="sssssssss" inkscape:connector-curvature="0" id="path5811" d="m -244.4462,220.1791 190.88638,0 c 11.53648,0 24.10959,9.5996 20.82397,20.4708 -6.88472,22.7793 -19.53789,37.0247 0,90.1187 3.92437,10.6644 -9.28749,20.4707 -20.82397,20.4707 l -188.88638,0 c -11.5365,0 -24.1873,-10.43 -18.824,-20.4707 17.732,-33.1964 10.597,-61.4624 -4,-90.1187 C -270.4355,230.5093 -255.9827,220.1791 -244.4462,220.1791 Z" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.4999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
-<flowRoot xml:space="preserve" id="flowRoot4583-7" style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:justify;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:FreeSans;-inkscape-font-specification:FreeSans" transform="translate(-316.6237,0.3859063)"><flowRegion id="flowRegion4585-2"><rect id="rect4587-4" width="226.9442" height="124.4533" x="58.56624" y="226.9442" style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:justify;text-anchor:start;font-family:FreeSans;-inkscape-font-specification:FreeSans" ry="12.81137" /></flowRegion><flowPara id="flowPara4589-5">Hip Balloon</flowPara></flowRoot><path inkscape:transform-center-y="27.18743" inkscape:transform-center-x="24.53752" inkscape:connector-curvature="0" id="path5813" d="m -217.0439,346.3843 -11.0276,45.5484 62.2419,-45.5484" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.4999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccc" />
-</symbol>
-<symbol transform="translate(244.0945,524.4658)" id="g4609-9">
-<title id="title5703">Electronic Balloon</title>
-<rect ry="0" y="234.0316" x="355.3975" height="113.4721" width="245.2461" id="rect5807" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
-<path inkscape:transform-center-y="49.9548" inkscape:transform-center-x="20.94235" inkscape:connector-curvature="0" id="path5809" d="m 391.0094,342.9622 -14.6992,40.8082 -20.9809,-15.3085 -34.9552,75.9629 40.0858,-48.994 31.2096,16.8629 53.4915,-70.4171" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccccccc" />
-<rect style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" id="rect4488-0-67" width="245.2461" height="113.4721" x="351.3975" y="230.0316" ry="0" />
-<path sodipodi:nodetypes="ccccccc" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" d="m 387.0094,338.9622 -14.6992,40.8082 -20.9809,-15.3085 -34.9552,75.9629 40.0858,-48.994 31.2096,16.8629 53.4915,-70.4171" id="path4490-2-1" inkscape:connector-curvature="0" inkscape:transform-center-x="20.94235" inkscape:transform-center-y="49.9548" />
-<rect ry="0" y="232.0316" x="353.3981" height="101.0674" width="231.2455" id="rect5855" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
-<flowRoot xml:space="preserve" id="flowRoot4599-55" style="font-size:17.5px;font-style:normal;font-weight:normal;text-align:justify;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion id="flowRegion4601-7"><rect id="rect4603-23" width="226.9439" height="95.17012" x="360.5484" y="237.9254" style="font-size:17.5px;text-align:justify;text-anchor:start" ry="0" /></flowRegion><flowPara id="flowPara4605-4">Over the Phone</flowPara></flowRoot><path inkscape:transform-center-y="44.4938" inkscape:transform-center-x="19.74678" inkscape:connector-curvature="0" id="path5857" d="m 391.7683,330.0627 -18.1471,52.9906 -21.5483,-15.1481 -26.151,56.3109 29.4757,-40.6119 27.1583,12.2455 55.4813,-67.7626" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:nodetypes="ccccccc" />
-</symbol>
-<symbol transform="translate(-0.4341,-286)" id="g4774">
-<title id="title5701">Thought Balloon</title>
-<path id="path5801" d="m 221.8125,699.9375 c -14.2458,0 -26.6466,5.4502 -33,13.4375 -6.7126,-5.9485 -16.8847,-9.75 -28.3125,-9.75 -15.0267,0 -27.9554,6.5481 -33.5938,15.9375 -3.6717,-2.0039 -7.8108,-3.125 -12.1874,-3.125 -15.16185,0 -27.43755,13.5095 -27.43755,30.1875 0,12.3742 6.78415,22.991 16.46875,27.6562 l 0,3.5626 c -11.6047,3.3125 -20.125,14.2985 -20.125,27.3437 0,14.5773 10.65075,26.5871 24.3438,28.1875 -0.3604,1.2436 -0.5626,2.5299 -0.5626,3.8438 0,11.1186 13.5408,20.125 30.2188,20.125 15.0001,0 27.4301,-7.2884 29.7812,-16.8438 2.7366,12.432 16.219,21.875 32.4376,21.875 11.5758,0 21.7495,-4.8199 27.625,-12.0938 4.7094,3.2879 10.7013,5.25 17.2187,5.25 11.2971,0 20.9748,-5.9243 25.1875,-14.375 3.547,10.4816 13.4457,18.0313 25.125,18.0313 11.4848,0 21.2734,-7.2905 24.9688,-17.5 2.2583,0.661 4.615,1.0313 7.0624,1.0313 15.1619,0 27.4688,-13.5408 27.4688,-30.2188 0,-6.7918 -2.0595,-13.049 -5.5,-18.0938 l 0,-1.9687 c 10.5453,-2.9226 18.3125,-12.9239 18.3125,-24.7813 0,-10.6996 -6.3292,-19.8519 -15.3125,-23.6874 2.7234,-4.1672 4.3125,-9.2359 4.3125,-14.7188 0,-14.151 -10.6411,-25.625 -23.7813,-25.625 -8.2984,0 -15.5862,4.5641 -19.8437,11.5 -5.1417,-6.8312 -15.6414,-11.5 -27.75,-11.5 -12.6191,0 -23.4624,5.0714 -28.3437,12.375 C 251.0409,706.591 237.578,699.9375 221.8125,699.9375 Z" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" inkscape:connector-curvature="0" />
-<path transform="translate(0.33961,-6.98117)" d="m 159.2269,899.5409 a 28.36802,21.04724 0 1 1 -56.736,0 A 28.36802,21.04724 0 1 1 159.2269,899.5409 Z" sodipodi:ry="21.04724" sodipodi:rx="28.36802" sodipodi:cy="899.5409" sodipodi:cx="130.8589" id="path5803" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:type="arc" />
-<path transform="translate(36.94351,-8.81137)" d="m 67.71722,944.3807 a 14.64156,10.98117 0 1 1 -29.28312,0 A 14.64156,10.98117 0 1 1 67.71722,944.3807 Z" sodipodi:ry="10.98117" sodipodi:rx="14.64156" sodipodi:cy="944.3807" sodipodi:cx="53.07566" id="path5805" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:type="arc" />
-<path inkscape:connector-curvature="0" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" d="m 217.8125,695.9375 c -14.2458,0 -26.6466,5.4502 -33,13.4375 -6.7126,-5.9485 -16.8847,-9.75 -28.3125,-9.75 -15.0267,0 -27.9554,6.5481 -33.5938,15.9375 -3.6717,-2.0039 -7.8108,-3.125 -12.1874,-3.125 -15.16185,0 -27.43755,13.5095 -27.43755,30.1875 0,12.3742 6.78415,22.991 16.46875,27.6562 l 0,3.5626 c -11.6047,3.3125 -20.125,14.2985 -20.125,27.3437 0,14.5773 10.65075,26.5871 24.3438,28.1875 -0.3604,1.2436 -0.5626,2.5299 -0.5626,3.8438 0,11.1186 13.5408,20.125 30.2188,20.125 15.0001,0 27.4301,-7.2884 29.7812,-16.8438 2.7366,12.432 16.219,21.875 32.4376,21.875 11.5758,0 21.7495,-4.8199 27.625,-12.0938 4.7094,3.2879 10.7013,5.25 17.2187,5.25 11.2971,0 20.9748,-5.9243 25.1875,-14.375 3.547,10.4816 13.4457,18.0313 25.125,18.0313 11.4848,0 21.2734,-7.2905 24.9688,-17.5 2.2583,0.661 4.615,1.0313 7.0624,1.0313 15.1619,0 27.4688,-13.5408 27.4688,-30.2188 0,-6.7918 -2.0595,-13.049 -5.5,-18.0938 l 0,-1.9687 c 10.5453,-2.9226 18.3125,-12.9239 18.3125,-24.7813 0,-10.6996 -6.3292,-19.8519 -15.3125,-23.6874 2.7234,-4.1672 4.3125,-9.2359 4.3125,-14.7188 0,-14.151 -10.6411,-25.625 -23.7813,-25.625 -8.2984,0 -15.5862,4.5641 -19.8437,11.5 -5.1417,-6.8312 -15.6414,-11.5 -27.75,-11.5 -12.6191,0 -23.4624,5.0714 -28.3437,12.375 C 247.0409,702.591 233.578,695.9375 217.8125,695.9375 Z" id="rect4488-0-6-3" />
-<path sodipodi:nodetypes="scscssccscsscscscscssccscsscscs" id="path5833" d="m 214.5058,699.9375 c -13.4925,0 -25.2377,4.9468 -31.2551,12.1966 -6.3576,-5.3992 -15.992,-8.8496 -26.8155,-8.8496 -14.2321,0 -26.4772,5.9434 -31.8175,14.4658 -3.4775,-1.8189 -7.3978,-2.8365 -11.543,-2.8365 -14.36016,0 -25.98678,12.262 -25.98678,27.3999 0,11.2315 6.42544,20.8679 15.59798,25.1024 l 2,5.2336 c -10.99111,3.0066 -19.0609,12.9781 -19.0609,24.8187 0,13.2312 8.08759,22.1319 21.0566,23.5845 -0.3413,1.1288 -0.5328,2.2963 -0.5328,3.4889 0,10.0919 12.8248,18.2665 28.6209,18.2665 14.207,0 25.9798,-6.6153 28.2066,-15.2883 2.5918,11.284 15.3614,19.855 30.7224,19.855 10.9637,0 20.5995,-4.3749 26.1643,-10.977 4.4604,2.9842 10.1355,4.7652 16.3083,4.7652 10.6997,0 19.8657,-5.3773 23.8557,-13.0476 3.3595,9.5137 12.7348,16.3662 23.7965,16.3662 10.8775,0 20.1486,-6.6173 23.6486,-15.8839 2.1389,0.5999 4.371,0.936 6.689,0.936 14.3601,0 26.0164,-12.2904 26.0164,-27.4283 0,-6.1646 -1.9507,-11.844 -5.2092,-16.423 l 0,-1.7868 c 9.9877,-2.6528 17.3442,-11.7306 17.3442,-22.493 0,-9.7116 -5.9946,-18.0187 -14.5028,-21.5 2.5794,-3.7824 4.0844,-8.383 4.0844,-13.3597 0,-12.8442 -6.0784,-21.2586 -18.5238,-21.2586 -7.8596,0 -12.7622,6.1426 -16.7945,12.438 -4.8698,-6.2003 -20.8144,-14.438 -32.2827,-14.438 -11.9518,0 -20.2218,6.603 -24.845,13.2322 C 244.1888,707.9766 229.4377,699.9375 214.5058,699.9375 Z" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.4999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" inkscape:connector-curvature="0" />
-<flowRoot xml:space="preserve" id="flowRoot4599-5-8" style="font-size:17.5px;font-style:normal;font-weight:normal;text-align:justify;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" transform="translate(-251.6598,489.9755)"><flowRegion id="flowRegion4601-5-3"><rect id="rect4603-2-8" width="226.9439" height="95.17012" x="360.5484" y="237.9254" style="font-size:17.5px;text-align:justify;text-anchor:start" ry="29.28312" /></flowRegion><flowPara id="flowPara4605-9-0">Think Balloon</flowPara></flowRoot><path sodipodi:type="arc" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" id="path4769" sodipodi:cx="130.8589" sodipodi:cy="899.5409" sodipodi:rx="28.36802" sodipodi:ry="21.04724" d="m 159.2269,899.5409 a 28.36802,21.04724 0 1 1 -56.736,0 A 28.36802,21.04724 0 1 1 159.2269,899.5409 Z" transform="translate(-3.66039,-10.98117)" />
-<path sodipodi:type="arc" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" id="path4771" sodipodi:cx="53.07566" sodipodi:cy="944.3807" sodipodi:rx="14.64156" sodipodi:ry="10.98117" d="m 67.71722,944.3807 a 14.64156,10.98117 0 1 1 -29.28312,0 A 14.64156,10.98117 0 1 1 67.71722,944.3807 Z" transform="translate(32.94351,-12.81137)" />
-<path transform="matrix(0.7532433,0,0,0.8099513,25.62993,157.9754)" d="m 159.2269,899.5409 a 28.36802,21.04724 0 1 1 -56.736,0 A 28.36802,21.04724 0 1 1 159.2269,899.5409 Z" sodipodi:ry="21.04724" sodipodi:rx="28.36802" sodipodi:cy="899.5409" sodipodi:cx="130.8589" id="path5835" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.1789536;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" sodipodi:type="arc" />
-</symbol>
-</defs>
-<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.5" inkscape:cx="438.8425" inkscape:cy="364.1895" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:window-width="1301" inkscape:window-height="744" inkscape:window-x="65" inkscape:window-y="24" inkscape:window-maximized="1" />
-<metadata id="metadata7">
-<rdf:RDF>
-<cc:Work rdf:about="">
-<dc:format>image/svg+xml</dc:format>
-<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-<dc:title>Word Balloons</dc:title>
-<dc:date>2013-04-22</dc:date>
-<dc:creator>
-<cc:Agent>
-<dc:title>Martin Owens</dc:title>
-</cc:Agent>
-</dc:creator>
-<dc:rights>
-<cc:Agent>
-<dc:title>Public Domain</dc:title>
-</cc:Agent>
-</dc:rights>
-<dc:language>English</dc:language>
-<dc:subject>
-<rdf:Bag>
-<rdf:li>word</rdf:li>
-<rdf:li>balloon</rdf:li>
-<rdf:li>comic</rdf:li>
-<rdf:li>cartoon</rdf:li>
-<rdf:li>speach</rdf:li>
-<rdf:li>exclaim</rdf:li>
-</rdf:Bag>
-</dc:subject>
-<cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
-</cc:Work>
-<cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/">
-<cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" />
-<cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" />
-<cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
-</cc:License>
-</rdf:RDF>
-</metadata>
-<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-33.15751,-44.1807)">
-<flowRoot xml:space="preserve" id="flowRoot4575" style="font-size:22.5px;font-style:normal;font-weight:normal;text-align:justify;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion id="flowRegion4577"><rect id="rect4579" width="228.7744" height="128.1137" x="56.73605" y="223.2838" style="font-size:22.5px;text-align:justify;text-anchor:start" ry="16.47176" /></flowRegion><flowPara id="flowPara4581"></flowPara></flowRoot><path sodipodi:type="arc" style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.1789536;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" id="path5835-5" sodipodi:cx="130.8589" sodipodi:cy="899.5409" sodipodi:rx="28.36802" sodipodi:ry="21.04724" d="m 159.2269,899.5409 c 0,11.6241 -12.7008,21.0472 -28.368,21.0472 -15.6672,0 -28.368,-9.4231 -28.368,-21.0472 0,-11.6241 12.7008,-21.0472 28.368,-21.0472 C 146.5261,878.4937 159.2269,887.9168 159.2269,899.5409 Z" transform="matrix(0.3478572,0,0,0.3110734,-1.020215,649.0388)" />
-<use id="use6910" xlink:href="#g4774" x="0" y="0" width="1" height="1" transform="translate(-36.036,-364.0068)" />
-<use id="use6955" xlink:href="#g4609-9" x="0" y="0" width="1" height="1" transform="translate(-201.8085,-690.4568)" />
-<use id="use6998" xlink:href="#g5755" x="0" y="0" width="1" height="1" transform="translate(-876.9798,217.8614)" />
-<use id="use7041" xlink:href="#g5687" x="0" y="0" width="1" height="1" transform="translate(-239.5151,201.2355)" />
-<use id="use7084" xlink:href="#g4609" x="0" y="0" width="1" height="1" transform="translate(-253.1455,552.0558)" />
-<use id="use7127" xlink:href="#squared" x="0" y="0" width="1" height="1" transform="translate(386.8367,447.4919)" />
-<use id="use7170" xlink:href="#g4717" x="0" y="0" width="1" height="1" transform="translate(351.7801,-256.711)" />
-<use id="use7210" xlink:href="#g4645" x="0" y="0" width="1" height="1" transform="translate(813.7201,9.57109)" />
-</g>
</svg>
diff --git a/src/extension/effect.cpp b/src/extension/effect.cpp
index 1575c2b10..3c8ee5844 100644
--- a/src/extension/effect.cpp
+++ b/src/extension/effect.cpp
@@ -38,7 +38,7 @@ Inkscape::XML::Node * Effect::_filters_list = NULL;
Effect::Effect (Inkscape::XML::Node * in_repr, Implementation::Implementation * in_imp)
: Extension(in_repr, in_imp),
_id_noprefs(Glib::ustring(get_id()) + ".noprefs"),
- _name_noprefs(Glib::ustring(get_name()) + _(" (No preferences)")),
+ _name_noprefs(Glib::ustring(_(get_name())) + _(" (No preferences)")),
_verb(get_id(), get_name(), NULL, NULL, this, true),
_verb_nopref(_id_noprefs.c_str(), _name_noprefs.c_str(), NULL, NULL, this, false),
_menu_node(NULL), _workingDialog(true),
diff --git a/src/extension/internal/gdkpixbuf-input.cpp b/src/extension/internal/gdkpixbuf-input.cpp
index 6d159d265..d7d692091 100644
--- a/src/extension/internal/gdkpixbuf-input.cpp
+++ b/src/extension/internal/gdkpixbuf-input.cpp
@@ -26,23 +26,34 @@ namespace Internal {
SPDocument *
GdkpixbufInput::open(Inkscape::Extension::Input *mod, char const *uri)
{
- // determine whether the image should be embedded
- // TODO: this logic seems very wrong
- bool embed = false;
+ // Determine whether the image should be embedded
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- Glib::ustring attr = prefs->getString("/dialogs/import/link");
- if (strcmp(attr.c_str(), "embed") == 0) {
- embed = true;
- } else if (strcmp(attr.c_str(), "link") == 0) {
- embed = false;
- } else {
- embed = (strcmp(mod->get_param_optiongroup("link"), "embed") == 0);
- if (mod->get_param_bool("ask")) {
- prefs->setString("/dialogs/import/link", mod->get_param_optiongroup("link"));
- mod->set_param_bool("ask", false);
+ bool ask = prefs->getBool("/dialogs/import/ask");
+ Glib::ustring link = prefs->getString("/dialogs/import/link");
+ Glib::ustring scale = prefs->getString("/dialogs/import/scale");
+ // std::cout << "GkdpixbufInput::open: "
+ // << " ask: " << ask
+ // << ", link: " << link
+ // << ", scale: " << scale << std::endl;
+ // std::cout << " in preferences: "
+ // << " ask: " << !mod->get_param_bool("do_not_ask")
+ // << ", link: " << mod->get_param_optiongroup("link")
+ // << ", scale: " << mod->get_param_optiongroup("scale") << std::endl;
+ if( ask ) {
+ Glib::ustring mod_link = mod->get_param_optiongroup("link");
+ Glib::ustring mod_scale = mod->get_param_optiongroup("scale");
+ if( link.compare( mod_link ) != 0 ) {
+ link = mod_link;
+ }
+ prefs->setString("/dialogs/import/link", link );
+ if( scale.compare( mod_scale ) != 0 ) {
+ scale = mod_scale;
}
+ prefs->setString("/dialogs/import/scale", scale );
+ prefs->setBool("/dialogs/import/ask", !mod->get_param_bool("do_not_ask") );
}
-
+ bool embed = ( link.compare( "embed" ) == 0 );
+
SPDocument *doc = NULL;
boost::scoped_ptr<Inkscape::Pixbuf> pb(Inkscape::Pixbuf::create_from_file(uri));
@@ -84,6 +95,12 @@ GdkpixbufInput::open(Inkscape::Extension::Input *mod, char const *uri)
Inkscape::XML::Node *image_node = xml_doc->createElement("svg:image");
sp_repr_set_svg_double(image_node, "width", width);
sp_repr_set_svg_double(image_node, "height", height);
+ if( scale.compare( "auto" ) != 0 ) {
+ SPCSSAttr *css = sp_repr_css_attr_new();
+ sp_repr_css_set_property(css, "image-rendering", scale.c_str());
+ sp_repr_css_set(image_node, css, "style");
+ sp_repr_css_attr_unref( css );
+ }
if (embed) {
sp_embed_image(image_node, pb.get());
@@ -155,12 +172,21 @@ GdkpixbufInput::init(void)
"<inkscape-extension xmlns=\"" INKSCAPE_EXTENSION_URI "\">\n"
"<name>%s</name>\n"
"<id>org.inkscape.input.gdkpixbuf.%s</id>\n"
+
"<param name='link' type='optiongroup' appearance='full' _gui-text='" N_("Link or embed image:") "' >\n"
"<_option value='embed' >" N_("Embed") "</_option>\n"
"<_option value='link' >" N_("Link") "</_option>\n"
"</param>\n"
"<_param name='help' type='description'>" N_("Embed results in stand-alone, larger SVG files. Link references a file outside this SVG document and all files must be moved together.") "</_param>\n"
- "<param name=\"ask\" _gui-description='" N_("Hide the dialog next time and always apply the same action.") "' gui-text=\"" N_("Don't ask again") "\" type=\"boolean\" >false</param>\n"
+
+ "<param name='scale' type='optiongroup' appearance='full' _gui-text='" N_("Scale image preference (image-rendering):") "' >\n"
+ "<_option value='auto' >" N_("None (auto)") "</_option>\n"
+ "<_option value='optimizeQuality' >" N_("Smooth (optimizeQuality)") "</_option>\n"
+ "<_option value='optimizeSpeed' >" N_("Blocky (optimizeSpeed)") "</_option>\n"
+ "</param>\n"
+ "<_param name='help' type='description'>" N_("When an image is upscaled, apply smoothing or keep blocky (pixelated). (Will not work in all browsers.)") "</_param>\n"
+
+ "<param name=\"do_not_ask\" _gui-description='" N_("Hide the dialog next time and always apply the same actions.") "' gui-text=\"" N_("Don't ask again") "\" type=\"boolean\" >false</param>\n"
"<input>\n"
"<extension>.%s</extension>\n"
"<mimetype>%s</mimetype>\n"
diff --git a/src/extension/system.cpp b/src/extension/system.cpp
index c0211032c..7a50826ca 100644
--- a/src/extension/system.cpp
+++ b/src/extension/system.cpp
@@ -97,9 +97,9 @@ SPDocument *open(Extension *key, gchar const *filename)
bool show = true;
if (strlen(imod->get_id()) > 27) {
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- Glib::ustring attr = prefs->getString("/dialogs/import/link");
+ bool ask = prefs->getBool("/dialogs/import/ask");
Glib::ustring id = Glib::ustring(imod->get_id(), 28);
- if (strcmp(attr.c_str(), "ask") != 0 and strcmp(id.c_str(), "org.inkscape.input.gdkpixbuf") == 0) {
+ if (!ask and id.compare( "org.inkscape.input.gdkpixbuf") == 0) {
show = false;
imod->set_gui(false);
}
diff --git a/src/preferences-skeleton.h b/src/preferences-skeleton.h
index 17b912d33..ebc5386e3 100644
--- a/src/preferences-skeleton.h
+++ b/src/preferences-skeleton.h
@@ -197,7 +197,7 @@ static char const preferences_skeleton[] =
" <group id=\"save_as\" default=\"\" append_extension=\"1\" enable_preview=\"1\" path=\"\" use_current_dir=\"1\"/>\n"
" <group id=\"save_copy\" default=\"\" append_extension=\"1\" enable_preview=\"1\" path=\"\"/>\n"
" <group id=\"open\" enable_preview=\"1\" path=\"\"/>\n"
-" <group id=\"import\" enable_preview=\"1\" path=\"\" link=\"ask\"/>\n"
+" <group id=\"import\" enable_preview=\"1\" path=\"\" ask=\"1\" link=\"link\" scale=\"optimizeSpeed\"/>\n"
" <group id=\"debug\" redirect=\"0\"/>\n"
" <group id=\"clonetiler\" />\n"
" <group id=\"gridtiler\" />\n"
@@ -279,7 +279,6 @@ static char const preferences_skeleton[] =
" <group id=\"autoscrollspeed\" value=\"0.7\"/>\n"
" <group id=\"autoscrolldistance\" value=\"-10\"/>\n"
" <group id=\"simplifythreshold\" value=\"0.002\"/>\n"
-" <group id=\"bitmapoversample\" value=\"1\"/>\n"
" <group id=\"bitmapeditor\" value=\"gimp\"/>\n"
" <group id=\"bitmapautoreload\" value=\"1\"/>\n"
" <group id=\"dialogtype\" value=\"1\"/>\n"
diff --git a/src/sp-ellipse.cpp b/src/sp-ellipse.cpp
index 4cf96e432..7e5dda871 100644
--- a/src/sp-ellipse.cpp
+++ b/src/sp-ellipse.cpp
@@ -450,7 +450,7 @@ void SPGenericEllipse::set_shape()
// This code converts the circle to four elliptical arcs explicitly.
// Circle::getPath currently creates cubic bezier curves, these are not suitable here
// as a circle should have four mid markers at 0, 90, 180, 270 degrees.
- Geom::Path path;
+ Geom::Path path(Geom::Point::polar(0));
Geom::EllipticalArc* arc;
arc = circle.arc(Geom::Point::polar(0), Geom::Point::polar(M_PI / 4.0), Geom::Point::polar(M_PI / 2.0));
diff --git a/src/sp-pattern.cpp b/src/sp-pattern.cpp
index 213b57559..ad5449f34 100644
--- a/src/sp-pattern.cpp
+++ b/src/sp-pattern.cpp
@@ -665,7 +665,8 @@ cairo_pattern_t* SPPattern::pattern_new(cairo_t *base_ct, Geom::OptRect const &b
// the scaling component from the complete matrix and use it
// to find the optimum tile size for rendering
// c is number of pixels in buffer x and y.
- Geom::Point c(pattern_tile.dimensions()*vb2ps.descrim()*ps2user.descrim()*full.descrim()*1.1);
+ // Scale factor of 1.1 is too small... see bug #1251039
+ Geom::Point c(pattern_tile.dimensions()*vb2ps.descrim()*ps2user.descrim()*full.descrim()*2.0);
c[Geom::X] = ceil(c[Geom::X]);
c[Geom::Y] = ceil(c[Geom::Y]);
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index e9cf2e753..03108b403 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -1419,34 +1419,43 @@ void InkscapePreferences::initPageRendering()
void InkscapePreferences::initPageBitmaps()
{
- {
- Glib::ustring labels[] = {_("None"), _("2x2"), _("4x4"), _("8x8"), _("16x16")};
- int values[] = {0, 1, 2, 3, 4};
- _misc_overs_bitmap.set_size_request(_sb_width);
- _misc_overs_bitmap.init("/options/bitmapoversample/value", labels, values, G_N_ELEMENTS(values), 1);
- _page_bitmaps.add_line( false, _("Oversample bitmaps:"), _misc_overs_bitmap, "", "", false);
- }
-
+ /* Note: /options/bitmapoversample removed with Cairo renderer */
+ _page_bitmaps.add_group_header( _("Edit"));
_misc_bitmap_autoreload.init(_("Automatically reload bitmaps"), "/options/bitmapautoreload/value", true);
_page_bitmaps.add_line( false, "", _misc_bitmap_autoreload, "",
_("Automatically reload linked images when file is changed on disk"));
_misc_bitmap_editor.init("/options/bitmapeditor/value", true);
_page_bitmaps.add_line( false, _("_Bitmap editor:"), _misc_bitmap_editor, "", "", true);
+
+ _page_bitmaps.add_group_header( _("Export"));
_importexport_export_res.init("/dialogs/export/defaultxdpi/value", 0.0, 6000.0, 1.0, 1.0, Inkscape::Util::Quantity::convert(1, "in", "px"), true, false);
_page_bitmaps.add_line( false, _("Default export _resolution:"), _importexport_export_res, _("dpi"),
_("Default bitmap resolution (in dots per inch) in the Export dialog"), false);
+ _page_bitmaps.add_group_header( _("Create"));
_bitmap_copy_res.init("/options/createbitmap/resolution", 1.0, 6000.0, 1.0, 1.0, Inkscape::Util::Quantity::convert(1, "in", "px"), true, false);
_page_bitmaps.add_line( false, _("Resolution for Create Bitmap _Copy:"), _bitmap_copy_res, _("dpi"),
_("Resolution used by the Create Bitmap Copy command"), false);
+
+ _page_bitmaps.add_group_header( _("Import"));
+ _bitmap_ask.init(_("Ask about linking and scaling when importing"), "/dialogs/import/ask", true);
+ _page_bitmaps.add_line( true, "", _bitmap_ask, "",
+ _("Pop-up linking and scaling dialog when importing bitmap image."));
+
{
- Glib::ustring labels[] = {_("Always embed"), _("Always link"), _("Ask")};
- Glib::ustring values[] = {"embed", "link", "ask"};
- _bitmap_import.init("/dialogs/import/link", labels, values, G_N_ELEMENTS(values), "ask");
- _page_bitmaps.add_line( false, _("Bitmap import:"), _bitmap_import, "", "", false);
+ Glib::ustring labels[] = {_("Embed"), _("Link")};
+ Glib::ustring values[] = {"embed", "link"};
+ _bitmap_link.init("/dialogs/import/link", labels, values, G_N_ELEMENTS(values), "link");
+ _page_bitmaps.add_line( false, _("Bitmap link:"), _bitmap_link, "", "", false);
+ }
- _bitmap_import_quality.init("/dialogs/import/quality", 1, 100, 1, 1, 100, true, false);
- _page_bitmaps.add_line( false, _("Bitmap import quality:"), _bitmap_import_quality, "%", "Bitmap import quality (jpeg only). 100 is best quality", false);
+ {
+ Glib::ustring labels[] = {_("None (auto)"), _("Smooth (optimizeQuality)"), _("Blocky (optimizeSpeed)") };
+ Glib::ustring values[] = {"auto", "optimizeQuality", "optimizeSpeed"};
+ _bitmap_scale.init("/dialogs/import/scale", labels, values, G_N_ELEMENTS(values), "scale");
+ _page_bitmaps.add_line( false, _("Bitmap scale (image-rendering):"), _bitmap_scale, "", "", false);
}
+
+ /* Note: /dialogs/import/quality removed use of in r12542 */
_importexport_import_res.init("/dialogs/import/defaultxdpi/value", 0.0, 6000.0, 1.0, 1.0, Inkscape::Util::Quantity::convert(1, "in", "px"), true, false);
_page_bitmaps.add_line( false, _("Default _import resolution:"), _importexport_import_res, _("dpi"),
_("Default bitmap resolution (in dots per inch) for bitmap import"), false);
diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h
index 56222fb22..da85b805d 100644
--- a/src/ui/dialog/inkscape-preferences.h
+++ b/src/ui/dialog/inkscape-preferences.h
@@ -365,12 +365,14 @@ protected:
UI::Widget::PrefCheckButton _spell_ignorenumbers;
UI::Widget::PrefCheckButton _spell_ignoreallcaps;
-
+ // Bitmaps
UI::Widget::PrefCombo _misc_overs_bitmap;
UI::Widget::PrefEntryFileButtonHBox _misc_bitmap_editor;
UI::Widget::PrefCheckButton _misc_bitmap_autoreload;
UI::Widget::PrefSpinButton _bitmap_copy_res;
- UI::Widget::PrefCombo _bitmap_import;
+ UI::Widget::PrefCheckButton _bitmap_ask;
+ UI::Widget::PrefCombo _bitmap_link;
+ UI::Widget::PrefCombo _bitmap_scale;
UI::Widget::PrefSpinButton _bitmap_import_quality;
UI::Widget::PrefEntry _kb_search;
diff --git a/src/ui/dialog/object-attributes.cpp b/src/ui/dialog/object-attributes.cpp
index 9a7b91c57..cfa5c6182 100644
--- a/src/ui/dialog/object-attributes.cpp
+++ b/src/ui/dialog/object-attributes.cpp
@@ -67,6 +67,7 @@ static const SPAttrDesc image_desc[] = {
{ N_("Y:"), "y"},
{ N_("Width:"), "width"},
{ N_("Height:"), "height"},
+ { N_("Image Rendering:"), "image-rendering"},
{ NULL, NULL}
};
diff --git a/src/ui/dialog/object-properties.cpp b/src/ui/dialog/object-properties.cpp
index 8a2b0299a..82b2cf6b1 100644
--- a/src/ui/dialog/object-properties.cpp
+++ b/src/ui/dialog/object-properties.cpp
@@ -36,6 +36,8 @@
#include "selection.h"
#include "desktop.h"
#include "sp-item.h"
+#include "sp-image.h"
+#include "xml/repr.h"
#include <glibmm/i18n.h>
#if WITH_GTKMM_3_0
@@ -56,11 +58,12 @@ ObjectProperties::ObjectProperties (void) :
#if WITH_GTKMM_3_0
TopTable(Gtk::manage(new Gtk::Grid())),
#else
- TopTable(Gtk::manage(new Gtk::Table(3, 4))),
+ TopTable(Gtk::manage(new Gtk::Table(4, 4))),
#endif
LabelID(_("_ID:"), 1),
LabelLabel(_("_Label:"), 1),
LabelTitle(_("_Title:"),1),
+ LabelImageRendering(_("_Image Rendering:"),1),
LabelDescription(_("_Description:"),1),
FrameDescription("", FALSE),
HBoxCheck(FALSE, 0),
@@ -248,6 +251,39 @@ void ObjectProperties::MakeWidget(void)
FrameTextDescription.add (TextViewDescription);
TextViewDescription.add_mnemonic_label(LabelDescription);
+ /* Image rendering */
+ /* Create the label for the object ImageRendering */
+ LabelImageRendering.set_label (LabelImageRendering.get_label() + " ");
+ LabelImageRendering.set_alignment (1, 0.5);
+
+#if WITH_GTKMM_3_0
+ LabelImageRendering.set_valign(Gtk::ALIGN_CENTER);
+ TopTable->attach(LabelImageRendering, 0, 3, 1, 1);
+#else
+ TopTable->attach(LabelImageRendering, 0, 1, 3, 4,
+ Gtk::SHRINK | Gtk::FILL,
+ Gtk::AttachOptions(), 0, 0 );
+#endif
+
+ /* Create the combo box text for the 'image-rendering' property */
+ ComboBoxTextImageRendering.append( "auto" );
+ ComboBoxTextImageRendering.append( "optimizeQuality" );
+ ComboBoxTextImageRendering.append( "optimizeSpeed" );
+ ComboBoxTextImageRendering.set_tooltip_text (_("The 'image-rendering' property can influence how a bitmap is up-scaled:\n\t'auto' no preference;\n\t'optimizeQuality' smooth;\n\t'optimizeSpeed' blocky.\nNote that this behaviour is not defined in the SVG 1.1 specification and not all browsers follow this interpretation."));
+
+#if WITH_GTKMM_3_0
+ ComboBoxTextImageRendering.set_valign(Gtk::ALIGN_CENTER);
+ TopTable->attach(ComboBoxTextImageRendering, 1, 3, 1, 1);
+#else
+ TopTable->attach(ComboBoxTextImageRendering, 1, 2, 3, 4,
+ Gtk::EXPAND | Gtk::FILL,
+ Gtk::AttachOptions(), 0, 0 );
+#endif
+
+ LabelImageRendering.set_mnemonic_widget (ComboBoxTextImageRendering);
+
+ ComboBoxTextImageRendering.signal_changed().connect(sigc::mem_fun(this, &ObjectProperties::image_rendering_changed));
+
/* Check boxes */
contents->pack_start (HBoxCheck, FALSE, FALSE, 0);
CheckTable->set_border_width(4);
@@ -376,6 +412,24 @@ void ObjectProperties::widget_setup(void)
}
EntryTitle.set_sensitive(TRUE);
+ /* Image Rendering */
+ if( SP_IS_IMAGE( item ) ) {
+ ComboBoxTextImageRendering.show();
+ LabelImageRendering.show();
+ char const *str = obj->getStyleProperty( "image-rendering", "auto" );
+ if( strcmp( str, "auto" ) == 0 ) {
+ ComboBoxTextImageRendering.set_active(0);
+ } else if( strcmp( str, "optimizeQuality" ) == 0 ) {
+ ComboBoxTextImageRendering.set_active(1);
+ } else {
+ ComboBoxTextImageRendering.set_active(2);
+ }
+ } else {
+ ComboBoxTextImageRendering.hide();
+ ComboBoxTextImageRendering.unset_active();
+ LabelImageRendering.hide();
+ }
+
/* Description */
gchar *desc = obj->desc();
if (desc) {
@@ -459,6 +513,32 @@ void ObjectProperties::label_changed(void)
blocked = false;
}
+void ObjectProperties::image_rendering_changed(void)
+{
+ if (blocked)
+ {
+ return;
+ }
+
+ SPItem *item = sp_desktop_selection(SP_ACTIVE_DESKTOP)->singleItem();
+ g_return_if_fail (item != NULL);
+
+ blocked = true;
+
+ Glib::ustring scale = ComboBoxTextImageRendering.get_active_text();
+
+ // We should unset if the parent computed value is auto and the desired value is auto.
+ SPCSSAttr *css = sp_repr_css_attr_new();
+ sp_repr_css_set_property(css, "image-rendering", scale.c_str());
+ Inkscape::XML::Node *image_node = item->getRepr();
+ if( image_node ) {
+ sp_repr_css_change(image_node, css, "style");
+ }
+ sp_repr_css_attr_unref( css );
+
+ blocked = false;
+}
+
void ObjectProperties::sensitivity_toggled (void)
{
if (blocked)
diff --git a/src/ui/dialog/object-properties.h b/src/ui/dialog/object-properties.h
index 624a18246..721c12c56 100644
--- a/src/ui/dialog/object-properties.h
+++ b/src/ui/dialog/object-properties.h
@@ -41,6 +41,7 @@
#include <gtkmm/expander.h>
#include <gtkmm/frame.h>
#include <gtkmm/textview.h>
+#include <gtkmm/comboboxtext.h>
#include "ui/dialog/desktop-tracker.h"
@@ -96,6 +97,8 @@ private:
Gtk::Entry EntryLabel; //the entry for the object label
Gtk::Label LabelTitle; //the label for the object title
Gtk::Entry EntryTitle; //the entry for the object title
+ Gtk::Label LabelImageRendering; // the label for 'image-rendering'
+ Gtk::ComboBoxText ComboBoxTextImageRendering; // the combo box text for 'image-rendering'
Gtk::Label LabelDescription; //the label for the object description
UI::Widget::Frame FrameDescription; //the frame for the object description
@@ -134,6 +137,11 @@ private:
*/
void label_changed(void);
+ /**
+ * Callback for 'image-rendering'.
+ */
+ void image_rendering_changed(void);
+
/**
* Callback for checkbox Lock.
*/