diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2013-11-20 00:14:57 +0000 |
|---|---|---|
| committer | Jabiertxof <jtx@jtx.marker.es> | 2013-11-20 00:14:57 +0000 |
| commit | 98fc7e79f2ddbbcb2f8d1766eedb5e80d08c6300 (patch) | |
| tree | 0dd822e6b40f98ac867aff3773483a3e59917fe4 | |
| parent | Fix repointed by su_v (diff) | |
| parent | BalloonSymbols.svg rewritten. Balloon symbols should render properly in all b... (diff) | |
| download | inkscape-98fc7e79f2ddbbcb2f8d1766eedb5e80d08c6300.tar.gz inkscape-98fc7e79f2ddbbcb2f8d1766eedb5e80d08c6300.zip | |
Update to trunk
(bzr r12588.1.30)
| -rw-r--r-- | share/extensions/hpgl_decoder.py | 2 | ||||
| -rw-r--r-- | share/extensions/hpgl_encoder.py | 19 | ||||
| -rwxr-xr-x | share/extensions/inkex.py | 10 | ||||
| -rw-r--r-- | share/extensions/plotter.py | 1 | ||||
| -rw-r--r-- | share/symbols/BalloonSymbols.svg | 261 | ||||
| -rw-r--r-- | src/extension/effect.cpp | 2 | ||||
| -rw-r--r-- | src/extension/internal/gdkpixbuf-input.cpp | 56 | ||||
| -rw-r--r-- | src/extension/system.cpp | 4 | ||||
| -rw-r--r-- | src/preferences-skeleton.h | 3 | ||||
| -rw-r--r-- | src/sp-ellipse.cpp | 2 | ||||
| -rw-r--r-- | src/sp-pattern.cpp | 3 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.cpp | 37 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.h | 6 | ||||
| -rw-r--r-- | src/ui/dialog/object-attributes.cpp | 1 | ||||
| -rw-r--r-- | src/ui/dialog/object-properties.cpp | 82 | ||||
| -rw-r--r-- | src/ui/dialog/object-properties.h | 8 |
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. */ |
