diff options
| author | Lex Neva <github.com@lexneva.name> | 2018-07-25 21:39:39 -0400 |
|---|---|---|
| committer | Lex Neva <github.com@lexneva.name> | 2018-07-25 21:39:39 -0400 |
| commit | 6c5e256d73500be4674e8778d80b12c5b6228335 (patch) | |
| tree | 979795c683ae5dbf683cfe53c9eece4939955246 | |
| parent | 5b5188ef9918d196173a4a543532c497140e639c (diff) | |
| parent | d14880db5820ce2175bda7bbe761c21fd6c454d0 (diff) | |
Merge remote-tracking branch 'origin/master' into lexelby-mac-build-mk2
214 files changed, 10707 insertions, 5199 deletions
@@ -7,7 +7,3 @@ dist/ build/ locales/ - -# For development, I symlink into my clone, so I have to have a copy of libembroidery. -libembroidery.py -_libembroidery.so diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 228fc91e..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "embroidermodder"] - path = embroidermodder - url = https://github.com/Embroidermodder/Embroidermodder diff --git a/.travis.yml b/.travis.yml index 8ae903c0..b74f220d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,9 +37,9 @@ install: set -e if [ -n "$BUILD" ]; then # Need this for inkex.py and friends - wget -q https://inkscape.org/en/gallery/item/11254/inkscape-0.92.2.tar.bz2 - tar jxf inkscape-0.92.2.tar.bz2 - rm inkscape-0.92.2.tar.bz2 + wget -q https://inkscape.org/en/gallery/item/12187/inkscape-0.92.3.tar.bz2 + tar jxf inkscape-0.92.3.tar.bz2 + rm inkscape-0.92.3.tar.bz2 fi if [ "$BUILD" = "linux" ]; then # For some bizarre reason, this build has been failing due to the @@ -53,23 +53,20 @@ install: # for wxPython sudo apt-get install glib-networking - # for embroidermodder/libembroidery - sudo apt-get install swig python-dev - # This is the same as the pypi module PyGObject. We can't just do # "pip install PyGObject" because it depends on a version of # libgirepository1.0-dev that doesn't exist in Trusty. sudo apt-get install python-gi python-gi-cairo libgirepository1.0-dev - + # wxPython doen't publish linux wheels in pypi - wget -q https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-14.04/wxPython-4.0.0b2-cp27-cp27mu-linux_x86_64.whl - pip install wxPython-4.0.0b2-cp27-cp27mu-linux_x86_64.whl - + wget -q https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-14.04/wxPython-4.0.3-cp27-cp27mu-linux_x86_64.whl + pip install wxPython-4.0.3-cp27-cp27mu-linux_x86_64.whl + # We can't use the shapely wheel because it includes the geos # library but with a weird file name. Details: # https://github.com/pyinstaller/pyinstaller/blob/61b1c75c2b0469b32d114298a63bf60b8d597e37/PyInstaller/hooks/hook-shapely.py#L34 pip install --no-binary shapely -r requirements.txt - + pip install pyinstaller elif [ "$BUILD" = "windows" ]; then set -x @@ -83,10 +80,6 @@ install: export WINEDEBUG=-all - wget -q https://github.com/lexelby/inkstitch-build-objects/releases/download/v1.1.0/windows-libembroidery.tar.gz - tar zxf windows-libembroidery.tar.gz - rm windows-libembroidery.tar.gz - wget -q http://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140/vcredist_x86.exe wine vcredist_x86.exe /q @@ -161,21 +154,6 @@ script: flake8 . --count --exit-zero --select=E901,E999,F821,F822,F823 --show-source --statistics --exclude=embroidermodder flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --exclude=embroidermodder elif [ "$BUILD" = "linux" -o "$BUILD" = "osx" ]; then - # something in travis's machinery breaks on OSX - [ "$BUILD" = "osx" ] && set +e - - pushd embroidermodder/experimental - - qmake swigpython.pro - make - - if [ "$BUILD" = "osx" ]; then - ln -s _libembroidery.dylib python/binding/_libembroidery.so - install_name_tool -change /System/Library/Frameworks/Python.framework/Versions/2.7/Python /usr/local/Cellar/python@2/2.7.15/Frameworks/Python.framework/Versions/2.7/Python python/binding/_libembroidery.dylib - fi - - popd - make dist elif [ "$BUILD" = "windows" ]; then # work around some bug... pyinstaller? shapely? not sure. @@ -10,6 +10,7 @@ dist: distclean locales cp inx/*.inx dist cp -a images/examples dist/inkstitch cp -a palettes dist/inkstitch + cp -a symbols dist/inkstitch mkdir -p dist/inkstitch/bin/locales cp -a locales/* dist/inkstitch/bin/locales cp -a print dist/inkstitch/bin/ @@ -24,7 +25,7 @@ distclean: messages.po: rm -f messages.po - pybabel extract -o messages.po -F babel.conf --no-location --add-comments l10n --add-comments L10n --add-comments L10N -s . + pybabel extract -o messages.po -F babel.conf --add-location=full --add-comments=l10n,L10n,L10N --sort-by-file --strip-comments . .PHONY: messages.po .PHONY: locales @@ -1,301 +1,27 @@ -# ink/stitch: An Inkscape extension for designing machine embroidery patterns +<a href="https://user-images.githubusercontent.com/11083514/41197881-e862e07a-6c62-11e8-89d6-32915e52bece.png"><img align=right src="images/examples/inkstitch_logo_screenshot.png"></a> -* February 22, 2018: **Windows support added!** -* February 5, 2018: Portuguese (pt_PT) translation added! [Want to help translate?](LOCALIZATION.md) -* January 5, 2018: Default DPI changed to 96, to match Inkscape. -* January 3, 2018: Project renamed from `inkscape-embroidery` to **ink/stitch** -* January 1, 2018: [video demo of the new live stitch preview feature](https://youtu.be/QY9NcLN3oJM) -* December 6, 2017: [video demo of how to use the extension](https://www.youtube.com/watch?v=qXntE1X1RIw) +# Ink/Stitch: An open source machine embroidery design platform based on Inkscape -## Introduction -**Want to design embroidery pattern files (PES, DST, etc) using free, open source software? Hate all the other options? Try this one.** +Want to design embroidery pattern files (PES, DST, and many more) using **free, open source software?** -I received a really wonderful christmas gift for a geeky programmer hacker: an [embroidery machine](http://www.brother-usa.com/homesewing/ModelDetail.aspx?ProductID=SE400). It's pretty much a CNC thread-bot... I just had to figure out how to design programs for it. The problem is, **all free embroidery design software seemed to be terrible**, especially when you add in the requirement of being able to run in Linux, my OS of choice. - -So I wrote one. - -Okay, not really. I'm pretty terrible at GUIs, but I found this nifty inkscape extension that was created and hacked on by a couple of other folks. It was pretty rudimentary, but it got the job done, and more importantly, it was super hackable. I hacked the hell out of it, and at this point **ink/stitch is a viable entry-level machine embroidery design tool**. - -## Quick Setup On Ubuntu and Windows - -First, download the right release archive for your platform from the [latest release](https://github.com/lexelby/inkstitch/releases/latest). - -* **Linux**: `inkstitch-[VERSION]-Linux-x86_64.tar.gz` - * Currently supports most 64-bit Linux systems from the last couple of years. - * 32-bit support coming soon. -* **Windows**: `inkstitch-[VERSION]-win32.zip` - * Supports 32-bit and 64-bit Windows - -In Inkscape, go to Preferences and look under System. Next to "User Extensions" is a folder. Decompress the archive you downloaded directly into this folder. - -For example, on Linux: - -``` -$ cd ~/.config/inkscape/extensions -$ tar zxf ~/Downloads/inkstitch-v1.0.0-Linux-x86_64.tar.gz -``` - -That's it! All python libraries and external dependencies are bundled (using the excellent [pyinstaller](http://www.pyinstaller.org)), so you shouldn't need to set anything else up. Just restart Inkscape and the extension should be ready to go. - -Continue reading in the "Usage" section. - -## Manual Setup - -### Inkscape -First, install Inkscape if you don't have it. I highly recommend version 0.92 or greater, which has a really key feature: the Objects panel. This gives you a heirarchical list of objects in your SVG file, listed in their stacking order. This is really important because the stacking order dictates the order that the shapes will be sewn in. - -Versions 0.92.2 and higher let you bind a key to new commands, "stack up" and "stack down", which I assign to pageup and pagedown. These let you arbitrarily reorder objects in the SVG file, which lets you directly manipulate which order they stitch in. It works way better than the default "raise" and "lower" commands. - -### Python Dependencies -A few python modules are needed. In some cases this extension uses features that aren't available in the versions of the modules pre-packaged in distributions, so I recommend installing them directly with pip: - -``` -pip install -r requirements.txt -``` - -### Extension installation -1. Clone the extension source: `git clone https://github.com/lexelby/inkstitch` -2. Install it as directed [here](https://inkscape.org/en/gallery/%3Dextension/) - -I prefer to symbolically link into my git clone, which allows me to hack on the code. Changes to the Python code take effect the next time the extension is run. Changes to the extension description files (`*.inx`) take effect the next time Inkscape is restarted - -## Usage -### Basic Usage -First things first: I'm going to assume you know a few embroidery terms like "fill stitch" and "satin". Look those up if you're mentally 404ing, then come back here. I'm *not* going to assume you know some of the more advanced terms, because I had to learn all that when I started this project, so I might as well teach you too. - -1. Open up Inkscape and create a rectangle. -2. Make sure it has both a stroke and a fill. -3. Convert it to a path using **Path -> Object to Path** (because ink/stitch doesn't understand rectangles, circles, and the like, and ignores them). -4. Run **Extensions -> Embroidery -> Embroider**. Use the default settings. - -The rectangle you made will disappear and be replaced with some stripes and zig-zags. ink/stitch has hidden all of your layers and created a new one called Embroidery, in which it has palced a visual representation of the stitch plan it created. It has interpreted your shape as two instructions: Fill and Stroke. Fill is implemented using fill stitching, and Stroke is implemented by running satin stitching along the outline. - -Select the horizontal lines using the "Edit Paths by Nodes" tool. Zoom in a bit and you'll see that the lines are actually made up of lots of points. Each point represents one stitch -- one needle penetration and interlocking of the top thread with the bobbin thread. Notice how the points all line up nicely in diagonals. This will give the fill stitching a nice, orderly visual appearance. - -Now look at the zig-zags. These are the satin stitches. Note that the corners look pretty ugly. This is because satin stitches generated from a shape's stroke are pretty rudimentary and aren't implemented intelligently. You can exert much greater control over satin stitching using a Satin Column, described later. - -The stitching preview you're looking at just now isn't intended to be permanent. I usually immediately undo it (ctrl-Z) after I've looked at the stitches. The actual work that ink/stitch does is to output a design file. - -### Stitching Out the Design -Where'd the design file go? One of the parameters you were able to specify in the filter settings dialog was the output directory. By default, the directory used is the place where you installed the extension's Python files. I output mine to `~/Documents/embroidery/output`. - -ink/stitch will create a file named `something.___`, where `something` is the name of your svg file (e.g. `something.svg`) and `___` is the proper extension for the output format you select. If `something.___` already exists, it will be renamed to `something.___.1`, and `something.___.1` will be renamed to `something.___.2`, etc, up to 5 backup copies. When you've got the design the way you like it, save off a copy of `something.___`. - -### Ordering - -Copy your rectangle and paste it elsewhere on your canvas. Deselect any shapes (**Edit -> Deselect**), re-run the extension, and look at the output. You'll see that both regions have been stitched, and there will be a line connecting them. That's a jump-stitch, where the machine will move a long distance between stitching the sections. - -If you're like me, your machine can't automatically cut the thread between stitching sections, so you'll need to minimize jump stitches as much as possible through careful planning of your stitch path. If your machine *can* do thread cuts, congratulations, since [pull #29](https://github.com/lexelby/inkstitch/pull/29#) it is possible to add TRIM and STOP for each object on the params menu! - -However, note that ink/stitch pays attention to the colors you use for objects. If you change colors from one object to the next, ink/stitch will include a color-change instruction using the color you've set for the object. My machine cuts the thread and waits for me to switch to the new thread color. - -#### Reordering - -Use the Objects panel to view the stacking order of the objects in your SVG file. ink/stitch will stitch them in their stacking order, from lowest to highest. You can reorder them in the normal way in inkscape to affect the stitching order. - -You can also use the Reorder extension. Hold shift and select the objects you'd like to reorder, one at a time, in the order you'd like them to end up in (lowest to highest). Run **Embroidery -> Reorder**. This extension will pull all of the selected objects out of wherever they were in the stacking order and insert them in order at the same place as the *first* object you selected. This can save you a ton of time. NOTE: this stopped working in more recent versions of inkscape, which no longer tell the extension what order you selected objects in. - -### Seeing the stitch plan for selected objects - -If you have one or more objects selected when you run the **Embroider** extension, only those objects will be embroidered. This can be useful to help you fine-tune just one small section of your design. - -### Embroidery Parameters -When you run **Embroider**, you'll have the option to specify a few parameters like stitch length, fill stitch row spacing, etc. These are used as defaults for all objects in your design. You can override these parameters and set many more using the **Embroidery -> Params** extension. - -This extension gives you an interface to control many aspects of the stitching of each object individually. To use it, first select one or more objects. Parameters will be applied to them all as a group. If the selected objects already have parameters set, these settings will be pre-loaded into the interface. - -Parameters are stored in your SVG file as additional attributes on the XML objects. You can view these attributes using Inkscape's built-in XML editor panel, but you shouldn't actually need to do this during normal usage. Inkscape ignores attributes that it doesn't know, so these attributes will be saved right along with your SVG file. Note that other SVG programs may *not* retain these attributes, so be careful! - -I recommend avoiding dependence on the default settings specified in the **Embroider** extension's settings window. In fact, I bypass it entirely by binding a keystroke (ctrl+e) to "Embroider (no preferences)" in Inkscape's settings. This way, I can quickly see the stitch plan just by pressing the keystroke. I also bind a keystroke to **Params** so that I can quickly view and change settings for each object. - -### Sidenote on extensions -**Params** is a bit weird, in that the dialog is produced by an entirely separate program (the extension) rather than Inkscape itself. This is due to the way Inkscape structures extensions. I wish ink/stitch could have deeper integration into Inkscape's user interface, but it's currently not possible. This is the price we pay for not having to write an entire vector graphics editor program :) - -Another issue is that Inkscape has a memory leak related to extensions. The more times you run an extension, the more memory Inkscape uses and the slower it gets. I periodically save my SVG file, close Inkscape, and restart it to work around this issue. See above re: putting up with this kind of hassle so as not to have a to implement an entire vector graphics editor. Hopefully they'll fix this bug soon. - -### AutoFill - -AutoFill is the default method for generating fill stitching. To use it, create a closed path in Inskcape and add a fill color. This algorithm works for complex shapes with or without holes. - -ink/stitch will break the shape up into sections that it can embroider at once using back-and-forth rows of stitches. It then adds straight-stitching between sections until it's filled in the entire design. The staggered pattern of stitches is continued seamlessly between sections, so the end result doesn't appear to have any breaks. When moving from one section to the next, it generates running stitching along the border of the shape. - - -#### AutoFill parameters - -Using the **Params** extension, you can set these parameters: - -* **angle**: The angle of the rows of stitches, in degrees. 0 is horizontal, and the angle increases in a counter-clockwise direction. Negative angles are allowed. -* **row spacing**: distance between rows of stitches -* **maximum stitch length**: the length of each stitch in a row. "Max" is because a shorter stitch may be used at the start or end of a row. -* **running stitch length**: length of stitches around the outline of the fill region used when moving from section to section -* **staggers**: stitches are staggered so that neighboring rows of stitches don't all fall in the same column (which would create a distracting valley effect). Setting this dictates how many rows apart the stitches will be before they fall in the same column position. - -#### AutoFill Underlay - -By default, AutoFill will cover the shape with one layer of stitches. In almost all cases, this won't look any good. The individual stitches will sink into the fabric (even if it's thin) and the fill will appear sparse. The fabric may even stick up between rows. - -To solve this, you need underlay: an initial layer of stitches that hold up the final stitches. Underlay for fill stitch it's usually comprised of fill stitching 90 degrees offset from the final fill (called "top stitching"). The row spacing should be much wider than in the top stitching. The goal is to flatten out the fabric and give the top stitches "rails" to sit on. - -In **Params**, you'll see an underlay tab next to the AutoFill tab. Enable it by checking the box. The default settings should be good enough for most cases: 90 degrees offset and row spacing 3x the spacing of the top stitching. - -### Manual Fill - -Manual Fill is the old mode from before I figured out how to implement automatic fill routing. In some cases, AutoFill may not be an option, such as when the running stitches between sections are not acceptable for your design. Usually, fill region edges are covered over by satin, but not always. - -In manual fill, the extension will still break up the shape into sections, each of which can be embroidered in one go. Then these sections will be fill-stitched one at a time, jumping directly between sections. You'll almost certainly want to break your shape up into smaller shapes and connect then using running stitches (described below). It's a painstaking process, made moreso because you'll need to do it twice: once for the underlay and again for the top stitching. - -The **flip** option can help you with routing your stitch path. When you enable **flip**, stitching goes from right-to-left instead of left-to-right. Using **flip** and rotating 180 additional degrees (by adding or subtracting 180 from **angle**), you can cause fill stitching for a given shape to start from any of the four possible corners. - - -### Running Stitch - -Running stitch can be created by setting a dashed stroke on a path. Any kind of dashes will do the job, and the stroke width is irrelevant. ink/stitch will create stitches along the path using the stroke width you specify. - -In order to avoid rounding corners, ash extra stitch will be added at the point of any sharp corners. - -The **repeats** parameter says how many times time run down and back song the path. An odd number of repeats means that the stitches will end at the end of the path, while an even number means that stitching will return to the start of the path. The default is one repeat; that is, just traveling once from the start to the end of the path. - -If an object consists of multiple paths, they will be stitched in order with a jump between each. - -### Simple Satin +Ink/Stitch aims to be a full-fledged embroidery digitizing platform based entirely on free, open source software. Our goal is to be approachable for hobbyists while also providing the power needed by professional digitizers. -A line without dashes will result in satin stitching. The width of the satin will be dictated by the stroke width. (For historical reasons, a stroke width less than 0.5 pixels will result in running stitch instead). +Want to learn more? -This is "simple satin": **Embroider** will plot zig-zags to the left and right of the line from start to end, but it won't do anything special around curves and corners. Sharper curves and corners will result in sparse stitching around the outside of the curve and dense stitching around the i. T +* Check out our list of [features](https://inkstitch.org/features/) +* [Quick Install](https://inkstitch.org/docs/install/) on Linux and Windows (Mac support in the works!) +* See some [photos](https://inkstitch.org/tutorials/inspiration/lexelby/) showing what Ink/Stitch can do +* Watch some [videos](https://inkstitch.org/tutorials/video/) of Ink/Stitch in action +* ...and lots more on our [website](https://inkstitch.org) -This won't look good and may even poke holes in the insides of corners. I avoid using plain satin entirely; it's just kept in for backward compatibility. It'll probably work fine for straight lines. +# Background and Philosophy -### Satin Column +_by @lexelby, an Ink/Stitch programmer_ -Satin Column mode gives you much greater control over how the satin is generated. You define a satin column using a shape made of two mostly-parallel lines. **Embroider** will draw zig-zags back and forth between the two lines. You can vary the thickness of the column as you like. - -The two paths must have the same number of points. This means that each path will be made up of an equal number of Bezier curves. Each pair of points acts as a "checkpoint": **Embroider** will ensure that a "zag" ends up going from one point to the other. - -**Embroider** considers each pair of Bezier curves, one at a time. It picks the longest if the two and determines how many zig-zags will be necessary to satisfy the **zig-zag spacing** setting. This makes it so that the outside of a curve will never have sparse stitching like with simple satin. - -However, this does mean that the inside of a curve will have a higher stitch density than you specified. Be careful how you design sharp curves, because **stitching at too high a density may poke a hole in the fabric**! - -To avoid this issue, transition your stitching to go around the corner at an angle, like this: - -Some embroidery design programs solve this problem differently. They modify the satin such that some stitches on the inside corner don't go all the way to the edge, to avoid having the make penetrate the fabric too many times in the same spot. I haven't gotten around to implementing that yet. Pull requests welcome! - -Satin Column supports these settings: - -* **zig-zag spacing**: the peak-to-peak distance between zig-zags. -* **pull compensation**: Satin stitches pull the fabric together, resulting in a column narrower than you draw in Inkscape. This setting expands each pair of needle penetrations outward from the center of the satin column. You'll have to determine experimentally how much compensation you need for your combination of fabric, thread, and stabilizer. - -Satin Column also supports three kinds of underlay, of which you can use any or all simultaneously. I use the terms defined in [this excellent article](http://www.mrxstitch.com/underlay-what-lies-beneath-machine-embroidery/) on satin column design. - -#### Center Walk Underlay - -This is a row of running stitch down the center of the column and back. This may be all you need for thin satin columns. You can also use it as a base for more elaborate underlay. - -#### Contour Underlay - -This is a row of running stitch up one side of the column and back down the other. The rows are set in from the edge of the column by an amount you specify. For small or medium width satin, this may serve well enough by itself. - -#### Zig-Zag Underlay - -This is essentially a lower-density satin stitch sewn to the end of the column and back to the start. Added with contour underlay, you get the "German Underlay" mentioned in the article linked above. For wide columns or challenging fabrics, you can use all three underlay types together. - - -## Workflow - -Here's how I use ink/stitch to design embroidery patterns. - -### Pixels Per Millimeter - -My embroidery machine (a Brother SE400) can handle patterns up to 10cm x 10cm (about 4in x 4in). Most machine embroidery design advice articles I've read talk in terms of millimeters, so that's what I work in. - -My machine can (theoretically) position the needle with an accuracy of a tenth of a millimeter. The Brother PES format cannot encode a position any more precisely than this. In practice, even if a machine had finer accuracy than this, the realities of sewing on real fabric, even with the best stabilizer, mean that you can't get any more accurate than this (and you shouldn't bother trying). - -Previously, I used a nonstandard resolution of 10 pixels per millimeter, and this was hardcoded into ink/stitch. Now, **ink/stitch respects Inkscape's default of 96dpi**. - -### Step 1: Sketch design or use an image - -First, I get an idea for what I want my finished product to look like. If I'm basing my design off an existing picture or graphic, I load it into Inkscape in its own layer. Some graphics are amenable to Inkscape's auto-tracing feature, especially if I simplify the image in GIMP first. - -After auto-tracing, I clean up the vector shapes, using "Simplify" and deleting nodes by hand when possible. My goal is to use as few Bezier curves as reasonably possible to represent the image. - -If I need to trace an image by hand, I usually use the freehand drawing tool. This tool creates paths with a lot of Bezier nodes, so again, I'll simplify the curves as much as possible. - -Working with an existing SVG image can save a ton of time, so consider using Google image search with the filter set to SVG. - -For text, choose a font carefully. It's quite hard to make satin look good when it's 1mm wide or narrower. Sans-serif fonts tend to be the easiest. For text smaller than 4mm tall, you'll have a very difficult time making lowercase letters look good, so consider block-caps. Cursive/script fonts can work well, but it's not going to be as easy as you think. I find that I spend the most time on text by far. - - -### Step 2: Plan stitch path and color changes - -At this point, you'll have a vector graphic representation of your image. The next thing to do is to convert your vectors into the kind that **Embroider** understands and put them in the right order. - -When you're designing for embroidery machines that can't cut the thread mid-sew or switch colors automatically, you're going to want to optimize your stitch path to reduce or hide jump stitches and make minimal color changes. I also try to avoid stitching over jump stitches when possible, because it's a total pain to trim them by hand when you do. - -The order of stitching also affects how the fabric pulls and pushes. Each stitch will distort the fabric, and you'll need to take this into account and compensate accordingly. Look for articles on machine embroidery distortion for more info on this. - -### Step 3: create the embroidery vectors - -I make heavy use of layers and groups at this point. If I've traced an image, I'll leave it as the lowest layer and set it invisible in the Layers or Objects palette. Any layer, group, or vector shape that is set invisible will be ignored by **Embroider**. - -I keep my initial traced vectors in their own layer and use them as a reference when designing embroidery vectors. I copy and paste then as necessary into a higher layer and work with the copies. - -I use only AutoFill and Satin Columns in my designs. I begin converting filled areas to AutoFill regions. Each time I create an AutoFill shape, I set its parameters using **Params**. Then I select it and run **Embroider**, which will cause it to show a stitch plan for just the selected object(s). - -I examine the resulting stitch plan using the node editor tool. Each vertex is a single stitch; the needle will penetrate the fabric and interlock with the bobbin thread at this point. Once I'm done examining the stitch plan, I Undo the **Embroider** operation to remove the stitch plan and make my vectors visible again. Then I make any changes necessary, re-run **Embroider**, and repeat until it looks right. - -At this point, I save my SVG file. If Inkscape is starting to become sluggish (due to the memory leak described above), I'll restart it before continuing. - -Next, I work on Satins. Remember that a Satin Column is defined by two lines that run along the edges of the column. It's usually a good idea to run satin along the outside border of a fill region. Inkscape makes this easy. I copy and paste the shape from the traced vectors, then disable Fill and enable Stroke. I set the stroke width to my desired satin width. Finally, I use the "Stroke to Path" option to convert just the stroke into its own path. - -At this point, it's necessary to cut the paths so that they aren't a continuous loop. The cut will also tell **Embroider** where to start stitching from. Add a point at the desired cut location by double-clicking on the path with the Node Editor tool active. Cut at this point by selecting at and pressing shift+b. Repeat for the second path. - -Now you've got an object made of two paths. They need to be going on the same direction for Satin Column to work. You can tell what direction the path goes in by enabling direction indicators in Inkscape's preferences. To reverse one of the paths, select one of its points and choose "Reverse Path". I bind this to ctrl+r in Inkscape's preferences. - -By now, it's likely that the two paths in the object have an unequal number of nodes. As described above, a Satin Column is made of consecutive pairs of points on the two paths. You have a couple of techniques available to make your nodes line up in pairs: - -* simplify the shape (control+L) -* delete extra nodes -* add more nodes -* joining nodes - -I usually Simplify first if necessary to reduce the path to a manageable number of nodes. Remember that machine embroidery is fairly imprecise and your final product will not have the incredibly fine details that you see on your screen, so simplifying can often be acceptable even if it changes the path. - -Next, I _try_ to delete nodes or join. Inkscape will attempt to manipulate the neighboring nodes as necessary to keep the path the same, but I find that it's not particularly good at this. Instead of deleting a troublesome point, it can often work better to simply add a matching point on the other path. - -Finally, I run *Embroider* with the path selected and examine the output. I add, remove, and adjust points as necessary to make my satin look nice. - -You may find that you get the dreaded error, "object <name> has two paths with an unequal number of points". This can be confusing because it may _look_ like your paths have the same number of points. Usually this is because of duplicate points: multiple points with the exact same coordinates or very similar coordinates. To find them, I drag-select each point in turn, examining the bottom status bar. It will tell me how many points I've selected. If it looks like I've selected just one but Inkscape says I've selected 3, then it's likely that I've found my culprit. - -Often just pressing shift+J (join nodes) will eliminate the extra points without modifying the shape. Sometimes it won't, and in cases like that, I've had luck with adding extra points on either side of the "cluster", then delete the "cluster". The extra points anchor the shape and disallow Inkscape from messing it up. Then it may be possible to delete the added points, or I just add points to the other path to match with them. - -### Step 4: Ordering - -Once I've created all of my vectors and test-embroidered them individually, it's time to put everything in the right order. This is where the Objects tool from the latest development version of Inkscape (described above) comes in useful. Because my embroidery machine can neither trim threads nor switch colors mid-sew, I optimize my order to minimize color changes and reduce or hide jump-stitches. - -*Embroider* will stitch objects in exactly the order they appear in your SVG document, from lowest to highest in stacking order. If the distance between two objects is long, *Embroider* will add a jump-stitch between them automatically. It uses the color of the object to determine thread color, so changes in color from one object to the next will result in a thread-change instruction being added to the embroidery output file. - -Inkscape gives you the ability to raise and lower objects in the stacking order using the PageUp and PageDown keys. However, it seems to be unwilling to give the user complete control over the stacking order. I think this has to do with whether objects overlap: if A and B don't overlap, Inkscape doesn't care how they're stacked in the SVG file and it sometimes won't let you reorder them. - -To solve this, I created the *Reorder* extension. To use it, hold down the shift key and select objects one at a time in the order you'd like them to appear in the SVG file and run *Reorder*. *Reorder* will remove the selected objects from the SVG XML tree and then re-add them at the location of the first-selected object, in the order you selected them. - -You can also manually manipulate the underlying SVG XML structure by using Inkscape's XML Editor pane. Its "Raise" and "Lower" buttons directly manipulate the order of XML tags in the SVG file and are not subject to the same limitations as PageUp and PageDown. Note that the ordering of XML tags in the XML Editor tool is the _reverse_ of the order of objects in the Objects tool. - -### Step 4: Render to a file format supported by your machine - -Once I've got everything in the right order, I deselect all objects and run *Embroider* again. This will embroider all visible objects in the document. In the extension settings, select a file format supported by your machine. Most machines can support DST, and some Brother machines prefer PES. - -*Embroider* will create a file in the specified output directory named after your SVG file, but with the extension changed to `.DST`, `.PES`, or whatever format you selected. It will back up any existing file there, storing up to 5 old copies of each file. - -### Step 5: Convert to PES and upload - -Transfer the design to your machine in whatever manner is appropriate. My machine exposes itself as a (tiny) USB thumb drive, so I can upload directly. - -### Step 6: Test-sew - -I've never gotten an embroidery file correct on the first try. There's always room for improvement! To test out my design, I prepare a test piece of fabric that matches my final fabric as closely as possible. I use the same stabilizer and the exact same fabric if possible. For t-shirts, I try to find a similar fabric (usually knit). Knits need a lot of stabilization. - -I sew out the design, watching the machine to make sure that there aren't any surprises. I'm watching for gaps that indicate that the fabric has been distorted. I'm also watching for areas where stitches are piling up too closely and the machine is having trouble sewing, which indicates that the stitch density is too high. Finally, of course, I'm watching in giddy anticipation to see my design for the first time! :) +I received a really wonderful christmas gift for a geeky programmer hacker: an [embroidery machine](http://www.brother-usa.com/homesewing/ModelDetail.aspx?ProductID=SE400). It's pretty much a CNC thread-bot... I just had to figure out how to design programs for it. The problem is, **all free embroidery design software seemed to be terrible**, especially when you add in the requirement of being able to run in Linux, my OS of choice. -### Step 7+: iterate +I started off hacking on [inkscape-embroidery](http://www.jonh.net/~jonh/inkscape-embroidery/). It had some of the basic capabilities I needed, and I saw a lot of potential. I love the idea of using an existing, ultra-powerful SVG editor as the basis for an embroidery design suite. -Then I go back and tweak my design. Hopefully it only takes a few tries to get it how I want it. Once I'm done, I copy the final embroidery file from my output directory, just to avoid accidentally overwriting it in the future. +Things took off from there. I continued adding features as I needed them, and by this point, very little if any of the original code remains. +The goal of Ink/Stitch is to provide a powerful embroidery digitizing platform for everyone **completely free**. I want to open up the field of embroidery design, making it approachable even for those who can't spend hundreds or thousands of dollars on software. And I want folks like me, who love to combine code with art, to have an open, extensible, and approachable platform to hack on. @@ -1,4 +1,3 @@ -[ignore: libembroidery.py] [ignore: embroidermodder/**] [python: **.py] diff --git a/bin/build-dist b/bin/build-dist index 4d73313a..79c89838 100755 --- a/bin/build-dist +++ b/bin/build-dist @@ -19,17 +19,11 @@ fi # above! pyinstaller_args+="--hidden-import gi.repository.Gtk " -# mac and windows build seem to miss wx and libembroidery import -pyinstaller_args+="--hidden-import wx --hidden-import libembroidery " - -if [ -d windows-libembroidery ]; then - pyinstaller_args+="-p windows-libembroidery " -else - pyinstaller_args+="-p embroidermodder/experimental/python/binding " -fi +# mac and windows build seem to miss wx import +pyinstaller_args+="--hidden-import wx " # This lets pyinstaller see inkex.py, etc. -pyinstaller_args+="-p inkscape-0.92.2/share/extensions " +pyinstaller_args+="-p inkscape-0.92.3/share/extensions " # output useful debugging info that helps us trace library dependency issues pyinstaller_args+="--log-level DEBUG " diff --git a/bin/gen-input-inx b/bin/gen-input-inx index 5f21ce84..ae32b43f 100755 --- a/bin/gen-input-inx +++ b/bin/gen-input-inx @@ -2,7 +2,7 @@ import sys, os from os.path import dirname -from libembroidery import * +import pyembroidery from jinja2 import Environment, FileSystemLoader, select_autoescape @@ -15,30 +15,21 @@ def build_environment(): ) -def libembroidery_input_formats(): - formatList = embFormatList_create() - curFormat = formatList - while(curFormat): - extension = embFormat_extension(curFormat) - description = embFormat_description(curFormat) - writerState = embFormat_readerState(curFormat) - - if writerState.strip() and embFormat_type(curFormat) != EMBFORMAT_OBJECTONLY: - # extension includes the dot, so we'll remove it - yield extension[1:], description - - curFormat = curFormat.next +def pyembroidery_input_formats(): + for format in pyembroidery.supported_formats(): + if 'reader' in format and format['category'] == 'embroidery': + yield format['extension'], format['description'] def main(): env = build_environment() template = env.get_template('embroider_input.inx') - for format, description in libembroidery_input_formats(): + for format, description in pyembroidery_input_formats(): inx = template.render(format=format, description=description) with open("inx/inkstitch_input_%s.inx" % format.upper(), 'w') as inx_file: - inx_file.write(inx) + print >> inx_file, inx if __name__ == "__main__": diff --git a/bin/gen-output-format-option-list b/bin/gen-output-format-option-list index 674813bb..28a83976 100755 --- a/bin/gen-output-format-option-list +++ b/bin/gen-output-format-option-list @@ -1,19 +1,14 @@ #!/usr/bin/env python import sys +import pyembroidery -sys.path.append('embroidermodder/experimental/python/binding') -from libembroidery import * +formats = [format for format in pyembroidery.supported_formats() if 'writer' in format] +formats.sort(key=lambda format: (format['category'] != 'embroidery', format['extension'])) -formatList = embFormatList_create() -curFormat = formatList -while(curFormat): - extension = embFormat_extension(curFormat) - description = embFormat_description(curFormat) - writerState = embFormat_writerState(curFormat) - - if writerState.strip() and embFormat_type(curFormat) != EMBFORMAT_OBJECTONLY: - print '<_option value="%s">%s(%s)</_option>' % (extension[1:], description, extension.upper()) - - curFormat = curFormat.next +for format in formats: + tag = "" + if format['category'] != 'embroidery': + tag = " [DEBUG]" + print '<_option value="%s">%s(%s)%s</_option>' % (format['extension'], format['description'], format['extension'].upper(), tag) diff --git a/bin/gen-output-inx b/bin/gen-output-inx new file mode 100755 index 00000000..fbe2ad55 --- /dev/null +++ b/bin/gen-output-inx @@ -0,0 +1,36 @@ +#!/usr/bin/env python + +import sys, os +from os.path import dirname +import pyembroidery +from jinja2 import Environment, FileSystemLoader, select_autoescape + + +def build_environment(): + template_dir = os.path.join(dirname(dirname(os.path.realpath(__file__))), "templates") + + return Environment( + loader = FileSystemLoader(template_dir), + autoescape = True + ) + + +def pyembroidery_output_formats(): + for format in pyembroidery.supported_formats(): + if 'writer' in format and format['category'] == 'embroidery': + yield format['extension'], format['description'] + + +def main(): + env = build_environment() + template = env.get_template('embroider_output.inx') + + for format, description in pyembroidery_output_formats(): + inx = template.render(format=format, description=description) + + with open("inx/inkstitch_output_%s.inx" % format.upper(), 'w') as inx_file: + print >> inx_file, inx + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/bin/gen-zip-inx b/bin/gen-zip-inx new file mode 100755 index 00000000..40948786 --- /dev/null +++ b/bin/gen-zip-inx @@ -0,0 +1,35 @@ +#!/usr/bin/env python + +import sys, os +from os.path import dirname +import pyembroidery +from jinja2 import Environment, FileSystemLoader, select_autoescape + + +def build_environment(): + template_dir = os.path.join(dirname(dirname(os.path.realpath(__file__))), "templates") + + return Environment( + loader = FileSystemLoader(template_dir), + autoescape = True + ) + + +def pyembroidery_output_formats(): + for format in pyembroidery.supported_formats(): + if 'writer' in format and format['category'] == 'embroidery': + yield format['extension'], format['description'] + + +def main(): + env = build_environment() + template = env.get_template('embroider_zip_output.inx') + + inx = template.render(formats=pyembroidery_output_formats()) + + with open("inx/inkstitch_output_ZIP.inx", 'w') as inx_file: + inx_file.write(inx) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/bin/install_libembroidery-convert_Ubuntu.sh b/bin/install_libembroidery-convert_Ubuntu.sh deleted file mode 100644 index ef2626bd..00000000 --- a/bin/install_libembroidery-convert_Ubuntu.sh +++ /dev/null @@ -1,58 +0,0 @@ -# This file is part of the Inkscape extension 'ink/stitch', -# an extension for machine embroidery design using Inkscape. - -# Copyright (C) 2017 Maren Hachmann - -# ink/stitch is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# ink/stitch is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with ink/stitch. If not, see <http://www.gnu.org/licenses/>. - -#!/bin/bash - -# make sure we're in tmp directory -cd /tmp - -# install qmake (which is needed to configure libembroidery) -sudo apt-get install qt4-qmake - -# get the source for embroidermodder -wget https://github.com/Embroidermodder/Embroidermodder/archive/master.zip -O /tmp/embroidermodder-master.zip - -# unzip files -unzip embroidermodder-master.zip -d /tmp - -# switch into directory of the library we're interested in -cd Embroidermodder-master/libembroidery-convert/ - -# prepare build -qmake - -# build -make - -# create destination folder (which will automatically be in the PATH environment variable) -mkdir -p $HOME/bin/ - -# copy created library there -cp ./libembroidery-convert $HOME/bin/ - -echo "========================== - -Use the embroidery file format conversion tool like this: - -libembroidery-convert file_to_read file_to_write - -To get a list of supported embroidery formats, enter: - -libembroidery-convert --help - -Run this script again to update your libembroidery-convert version." diff --git a/bin/pyembroidery-convert b/bin/pyembroidery-convert new file mode 100755 index 00000000..ac58e3e5 --- /dev/null +++ b/bin/pyembroidery-convert @@ -0,0 +1,6 @@ +#!/usr/bin/env python + +import sys +import pyembroidery + +pyembroidery.convert(sys.argv[1], sys.argv[2]) diff --git a/embroidermodder b/embroidermodder deleted file mode 160000 -Subproject 1a3faa9747fcff1cce07c4c58b54b1e780017f5 diff --git a/images/examples/Bfly FSL.svg b/images/examples/Bfly FSL.svg new file mode 100644 index 00000000..9e528f1e --- /dev/null +++ b/images/examples/Bfly FSL.svg @@ -0,0 +1,837 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:inkstitch="http://inkstitch.org/namespace" + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="100mm" + height="100mm" + viewBox="0 0 100 100" + version="1.1" + id="svg11604" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="Bfly FSL.svg"> + <sodipodi:namedview + id="base" + pagecolor="#848484" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="1.4142136" + inkscape:cx="280.92306" + inkscape:cy="155.27797" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1920" + inkscape:window-height="1055" + inkscape:window-x="0" + inkscape:window-y="8" + inkscape:window-maximized="1" + showguides="true" + inkscape:guide-bbox="true" /> + <defs + id="defs11598" /> + <metadata + id="metadata11601"> + <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></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evan West at Wild West Designs</dc:title> + </cc:Agent> + </dc:creator> + <dc:rights> + <cc:Agent> + <dc:title>License to Use</dc:title> + </cc:Agent> + </dc:rights> + <dc:publisher> + <cc:Agent> + <dc:title>Wild West Designs</dc:title> + </cc:Agent> + </dc:publisher> + <dc:source>www.wildwestdesigns.biz</dc:source> + </cc:Work> + </rdf:RDF> + <inkstitch:client-overview-transform>"matrix(5, 0, 0, 5, -598.975, -235.975)"</inkstitch:client-overview-transform> + </metadata> + <g + inkscape:groupmode="layer" + id="layer3" + inkscape:label="Instructions" + sodipodi:insensitive="true" + style="display:inline"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:'A&S Sarsaparilla Ornamental';-inkscape-font-specification:'A&S Sarsaparilla Ornamental';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="39.158333" + y="105.55624" + id="text4721" + sodipodi:insensitive="true"><tspan + sodipodi:role="line" + id="tspan4719" + x="39.158333" + y="105.55624" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.26458332px">Instructions</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="0.52916664" + y="115.02882" + id="text4729" + sodipodi:insensitive="true"><tspan + sodipodi:role="line" + id="tspan4727" + x="0.52916664" + y="115.02882" + style="stroke-width:0.26458332px">1. For free standing lace, the areas that</tspan><tspan + sodipodi:role="line" + x="0.52916664" + y="121.20242" + style="stroke-width:0.26458332px" + id="tspan4731">would be for traditional fills are going to</tspan><tspan + sodipodi:role="line" + x="0.52916664" + y="127.37604" + style="stroke-width:0.26458332px" + id="tspan4733">be for 2 layers of loose fill with opposing</tspan><tspan + sodipodi:role="line" + x="0.52916664" + y="133.54965" + style="stroke-width:0.26458332px" + id="tspan4735">angles. For instance, one loose fill would</tspan><tspan + sodipodi:role="line" + x="0.52916664" + y="139.72327" + style="stroke-width:0.26458332px" + id="tspan4737">have 0 degree angle and the second </tspan><tspan + sodipodi:role="line" + x="0.52916664" + y="145.89687" + style="stroke-width:0.26458332px" + id="tspan4739">layer would have 90 degree angle.</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="0.79374999" + y="156.32686" + id="text4743" + sodipodi:insensitive="true"><tspan + sodipodi:role="line" + id="tspan4741" + x="0.79374999" + y="156.32686" + style="stroke-width:0.26458332px">2. Experiment with different density</tspan><tspan + sodipodi:role="line" + x="0.79374999" + y="162.50047" + style="stroke-width:0.26458332px" + id="tspan4745">levels and stitch angles to attach </tspan><tspan + sodipodi:role="line" + x="0.79374999" + y="168.67407" + style="stroke-width:0.26458332px" + id="tspan4747">different looks and affects.</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="0" + y="178.14665" + id="text4751" + sodipodi:insensitive="true"><tspan + sodipodi:role="line" + id="tspan4749" + x="0" + y="178.14665" + style="stroke-width:0.26458332px">3. For detail work and outline work, use </tspan><tspan + sodipodi:role="line" + x="0" + y="184.32027" + style="stroke-width:0.26458332px" + id="tspan4753">a decent size satin stitch. Satin stitch</tspan><tspan + sodipodi:role="line" + x="0" + y="190.49387" + style="stroke-width:0.26458332px" + id="tspan4755">outlines are required as that helps "seal"</tspan><tspan + sodipodi:role="line" + x="0" + y="196.66748" + style="stroke-width:0.26458332px" + id="tspan4757">the edges and keep the design together</tspan><tspan + sodipodi:role="line" + x="0" + y="202.84109" + style="stroke-width:0.26458332px" + id="tspan4759">after the solvy stabilizer is removed.</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="0" + y="213.27107" + id="text4763" + sodipodi:insensitive="true"><tspan + sodipodi:role="line" + x="0" + y="213.27107" + style="stroke-width:0.26458332px" + id="tspan4765">4. For the actual embroidery, use solvy</tspan><tspan + sodipodi:role="line" + x="0" + y="219.44469" + style="stroke-width:0.26458332px" + id="tspan4771">and I prefer heavy weight solvy, usually </tspan><tspan + sodipodi:role="line" + x="0" + y="225.61829" + style="stroke-width:0.26458332px" + id="tspan4775">with two layers of stabilizer. Depending</tspan><tspan + sodipodi:role="line" + x="0" + y="231.7919" + style="stroke-width:0.26458332px" + id="tspan4777">on the brand, may still have to use more</tspan><tspan + sodipodi:role="line" + x="0" + y="237.96552" + style="stroke-width:0.26458332px" + id="tspan4779">even with it being heavy weight. Just </tspan><tspan + sodipodi:role="line" + x="0" + y="244.13913" + style="stroke-width:0.26458332px" + id="tspan4781">have to experiement to find out what is</tspan><tspan + sodipodi:role="line" + x="0" + y="250.31274" + style="stroke-width:0.26458332px" + id="tspan4783">needed.</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="0" + y="259.78531" + id="text4787" + sodipodi:insensitive="true"><tspan + sodipodi:role="line" + id="tspan4785" + x="0" + y="259.78531" + style="stroke-width:0.26458332px">5. Following the instructions on the </tspan><tspan + sodipodi:role="line" + x="0" + y="265.95892" + style="stroke-width:0.26458332px" + id="tspan4789">stabilizer for removal. I tend to like to </tspan><tspan + sodipodi:role="line" + x="0" + y="272.13254" + style="stroke-width:0.26458332px" + id="tspan4791">have a little of the stabilizer left and to </tspan><tspan + sodipodi:role="line" + x="0" + y="278.30615" + style="stroke-width:0.26458332px" + id="tspan4793">try not to remove all of it. This allows for</tspan><tspan + sodipodi:role="line" + x="0" + y="284.47974" + style="stroke-width:0.26458332px" + id="tspan4795">some stiffness to remain in the finished</tspan><tspan + sodipodi:role="line" + x="0" + y="290.65335" + style="stroke-width:0.26458332px" + id="tspan4797">product.</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="0.26458332" + y="301.08334" + id="text4801" + sodipodi:insensitive="true"><tspan + sodipodi:role="line" + id="tspan4799" + x="0.26458332" + y="301.08334" + style="stroke-width:0.26458332px">6. Enjoy your new FSL ornament.</tspan></text> + </g> + <g + style="display:inline" + transform="translate(0,-197)" + id="layer1" + inkscape:groupmode="layer" + inkscape:label="Butterfly Lace"> + <path + embroider_row_spacing_mm="1.8" + embroider_angle="45" + embroider_max_stitch_length_mm="4" + inkscape:connector-curvature="0" + id="path1785" + d="m 35.695692,239.89609 c 0,0 -17.67039,-8.69345 -25.51339,-7.843 0,0 -5.2916696,0.28348 -7.1815496,6.52009 0,0 -1.03943,7.08705 4.44122,16.63095 0,0 1.51191,2.55134 5.4806596,1.98437 0,0 10.58333,-2.55133 13.89062,-3.68526 0,0 7.37054,-1.79539 9.73289,-3.2128 0,0 -1.7009,-5.48066 -0.85045,-10.39435 z" + style="display:inline;fill:#191d1f;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + embroider_running_stitch_length_mm="1.6" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0;stroke-opacity:1" + d="m 4.4181624,235.50212 c 0,0 -1.55915,2.55134 -1.5119,4.63021 0,0 0.33073,6.37835 2.22061,10.2526 0,0 1.46465,4.34673 3.77976,6.18936" + id="path1156" + inkscape:connector-curvature="0" /> + <path + embroider_row_spacing_mm="1.8" + embroider_angle="135" + embroider_max_stitch_length_mm="4" + inkscape:connector-curvature="0" + id="path1785-7" + d="m 35.695692,239.89609 c 0,0 -17.67038,-8.69345 -25.51339,-7.843 0,0 -5.2916696,0.28348 -7.1815496,6.52009 0,0 -1.03943,7.08705 4.44122,16.63095 0,0 1.51191,2.55134 5.4806596,1.98437 0,0 10.58333,-2.55133 13.89062,-3.68526 0,0 7.37054,-1.79539 9.73289,-3.2128 0,0 -1.70089,-5.48066 -0.85045,-10.39435 z" + style="display:inline;fill:#191d1f;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" + d="m 8.6861324,256.4076 c 0,0 2.0713396,1.33635 5.1449396,0.60135 0,0 9.95579,-2.67269 11.5594,-3.07359 0,0 9.08717,-2.40543 11.02487,-3.60814" + id="path11197" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + inkscape:connector-curvature="0" + id="path2086" + d="m 34.939742,251.04639 1.6064,-0.85045 0.0945,1.88989 v 0.66145 l -1.51191,0.66146 -3.40178,1.51191 -4.53572,1.79538 -8.88244,2.26786 -5.95312,0.66146 -2.5513396,0.18899" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0;stroke-opacity:1" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_row_spacing_mm="1.8" + embroider_angle="45" + embroider_max_stitch_length_mm="4" + inkscape:connector-curvature="0" + id="path2088" + d="m 9.3318524,259.88158 5.5751496,14.78832 c 0,0 1.08668,2.26786 5.19717,1.27567 0,0 2.55134,-1.13392 5.05544,-3.26004 0,0 4.34672,-4.11049 5.81138,-5.6224 l 7.9375,-8.92969 -2.22061,-5.00818 -0.75595,-0.0945 -2.92932,1.32292 c 0,0 -4.11049,1.70089 -4.7247,1.93713 0,0 -1.74814,0.66145 -2.4096,0.89769 0,0 -9.35491,1.98437 -11.38653,2.17336 z" + style="display:inline;fill:#191d1f;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + sodipodi:nodetypes="ccccccccccccc" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path1318" + d="m 9.3318524,259.88158 c 0,0 5.1971696,13.79613 5.5278996,14.74108 0,0 0.61422,0.94494 1.88989,1.5119" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0;stroke-opacity:1" /> + <path + embroider_row_spacing_mm="1.8" + embroider_angle="135" + embroider_max_stitch_length_mm="4" + inkscape:connector-curvature="0" + id="path2088-9" + d="m 9.3318524,259.88158 5.5751496,14.78832 c 0,0 1.08668,2.26786 5.19717,1.27567 0,0 2.55134,-1.13392 5.05544,-3.26004 0,0 4.34672,-4.11049 5.81138,-5.6224 l 7.9375,-8.92969 -2.22061,-5.00818 -0.75596,-0.0945 -2.92931,1.32292 c 0,0 -4.11049,1.70089 -4.7247,1.93713 0,0 -1.74814,0.66145 -2.4096,0.89769 0,0 -9.35491,1.98437 -11.38653,2.17336 z" + style="display:inline;fill:#191d1f;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + sodipodi:nodetypes="ccccccccccccc" /> + <path + inkscape:connector-curvature="0" + id="path1320" + d="m 16.182672,275.85108 c 0,0 3.16555,0.99219 5.66964,-0.75596 0,0 5.57515,-4.29947 7.60677,-6.52008 0,0 4.77195,-5.24442 5.57515,-6.04762 0,0 3.63802,-4.20499 3.82701,-4.39398 0,0 2.92932,6.28386 3.77976,7.65402 0,0 4.29948,7.32329 5.7169,8.92969 0,0 0.85044,1.22842 1.32291,1.6064" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0;stroke-opacity:1" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_row_spacing_mm="1.1" + embroider_max_stitch_length_mm="4" + embroider_angle="180" + inkscape:connector-curvature="0" + id="path2411" + d="m 49.633562,276.37079 2.504104,-3.16554 c 0,0 3.54352,-5.05544 4.6302,-6.99257 0,0 2.88207,-5.14992 4.11049,-7.79575 0,0 2.36236,-4.86644 2.83483,-6.56734 0,0 1.13392,-4.7247 1.6064,-8.07924 0,0 0.42522,-2.50409 -0.18899,-4.8192 0,0 -0.66146,-3.21279 -2.12612,-4.53571 0,0 -2.88207,-2.50409 -6.89806,-1.46466 0,0 -2.59859,0.8032 -5.575154,3.35454 0,0 -3.40179,-3.44903 -5.52791,-2.97656 0,0 -3.827,-0.28349 -5.95312,1.46465 0,0 -1.98438,1.74815 -2.92932,4.20499 0,0 -0.89769,2.92931 -0.47247,6.99256 0,0 1.03944,6.4256 2.12612,9.49665 0,0 3.68527,8.40997 4.96094,10.53609 0,0 4.7247,8.07923 6.89806,10.34709 z" + style="display:inline;fill:#191d1f;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + embroider_running_stitch_length_mm="1.6" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0;stroke-opacity:1" + d="m 49.633562,276.2763 c 0,0 -4.11049,-5.29166 -5.10267,-7.22879 0,0 -5.00819,-8.69345 -5.48066,-10.53609 0,0 -1.98438,-4.29948 -2.17336,-6.04762" + id="path2569" + inkscape:connector-curvature="0" /> + <path + embroider_row_spacing_mm="1.1" + embroider_max_stitch_length_mm="4" + embroider_angle="90" + inkscape:connector-curvature="0" + id="path2411-2" + d="m 49.633562,276.37079 2.504104,-3.16555 c 0,0 3.54352,-5.05543 4.6302,-6.99256 0,0 2.88207,-5.14992 4.1105,-7.79575 0,0 2.36235,-4.86644 2.83482,-6.56734 0,0 1.13393,-4.7247 1.6064,-8.07924 0,0 0.42522,-2.50409 -0.18899,-4.8192 0,0 -0.66146,-3.21279 -2.12612,-4.53571 0,0 -2.88207,-2.50409 -6.89806,-1.46466 0,0 -2.59859,0.8032 -5.575154,3.35454 0,0 -3.40179,-3.44903 -5.52791,-2.97656 0,0 -3.827,-0.28349 -5.95312,1.46465 0,0 -1.98438,1.74814 -2.92932,4.20499 0,0 -0.89769,2.92931 -0.47247,6.99256 0,0 1.03944,6.4256 2.12612,9.49665 0,0 3.68527,8.40998 4.96094,10.53609 0,0 4.7247,8.07924 6.89806,10.34709 z" + style="display:inline;fill:#191d1f;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path996" + d="m 37.443832,254.68441 -0.56696,-2.17336 -0.70871,-3.1183 -0.42522,-2.92932 -0.28348,-2.69308 0.14174,-2.50409 0.0472,-1.32292 -2.07887,-0.99219 -3.30729,-1.5119 -3.63802,-1.51191 -4.63021,-1.70089 -4.29948,-1.27567 -3.87426,-0.75595 -2.78757,-0.14174 -1.8898796,1.08668 -1.37017,1.70089 -0.61421,1.93713 0.0473,1.74814 0.8032,1.6064 1.46466,1.37016 1.6063996,0.66146 1.79538,-0.0473 1.74814,-0.99219 1.08668,-1.46466 0.0472,-1.55915 -0.7087,-1.37016 -1.08668,-0.56696 -0.81501,0.0118 -0.83864,0.29529 -0.68508,0.48428 -0.36616,0.72052 -0.10631,0.7087 0.0945,0.63784 0.38979,0.64964 0.53153,0.37798 0.63783,0.15355" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0;stroke-opacity:1" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 11.930442,232.1712 -3.7915796,0.24805 m 3.6616496,0.76777 -3.9569396,-0.36617 m 1.91351,1.14574 -2.27967,-0.6024 m 1.61821,1.39379 -2.31511,-0.73233 m 1.63003,2.16155 -2.17337,-0.53153 m 2.04344,1.77177 c -0.0472,0.0236 -2.23243,0.24804 -2.23243,0.24804 m 2.82301,1.13393 -2.46865,0.66146 m 3.14192,0.37798 -1.92531,1.64183 m 3.2127996,-0.63784 -1.3111096,1.91351 m 2.5277196,-1.5119 -0.21262,1.78357 m 1.63003,-2.05525 0.25986,1.81901 m 0.59058,-2.59858 1.18118,1.53553 m -0.63784,-2.26786 1.51191,0.59059 m -1.4056,-1.6064 1.68908,0.21261 m -1.85444,-1.05124 1.74814,-0.14175 m -2.29149,-0.38979 1.46466,-1.1103 m -2.35054,0.87407 c 0,-0.0473 0.50791,-1.47647 0.50791,-1.47647 m -1.28748,1.81901 -0.41341,-1.50009 m -0.21262,2.13793 c -0.0591,0 -1.18117,-0.79139 -1.18117,-0.79139 m 1.12212,1.70089 -1.41742,0.43703 m 1.64184,0.21262 -0.73233,0.73233 m 1.34654,-0.38979 -0.15355,0.92131 m 0.38978,-0.37797 c 0,0 -1.33472,0.0827 -1.87806,-1.24023 0,0 -0.43704,-0.99219 0.3071,-2.07887 0,0 0.73233,-1.08669 2.13793,-1.12212 0,0 1.3111,-0.0354 2.06706,1.02762 0,0 0.72051,0.88588 0.59058,2.06706 0,0 -0.0591,1.25205 -0.95675,2.19699 0,0 -0.86226,1.03943 -2.06706,1.32291 0,0 -2.1143,0.53153 -3.04743,-0.0354 0,0 -2.1733596,-0.6142 -3.1655496,-2.88206 0,0 -0.8032,-1.75995 -0.21261,-3.80339 0,0 0.49609,-1.73632 1.58277,-2.7167 l 0.6024,-0.93313 m 4.0278096,8.06743 c 0,0 -1.75995,-0.0591 -1.59458,-1.94894 0,0 0.21261,-1.58277 2.00799,-1.74814 0,0 1.52372,-0.0945 1.96076,1.64184 0,0 0.37797,1.58277 -1.12212,2.72851 0,0 -1.02762,0.8977 -2.72852,0.72052 0,0 -2.0906796,-0.16537 -3.1419196,-2.07887 0,0 -1.08669,-1.87807 -0.25986,-3.7207 0,0 0.48428,-1.24024 1.41741,-2.03163 0,0 1.5591496,0.30711 1.9961896,-1.004 l 0.2008,-0.9095" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path1044" /> + <path + embroider_running_stitch_length_mm="1.6" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0;stroke-opacity:1" + d="m 11.659502,232.01925 c 0,0 5.41221,0.53454 7.01583,1.26953 0,0 7.91786,2.33861 10.12283,3.50792 l 2.43884,1.03567 1.08934,0.55208 3.015,1.38171 -0.0591,0.73233 -0.10631,0.75596 -0.0118,0.23623 v 0.24805 l -0.0354,0.51971" + id="path1211" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccc" /> + <path + id="path1239" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 30.502012,237.72379 -0.97721,-0.45937 m 0.53454,0.71829 -1.14425,-0.53454 m 0.16704,1.12754 -0.83521,-0.90203 m -0.0668,2.03792 c -0.0334,-0.0167 -1.31964,-0.92709 -1.31964,-0.92709 m 1.09413,1.85419 -1.61197,-0.0668 m 2.41378,1.00226 c -0.0668,0.0334 -2.18827,1.37811 -2.18827,1.37811 m 2.79798,-0.45102 c -0.0167,0.0334 -1.62868,1.67043 -1.62868,1.67043 m 2.79798,-1.13589 c -0.0334,0.0501 -1.07743,2.10475 -1.07743,2.10475 m 2.6894,-2.15486 -0.53454,2.35531 m 1.65373,-2.74786 c 0.0167,0.0752 -0.14198,2.39707 -0.14198,2.39707 m 1.09413,-3.61649 c 0.008,0.0418 -0.0167,2.78127 -0.0167,2.78127 m 0.88532,-3.67496 -0.0752,2.78128 m 0.25056,-2.48895 c 0,0 -0.98555,1.7456 -1.28623,2.02958 0,0 -0.82687,1.01896 -2.26344,1.31964 0,0 -2.29685,0.50948 -3.60814,-1.5535 0,0 -0.86862,-1.23612 -0.35079,-2.78963 0,0 0.5596,-1.78736 2.28849,-1.89594 l 0.46773,-0.37585 m 4.76909,4.91108 c 0,0 -0.47608,0.65982 -0.60971,0.83522 0,0 -1.328,1.57856 -2.97337,1.66208 0,0 -3.16548,0.63476 -4.51853,-2.53071 0,0 -0.91039,-1.82077 0.45937,-3.72507 0,0 0.593,-0.83522 1.5368,-1.14425 l 0.74334,-0.29232" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm=".33" + embroider_center_walk_underlay="True" /> + <path + inkscape:connector-curvature="0" + id="path1410" + d="m 29.833832,237.23101 0.68488,0.30068 1.31964,0.56795 0.16705,0.65147 0.16704,0.76839 -0.11693,0.7517 -0.28398,0.58465 -0.50112,0.43431 -0.68488,0.30069 -0.48861,0.006 -0.53153,-0.15946 -0.4016,-0.3012 -0.28348,-0.38979 -0.11221,-0.37798 -0.0413,-0.37207" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0;stroke-opacity:1" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 31.360782,238.37238 1.05124,0.2008 m -0.86225,0.15355 0.92722,0.23033 m -0.87998,0.5079 1.02763,0.0709 m -1.02172,0.64965 0.96856,0.15356 m -1.28748,0.33663 0.84454,0.39569 m -1.32291,-0.1004 0.47837,0.75596 m -0.91541,-0.56106 c -0.006,0.0295 0.14174,0.76776 0.14174,0.76776 m -0.67918,-0.86226 -0.0532,0.78548 m -0.37207,-1.03352 -0.23623,0.69098 m -0.0236,-0.88588 c -0.0236,0.0236 -0.30711,0.43704 -0.30711,0.43704 m 0.12402,-0.72052 c -0.0236,0.0118 -0.33073,0.25395 -0.33073,0.25395 m 0.25986,-0.57877 -0.35435,0.0532 m 0.24214,-0.15946 c 0,0 -0.0118,0.66146 0.31301,0.99809 0,0 0.36617,0.54925 1.11031,0.56697 0,0 0.7028,0.0591 1.35835,-0.63193 0,0 0.45475,-0.6024 0.43113,-1.13393 0,0 0.0709,-0.56696 -0.36617,-1.13983 l -0.14174,-0.33073 m -2.78757,1.67727 c 0,0 -0.0413,0.63783 0.31892,1.13393 0,0 0.47246,0.7028 1.39378,0.64964 0,0 0.75595,0.0118 1.38198,-0.64374 0,0 0.49609,-0.61421 0.55515,-1.11621 0,0 0.10631,-0.63783 -0.0768,-1.09259 l -0.15355,-0.51381" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path1438" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path4780" + d="m 31.915932,238.28969 -3.02381,-1.46465 -5.85863,-2.22061 -3.44903,-1.08668 -4.20499,-1.08669 -3.54353,-0.42522 c 0,0 -2.5040896,-0.0945 -3.5435196,0.47247 0,0 -2.03162,0.8032 -3.2128,2.07887 0,0 -1.65365,2.26786 -2.12612,4.48847 0,0 -0.14174,3.82701 0.8032,7.1343 0,0 1.22843,4.67745 2.59859,6.66183" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0;stroke-opacity:1" /> + <path + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0;stroke-opacity:1" + d="m 6.2608024,252.79453 c 0,0 0.75595,2.64583 1.93712,3.16555 0,0 1.32292,0.23624 2.5040996,0.18899 0,0 2.95294,-0.11812 3.99237,-1.37016 0,0 1.74814,-1.88989 1.72452,-2.85845 0,0 0.0709,-2.22061 -0.44885,-3.30729 0,0 -1.63002,-3.04743 -4.13412,-2.05525 0,0 -2.1497296,0.68509 -2.2678496,2.48047 -0.0236,0.0472 0.0472,1.77177 1.1339296,2.29148 0,0 1.27567,0.51972 2.43322,-0.35435 0,0 0.44884,-0.56696 0.51972,-0.75595" + id="path4956" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 7.9616924,252.32206 -1.91351,1.25205 m 2.76396,-0.8977 -2.17337,1.79539 m 2.45685,-0.70871 -1.86626,1.67727 m 2.62221,-1.01581 -1.06306,2.4096 m 2.9056896,-2.10249 -0.37797,2.36235 m 1.81901,-2.69308 0.42522,2.29148 m 0.66146,-3.28367 1.22842,1.86626 m -0.44884,-3.09468 1.63002,1.32292 m -1.22843,-2.8112 1.98438,0.42522 m -2.12612,-1.84263 2.26786,-0.21261 m -3.07106,-1.06306 1.79539,-0.87407 m -2.85844,0.25986 c 0.0945,-0.11812 1.29929,-1.63002 1.29929,-1.63002 m -2.22061,1.41741 c 0,0 0.16536,-2.008 0.14174,-1.91351 m -1.06306,2.12612 -0.75595,-1.63002 m -0.11812,2.2206 -1.4646596,-0.87407 m 1.3465396,1.55916 c 0,0 -1.9134996,-0.23624 -1.8898796,-0.14175 m 1.7481396,1.13393 -1.7245096,0.70871 m 2.3150996,0.21261 -1.3465396,1.25205 m 2.2206096,-0.94494 -0.28348,1.29929 m 0.94494,-1.65365 0.82682,1.11031 m -0.33073,-1.53553 1.15756,0.33073 m -0.33073,-0.49609 c 0,0 -0.37798,1.39378 -1.74814,1.72451 0,0 -1.15756,0.4016 -2.2678596,-0.7087 0,0 -1.37016,-1.67727 0.1889896,-3.63803 0,0 1.86626,-2.3151 4.74832,-0.75595 0,0 1.84264,1.13393 2.05525,3.37817 0,0 0.44885,2.22061 -0.94494,4.06324 0,0 -1.18118,1.84263 -3.02381,2.38598 0,0 -1.67727,0.51971 -2.78758,0.18898 0,0 -2.3150996,-0.0472 -3.7088896,-3.40178 m 7.2524196,-3.28367 c 0,0 -0.37797,1.46466 -2.008,1.41741 0,0 -1.55915,0.14174 -1.8190096,-1.81901 0,0 -0.11811,-1.9135 2.0788696,-2.64583 0,0 1.91351,-0.56697 3.18918,1.1103 0,0 1.15755,1.06306 0.94494,3.35454 0,0 -0.30711,2.05525 -1.55916,3.02381 0,0 -1.27567,1.29929 -3.23642,1.32292 0,0 -2.0316196,-0.0945 -3.2600396,-1.41741 0,0 0.49609,-0.61422 -0.0945,-1.25205 0,0 -0.4016,-0.28348 -0.94494,-0.18899" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5178" /> + <path + inkscape:label="path5359" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0;stroke-opacity:1" + d="m 6.4970324,252.84178 -0.56696,-0.51972 0.42522,0.99219 1.01581,1.88988 1.70089,1.48828 c 0,0 0.8977,0.92132 3.8506396,0.54334 0,0 6.6382,-1.72451 7.72488,-1.98438 0,0 10.32348,-2.85844 11.10306,-3.09467 l 1.34653,-0.44885 -0.89769,-0.35435 c 0,0 -2.4658,-0.44163 -2.91682,-1.95337 0,0 -0.65147,-1.82913 -0.1921,-2.41378 0,0 0.53454,-1.68714 2.1298,-1.88759 0,0 1.26118,-0.0501 1.74561,0.74334 0,0 0.593,0.86028 0.15869,1.7289 0,0 -0.50113,1.04402 -1.57021,1.02732 0,0 -0.49278,0.0334 -0.92709,-0.3842" + id="path5359" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 33.625722,250.92857 -1.22777,0.81016 m -0.43431,-1.05237 -0.34244,1.03567 m -0.98556,-1.51174 c 0,0 -0.43431,1.05237 -0.42596,1.01896 m -0.3842,-2.29685 -0.85192,1.00227 m 0.49278,-2.00453 c 0,0 -1.03567,0.46772 -1.00226,0.45937 m 1.11083,-1.45327 -1.11083,0.15033 m 1.73725,-0.99391 -1.17766,-0.12528 m 1.62032,-0.34244 -0.44266,-0.70158 m 1.41987,0.56795 c -0.0167,-0.0334 -0.16705,-0.96885 -0.16705,-0.96885 m 0.91874,1.20271 0.3675,-0.85192 m 0.0752,1.35305 c 0.0167,-0.0334 0.71828,-0.50948 0.71828,-0.50948 m -0.66817,1.21106 c 0.0418,-0.0334 0.97721,-0.25892 0.97721,-0.25892 m -1.20272,0.91874 c 0.0418,0.008 0.85192,0.11694 0.85192,0.11694 m -1.21106,0.30902 c 0.0251,0.0334 0.45937,0.57631 0.45937,0.57631 m -0.89368,-0.37585 0.10857,0.73499 m -0.55959,-0.71829 c -0.0167,0.0334 -0.15869,0.56795 -0.15869,0.56795 m -0.35079,-0.65982 -0.23386,0.37584 m 0.0251,-0.32573 c 0,0 0.71828,0.7684 1.82912,0.0334 0,0 0.84357,-0.61806 0.65982,-1.64538 0,0 -0.20045,-1.40316 -1.81242,-1.33635 0,0 -1.19436,-0.0418 -1.96276,1.38647 0,0 -0.55959,1.1526 -0.0418,2.37202 0,0 0.55125,1.34469 1.76231,1.82077 0,0 0.69323,0.39255 2.53071,0.29232 m -3.0569,-2.85644 c 0,0 0.7851,0.69323 1.73725,0.26727 0,0 0.65147,-0.27562 0.95215,-1.02732 0,0 0.47607,-0.96885 -0.31738,-1.921 0,0 -0.91874,-1.07743 -2.36367,-0.48442 0,0 -1.23612,0.36749 -1.7289,1.87088 0,0 -0.40926,1.16096 0.1921,2.46389 0,0 0.5763,1.29459 1.88759,1.83748 0,0 0.91874,0.40091 1.97946,0.29233" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5579" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path5950" + d="m 33.291632,251.3963 0.88533,-0.0501 2.33861,-1.08579 0.43431,2.45554 c 0,0 -3.00678,1.21942 -3.50791,1.40317 0,0 -6.39776,2.97337 -10.40681,3.64154 0,0 -6.99912,1.63703 -9.63841,1.77066 l -0.10022,0.46772 -0.86863,0.80181 -0.66817,1.10249 -0.21716,0.88533 -0.0501,1.06908 0.35079,1.10248 0.63477,0.78511 1.00226,0.70158 1.05237,0.25057 1.23612,-0.16705 1.00227,-0.55124 0.63476,-0.91874 c 0,0 0.26727,-1.06908 0.0668,-1.43657 0,0 -0.71117,-2.0414 -2.65421,-0.79526 0,0 -0.68508,0.69689 -0.53153,1.5119 0,0 0.17718,0.72052 0.93904,0.92723" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0;stroke-opacity:1" /> + <path + id="path6178" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 14.332202,259.98233 -1.77901,-0.0501 m 0.72663,0.83522 -1.12754,-0.51784 m 0.71829,1.08578 -1.23612,-0.66817 m 0.61806,1.81242 -1.26953,-0.53454 m 1.25282,1.49504 -1.24447,-0.0668 m 1.52845,0.89368 -1.39482,0.70994 m 2.03793,0.1921 -1.03567,1.1359 m 2.02958,-0.62642 -0.84357,1.29459 m 1.49504,-0.96886 -0.22551,1.21942 m 1.16096,-1.3614 0.15869,1.24447 m 0.50948,-1.64538 c 0.0334,0.0167 0.86027,0.88534 0.86027,0.88534 m -0.36749,-1.58692 0.94379,0.61806 m -0.86862,-1.46998 1.21941,0.14199 m -1.48668,-0.63477 1.26953,-0.2255 m -1.87924,-0.30904 1.12754,-0.79345 m -1.71219,0.82686 0.0585,-1.07743 m -0.62641,1.48669 -0.81851,-0.5429 m 0.6097,1.21107 -0.88533,0.34244 m 1.00226,0.24221 c -0.0418,0.0334 -0.6097,0.58465 -0.6097,0.58465 m 0.86862,-0.28397 -0.21715,0.60135 m 0.30903,-0.15869 c 0,0 -1.05238,-0.24221 -1.05238,-1.38646 0,0 0.0752,-1.17765 1.19436,-1.5535 0,0 1.26953,-0.52619 2.12146,0.73499 0,0 0.75169,1.25282 -0.18375,2.53906 0,0 -0.65147,1.11919 -2.32191,1.27788 0,0 -1.80407,0.1921 -2.98172,-1.29458 0,0 -1.24448,-1.68714 -0.48443,-3.95893 0,0 0.68488,-1.5201 1.84583,-1.95441 m 1.88759,5.48738 c 0,0 -1.04402,-0.21716 -0.84357,-1.44493 0,0 0.31739,-1.33635 1.78737,-1.16095 0,0 1.40316,0.36749 1.12754,1.921 0,0 -0.28397,1.57856 -2.19662,1.82912 0,0 -2.15486,0.29233 -3.0736,-1.90429 0,0 -0.70158,-1.72055 0.44267,-3.16547 0,0 0.6097,-0.91874 2.1298,-1.55351" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path6367" + d="m 13.964702,259.54802 -2.13815,0.10022 -2.4388396,0.26727 1.6704396,4.57699 2.43883,6.5481 0.66817,1.67044 0.33409,-0.73499 0.23386,-1.26953 0.66818,-1.1359 1.06907,-0.90203 0.93545,-0.31738 0.98555,-0.11693 0.98556,0.0334 0.86863,0.60135 0.46772,0.81851 0.13363,0.90204 -0.15034,0.75169 -0.80499,0.82453 -0.57877,0.27167 -0.67327,-0.0827 -0.6024,-0.23623 -0.30711,-0.37798 -0.18899,-0.49609 0.0354,-0.4961 0.0472,-0.22442 0.23624,-0.41341" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0;stroke-opacity:1" /> + <path + id="path6585" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 14.694392,273.32336 -0.88588,-2.23242 m 1.35835,1.07487 -1.07487,-1.87807 m 1.45285,0.49609 -0.88589,-1.35835 m 1.77177,0.12993 -0.8032,-1.27567 m 2.16155,0.53153 -0.43704,-1.26386 m 1.74814,1.47647 0.42523,-1.61821 m 0.54334,2.44503 c 0,0 1.32292,-1.22842 1.24023,-1.16936 m -0.99218,1.97257 1.24023,-0.33073 m -1.81901,1.08668 1.21661,0.55515 m -2.01981,-0.31892 c -0.0236,0.0827 0.15355,1.27567 0.15355,1.27567 m -0.89769,-1.52371 -0.66146,1.03943 m 0.36617,-1.54734 c -0.0472,0.0118 -0.85045,0.55515 -0.85045,0.55515 m 0.96856,-1.06306 c -0.0472,0 -0.74414,0.0118 -0.74414,0.0118 m 0.74414,-0.33071 c 0,0 -0.67327,0.69689 -0.12993,1.58277 0,0 0.93313,1.24024 2.19699,0.0945 0,0 0.90951,-0.79138 0.36616,-2.06705 0,0 -0.85044,-1.81901 -3.27185,-0.90951 0,0 -1.47647,0.50791 -2.12612,2.16156 0,0 -0.44884,1.70089 -0.62602,2.44503 m 3.44903,-3.38997 c 0,0 -0.7087,0.68508 -0.29529,1.72451 0,0 0.3071,0.8032 1.3111,0.88588 0,0 1.54734,0.14174 2.12612,-1.58277 0,0 0.67327,-1.84264 -1.32292,-2.90569 0,0 -1.72451,-0.8977 -3.87425,0.61421 0,0 -1.22843,0.86226 -1.65365,2.57496 l -0.27167,0.72052" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path6778" + d="m 13.867572,271.94139 0.99218,2.70489 c 0,0 1.8072,2.36235 5.39798,1.21661 0,0 1.9135,-1.05124 2.74032,-1.6064 0,0 3.48447,-2.8112 4.72471,-4.016 l 5.0318,-5.18536 3.012,-3.35453 0.93313,-1.06306 c 0,0 0.33073,-2.22061 -0.8032,-3.64984 0,0 -2.1143,-2.55133 -4.53571,-1.35835 0,0 -1.85445,0.57878 -2.33873,2.56315 0,0 -0.36616,1.91351 1.39379,2.83482 0,0 1.18117,0.43704 2.27967,-0.77957 0,0 0.69689,-0.83864 0.27167,-1.8072 0,0 -0.31892,-1.1103 -1.73633,-0.89769" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0;stroke-opacity:1" /> + <path + id="path7010" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#191d1f;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 35.446492,261.611 1.921,-1.95441 m -1.87924,1.26118 2.01288,-1.84583 m -1.74561,0.0919 1.69549,-1.06908 m -2.16321,-0.64311 1.66208,-0.65983 m -2.52235,-0.18374 1.81242,-0.99391 m -2.93162,0.60971 1.26953,-1.50339 m -2.00452,1.37811 0.14199,-1.46164 m -1.56185,1.87924 -0.70159,-1.26117 m -0.56795,2.5307 c -0.0334,-0.008 -1.28623,-0.81016 -1.28623,-0.81016 m 0.95215,1.97112 c -0.0334,0.0167 -1.51175,0.0418 -1.51175,0.0418 m 2.23839,0.94379 -1.42823,0.87698 m 2.31356,-0.58465 c 0,0 -0.93545,1.30293 -0.9605,1.31129 m 1.60361,-1.31129 0.0668,1.41152 m 0.46772,-1.94606 c 0.0334,0.0167 1.01897,0.81016 1.05238,0.84357 m -0.81852,-1.5034 c 0.0418,-0.0251 1.14425,0.25893 1.14425,0.25893 m -1.21941,-0.87699 1.04401,-0.18374 m -1.43657,-0.26727 0.77675,-0.64312 m -1.46163,0.45937 0.0501,-0.68488 m -0.25056,0.3842 c 0,0 1.21942,-0.34244 1.83748,0.79346 0,0 0.50948,0.75169 -0.0585,1.82913 0,0 -0.50949,1.05237 -1.84583,1.186 0,0 -1.70385,0.23387 -2.39708,-1.62032 0,0 -0.51783,-1.45328 0.48443,-2.86479 l 0.35079,-0.45102 c 0,0 1.52009,-1.54515 3.62484,-1.40316 0,0 1.82077,0.0501 2.91491,1.47833 0,0 0.93544,0.80181 0.97721,2.88985 L 36.941462,260.4 m -5.69618,-2.79798 c 0,0 1.30294,-0.25891 1.63703,1.06073 0,0 0.35079,1.30294 -1.06073,2.02123 0,0 -2.00452,0.73499 -2.53906,-1.46999 0,0 -0.39255,-1.69549 1.56186,-2.94831 0,0 2.47224,-1.56186 4.51852,0.64311 0,0 0.98556,1.01062 0.79346,2.64764 0,0 -0.0585,0.67653 -0.40926,1.37811 l -0.14199,0.7684" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path7207" + d="m 36.248302,261.11822 2.67269,-3.04019" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458331, 0.26458331;stroke-dashoffset:0" /> + <path + id="path7439" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 11.245362,259.33824 -3.3545396,0.28349 m 4.2286096,1.60639 c -0.0945,0.0236 -3.7561396,1.27567 -3.7561396,1.27567 m 4.6065796,0.11812 c -0.0945,0.0473 -3.7088896,2.50409 -3.7088896,2.50409 m 4.3703496,2.55134 c -0.11812,0.0945 -2.83482,1.6064 -2.83482,1.6064 m 4.89007,2.43322 c -0.0945,0.0473 -3.11831,1.6064 -3.11831,1.6064 m 3.23642,-0.4016 c -0.11811,0.0236 -2.19698,2.03163 -2.19698,2.03163 m 2.66945,-1.15756 -1.60639,2.8112 m 2.12611,-2.55134 c 0,0 -0.47247,4.13412 -0.49609,4.016 m 1.48828,-4.03962 0.73233,3.68527 m 0.77957,-4.44123 0.70871,4.06325 m 1.1103,-3.77976 c 0.0473,0.11811 0.94494,3.02381 0.94494,3.02381 m 1.41742,-4.72471 1.18117,3.51991 m 1.67727,-6.11849 1.53553,2.83482 m 2.36235,-6.85082 1.67727,2.92932 m 3.94513,-8.97694 c 0.0945,0.0473 1.48828,2.92932 1.48828,2.92932 m 0.73233,-4.86645 1.1103,2.22062 m 0,-0.85045 -0.59059,0.59058 c 0,0 -3.63802,4.39398 -4.41759,5.14993 0,0 -5.17355,5.88226 -7.84301,8.05562 0,0 -3.59077,3.23642 -5.88225,4.03962 0,0 -4.58296,2.22061 -5.90588,-1.15755 l -3.54353,-8.8352 c 0,0 -2.4804696,-6.82719 -2.7639496,-7.48865 m 30.4507096,-1.46466 -0.54334,0.4961 -6.35473,7.39416 c 0,0 -4.51209,4.81919 -5.81138,5.81138 0,0 -3.49628,3.1183 -4.58296,3.47266 0,0 -0.51972,-1.15755 -1.93713,-0.77958 0,0 -1.18118,0.14174 -1.32292,1.37016 0,0 -2.19698,0.28349 -3.18917,-2.19698 l -2.008,-4.89007 -1.03943,-2.69308 c 0,0 -0.16537,-3.07106 -0.44885,-4.06324 l -0.82682,-2.38598" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_manual_stitch="True" + inkscape:connector-curvature="0" + id="path7640" + d="m 10.678392,259.10201 -2.3859696,-0.0709" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0" /> + <path + id="path7862" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 9.0870324,260.78414 -0.75169,-2.43884 m 2.3720196,2.45554 -0.53454,-2.37202 m 2.83973,2.20498 -0.18374,-2.23838 m 3.55802,1.87088 -0.33408,-2.22168 m 5.12823,1.38647 -0.3842,-2.30521 m 6.48129,0.86863 -0.735,-2.6894 m 5.29528,0.93544 c 0,0 -0.85192,-2.50565 -0.86862,-2.43883 m 4.34313,1.01897 -0.7684,-2.77293 m 2.3052,1.68714 -0.53454,-2.05463 m -27.5621696,8.78648 c 0,0 2.2550796,-0.10022 2.5891696,-0.18374 0,0 5.09483,-0.35079 6.84878,-0.7684 0,0 6.8989,-1.45328 8.78649,-2.25509 0,0 6.04697,-1.93771 9.35443,-3.74177 l 0.73499,-0.35079 m -28.8149896,5.82981 c 0,0 4.5936896,0.31739 7.8844496,-0.33409 0,0 5.69618,-0.88533 8.4691,-1.85418 0,0 7.03253,-2.20497 9.53818,-3.52461 l 2.6727,-1.26953" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path8067" + d="m 37.050112,252.73264 -0.56795,-2.43883" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0" /> + <path + id="path8305" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 35.079002,240.83915 0.50113,-3.17383 m -2.20498,2.77292 0.63477,-3.842 m -5.31198,1.87089 1.5368,-3.4411 m -9.12058,1.23613 1.03567,-4.67722 m -7.85104,2.80633 1.90429,-4.27631 m -6.04697,4.67722 -0.9688496,-4.67722 m -3.20723,7.11605 -3.27406,-4.10927 m 2.37202,6.71515 -4.54357996,-1.67044 m 5.41220996,5.27858 -5.37879996,1.03567 m 6.24741996,4.71062 c -0.13363,0.0668 -4.27631,1.50339 -4.27631,1.50339 m 6.88219,1.9043 -4.87767,3.54132 m 6.7819696,-0.96885 c -0.10023,0.13363 -2.7061096,3.0736 -2.7061096,3.0736 m 6.8487796,-3.00679 c -0.0668,0.13364 -1.03567,2.60588 -1.03567,2.60588 m 13.56393,-6.18061 0.63477,3.00679 m 6.98242,-5.47903 0.56794,2.60588 m 0.23386,-2.10475 c 0,0 -4.07586,1.70385 -5.84652,2.13816 0,0 -13.8646,4.2429 -16.37026,4.51017 0,0 -2.73951,0.63477 -3.40768,0.46772 0,0 -2.1715696,-0.0668 -3.9422296,-3.97563 0,0 -2.97337,-6.34765 -3.17382,-9.68852 0,0 -0.83522,-5.67948 1.97111,-8.31877 0,0 2.53906,-3.00678 7.5169496,-2.20497 0,0 6.28084,0.83522 13.46371,3.842 l 9.12057,3.94223 m 0.93544,10.75759 c 0,0 -8.0849,2.43884 -8.81989,2.70611 0,0 -14.03165,4.30972 -17.13866,4.07586 0,0 -3.2072296,-0.10023 -5.2451696,-5.31198 0,0 -3.64154,-7.34992 -3.04019,-12.76212 0,0 -0.33408,-6.84878 8.1517196,-8.71967 0,0 4.51018,-0.53454 13.73098,3.14041 0,0 10.28987,4.00905 11.65963,5.17835" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path8514" + d="m 35.847402,240.00393 c 0,0 0.63476,-2.00452 1.13589,-2.63929 0,0 1.46998,-2.47224 3.34087,-3.34086 0,0 1.33635,-0.50113 2.3052,-0.60136 l 1.36976,0.85192 0.7851,0.51784 0.7684,0.75169 0.63477,1.00226 0.33408,1.26953 0.13364,1.50339 -0.28398,1.48669 -0.7684,1.20271 -0.68488,0.81851 -1.28623,0.91874 -1.23612,0.58466 -1.26953,0.10022 -1.10249,-0.15034 -0.88533,-0.4009 -0.66817,-0.50113 -0.56795,-0.7517 -0.18375,-1.11919 0.0334,-1.01896 0.30068,-0.71829 0.63477,-0.7851 0.60135,-0.3675 0.73499,-0.21716 0.66818,-0.0167 0.75169,0.21716 0.33409,0.25057 0.51783,0.63476" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0" /> + <path + id="path8760" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 40.858702,234.1073 2.57247,-0.65147 m -0.43431,1.63702 1.36975,-1.5535 m -0.0167,2.45554 1.18601,-1.63703 m -0.3842,2.92326 c 0.0668,0 1.87088,-1.26953 1.87088,-1.26953 m -1.73725,2.88985 2.52236,-1.26953 m -2.63929,2.77292 c 0.0668,0.0668 2.6727,-0.18374 2.6727,-0.18374 m -3.29076,1.52009 c 0.0668,0.0835 2.18827,0.735 2.18827,0.735 m -3.42439,0.45101 0.91874,1.57021 m -2.73951,-0.85192 0.0835,1.62032 m -1.77066,-2.13816 -0.81852,1.87089 m -0.51783,-3.27405 -1.31964,1.26953 m 1.5535,-2.17156 -1.921,0.4176 m 2.20497,-1.18601 -1.77066,-0.0501 m 2.2718,-0.50113 -0.98556,-1.31964 m 1.77066,1.18601 -0.20045,-1.87089 m 1.18601,1.72055 0.58465,-1.55351 m 0.0668,2.08805 0.86862,-0.88533 m -0.26727,0.81851 c 0,0 -0.65147,-2.00452 -2.92326,-1.35305 0,0 -1.5368,0.41761 -2.05463,2.22167 0,0 -0.66817,2.43884 1.83748,3.8086 0,0 2.6894,1.25282 5.36209,-0.96886 0,0 1.78737,-1.48668 2.08805,-3.34086 0,0 0.56794,-2.10475 -0.40091,-3.85871 0,0 -0.60135,-1.5368 -2.53906,-2.40542 l -1.35305,-0.3508 m -0.23386,6.33095 c 0,0 -0.88533,-2.08804 -3.10701,-0.88533 0,0 -1.60362,0.95215 -1.23612,2.99008 0,0 0.48442,2.35531 3.40769,2.28849 0,0 2.60587,0 4.29301,-2.82303 0,0 0.96885,-1.68714 0.55124,-3.57473 0,0 -0.0334,-1.5535 -2.05463,-3.02349 0,0 -1.10249,-0.68487 -2.35531,-0.68487 l -1.10249,-0.15034" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path8973" + d="m 41.696062,233.65949 c 0,0 -1.48828,0.23623 -2.59858,1.03943 0,0 -0.70871,0.75595 -0.82683,0.85045" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0" /> + <path + embroider_center_walk_underlay="True" + id="path9213" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 62.768246,233.75398 2.50409,2.92931 m -3.28367,-4.18136 c 0.0945,0.0473 3.87426,2.24424 3.87426,2.24424 m -4.8192,-4.29948 4.70108,1.53552 m -6.07124,-3.94512 4.60658,0.0236 m -8.26823,-2.59859 c 0.0472,-0.0945 4.96094,-2.48047 4.96094,-2.48047 m -8.3391,1.03943 3.56715,-3.63802 m -7.512284,3.23642 0.14174,-4.29948 m -4.34672,6.04762 -1.03944,-4.70108 m -2.29148,6.77995 -2.55134,-2.95294 m 1.48828,6.26023 -3.87425,-1.25204 m 3.23642,3.23642 -3.18917,0.56696 m 2.97656,0.85045 -2.14974,1.53553 m 0.68508,0.49609 c 0,0 -0.66146,-1.96075 -0.54334,-4.44122 0,0 0.21261,-4.37035 2.7167,-7.01618 0,0 3.09468,-4.18136 9.40216,-4.15774 0,0 6.071254,-0.35435 11.244794,5.07906 0,0 2.88207,3.14192 3.70889,6.70907 0,0 0.75596,3.2128 0.28349,4.67746 m -25.726014,-2.008 c 0,0 -0.0472,-0.73233 -0.0709,-0.85045 0,0 -0.59058,-4.55933 1.41741,-7.29966 0,0 2.5041,-4.89007 9.40216,-4.84282 0,0 5.457034,-0.0236 9.614774,4.34672 0,0 2.92932,2.57497 3.9215,7.32329 l 0.0709,0.96857" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path9430" + d="m 63.949416,235.66748 -0.82682,-1.1103 c 0,0 -1.58278,-1.2993 -2.36235,-1.34654 0,0 -0.96857,-0.37798 -1.32292,-0.42522 l -0.68508,-1.65365 -0.51972,-1.79539 -0.18899,-2.07887 0.14174,-2.12611 0.99219,-2.55134 1.25205,-2.17336 2.24423,-2.14974 2.14974,-1.06306 1.37017,-0.21261 1.32291,0.0709 0.87407,0.47247 0.77958,0.8032 0.3071,1.15755 -0.33073,1.1103 -0.51971,0.8977 -0.59059,0.44884 -0.96856,0.14174 -0.87407,-0.0945 -0.66146,-0.33072 -0.4016,-0.47247 -0.37798,-0.59059 -0.16536,-0.47247" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0" /> + <path + id="path9678" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 60.878356,232.95078 -2.6222,-0.66146 m 1.63002,-2.19698 -2.78758,-0.21261 m 2.19699,-2.12612 -2.4096,0.4016 m 3.82701,-3.49628 -3.42541,0.0945 m 3.82701,-2.55135 -3.04743,-0.3071 m 4.58296,-1.91351 -2.57496,-1.03943 m 4.7247,-0.33073 -2.008,-1.93713 m 3.59077,1.70089 -0.4016,-3.04743 m 1.48829,3.09468 1.15755,-2.66946 m -0.51972,3.33092 2.4096,-1.37017 m -2.48047,2.45685 c 0.14174,0.0709 2.43322,0.51972 2.43322,0.51972 m -3.2128,0.16536 c 0,0.0945 0.75596,1.84264 0.75596,1.84264 m -1.63003,-2.008 c -0.0472,0.0945 -0.63783,1.93713 -0.63783,1.93713 m -0.23624,-2.62221 -1.65364,0.85044 m 0.8032,-0.99219 c 0,0 0.3071,-0.0709 0.37797,0.37798 0,0 0.37798,1.84263 2.43323,1.39379 0,0 1.5119,-0.30711 1.58277,-2.07887 0,0 0.0709,-2.38598 -3.14193,-2.05525 0,0 -2.57496,0.68509 -4.25223,2.5041 0,0 -1.96075,1.96075 -2.55134,4.2286 0,0 -0.99218,2.71671 -0.16536,5.45704 0,0 0.54334,1.9135 1.6064,3.4254 m 3.80338,-13.11104 c 0,0 -0.18899,0.18898 -0.0236,0.59058 0,0 0.37799,1.77177 2.26787,1.93713 0,0 1.67727,0.23624 2.83482,-1.37016 0,0 0.89769,-1.25205 0.33073,-2.69308 0,0 -0.73233,-2.4096 -4.06325,-1.91351 0,0 -2.64583,0.44885 -4.81919,2.83482 0,0 -2.5041,2.38598 -3.16555,6.07125 0,0 -0.85045,3.77976 1.37016,7.25242" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm=".33" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path9899" + d="m 59.744436,232.87991 c 0,0 -2.48047,-0.51972 -3.85063,0.14174 0,0 -3.59078,1.48828 -5.362544,3.28367 0,0 -3.33092,-3.47266 -6.14211,-3.02381 0,0 -2.12612,0.11812 -2.71671,0.30711 l 0.37798,-0.99219 0.68508,-1.48828 0.59059,-2.05525 0.0945,-2.22061 -0.35436,-2.12612 -0.96856,-2.12611 -1.5119,-1.81901 -1.53553,-1.48828 -2.05525,-0.87407 -1.9135,-0.16537 -1.77177,0.75595 -0.92131,1.25205 -0.11812,1.2048 0.51972,1.18118 0.94494,0.87407 1.18117,0.0236 1.11031,-0.49609 0.73233,-0.8032 0.4016,-0.82682" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.26458332;stroke-dashoffset:0" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 40.302282,233.4705 2.83482,-0.4961 m -1.6064,-8.81157 2.29148,-1.72451 m -4.016,-0.59059 3.23642,-1.37016 m -5.05543,-0.21262 2.76395,-1.96075 m -4.77195,1.25205 1.86626,-2.66946 m -3.44903,2.97656 0.14174,-2.90569 m -0.96856,3.68527 -2.57497,-0.59059 m 2.97656,1.48828 -2.6222,1.06306 m 3.28366,-0.37798 -1.18117,2.14974 m 2.14974,-2.3151 c 0,0.11812 0.4016,2.05525 0.4016,2.05525 m 0.49609,-2.9057 1.34654,0.70871 m -0.66146,-0.92132 c 0,0 -0.33073,0.0236 -0.42522,0.28349 0,0 -0.33073,1.72451 -2.17336,1.77176 0,0 -1.7009,0 -1.86626,-1.91351 0,0 0.0236,-1.81901 2.22061,-2.38597 0,0 2.26786,-0.49609 4.74833,1.81901 0,0 2.19698,1.72452 2.81119,4.44122 0,0 0.75596,2.74033 -0.0236,4.89007 0,0 -0.35435,1.67727 -1.39379,3.23642 l -0.42522,0.75595 m -3.18916,-12.78032 c 0,0 0.14174,0.30711 -0.0945,0.85045 0,0 -0.80321,1.93713 -2.92932,1.88988 0,0 -2.62221,0 -2.62221,-3.02381 0,0 0.42522,-2.95294 3.87425,-3.1183 0,0 3.11831,-0.0236 5.64602,2.95293 0,0 2.38598,2.45685 2.50409,5.85864 0,0 0.51972,2.52771 -1.29929,6.21298 l -0.28348,0.73233 m -1.01581,-3.26005 c 0.11812,0 3.23642,-0.11811 3.23642,-0.11811 m -2.55134,-2.5041 3.00019,0.4961 m -3.09468,-2.4096 c 0.11811,-0.0236 3.18917,-0.66146 3.18917,-0.66146" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path10151" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path1578" + d="m 41.827552,233.48924 c 0,0 -3.87541,1.5368 -4.94449,4.00904 0,0 -1.9377,3.00678 -1.13589,9.42125 0,0 1.26953,6.88219 2.60588,9.88897 l 0.43732,-2.19496 0.70871,-1.46466 1.48828,-1.27567 1.39379,-0.75595 1.6064,-0.18899 1.5119,0.33073 1.48828,0.77958 1.01581,1.1103 0.44885,1.51191 c 0,0 0.0709,1.25205 0,1.34654 -0.0709,0.0945 -0.54334,1.32292 -0.54334,1.32292 0,0 -0.8977,0.96856 -0.99219,0.96856 -0.0945,0 -1.44103,0.44885 -1.44103,0.44885 l -1.18118,-0.28349 -0.94494,-0.85044 -0.33073,-0.99219 0.16536,-0.96856 0.42523,-0.70871 0.42522,-0.33073" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" /> + <path + id="path1834" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 39.188262,257.82747 -1.31964,-3.47451 m 1.97111,0.86863 -1.13589,-2.7061 m 2.42213,0.71828 -1.01897,-2.43883 m 3.09031,1.40316 -0.90204,-2.35531 m 2.72281,2.53906 c 0,0 -0.0668,-2.65599 -0.11693,-2.57247 m 1.5368,3.22394 c 0,0 1.35305,-2.3052 1.28623,-2.25509 m -0.55124,3.35758 2.17157,-1.28624 m -2.05464,2.65599 c 0.11693,-0.0334 2.55577,-0.4176 2.55577,-0.4176 m -3.17383,1.63702 c 0.0501,0.0668 1.88759,1.35305 1.88759,1.35305 m -3.00678,-0.4009 1.18601,1.83748 m -2.10475,-2.27179 c -0.0334,0.0668 -0.4009,2.50565 -0.3675,2.42213 m -0.25056,-3.00679 c -0.0668,0.0501 -1.63703,1.68714 -1.58691,1.60362 m 1.63702,-2.58917 -1.77066,0.43431 m 2.02123,-1.1526 -0.65147,-0.7684 m 0.7851,0.35079 c 0,0 -1.06908,0.45102 -1.1693,1.82078 0,0 -0.0835,1.13589 1.11919,1.78736 0,0 1.46998,0.80181 2.88985,-0.71829 0,0 1.16931,-1.43657 0.63477,-3.04019 0,0 -0.68488,-2.83974 -3.95893,-2.93996 0,0 -2.10475,-0.13364 -3.67496,1.65373 0,0 -1.63702,1.921 -1.50339,4.69392 m 5.51243,-3.50791 c 0,0 -1.48668,0.56795 -1.46998,2.38872 0,0 0.0167,2.00452 2.40543,2.3219 0,0 2.23838,0.0668 3.25734,-2.10475 0,0 1.18601,-1.85418 -0.4009,-4.34313 0,0 -1.88759,-2.75621 -5.34539,-2.02122 0,0 -2.33861,0.30068 -3.95893,2.78962 0,0 -0.53454,1.05238 -0.68488,1.67044 l -0.13363,1.01896" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path2063" + d="m 38.336342,256.77509 1.83748,4.04246 2.12145,4.35983 2.22168,3.77518 1.35305,2.25509 0.28398,-0.51783 -0.25057,-1.26954 0.13363,-1.68714 0.46773,-1.50339 1.30294,-1.45327 1.40316,-0.80181 1.5368,-0.33409 1.486694,0.10023 1.1693,0.56794 0.71829,0.91874 0.26727,0.65147 0.10023,1.03567 -0.31739,1.05238 -0.86862,1.05237 -1.1359,0.41761 -1.01896,-0.10023 -0.768404,-0.46772 -0.41761,-0.70158 -0.10023,-0.60136" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" /> + <path + id="path2327" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 51.950386,272.59411 -1.169304,1.9377 m -0.66817,-2.12145 -0.3842,1.95441 m -0.81852,-2.58917 -0.23386,2.43883 m -0.71828,-3.15712 -1.21942,1.95441 m 0.55124,-3.4411 c -0.10022,0.0167 -1.95441,1.33635 -1.95441,1.33635 m 1.5368,-2.6894 c -0.0835,-0.0167 -2.07134,0.58465 -2.07134,0.58465 m 3.37428,-2.67269 -2.58917,-0.43432 m 4.05915,-0.85192 -1.38646,-1.5368 m 3.374284,1.31965 -0.18375,-2.03793 m 1.50339,2.60587 c 0,0 1.57021,-2.15486 1.46999,-2.12145 m -0.88533,3.57473 c 0.0835,-0.0167 1.95441,-1.1526 1.95441,-1.1526 m -2.20498,2.07134 c 0.13364,0.0167 1.82078,0.46772 1.82078,0.46772 m -2.55577,0.10023 c 0.0835,0.10023 0.85192,1.72055 0.85192,1.72055 m -1.83748,-1.46999 -0.0167,1.93771 m -0.484424,-2.42213 -1.40317,1.38646 m 0.83522,-1.9377 -1.31964,0.15033 m 0.7851,-0.50113 c 0,0 0.18375,0.61806 0.21716,0.88533 0,0 0.18375,1.10249 1.586914,1.28624 0,0 1.28624,0.0668 2.02123,-1.08578 0,0 0.68488,-0.91874 0.30068,-2.18827 0,0 -0.55125,-2.05464 -3.023494,-1.97112 0,0 -1.77066,0.0668 -2.82304,0.96886 0,0 -1.38645,1.1526 -1.83747,2.62258 0,0 -0.46772,1.67043 0.10022,3.10701 0,0 0.7684,2.00452 2.72281,2.53906 0,0 1.25283,0.33408 2.321914,0.11693 l 0.66817,-0.16705 m -2.438844,-6.11379 c 0,0 -0.18374,0.45102 -0.11693,0.98556 0,0 0.35079,1.50339 1.854194,1.73725 0,0 1.97111,0.11693 2.77292,-1.38646 0,0 0.91874,-1.1526 0.31738,-2.85644 0,0 -0.83522,-2.42213 -3.791894,-2.23838 0,0 -2.3219,0.15034 -3.8587,1.9377 0,0 -1.78736,1.88759 -1.40317,4.71063 0,0 0.51784,2.42213 2.52236,3.60813 0,0 1.35305,0.71829 2.78963,0.61807 h 0.634764" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path2560" + d="m 51.733236,273.66319 1.77066,-2.40543 2.43883,-3.67495 2.85645,-5.06142 1.63702,-3.20723 1.11919,-2.35532 0.53454,-1.18601 -0.45102,-1.75395 -0.95214,-1.62032 -1.5201,-1.62033 -1.80407,-0.4009 -1.85418,0.28397 -1.50339,0.90204 -1.16931,1.08578 -0.93544,1.5535 -0.10022,1.5034 0.26726,1.186 0.90204,0.96886 0.96885,0.51783 h 1.16931 l 1.08578,-0.46772 0.85192,-1.00226 0.23386,-0.91874 -0.20045,-0.90203 -0.40091,-0.56795 -0.65147,-0.41761" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" /> + <path + id="path2824" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 60.987436,257.09248 c 0.0167,-0.15034 1.62033,-3.32417 1.62033,-3.32417 m -2.05464,0.81851 c 0,0 1.5201,-2.38872 1.45328,-2.3386 m -2.38872,0.60135 c 0,0 1.62032,-2.12145 1.5535,-2.07134 m -3.39098,1.21942 c 0,0 0.88533,-2.3219 0.86863,-2.23838 m -3.27405,2.38872 -0.10023,-2.55576 m -1.45328,3.8587 -1.43657,-2.23838 m 0.83521,3.25734 -2.622584,-0.16704 m 2.422134,1.31965 -2.305204,1.186 m 2.772934,-0.10022 c -0.0668,0.13363 -1.60362,1.62032 -1.57021,1.5535 m 2.52235,-0.95215 c -0.0167,0.11693 -0.93544,2.32191 -0.91874,2.23839 m 1.77066,-2.22168 c 0.0668,0.11693 0.41761,2.07134 0.43432,1.98782 m 0.48442,-2.70611 c 0.0835,0.0334 1.5201,1.08578 1.5201,1.08578 m -1.45328,-2.12145 c 0.0835,0.0167 1.77066,-0.0334 1.77066,-0.0334 m -2.02123,-0.8018 1.03567,-1.00227 m -0.93544,0.18375 c 0,0 1.11919,0.50113 1.26953,1.50339 0,0 0.40091,1.46999 -0.90203,2.60588 0,0 -0.93545,0.91874 -2.6894,0.65147 0,0 -1.87089,-0.35079 -2.35532,-2.60588 0,0 -0.21715,-2.27179 1.08579,-3.69166 0,0 1.26953,-2.13815 4.47676,-2.37201 0,0 2.17157,-0.0835 3.62484,1.33634 0,0 1.30294,1.08579 1.60362,2.77292 l 0.13364,1.16931 m -6.46459,-1.08578 c 0,0 1.5368,0.66817 0.96886,2.40542 0,0 -0.45102,1.31965 -1.98782,1.50339 0,0 -1.75396,0.28398 -2.52236,-1.90429 0,0 -0.35079,-1.73725 0.73499,-3.10701 0,0 1.28624,-1.95441 3.77519,-2.05463 0,0 2.40542,-0.0668 3.57473,1.75395 0,0 0.7684,1.03567 0.7684,2.25509 l 0.16704,2.22168" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path1139" + d="m 61.823306,256.38531 c 0,0 0.75595,-1.6064 0.99218,-2.17337 0,0 1.22843,-4.15774 1.55916,-5.5279 0,0 1.03943,-4.44122 1.03943,-6.66183 0,0 0.0945,-2.59859 -0.75595,-4.67746 0,0 -0.0945,-1.93712 -2.55134,-3.49628 0,0 -2.03162,-0.94494 -2.88207,-1.08668 l -0.8032,0.61421 -1.34654,0.70871 -1.03943,0.8032 -0.92132,1.18117 -0.54334,1.48829 c 0,0 -0.0709,1.03943 -0.0945,1.13392 -0.0236,0.0945 0.11812,1.32292 0.11812,1.32292 l 0.61421,1.58278 1.01581,1.18117 1.44103,0.8032 1.34654,0.28348 1.32292,-0.18899 1.37016,-0.51971 1.15756,-1.06306 0.44884,-1.06306 0.0709,-1.03943 -0.3071,-0.96857 -0.47247,-0.68508 -0.61421,-0.44884 -0.82683,-0.23624 -0.7087,0.0472 -0.61421,0.28348 -0.4961,0.35435" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" /> + <path + id="path1411" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 60.122406,233.39963 -2.3151,-0.51972 m 1.48828,0.92132 -2.90569,-0.0945 m 0.33073,1.819 -1.88988,-0.59058 m 1.06306,2.43322 -2.48047,-0.70871 m 2.3151,2.36236 -2.52771,0.23623 m 2.83482,1.46466 -2.29148,0.99219 m 3.54352,0.0236 -1.88988,1.74814 m 3.04743,-1.06306 c 0,0 -1.48828,2.33873 -1.44103,2.24423 m 2.76395,-1.70089 -0.47247,1.93713 m 1.74814,-2.33873 0.61421,1.6064 m 0.54334,-2.43322 c 0.0945,0 1.06306,1.03943 1.06306,1.03943 m -0.51972,-2.33873 1.32292,0.47247 m -1.55915,-1.5119 1.48828,-0.35435 m -2.29148,-0.51972 1.2048,-1.01581 m -1.96075,1.01581 0.0709,-1.55915 m -1.15755,1.70089 -0.44885,-1.22842 m -0.47247,1.03943 c 0,0 1.34654,-1.34654 2.69308,-0.87407 0,0 1.41741,0.30711 1.84263,1.79539 0,0 0.61422,2.008 -1.1103,3.54353 0,0 -1.70089,1.6064 -3.82701,1.08668 0,0 -2.52771,-0.25986 -3.85063,-2.74033 0,0 -1.06306,-2.3151 -0.23624,-4.37035 0,0 0.85045,-2.38597 3.04744,-3.54352 l 1.25204,-0.63784 m 0.42522,5.9295 c 0,0 0.92132,-1.01581 2.03163,-0.8032 0,0 1.58277,0.23624 1.81901,1.55915 0,0 0.56696,1.27567 -0.66146,2.8112 0,0 -1.51191,1.93713 -4.34673,1.08668 0,0 -2.43322,-0.7087 -3.09468,-3.28366 0,0 -0.59059,-2.26786 0.73233,-4.03962 0,0 1.22842,-2.24424 3.89788,-2.52772 l 0.51972,-0.47247" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" + d="m 59.366456,232.85629 c 0,0 3.82701,0.51971 5.05543,3.77976 0,0 0.56697,1.55915 0.8032,2.64583" + id="path1890" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_max_stitch_length_mm="4" + embroider_row_spacing_mm="1.8" + embroider_angle="45" + inkscape:connector-curvature="0" + id="path2132" + d="m 65.225086,238.85666 2.74033,-1.55915 6.56734,-3.35454 c 0,0 9.21316,-3.92151 10.2526,-4.06324 0,0 5.29167,-1.74815 7.70126,-1.08669 0,0 3.92151,0.42523 5.33892,4.11049 0,0 1.37016,5.33892 -0.61421,9.6384 0,0 -1.6064,5.5279 -3.16555,7.51227 0,0 -1.84264,2.78758 -3.30729,3.68527 0,0 -1.84264,0.70871 -3.2128,0.37798 0,0 -11.67002,-2.03162 -13.13468,-2.26786 l -6.14211,-1.32292 -4.01599,-1.13392 c 0,0 1.27566,-5.90588 1.27566,-7.2288 0,0 -0.0473,-2.74033 -0.28348,-3.30729 z" + style="display:inline;fill:#191d1f;stroke:none;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499998, 0.26499998;stroke-dashoffset:0" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499998, 0.26499998;stroke-dashoffset:0" + d="m 65.177836,238.95115 c 0,0 0.66146,4.34673 -0.18898,6.37835 0,0 -0.51972,3.44903 -0.75595,4.016 l 0.33072,0.18899" + id="path2376" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" + sodipodi:nodetypes="cccc" /> + <path + embroider_max_stitch_length_mm="4" + embroider_row_spacing_mm="1.8" + embroider_angle="135" + inkscape:connector-curvature="0" + id="path2132-3" + d="m 65.225086,238.85666 2.74033,-1.55915 6.56734,-3.35454 c 0,0 9.21316,-3.92151 10.2526,-4.06324 0,0 5.29167,-1.74815 7.70126,-1.08669 0,0 3.92151,0.42523 5.33892,4.11049 0,0 1.37016,5.33892 -0.61421,9.6384 0,0 -1.6064,5.5279 -3.16555,7.51227 0,0 -1.84263,2.78758 -3.30729,3.68527 0,0 -1.84264,0.70871 -3.2128,0.37798 0,0 -11.67002,-2.03162 -13.13467,-2.26786 l -6.14212,-1.32292 -4.01599,-1.13392 c 0,0 1.27567,-5.90588 1.27567,-7.2288 0,0 -0.0472,-2.74033 -0.28349,-3.30729 z" + style="display:inline;fill:#191d1f;stroke:none;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499998, 0.26499998;stroke-dashoffset:0" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499998, 0.26499998;stroke-dashoffset:0" + d="m 64.232896,249.3455 2.69309,0.8032 1.5119,-0.28349 1.01581,-0.3071 0.98841,-0.55054 0.7684,-0.80181 0.58465,-0.95214 0.25056,-1.11919 -0.20045,-1.20272 -0.48443,-0.65147 -0.65147,-0.56794 -1.03567,-0.23386 -0.0835,-0.51784 -1.52009,-0.4009 -1.31964,-0.91874 -0.71829,-1.00226 -0.15034,0.35079" + id="path2883" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 70.492216,236.31227 1.75395,-0.98555 m -1.13589,1.1693 1.80407,-1.05237 m -0.43432,1.53679 1.15261,-0.96885 m -0.48443,2.00452 1.60362,-0.8018 m -1.93771,2.57246 c 0.18375,0.0167 2.32191,0.0668 2.32191,0.0668 m -3.62485,1.45328 c 0.10023,0.0167 2.2885,0.75169 2.2885,0.75169 m -3.70837,-0.33408 c 0.0668,0.10022 1.03567,2.03793 1.03567,2.03793 m -2.13815,-2.3052 c 0.0167,0.10023 0.0668,2.6727 0.0668,2.62258 m -1.03568,-3.29075 c -0.0334,0.0835 -0.73499,2.65599 -0.73499,2.52235 m 0.0668,-3.49121 -1.62031,1.921 m 1.05237,-2.92326 -1.63703,1.21942 m 1.05237,-1.75396 0.11694,0.50113 c 0,0 -0.18375,1.75396 1.23611,2.99008 0,0 1.06909,1.01897 2.68941,0.7517 0,0 1.68714,-0.20045 2.57247,-1.48669 0,0 1.13589,-1.31964 0.7851,-2.95667 0,0 -0.16704,-0.88533 -0.90203,-1.50339 0,0 -0.81852,-0.58465 -2.45554,-0.41761 m -5.0113,2.73952 c 0,0 0.73498,2.77292 1.30293,3.107 0,0 0.91874,1.28624 2.82304,1.38646 0,0 1.80407,0.25057 3.50791,-1.30293 0,0 1.63703,-1.65374 1.46998,-3.34087 0,0 0.18375,-1.20272 -0.96885,-2.40543 0,0 -0.81851,-0.81851 -2.15486,-0.68488" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path3157" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" + d="m 71.260616,235.6608 -1.67044,0.81851 -0.25056,0.7517 -0.21716,0.88533 0.13364,0.71829 0.41021,0.63624 0.68508,0.4016 0.79139,0.0236 0.61421,-0.25986 0.42523,-0.38979 0.25985,-0.42522" + id="path3410" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 70.126966,236.36438 -1.06306,0.5079 m 0.87407,0.10631 -1.13393,0.56696 m 1.11031,0.86226 c -0.0473,0.0354 -1.45285,0.51972 -1.45285,0.51972 m 2.008,0 c 0,0 -1.34654,1.22842 -1.29929,1.16936 m 1.77176,-0.77957 c 0,0 -0.48428,1.27567 -0.46066,1.21661 m 1.24024,-1.55915 0.33073,0.96856 m 0.12993,-1.38197 0.66146,0.22442 m -0.25987,-0.34254 c 0,0 -0.0827,0.83863 -0.89769,1.32291 0,0 -0.63783,0.4961 -1.54734,0.17718 0,0 -0.92131,-0.22442 -1.19298,-1.42922 0,0 -0.0827,-0.72052 0.14174,-1.19299 l 0.22442,-0.69689 m 3.16555,1.80719 c 0,0 -0.0827,0.79139 -0.93313,1.19299 0,0 -0.73233,0.43704 -1.48828,-0.0473 0,0 -0.68508,-0.43703 -0.74414,-1.20479 0,0 -0.0591,-0.79139 0.42522,-1.37017 l 0.23624,-0.69689" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path3680" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" + d="m 69.690406,236.49602 2.3052,-1.23612 2.53906,-1.30294 3.17382,-1.36976 3.94223,-1.57021 4.10927,-1.43657 3.34087,-0.7684 1.73725,-0.16704 1.36976,0.0668 0.63476,1.20271 1.00226,1.63703 0.46773,1.97111 -0.53455,2.37201 -1.33634,1.87089 -2.03793,1.06908 -2.10475,0.0668 -1.63703,-0.66817 -1.03567,-1.33635 -0.0167,-1.23612 0.40091,-1.50339 0.98555,-0.78511 0.80181,-0.31738 0.91874,0.0668 0.81851,0.36749 0.45102,0.60136 c 0,0 0.21716,0.53454 0.23386,0.66817 0.0167,0.13364 0.0167,0.66818 -0.0167,0.735 -0.0334,0.0668 -0.25056,0.65147 -0.25056,0.65147 l -0.48443,0.50112" + id="path3937" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 91.472876,229.1127 2.15486,0.13363 m -1.93771,1.25283 1.85418,-0.95215 m -1.60361,1.31965 2.92326,-0.0501 m -2.38872,1.77065 3.04019,-0.21716 m -2.82304,2.45554 2.82304,0.48443 m -4.17609,1.30294 2.40543,1.45328 m -4.2095,-0.58466 1.05238,2.37202 m -2.53906,-2.40542 c -0.0334,0.0835 -0.16705,2.15486 -0.16705,2.15486 m -0.98555,-2.88986 c -0.10023,0.0668 -1.65373,1.5368 -1.65373,1.5368 m 1.40316,-3.20723 -2.18827,0.0167 m 3.34087,-0.95213 -0.20045,-2.17157 m 1.23612,2.22168 c 0,0 1.41987,-1.83748 1.33635,-1.77066 m -0.95215,2.48895 1.95441,-0.33409 m -1.87089,1.5368 0.7684,0.91874 m -0.83522,-0.0167 c 0,0 0.85192,-0.56795 1.06908,-1.33635 0,0 0.48443,-1.00226 -0.46772,-2.20497 0,0 -1.26953,-1.25283 -2.97337,-0.33409 0,0 -1.82078,1.00226 -1.68714,2.97338 0,0 -0.10023,1.82077 1.87089,2.99008 0,0 1.83747,0.96885 4.2262,-0.0501 0,0 2.35531,-1.16931 3.02348,-2.97338 0,0 0.93544,-1.78737 0.56795,-3.59144 0,0 -0.16704,-1.58691 -1.5368,-2.90655 l -0.0334,-0.56795 m -4.12597,7.75082 c 0,0 0.7684,-0.50113 0.80181,-1.16931 0,0 0.31738,-0.88533 -0.53454,-1.78736 0,0 -1.30294,-0.96885 -2.65599,0.18375 0,0 -1.18601,1.08578 -0.63477,2.67269 0,0 0.80181,1.87089 2.93997,1.77066 0,0 2.45554,-0.20045 3.55802,-1.9377 0,0 1.01897,-1.23612 0.98556,-2.53906 0,0 0.10022,-1.58692 -0.60136,-2.58918 0,0 -0.43431,-0.73499 -0.90203,-1.03567 l -0.3842,-1.60361" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path4260" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" + d="m 92.608766,228.77861 1.36976,0.40091 1.26953,0.56794 1.46998,1.26953 1.10249,1.87089 0.36749,2.10475 0.13364,2.20497 -0.26727,2.73951 -0.66818,2.40543 -0.70158,1.87089 -1.06908,2.93996 -1.03567,2.00452 -0.93544,1.50339 -1.10249,1.30294 -1.5702,0.66818 -1.02465,0.18573 -1.54734,0.17718 -1.16937,-0.42522 -1.06305,-0.53153 -0.70871,-0.70871 -0.69689,-0.96856 -0.41342,-1.19299 -0.0118,-1.48828 0.24805,-1.29929 0.79139,-1.4056 0.98037,-0.99219 1.05125,-0.55515 1.14574,-0.14174 0.95675,0.1063 0.75595,0.33073 0.59059,0.64965 0.35436,0.63783 0.12992,0.95676 -0.14174,0.85044 -0.42522,0.72052 -0.51972,0.49609 -0.73233,0.28349 -0.87407,0.0354 -0.61421,-0.22442 -0.43703,-0.30711 -0.28348,-0.35435" + id="path4521" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 92.108646,251.7551 -1.32292,1.85444 m 0.48428,-2.10249 -0.98037,2.01981 m -0.8977,-2.008 c 0,0.0473 0.12993,2.1143 0.12993,2.1143 m -1.54734,-2.23242 c -0.0118,0.0472 -0.37797,2.12612 -0.37797,2.12612 m -1.31111,-3.20099 c -0.0473,0.0473 -0.93313,2.05525 -0.93313,2.05525 m 0.16537,-3.11831 -1.50009,1.58278 m 1.26385,-2.95294 c -0.0472,0.0118 -2.2088,0.22443 -2.2088,0.22443 m 3.15374,-2.4096 c -0.0472,-0.0236 -2.33872,-0.56697 -2.33872,-0.56697 m 3.89788,-0.76776 c 0,0 -1.07487,-1.81901 -1.12212,-1.85445 m 2.62221,1.73633 c 0,0 0.98037,-1.65365 0.9095,-1.6064 m 0.11812,2.57497 c 0.0709,-0.0118 1.67727,-1.06306 1.74814,-1.11031 m -1.79539,2.09068 c 0.0472,0.0591 1.8072,0.14174 1.8072,0.14174 m -2.46865,0.63784 c 0.0354,0.0709 1.3111,1.54734 1.3111,1.54734 m -2.04343,-1.13393 0.0591,1.78357 m -1.06306,-2.09068 c -0.0709,0.0591 -0.63784,1.27567 -0.63784,1.27567 m 0.0472,-1.26386 c 0,0 0.30711,0.98038 1.46466,1.06306 0,0 1.19299,0.10631 1.83082,-0.81501 0,0 0.74414,-0.93313 0.41342,-2.07887 0,0 -0.55516,-1.83082 -2.62221,-1.61821 0,0 -1.13393,0.0827 -2.04344,0.88588 0,0 -1.14574,1.15756 -1.32292,2.06706 0,0 -0.46065,1.58278 -0.14174,2.55134 0,0 0.31892,1.50009 1.48829,2.38598 0,0 1.28748,1.0158 2.94112,0.93312 0,0 1.31111,-0.15355 1.83082,-0.49609 l 1.25205,0.24805 m -5.30348,-5.04362 c 0,0 0.36617,1.07487 1.42922,1.32291 0,0 1.37017,0.30711 2.35055,-0.8032 0,0 0.92131,-0.95675 0.73232,-2.18517 0,0 -0.29529,-2.57496 -3.04743,-2.59859 0,0 -2.38597,-0.21261 -4.016,2.68127 0,0 -0.89769,1.57097 -0.59059,3.62621 0,0 0.12993,1.45285 1.6064,2.9175 0,0 1.38198,1.31111 3.37817,1.31111 0,0 1.19298,-0.0118 1.52371,-0.16537 l 0.79139,0.0945" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path4815" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" + d="m 91.857076,252.83287 -1.08579,0.91874 -1.67043,0.41761 -1.40317,0.0167 -2.00452,-0.41762 -2.87314,-0.46772 -3.47451,-0.60135 -2.38872,-0.43432 -2.20497,-0.35079 -2.88986,-0.61806 -2.88985,-0.56794 -1.65373,-0.50114 1.43658,-0.45101 1.58691,-0.70159 0.98556,-1.03566 0.4768,-0.83116 0.23623,-1.004 -0.16536,-1.14574 -0.51972,-0.8032 -0.95675,-0.63783 -0.82682,-0.0945 -0.85045,0.22442 -0.63783,0.53153 -0.2953,0.51972 -0.16536,0.51972 0.0591,0.6024 0.27167,0.54334 0.47247,0.4016" + id="path5080" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 67.457506,249.81797 1.58278,0.43703 m -0.93313,-0.86225 1.83082,0.48428 m -0.37797,-1.27567 c 0.0354,0.0472 0.9095,0.96856 0.9095,0.96856 m 0.0945,-1.9135 c 0.0591,0.0354 0.81501,1.24023 0.81501,1.24023 m -0.81501,-4.67746 c 0,0 1.14574,-0.83863 1.07487,-0.80319 m -2.03163,0.61421 0.23624,-1.32292 m -1.08668,1.6064 -0.82682,-0.83864 m 0.38978,1.48829 -1.24023,-0.15356 m 1.29929,0.8032 -1.27567,0.77958 m 1.46466,-0.0945 c -0.0236,0.0472 -0.47247,1.004 -0.46066,0.95675 m 0.56697,-0.35435 c 0,0 -0.76777,-0.36617 -0.88589,-1.18118 0,0 -0.1063,-1.1103 0.77958,-1.70089 0,0 1.02762,-0.73233 2.05525,-0.15355 0,0 0.93313,0.43703 1.09849,1.52371 0,0 0.28348,1.0985 -0.38979,2.25605 0,0 -0.74414,1.31111 -2.13793,1.75995 0,0 -0.49609,0.16537 -0.94494,0.21261 l -0.95675,0.64965 m 1.33473,-3.2128 c 0,0 -0.87407,-0.22443 -1.08668,-1.39379 0,0 -0.0827,-0.88588 0.6024,-1.61821 0,0 0.61421,-0.56697 1.2048,-0.64965 0,0 0.6024,-0.0827 0.85044,0 0,0 1.12212,0.15356 1.68908,1.24024 0,0 0.62603,1.28748 0.0827,2.59859 0,0 -0.36616,0.89769 -0.88588,1.45284 0,0 -0.55515,0.74414 -2.09067,1.28748 l -0.6969,0.55515" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path5372" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" + d="m 67.886336,250.39404 -3.64155,-1.00227 c 0,0 0.53454,-2.27179 0.56795,-2.57246 0,0 1.20271,-5.21176 0.4009,-7.45014" + id="path5646" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 64.870736,247.59736 -0.56697,3.1183 m 2.38598,-2.88207 -0.68508,3.56715 m 7.27604,-2.07887 -0.63784,3.40179 m 12.11887,-0.82682 -0.73233,3.56715 m 5.17355,-3.44904 c 0,0.0945 -0.47247,3.85064 -0.47247,3.85064 m 1.98437,-4.27586 1.58278,3.28367 m -0.73233,-4.29948 3.04743,1.27567 m -2.88207,-2.45684 c 0.14174,0.0709 3.26005,1.55915 3.26005,1.55915 m -1.7009,-2.12612 2.17337,1.03944 m 0.18898,-6.70908 2.71671,1.2048 m -2.64583,-6.47285 3.9215,1.79539 m -3.1183,-5.57515 c 0.11811,-0.0236 3.21279,-0.28348 3.21279,-0.28348 m -4.65383,-2.17336 3.26005,-1.84264 m -5.26805,0.82683 0.92132,-2.71671 m -2.50409,3.33092 0.3071,-3.80339 m -1.6064,3.33092 0.0945,-3.23642 m -3.56715,3.23642 0.73233,-3.04743 m -6.7327,5.38615 -0.21262,-3.28366 m -6.18936,6.35472 -1.13392,-3.77976 m -6.85082,7.32329 -0.85045,-2.92932 m -0.54334,1.51191 0.8032,-0.37798 4.20499,-2.24423 4.03961,-2.05525 3.09469,-1.44103 3.00018,-1.2993 2.19699,-0.89769 2.24423,-0.77957 c 0,0 4.06325,-1.58278 7.11068,-1.34654 0,0 3.44903,0.42522 5.45703,2.78757 0,0 1.93713,1.77176 1.81901,5.66964 0,0 -0.0236,6.77995 -4.27585,13.63077 0,0 -1.51191,3.99237 -5.07906,4.8192 0,0 -4.65383,-0.18899 -6.56734,-0.70871 0,0 -18.23735,-3.80338 -18.96968,-4.016 m 1.2048,-10.84319 1.25205,-0.49609 c 0,0 6.26023,-3.18918 6.68545,-3.40179 0,0 7.74852,-3.59077 8.85882,-3.82701 0,0 5.90588,-2.3151 8.10287,-2.03162 0,0 0.56696,1.15755 1.58277,0.94494 0,0 0.92132,-0.21261 1.74814,-0.8032 0,0 3.16555,1.01581 3.94513,3.94513 0,0 0.92131,2.62221 -0.16537,6.89806 0,0 -0.8032,4.1105 -3.37816,8.76433 0,0 -0.75595,-0.14174 -1.13393,0.47247 0,0 -0.4016,0.61421 -0.0473,1.15755 0,0 -0.96856,2.008 -3.09468,2.7167 0,0 -2.008,0.16537 -5.26804,-0.49609 0,0 -9.52028,-1.65365 -10.44159,-2.008 0,0 -5.5279,-1.18118 -6.26023,-1.44103 0,0 -1.2993,-0.0709 -2.1025,-1.03944 l -0.92131,-0.51972" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path5963" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" + d="m 64.311606,248.79042 c 0,0 -0.30068,1.90429 -0.63477,2.73951" + id="path6240" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_row_spacing_mm="1.8" + embroider_max_stitch_length_mm="4" + embroider_angle="45" + inkscape:connector-curvature="0" + id="path6518" + d="m 63.743656,251.29607 2.3052,1.06908 3.34087,1.1693 3.30746,0.90203 4.2429,1.06908 4.14268,0.70159 4.24291,0.23386 3.37427,0.0334 2.3052,-0.0334 -1.43657,4.20949 -2.07134,4.94449 -1.73725,4.07586 -1.1693,2.53906 -0.70159,1.03567 -0.96885,0.63476 -1.30294,0.0334 -2.3052,-0.43431 -1.83748,-0.83522 -2.83973,-1.90429 -3.0402,-2.57247 -3.17382,-3.20724 -2.80633,-3.14041 -2.43883,-2.6727 -1.67044,-2.00452 0.7684,-1.73725 1.03567,-2.47224 z" + style="display:inline;fill:#191d1f;stroke:none;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499998, 0.26499998;stroke-dashoffset:0" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499998, 0.26499998;stroke-dashoffset:0" + d="m 63.810476,251.26266 -0.70158,2.10475 -1.10249,2.63928 -0.46772,1.06908" + id="path6798" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_row_spacing_mm="1.8" + embroider_max_stitch_length_mm="4" + embroider_angle="135" + inkscape:connector-curvature="0" + id="path6518-6" + d="m 63.743656,251.29607 2.3052,1.06908 3.34087,1.1693 3.30746,0.90203 4.2429,1.06909 4.14268,0.70158 4.24291,0.23386 3.37427,0.0334 2.3052,-0.0334 -1.43657,4.20949 -2.07134,4.94449 -1.73725,4.07586 -1.1693,2.53906 -0.70159,1.03567 -0.96885,0.63476 -1.30294,0.0334 -2.3052,-0.43431 -1.83748,-0.83522 -2.83973,-1.90429 -3.0402,-2.57247 -3.17382,-3.20724 -2.80633,-3.14041 -2.43883,-2.6727 -1.67044,-2.00452 0.7684,-1.73725 1.03567,-2.47224 z" + style="display:inline;fill:#191d1f;stroke:none;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499998, 0.26499998;stroke-dashoffset:0" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499998, 0.26499998;stroke-dashoffset:0" + d="m 61.505276,257.14259 c 0,0 0.80181,-1.80407 0.96885,-2.20497 0,0 1.10249,-2.97338 1.23612,-3.54132 l 1.70385,0.63476 1.57021,0.66817 2.47224,0.80181 2.63929,0.7684 2.83973,0.73499 3.07361,0.63477 2.83973,0.50113 2.70611,0.20045 2.33861,0.10023 1.36975,0.46772 0.90204,1.06908 0.73499,1.23612 -0.16705,1.83748 -0.43431,0.93544 -0.66817,0.55125 -1.03567,0.85192 -1.06908,0.3842 -1.06908,-0.0501 -1.13589,-0.46773 -0.50113,-0.7851 -0.20046,-1.00226 0.3675,-1.01897 0.3842,-0.4176 0.61806,-0.33409 0.51783,-0.10023 0.40091,0.0501 0.4009,0.18375 0.31738,0.26727 0.20046,0.3675" + id="path7377" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 86.127486,256.62476 2.15486,0.0668 m -2.25509,0.4343 c 0.0668,0 2.3219,-0.0167 2.3219,-0.0167 m -1.41987,1.05237 1.8876,-0.61806 m -1.03567,1.78737 1.62032,-0.85192 m -1.80407,1.85418 1.62032,-0.40091 m -2.07134,1.5201 c 0.10023,0.0334 1.97111,0.7684 1.97111,0.7684 m -2.82303,0.11693 c 0,0 1.01896,1.73725 1.00226,1.67043 m -2.18827,-1.23612 c 0,0 0.11693,1.9377 0.10023,1.85418 m -1.1359,-2.07134 c 0,0 -0.53454,1.73726 -0.53454,1.67044 m -0.0501,-2.40543 -1.1526,1.08578 m 1.1526,-1.87088 -1.5368,0.15034 m 2.07134,-0.70159 c 0,-0.0835 -1.10249,-1.20271 -1.10249,-1.20271 m 1.80407,1.18601 0.40091,-1.77066 m 0.20045,1.9043 0.96885,-0.83522 m -0.26727,0.95215 c 0,0 -0.30068,-1.63703 -2.08804,-1.16931 0,0 -1.1526,0.31738 -1.45328,1.62032 0,0 -0.33409,1.43658 0.86862,2.35531 0,0 1.28624,0.88534 2.75622,0.3675 0,0 1.36976,-0.46772 2.02123,-1.36976 0,0 1.41987,-1.72054 0.70158,-4.02574 0,0 -0.33409,-0.86863 -0.98556,-1.38646 l -0.0167,-0.63477 m -2.02123,4.27631 c 0,0 -0.4176,-1.35305 -1.78736,-0.88533 0,0 -1.1526,0.3675 -1.1693,1.70385 0,0 -0.0501,1.23612 1.40316,1.80407 0,0 1.82077,0.55124 3.25735,-1.03567 0,0 0.95215,-1.01897 0.88533,-2.12145 0,0 0.16704,-0.95215 -0.46772,-1.93771 0,0 -0.71829,-1.03567 -1.50339,-1.13589 l -0.0167,-0.70159" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path7693" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" + d="m 86.996106,256.45771 h 1.30294 1.60362 l 1.10248,-0.0167 -0.96885,2.85644 -1.58691,3.97564 -1.1693,2.83974 -0.90204,2.15486 -0.70158,1.41987 -0.3842,-1.10249 -0.31739,-1.18601 -0.86862,-1.11919 -1.36976,-0.65147 -1.20271,-0.0835 -1.1693,0.4009 -0.91874,0.7517 -0.3675,0.88533 -0.13363,0.7684 0.31738,0.85192 0.65147,0.56795 0.73499,0.13363 0.80181,-0.18375 0.45102,-0.38419 0.35079,-0.55125 0.0668,-0.55124" + id="path7982" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 84.757726,270.84015 1.35305,-2.62258 m -1.68714,1.36976 1.60362,-2.3052 m -2.03793,0.90203 1.5535,-1.63702 m -2.62258,0.20045 1.43658,-1.70385 m -2.53906,1.45328 0.71828,-2.10474 m -1.67043,2.23838 -1.08579,-1.5368 m 0.50113,2.23838 -2.22167,0.0167 m 2.10474,1.1025 -1.62032,1.26953 m 2.15486,-0.83521 c 0.0167,0.10022 -0.23386,2.05463 -0.21715,1.9544 m 0.95214,-2.15486 c 0.0668,0.10023 0.93545,1.31965 0.93545,1.31965 m -0.60136,-1.83748 1.28624,-0.15034 m -0.81852,-0.4176 c 0,0 0.68488,1.1526 -0.50113,2.08804 0,0 -0.75169,0.63476 -1.75395,0.25057 0,0 -0.96885,-0.26728 -1.21942,-1.55351 0,0 -0.13364,-1.5368 1.1526,-2.50565 0,0 1.65373,-1.23612 3.54132,-0.35079 0,0 1.80407,0.61806 2.22168,2.80633 l 0.15034,1.1526 m -3.77519,-1.80407 c 0,0 0.58466,1.31964 -0.90203,1.921 0,0 -1.45328,0.48442 -1.88759,-1.25283 0,0 -0.21716,-1.28623 1.31964,-2.15486 0,0 1.921,-0.96885 3.4578,0.63477 0,0 0.91874,0.56794 0.90204,2.50565 l 0.16704,1.72055" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path8296" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" + d="m 85.635806,269.87433 -0.75596,1.70089 -0.47247,0.94494 -0.54334,0.73233 -0.89769,0.61421 -1.32292,0.0473 -1.48828,-0.23623 -1.81901,-0.61421 -1.48828,-0.82682 -2.24423,-1.48828 -1.98438,-1.6064 -1.70089,-1.63003 -1.55915,-1.55915 -1.65365,-1.77176 -1.63002,-1.79539 -1.53553,-1.67727 -0.82682,-0.87407 0.0472,-1.46465 0.21261,-1.6064 0.94494,-1.58278 1.51191,-0.92132 1.67726,-0.37797 1.48828,0.28348 0.94495,0.63783 0.73233,1.03944 0.21261,1.39379 -0.23624,0.92132 -0.92132,1.0158 -1.22842,0.33073 -0.74414,-0.15355 -0.63783,-0.4016 -0.35436,-0.74414 -0.0118,-0.82682 0.21261,-0.49609 0.2953,-0.43704 0.35435,-0.24805" + id="path8589" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 64.894356,260.66116 -1.9135,-2.16155 m 1.7127,1.06306 -1.67727,-1.59459 m 1.59459,0.24805 -1.45285,-1.02763 m 1.88989,-0.37797 -1.53553,-1.004 m 2.44503,-0.17718 -1.18117,-1.39378 m 2.59858,0.62602 -0.6024,-1.72452 m 1.84263,1.53553 c 0,0 0.16537,-1.55915 0.15356,-1.5119 m 1.05125,2.09067 c 0,0 1.18117,-1.4174 1.12211,-1.35835 m -0.41341,2.43322 1.52372,-0.88588 m -1.48828,2.05525 1.61821,-0.15355 m -2.4096,1.01581 c 0.0472,0.0354 1.13393,1.28748 1.13393,1.28748 m -2.06706,-1.18118 c 0,0 0.15355,1.83082 0.17718,1.77177 m -0.90951,-2.31511 c 0,0 -0.99219,1.4056 -0.95675,1.34654 m 0.93313,-2.19698 -1.47647,0.42522 m 1.87807,-1.004 -0.59059,-0.76776 m 0.67327,0.41341 c 0,0 -0.83864,0.3071 -1.01581,1.1103 0,0 -0.31892,0.96857 0.53153,1.66546 0,0 0.95675,0.68508 1.92531,0.0827 0,0 1.05125,-0.47247 1.16937,-1.77176 0,0 0.17717,-1.07487 -0.79139,-2.07887 0,0 -1.3111,-1.19299 -2.84664,-0.79139 0,0 -1.37016,0.17718 -2.07886,1.02762 0,0 -0.95676,0.83864 -1.13393,1.94895 0,0 -0.31892,1.1103 0.21261,2.35054 l 0.15355,1.15755 m 3.79158,-4.86645 c 0,0 -0.74414,0.21261 -1.0985,0.88588 0,0 -0.63783,0.98038 0.16537,2.13793 0,0 0.85045,1.01581 2.19698,0.66146 0,0 1.34655,-0.38979 1.79539,-1.57096 0,0 0.63784,-1.31111 0.0236,-2.55134 0,0 -0.24804,-0.51972 -0.60239,-0.86226 0,0 -1.37017,-1.2048 -3.55534,-1.13393 0,0 -1.6064,0.22443 -2.63402,1.32292 0,0 -1.39379,1.19299 -1.46466,3.34273 l 0.15355,1.27567" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path8915" /> + <path + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" + d="m 64.138406,260.24775 -1.44103,-1.65365 -1.18118,-1.47647" + id="path9212" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="1.6" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 92.699236,256.43255 -3.37817,-0.23623 m 2.71671,1.46466 -3.44903,-0.47248 m 2.69308,2.69308 -3.49628,-0.85044 m 2.55134,3.35454 -2.71671,-0.92132 m 0.96857,4.89007 -2.4096,-1.08668 m 0.49609,5.69326 -2.3151,-1.34654 m 0.82682,3.66164 -1.93713,-2.85844 m -0.0709,4.39397 -0.61421,-3.85063 m -1.70089,3.96875 1.01581,-3.70889 m -2.76395,3.49628 1.29929,-4.3231 m -2.52772,3.59077 0.4961,-2.88207 m -2.55134,1.74814 0.73233,-2.88207 m -5.48066,-0.35435 1.44104,-3.44903 m -5.10268,0.25986 1.84263,-3.33092 m -5.59877,-1.34654 1.67727,-2.90569 m -3.99237,-0.35435 1.06305,-2.38598 m -0.62602,0.33073 0.41341,0.48428 3.00019,3.53172 2.52772,2.82301 1.67727,1.75995 c 0,0 2.16155,2.25604 2.43322,2.4096 0,0 1.47647,1.35835 1.63002,1.50009 0,0 3.08287,2.65765 4.8192,3.42541 0,0 0.77957,-1.21661 2.01981,-0.96856 0,0 1.14574,0.0945 1.24023,1.27567 0,0 2.13793,-0.11812 3.02381,-1.96075 l 1.41741,-3.02382 1.73633,-4.13411 0.42522,-1.03943 c 0,0 0.93313,-1.77177 0.6969,-4.00419 0,0 0.33577,-1.41894 1.10417,-2.67177 m -28.661,1.70321 0.37797,0.57877 c 0,0 2.36236,2.83482 2.76396,3.24823 l 2.69308,3.00019 c 0,0 2.06706,2.19699 2.26785,2.35054 0,0 3.2128,3.20099 3.89788,3.62621 0,0 3.53172,3.012 5.53972,3.56715 0,0 2.63402,0.94494 4.14592,0.42522 0,0 1.2993,-0.27167 1.97257,-1.46465 l 1.24023,-2.83483 1.53553,-3.55533 1.54734,-3.70889 1.41741,-3.35454 1.02762,-2.49228 0.48428,-1.38198" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path9544" /> + <path + id="path9867" + style="display:inline;fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 64.114786,252.9599 0.75595,-2.29149 m 1.03943,3.18918 1.2993,-2.45685 m 1.5119,3.28367 1.01581,-2.24423 m 2.14974,3.33091 1.15756,-2.55134 m 2.17336,3.42541 1.13393,-2.66946 m 2.33872,3.16556 0.54334,-2.92932 m 3.92151,3.47266 -0.11812,-2.76395 m 2.66946,3.00018 0.35435,-2.88207 m 3.28367,2.74033 0.25986,-2.52772 m 1.29929,2.71671 0.23623,-2.78757 m 0.54334,1.81901 -2.33872,0.0709 c 0,0 -5.36254,0.11811 -7.37054,-0.23624 0,0 -6.96893,-0.77957 -10.93768,-2.19698 0,0 -5.55153,-1.6064 -6.80357,-2.31511 l -0.73233,-0.35435 m 28.70256,3.56715 c 0,0 -2.52771,0.49609 -3.68527,0.4016 0,0 -5.45703,0.0473 -7.39415,-0.35435 0,0 -5.17355,-0.73233 -6.33111,-1.15756 0,0 -6.40197,-1.63002 -7.60677,-2.26785 0,0 -2.45684,-0.77958 -3.28367,-1.39379" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_running_stitch_length_mm="1.6" + inkscape:connector-curvature="0" + id="path10189" + d="m 63.713186,251.40074 c 0,0 0.49609,-2.03162 0.66146,-2.69308" + style="fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26499999, 0.26499999;stroke-dashoffset:0" /> + <path + id="path10503" + style="fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 62.957236,244.07745 4.06324,0.14174 m -4.51209,1.18118 c 0.0945,0.0236 4.53571,0.54334 4.53571,0.54334 m -4.25223,1.93713 3.14193,0.42522 m -0.63784,0.75596 c 0,0 1.03944,-3.30729 0.92132,-5.03181 m -2.97656,4.7247 c 0,0 0.85044,-2.90569 0.51971,-4.7247" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 62.579256,248.61317 3.49628,1.01581 m -4.48847,0.33073 4.18136,0.99219 m -4.41759,0.89769 3.61439,1.37016 m -4.67745,0.92132 4.01599,1.1103 m -5.76413,3.35454 3.80338,1.74815 m -7.01618,3.827 c 0.11812,0.0945 4.60658,0.87407 4.60658,0.87407 m -6.94531,2.5041 c 0.0709,0.0945 4.25223,1.03943 4.25223,1.03943 m -5.78776,2.05525 c 0.0473,0.11811 3.26005,2.48046 3.26005,2.48046 m -4.512094,-0.28348 c 0.0945,0.16537 1.393794,3.70889 1.393794,3.70889 m -2.078874,-3.1183 0.0709,4.84282 m -2.07887,-8.03199 -1.93713,3.70889 m -1.13393,-7.86663 c 0,0 -1.72451,3.82701 -1.67727,3.73251 m -0.61421,-9.80375 -2.36235,3.94512 m 0.61421,-7.39416 -2.36235,3.96875 m 0.96856,-7.74851 c 0,0 -3.28366,3.18917 -3.23642,3.09468 m 2.48047,-6.00037 c -0.0945,0.0945 -2.88207,2.95294 -2.88207,2.95294 m 2.48047,-6.09487 -3.75614,2.22061 m 3.35454,-4.7247 -3.75614,0.51972 m 3.35454,-2.4096 -3.35454,0.33073 m 4.08687,-2.64584 -3.23642,-1.29929 m 3.56715,-0.44885 -2.26786,-1.65364 m 3.89788,0.68508 -3.40178,-1.81901 m 3.49628,0.59059 -2.69308,-1.91351 m 3.09468,1.32292 -2.03163,-2.22061 m 4.25224,1.77176 -2.03163,-3.47265 m 5.14993,3.63802 -0.68508,-3.94513 m 3.47265,5.43341 c 0.0236,-0.0945 0.47247,-4.25223 0.47247,-4.25223 m 1.65365,5.31529 0.37798,-3.51991 m 2.385974,1.77177 c 0,0 -0.23623,-3.89788 -0.28348,-3.80339 m 2.74033,2.74033 -0.59059,-3.59077 m 3.66164,4.3231 -0.0236,-4.20499 m 1.7954,4.60659 1.74814,-4.03962 m -1.2993,4.65383 3.99238,-2.52772 m -2.1025,3.70889 3.11831,-1.72451 m -2.8112,3.59077 3.9215,-1.86626 m -3.70889,5.2208 3.80339,-0.0945 m -1.03944,1.84264 c 0,0 0.18899,-2.52772 0.0945,-3.14193 0,0 -0.23624,-2.48047 -0.70871,-3.68527 0,0 -0.85044,-2.57496 -2.48046,-4.29948 0,0 -3.26005,-2.33872 -7.06344,-1.25204 0,0 -3.56715,0.92132 -5.386164,3.37816 0,0 -2.50409,-3.87426 -8.05562,-3.09468 0,0 -2.2206,0.16537 -5.05543,2.36235 0,0 -0.54334,0.28348 -0.66145,0.70871 0,0 -0.16537,0.51971 0.0236,0.92131 0,0 -2.07887,2.55134 -2.24423,6.52009 0,0 -0.21262,4.9137 1.06305,8.17374 0,0 1.03944,3.59077 2.48047,6.52009 0,0 2.43322,5.45703 3.54353,7.25242 0,0 4.03962,7.81938 7.86663,11.90625 0,0 2.385974,-2.69308 4.086874,-5.26805 0,0 6.02399,-9.0478 7.98474,-13.72526 0,0 3.33092,-6.96893 3.89788,-9.87463 m -1.72451,-3.30729 c 0,0 -0.0236,-0.7087 -0.0709,-0.94494 0,0 1.08668,-0.99219 1.06306,-2.57496 0,0 0.18899,-2.24423 -1.06306,-4.91369 0,0 -0.92132,0.42522 -1.44104,-0.37798 0,0 -0.47247,-0.56696 0,-1.48828 0,0 -2.43322,-1.63002 -4.81919,-1.27567 0,0 -2.92932,-0.0709 -6.921694,3.56715 0,0 -2.83482,-3.04743 -6.66183,-3.18917 0,0 -1.53553,0.11812 -2.1025,0.3071 0,0 -2.33872,0.75596 -2.81119,1.39379 0,0 0.56696,0.56696 -0.16537,1.58278 0,0 -0.37797,0.63783 -1.34654,0.4016 0,0 -2.76395,5.38616 -0.42522,7.46503 0,0 -0.51972,3.26004 1.15755,7.34691 0,0 -0.59059,0.59059 -0.7087,1.06306 0,0 1.44103,4.27585 2.3151,5.76413 0,0 3.35454,7.41779 5.71689,10.84319 0,0 3.1183,4.70108 4.20498,5.59878 0,0 2.008004,-2.5041 2.456854,-3.09468 0,0 5.43341,-7.79576 6.96894,-11.67002 0,0 3.23642,-6.85082 3.80338,-8.26823 0,0 -0.0945,-0.49609 -0.66146,-1.03943 0,0 1.01582,-2.69308 1.13393,-3.47266" + style="fill:none;stroke:#191d1f;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path10886" /> + </g> +</svg> diff --git a/images/examples/Fill Stitch Starting and Ending Point.svg b/images/examples/Fill Stitch Starting and Ending Point.svg new file mode 100644 index 00000000..d11a24ae --- /dev/null +++ b/images/examples/Fill Stitch Starting and Ending Point.svg @@ -0,0 +1,215 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<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="4in" + height="4in" + viewBox="0 0 384 384" + id="svg8375" + version="1.1" + inkscape:version="0.92.3 (unknown)" + sodipodi:docname="fill_markers.svg"> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.979899" + inkscape:cx="169.91776" + inkscape:cy="93.125071" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="in" + inkscape:window-width="1366" + inkscape:window-height="705" + inkscape:window-x="-4" + inkscape:window-y="-4" + inkscape:window-maximized="1" + inkscape:snap-global="false" /> + <defs + id="defs8377"> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker14673" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" + id="path14671" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="Arrow2Mend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" + id="path14422" /> + </marker> + <symbol + id="inkstitch_fill_start"> + <title + id="title9432-5">Fill stitch ending point</title> + <circle + inkscape:label="outline" + style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06501234;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19503705, 3.19503705;stroke-dashoffset:0;stroke-opacity:1" + id="circle13166-6-3" + cx="85.223907" + cy="106.13256" + r="9.2465534" /> + <path + inkscape:connector-curvature="0" + id="path4183-5" + d="m 91.796747,106.13612 -10.4514,6.03412 v -12.06823 z" + inkscape:transform-center-y="3.0183984e-06" + inkscape:transform-center-x="-1.7419043" + style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.74180555;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </symbol> + <symbol + id="inkstitch_fill_end"> + <title + id="title9427">Fill stitch starting point</title> + <circle + inkscape:label="outline" + style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06501234;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19503705, 3.19503705;stroke-dashoffset:0;stroke-opacity:1" + id="circle13166" + cx="47.235394" + cy="105.91732" + r="9.2465534" /> + <path + inkscape:connector-curvature="0" + id="rect5371-2" + d="m 42.691395,101.26765 h 9.140878 v 9.14087 h -9.140878 z" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.60622311;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4.81866985, 4.81866985;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" /> + </symbol> + </defs> + <metadata + id="metadata8380"> + <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></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-52.362271)"> + <path + embroider_fill_underlay_inset_mm="0.3" + embroider_fill_underlay="True" + sodipodi:nodetypes="cccccccccccccccccccccccccccc" + inkscape:connector-curvature="0" + d="m 178.7757,288.69033 0.8157,-41.88278 -35.86371,-21.64781 -36.6794,20.23498 -0.81569,41.88278 35.8637,21.64781 z m 48.50895,-81.46949 0.37532,-41.88904 -36.08932,-21.26956 -36.46463,20.61949 -0.37532,41.88904 36.08931,21.26956 z m 47.09578,82.14513 0.0611,-41.89068 -36.24783,-20.99829 -36.30896,20.8924 -0.0611,41.89068 36.24783,20.99828 z M 124.8814,351.39231 59.294526,237.79251 124.8814,124.19271 h 131.17374 l 65.58687,113.5998 -65.58687,113.5998 z" + style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.35955402;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path9699-3-7" /> + <flowRoot + xml:space="preserve" + id="flowRoot14860" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.66666603px;line-height:100%;font-family:Digitalt;-inkscape-font-specification:'Digitalt Bold';text-align:start;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75590551;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" + transform="translate(0,52.362271)"><flowRegion + id="flowRegion14862"><rect + id="rect14864" + width="144.45178" + height="68.690369" + x="374.7666" + y="150.14969" /></flowRegion><flowPara + id="flowPara14866" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.66666603px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:sans-serif">fill-stitch starting point</flowPara></flowRoot> <flowRoot + transform="translate(-492,52.362269)" + xml:space="preserve" + id="flowRoot14860-2" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.66666603px;line-height:100%;font-family:Digitalt;-inkscape-font-specification:'Digitalt Bold';text-align:start;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75590551;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"><flowRegion + id="flowRegion14862-6"><rect + id="rect14864-5" + width="144.45178" + height="68.690369" + x="374.7666" + y="150.14969" /></flowRegion><flowPara + id="flowPara14866-2" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.66666603px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:sans-serif">fill-stitch ending point</flowPara></flowRoot> <flowRoot + transform="translate(-360,212.36227)" + xml:space="preserve" + id="flowRoot14860-6" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.66666603px;line-height:100%;font-family:Digitalt;-inkscape-font-specification:'Digitalt Bold';text-align:start;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75590551;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"><flowRegion + id="flowRegion14862-5"><rect + id="rect14864-8" + width="462.14478" + height="569.72601" + x="374.7666" + y="150.14969" /></flowRegion><flowPara + id="flowPara14866-7" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333333px;line-height:72.70000064%;font-family:sans-serif;-inkscape-font-specification:sans-serif">The start and end markers above tell Ink/Stitch where to start and end the fill stitch.</flowPara><flowPara + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333333px;line-height:72.70000064%;font-family:sans-serif;-inkscape-font-specification:sans-serif" + id="flowPara14904" /><flowPara + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333333px;line-height:72.70000064%;font-family:sans-serif;-inkscape-font-specification:sans-serif" + id="flowPara14906">To use the markers, first install them using the Ink/Stitch "Install add-ons for Inkscape" extension and restart Inkscape.</flowPara><flowPara + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333333px;line-height:72.70000064%;font-family:sans-serif;-inkscape-font-specification:sans-serif" + id="flowPara14908" /><flowPara + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333333px;line-height:72.70000064%;font-family:sans-serif;-inkscape-font-specification:sans-serif" + id="flowPara14910">Access the markers using the Symbols tool (Object -> Symbols). Select "Ink/Stitch Comm ands" as the symbol set. Drag a marker out onto your canvas (doesn't matter where). Use the Flow-Chart Tool ("create diagram connectors") to draw a connection between the marker and the fill object to which it should apply. This will add a connector path. Adding an arrow on that path as in the above example is not necessary.</flowPara><flowPara + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333333px;line-height:72.70000064%;font-family:sans-serif;-inkscape-font-specification:sans-serif" + id="flowPara14912" /><flowPara + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333333px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:sans-serif" + id="flowPara14914"><flowSpan + style="line-height:72.70000064%" + id="flowSpan14916">Moving the marker will change the connector's position to match. You can also move the endpoints of the connector manually. The </flowSpan>connector's endpoint nearest to the fill object is the point at which stitching will start or end.</flowPara></flowRoot> </g> + <path + inkscape:connection-end="#path9699-3-7" + inkscape:connection-start="#use14355" + inkscape:connector-curvature="0" + inkscape:connector-type="polyline" + id="path14391" + d="M 356.92084,186.01367 321.3771,185.88908" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + <use + transform="translate(270.34979,79.877542)" + height="100%" + width="100%" + y="0" + x="0" + xlink:href="#inkstitch_fill_start" + id="use14355" /> + <path + inkscape:connection-end="#path9699-3-7" + inkscape:connection-start="#use14379" + inkscape:connector-curvature="0" + inkscape:connector-type="polyline" + id="path14393" + d="m 25.78533,183.40549 34.433762,0.42335" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker14673)" /> + <use + transform="translate(-21.476504,77.567401)" + height="100%" + width="100%" + y="0" + x="0" + xlink:href="#inkstitch_fill_end" + id="use14379" /> +</svg> diff --git a/images/examples/InkStitch Logo QR Code Patch.svg b/images/examples/InkStitch Logo QR Code Patch.svg new file mode 100644 index 00000000..bcbeeef9 --- /dev/null +++ b/images/examples/InkStitch Logo QR Code Patch.svg @@ -0,0 +1,2312 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:inkstitch="http://inkstitch.org/namespace" + 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" + enable-background="new 0 0 464 464" + version="1.1" + viewBox="0 0 384.00025 384.00022" + xml:space="preserve" + id="svg3033" + sodipodi:docname="inkstitch-qr-code-lex.svg" + inkscape:version="0.92.3 (unknown)" + width="4in" + height="4in"><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="640" + inkscape:window-height="480" + id="namedview3035" + showgrid="true" + inkscape:zoom="1.7794289" + inkscape:cx="144.6624" + inkscape:cy="132.78826" + inkscape:current-layer="layer1" + inkscape:document-units="mm" + units="in" + fit-margin-top="1" + fit-margin-left="1" + fit-margin-right="1" + fit-margin-bottom="1" + inkscape:measure-start="207.37,351.798" + inkscape:measure-end="205.684,310.774" + inkscape:snap-global="false" + inkscape:snap-to-guides="false" + inkscape:snap-others="true" + inkscape:object-nodes="false" + inkscape:snap-nodes="true" + inkscape:object-paths="true" + inkscape:snap-object-midpoints="true"><inkscape:grid + units="mm" + spacingx="3.7795299" + spacingy="3.7795299" + dotted="false" + type="xygrid" + id="grid13010" + empspacing="2" + color="#eb3fff" + opacity="0.45882353" + empcolor="#ffa03f" + empopacity="0.25098039" /></sodipodi:namedview><defs + id="defs3037"><symbol + id="inkstitch_fill_start"><title + id="title9432">Fill stitch ending point</title><circle + inkscape:label="outline" + style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:0.2817845;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.84535355, 0.84535355;stroke-dashoffset:0;stroke-opacity:1" + id="circle13166-6" + cx="22.548826" + cy="28.080906" + r="2.4464839" /><path + inkscape:connector-curvature="0" + id="path4183" + d="m 24.287889,28.081848 -2.765266,1.596528 v -3.193053 z" + inkscape:transform-center-y="7.9861791e-07" + inkscape:transform-center-x="-0.46087885" + style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.72543603;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /></symbol><symbol + id="inkstitch_fill_end"><title + id="title9427">Fill stitch starting point</title><circle + inkscape:label="outline" + style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:0.2817845;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.84535355, 0.84535355;stroke-dashoffset:0;stroke-opacity:1" + id="circle13166" + cx="12.497698" + cy="28.023958" + r="2.4464839" /><path + inkscape:connector-curvature="0" + id="rect5371-2" + d="m 11.295432,26.793732 h 2.418524 v 2.418522 h -2.418524 z" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.42497987;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.27493973, 1.27493973;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" /></symbol></defs><metadata + id="metadata1553"><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 /></cc:Work></rdf:RDF><inkstitch:thread-palette /><inkstitch:client-name>"Ink/Stitch"</inkstitch:client-name><inkstitch:purchase-order>"1"</inkstitch:purchase-order><inkstitch:title>"400px QR code for Ink/Stitch"</inkstitch:title><inkstitch:operator-overview-transform>"matrix(2.1218, 0, 0, 2.1218, -187.183, -187.183)"</inkstitch:operator-overview-transform><inkstitch:client-overview-transform>"matrix(1.6617263999999998,0,0,1.6617263999999998,-191,-236)"</inkstitch:client-overview-transform></metadata><g + inkscape:label="silver" + id="layer5" + inkscape:groupmode="layer"><path + inkscape:connector-curvature="0" + id="path4730" + style="opacity:1;fill:none;fill-opacity:1;stroke:#999999;stroke-width:2.25511646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 269.82145,85.407342 -14.95777,0.152638 m 14.80514,-2.59475 c 0,0 -10.37886,-1.221051 -14.80514,-0.152638" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /><path + embroider_running_stitch_length_mm="2.5" + inkscape:connector-curvature="0" + id="path4771" + d="m 253.94791,84.644181 -9.46309,2.136845 -19.07878,0.152638 -33.73128,0.305276 -30.37343,0.457899 -32.8155,-0.457899 -24.87874,-0.305276 h -3.5105" + style="opacity:1;fill:none;fill-opacity:1;stroke:#999999;stroke-width:2.25511646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.25511659, 2.25511659;stroke-dashoffset:0;stroke-opacity:1" /><path + inkscape:connector-curvature="0" + id="path4815" + style="opacity:1;fill:none;fill-opacity:1;stroke:#999999;stroke-width:2.25511646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 98.875549,90.902089 4.121031,2.442103 63.49418,-0.305276 c 0,0 12.05779,-1.831574 18.77352,-2.900002 l 57.54162,-0.763143 c 0,0 10.83675,1.526318 14.95776,1.526318 M 98.570289,82.96523 102.84395,80.523127 c 0,0 59.98368,-0.915794 62.27314,-0.305275 0,0 17.55248,2.747387 21.6735,3.205282 l 55.71005,0.763156 c 0,0 12.05779,-1.831579 14.49987,-1.67895" + embroider_satin_column="True" + embroider_zigzag_spacing_mm=".33" + embroider_center_walk_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="2.5" /><path + inkscape:connector-curvature="0" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 255.43206,90.786201 c 0,0 8.41821,0.755491 14.46206,-0.323778 m -14.67791,-2.374391 14.67791,-0.431689" + style="opacity:1;fill:none;fill-opacity:1;stroke:#999999;stroke-width:2.25511646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4862" /><path + inkscape:connector-curvature="0" + id="path4911" + style="opacity:1;fill:none;fill-opacity:1;stroke:#999999;stroke-width:2.25511646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 266.22465,82.583764 c 0,0 12.73525,1.295122 19.64251,3.345735 m -19.96629,5.18049 c 0,0 18.3474,-2.806103 20.50592,-4.101226" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" + embroider_center_walk_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="2.5" + embroider_trim_after="True" /></g><g + inkscape:label="black" + id="layer3" + inkscape:groupmode="layer"><image + y="97.128723" + x="98.804062" + id="image8428" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAL9ElEQVR4Xu2d0XLrxg4E7f//aN+6 yWvErlLX1JJS5xUZYHaAWZCSj/379/f399N/KZAC/6nAbwZpMlLgtQIZpOlIgQsFMkjjkQIZpBlI gfcUaIO8p1uoL1Egg3xJozvmewpkkPd0C/UlCmSQL2l0x3xPgQzynm6hvkSBDPIlje6Y7ymQQd7T LdSXKJBBvqTRHfM9BTLIe7qF+hIFMsiXNLpjvqdABnlPt1BfooA2yO/v70dLZf+5DOlzOj/xe3pz tb7234Mk8PUIkT66gXBBUX7il0FIQVAogTPInU0kx/unRyzorhZY3vA0fHRBEX/CU/27x+n8xD+D ZBCakUfHM8i4fVrgNsi4Q9fpdf96SR8LnEEyyFEFxsX1DZRBxh0aX3DrDWIHbK0uvaQSf8ITf5uf 8FSf+Nv8VN/G1/znL+mfLjA1iAaA9KH8hKf66/xU38bX/DOIfASiBtEA0IBTfsJT/XV+qm/ja/4Z JINczqg1oDUA4TMIKSTjVmDCEz0aQMpPeKq/zk/1bXzNvw3SBmmDXCiQQTJIBskgrxWwK5rw9AhB j0iUn/BUf52f6tv4mv/xDUIHtALSAFF9iyf+d8+/5rfWh/hT/Qzy8EcsajANyOkL4jR/qp9BMoh6 ByGD0QBSfG1wqp9BMkgGufNL+tNvIMvf3pB0A9r8Fk/8KG7rE57qt0HaIG2QNsjnfsxLNyDdoLQB LZ74UdzWJzzVb4O0QdogbZDdBsEbaGxAfUOO+ZE+FKfz2Q1I9dsgckBQYJl/PgBjfqQPxTPI+Dcz Hhd4PIB0PhpAa0DCU32K0/moPuGpfhtEDjAKLPPPB2DMj/ShOA34XJ/T/yadDkgCUvy4wOMBpPOR PqQ/5Sc81ae4rU94qt8GkQOMAsv8NIB6AMb8SB+K0/nm+rRBrn87PTWIGmwbaPGn+VF9ipP+c30y SAa5GlI7oGQAitv6hKf6PWKNHzFsg7CBh/nTDU78KU76UX3CU/0McnjAqEEUtwOyxhN/itOAW/5U P4NkkMsZsQNKA0hxW5/wVD+DZJAMcqFABskgGSSDvFbAPsNaPK14itv6azzxpzg9Iln+VL8N0gZp g7RB2iCvFLA3MOHphqb4128QEmgdpwafbhCd/+n86XwUt+fH/Ke/SSeC67gV2OLt+Wx9i7f8LX7N //g7iBXI4q3AFv/t/E+fn+pnkF7S1Us6Ddg6vr6gMkgGySB3/hRrfcNQfnsDWTzxo7itb/HEbx1f 82+DtEHaIG2Q1wrYG8ji7Q1r61u85W/xa/7zDWIFOI1ffw9iG7zGn9bf1qf+Uf4MAgqRwOsBPV2f BujucdKP+GeQDEIz8uh4Bhm3jwRug4wbINNT/yh9G6QNQjPy6HgGGbePBG6DjBsg01P/KH0bpA1C M/LoeAYZt48EboOMGyDTU/8ovd4gVODT42SQ0+e3A3Ka/+n6GUR2IINIAW8OzyCyQRlECnhzeAaR DcogUsCbwzOIbFAGkQLeHJ5BZIMyiBTw5vAMIhuUQaSAN4dnENmgDCIFvDlcG8QOCH1OT/kJT/pT fsJT/dP51/zurg/xo3gGkX+Gej2ANr/F0wBRfF2f8hM/imeQDEIzouI0wOsNq8j//PxkkAxiZ+gS n0EODxg1gLq/vsFO5yd9LD/Sd12f8hM/irdBDhucGkQDQANu8cSP4uv6lJ/4UTyDZBCaERWnASaD U3HKT3iKZ5AMQjOi4jTAGUTJ+/NDAsv0Gk4NtvwpPx3A1qf8lh/lt3F7/uMbhASwB6T8Nk4DYvlT fuJv61N+y4/y27g9fwaRHaAB0Q0aPwLK4//Q+W1+i9f6r//C1OkD2vqEpwHRDcog1ILLuNY/gyj9 8QbVDcogqkFa/wyi9M8g0sBOfUZnENZo+n/0iPU71dcmzyBWQYnPIBnkcoTWAyLnF+HEnxLQDbXO T/xsfcpP5yc8xYn/vP76HWR9ABKY4tQAwtP51vmJn61P+en8hKc48Z/XzyDuEYEaRA2mAaH8hLf1 Kb/lR/mJ/7x+BskgNKRX8fmAyj+yas72f+z8m/S1gFoA+TElnY9uQOJP+Qlv61N+y4/yE/95/TZI G4SGtA0iFDrtcEH9Hyjxp/x0g63zEz9bn/LT+QlPceI/r98GaYPQkLZBjEKApRvAlqYbhOoT3vIj /Jof5Sd+Vh+qf/v8doOQwCQQ4SlOAlN9wlN9G1/zo/zE3+pD9W+fP4P80YxM46cHiA53+wEefwys P+YlgWkACE9xaiDVJzzVt/E1P8pP/K0+VP/2+dsgbZDlS3gG6SWdLuHL+OkBIvK3v+F7xLpuITVw PYA0YBRf86P8xI/0JTzVv33+HrF6xOoR67UC+iX98TfEekWP89sbnPB0w6/7T/zW9TPIeIDXDbQD RPgMQgrIl3CZHn9W6tvz04CTQQlP+lJ+wlN9iq/rt0HaIJczSAO+HtAM0oaiGVBxGmBKnkFIgQaY Zujo9xxELoO4Tyl7xOoRq0esCwUySAbJIEuD0Ir/9Pj6EYb0W9df5z99Pqy//iadCDw9/ukD9Onn o/nTj1hU4NPjnz5An34+ms8MQgrJT/EovfwQEb9ItfUziO0QdeDD458+QJ9+PhrPNggp1AZRCtn7 97hBe0lX/Z8/4hC79QCt858+H9bPICTRdfzTB+jTz0fd149YVkAieDpOjwh0fsLb863rU37iT+en /Gs88c8goNDpBmEDD/8kAPFb62cNRvwzSAa5VIAGkAYsg8g/H0ACn46vG2zPRwNM/Kk+5Sc81af8 azzxb4O0QdogFwpkkAySQTIILdLX8dMrnpjbRxSbn/Br/ebnt9+DEEES8O7xdYPt+Ul/4k/1KT/h qT7lX+OJ//wRiw5IBNdx2yDiZ/MTnurbOPWP+BGe+FF+wuv66w1iCZIANk4NsPxtfsLb8xOezk/8 CE/1KT/hdf0Mcv0n2LTA8os8OyA0QBSn8xM/wlN9yk94XT+DZJCrIaMBowEmPA045Se8rp9BMkgG ea1AL+nyEYhuMLoB6YYjPNW3ccuP8MTPnl/Xb4O0QdogbZCXCtANpW8guaGIH93ANk7nJ36EJ36U n/C6/ukNYgWwAlF9LbD8YU6qT/ytPoS38bvzP/4OYgWiBtkBIzzVt+ej+uv8dD4bvzv/DCIfgWhA 1gOwzk/ns/G7888gGcTOuMJnkL/rXz9vBaLu2EcUwlN9ez6qv85P57Pxu/Nvg7RB7IwrfAZpg6gB aoNcy0f6KPF/fn7aIG0QO0MK3wb58A1CDbY3HOWn6bT1KT/FiT/xIzzVp/yEb4PIDUIN1A0af9FI A2LjVh/CEz+tf9+ku5/FogbqBmUQ8sBlXOufQTKImkAA2wuE8MQ9g4BCJBA1YI2nBhM/whN/wts4 8Sd+hCd+lJ/wvYP0DkIzouI04DTAhCdylJ/wGSSD0IyoOA04DTDhiRzlJ3wGySA0IypOA04DTHgi R/kJn0GkQUhgitMA2AZTfYp/O78MkkEuPZJB5BVlBSQ83XAUp+NRfcJTfYqfrh+/awXaIG2QNsiF Ahkkg2SQDPJagdOPOKfr94jVI9atb8gMQhaFAR4/AfSINRaY2p9BSKEvN4iTx6PtgK7x9oT0Kdxp /sSPzm/5Y/7TP81LBNdxK/Aab89PA3iaP/Gj81v+mD+DnP1xd2owNZDiNIBU3+ItP8Jb/pg/g2SQ qyHJIKQAWGztYHK4jVv+a7w9H7X3NH/iR+e3/DF/G6QN0ga5+J4sg2SQDJJBXipgV/QaT48AFKdH mNP8iR+dz/LH/OsNQgTuHqcGzhskf6sJ6Xv6fMTvdHz+TfrpA9r6pweIDPj081n+a3wGAYUziHtH Ww/wOn8GySCXCtAGowtkPcDr/Bkkg2SQCwUySAbJIBnk/UVMjxDrRxDK//7J/kWePp/lv8a3Qdog bZDlBlk7uPwpcFIBvUFOkq92CqwVyCBrhcv/aAUyyKPbF/m1AhlkrXD5H61ABnl0+yK/ViCDrBUu /6MVyCCPbl/k1wpkkLXC5X+0Ahnk0e2L/FqBDLJWuPyPViCDPLp9kV8rkEHWCpf/0QpkkEe3L/Jr BTLIWuHyP1qBDPLo9kV+rcD/AEsrdnu6P21bAAAAAElFTkSuQmCC " + preserveAspectRatio="none" + height="188.45131" + width="188.45131" + style="display:none" /><g + id="g13135" + inkscape:label="qr satins" + transform="translate(1.2999976e-6)" + style="stroke:#000000;stroke-opacity:1"><g + id="g26014" + inkscape:label="group 3" + style="display:inline;stroke:#000000;stroke-opacity:1"><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-64" + d="m 166.29931,210.14185 v -7.55905 m -7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-33" + d="m 151.1812,202.58279 v -7.55905 m 7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-38" + d="m 158.74026,187.46469 v 7.55905 m 7.55906,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-4" + d="m 166.29932,195.02374 v -7.55905 m 7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-472" + d="m 173.85838,187.46468 v -7.55906 m 7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-75" + d="m 181.41744,179.90562 v -7.55906 m 7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-47" + d="m 181.41744,164.7875 v 7.55906 m 7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-48" + d="m 196.53555,179.90562 v -7.55905 m -7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-12" + d="m 188.9765,172.34656 v -7.55906 m 7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-893" + d="m 188.97649,157.22844 v 7.55906 m 7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-68" + d="m 196.53555,164.7875 v 7.55906 m 7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-02" + d="m 204.09462,172.34656 v -7.55906 m 7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-10" + d="m 211.65367,164.7875 v -7.55905 m -7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-51" + d="m 204.09462,157.22844 v -7.55906 m 7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-108" + d="m 211.65367,149.66938 v -7.55906 m -7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-50" + d="m 204.09461,142.11032 v -7.55906 m -7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-25" + d="m 196.53556,134.55126 v -7.55905 m 7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-646" + d="m 211.65367,134.55126 v -7.55905 m -7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-86" + d="m 196.53556,126.9922 v -7.55905 m 7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-28" + d="m 204.09462,119.43314 v -7.55905 m 7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="True" /></g><g + id="g26030" + inkscape:label="group 4" + style="display:inline;stroke:#000000;stroke-opacity:1"><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-40" + d="m 211.65367,172.34656 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-62" + d="m 211.65367,187.46468 v -7.55906 m -7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-99" + d="m 204.09461,179.90563 v 7.55905 m -7.55906,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-08" + d="m 196.53555,187.46469 v 7.55905 m -7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-13" + d="m 181.41744,187.46469 v 7.55905 m 7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-11" + d="m 196.53555,195.02374 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-03" + d="m 188.97649,202.5828 v 7.55905 m -7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-403" + d="m 188.97649,217.70091 v -7.55905 m -7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-91" + d="m 181.41744,210.14186 v 7.55906 m -7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-96" + d="m 173.85838,217.70092 v 7.55906 m 7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-93" + d="m 181.41744,225.25998 v 7.55905 m 7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-640" + d="m 196.53555,240.3781 v -7.55906 m -7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-04" + d="m 188.97649,232.81904 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-626" + d="m 181.41744,240.3781 v 7.55905 m -7.55906,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="True" /></g><g + id="g26034" + inkscape:label="group 5" + style="display:inline;stroke:#000000;stroke-opacity:1"><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-756" + d="m 173.85838,255.49622 v 7.55906 m 7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-98" + d="m 181.41743,263.05528 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="True" /></g><g + id="g26068" + inkscape:label="group 6" + style="display:inline;stroke:#000000;stroke-opacity:1"><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-042" + d="m 226.77179,270.61433 v -7.55905 m 7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-961" + d="m 249.44897,255.49622 v 7.55905 m -7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-42" + d="m 241.88991,263.05527 v -7.55905 m -7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-58" + d="m 234.33085,247.93716 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-49" + d="m 226.77179,255.49622 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-991" + d="m 219.21273,263.05528 v 7.55905 m -7.55906,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-15" + d="m 211.65367,270.61433 v -7.55905 m -7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-32" + d="m 211.65367,255.49622 v 7.55906 m -7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-61" + d="m 196.53555,270.61433 v -7.55905 m 7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-996" + d="m 196.53556,263.05528 v -7.55906 m 7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-82" + d="m 196.53555,263.05528 v -7.55906 m -7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-72" + d="m 188.97649,255.49621 v -7.55905 m 7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-487" + d="m 196.53555,247.93716 v -7.55906 m 7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-086" + d="m 204.09461,247.93716 v -7.55906 m 7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-915" + d="m 211.65367,240.3781 v -7.55906 m -7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-492" + d="m 196.53556,225.25998 v 7.55906 m 7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-57" + d="m 204.09462,232.81903 v -7.55905 m 7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-499" + d="m 211.65367,225.25998 v -7.55906 m -7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-45" + d="m 204.09462,210.14186 v 7.55905 m 7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-935" + d="m 211.65367,217.70091 v -7.55905 m 7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-81" + d="m 226.77179,202.5828 v 7.55905 m -7.55906,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-70" + d="m 219.21273,210.14186 v -7.55906 m -7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-825" + d="m 211.65368,202.5828 v -7.55906 m 7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-997" + d="m 226.7718,202.5828 v -7.55906 m -7.55907,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-34" + d="m 211.65368,195.02374 v -7.55906 m 7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-902" + d="m 219.21273,187.46469 v 7.55905 m 7.55906,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-019" + d="m 226.7718,195.02374 v -7.55905 m 7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-833" + d="m 234.33086,187.46468 v -7.55906 m 7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-83" + d="m 249.44897,187.46468 v -7.55906 m -7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-3804" + d="m 241.88991,179.90562 v -7.55906 m -7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-768" + d="m 234.33085,172.34656 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-90" + d="m 226.77179,179.90562 v -7.55906 m -7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="True" /></g><g + id="g26083" + inkscape:label="group 7" + style="display:inline;stroke:#000000;stroke-opacity:1"><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-928" + d="m 249.44897,172.34656 v 7.55906 m 7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-886" + d="m 249.44897,187.46468 v -7.55906 m 7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-288" + d="m 257.00804,172.34657 v 7.55905 m 7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-26" + d="m 272.12615,187.46468 v -7.55905 m -7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-41" + d="m 264.56709,179.90562 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-942" + d="m 257.00804,187.46469 v 7.55905 m 7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-46" + d="m 264.56709,195.02374 v 7.55906 m 7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-431" + d="m 272.12615,202.5828 v 7.55905 m -7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-943" + d="m 264.56709,210.14186 v 7.55905 m -7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-517" + d="m 249.44897,217.70092 v 7.55906 m 7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-44" + d="m 264.56709,225.25998 v 7.55905 m -7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-19" + d="m 257.00803,232.81904 v 7.55906 m -7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-220" + d="m 249.44897,240.3781 v 7.55905 m -7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="True" /></g><g + id="g26093" + inkscape:label="group 8" + style="display:inline;stroke:#000000;stroke-opacity:1"><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-29" + d="m 264.56709,263.05527 v -7.55905 m 7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-028" + d="m 272.12615,255.49622 v -7.55906 m -7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-380" + d="m 272.12615,240.3781 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-409" + d="m 264.56709,247.93716 v -7.55906 m -7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-625" + d="m 257.00804,240.3781 v -7.55906 m 7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-993" + d="m 264.5671,232.81903 v -7.55905 m 7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-60" + d="m 272.12615,225.25998 v -7.55906 m -7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-502" + d="m 264.5671,217.70091 v -7.55905 m 7.55905,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="True" /></g><g + id="g26105" + inkscape:label="group 9" + style="stroke:#000000;stroke-opacity:1"><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-687" + d="m 249.44897,195.02374 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-903" + d="m 241.88991,202.5828 v 7.55905 m -7.55906,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-52" + d="m 241.88991,210.14186 v 7.55905 m -7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-65" + d="m 226.70014,210.73867 v 7.55906 m 7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-410" + d="m 241.88991,232.81903 v -7.55905 m -7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-960" + d="m 241.88991,217.70092 v 7.55905 m -7.55906,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-87" + d="m 234.2592,218.09018 v 7.55906 m -7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-01" + d="m 226.77179,225.25998 v 7.55905 m -7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-78" + d="m 211.65367,225.25998 v 7.55905 m 7.55906,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-283" + d="m 211.65367,240.3781 v -7.55906 m 7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="True" /></g><g + id="g25992" + inkscape:label="group 2" + style="display:inline;stroke:#000000;stroke-opacity:1"><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-76" + d="m 188.97649,111.87409 v 7.55905 m -7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-0" + d="m 173.85838,119.43314 v 7.55906 m 7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-43" + d="m 188.97649,119.43314 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-30" + d="m 173.85838,126.99221 v 7.55905 m 7.55906,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-92" + d="m 188.97649,126.99221 v 7.55905 m -7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-54" + d="m 188.97649,134.55126 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-05" + d="m 181.41744,142.11033 v 7.55905 m -7.55906,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-94" + d="m 173.85838,149.66939 v 7.55905 m 7.55905,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-69" + d="m 181.41743,157.22844 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-22" + d="m 181.41744,164.78751 v 7.55905 m -7.55906,-7.55905 v 7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-97" + d="m 173.85837,172.34656 v 7.55906 m -7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-888" + d="m 166.29932,179.90562 v -7.55906 m -7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="True" /></g><g + id="g25978" + inkscape:label="group 1" + style="display:inline;stroke:#000000;stroke-opacity:1"><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-89" + d="m 143.62214,210.14185 v -7.55905 m -7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-31" + d="m 143.62214,195.02374 v 7.55906 m -7.55906,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-88" + d="m 136.06308,202.5828 v -7.55906 m -7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-74" + d="m 113.3859,210.14185 v -7.55905 m 7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-3" + d="m 128.50401,202.5828 v -7.55906 m -7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-5" + d="m 113.3859,195.02374 v -7.55905 m 7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-8" + d="m 120.94496,187.46468 v -7.55905 m -7.55906,7.55905 v -7.55905" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-7" + d="m 113.3859,179.90562 v -7.55906 m 7.55906,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-1" + d="m 120.94496,172.34656 v 7.55906 m 7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-2" + d="m 120.94496,179.90562 v 7.55906 m 7.55905,-7.55906 v 7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-6" + d="m 128.50402,187.46468 v -7.55906 m 7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="False" /><path + embroider_contour_underlay_inset_mm="0.3" + embroider_contour_underlay="True" + embroider_pull_compensation_mm="0.1" + embroider_satin_column="True" + sodipodi:nodetypes="cccc" + embroider_fill_underlay="True" + embroider_row_spacing_mm="0.2" + inkscape:connector-curvature="0" + id="rect1555-3-9" + d="m 136.06308,179.90562 v -7.55906 m 7.55905,7.55906 v -7.55906" + style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.75590599;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + embroider_trim_after="True" /></g></g><g + id="g27136" + inkscape:label="upper left registration mark"><use + id="use26155" + transform="matrix(1.0804538,0,0,1.0804538,124.91336,142.64179)" + xlink:href="#inkstitch_fill_start" + x="0" + y="0" + width="100%" + height="100%" + style="stroke-width:3.49809504" /><path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 149.27632,172.98191 -2.23091,-8.1944" + id="path26171" + inkscape:connector-curvature="0" + inkscape:connector-type="polyline" + inkscape:connection-start="#use26155" + inkscape:connection-end="#rect10257" + sodipodi:nodetypes="cc" /><path + embroider_trim_after="True" + inkscape:label="outer square" + embroider_fill_underlay_inset_mm="0.2" + embroider_fill_underlay_angle="90" + embroider_fill_underlay="True" + inkscape:connector-curvature="0" + d="m 113.3859,111.87409 h 52.91342 v 52.91342 H 113.3859 Z m 7.55907,45.35435 h 37.7953 v -37.7953 h -37.7953 z" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75590551;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" + id="rect10257" + embroider_fill_underlay_max_stitch_length_mm="3" + embroider_max_stitch_length_mm="2" + embroider_running_stitch_length_mm="1.2" + embroider_staggers="1" /><path + inkscape:label="inner square" + embroider_fill_underlay="True" + embroider_fill_underlay_row_spacing_mm="None" + embroider_fill_underlay_angle="90" + embroider_fill_underlay_inset_mm="0.2" + embroider_fill_underlay_max_stitch_length_mm="3" + embroider_max_stitch_length_mm="2" + embroider_expand_mm="0" + embroider_stop_after="False" + embroider_running_stitch_length_mm="1.2" + embroider_staggers="1" + embroider_row_spacing_mm="0.25" + embroider_auto_fill="True" + embroider_trim_after="True" + embroider_angle="0" + inkscape:connector-curvature="0" + id="rect10253" + d="m 128.50401,126.9922 h 22.67718 v 22.67718 h -22.67718 z" + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75590551;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" /></g><g + id="g27140" + inkscape:label="upper right registration mark"><path + inkscape:connector-curvature="0" + d="m 219.38595,111.87409 h 52.91345 v 52.91345 h -52.91345 z m 7.55907,45.35438 h 37.79533 v -37.79533 h -37.79533 z" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75590551;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" + id="rect10257-7" + embroider_angle="0" + embroider_trim_after="True" + embroider_auto_fill="True" + embroider_row_spacing_mm="0.25" + embroider_staggers="1" + embroider_running_stitch_length_mm="1.2" + embroider_stop_after="False" + embroider_expand_mm="0" + embroider_max_stitch_length_mm="2" + embroider_fill_underlay_max_stitch_length_mm="3" + embroider_fill_underlay_inset_mm="0.2" + embroider_fill_underlay_angle="90" + embroider_fill_underlay_row_spacing_mm="0.85" + embroider_fill_underlay="True" + inkscape:label="outer square" /><path + inkscape:connector-curvature="0" + id="rect10253-6" + d="m 234.50407,126.99221 h 22.67719 v 22.67719 h -22.67719 z" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75590551;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" + embroider_angle="0" + embroider_trim_after="True" + embroider_auto_fill="True" + embroider_row_spacing_mm="0.25" + embroider_staggers="1" + embroider_running_stitch_length_mm="1.2" + embroider_stop_after="False" + embroider_expand_mm="0" + embroider_max_stitch_length_mm="2" + embroider_fill_underlay_max_stitch_length_mm="3" + embroider_fill_underlay_inset_mm="0.2" + embroider_fill_underlay_angle="90" + embroider_fill_underlay_row_spacing_mm="None" + embroider_fill_underlay="True" + inkscape:label="inner square" /></g><g + id="g27144" + inkscape:label="lower left registration mark"><path + inkscape:connector-curvature="0" + d="m 113.3859,217.59314 h 52.91345 v 52.91345 H 113.3859 Z m 7.55907,45.35438 h 37.79533 v -37.79533 h -37.79533 z" + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75590551;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" + id="rect10257-3" + embroider_angle="0" + embroider_trim_after="True" + embroider_auto_fill="True" + embroider_row_spacing_mm="0.25" + embroider_staggers="1" + embroider_running_stitch_length_mm="1.2" + embroider_stop_after="False" + embroider_expand_mm="0" + embroider_max_stitch_length_mm="2" + embroider_fill_underlay_max_stitch_length_mm="3" + embroider_fill_underlay_inset_mm="0.2" + embroider_fill_underlay_angle="90" + embroider_fill_underlay_row_spacing_mm="None" + embroider_fill_underlay="True" + inkscape:label="outer square" /><path + inkscape:connector-curvature="0" + id="rect10253-5" + d="m 128.50402,232.71126 h 22.67719 v 22.67719 h -22.67719 z" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75590551;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" + embroider_angle="0" + embroider_trim_after="True" + embroider_auto_fill="True" + embroider_row_spacing_mm="0.25" + embroider_staggers="1" + embroider_running_stitch_length_mm="1.2" + embroider_stop_after="False" + embroider_expand_mm="0" + embroider_max_stitch_length_mm="2" + embroider_fill_underlay_max_stitch_length_mm="3" + embroider_fill_underlay_inset_mm="0.2" + embroider_fill_underlay_angle="90" + embroider_fill_underlay_row_spacing_mm="None" + embroider_fill_underlay="True" + inkscape:label="inner square" /></g><g + style="fill:none;stroke:#000000;stroke-opacity:1" + transform="matrix(2.0525994,0,0,2.0525994,32.820084,-232.59787)" + inkscape:label="INK" + id="g10203"><path + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.32" + embroider_trim_after="True" + embroider_satin_column="True" + d="M 22.698256,269.72673 V 256.36325 M 19.55784,269.65991 V 256.36325" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4334" + inkscape:connector-curvature="0" /><path + id="path4357" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 30.303629,269.65991 -0.133635,-10.08942 m -2.739512,10.08942 -0.06682,-10.02261" + embroider_satin_column="True" + embroider_zigzag_underlay="True" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_spacing_mm="0.33" + inkscape:connector-curvature="0" /><path + embroider_running_stitch_length_mm="2.5" + inkscape:connector-curvature="0" + id="path4380" + d="m 28.900464,259.6373 -1.135895,-3.14041" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999997, 0.44999997;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" /><path + id="path4416" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 36.317193,270.06082 4.944486,-1.06908 m -6.61492,0 6.481284,-3.40769 m -10.089422,-0.33409 4.744032,-4.74403 m -9.354434,1.40317 5.345393,-5.61266 m -5.412208,2.60587 3.608139,-3.4745 m -2.071341,0.46772 11.02487,10.69078 0.133633,3.47451 m -11.759859,-14.09847 0.06682,4.94448 3.34087,1.87089 7.884451,7.34991" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" + embroider_zigzag_underlay="True" + embroider_zigzag_underlay_inset_mm=".4" + embroider_zigzag_underlay_spacing_mm="1.2" + inkscape:connector-curvature="0" /><path + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 34.646759,260.57275 5.746295,-0.0668 m -5.87993,7.61717 6.614919,-2.60588 m -4.209494,4.87767 3.474505,-1.9377 m -1.336349,1.5368 -0.133633,-13.49711 m -0.400905,13.56393 -2.605879,-2.20498 0.133636,-11.42577" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4451" + inkscape:connector-curvature="0" + embroider_trim_after="True" /><path + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 46.470385,269.61838 -0.0945,-6.94531 m -3.023805,6.94531 0.09449,-6.99255" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4508" + inkscape:connector-curvature="0" /><path + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999997, 0.44999997;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 44.76949,262.48408 0.04725,-5.81138" + id="path4539" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /><path + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="m 46.423135,256.29473 -0.04725,6.99255 m -2.929312,-7.0398 v 7.65402" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4573" + inkscape:connector-curvature="0" /><path + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999997, 0.44999997;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 46.801114,262.95655 2.787573,-2.50409 2.787573,-3.63802" + id="path4608" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /><path + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 48.45476,256.95618 7.417781,0.14174 m -11.150298,5.95313 7.654017,-0.33073 m -3.307291,6.28385 7.039807,-0.14174 m -1.511905,-12.47321 -4.960937,6.3311 5.480655,6.99256 m -4.299479,-13.4654 -5.008184,6.89806 5.480653,6.56734" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4652" + embroider_trim_after="True" + inkscape:connector-curvature="0" /></g><path + inkscape:label="slash" + sodipodi:nodetypes="cccc" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.32" + embroider_trim_after="True" + embroider_satin_column="True" + d="m 159.73935,325.72406 14.86926,-37.919 m -20.88462,37.7135 14.86926,-37.7135" + style="display:none;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99125659;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4334-3" + inkscape:connector-curvature="0" /><g + style="fill:none;stroke:#000000;stroke-width:0.7144655;stroke-opacity:1" + transform="matrix(3.1617275,0,0,3.1617275,-11.775207,-529.13143)" + inkscape:label="STITCH" + id="g10225"><path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 64.598677,262.39085 -0.09449,-3.40178 m -0.921322,3.00018 -1.275667,-2.97656 m 0.944938,3.07106 -3.071056,-1.08668 m 3.638021,1.29929 -3.000184,2.05524 m 3.968749,-1.34653 c -0.0945,0.0945 -2.267857,2.74032 -2.267857,2.74032 m 4.441218,-1.32291 -3.567148,1.67726 m 3.44903,1.41742 -3.094679,-1.06306 m 0.212614,3.26004 -1.252048,-3.47265 m -1.063057,3.44903 -0.188989,-3.96875 m -0.614211,0.63783 c 0,0 1.252045,0.77958 2.173364,0.8977 0,0 1.086681,0.0236 1.393786,-0.56697 0,0 0.4016,-0.49609 -0.614211,-1.22842 0,0 -1.204799,-0.61421 -1.606399,-0.89769 0,0 -1.34654,-0.87407 -1.41741,-1.96075 0,0 -0.259859,-1.93713 1.559151,-2.5041 0,0 1.063058,-0.68508 3.449032,0.18899 m -4.771949,8.40997 c 0,0 2.409598,0.8032 3.96875,-0.0236 0,0 1.441034,-0.63783 1.441034,-2.05524 0,0 0.236235,-1.5119 -0.826823,-2.29148 0,0 -1.559151,-0.96856 -2.102492,-1.22842 0,0 -0.94494,-0.28348 -0.755952,-1.11031 0,0 0.07087,-0.75595 1.630022,-0.35435 0,0 0.826823,0.23624 1.441034,0.68508" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4343" + embroider_trim_after="True" /><path + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.32150945, 0.32150945;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 67.24451,261.13881 3.425409,-0.23624 -0.04725,3.30729 0.07087,3.07106 0.02363,0.94494" + id="path4394" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /><path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="m 71.7566,268.79283 0.02363,-7.65402 m -2.078876,7.67764 0.02363,-7.63039" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4448" /><path + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.32150945, 0.32150945;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 70.788037,260.76083 c 0,0 -2.645833,0 -2.763951,-0.0236 -0.118118,-0.0236 -0.73233,0.16536 -0.73233,0.16536" + id="path4503" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /><path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 66.961027,261.91838 7.535899,0.0236 m -7.535899,-1.79539 h 7.535899" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4561" + embroider_trim_after="True" /><path + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.32150945, 0.32150945;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 76.150572,260.97344 0.519719,2.29148 c 0,0 0.259858,3.2128 0.212611,3.35454 -0.04725,0.14174 -0.118118,1.74814 -0.118118,1.74814" + id="path4620" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /><path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.25" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 77.804218,268.79283 0.04725,-8.66983 m -2.102494,8.6462 0.02363,-8.57533" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4682" + embroider_trim_after="True" /><path + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.32150945, 0.32150945;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 79.386995,261.06794 3.118303,-0.0709 0.259858,1.22842 0.118117,2.83482 0.02363,3.47266" + id="path4745" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + embroider_running_stitch_length_mm="2.5" /><path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="m 83.946332,268.81645 v -7.67764 m -2.078868,7.63039 v -7.72489" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4811" /><path + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.32150945, 0.32150945;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 82.883273,260.90257 -3.378162,0.0472" + id="path4878" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /><path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="m 79.127135,261.94201 h 7.512277 m -7.535899,-1.77177 7.583146,-0.0236" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4948" + embroider_trim_after="True" /><path + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.32150945, 0.32150945;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 88.883645,261.61128 -0.425222,1.46465 -0.165365,1.98438 0.590587,1.70089 2.220611,1.37017 h 1.653646 l 1.228423,-0.70871" + id="path5019" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /><path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="m 93.183124,265.32017 0.02363,4.89007 m -1.630029,-4.4176 c 0,0 -0.566962,4.58296 -0.566962,4.51209 m -0.425225,-4.93731 c 0,0 -3.02381,3.54352 -3.000185,3.42541 m 2.409597,-4.18137 -3.874256,0.68509 m 3.945128,-1.91351 -3.28367,-0.66146 m 4.228611,0.0236 -1.795389,-3.16555 m 2.763951,3.04744 -0.212611,-3.99238 m 1.393788,4.37035 0.236233,-4.08686 m 0.803201,9.40215 c 0,0 -1.630024,1.03944 -3.23642,0.70871 0,0 -2.14974,-0.18899 -3.260045,-2.3151 0,0 -0.87407,-1.51191 -0.448847,-3.26005 0,0 0.4016,-2.19699 2.291481,-3.09468 0,0 2.456845,-1.34654 4.724702,0.33073 m 0.02362,5.31529 c 0,0 -1.488282,1.29929 -2.763952,1.06306 0,0 -1.677267,0.18899 -2.267855,-2.07887 0,0 -0.236235,-1.77176 0.921317,-2.74033 0,0 0.897693,-0.77957 2.409598,-0.42522 0,0 0.992187,0.49609 1.488281,1.06306" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path5109" + embroider_trim_after="True" /><path + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.32150945, 0.32150945;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 96.041569,261.56403 0.685083,0.61421 0.04725,3.56715 -0.14174,2.52772" + id="path5184" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /><path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="m 97.718839,268.7692 -0.02363,-4.51209 m -2.007991,4.51209 v -4.63021" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path5262" /><path + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.32150945, 0.32150945;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 96.608534,263.90276 0.02363,-3.44903" + id="path5341" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.4" /><path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="m 97.695214,260.14662 0.02363,5.00819 M 95.687217,260.123 v 5.00818" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path5423" /><path + inkscape:connector-curvature="0" + id="path5508" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 97.600721,263.35942 4.039619,-10e-6 m -4.346723,1.74815 4.417593,0.0472" + embroider_satin_column="True" + embroider_zigzag_spacing_mm=".33" + embroider_zigzag_underlay="True" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay_spacing_mm="1.2" /><path + embroider_running_stitch_length_mm="2.5" + inkscape:connector-curvature="0" + id="path5593" + d="m 101.78208,264.4461 0.4016,-2.008 -0.0945,-1.98437" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.32150945, 0.32150945;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" /><path + inkscape:connector-curvature="0" + id="path5681" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.32150945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 103.03413,260.14662 0.0472,8.64621 m -2.05525,-8.62259 0.0473,8.62259" + embroider_satin_column="True" + embroider_zigzag_spacing_mm=".33" + embroider_trim_after="True" + embroider_zigzag_underlay="True" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay_spacing_mm="1.2" /></g><path + embroider_zigzag_underlay_spacing_mm="4" + embroider_zigzag_underlay="True" + embroider_satin_column="True" + inkscape:label="satin_border" + inkscape:connector-curvature="0" + id="rect1113" + d="M 42.853169,87.990475 V 319.741 c 0,18.96388 15.436564,34.40048 34.400446,34.40048 H 309.00417 c 18.96389,0 34.40045,-15.4366 34.40045,-34.40048 V 87.990475 c 0,-18.963893 -15.43656,-34.400465 -34.40045,-34.400465 H 77.253615 c -18.963882,0 -34.400446,15.386901 -34.400446,34.350794 m 10.863301,0.04966 V 319.741 c 0,13.13355 10.403635,23.53718 23.537145,23.53718 H 309.00417 c 13.13351,0 23.53715,-10.40363 23.53715,-23.53718 V 87.990475 c 0,-13.133526 -10.40364,-23.53716 -23.53715,-23.53716 H 77.253615 c -13.13351,0 -23.537145,10.353964 -23.537145,23.487489 M 34.337899,320.05844 59.381638,319.85851 m 14.983135,42.16733 0.472743,-27.10252 M 312.39395,362.8737 312.22614,335.42694 M 30.789681,84.930272 71.22497,85.815717 m 4.565666,-42.507134 0.680995,35.128427 m 235.160829,-38.033745 -0.0907,34.491963 m 46.56742,10.58972 -38.67022,0.391612 m 32.36245,237.13619 -26.3787,0.49387 M 46.666257,350.32836 65.923808,331.14171 M 42.8907,54.234846 68.863749,78.732157 M 344.23717,55.054251 315.90294,80.141863 m 23.68859,270.186497 -17.85897,-19.70357" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:none;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.81055105;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + sodipodi:nodetypes="csssssssccsssssssccccccccccccccccccccccccc" + embroider_contour_underlay="True" /></g><g + inkscape:label="blue" + id="layer1" + inkscape:groupmode="layer"><path + inkscape:label="slash" + sodipodi:nodetypes="cccc" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.32" + embroider_trim_after="True" + embroider_satin_column="True" + d="m 159.73935,325.72408 14.86927,-37.91902 m -20.88463,37.71352 14.86927,-37.71352" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.99125659;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path4334-3-9" + inkscape:connector-curvature="0" /><g + inkscape:label="hoop" + id="g4828" + style="display:inline" + transform="matrix(5.2047817,0,0,5.2047817,-68.119991,-98.685933)"><g + transform="matrix(-1,0,0,1,99.40456,0)" + inkscape:label="left bracket" + id="g46998-0" + style="display:inline"><path + id="path41781-6" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 80.238274,69.234498 0.0024,-1.302458 0.0016,-0.903534 m 4.196815,2.224052 c 0.757494,-0.25431 1.044305,-1.320816 1.044305,-1.320816 l 0.0016,-0.850056" + inkscape:connector-curvature="0" + embroider_stop_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_trim_after="False" + embroider_satin_column="True" + embroider_pull_compensation_mm="None" + embroider_center_walk_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_contour_underlay="True" + embroider_contour_underlay_stitch_length_mm="1.5" + embroider_contour_underlay_inset_mm="0.4" + embroider_zigzag_underlay="True" + embroider_zigzag_underlay_inset_mm="None" + embroider_zigzag_underlay_spacing_mm="3" /><path + id="path5958-0-2" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 85.484994,67.081686 0.0017,-0.907554 0.0015,-0.806215 m -2.410338,1.628478 c 0.835218,0 0.870071,-0.458305 0.835091,-0.835091 -0.06204,-0.66833 -0.358781,-0.846607 -0.76843,-0.835607" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_contour_underlay="False" + embroider_contour_underlay_stitch_length_mm="1.0" + embroider_center_walk_underlay="True" /><path + inkscape:connector-curvature="0" + id="path43911-3-61" + d="m 81.987971,65.200933 c -0.172446,0.172384 -0.432572,0.271044 -0.526978,0.511283 -0.05215,0.153726 -0.0835,0.313633 -0.127924,0.469695 -0.0568,0.228304 -0.102033,0.462312 -0.09426,0.698667" + style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:0.23237278, 0.23237278;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" /><path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="True" + embroider_pull_compensation_mm="None" + embroider_satin_column="True" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" + d="m 83.077856,66.996396 c -0.393666,0 -0.801683,-0.03328 -0.835091,-0.835091 -0.01639,-0.393324 0.190607,-0.816516 0.901752,-0.835607 m -2.902237,1.62646 0.0013,-0.734937 0.0016,-0.906523" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path41768-8" /><path + id="path43930-7" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 80.24521,65.3107 0.0048,-2.720002 m 5.238184,2.777217 0.0051,-2.710318" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_center_walk_underlay="True" + embroider_contour_underlay="True" + embroider_zigzag_underlay="True" /><path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="True" + embroider_pull_compensation_mm="None" + embroider_satin_column="True" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" + d="m 83.392619,62.628243 c 0.386811,-0.07045 0.849274,-0.30259 0.854674,-0.776756 0,0 0.13879,-0.688951 -0.630002,-0.854178 m 1.876003,1.660284 0.0014,-0.744412 0.0017,-0.897135" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path41770-9" /><path + inkscape:connector-curvature="0" + id="path43911-3-6-2" + d="m 81.987971,60.974051 c -0.172446,0.172384 -0.432572,0.271044 -0.526978,0.511283 -0.05215,0.153726 -0.0835,0.313633 -0.127924,0.469695 -0.0568,0.228304 -0.102033,0.462312 -0.09426,0.698667" + style="display:inline;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:0.23237278, 0.23237278;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" /><path + id="path44796-0" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 82.643256,62.652989 c -0.63377,-0.05472 -0.588256,-0.354099 -0.574527,-0.949792 0.0093,-0.618072 0.229328,-0.734218 0.608114,-0.753978 m -2.426763,1.641479 0.0015,-0.887467 0.0013,-0.725277" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" + embroider_stop_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_trim_after="False" + embroider_satin_column="True" + embroider_pull_compensation_mm="None" + embroider_center_walk_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_contour_underlay="False" + embroider_zigzag_underlay="False" /><path + embroider_zigzag_underlay_spacing_mm="3" + embroider_zigzag_underlay_inset_mm="None" + embroider_zigzag_underlay="True" + embroider_contour_underlay_inset_mm="0.4" + embroider_contour_underlay_stitch_length_mm="1.5" + embroider_contour_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="True" + embroider_pull_compensation_mm="None" + embroider_satin_column="True" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + inkscape:connector-curvature="0" + d="m 85.501132,61.004947 c 0,0 0.01058,-10.284819 0.01058,-10.284819 0.0093,-0.458385 -0.149405,-1.051295 -0.548737,-1.041856 m -4.705318,11.337782 c 0,0 0.0171,-11.454845 0.0171,-11.454845 m 5.432617,4.869774 c 0,0 -5.668897,-0.07635 -5.668897,-0.07635" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path44790-2" + sodipodi:nodetypes="ccccc" /></g><path + sodipodi:nodetypes="ccccccccccccccc" + inkscape:label="connector" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" + d="m 20.363467,48.919569 0.425223,-6.992559 1.464658,-4.582962 3.685268,-4.204986 4.299478,-2.598587 5.433409,-1.511903 6.66183,-0.188989 10.819569,-0.09449 11.622767,0.236236 5.149924,1.322916 5.149927,3.685268 3.354538,4.819194 1.27567,4.488469 0.614212,4.015996 -0.577923,21.950771" + id="path5866" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /><g + transform="translate(0.86378784)" + inkscape:label="right bracket" + id="g46998"><path + id="path41781" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 80.238274,69.234498 0.0024,-1.302458 0.0016,-0.903534 m 4.196815,2.224052 c 0.757494,-0.25431 1.044305,-1.320816 1.044305,-1.320816 l 0.0016,-0.850056" + inkscape:connector-curvature="0" + embroider_stop_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_trim_after="False" + embroider_satin_column="True" + embroider_pull_compensation_mm="None" + embroider_center_walk_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_contour_underlay="True" + embroider_contour_underlay_stitch_length_mm="1.5" + embroider_contour_underlay_inset_mm="0.4" + embroider_zigzag_underlay="True" + embroider_zigzag_underlay_inset_mm="None" + embroider_zigzag_underlay_spacing_mm="3" /><path + id="path5958-0" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 85.484994,67.081686 0.0017,-0.907554 0.0015,-0.806215 m -2.410338,1.628478 c 0.835218,0 0.870071,-0.458305 0.835091,-0.835091 -0.06204,-0.66833 -0.358781,-0.846607 -0.76843,-0.835607" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_contour_underlay="False" + embroider_contour_underlay_stitch_length_mm="1.0" + embroider_center_walk_underlay="True" /><path + inkscape:connector-curvature="0" + id="path43911-3" + d="m 81.987971,65.200933 c -0.172446,0.172384 -0.432572,0.271044 -0.526978,0.511283 -0.05215,0.153726 -0.0835,0.313633 -0.127924,0.469695 -0.0568,0.228304 -0.102033,0.462312 -0.09426,0.698667" + style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:0.23237278, 0.23237278;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" /><path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="True" + embroider_pull_compensation_mm="None" + embroider_satin_column="True" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" + d="m 83.077856,66.996396 c -0.393666,0 -0.801683,-0.03328 -0.835091,-0.835091 -0.01639,-0.393324 0.190607,-0.816516 0.901752,-0.835607 m -2.902237,1.62646 0.0013,-0.734937 0.0016,-0.906523" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path41768" /><path + id="path43930" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 80.24521,65.3107 0.0048,-2.720002 m 5.238184,2.777217 0.0051,-2.710318" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_center_walk_underlay="True" + embroider_contour_underlay="True" + embroider_zigzag_underlay="True" /><path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="True" + embroider_pull_compensation_mm="None" + embroider_satin_column="True" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" + d="m 83.392619,62.628243 c 0.386811,-0.07045 0.849274,-0.30259 0.854674,-0.776756 0,0 0.13879,-0.688951 -0.630002,-0.854178 m 1.876003,1.660284 0.0014,-0.744412 0.0017,-0.897135" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path41770" /><path + inkscape:connector-curvature="0" + id="path43911-3-6" + d="m 81.987971,60.974051 c -0.172446,0.172384 -0.432572,0.271044 -0.526978,0.511283 -0.05215,0.153726 -0.0835,0.313633 -0.127924,0.469695 -0.0568,0.228304 -0.102033,0.462312 -0.09426,0.698667" + style="display:inline;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:0.23237278, 0.23237278;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" /><path + id="path44796" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 82.643256,62.652989 c -0.63377,-0.05472 -0.588256,-0.354099 -0.574527,-0.949792 0.0093,-0.618072 0.229328,-0.734218 0.608114,-0.753978 m -2.426763,1.641479 0.0015,-0.887467 0.0013,-0.725277" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" + embroider_stop_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_trim_after="False" + embroider_satin_column="True" + embroider_pull_compensation_mm="None" + embroider_center_walk_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_contour_underlay="False" + embroider_zigzag_underlay="False" /><path + embroider_zigzag_underlay_spacing_mm="3" + embroider_zigzag_underlay_inset_mm="None" + embroider_zigzag_underlay="True" + embroider_contour_underlay_inset_mm="0.4" + embroider_contour_underlay_stitch_length_mm="1.5" + embroider_contour_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="True" + embroider_pull_compensation_mm="None" + embroider_satin_column="True" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + inkscape:connector-curvature="0" + d="m 80.267699,61.004947 -0.01004,-9.754805 m 5.253508,9.765912 -0.01447,-9.698361" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path44790" + sodipodi:nodetypes="cccc" /><path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="True" + embroider_pull_compensation_mm="None" + embroider_satin_column="True" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + inkscape:connector-curvature="0" + d="m 84.124601,48.970301 c -0.301902,0.146362 -0.412098,0.58685 -0.412098,0.58685 l 0.03359,1.069186 c -0.133633,0.567947 -0.835091,0.701249 -0.835091,0.701249 m 1.603516,-2.37195 c 0,0 0.968596,0.233865 1.002006,1.336355 l -0.0019,0.998705 m 0.293479,-1.012283 h -2.294437" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path47083" + sodipodi:nodetypes="ccccccccc" /><path + id="path45656" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.23237278;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 82.911002,51.327589 c -0.501132,0 -0.902269,-0.662249 -0.902269,-0.662249 m -1.738853,0.719769 0.0015,-0.859025" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + embroider_stop_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_trim_after="False" + embroider_satin_column="True" + embroider_pull_compensation_mm="None" + embroider_center_walk_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_contour_underlay="False" + embroider_zigzag_underlay="False" /></g><path + embroider_contour_underlay_inset_mm="0.6" + embroider_zigzag_underlay_inset_mm="" + embroider_zigzag_underlay="True" + embroider_contour_underlay="True" + embroider_satin_column="True" + sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" + inkscape:connector-curvature="0" + d="m 82.517739,54.680573 -4.666126,0.04886 m 0.65881,-4.236908 V 48.151296 45.206128 C 77.107258,32.043104 64.81286,30.506304 64.81286,30.506304 l -28.664657,0.06682 C 22.651092,32.043106 21.715649,45.005678 21.715649,45.005678 v 27.662396 c 1.870886,14.298919 14.76664,14.633005 14.76664,14.633005 l 27.213787,-0.152698 0.649063,0.01906 C 77.441347,85.831097 78.510425,73.068978 78.510425,73.068978 l -2e-6,-1.603617 0.0095,-21.058728 m 3.181547,0.08615 v -2.341229 l 0.01614,-3.212698 C 79.579501,28.568602 64.746043,27.432707 64.746043,27.432707 H 36.148205 c -16.102989,1.469982 -17.572971,16.83798 -17.572971,16.83798 l 0.06682,28.531018 c 1.670435,16.637529 17.038431,17.572971 17.038431,17.572971 h -0.06682 c 9.621702,0.02227 24.437177,0.04455 28.44267,0.06682 h 0.641957 C 80.667645,88.771062 81.879889,73.402965 81.879889,73.402965 L 81.813069,71.303132 81.711058,50.416439 M 64.830323,91.319024 64.642946,86.02563 m -29.548325,5.325158 c 0,0 0.704763,-5.089348 0.838399,-5.356617 m -11.494263,1.17099 3.591967,-4.505712 m -10.007127,-7.592605 4.986491,-1.325888 m -5.711229,-30.735818 5.640294,1.249432 m -0.423101,-11.534633 3.610874,4.166393 m 7.066992,-9.961128 1.125292,4.876266 m 11.137767,-5.701542 0.09354,5.331498 m 19.953372,-5.163388 -1.700735,5.281228 m 10.306506,-1.44821 -3.097981,3.546489 m 11.777168,9.338504 -6.467439,1.587438 m 1.089929,24.954172 h 5.107148 m -5.954953,6.013564 5.502726,1.187708 M 70.12775,84.330615 c 0,0.267269 2.507581,4.856355 2.507581,4.856355" + style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path47050" /></g></g></svg>
\ No newline at end of file diff --git a/images/examples/InkStitch Multi Color.svg b/images/examples/InkStitch Multi Color.svg index ba8364f0..9d4b11e0 100644 --- a/images/examples/InkStitch Multi Color.svg +++ b/images/examples/InkStitch Multi Color.svg @@ -2,6 +2,7 @@ <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg + xmlns:inkstitch="http://inkstitch.org/namespace" 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#" @@ -14,7 +15,7 @@ viewBox="0 0 101.6 101.6" version="1.1" id="svg8" - inkscape:version="0.91+devel r" + inkscape:version="0.92.2 (unknown)" enable-background="new" sodipodi:docname="InkStitch Multi Color.svg"> <sodipodi:namedview @@ -25,10 +26,10 @@ inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:zoom="1.979899" - inkscape:cx="186.52413" + inkscape:cx="55.709376" inkscape:cy="107.28777" inkscape:document-units="mm" - inkscape:current-layer="g4828" + inkscape:current-layer="layer3" showgrid="false" inkscape:snap-global="false" units="in" @@ -47,356 +48,127 @@ <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> + <dc:title /> </cc:Work> </rdf:RDF> + <inkstitch:thread-palette /> + <inkstitch:client-overview-transform>"matrix(2.23777, 0, 0, 2.23777, -204, -268)"</inkstitch:client-overview-transform> </metadata> <g - id="g4808"> - <path - inkscape:connector-curvature="0" - id="path4334" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="M 34.811856,55.028284 V 41.664807 m -3.140416,13.29666 v -13.29666" - embroider_satin_column="True" - embroider_trim_after="True" - embroider_zigzag_spacing_mm="0.32" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.2" /> - <path - inkscape:connector-curvature="0" - embroider_zigzag_spacing_mm="0.33" - embroider_zigzag_underlay_spacing_mm="1.2" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay="True" - embroider_satin_column="True" - d="M 44.233107,54.961467 44.099472,44.872042 M 41.35996,54.961467 41.293142,44.938859" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="path4357" /> - <path - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" - d="M 42.829942,44.938859 41.694047,41.798443" - id="path4380" - inkscape:connector-curvature="0" - embroider_running_stitch_length_mm="2.5" /> - <path - inkscape:connector-curvature="0" - embroider_zigzag_underlay_spacing_mm="1.2" - embroider_zigzag_underlay_inset_mm=".4" - embroider_zigzag_underlay="True" - embroider_zigzag_spacing_mm="0.33" - embroider_satin_column="True" - d="m 50.246671,55.362371 4.944486,-1.069078 m -6.61492,0 6.481284,-3.407688 m -10.089422,-0.334086 4.744032,-4.744032 m -9.354434,1.403164 5.345393,-5.612661 m -5.412208,2.605878 3.608139,-3.474503 m -2.071341,0.46772 11.02487,10.690783 0.133633,3.474503 m -11.759859,-14.098468 0.06682,4.944486 3.34087,1.870887 7.884451,7.349913" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="path4416" /> - <path - embroider_trim_after="True" - inkscape:connector-curvature="0" - id="path4451" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 48.576237,45.874302 5.746295,-0.06681 m -5.87993,7.617174 6.614919,-2.605876 m -4.209494,4.877668 3.474505,-1.937705 m -1.336349,1.5368 -0.133633,-13.49711 m -0.400905,13.563928 -2.605879,-2.204974 0.133636,-11.425772" - embroider_satin_column="True" - embroider_zigzag_spacing_mm="0.33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_spacing_mm="1.2" - embroider_zigzag_underlay_inset_mm=".04" /> - <path - inkscape:connector-curvature="0" - id="path4508" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 62.035343,54.91994 -0.0945,-6.945313 m -3.023805,6.945313 0.09449,-6.992559" - embroider_satin_column="True" - embroider_zigzag_spacing_mm="0.33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.2" /> - <path - embroider_running_stitch_length_mm="2.5" - inkscape:connector-curvature="0" - id="path4539" - d="m 60.334448,47.785639 0.04725,-5.811383" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> - <path - inkscape:connector-curvature="0" - id="path4573" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 61.988093,41.59628 -0.04725,6.992559 m -2.929312,-7.039808 v 7.65402" - embroider_satin_column="True" - embroider_zigzag_spacing_mm=".33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.2" /> - <path - embroider_running_stitch_length_mm="2.5" - inkscape:connector-curvature="0" - id="path4608" - d="m 62.366072,48.25811 2.787573,-2.504093 2.787573,-3.638021" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> - <path - inkscape:connector-curvature="0" - embroider_trim_after="True" - id="path4652" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 64.019718,42.257739 7.417781,0.14174 m -11.150298,5.953125 7.654017,-0.33073 m -3.307291,6.283854 7.039808,-0.141739 m -1.511906,-12.473215 -4.960937,6.3311 5.480655,6.992559 m -4.299479,-13.465402 -5.008184,6.898066 5.480653,6.567336" - embroider_satin_column="True" - embroider_zigzag_spacing_mm="0.33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.2" /> - <path - id="path4343" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 33.072916,68.10186 -0.09449,-3.401788 m -0.921322,3.000188 -1.275667,-2.976563 m 0.944938,3.071056 -3.071056,-1.086681 m 3.638021,1.299292 -3.000184,2.055246 m 3.968749,-1.346538 c -0.0945,0.09449 -2.267857,2.740326 -2.267857,2.740326 m 4.441219,-1.322916 -3.567149,1.677267 m 3.449031,1.417413 -3.09468,-1.063059 m 0.212614,3.260045 -1.252048,-3.472656 m -1.063057,3.449032 -0.188989,-3.96875 m -0.614211,0.637836 c 0,0 1.252045,0.779576 2.173364,0.897692 0,0 1.086681,0.02363 1.393786,-0.566963 0,0 0.4016,-0.496093 -0.614211,-1.228422 0,0 -1.204799,-0.614211 -1.606399,-0.897694 0,0 -1.34654,-0.87407 -1.41741,-1.960751 0,0 -0.259859,-1.937128 1.559151,-2.504092 0,0 1.063058,-0.685082 3.449033,0.188988 m -4.77195,8.409968 c 0,0 2.409598,0.803201 3.96875,-0.02363 0,0 1.441035,-0.637826 1.441035,-2.055237 0,0 0.236235,-1.511905 -0.826823,-2.291481 0,0 -1.559152,-0.968564 -2.102493,-1.228422 0,0 -0.94494,-0.283482 -0.755952,-1.110305 0,0 0.07087,-0.755953 1.630022,-0.354353 0,0 0.826823,0.236235 1.441035,0.685082" - embroider_satin_column="True" - embroider_zigzag_spacing_mm="0.33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.2" - inkscape:connector-curvature="0" /> - <path - embroider_running_stitch_length_mm="2.5" - inkscape:connector-curvature="0" - id="path4394" - d="m 35.71875,66.849812 3.425409,-0.236233 -0.04725,3.307291 0.07087,3.071056 0.02363,0.944941" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> - <path - id="path4448" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 40.23084,74.503832 0.02363,-7.65402 m -2.078876,7.677642 0.02363,-7.630393" - embroider_satin_column="True" - embroider_zigzag_spacing_mm=".33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.2" - inkscape:connector-curvature="0" /> - <path - embroider_running_stitch_length_mm="2.5" - inkscape:connector-curvature="0" - id="path4503" - d="m 39.262277,66.471836 c 0,0 -2.645833,0 -2.763951,-0.02363 -0.118118,-0.02363 -0.73233,0.165364 -0.73233,0.165364" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> - <path - id="path4561" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 35.435267,67.629388 7.535899,0.02363 m -7.535899,-1.795393 h 7.535899" - embroider_satin_column="True" - embroider_zigzag_spacing_mm="0.33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.2" - inkscape:connector-curvature="0" /> - <path - embroider_running_stitch_length_mm="2.5" - inkscape:connector-curvature="0" - id="path4620" - d="m 44.624812,66.684447 0.519719,2.291483 c 0,0 0.259858,3.212798 0.212611,3.354538 -0.04725,0.14174 -0.118118,1.748139 -0.118118,1.748139" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> - <path - id="path4682" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 46.278458,74.503832 0.04725,-8.669829 m -2.102494,8.646204 0.02363,-8.575333" - embroider_satin_column="True" - embroider_zigzag_spacing_mm="0.33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.25" - inkscape:connector-curvature="0" /> - <path - embroider_running_stitch_length_mm="2.5" - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="path4745" - d="m 47.861235,66.778943 3.118303,-0.07087 0.259858,1.228423 0.118117,2.83482 0.02363,3.472657" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> - <path - id="path4811" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 52.420572,74.527454 v -7.677642 m -2.078868,7.630395 v -7.724888" - embroider_satin_column="True" - embroider_zigzag_spacing_mm=".33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.2" - inkscape:connector-curvature="0" /> - <path - embroider_running_stitch_length_mm="2.5" - inkscape:connector-curvature="0" - id="path4878" - d="m 51.357513,66.613579 -3.378162,0.04725" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> - <path - id="path4948" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 47.601375,67.653013 h 7.512277 m -7.535899,-1.771764 7.583146,-0.02363" - embroider_satin_column="True" - embroider_zigzag_spacing_mm=".33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.2" - inkscape:connector-curvature="0" /> - <path - embroider_running_stitch_length_mm="2.5" - inkscape:connector-curvature="0" - id="path5019" - d="m 57.357885,67.322284 -0.425222,1.464656 -0.165365,1.984375 0.590587,1.700893 2.220611,1.370166 h 1.653646 l 1.228423,-0.708708" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> - <path - id="path5109" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 61.657364,71.031176 0.02363,4.890066 m -1.630029,-4.417597 c 0,0 -0.566962,4.582962 -0.566962,4.51209 m -0.425225,-4.937313 c 0,0 -3.02381,3.543525 -3.000185,3.42541 m 2.409597,-4.181364 -3.874256,0.685083 m 3.945128,-1.913503 -3.28367,-0.661459 m 4.228611,0.02362 -1.795389,-3.165549 m 2.763951,3.047431 -0.212611,-3.992372 m 1.393788,4.370351 0.236233,-4.086868 m 0.803201,9.402156 c 0,0 -1.630024,1.039434 -3.23642,0.708705 0,0 -2.14974,-0.188986 -3.260045,-2.315102 0,0 -0.87407,-1.511905 -0.448847,-3.260045 0,0 0.4016,-2.196986 2.291481,-3.09468 0,0 2.456845,-1.34654 4.724702,0.330729 m 0.02362,5.315289 c 0,0 -1.488282,1.299295 -2.763952,1.063059 0,0 -1.677267,0.188989 -2.267855,-2.078868 0,0 -0.236235,-1.771764 0.921317,-2.740328 0,0 0.897693,-0.779576 2.409598,-0.425223 0,0 0.992187,0.496094 1.488281,1.063058" - embroider_satin_column="True" - embroider_zigzag_spacing_mm=".33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.2" - inkscape:connector-curvature="0" /> - <path - embroider_running_stitch_length_mm="2.5" - inkscape:connector-curvature="0" - id="path5184" - d="m 64.515809,67.275037 0.685083,0.614212 0.04725,3.567149 -0.14174,2.527716" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> - <path - id="path5262" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 66.193079,74.480207 -0.02363,-4.51209 m -2.007991,4.51209 v -4.630208" - embroider_satin_column="True" - embroider_zigzag_spacing_mm=".33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.2" - inkscape:connector-curvature="0" /> - <path - embroider_running_stitch_length_mm="2.4" - inkscape:connector-curvature="0" - id="path5341" - d="m 65.082774,69.613763 0.02363,-3.449031" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> - <path - id="path5423" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 66.169454,65.857625 0.02363,5.008186 m -2.031626,-5.031808 -10e-7,5.008183" - embroider_satin_column="True" - embroider_zigzag_spacing_mm=".33" - embroider_zigzag_underlay="True" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay_spacing_mm="1.2" - inkscape:connector-curvature="0" /> - <path - embroider_zigzag_underlay_spacing_mm="1.2" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay="True" - embroider_zigzag_spacing_mm=".33" - embroider_satin_column="True" - d="m 66.074961,69.070423 4.03962,-6e-6 m -4.346724,1.748145 4.417597,0.04725" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="path5508" - inkscape:connector-curvature="0" /> - <path - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" - d="m 70.256322,70.157104 0.401601,-2.007997 -0.09449,-1.984375" - id="path5593" - inkscape:connector-curvature="0" - embroider_running_stitch_length_mm="2.5" /> - <path - embroider_zigzag_underlay_spacing_mm="1.2" - embroider_zigzag_underlay_inset_mm=".04" - embroider_zigzag_underlay="True" - embroider_trim_after="True" - embroider_zigzag_spacing_mm=".33" - embroider_satin_column="True" - d="m 71.50837,65.857625 0.04725,8.646207 m -2.055249,-8.622583 0.04725,8.622583" - style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="path5681" - inkscape:connector-curvature="0" /> - </g> - <g - id="layer1" - inkscape:label="Ink Stitch - Black" - style="display:inline" - inkscape:groupmode="layer" /> - <g - id="g4815"> - <path - embroider_zigzag_spacing_mm="0.33" - embroider_satin_column="True" - d="m 67.051242,59.672092 -3.274052,0.03341 m 3.240643,-0.56795 c 0,0 -2.271792,-0.267269 -3.240643,-0.03341" - style="opacity:1;fill:none;fill-opacity:1;stroke:#4d4f53;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="path4730" - inkscape:connector-curvature="0" /> - <path - style="opacity:1;fill:none;fill-opacity:1;stroke:#4d4f53;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" - d="M 63.576739,59.505048 61.505398,59.97277 57.329313,60.00618 49.945993,60.073 43.297662,60.173227 36.114794,60.073 30.669177,60.00618 h -0.768398" - id="path4771" - inkscape:connector-curvature="0" - embroider_running_stitch_length_mm="2.5" /> - <path - embroider_center_walk_underlay_stitch_length_mm="2.5" - embroider_center_walk_underlay="True" - embroider_zigzag_spacing_mm=".33" - embroider_satin_column="True" - d="m 29.633508,60.874806 0.902036,0.534538 13.898014,-0.06682 c 0,0 2.639287,-0.400903 4.109269,-0.634765 l 12.595078,-0.16704 c 0,0 2.372017,0.334087 3.274051,0.334087 m -34.845264,-1.737254 0.935443,-0.534538 c 0,0 13.129614,-0.200453 13.630745,-0.06682 0,0 3.842,0.60136 4.744035,0.701586 l 12.194172,0.167043 c 0,0 2.639287,-0.400904 3.173826,-0.367496" - style="opacity:1;fill:none;fill-opacity:1;stroke:#4d4f53;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="path4815" - inkscape:connector-curvature="0" /> - <path - id="path4862" - style="opacity:1;fill:none;fill-opacity:1;stroke:#4d4f53;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="m 63.9016,60.84944 c 0,0 1.842632,0.165365 3.165549,-0.07087 m -3.212796,-0.519717 3.212796,-0.09449" - embroider_satin_column="True" - embroider_zigzag_spacing_mm="0.33" - inkscape:connector-curvature="0" /> - <path - embroider_trim_after="True" - embroider_center_walk_underlay_stitch_length_mm="2.5" - embroider_center_walk_underlay="True" - embroider_zigzag_spacing_mm="0.33" - embroider_satin_column="True" - d="m 66.26395,59.054055 c 0,0 2.787574,0.283482 4.29948,0.732329 m -4.370351,1.133928 c 0,0 4.015997,-0.614212 4.488468,-0.897694" - style="opacity:1;fill:none;fill-opacity:1;stroke:#4d4f53;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="path4911" - inkscape:connector-curvature="0" /> - </g> - <g inkscape:groupmode="layer" - id="layer3" - inkscape:label="Needle - Grey" - style="display:inline" /> - <g style="display:inline" - inkscape:groupmode="layer" - id="layer2" - inkscape:label="Hoop - Green"> + inkscape:label="Ink Stitch - Black" + id="layer1"> <g - id="g4828"> + style="display:inline" + id="g4808"> <path + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.32" + embroider_trim_after="True" + embroider_satin_column="True" + d="M 34.811856,55.028284 V 41.664807 m -3.140416,13.29666 v -13.29666" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4334" + inkscape:connector-curvature="0" /> + <path + id="path4357" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 44.233107,54.961467 44.099472,44.872042 M 41.35996,54.961467 41.293142,44.938859" + embroider_satin_column="True" + embroider_zigzag_underlay="True" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_spacing_mm="0.33" + inkscape:connector-curvature="0" /> + <path + embroider_running_stitch_length_mm="2.5" inkscape:connector-curvature="0" - embroider_fill_underlay_inset_mm=".3" - embroider_fill_underlay_angle="45" - embroider_fill_underlay="True" - embroider_max_stitch_length_mm="4" - id="path5770" - transform="scale(0.26458333)" - d="m 62.755859,185.12695 c 0,0 -4.54649,-0.12742 -5.55664,5.55469 v 66.03906 c 0,0 1.263006,5.68223 6.1875,5.42969 l 13.257812,0.12695 -0.125,-77.02539 z M 66.625,229.79688 c 2.370474,-0.0417 3.455078,1.29101 3.455078,1.29101 v 4.16797 c -0.378807,0.88388 -1.894531,1.13476 -1.894531,1.13476 l -3.410156,0.12696 c -2.399112,-0.63135 -2.777344,-3.15625 -2.777344,-3.15625 0.12627,-2.65165 2.777344,-3.2832 2.777344,-3.28321 0.686588,-0.18939 1.302577,-0.27164 1.849609,-0.28124 z m -0.513672,16.79492 c 0.175254,-0.005 0.361299,0.004 0.558594,0.0273 0,0 2.52549,-0.25241 2.904297,2.9043 0,0 0.378699,2.90439 -2.904297,3.2832 0,0 -3.534473,-7.9e-4 -3.408203,-3.03125 0,0 0.220808,-3.10729 2.849609,-3.18359 z" - style="opacity:1;fill:#003399;fill-opacity:1;stroke:none;stroke-width:1.70078731;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + id="path4380" + d="M 42.829942,44.938859 41.694047,41.798443" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> <path - style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.44999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998,0.44999998;stroke-dashoffset:0;stroke-opacity:1" - d="m 20.363467,48.919569 0.425223,-6.992559 1.464658,-4.582962 3.685268,-4.204986 4.299478,-2.598587 5.433409,-1.511903 6.66183,-0.188989 10.819569,-0.09449 11.622767,0.236236 5.149924,1.322916 5.149927,3.685268 3.354538,4.819194 1.27567,4.488469 0.614212,4.015996 -0.425225,3.779761" - id="path5866" + id="path4416" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 50.246671,55.362371 4.944486,-1.069078 m -6.61492,0 6.481284,-3.407688 m -10.089422,-0.334086 4.744032,-4.744032 m -9.354434,1.403164 5.345393,-5.612661 m -5.412208,2.605878 3.608139,-3.474503 m -2.071341,0.46772 11.02487,10.690783 0.133633,3.474503 m -11.759859,-14.098468 0.06682,4.944486 3.34087,1.870887 7.884451,7.349913" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" + embroider_zigzag_underlay="True" + embroider_zigzag_underlay_inset_mm=".4" + embroider_zigzag_underlay_spacing_mm="1.2" + inkscape:connector-curvature="0" /> + <path + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 48.576237,45.874302 5.746295,-0.06681 m -5.87993,7.617174 6.614919,-2.605876 m -4.209494,4.877668 3.474505,-1.937705 m -1.336349,1.5368 -0.133633,-13.49711 m -0.400905,13.563928 -2.605879,-2.204974 0.133636,-11.425772" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4451" + inkscape:connector-curvature="0" + embroider_trim_after="True" /> + <path + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 62.035343,54.91994 -0.0945,-6.945313 m -3.023805,6.945313 0.09449,-6.992559" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4508" + inkscape:connector-curvature="0" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" + d="m 60.334448,47.785639 0.04725,-5.811383" + id="path4539" inkscape:connector-curvature="0" embroider_running_stitch_length_mm="2.5" /> <path + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="m 61.988093,41.59628 -0.04725,6.992559 m -2.929312,-7.039808 v 7.65402" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4573" + inkscape:connector-curvature="0" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" + d="m 62.366072,48.25811 2.787573,-2.504093 2.787573,-3.638021" + id="path4608" inkscape:connector-curvature="0" - embroider_fill_underlay_inset_mm=".4" - embroider_fill_underlay_angle="45" - embroider_fill_underlay="True" - embroider_max_stitch_length_mm="4" - id="path5958" - transform="scale(0.26458333)" - d="m 316.91016,184.50195 c -1.66764,0.0725 -2.24805,2.39258 -2.24805,2.39258 l 0.12695,4.04102 c -0.50507,2.14657 -3.15625,2.65039 -3.15625,2.65039 -1.89404,0 -3.41015,-2.27344 -3.41015,-2.27344 l -6.56641,-0.75586 -0.125,70.70898 h 14.64648 c 3.78807,-0.12626 5.17774,-4.92382 5.17774,-4.92382 l 0.125,-66.66992 c -0.12627,-4.16689 -3.78711,-5.05079 -3.78711,-5.05079 -0.28411,-0.0947 -0.54497,-0.12949 -0.7832,-0.11914 z m -6.16211,45.44922 3.41015,0.25391 c 2.90419,0.63134 2.52539,3.15625 2.52539,3.15625 0.12627,1.89403 -2.40039,2.77734 -2.40039,2.77734 l -3.66211,0.25195 c -1.38895,-0.50507 -2.27148,-1.51367 -2.27148,-1.51367 l 0.125,-3.1582 c 0.12626,-1.76778 2.27344,-1.76758 2.27344,-1.76758 z m 1.76757,16.54102 c 0,0 2.65177,0.001 2.9043,3.1582 0,0 4.8e-4,3.15625 -3.15625,3.15625 0,0 -3.02998,-0.12579 -3.15625,-3.15625 0,0 0.25149,-3.03194 3.4082,-3.1582 z" - style="opacity:1;fill:#003399;fill-opacity:1;stroke:none;stroke-width:1.70078731;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - embroider_angle="180" /> + embroider_running_stitch_length_mm="2.5" /> + <path + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 64.019718,42.257739 7.417781,0.14174 m -11.150298,5.953125 7.654017,-0.33073 m -3.307291,6.283854 7.039808,-0.141739 m -1.511906,-12.473215 -4.960937,6.3311 5.480655,6.992559 m -4.299479,-13.465402 -5.008184,6.898066 5.480653,6.567336" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4652" + embroider_trim_after="True" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 33.072916,68.10186 -0.09449,-3.401788 m -0.921322,3.000188 -1.275667,-2.976563 m 0.944938,3.071056 -3.071056,-1.086681 m 3.638021,1.299292 -3.000184,2.055246 m 3.968749,-1.346538 c -0.0945,0.09449 -2.267857,2.740326 -2.267857,2.740326 m 4.441219,-1.322916 -3.567149,1.677267 m 3.449031,1.417413 -3.09468,-1.063059 m 0.212614,3.260045 -1.252048,-3.472656 m -1.063057,3.449032 -0.188989,-3.96875 m -0.614211,0.637836 c 0,0 1.252045,0.779576 2.173364,0.897692 0,0 1.086681,0.02363 1.393786,-0.566963 0,0 0.4016,-0.496093 -0.614211,-1.228422 0,0 -1.204799,-0.614211 -1.606399,-0.897694 0,0 -1.34654,-0.87407 -1.41741,-1.960751 0,0 -0.259859,-1.937128 1.559151,-2.504092 0,0 1.063058,-0.685082 3.449033,0.188988 m -4.77195,8.409968 c 0,0 2.409598,0.803201 3.96875,-0.02363 0,0 1.441035,-0.637826 1.441035,-2.055237 0,0 0.236235,-1.511905 -0.826823,-2.291481 0,0 -1.559152,-0.968564 -2.102493,-1.228422 0,0 -0.94494,-0.283482 -0.755952,-1.110305 0,0 0.07087,-0.755953 1.630022,-0.354353 0,0 0.826823,0.236235 1.441035,0.685082" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4343" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" + d="m 35.71875,66.849812 3.425409,-0.236233 -0.04725,3.307291 0.07087,3.071056 0.02363,0.944941" + id="path4394" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /> <path inkscape:connector-curvature="0" embroider_zigzag_underlay_spacing_mm="1.2" @@ -404,20 +176,255 @@ embroider_zigzag_underlay="True" embroider_zigzag_spacing_mm=".33" embroider_satin_column="True" - d="m 75.03592,69.527657 h 10.289876 m -11.893495,6.013564 h 11.225321 m -12.49485,4.476763 9.554885,3.474506 M 69.155989,83.358854 c 0,0.267269 4.34313,7.015824 4.34313,7.015824 m -7.550364,-5.412208 0.334087,7.149459 m 15.167546,-25.524237 0.200451,6.280832 c 0,0 -1.135896,15.902538 -17.105249,17.572972 m 13.898015,-23.786986 0.06682,6.414468 c 0,0 -1.069078,12.762119 -14.165286,14.098466" - style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="path6164" /> + d="m 40.23084,74.503832 0.02363,-7.65402 m -2.078876,7.677642 0.02363,-7.630393" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4448" /> <path - sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccc" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" + d="m 39.262277,66.471836 c 0,0 -2.645833,0 -2.763951,-0.02363 -0.118118,-0.02363 -0.73233,0.165364 -0.73233,0.165364" + id="path4503" inkscape:connector-curvature="0" - id="path6289" - style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="M 74.835466,54.761016 87.597585,54.62738 m -13.563928,-8.084902 11.960312,-4.34313 m -16.771162,-6.882191 8.018084,-7.483546 m -13.898015,5.144939 2.539061,-7.884452 m -20.312483,7.416729 -0.133636,-7.617181 m -10.69078,8.753077 -1.804069,-7.817634 M 27.662396,38.658027 20.713388,30.63994 m 4.409947,14.098468 -10.557146,-2.338609 m 10.891233,16.37026 -12.428033,1.00226 m 13.76438,12.962572 -11.559406,3.073599 m 15.434814,3.541321 -7.617181,9.554884 m 13.831198,-4.81085 c -0.133636,0.267269 -2.00452,8.552625 -2.00452,8.552625 m 29.733734,-7.483547 0.267269,7.550365 m 1.202714,-2.472243 -1.603619,0.200451 -28.865107,-0.06682 h 0.06682 c 0,0 -15.367996,-0.935442 -17.038431,-17.572971 l -0.06682,-28.531018 c 0,0 1.469982,-15.367998 17.572971,-16.83798 h 28.597838 c 0,0 14.833458,1.135895 16.971615,17.506154 l -0.133635,26.593317 m -15.835722,15.501633 -1.937702,0.267268 h -27.32831 c 0,0 -12.895754,-0.334086 -14.76664,-14.633005 V 45.005678 c 0,0 0.935443,-12.962572 14.432554,-14.432554 l 28.664657,-0.06682 c 0,0 12.294398,1.5368 13.697563,14.699824 v 26.259233" + embroider_running_stitch_length_mm="2.5" /> + <path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 35.435267,67.629388 7.535899,0.02363 m -7.535899,-1.795393 h 7.535899" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4561" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" + d="m 44.624812,66.684447 0.519719,2.291483 c 0,0 0.259858,3.212798 0.212611,3.354538 -0.04725,0.14174 -0.118118,1.748139 -0.118118,1.748139" + id="path4620" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /> + <path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.25" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 46.278458,74.503832 0.04725,-8.669829 m -2.102494,8.646204 0.02363,-8.575333" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4682" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" + d="m 47.861235,66.778943 3.118303,-0.07087 0.259858,1.228423 0.118117,2.83482 0.02363,3.472657" + id="path4745" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + embroider_running_stitch_length_mm="2.5" /> + <path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="m 52.420572,74.527454 v -7.677642 m -2.078868,7.630395 v -7.724888" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4811" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" + d="m 51.357513,66.613579 -3.378162,0.04725" + id="path4878" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /> + <path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" embroider_satin_column="True" + d="m 47.601375,67.653013 h 7.512277 m -7.535899,-1.771764 7.583146,-0.02363" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4948" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" + d="m 57.357885,67.322284 -0.425222,1.464656 -0.165365,1.984375 0.590587,1.700893 2.220611,1.370166 h 1.653646 l 1.228423,-0.708708" + id="path5019" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /> + <path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="m 61.657364,71.031176 0.02363,4.890066 m -1.630029,-4.417597 c 0,0 -0.566962,4.582962 -0.566962,4.51209 m -0.425225,-4.937313 c 0,0 -3.02381,3.543525 -3.000185,3.42541 m 2.409597,-4.181364 -3.874256,0.685083 m 3.945128,-1.913503 -3.28367,-0.661459 m 4.228611,0.02362 -1.795389,-3.165549 m 2.763951,3.047431 -0.212611,-3.992372 m 1.393788,4.370351 0.236233,-4.086868 m 0.803201,9.402156 c 0,0 -1.630024,1.039434 -3.23642,0.708705 0,0 -2.14974,-0.188986 -3.260045,-2.315102 0,0 -0.87407,-1.511905 -0.448847,-3.260045 0,0 0.4016,-2.196986 2.291481,-3.09468 0,0 2.456845,-1.34654 4.724702,0.330729 m 0.02362,5.315289 c 0,0 -1.488282,1.299295 -2.763952,1.063059 0,0 -1.677267,0.188989 -2.267855,-2.078868 0,0 -0.236235,-1.771764 0.921317,-2.740328 0,0 0.897693,-0.779576 2.409598,-0.425223 0,0 0.992187,0.496094 1.488281,1.063058" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path5109" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" + d="m 64.515809,67.275037 0.685083,0.614212 0.04725,3.567149 -0.14174,2.527716" + id="path5184" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.5" /> + <path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="m 66.193079,74.480207 -0.02363,-4.51209 m -2.007991,4.51209 v -4.630208" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path5262" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" + d="m 65.082774,69.613763 0.02363,-3.449031" + id="path5341" + inkscape:connector-curvature="0" + embroider_running_stitch_length_mm="2.4" /> + <path + inkscape:connector-curvature="0" + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="m 66.169454,65.857625 0.02363,5.008186 m -2.031626,-5.031808 -10e-7,5.008183" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path5423" /> + <path + inkscape:connector-curvature="0" + id="path5508" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 66.074961,69.070423 4.03962,-6e-6 m -4.346724,1.748145 4.417597,0.04725" + embroider_satin_column="True" + embroider_zigzag_spacing_mm=".33" + embroider_zigzag_underlay="True" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay_spacing_mm="1.2" /> + <path + embroider_running_stitch_length_mm="2.5" + inkscape:connector-curvature="0" + id="path5593" + d="m 70.256322,70.157104 0.401601,-2.007997 -0.09449,-1.984375" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path5681" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 71.50837,65.857625 0.04725,8.646207 m -2.055249,-8.622583 0.04725,8.622583" + embroider_satin_column="True" + embroider_zigzag_spacing_mm=".33" + embroider_trim_after="True" embroider_zigzag_underlay="True" embroider_zigzag_underlay_inset_mm=".04" embroider_zigzag_underlay_spacing_mm="1.2" /> </g> </g> + <g + style="display:inline" + inkscape:label="Needle - Grey" + id="layer3" + inkscape:groupmode="layer"> + <g + style="display:inline" + id="g4815"> + <path + inkscape:connector-curvature="0" + id="path4730" + style="opacity:1;fill:none;fill-opacity:1;stroke:#4d4f53;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 67.051242,59.672092 -3.274052,0.03341 m 3.240643,-0.56795 c 0,0 -2.271792,-0.267269 -3.240643,-0.03341" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" /> + <path + embroider_running_stitch_length_mm="2.5" + inkscape:connector-curvature="0" + id="path4771" + d="M 63.576739,59.505048 61.505398,59.97277 57.329313,60.00618 49.945993,60.073 43.297662,60.173227 36.114794,60.073 30.669177,60.00618 h -0.768398" + style="opacity:1;fill:none;fill-opacity:1;stroke:#4d4f53;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path4815" + style="opacity:1;fill:none;fill-opacity:1;stroke:#4d4f53;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 29.633508,60.874806 0.902036,0.534538 13.898014,-0.06682 c 0,0 2.639287,-0.400903 4.109269,-0.634765 l 12.595078,-0.16704 c 0,0 2.372017,0.334087 3.274051,0.334087 m -34.845264,-1.737254 0.935443,-0.534538 c 0,0 13.129614,-0.200453 13.630745,-0.06682 0,0 3.842,0.60136 4.744035,0.701586 l 12.194172,0.167043 c 0,0 2.639287,-0.400904 3.173826,-0.367496" + embroider_satin_column="True" + embroider_zigzag_spacing_mm=".33" + embroider_center_walk_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="2.5" /> + <path + inkscape:connector-curvature="0" + embroider_zigzag_spacing_mm="0.33" + embroider_satin_column="True" + d="m 63.9016,60.84944 c 0,0 1.842632,0.165365 3.165549,-0.07087 m -3.212796,-0.519717 3.212796,-0.09449" + style="opacity:1;fill:none;fill-opacity:1;stroke:#4d4f53;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4862" /> + <path + inkscape:connector-curvature="0" + id="path4911" + style="opacity:1;fill:none;fill-opacity:1;stroke:#4d4f53;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 66.26395,59.054055 c 0,0 2.787574,0.283482 4.29948,0.732329 m -4.370351,1.133928 c 0,0 4.015997,-0.614212 4.488468,-0.897694" + embroider_satin_column="True" + embroider_zigzag_spacing_mm="0.33" + embroider_center_walk_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="2.5" + embroider_trim_after="True" /> + </g> + </g> + <g + inkscape:label="Hoop - Green" + id="layer2" + inkscape:groupmode="layer" + style="display:inline"> + <g + id="g4828"> + <path + style="opacity:1;fill:#003399;fill-opacity:1;stroke:none;stroke-width:1.70078731;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 62.755859,185.12695 c 0,0 -4.54649,-0.12742 -5.55664,5.55469 v 66.03906 c 0,0 1.263006,5.68223 6.1875,5.42969 l 13.257812,0.12695 -0.125,-77.02539 z M 66.625,229.79688 c 2.370474,-0.0417 3.455078,1.29101 3.455078,1.29101 v 4.16797 c -0.378807,0.88388 -1.894531,1.13476 -1.894531,1.13476 l -3.410156,0.12696 c -2.399112,-0.63135 -2.777344,-3.15625 -2.777344,-3.15625 0.12627,-2.65165 2.777344,-3.2832 2.777344,-3.28321 0.686588,-0.18939 1.302577,-0.27164 1.849609,-0.28124 z m -0.513672,16.79492 c 0.175254,-0.005 0.361299,0.004 0.558594,0.0273 0,0 2.52549,-0.25241 2.904297,2.9043 0,0 0.378699,2.90439 -2.904297,3.2832 0,0 -3.534473,-7.9e-4 -3.408203,-3.03125 0,0 0.220808,-3.10729 2.849609,-3.18359 z" + transform="scale(0.26458333)" + id="path5770" + embroider_max_stitch_length_mm="4" + embroider_fill_underlay="True" + embroider_fill_underlay_angle="45" + embroider_fill_underlay_inset_mm=".3" + inkscape:connector-curvature="0" /> + <path + embroider_running_stitch_length_mm="2.5" + inkscape:connector-curvature="0" + id="path5866" + d="m 20.363467,48.919569 0.425223,-6.992559 1.464658,-4.582962 3.685268,-4.204986 4.299478,-2.598587 5.433409,-1.511903 6.66183,-0.188989 10.819569,-0.09449 11.622767,0.236236 5.149924,1.322916 5.149927,3.685268 3.354538,4.819194 1.27567,4.488469 0.614212,4.015996 -0.425225,3.779761" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.44999998, 0.44999998;stroke-dashoffset:0;stroke-opacity:1" /> + <path + embroider_angle="180" + style="opacity:1;fill:#003399;fill-opacity:1;stroke:none;stroke-width:1.70078731;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 316.91016,184.50195 c -1.66764,0.0725 -2.24805,2.39258 -2.24805,2.39258 l 0.12695,4.04102 c -0.50507,2.14657 -3.15625,2.65039 -3.15625,2.65039 -1.89404,0 -3.41015,-2.27344 -3.41015,-2.27344 l -6.56641,-0.75586 -0.125,70.70898 h 14.64648 c 3.78807,-0.12626 5.17774,-4.92382 5.17774,-4.92382 l 0.125,-66.66992 c -0.12627,-4.16689 -3.78711,-5.05079 -3.78711,-5.05079 -0.28411,-0.0947 -0.54497,-0.12949 -0.7832,-0.11914 z m -6.16211,45.44922 3.41015,0.25391 c 2.90419,0.63134 2.52539,3.15625 2.52539,3.15625 0.12627,1.89403 -2.40039,2.77734 -2.40039,2.77734 l -3.66211,0.25195 c -1.38895,-0.50507 -2.27148,-1.51367 -2.27148,-1.51367 l 0.125,-3.1582 c 0.12626,-1.76778 2.27344,-1.76758 2.27344,-1.76758 z m 1.76757,16.54102 c 0,0 2.65177,0.001 2.9043,3.1582 0,0 4.8e-4,3.15625 -3.15625,3.15625 0,0 -3.02998,-0.12579 -3.15625,-3.15625 0,0 0.25149,-3.03194 3.4082,-3.1582 z" + transform="scale(0.26458333)" + id="path5958" + embroider_max_stitch_length_mm="4" + embroider_fill_underlay="True" + embroider_fill_underlay_angle="45" + embroider_fill_underlay_inset_mm=".4" + inkscape:connector-curvature="0" /> + <path + id="path6164" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 75.03592,69.527657 h 10.289876 m -11.893495,6.013564 h 11.225321 m -12.49485,4.476763 9.554885,3.474506 M 69.155989,83.358854 c 0,0.267269 4.34313,7.015824 4.34313,7.015824 m -7.550364,-5.412208 0.334087,7.149459 m 15.167546,-25.524237 0.200451,6.280832 c 0,0 -1.135896,15.902538 -17.105249,17.572972 m 13.898015,-23.786986 0.06682,6.414468 c 0,0 -1.069078,12.762119 -14.165286,14.098466" + embroider_satin_column="True" + embroider_zigzag_spacing_mm=".33" + embroider_zigzag_underlay="True" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay_spacing_mm="1.2" + inkscape:connector-curvature="0" /> + <path + embroider_zigzag_underlay_spacing_mm="1.2" + embroider_zigzag_underlay_inset_mm=".04" + embroider_zigzag_underlay="True" + embroider_zigzag_spacing_mm=".33" + embroider_satin_column="True" + d="M 74.835466,54.761016 87.597585,54.62738 m -13.563928,-8.084902 11.960312,-4.34313 m -16.771162,-6.882191 8.018084,-7.483546 m -13.898015,5.144939 2.539061,-7.884452 m -20.312483,7.416729 -0.133636,-7.617181 m -10.69078,8.753077 -1.804069,-7.817634 M 27.662396,38.658027 20.713388,30.63994 m 4.409947,14.098468 -10.557146,-2.338609 m 10.891233,16.37026 -12.428033,1.00226 m 13.76438,12.962572 -11.559406,3.073599 m 15.434814,3.541321 -7.617181,9.554884 m 13.831198,-4.81085 c -0.133636,0.267269 -2.00452,8.552625 -2.00452,8.552625 m 29.733734,-7.483547 0.267269,7.550365 m 1.202714,-2.472243 -1.603619,0.200451 -28.865107,-0.06682 h 0.06682 c 0,0 -15.367996,-0.935442 -17.038431,-17.572971 l -0.06682,-28.531018 c 0,0 1.469982,-15.367998 17.572971,-16.83798 h 28.597838 c 0,0 14.833458,1.135895 16.971615,17.506154 l -0.133635,26.593317 m -15.835722,15.501633 -1.937702,0.267268 h -27.32831 c 0,0 -12.895754,-0.334086 -14.76664,-14.633005 V 45.005678 c 0,0 0.935443,-12.962572 14.432554,-14.432554 l 28.664657,-0.06682 c 0,0 12.294398,1.5368 13.697563,14.699824 v 26.259233" + style="opacity:1;fill:none;fill-opacity:1;stroke:#003399;stroke-width:0.44999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path6289" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccc" /> + </g> + </g> </svg> diff --git a/images/examples/Monogram Frame Example.svg b/images/examples/Monogram Frame Example.svg new file mode 100644 index 00000000..ffb21b75 --- /dev/null +++ b/images/examples/Monogram Frame Example.svg @@ -0,0 +1,586 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:inkstitch="http://inkstitch.org/namespace" + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="100mm" + height="100mm" + viewBox="0 0 100 100" + version="1.1" + id="svg8" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="Monogram Frame Example.svg" + inkscape:export-filename="/media/Files/Projects/InkStitch/Embroidery Examples/Monogram Frame Example/Monogram Frame.png" + inkscape:export-xdpi="300" + inkscape:export-ydpi="300"> + <sodipodi:namedview + id="base" + pagecolor="#8c8c8c" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="1.4" + inkscape:cx="42.435391" + inkscape:cy="77.594112" + inkscape:document-units="mm" + inkscape:current-layer="layer5" + showgrid="false" + inkscape:snap-global="false" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="2560" + inkscape:window-height="1412" + inkscape:window-x="3840" + inkscape:window-y="0" + inkscape:window-maximized="1" /> + <defs + id="defs2"> + <inkscape:path-effect + effect="powerstroke" + id="path-effect966" + is_visible="true" + offset_points="0,0.60026582" + sort_points="true" + interpolator_type="CubicBezierJohan" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" /> + <inkscape:path-effect + effect="spiro" + id="path-effect964" + is_visible="true" /> + <inkscape:path-effect + end_linecap_type="zerowidth" + miter_limit="4" + linejoin_type="extrp_arc" + start_linecap_type="zerowidth" + interpolator_beta="0.2" + interpolator_type="CubicBezierJohan" + sort_points="true" + offset_points="0,0.50799995" + is_visible="true" + id="path-effect941" + effect="powerstroke" /> + <inkscape:path-effect + is_visible="true" + id="path-effect939" + effect="spiro" /> + <inkscape:path-effect + end_linecap_type="zerowidth" + miter_limit="4" + linejoin_type="extrp_arc" + start_linecap_type="zerowidth" + interpolator_beta="0.2" + interpolator_type="CubicBezierJohan" + sort_points="true" + offset_points="0,0.50799995" + is_visible="true" + id="path-effect935" + effect="powerstroke" /> + <inkscape:path-effect + is_visible="true" + id="path-effect933" + effect="spiro" /> + <inkscape:path-effect + effect="powerstroke" + id="path-effect929" + is_visible="true" + offset_points="0,0.48276678" + sort_points="true" + interpolator_type="CubicBezierJohan" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" /> + <inkscape:path-effect + effect="spiro" + id="path-effect927" + is_visible="true" /> + <inkscape:path-effect + effect="powerstroke" + id="path-effect915" + is_visible="true" + offset_points="0.04647546,0.36953698" + sort_points="true" + interpolator_type="CubicBezierJohan" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" /> + <inkscape:path-effect + effect="spiro" + id="path-effect913" + is_visible="true" /> + <inkscape:path-effect + end_linecap_type="zerowidth" + miter_limit="4" + linejoin_type="extrp_arc" + start_linecap_type="zerowidth" + interpolator_beta="0.2" + interpolator_type="CubicBezierJohan" + sort_points="true" + offset_points="0,0.50799995" + is_visible="true" + id="path-effect890" + effect="powerstroke" /> + <inkscape:path-effect + is_visible="true" + id="path-effect888" + effect="spiro" /> + <inkscape:path-effect + is_visible="true" + id="path-effect888-3" + effect="spiro" /> + <inkscape:path-effect + end_linecap_type="zerowidth" + miter_limit="4" + linejoin_type="extrp_arc" + start_linecap_type="zerowidth" + interpolator_beta="0.2" + interpolator_type="CubicBezierJohan" + sort_points="true" + offset_points="0,1.9199998" + is_visible="true" + id="path-effect890-6" + effect="powerstroke" /> + <inkscape:path-effect + is_visible="true" + id="path-effect888-5" + effect="spiro" /> + <inkscape:path-effect + end_linecap_type="zerowidth" + miter_limit="4" + linejoin_type="extrp_arc" + start_linecap_type="zerowidth" + interpolator_beta="0.2" + interpolator_type="CubicBezierJohan" + sort_points="true" + offset_points="0,1.9199998" + is_visible="true" + id="path-effect890-3" + effect="powerstroke" /> + <inkscape:path-effect + is_visible="true" + id="path-effect939-6" + effect="spiro" /> + <inkscape:path-effect + end_linecap_type="zerowidth" + miter_limit="4" + linejoin_type="extrp_arc" + start_linecap_type="zerowidth" + interpolator_beta="0.2" + interpolator_type="CubicBezierJohan" + sort_points="true" + offset_points="0,1.9199998" + is_visible="true" + id="path-effect941-2" + effect="powerstroke" /> + </defs> + <metadata + id="metadata5"> + <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></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evan West at Wild West Designs</dc:title> + </cc:Agent> + </dc:creator> + <dc:rights> + <cc:Agent> + <dc:title>License to Use</dc:title> + </cc:Agent> + </dc:rights> + <dc:publisher> + <cc:Agent> + <dc:title>Wild West Designs</dc:title> + </cc:Agent> + </dc:publisher> + <dc:source>www.wildwestdesigns.biz</dc:source> + </cc:Work> + </rdf:RDF> + <inkstitch:thread-palette /> + <inkstitch:color-191D1F>"Black Stallion"</inkstitch:color-191D1F> + <inkstitch:client-overview-transform>"matrix(1.53415, 0, 0, 1.53415, -188.975, -188.975)"</inkstitch:client-overview-transform> + </metadata> + <g + inkscape:groupmode="layer" + id="layer5" + inkscape:label="Instruction"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="36.474705" + y="106.80357" + id="text2177"><tspan + sodipodi:role="line" + id="tspan2175" + x="36.474705" + y="106.80357" + style="stroke-width:0.26458332px">Instructions</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="0.1889881" + y="117.19791" + id="text2181"><tspan + sodipodi:role="line" + id="tspan2179" + x="0.1889881" + y="117.19791" + style="stroke-width:0.26458332px">1. Frame intended to have monogram</tspan><tspan + sodipodi:role="line" + x="0.1889881" + y="123.37152" + style="stroke-width:0.26458332px" + id="tspan2183">letters to be sandwiched between both</tspan><tspan + sodipodi:role="line" + x="0.1889881" + y="129.54514" + style="stroke-width:0.26458332px" + id="tspan2185">frames. The monogram can be longer </tspan><tspan + sodipodi:role="line" + x="0.1889881" + y="135.71873" + style="stroke-width:0.26458332px" + id="tspan2187">then the frames if desired.</tspan><tspan + sodipodi:role="line" + x="0.1889881" + y="141.89235" + style="stroke-width:0.26458332px" + id="tspan2189" /><tspan + sodipodi:role="line" + x="0.1889881" + y="148.06596" + style="stroke-width:0.26458332px" + id="tspan2191">2. Can use both frames, or delete either</tspan><tspan + sodipodi:role="line" + x="0.1889881" + y="154.23956" + style="stroke-width:0.26458332px" + id="tspan2193">one and just use it as a top or bottom </tspan><tspan + sodipodi:role="line" + x="0.1889881" + y="160.41318" + style="stroke-width:0.26458332px" + id="tspan2195">frame</tspan></text> + </g> + <g + inkscape:label="Monogram Frame Top" + id="layer2" + inkscape:groupmode="layer"> + <path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="True" + embroider_pull_compensation_mm="None" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.33" + embroider_stop_after="False" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 42.04985,19.491072 3.212799,3.401786 m -6.803573,-1.842634 c 0.236236,0.141741 3.732517,4.063244 3.921503,4.204985 m -6.945312,-2.409599 2.173364,3.968752 m -6.047621,-3.921504 0.141743,5.055431 m -4.299479,-5.811384 c 0,0 -0.377976,5.291666 -0.377976,5.102679 m -4.393974,-7.228795 c 0,0 -2.22061,5.811384 -2.078869,5.480655 M 20.31622,17.45945 c 0,0 -4.346726,3.827009 -4.204985,3.63802 m 3.921503,-6.472842 h -4.535714 m 6.425595,-1.842634 -2.315104,-3.1655502 m 4.252232,3.1183042 0.236235,-4.4412208 m 1.511905,4.4412208 1.606398,-2.787575 m 0.04725,2.551339 c 0,0 -2.126115,-2.551339 -5.480653,-1.133928 0,0 -4.015997,0.850446 -3.49628,6.520089 0,0 2.078869,6.709078 13.559896,7.181548 0,0 4.157738,0.803199 12.614955,-4.913691 M 27.63951,12.309524 c 0,0 -3.35454,-3.4962795 -7.465031,-0.897693 0,0 -4.724702,2.976562 -1.937128,8.693452 0,0 1.937128,4.866444 13.323661,6.425596 0,0 3.49628,0.519717 9.402158,-2.55134 0,0 3.307291,-2.22061 4.252232,-3.118303" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path1034" /> + <path + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.07, 0.07;stroke-dashoffset:0" + d="m 44.648437,20.625 1.086681,0.708706 2.267857,2.126116 1.653646,1.700892 1.559153,-1.275669 2.409597,-2.267857 1.370163,-1.322917 2.4096,1.74814 2.645834,1.606399 3.96875,1.370163 3.63802,0.614212 3.401785,-0.377976 3.354539,-0.897694 3.590774,-1.511905 2.787573,-2.362351 0.944941,-1.370164 0.425222,-1.559151 0.188989,-1.795387 -0.850447,-2.173363 -1.322917,-1.74814 -1.55915,-0.850446 -1.181176,-0.330729 -1.370164,-0.141742 -1.511906,0.236236 -0.472469,0.236235" + id="path1089" + inkscape:connector-curvature="0" + embroider_manual_stitch="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + embroider_repeats="1" + embroider_running_stitch_length_mm="1.6" + embroider_trim_after="False" /> + <path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="False" + embroider_pull_compensation_mm="None" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.33" + embroider_stop_after="False" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 56.271205,19.372954 -1.842633,1.866258 m 3.212796,-1.299294 -2.102493,2.62221 m 4.346728,-1.630022 -2.267857,2.858445 m 5.19717,-1.181176 -2.244233,3.307292 m 5.149927,-2.740327 -1.346541,3.827008 m 4.913691,-3.519903 c 0.02363,0.141741 -0.425223,4.134115 -0.425223,4.134115 m 3.756139,-4.701079 0.259858,3.49628 m 3.260045,-5.055432 c 0.07087,0.09449 0.732329,3.921503 0.732329,4.039621 m 1.937126,-5.787761 c 0.118118,0.04725 2.527718,2.551339 2.527718,2.551339 m -1.015812,-5.527901 3.141927,2.362351 m -3.000187,-4.275856 3.354541,0.755953 m -4.110493,-2.22061 3.732514,-0.590588 m -5.598771,-0.637835 c 0,0 3.283667,-1.771763 3.189174,-1.724516 m -4.724702,1.252046 c 0,0 1.157552,-2.3387278 1.086681,-2.2442337 M 74.626673,11.74256 74.39044,9.7109379 M 73.776228,11.34096 c 0,0 2.763951,-1.393787 5.504278,0.47247 0,0 2.126116,0.944941 2.338728,4.228609 0,0 0.377976,2.976563 -3.118304,5.622396 0,0 -5.71689,3.661644 -10.937686,3.047433 0,0 -6.803571,-0.141741 -11.292038,-4.724702 l -0.944941,-0.04725 m 18.30822,-9.071426 c 0,0 4.252233,-2.1497396 7.654018,1.630022 0,0 3.236423,3.614398 -0.141739,8.3391 0,0 -1.67727,2.645834 -6.685454,4.346726 0,0 -3.992374,1.252046 -7.016183,1.204799 0,0 -2.811198,-0.02362 -4.795573,-0.992187 0,0 -5.598773,-1.582775 -8.008371,-4.819196" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path1192" /> + <path + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.07, 0.07;stroke-dashoffset:0" + d="m 55.042781,20.199777 -1.653646,-1.74814 -2.740326,-2.504092 h 1.889881 l 1.724517,0.07087 1.346539,-0.283483 1.393788,-0.54334 1.228423,-0.944941 1.110303,-1.34654 L 59.909225,11.41183 60.169083,9.805432 59.909225,8.4116449 59.507625,7.3249633 58.846166,6.5217637 58.019343,5.883929 56.814545,5.5059529 55.893228,5.5295775 54.995534,5.7894362 54.286829,6.238283 53.81436,6.7343768" + id="path1251" + inkscape:connector-curvature="0" + embroider_manual_stitch="False" + embroider_zigzag_spacing_mm="0.4" + embroider_running_stitch_length_mm="1.6" + embroider_trim_after="False" + embroider_stop_after="False" + embroider_repeats="1" /> + <path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="False" + embroider_pull_compensation_mm="None" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.33" + embroider_stop_after="False" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 50.380304,14.306708 -0.0167,2.255087 m 0.968848,-2.238382 0.400905,2.488947 m 1.085784,-2.004522 0.183747,2.104748 m 1.703843,-2.221678 0.133636,2.004522 m 1.88759,-2.923261 c 0.06682,0.03341 0.868625,1.904295 0.868625,1.904295 m 0.684879,-3.925521 c 0.100227,0.08352 1.937705,1.80407 1.937705,1.80407 M 58.983043,9.7130131 c 0.08352,0 2.388722,0.8018089 2.388722,0.8018089 M 58.54873,7.9590568 c 0.08352,-0.050113 2.388721,-0.1670433 2.388721,-0.1670433 M 57.763626,6.5558918 c 0.06682,-0.016703 1.653731,-0.7182869 1.653731,-0.7182869 m -3.090304,0.233861 c 0.01669,-0.066817 1.018965,-1.3363477 1.018965,-1.3363477 M 55.207862,6.3387353 54.957297,5.0023879 m -0.68488,1.9209996 -0.751694,-0.8185129 m 0.217157,0.9187389 c 0,0 1.035669,-1.4699824 2.873147,-1.3363475 0,0 1.553504,0.1503391 2.438834,1.4699824 0,0 0.835218,1.2194172 0.734992,2.4889475 0,0 0.183747,1.8541821 -1.302939,3.6916601 0,0 -1.436574,1.770661 -3.908817,2.154861 0,0 -2.071339,0.200452 -4.042452,-0.701583 l -0.400904,-0.0167 m 3.441094,-7.9178639 c 0,0 0.968851,-1.6203215 3.173825,-1.5033911 0,0 2.572471,0.1169305 3.49121,2.9900779 0,0 1.069078,3.3241651 -1.620322,6.0135641 0,0 -1.737252,1.820774 -4.059156,2.004522 0,0 -2.572468,0.217156 -4.343129,-0.501131" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path1337" /> + <path + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.07, 0.07;stroke-dashoffset:0" + d="m 50.199961,15.356957 -1.204798,0.637835 -1.819011,0.4016 h -2.102493 l -1.96075,-0.47247 -1.441035,-0.779576 -1.015812,-0.897694 -0.850445,-1.724516 -0.496093,-1.582776 0.07087,-1.7008922 0.54334,-1.2047993 0.590587,-0.921317 0.708707,-0.5315289 0.696894,-0.3779762 0.956752,-0.2126116 1.004,0.059059 0.791387,0.2952939 0.519717,0.3661645 0.12993,0.141741" + id="path1400" + inkscape:connector-curvature="0" + embroider_manual_stitch="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + embroider_repeats="1" + embroider_running_stitch_length_mm="1.6" + embroider_trim_after="False" /> + <path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="False" + embroider_pull_compensation_mm="None" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.33" + embroider_stop_after="False" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 49.680246,14.305711 0.07087,2.067057 m -1.381976,-1.700893 0.685083,2.279669 M 46.656437,14.83724 c 0.02363,0.04725 0.566962,2.634021 0.566962,2.634021 m -2.988374,-2.574962 c 0,0.04725 0.0118,2.704892 0.0118,2.704892 m -1.228409,-3.519903 c -0.01183,0.08268 -0.496094,3.082868 -0.496094,3.082868 m -0.614212,-3.933315 -1.063058,2.846633 m 0.118118,-4.264044 -1.559153,2.185175 m 1.015812,-3.106492 -2.078871,0.826823 m 2.267858,-2.1497393 c -0.04725,-0.011811 -2.539527,0.295294 -2.539527,0.295294 m 3.023809,-1.7245163 c -0.04725,0 -1.972564,-0.9331288 -1.972564,-0.9331288 m 2.988377,-0.059059 -0.862259,-1.6536458 m 2.49228,1.5237164 0.0118,-1.8898809 m 0.956763,2.0079985 0.649647,-1.358352 m 0.188989,1.063058 c 0,0 -1.641835,-1.8071986 -4.02781,-0.7795757 0,0 -1.88988,0.6850818 -2.504091,3.1301153 0,0 -0.755952,2.6812686 1.27567,5.2680436 0,0 1.925316,2.350539 4.71289,2.586774 0,0 2.232422,0.259859 3.756139,-0.47247 0,0 0.342541,-0.177176 0.649646,-0.437035 l 0.531529,-0.165364 M 45.357142,7.088728 c 0,0 -1.700893,-1.6654574 -3.732514,-0.4488466 0,0 -1.736328,0.921317 -1.81901,3.4372206 0,0 -0.12993,1.67727 1.027622,3.283669 0,0 1.523717,1.972563 3.767951,2.385974 0,0 2.315104,0.566965 4.84282,-0.980375 l 0.496093,0.01181" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path1494" /> + <path + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.07, 0.07;stroke-dashoffset:0" + d="m 50.034597,15.380581 1.228423,1.228422 2.008,1.74814 1.55915,1.322917 0.0945,0.850446 -1.27567,1.322917 -1.960753,1.937128 -1.748139,1.34654" + id="path1563" + inkscape:connector-curvature="0" + embroider_manual_stitch="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + embroider_repeats="1" + embroider_running_stitch_length_mm="1.6" + embroider_trim_after="False" /> + <path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="False" + embroider_pull_compensation_mm="None" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.33" + embroider_stop_after="False" + embroider_satin_column="True" + sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccc" + inkscape:connector-curvature="0" + d="m 49.24321,22.762928 -0.909506,2.586775 M 48.203775,21.69987 c -0.05906,0.03543 -1.807199,2.303292 -1.807199,2.303292 m 1.216613,-3.200986 -2.917506,1.441035 m 1.46466,-1.94894 -3.413599,0.03544 m 4.299479,-0.744145 c -0.04725,-0.01181 -2.634022,-1.228423 -2.634022,-1.228423 m 3.886068,0.09449 -1.771764,-1.937128 m 2.681269,0.815011 -0.555151,-2.787574 m 1.370163,2.303293 -0.03544,-3.260045 m 0.968566,4.03962 c 0.0118,-0.04725 0.68508,-2.763951 0.68508,-2.763951 m 0.354354,4.015997 2.137926,-2.149739 m -1.181174,2.929315 2.291479,-1.488281 m -2.30329,2.185175 c 0.05906,0 4.086865,-0.661458 4.086865,-0.661458 m -4.98456,1.34654 c 0.07087,0.05906 3.378163,1.523716 3.378163,1.523716 M 50.873229,22.39676 c 0.05906,0.04725 1.736328,2.326915 1.736328,2.326915 m -2.397786,-1.228422 0.330729,2.704892 m -0.519718,-0.165365 6.272043,-6.035807 -6.31929,-5.764137 -6.354725,6.106678 6.295665,5.78776 m 0.02362,-1.901692 4.275854,-4.181362 -4.228608,-3.909691 -4.358537,4.252232 4.228608,3.862444" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path1665" /> + <path + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.07, 0.07;stroke-dashoffset:0" + d="m 49.892857,24.227586 0.08268,1.866257 -0.0118,0.850448" + id="path1736" + inkscape:connector-curvature="0" + embroider_manual_stitch="True" /> + <path + embroider_trim_after="False" + embroider_running_stitch_length_mm="1.6" + embroider_repeats="1" + embroider_stop_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_manual_stitch="False" + inkscape:connector-curvature="0" + id="path1808" + d="M 49.979402,27.035418 31.136899,27.002009 14.566189,26.801558" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.07, 0.07;stroke-dashoffset:0" /> + <path + id="path1882-7" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 14.322543,27.605144 71.427782,0.03341 m -71.451405,-1.73903 71.42778,0.03341" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_stop_after="False" + embroider_zigzag_spacing_mm="0.33" + embroider_trim_after="True" + embroider_pull_compensation_mm="None" + embroider_center_walk_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_contour_underlay="False" + embroider_zigzag_underlay="False" /> + </g> + <g + inkscape:label="Monogram Frame Bottom" + id="layer4" + inkscape:groupmode="layer"> + <path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="True" + embroider_pull_compensation_mm="None" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.33" + embroider_stop_after="False" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 42.049851,83.55084 3.212799,-3.401787 m -6.803573,1.842635 c 0.236236,-0.141741 3.732517,-4.063246 3.921503,-4.204987 m -6.945312,2.4096 2.173364,-3.968754 m -6.047622,3.921506 0.141744,-5.055433 m -4.29948,5.811387 c 0,0 -0.377975,-5.291669 -0.377975,-5.102682 m -4.393975,7.228798 c 0,0 -2.22061,-5.811386 -2.078869,-5.480657 m -0.236235,8.031996 c 0,0 -4.346726,-3.827009 -4.204985,-3.63802 m 3.921503,6.472842 h -4.535714 m 6.425595,1.842634 -2.315104,3.16555 m 4.252232,-3.118304 0.236235,4.441221 m 1.511906,-4.441221 1.606397,2.787575 m 0.04725,-2.551339 c 0,0 -2.126115,2.551339 -5.480654,1.133928 0,0 -4.015997,-0.850446 -3.49628,-6.520089 0,0 2.078869,-6.709079 13.559897,-7.18155 0,0 4.157738,-0.803199 12.614955,4.913693 m -16.819942,7.843006 c 0,0 -3.354541,3.49628 -7.465032,0.897693 0,0 -4.724702,-2.976562 -1.937128,-8.693452 0,0 1.937128,-4.866446 13.323662,-6.425599 0,0 3.49628,-0.519717 9.402157,2.551342 0,0 3.307292,2.220611 4.252233,3.118304" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path1034-2" /> + <path + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.07, 0.07;stroke-dashoffset:0" + d="m 44.648438,82.416912 1.086681,-0.708706 2.267857,-2.126117 1.653646,-1.700893 1.559153,1.27567 2.409597,2.267858 1.370163,1.322917 2.409601,-1.74814 2.645833,-1.6064 3.96875,-1.370164 3.638021,-0.614212 3.401785,0.377976 3.354538,0.897695 3.590774,1.511905 2.787573,2.362352 0.944941,1.370164 0.425223,1.559151 0.188989,1.795387 -0.850448,2.173363 -1.322916,1.74814 -1.55915,0.850446 -1.181177,0.330729 -1.370163,0.141742 -1.511906,-0.236236 -0.472469,-0.236235" + id="path1089-0" + inkscape:connector-curvature="0" + embroider_manual_stitch="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + embroider_repeats="1" + embroider_running_stitch_length_mm="1.6" + embroider_trim_after="False" /> + <path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="False" + embroider_pull_compensation_mm="None" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.33" + embroider_stop_after="False" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="M 56.271205,83.668958 54.428573,81.8027 m 3.212796,1.299294 -2.102493,-2.62221 m 4.346728,1.630022 -2.267857,-2.858446 m 5.19717,1.181177 -2.244232,-3.307294 m 5.149926,2.740328 -1.346541,-3.82701 m 4.913691,3.519905 c 0.02363,-0.141741 -0.425223,-4.134117 -0.425223,-4.134117 m 3.756139,4.701081 0.259858,-3.496282 m 3.260045,5.055435 c 0.07087,-0.09449 0.73233,-3.921505 0.73233,-4.039623 m 1.937125,5.787763 c 0.118118,-0.04725 2.527718,-2.551339 2.527718,-2.551339 m -1.015812,5.527901 3.141927,-2.362351 m -3.000187,4.275856 3.354541,-0.755953 m -4.110492,2.22061 3.732514,0.590588 m -5.598771,0.637835 c 0,0 3.283667,1.771763 3.189173,1.724516 M 76.303945,91.48834 c 0,0 1.157552,2.338728 1.08668,2.244234 m -2.763951,-2.433222 -0.236233,2.031622 m -0.614212,-1.630022 c 0,0 2.763952,1.393787 5.504278,-0.47247 0,0 2.126115,-0.944941 2.338729,-4.228609 0,0 0.377976,-2.976563 -3.118305,-5.622396 0,0 -5.716889,-3.661646 -10.937687,-3.047434 0,0 -6.80357,0.141741 -11.292036,4.724703 l -0.944943,0.04725 m 18.308222,9.071426 c 0,0 4.252232,2.14974 7.654017,-1.630022 0,0 3.236423,-3.614398 -0.14174,-8.3391 0,0 -1.677268,-2.645835 -6.685452,-4.346728 0,0 -3.992374,-1.252047 -7.016184,-1.2048 0,0 -2.811197,0.02362 -4.795572,0.992188 0,0 -5.598774,1.582776 -8.008372,4.819198" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path1192-2" /> + <path + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.07, 0.07;stroke-dashoffset:0" + d="m 55.042782,82.842135 -1.653646,1.74814 -2.740326,2.504092 h 1.889881 l 1.724517,-0.07087 1.346539,0.283483 1.393788,0.54334 1.228423,0.944941 1.110303,1.34654 0.566965,1.488281 0.259858,1.606398 -0.259858,1.393787 -0.4016,1.086682 -0.661459,0.803199 -0.826822,0.637835 -1.204799,0.377976 -0.921316,-0.02362 -0.897695,-0.259859 -0.708705,-0.448847 -0.472469,-0.496094" + id="path1251-3" + inkscape:connector-curvature="0" + embroider_manual_stitch="False" + embroider_zigzag_spacing_mm="0.4" + embroider_running_stitch_length_mm="1.6" + embroider_trim_after="False" + embroider_stop_after="False" + embroider_repeats="1" /> + <path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="False" + embroider_pull_compensation_mm="None" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.33" + embroider_stop_after="False" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 50.380305,88.735204 -0.01669,-2.255087 m 0.968849,2.238382 0.400904,-2.488947 m 1.085784,2.004522 0.183748,-2.104748 m 1.703837,2.221678 0.133636,-2.004522 m 1.887591,2.923261 c 0.06682,-0.03341 0.868624,-1.904295 0.868624,-1.904295 m 0.684879,3.925521 c 0.100227,-0.08352 1.937705,-1.80407 1.937705,-1.80407 m -1.236122,3.842 c 0.08352,0 2.388721,-0.801809 2.388721,-0.801809 m -2.823035,2.555765 c 0.08352,0.05011 2.388722,0.167043 2.388722,0.167043 m -3.173831,1.236122 c 0.06682,0.0167 1.653731,0.718287 1.653731,0.718287 m -3.090304,-0.233861 c 0.0167,0.06682 1.018966,1.336348 1.018966,1.336348 m -2.138156,-1.603617 -0.250566,1.336347 m -0.684879,-1.921 -0.751695,0.818513 m 0.217157,-0.918738 c 0,0 1.035669,1.469982 2.873147,1.336347 0,0 1.553504,-0.150339 2.438834,-1.469982 0,0 0.835218,-1.219418 0.734992,-2.488948 0,0 0.183747,-1.854182 -1.302938,-3.69166 0,0 -1.436574,-1.770661 -3.908817,-2.154861 0,0 -2.071341,-0.200452 -4.042452,0.701583 l -0.400905,0.0167 m 3.441094,7.917863 c 0,0 0.968851,1.620321 3.173825,1.503391 0,0 2.57247,-0.11693 3.491209,-2.990078 0,0 1.069078,-3.324165 -1.620321,-6.013564 0,0 -1.737252,-1.820774 -4.059156,-2.004522 0,0 -2.572469,-0.217156 -4.34313,0.501131" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path1337-7" /> + <path + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.07, 0.07;stroke-dashoffset:0" + d="M 50.199962,87.684955 48.995164,87.04712 47.176153,86.64552 H 45.07366 l -1.96075,0.47247 -1.441035,0.779576 -1.015812,0.897694 -0.850445,1.724516 -0.496093,1.582776 0.07087,1.700892 0.54334,1.2048 0.590587,0.921316 0.708706,0.531529 0.696894,0.377977 0.956752,0.212611 1.004001,-0.05906 0.791388,-0.295294 0.519715,-0.366164 0.129932,-0.141741" + id="path1400-5" + inkscape:connector-curvature="0" + embroider_manual_stitch="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + embroider_repeats="1" + embroider_running_stitch_length_mm="1.6" + embroider_trim_after="False" /> + <path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="False" + embroider_pull_compensation_mm="None" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.33" + embroider_stop_after="False" + embroider_satin_column="True" + inkscape:connector-curvature="0" + d="m 49.680247,88.736201 0.07087,-2.067057 m -1.381976,1.700893 0.685083,-2.279669 m -2.397786,2.114304 c 0.02363,-0.04725 0.566962,-2.634021 0.566962,-2.634021 m -2.988374,2.574962 c 0,-0.04725 0.0118,-2.704892 0.0118,-2.704892 m -1.22841,3.519903 c -0.01183,-0.08268 -0.496094,-3.082868 -0.496094,-3.082868 m -0.614211,3.933315 -1.063058,-2.846633 m 0.118117,4.264044 -1.559152,-2.185175 m 1.015812,3.106492 -2.078871,-0.826823 m 2.267858,2.149739 c -0.04725,0.01181 -2.539527,-0.295294 -2.539527,-0.295294 m 3.023809,1.724517 c -0.04725,0 -1.972564,0.933128 -1.972564,0.933128 m 2.988377,0.05906 -0.862259,1.653646 m 2.49228,-1.523716 0.0118,1.889881 m 0.956763,-2.007999 0.649647,1.358352 m 0.188989,-1.063058 c 0,0 -1.641835,1.807199 -4.02781,0.779576 0,0 -1.88988,-0.685082 -2.504091,-3.130116 0,0 -0.755952,-2.681268 1.27567,-5.268043 0,0 1.925315,-2.350539 4.712891,-2.586774 0,0 2.232422,-0.259859 3.756139,0.47247 0,0 0.34254,0.177176 0.649644,0.437035 l 0.53153,0.165364 m -4.582962,8.882441 c 0,0 -1.700893,1.665457 -3.732514,0.448847 0,0 -1.736328,-0.921318 -1.81901,-3.437221 0,0 -0.12993,-1.67727 1.027623,-3.283669 0,0 1.523716,-1.972563 3.767949,-2.385974 0,0 2.315104,-0.566965 4.84282,0.980375 l 0.496094,-0.01181" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path1494-9" /> + <path + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.07, 0.07;stroke-dashoffset:0" + d="m 50.034598,87.661331 1.228423,-1.228422 2.008,-1.74814 1.55915,-1.322917 0.0945,-0.850446 -1.27567,-1.322917 -1.960753,-1.937129 -1.748139,-1.346541" + id="path1563-2" + inkscape:connector-curvature="0" + embroider_manual_stitch="False" + embroider_zigzag_spacing_mm="0.4" + embroider_stop_after="False" + embroider_repeats="1" + embroider_running_stitch_length_mm="1.6" + embroider_trim_after="False" /> + <path + embroider_zigzag_underlay="False" + embroider_contour_underlay="False" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_center_walk_underlay="False" + embroider_pull_compensation_mm="None" + embroider_trim_after="False" + embroider_zigzag_spacing_mm="0.33" + embroider_stop_after="False" + embroider_satin_column="True" + sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccc" + inkscape:connector-curvature="0" + d="m 49.243211,80.278983 -0.909506,-2.586776 m -0.129929,3.649835 c -0.05906,-0.03543 -1.807199,-2.303293 -1.807199,-2.303293 m 1.216612,3.200987 -2.917504,-1.441035 m 1.464659,1.94894 -3.413599,-0.03544 m 4.299479,0.744145 c -0.04725,0.01181 -2.634022,1.228423 -2.634022,1.228423 m 3.886068,-0.09449 -1.771764,1.937128 m 2.681269,-0.815011 -0.555151,2.787574 m 1.370163,-2.303293 -0.03544,3.260045 m 0.968565,-4.03962 c 0.0118,0.04725 0.685081,2.763951 0.685081,2.763951 m 0.354354,-4.015997 2.137926,2.149739 m -1.181175,-2.929315 2.29148,1.488281 m -2.303291,-2.185175 c 0.05906,0 4.086866,0.661458 4.086866,0.661458 m -4.98456,-1.34654 c 0.07087,-0.05906 3.378163,-1.523716 3.378163,-1.523716 m -4.547527,0.165364 c 0.05906,-0.04725 1.736328,-2.326916 1.736328,-2.326916 m -2.397786,1.228422 0.330729,-2.704893 m -0.519718,0.165365 6.272043,6.035809 -6.31929,5.764137 -6.354725,-6.106678 6.295665,-5.787762 m 0.02363,1.901693 4.275852,4.181363 -4.228608,3.909691 -4.358537,-4.252232 4.228608,-3.862445" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path1665-2" /> + <path + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.07, 0.07;stroke-dashoffset:0" + d="m 49.892858,78.814325 0.08268,-1.866258 -0.0118,-0.850449" + id="path1736-8" + inkscape:connector-curvature="0" + embroider_manual_stitch="True" /> + <path + embroider_trim_after="False" + embroider_running_stitch_length_mm="1.6" + embroider_repeats="1" + embroider_stop_after="False" + embroider_zigzag_spacing_mm="0.4" + embroider_manual_stitch="False" + inkscape:connector-curvature="0" + id="path1808-9" + d="m 49.979403,76.006491 -18.842504,0.03341 -16.57071,0.200451" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.07, 0.07;stroke-dashoffset:0" /> + <path + id="path1882-7-7" + style="fill:none;stroke:#191d1f;stroke-width:0.07;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + d="m 14.322543,75.436765 71.427783,-0.03341 m -71.451406,1.739031 71.427782,-0.03341" + inkscape:connector-curvature="0" + embroider_satin_column="True" + embroider_stop_after="False" + embroider_zigzag_spacing_mm="0.33" + embroider_trim_after="True" + embroider_pull_compensation_mm="None" + embroider_center_walk_underlay="True" + embroider_center_walk_underlay_stitch_length_mm="1.5" + embroider_contour_underlay="False" + embroider_zigzag_underlay="False" /> + </g> +</svg> diff --git a/images/examples/inkstitch_logo_screenshot.png b/images/examples/inkstitch_logo_screenshot.png Binary files differnew file mode 100644 index 00000000..6c77a855 --- /dev/null +++ b/images/examples/inkstitch_logo_screenshot.png diff --git a/images/patches/Monogram Example.jpg b/images/patches/Monogram Example.jpg Binary files differnew file mode 100644 index 00000000..021195dd --- /dev/null +++ b/images/patches/Monogram Example.jpg diff --git a/inx/inkstitch_commands.inx b/inx/inkstitch_commands.inx new file mode 100644 index 00000000..7b42ca0e --- /dev/null +++ b/inx/inkstitch_commands.inx @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> + <_name>Attach Commands</_name> + <id>org.inkstitch.commands</id> + <dependency type="executable" location="extensions">inkstitch.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <param name="fill_start" type="boolean" _gui-text="Fill starting position">false</param> + <param name="fill_end" type="boolean" _gui-text="Fill ending position">false</param> + <param name="stop" type="boolean" _gui-text="Stop after sewing this object">false</param> + <param name="trim" type="boolean" _gui-text="Trim thread after sewing this object">false</param> + <param name="extension" type="string" gui-hidden="true">commands</param> + <effect> + <object-type>all</object-type> + <effects-menu> + <submenu _name="Embroidery" /> + </effects-menu> + </effect> + <script> + <command reldir="extensions" interpreter="python">inkstitch.py</command> + </script> +</inkscape-extension> diff --git a/inx/inkstitch_embroider.inx b/inx/inkstitch_embroider.inx index 1f5619a3..2c988a51 100644 --- a/inx/inkstitch_embroider.inx +++ b/inx/inkstitch_embroider.inx @@ -7,29 +7,14 @@ <param name="collapse_len_mm" type="float" min="0.0" max="10.0" _gui-text="Collapse length (mm)"> _gui-description="Jump stitches smaller than this will be treated as normal stitches.">3.0</param> <param name="hide_layers" type="boolean" _gui-text="Hide other layers" description="Hide all other top-level layers when the embroidery layer is generated, in order to make stitching discernable.">true</param> <param name="output_format" type="optiongroup" _gui-text="Output file format" appearance="minimal"> - <_option value="csv">Comma Separated Values Format(.CSV)</_option> - <_option value="col">Embroidery Thread Color Format(.COL)</_option> - <_option value="dst">Tajima Embroidery Format(.DST)</_option> - <_option value="edr">Embird Embroidery Format(.EDR)</_option> - <_option value="exp">Melco Embroidery Format(.EXP)</_option> - <_option value="hus">Husqvarna Viking Embroidery Format(.HUS)</_option> - <_option value="inf">Embroidery Color Format(.INF)</_option> - <_option value="jef">Janome Embroidery Format(.JEF)</_option> - <_option value="ksm">Pfaff Embroidery Format(.KSM)</_option> - <_option value="max">Pfaff Embroidery Format(.MAX)</_option> - <_option value="pcd">Pfaff Embroidery Format(.PCD)</_option> - <_option value="pcq">Pfaff Embroidery Format(.PCQ)</_option> - <_option value="pcs">Pfaff Embroidery Format(.PCS)</_option> - <_option value="pec">Brother Embroidery Format(.PEC)</_option> - <_option value="pes">Brother Embroidery Format(.PES)</_option> - <_option value="plt">AutoCAD Plot Drawing Format(.PLT)</_option> - <_option value="rgb">RGB Embroidery Format(.RGB)</_option> - <_option value="sew">Janome Embroidery Format(.SEW)</_option> - <_option value="tap">Happy Embroidery Format(.TAP)</_option> - <_option value="thr">ThredWorks Embroidery Format(.THR)</_option> - <_option value="txt">Text File(.TXT)</_option> - <_option value="vp3">Pfaff Embroidery Format(.VP3)</_option> - <_option value="xxx">Singer Embroidery Format(.XXX)</_option> + <_option value="dst">Tajima Embroidery Format(DST)</_option> + <_option value="exp">Melco Embroidery Format(EXP)</_option> + <_option value="jef">Janome Embroidery Format(JEF)</_option> + <_option value="pec">Brother Embroidery Format(PEC)</_option> + <_option value="pes">Brother Embroidery Format(PES)</_option> + <_option value="vp3">Pfaff Embroidery Format(VP3)</_option> + <_option value="csv">Comma-separated values(CSV) [DEBUG]</_option> + <_option value="svg">Scalable Vector Graphics(SVG) [DEBUG]</_option> </param> <param name="path" type="string" _gui-text="Directory"></param> <param name="extension" type="string" gui-hidden="true">embroider</param> diff --git a/inx/inkstitch_palettes.inx b/inx/inkstitch_flip.inx index 5daa3196..f129b8d9 100644 --- a/inx/inkstitch_palettes.inx +++ b/inx/inkstitch_flip.inx @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>Install thread manufacturer color palettes</_name> - <id>org.inkstitch.palettes</id> + <_name>Flip Satin Columns</_name> + <id>org.inkstitch.flip_satins</id> <dependency type="executable" location="extensions">inkstitch.py</dependency> <dependency type="executable" location="extensions">inkex.py</dependency> - <param name="extension" type="string" gui-hidden="true">palettes</param> + <param name="extension" type="string" gui-hidden="true">flip</param> <effect> <object-type>all</object-type> <effects-menu> diff --git a/inx/inkstitch_input_COL.inx b/inx/inkstitch_input_COL.inx deleted file mode 100644 index 38ebe7bd..00000000 --- a/inx/inkstitch_input_COL.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>COL file input</_name> - <id>org.inkstitch.input.col</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.col</extension> - <mimetype>application/x-embroidery-col</mimetype> - <_filetypename>Ink/Stitch: Embroidery Thread Color Format (.col)</_filetypename> - <_filetypetooltip>convert COL file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_CSV.inx b/inx/inkstitch_input_CSV.inx deleted file mode 100644 index 0c3e2096..00000000 --- a/inx/inkstitch_input_CSV.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>CSV file input</_name> - <id>org.inkstitch.input.csv</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.csv</extension> - <mimetype>application/x-embroidery-csv</mimetype> - <_filetypename>Ink/Stitch: Comma Separated Values Format (.csv)</_filetypename> - <_filetypetooltip>convert CSV file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_DAT.inx b/inx/inkstitch_input_DAT.inx deleted file mode 100644 index e82694b8..00000000 --- a/inx/inkstitch_input_DAT.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>DAT file input</_name> - <id>org.inkstitch.input.dat</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.dat</extension> - <mimetype>application/x-embroidery-dat</mimetype> - <_filetypename>Ink/Stitch: Barudan Embroidery Format (.dat)</_filetypename> - <_filetypetooltip>convert DAT file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_DSB.inx b/inx/inkstitch_input_DSB.inx index 8b7c6b02..c78e1c2d 100644 --- a/inx/inkstitch_input_DSB.inx +++ b/inx/inkstitch_input_DSB.inx @@ -7,7 +7,7 @@ <input> <extension>.dsb</extension> <mimetype>application/x-embroidery-dsb</mimetype> - <_filetypename>Ink/Stitch: Barudan Embroidery Format (.dsb)</_filetypename> + <_filetypename>Ink/Stitch: Tajima(Barudan) Embroidery Format (.dsb)</_filetypename> <_filetypetooltip>convert DSB file to Ink/Stitch manual-stitch paths</_filetypetooltip> </input> <param name="extension" type="string" gui-hidden="true">input</param> diff --git a/inx/inkstitch_input_EDR.inx b/inx/inkstitch_input_EDR.inx deleted file mode 100644 index 92cf7d14..00000000 --- a/inx/inkstitch_input_EDR.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>EDR file input</_name> - <id>org.inkstitch.input.edr</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.edr</extension> - <mimetype>application/x-embroidery-edr</mimetype> - <_filetypename>Ink/Stitch: Embird Embroidery Format (.edr)</_filetypename> - <_filetypetooltip>convert EDR file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_EXY.inx b/inx/inkstitch_input_EXY.inx deleted file mode 100644 index 78de68d8..00000000 --- a/inx/inkstitch_input_EXY.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>EXY file input</_name> - <id>org.inkstitch.input.exy</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.exy</extension> - <mimetype>application/x-embroidery-exy</mimetype> - <_filetypename>Ink/Stitch: Eltac Embroidery Format (.exy)</_filetypename> - <_filetypetooltip>convert EXY file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_FXY.inx b/inx/inkstitch_input_FXY.inx deleted file mode 100644 index c2be8c60..00000000 --- a/inx/inkstitch_input_FXY.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>FXY file input</_name> - <id>org.inkstitch.input.fxy</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.fxy</extension> - <mimetype>application/x-embroidery-fxy</mimetype> - <_filetypename>Ink/Stitch: Fortron Embroidery Format (.fxy)</_filetypename> - <_filetypetooltip>convert FXY file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_GT.inx b/inx/inkstitch_input_GT.inx deleted file mode 100644 index 20a9fda0..00000000 --- a/inx/inkstitch_input_GT.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>GT file input</_name> - <id>org.inkstitch.input.gt</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.gt</extension> - <mimetype>application/x-embroidery-gt</mimetype> - <_filetypename>Ink/Stitch: Gold Thread Embroidery Format (.gt)</_filetypename> - <_filetypetooltip>convert GT file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_HUS.inx b/inx/inkstitch_input_HUS.inx deleted file mode 100644 index bbac96a2..00000000 --- a/inx/inkstitch_input_HUS.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>HUS file input</_name> - <id>org.inkstitch.input.hus</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.hus</extension> - <mimetype>application/x-embroidery-hus</mimetype> - <_filetypename>Ink/Stitch: Husqvarna Viking Embroidery Format (.hus)</_filetypename> - <_filetypetooltip>convert HUS file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_INF.inx b/inx/inkstitch_input_INF.inx deleted file mode 100644 index 9c07ed7f..00000000 --- a/inx/inkstitch_input_INF.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>INF file input</_name> - <id>org.inkstitch.input.inf</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.inf</extension> - <mimetype>application/x-embroidery-inf</mimetype> - <_filetypename>Ink/Stitch: Embroidery Color Format (.inf)</_filetypename> - <_filetypetooltip>convert INF file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_MAX.inx b/inx/inkstitch_input_MAX.inx deleted file mode 100644 index 0f5ed952..00000000 --- a/inx/inkstitch_input_MAX.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>MAX file input</_name> - <id>org.inkstitch.input.max</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.max</extension> - <mimetype>application/x-embroidery-max</mimetype> - <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.max)</_filetypename> - <_filetypetooltip>convert MAX file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_MIT.inx b/inx/inkstitch_input_MIT.inx deleted file mode 100644 index a0181182..00000000 --- a/inx/inkstitch_input_MIT.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>MIT file input</_name> - <id>org.inkstitch.input.mit</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.mit</extension> - <mimetype>application/x-embroidery-mit</mimetype> - <_filetypename>Ink/Stitch: Mitsubishi Embroidery Format (.mit)</_filetypename> - <_filetypetooltip>convert MIT file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_NEW.inx b/inx/inkstitch_input_NEW.inx deleted file mode 100644 index 15d877d8..00000000 --- a/inx/inkstitch_input_NEW.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>NEW file input</_name> - <id>org.inkstitch.input.new</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.new</extension> - <mimetype>application/x-embroidery-new</mimetype> - <_filetypename>Ink/Stitch: Ameco Embroidery Format (.new)</_filetypename> - <_filetypetooltip>convert NEW file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_OFM.inx b/inx/inkstitch_input_OFM.inx deleted file mode 100644 index 3e162355..00000000 --- a/inx/inkstitch_input_OFM.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>OFM file input</_name> - <id>org.inkstitch.input.ofm</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.ofm</extension> - <mimetype>application/x-embroidery-ofm</mimetype> - <_filetypename>Ink/Stitch: Melco Embroidery Format (.ofm)</_filetypename> - <_filetypetooltip>convert OFM file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_PCD.inx b/inx/inkstitch_input_PCD.inx deleted file mode 100644 index eff3c2f7..00000000 --- a/inx/inkstitch_input_PCD.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>PCD file input</_name> - <id>org.inkstitch.input.pcd</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.pcd</extension> - <mimetype>application/x-embroidery-pcd</mimetype> - <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.pcd)</_filetypename> - <_filetypetooltip>convert PCD file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_PCM.inx b/inx/inkstitch_input_PCM.inx deleted file mode 100644 index 684b7e20..00000000 --- a/inx/inkstitch_input_PCM.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>PCM file input</_name> - <id>org.inkstitch.input.pcm</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.pcm</extension> - <mimetype>application/x-embroidery-pcm</mimetype> - <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.pcm)</_filetypename> - <_filetypetooltip>convert PCM file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_PCQ.inx b/inx/inkstitch_input_PCQ.inx deleted file mode 100644 index 44d2d6df..00000000 --- a/inx/inkstitch_input_PCQ.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>PCQ file input</_name> - <id>org.inkstitch.input.pcq</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.pcq</extension> - <mimetype>application/x-embroidery-pcq</mimetype> - <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.pcq)</_filetypename> - <_filetypetooltip>convert PCQ file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_PCS.inx b/inx/inkstitch_input_PCS.inx deleted file mode 100644 index 1a030e53..00000000 --- a/inx/inkstitch_input_PCS.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>PCS file input</_name> - <id>org.inkstitch.input.pcs</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.pcs</extension> - <mimetype>application/x-embroidery-pcs</mimetype> - <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.pcs)</_filetypename> - <_filetypetooltip>convert PCS file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_PHB.inx b/inx/inkstitch_input_PHB.inx deleted file mode 100644 index 0e14f097..00000000 --- a/inx/inkstitch_input_PHB.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>PHB file input</_name> - <id>org.inkstitch.input.phb</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.phb</extension> - <mimetype>application/x-embroidery-phb</mimetype> - <_filetypename>Ink/Stitch: Brother Embroidery Format (.phb)</_filetypename> - <_filetypetooltip>convert PHB file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_PHC.inx b/inx/inkstitch_input_PHC.inx deleted file mode 100644 index 3c2d10f5..00000000 --- a/inx/inkstitch_input_PHC.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>PHC file input</_name> - <id>org.inkstitch.input.phc</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.phc</extension> - <mimetype>application/x-embroidery-phc</mimetype> - <_filetypename>Ink/Stitch: Brother Embroidery Format (.phc)</_filetypename> - <_filetypetooltip>convert PHC file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_PLT.inx b/inx/inkstitch_input_PLT.inx deleted file mode 100644 index d811ff02..00000000 --- a/inx/inkstitch_input_PLT.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>PLT file input</_name> - <id>org.inkstitch.input.plt</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.plt</extension> - <mimetype>application/x-embroidery-plt</mimetype> - <_filetypename>Ink/Stitch: AutoCAD Plot Drawing Format (.plt)</_filetypename> - <_filetypetooltip>convert PLT file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_RGB.inx b/inx/inkstitch_input_RGB.inx deleted file mode 100644 index b64e285b..00000000 --- a/inx/inkstitch_input_RGB.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>RGB file input</_name> - <id>org.inkstitch.input.rgb</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.rgb</extension> - <mimetype>application/x-embroidery-rgb</mimetype> - <_filetypename>Ink/Stitch: RGB Embroidery Format (.rgb)</_filetypename> - <_filetypetooltip>convert RGB file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_SST.inx b/inx/inkstitch_input_SST.inx deleted file mode 100644 index 85533659..00000000 --- a/inx/inkstitch_input_SST.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>SST file input</_name> - <id>org.inkstitch.input.sst</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.sst</extension> - <mimetype>application/x-embroidery-sst</mimetype> - <_filetypename>Ink/Stitch: Sunstar Embroidery Format (.sst)</_filetypename> - <_filetypetooltip>convert SST file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_T09.inx b/inx/inkstitch_input_T09.inx deleted file mode 100644 index eb6ab6d9..00000000 --- a/inx/inkstitch_input_T09.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>T09 file input</_name> - <id>org.inkstitch.input.t09</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.t09</extension> - <mimetype>application/x-embroidery-t09</mimetype> - <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.t09)</_filetypename> - <_filetypetooltip>convert T09 file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_CSD.inx b/inx/inkstitch_input_TBF.inx index 444270f0..e2b72ec9 100644 --- a/inx/inkstitch_input_CSD.inx +++ b/inx/inkstitch_input_TBF.inx @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>CSD file input</_name> - <id>org.inkstitch.input.csd</id> + <_name>TBF file input</_name> + <id>org.inkstitch.input.tbf</id> <dependency type="executable" location="extensions">inkstitch.py</dependency> <dependency type="executable" location="extensions">inkex.py</dependency> <input> - <extension>.csd</extension> - <mimetype>application/x-embroidery-csd</mimetype> - <_filetypename>Ink/Stitch: Singer Embroidery Format (.csd)</_filetypename> - <_filetypetooltip>convert CSD file to Ink/Stitch manual-stitch paths</_filetypetooltip> + <extension>.tbf</extension> + <mimetype>application/x-embroidery-tbf</mimetype> + <_filetypename>Ink/Stitch: Tajima Embroidery Format (.tbf)</_filetypename> + <_filetypetooltip>convert TBF file to Ink/Stitch manual-stitch paths</_filetypetooltip> </input> <param name="extension" type="string" gui-hidden="true">input</param> <script> diff --git a/inx/inkstitch_input_THR.inx b/inx/inkstitch_input_THR.inx deleted file mode 100644 index e6a6e09e..00000000 --- a/inx/inkstitch_input_THR.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>THR file input</_name> - <id>org.inkstitch.input.thr</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.thr</extension> - <mimetype>application/x-embroidery-thr</mimetype> - <_filetypename>Ink/Stitch: ThredWorks Embroidery Format (.thr)</_filetypename> - <_filetypetooltip>convert THR file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_U00.inx b/inx/inkstitch_input_U01.inx index b28da66d..befadd5b 100644 --- a/inx/inkstitch_input_U00.inx +++ b/inx/inkstitch_input_U01.inx @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>U00 file input</_name> - <id>org.inkstitch.input.u00</id> + <_name>U01 file input</_name> + <id>org.inkstitch.input.u01</id> <dependency type="executable" location="extensions">inkstitch.py</dependency> <dependency type="executable" location="extensions">inkex.py</dependency> <input> - <extension>.u00</extension> - <mimetype>application/x-embroidery-u00</mimetype> - <_filetypename>Ink/Stitch: Barudan Embroidery Format (.u00)</_filetypename> - <_filetypetooltip>convert U00 file to Ink/Stitch manual-stitch paths</_filetypetooltip> + <extension>.u01</extension> + <mimetype>application/x-embroidery-u01</mimetype> + <_filetypename>Ink/Stitch: Barudan Embroidery Format (.u01)</_filetypename> + <_filetypetooltip>convert U01 file to Ink/Stitch manual-stitch paths</_filetypetooltip> </input> <param name="extension" type="string" gui-hidden="true">input</param> <script> diff --git a/inx/inkstitch_input_VIP.inx b/inx/inkstitch_input_VIP.inx deleted file mode 100644 index 3723285c..00000000 --- a/inx/inkstitch_input_VIP.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>VIP file input</_name> - <id>org.inkstitch.input.vip</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.vip</extension> - <mimetype>application/x-embroidery-vip</mimetype> - <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.vip)</_filetypename> - <_filetypetooltip>convert VIP file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_input_ZSK.inx b/inx/inkstitch_input_ZSK.inx deleted file mode 100644 index 4178126f..00000000 --- a/inx/inkstitch_input_ZSK.inx +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> - <_name>ZSK file input</_name> - <id>org.inkstitch.input.zsk</id> - <dependency type="executable" location="extensions">inkstitch.py</dependency> - <dependency type="executable" location="extensions">inkex.py</dependency> - <input> - <extension>.zsk</extension> - <mimetype>application/x-embroidery-zsk</mimetype> - <_filetypename>Ink/Stitch: ZSK USA Embroidery Format (.zsk)</_filetypename> - <_filetypetooltip>convert ZSK file to Ink/Stitch manual-stitch paths</_filetypetooltip> - </input> - <param name="extension" type="string" gui-hidden="true">input</param> - <script> - <command reldir="extensions" interpreter="python">inkstitch.py</command> - </script> -</inkscape-extension> diff --git a/inx/inkstitch_install.inx b/inx/inkstitch_install.inx new file mode 100644 index 00000000..7275e13a --- /dev/null +++ b/inx/inkstitch_install.inx @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> + <_name>Install add-ons for Inkscape</_name> + <id>org.inkstitch.install</id> + <dependency type="executable" location="extensions">inkstitch.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <param name="extension" type="string" gui-hidden="true">install</param> + <effect> + <object-type>all</object-type> + <effects-menu> + <submenu _name="Embroidery"/> + </effects-menu> + </effect> + <script> + <command reldir="extensions" interpreter="python">inkstitch.py</command> + </script> +</inkscape-extension> diff --git a/inx/inkstitch_output_DST.inx b/inx/inkstitch_output_DST.inx new file mode 100644 index 00000000..fa034f40 --- /dev/null +++ b/inx/inkstitch_output_DST.inx @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> + <_name>DST file output</_name> + <id>org.inkstitch.output.dst</id> + <dependency type="executable" location="extensions">inkstitch.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <output> + <extension>.dst</extension> + <mimetype>application/x-embroidery-dst</mimetype> + <_filetypename>Ink/Stitch: Tajima Embroidery Format (.dst)</_filetypename> + <_filetypetooltip>Save design in DST format using Ink/Stitch</_filetypetooltip> + <dataloss>true</dataloss> + </output> + <param name="extension" type="string" gui-hidden="true">output</param> + <param name="format" type="string" gui-hidden="true">dst</param> + <script> + <command reldir="extensions" interpreter="python">inkstitch.py</command> + </script> +</inkscape-extension> diff --git a/inx/inkstitch_output_EXP.inx b/inx/inkstitch_output_EXP.inx new file mode 100644 index 00000000..853bab9f --- /dev/null +++ b/inx/inkstitch_output_EXP.inx @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> + <_name>EXP file output</_name> + <id>org.inkstitch.output.exp</id> + <dependency type="executable" location="extensions">inkstitch.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <output> + <extension>.exp</extension> + <mimetype>application/x-embroidery-exp</mimetype> + <_filetypename>Ink/Stitch: Melco Embroidery Format (.exp)</_filetypename> + <_filetypetooltip>Save design in EXP format using Ink/Stitch</_filetypetooltip> + <dataloss>true</dataloss> + </output> + <param name="extension" type="string" gui-hidden="true">output</param> + <param name="format" type="string" gui-hidden="true">exp</param> + <script> + <command reldir="extensions" interpreter="python">inkstitch.py</command> + </script> +</inkscape-extension> diff --git a/inx/inkstitch_output_JEF.inx b/inx/inkstitch_output_JEF.inx new file mode 100644 index 00000000..74b752fc --- /dev/null +++ b/inx/inkstitch_output_JEF.inx @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> + <_name>JEF file output</_name> + <id>org.inkstitch.output.jef</id> + <dependency type="executable" location="extensions">inkstitch.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <output> + <extension>.jef</extension> + <mimetype>application/x-embroidery-jef</mimetype> + <_filetypename>Ink/Stitch: Janome Embroidery Format (.jef)</_filetypename> + <_filetypetooltip>Save design in JEF format using Ink/Stitch</_filetypetooltip> + <dataloss>true</dataloss> + </output> + <param name="extension" type="string" gui-hidden="true">output</param> + <param name="format" type="string" gui-hidden="true">jef</param> + <script> + <command reldir="extensions" interpreter="python">inkstitch.py</command> + </script> +</inkscape-extension> diff --git a/inx/inkstitch_output_PEC.inx b/inx/inkstitch_output_PEC.inx new file mode 100644 index 00000000..6d76b165 --- /dev/null +++ b/inx/inkstitch_output_PEC.inx @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> + <_name>PEC file output</_name> + <id>org.inkstitch.output.pec</id> + <dependency type="executable" location="extensions">inkstitch.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <output> + <extension>.pec</extension> + <mimetype>application/x-embroidery-pec</mimetype> + <_filetypename>Ink/Stitch: Brother Embroidery Format (.pec)</_filetypename> + <_filetypetooltip>Save design in PEC format using Ink/Stitch</_filetypetooltip> + <dataloss>true</dataloss> + </output> + <param name="extension" type="string" gui-hidden="true">output</param> + <param name="format" type="string" gui-hidden="true">pec</param> + <script> + <command reldir="extensions" interpreter="python">inkstitch.py</command> + </script> +</inkscape-extension> diff --git a/inx/inkstitch_output_PES.inx b/inx/inkstitch_output_PES.inx new file mode 100644 index 00000000..b821225a --- /dev/null +++ b/inx/inkstitch_output_PES.inx @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> + <_name>PES file output</_name> + <id>org.inkstitch.output.pes</id> + <dependency type="executable" location="extensions">inkstitch.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <output> + <extension>.pes</extension> + <mimetype>application/x-embroidery-pes</mimetype> + <_filetypename>Ink/Stitch: Brother Embroidery Format (.pes)</_filetypename> + <_filetypetooltip>Save design in PES format using Ink/Stitch</_filetypetooltip> + <dataloss>true</dataloss> + </output> + <param name="extension" type="string" gui-hidden="true">output</param> + <param name="format" type="string" gui-hidden="true">pes</param> + <script> + <command reldir="extensions" interpreter="python">inkstitch.py</command> + </script> +</inkscape-extension> diff --git a/inx/inkstitch_output_VP3.inx b/inx/inkstitch_output_VP3.inx new file mode 100644 index 00000000..11843420 --- /dev/null +++ b/inx/inkstitch_output_VP3.inx @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> + <_name>VP3 file output</_name> + <id>org.inkstitch.output.vp3</id> + <dependency type="executable" location="extensions">inkstitch.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <output> + <extension>.vp3</extension> + <mimetype>application/x-embroidery-vp3</mimetype> + <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.vp3)</_filetypename> + <_filetypetooltip>Save design in VP3 format using Ink/Stitch</_filetypetooltip> + <dataloss>true</dataloss> + </output> + <param name="extension" type="string" gui-hidden="true">output</param> + <param name="format" type="string" gui-hidden="true">vp3</param> + <script> + <command reldir="extensions" interpreter="python">inkstitch.py</command> + </script> +</inkscape-extension> diff --git a/inx/inkstitch_output_ZIP.inx b/inx/inkstitch_output_ZIP.inx new file mode 100644 index 00000000..81f17b23 --- /dev/null +++ b/inx/inkstitch_output_ZIP.inx @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> + <_name>embroidery ZIP file output</_name> + <id>org.inkstitch.output.zip</id> + <dependency type="executable" location="extensions">inkstitch.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <output> + <extension>.zip</extension> + <mimetype>application/zip</mimetype> + <_filetypename>Ink/Stitch: ZIP export multiple formats (.zip)</_filetypename> + <_filetypetooltip>Create a ZIP with multiple embroidery file formats using Ink/Stitch</_filetypetooltip> + <dataloss>true</dataloss> + </output> + + <param name="format-pec" type="boolean" _gui-text=".PEC: Brother Embroidery Format">false</param> + + <param name="format-pes" type="boolean" _gui-text=".PES: Brother Embroidery Format">false</param> + + <param name="format-exp" type="boolean" _gui-text=".EXP: Melco Embroidery Format">false</param> + + <param name="format-dst" type="boolean" _gui-text=".DST: Tajima Embroidery Format">false</param> + + <param name="format-jef" type="boolean" _gui-text=".JEF: Janome Embroidery Format">false</param> + + <param name="format-vp3" type="boolean" _gui-text=".VP3: Pfaff Embroidery Format">false</param> + + <param name="extension" type="string" gui-hidden="true">zip</param> + <script> + <command reldir="extensions" interpreter="python">inkstitch.py</command> + </script> +</inkscape-extension>
\ No newline at end of file diff --git a/lib/commands.py b/lib/commands.py new file mode 100644 index 00000000..02c13b25 --- /dev/null +++ b/lib/commands.py @@ -0,0 +1,86 @@ +import inkex +import cubicsuperpath + +from .svg import apply_transforms +from .svg.tags import SVG_USE_TAG, SVG_SYMBOL_TAG, CONNECTION_START, CONNECTION_END, XLINK_HREF + + +class Command(object): + def __init__(self, connector): + self.connector = connector + self.svg = self.connector.getroottree().getroot() + + self.parse_command() + + def get_node_by_url(self, url): + # url will be #path12345. Find the object at the other end. + + if url is None: + raise ValueError("url is None") + + if not url.startswith('#'): + raise ValueError("invalid connection url: %s" % url) + + id = url[1:] + + try: + return self.svg.xpath(".//*[@id='%s']" % id)[0] + except (IndexError, AttributeError): + raise ValueError("could not find node by url %s" % id) + + def parse_connector_path(self): + path = cubicsuperpath.parsePath(self.connector.get('d')) + return apply_transforms(path, self.connector) + + def parse_command(self): + path = self.parse_connector_path() + + neighbors = [ + (self.get_node_by_url(self.connector.get(CONNECTION_START)), path[0][0][1]), + (self.get_node_by_url(self.connector.get(CONNECTION_END)), path[0][-1][1]) + ] + + if neighbors[0][0].tag != SVG_USE_TAG: + neighbors.reverse() + + if neighbors[0][0].tag != SVG_USE_TAG: + raise ValueError("connector does not point to a use tag") + + self.symbol = self.get_node_by_url(neighbors[0][0].get(XLINK_HREF)) + + if self.symbol.tag != SVG_SYMBOL_TAG: + raise ValueError("use points to non-symbol") + + self.command = self.symbol.get('id') + + if self.command.startswith('inkstitch_'): + self.command = self.command[10:] + else: + raise ValueError("symbol is not an Ink/Stitch command") + + self.target = neighbors[1][0] + self.target_point = neighbors[1][1] + + def __repr__(self): + return "Command('%s', %s)" % (self.command, self.target_point) + +def find_commands(node): + """Find the symbols this node is connected to and return them as Commands""" + + # find all paths that have this object as a connection + xpath = ".//*[@inkscape:connection-start='#%(id)s' or @inkscape:connection-end='#%(id)s']" % dict(id=node.get('id')) + connectors = node.getroottree().getroot().xpath(xpath, namespaces=inkex.NSS) + + # try to turn them into commands + commands = [] + for connector in connectors: + try: + commands.append(Command(connector)) + except ValueError: + # Parsing the connector failed, meaning it's not actually an Ink/Stitch command. + pass + + return commands + +def is_command(node): + return CONNECTION_START in node.attrib or CONNECTION_END in node.attrib diff --git a/lib/elements/auto_fill.py b/lib/elements/auto_fill.py index 08ae67f7..59816878 100644 --- a/lib/elements/auto_fill.py +++ b/lib/elements/auto_fill.py @@ -63,27 +63,65 @@ class AutoFill(Fill): return self.get_float_param("fill_underlay_max_stitch_length_mm") or self.max_stitch_length @property - @param('fill_underlay_inset_mm', _('Inset'), unit='mm', group=_('AutoFill Underlay'), type='float', default=0) + @param('fill_underlay_inset_mm', + _('Inset'), + tooltip='Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill.', + unit='mm', + group=_('AutoFill Underlay'), + type='float', + default=0) def fill_underlay_inset(self): return self.get_float_param('fill_underlay_inset_mm', 0) @property - def underlay_shape(self): - if self.fill_underlay_inset: - shape = self.shape.buffer(-self.fill_underlay_inset) + @param('expand_mm', + _('Expand'), + tooltip='Expand the shape before fill stitching, to compensate for gaps between shapes.', + unit='mm', + type='float', + default=0) + def expand(self): + return self.get_float_param('expand_mm', 0) + + def shrink_or_grow_shape(self, amount): + if amount: + shape = self.shape.buffer(amount) if not isinstance(shape, shgeo.MultiPolygon): shape = shgeo.MultiPolygon([shape]) return shape else: return self.shape + @property + def underlay_shape(self): + return self.shrink_or_grow_shape(-self.fill_underlay_inset) + + @property + def fill_shape(self): + return self.shrink_or_grow_shape(self.expand) + + def get_starting_point(self, last_patch): + # If there is a "fill_start" Command, then use that; otherwise pick + # the point closest to the end of the last patch. + + if self.get_command('fill_start'): + return self.get_command('fill_start').target_point + elif last_patch: + return last_patch.stitches[-1] + else: + return None + + def get_ending_point(self): + if self.get_command('fill_end'): + return self.get_command('fill_end').target_point + else: + return None + def to_patches(self, last_patch): stitches = [] - if last_patch is None: - starting_point = None - else: - starting_point = last_patch.stitches[-1] + starting_point = self.get_starting_point(last_patch) + ending_point = self.get_ending_point() if self.fill_underlay: stitches.extend(auto_fill(self.underlay_shape, @@ -96,13 +134,14 @@ class AutoFill(Fill): starting_point)) starting_point = stitches[-1] - stitches.extend(auto_fill(self.shape, + stitches.extend(auto_fill(self.fill_shape, self.angle, self.row_spacing, self.end_row_spacing, self.max_stitch_length, self.running_stitch_length, self.staggers, - starting_point)) + starting_point, + ending_point)) return [Patch(stitches=stitches, color=self.color)] diff --git a/lib/elements/element.py b/lib/elements/element.py index 300136dd..ebca90a4 100644 --- a/lib/elements/element.py +++ b/lib/elements/element.py @@ -4,7 +4,8 @@ from shapely import geometry as shgeo from ..i18n import _ from ..utils import cache -from ..svg import PIXELS_PER_MM, get_viewbox_transform, convert_length, get_doc_size +from ..svg import PIXELS_PER_MM, convert_length, get_doc_size, apply_transforms +from ..commands import find_commands # inkscape-provided utilities import simpletransform @@ -29,6 +30,10 @@ class Patch: else: raise TypeError("Patch can only be added to another Patch") + def __len__(self): + # This method allows `len(patch)` and `if patch: + return len(self.stitches) + def add_stitch(self, stitch): self.stitches.append(stitch) @@ -36,7 +41,6 @@ class Patch: return Patch(self.color, self.stitches[::-1]) - class Param(object): def __init__(self, name, description, unit=None, values=[], type=None, group=None, inverse=False, default=None, tooltip=None, sort_index=0): self.name = name @@ -132,10 +136,10 @@ class EmbroideryElement(object): self.node.set("embroider_%s" % name, str(value)) @cache - def get_style(self, style_name): + def get_style(self, style_name, default=None): style = simplestyle.parseStyle(self.node.get("style")) if (style_name not in style): - return None + return default value = style[style_name] if value == 'none': return None @@ -158,7 +162,7 @@ class EmbroideryElement(object): @property @cache def stroke_width(self): - width = self.get_style("stroke-width") + width = self.get_style("stroke-width", "1") if width is None: return 1.0 @@ -168,10 +172,6 @@ class EmbroideryElement(object): @property def path(self): - return cubicsuperpath.parsePath(self.node.get("d")) - - @cache - def parse_path(self): # A CSP is a "cubic superpath". # # A "path" is a sequence of strung-together bezier curves. @@ -199,22 +199,40 @@ class EmbroideryElement(object): # In a path, each element in the 3-tuple is itself a tuple of (x, y). # Tuples all the way down. Hasn't anyone heard of using classes? - path = self.path + return cubicsuperpath.parsePath(self.node.get("d")) + + @cache + def parse_path(self): + return apply_transforms(self.path, self.node) - # start with the identity transform - transform = [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]] + @property + def shape(self): + raise NotImplementedError("INTERNAL ERROR: %s must implement shape()", self.__class__) - # combine this node's transform with all parent groups' transforms - transform = simpletransform.composeParents(self.node, transform) + @property + @cache + def commands(self): + return find_commands(self.node) - # add in the transform implied by the viewBox - viewbox_transform = get_viewbox_transform(self.node.getroottree().getroot()) - transform = simpletransform.composeTransform(viewbox_transform, transform) + @cache + def get_commands(self, command): + return [c for c in self.commands if c.command == command] - # apply the combined transform to this node's path - simpletransform.applyTransformToPath(transform, path) + @cache + def has_command(self, command): + return len(self.get_commands(command)) > 0 - return path + @cache + def get_command(self, command): + commands = self.get_commands(command) + + if len(commands) == 1: + return commands[0] + elif len(commands) > 1: + raise ValueError(_("%(id)s has more than one command of type '%(command)s' linked to it") % + dict(id=self.node.get(id), command=command)) + else: + return None def strip_control_points(self, subpath): return [point for control_before, point, control_after in subpath] @@ -228,22 +246,10 @@ class EmbroideryElement(object): return [self.strip_control_points(subpath) for subpath in path] @property - @param('trim_after', - _('TRIM after'), - tooltip=_('Trim thread after this object (for supported machines and file formats)'), - type='boolean', - default=False, - sort_index=1000) def trim_after(self): return self.get_boolean_param('trim_after', False) @property - @param('stop_after', - _('STOP after'), - tooltip=_('Add STOP instruction after this object (for supported machines and file formats)'), - type='boolean', - default=False, - sort_index=1000) def stop_after(self): return self.get_boolean_param('stop_after', False) @@ -254,8 +260,8 @@ class EmbroideryElement(object): patches = self.to_patches(last_patch) if patches: - patches[-1].trim_after = self.trim_after - patches[-1].stop_after = self.stop_after + patches[-1].trim_after = self.has_command("trim") or self.trim_after + patches[-1].stop_after = self.has_command("stop") or self.stop_after return patches diff --git a/lib/elements/fill.py b/lib/elements/fill.py index 52a42260..8d1d35f2 100644 --- a/lib/elements/fill.py +++ b/lib/elements/fill.py @@ -27,7 +27,8 @@ class Fill(EmbroideryElement): @property def color(self): - return self.get_style("fill") + # SVG spec says the default fill is black + return self.get_style("fill", "#000000") @property @param('flip', _('Flip fill (start right-to-left)'), type='boolean', default=False) diff --git a/lib/elements/polyline.py b/lib/elements/polyline.py index 5c474237..b9ffdc0b 100644 --- a/lib/elements/polyline.py +++ b/lib/elements/polyline.py @@ -1,3 +1,5 @@ +from shapely import geometry as shgeo + from .element import param, EmbroideryElement, Patch from ..i18n import _ from ..utils.geometry import Point @@ -28,6 +30,11 @@ class Polyline(EmbroideryElement): return points @property + @cache + def shape(self): + return shgeo.LineString(self.points) + + @property def path(self): # A polyline is a series of connected line segments described by their # points. In order to make use of the existing logic for incorporating diff --git a/lib/elements/satin_column.py b/lib/elements/satin_column.py index 3593db64..2ceb38de 100644 --- a/lib/elements/satin_column.py +++ b/lib/elements/satin_column.py @@ -89,6 +89,17 @@ class SatinColumn(EmbroideryElement): @property @cache + def shape(self): + # This isn't used for satins at all, but other parts of the code + # may need to know the general shape of a satin column. + + flattened = self.flatten(self.parse_path()) + line_strings = [shgeo.LineString(path) for path in flattened] + + return shgeo.MultiLineString(line_strings) + + @property + @cache def csp(self): return self.parse_path() @@ -97,6 +108,8 @@ class SatinColumn(EmbroideryElement): def flattened_beziers(self): if len(self.csp) == 2: return self.simple_flatten_beziers() + elif len(self.csp) < 2: + self.fatal(_("satin column: %(id)s: at least two subpaths required (%(num)d found)") % dict(num=len(self.csp), id=self.node.get('id'))) else: return self.flatten_beziers_with_rungs() diff --git a/lib/elements/stroke.py b/lib/elements/stroke.py index 48662b6d..e8eb4783 100644 --- a/lib/elements/stroke.py +++ b/lib/elements/stroke.py @@ -1,9 +1,11 @@ import sys +import shapely.geometry from .element import param, EmbroideryElement, Patch from ..i18n import _ from ..utils import cache, Point - +from ..stitches import running_stitch +from ..svg import parse_length_with_units warned_about_legacy_running_stitch = False @@ -50,6 +52,12 @@ class Stroke(EmbroideryElement): return self.flatten(path) @property + @cache + def shape(self): + line_strings = [shapely.geometry.LineString(path) for path in self.paths] + return shapely.geometry.MultiLineString(line_strings) + + @property @param('manual_stitch', _('Manual stitch placement'), tooltip=_("Stitch every node in the path. Stitch length and zig-zag spacing are ignored."), type='boolean', default=False) def manual_stitch_mode(self): return self.get_boolean_param('manual_stitch') @@ -57,10 +65,7 @@ class Stroke(EmbroideryElement): def is_running_stitch(self): # using stroke width <= 0.5 pixels to indicate running stitch is deprecated in favor of dashed lines - try: - stroke_width = float(self.get_style("stroke-width")) - except ValueError: - stroke_width = 1 + stroke_width, units = parse_length_with_units(self.get_style("stroke-width", "1")) if self.dashed: return True @@ -93,56 +98,50 @@ class Stroke(EmbroideryElement): else: return False - def stroke_points(self, emb_point_list, zigzag_spacing, stroke_width): - # TODO: use inkstitch.stitches.running_stitch + def simple_satin(self, path, zigzag_spacing, stroke_width): + "zig-zag along the path at the specified spacing and wdith" - patch = Patch(color=self.color) - p0 = emb_point_list[0] - rho = 0.0 - side = 1 - last_segment_direction = None + # `self.zigzag_spacing` is the length for a zig and a zag + # together (a V shape). Start with running stitch at half + # that length: + patch = self.running_stitch(path, zigzag_spacing / 2.0) - for repeat in xrange(self.repeats): - if repeat % 2 == 0: - order = range(1, len(emb_point_list)) - else: - order = range(-2, -len(emb_point_list) - 1, -1) + # Now move the points left and right. Consider each pair + # of points in turn, and move perpendicular to them, + # alternating left and right. - for segi in order: - p1 = emb_point_list[segi] + offset = stroke_width / 2.0 - # how far we have to go along segment - seg_len = (p1 - p0).length() - if (seg_len == 0): - continue + for i in xrange(len(patch) - 1): + start = patch.stitches[i] + end = patch.stitches[i + 1] + segment_direction = (end - start).unit() + zigzag_direction = segment_direction.rotate_left() - # vector pointing along segment - along = (p1 - p0).unit() + if i % 2 == 1: + zigzag_direction *= -1 - # vector pointing to edge of stroke width - perp = along.rotate_left() * (stroke_width * 0.5) + patch.stitches[i] += zigzag_direction * offset - if stroke_width == 0.0 and last_segment_direction is not None: - if abs(1.0 - along * last_segment_direction) > 0.5: - # if greater than 45 degree angle, stitch the corner - rho = zigzag_spacing - patch.add_stitch(p0) + return patch - # iteration variable: how far we are along segment - while (rho <= seg_len): - left_pt = p0 + along * rho + perp * side - patch.add_stitch(left_pt) - rho += zigzag_spacing - side = -side + def running_stitch(self, path, stitch_length): + repeated_path = [] - p0 = p1 - last_segment_direction = along - rho -= seg_len + # go back and forth along the path as specified by self.repeats + for i in xrange(self.repeats): + if i % 2 == 1: + # reverse every other pass + this_path = path[::-1] + else: + this_path = path[:] - if (p0 - patch.stitches[-1]).length() > 0.1: - patch.add_stitch(p0) + repeated_path.extend(this_path) + + stitches = running_stitch(repeated_path, stitch_length) + + return Patch(self.color, stitches) - return patch def to_patches(self, last_patch): patches = [] @@ -152,10 +151,11 @@ class Stroke(EmbroideryElement): if self.manual_stitch_mode: patch = Patch(color=self.color, stitches=path, stitch_as_is=True) elif self.is_running_stitch(): - patch = self.stroke_points(path, self.running_stitch_length, stroke_width=0.0) + patch = self.running_stitch(path, self.running_stitch_length) else: - patch = self.stroke_points(path, self.zigzag_spacing / 2.0, stroke_width=self.stroke_width) + patch = self.simple_satin(path, self.zigzag_spacing, self.stroke_width) - patches.append(patch) + if patch: + patches.append(patch) return patches diff --git a/lib/extensions/__init__.py b/lib/extensions/__init__.py index ebdd2fc9..8b243176 100644 --- a/lib/extensions/__init__.py +++ b/lib/extensions/__init__.py @@ -1,6 +1,10 @@ from embroider import Embroider -from palettes import Palettes +from install import Install from params import Params from print_pdf import Print from simulate import Simulate from input import Input +from output import Output +from zip import Zip +from flip import Flip +from commands import Commands diff --git a/lib/extensions/base.py b/lib/extensions/base.py index ff587ca5..d230f1b0 100644 --- a/lib/extensions/base.py +++ b/lib/extensions/base.py @@ -7,6 +7,7 @@ from collections import MutableMapping from ..svg.tags import * from ..elements import AutoFill, Fill, Stroke, SatinColumn, Polyline, EmbroideryElement from ..utils import cache +from ..commands import is_command SVG_METADATA_TAG = inkex.addNS("metadata", "svg") @@ -57,16 +58,12 @@ class InkStitchMetadata(MutableMapping): def __setitem__(self, name, value): item = self._find_item(name) + item.text = json.dumps(value) - if value: - item.text = json.dumps(value) - else: - item.getparent().remove(item) - - def _find_item(self, name): + def _find_item(self, name, create=True): tag = inkex.addNS(name, "inkstitch") item = self.metadata.find(tag) - if item is None: + if item is None and create: item = inkex.etree.SubElement(self.metadata, tag) return item @@ -80,9 +77,9 @@ class InkStitchMetadata(MutableMapping): return None def __delitem__(self, name): - item = self._find_item(name) + item = self._find_item(name, create=False) - if item: + if item is not None: self.metadata.remove(item) def __iter__(self): @@ -111,7 +108,7 @@ class InkstitchExtension(inkex.Effect): inkex.errormsg(_("No embroiderable paths selected.")) else: inkex.errormsg(_("No embroiderable paths found in document.")) - inkex.errormsg(_("Tip: use Path -> Object to Path to convert non-paths before embroidering.")) + inkex.errormsg(_("Tip: use Path -> Object to Path to convert non-paths.")) def descendants(self, node): nodes = [] @@ -158,14 +155,15 @@ class InkstitchExtension(inkex.Effect): else: classes = [] - if element.get_style("fill"): + if element.get_style("fill", "black"): if element.get_boolean_param("auto_fill", True): classes.append(AutoFill) else: classes.append(Fill) if element.get_style("stroke"): - classes.append(Stroke) + if not is_command(element.node): + classes.append(Stroke) if element.get_boolean_param("stroke_first", False): classes.reverse() @@ -200,6 +198,15 @@ class InkstitchExtension(inkex.Effect): def get_inkstitch_metadata(self): return InkStitchMetadata(self.document) + def get_base_file_name(self): + svg_filename = self.document.getroot().get(inkex.addNS('docname', 'sodipodi'), "embroidery.svg") + + if svg_filename.endswith('.svg'): + svg_filename = svg_filename[:-4] + + return svg_filename + + def parse(self): """Override inkex.Effect to add Ink/Stitch xml namespace""" diff --git a/lib/extensions/commands.py b/lib/extensions/commands.py new file mode 100644 index 00000000..2f3006ff --- /dev/null +++ b/lib/extensions/commands.py @@ -0,0 +1,161 @@ +import os +import sys +import inkex +import simpletransform +import cubicsuperpath +from copy import deepcopy +from random import random +from shapely import geometry as shgeo + +from .base import InkstitchExtension +from ..i18n import _ +from ..elements import SatinColumn +from ..utils import get_bundled_dir, cache +from ..svg.tags import SVG_DEFS_TAG, SVG_GROUP_TAG, SVG_USE_TAG, SVG_PATH_TAG, INKSCAPE_GROUPMODE, XLINK_HREF, CONNECTION_START, CONNECTION_END, CONNECTOR_TYPE +from ..svg import get_node_transform + + +class Commands(InkstitchExtension): + COMMANDS = ["fill_start", "fill_end", "stop", "trim"] + + def __init__(self, *args, **kwargs): + InkstitchExtension.__init__(self, *args, **kwargs) + for command in self.COMMANDS: + self.OptionParser.add_option("--%s" % command, type="inkbool") + + @property + def symbols_path(self): + return os.path.join(get_bundled_dir("symbols"), "inkstitch.svg") + + @property + @cache + def symbols_svg(self): + with open(self.symbols_path) as symbols_file: + return inkex.etree.parse(symbols_file) + + @property + @cache + def symbol_defs(self): + return self.symbols_svg.find(SVG_DEFS_TAG) + + @property + @cache + def defs(self): + return self.document.find(SVG_DEFS_TAG) + + def ensure_symbol(self, command): + path = "./*[@id='inkstitch_%s']" % command + if self.defs.find(path) is None: + self.defs.append(deepcopy(self.symbol_defs.find(path))) + + def get_correction_transform(self, node): + # if we want to place our new nodes in the same group as this node, + # then we'll need to factor in the effects of any transforms set on + # the parents of this node. + + # we can ignore the transform on the node itself since it won't apply + # to the objects we add + transform = get_node_transform(node.getparent()) + + # now invert it, so that we can position our objects in absolute + # coordinates + transform = simpletransform.invertTransform(transform) + + return simpletransform.formatTransform(transform) + + def add_connector(self, symbol, element): + # I'd like it if I could position the connector endpoint nicely but inkscape just + # moves it to the element's center immediately after the extension runs. + start_pos = (symbol.get('x'), symbol.get('y')) + end_pos = element.shape.centroid + + path = inkex.etree.Element(SVG_PATH_TAG, + { + "id": self.uniqueId("connector"), + "d": "M %s,%s %s,%s" % (start_pos[0], start_pos[1], end_pos.x, end_pos.y), + "style": "stroke:#000000;stroke-width:1px;stroke-opacity:0.5;fill:none;", + "transform": self.get_correction_transform(symbol), + CONNECTION_START: "#%s" % symbol.get('id'), + CONNECTION_END: "#%s" % element.node.get('id'), + CONNECTOR_TYPE: "polyline", + } + ) + + symbol.getparent().insert(symbol.getparent().index(symbol), path) + + def get_command_pos(self, element, index, total): + # Put command symbols 30 pixels out from the shape, spaced evenly around it. + + # get a line running 30 pixels out from the shape + outline = element.shape.buffer(30).exterior + + # pick this item's spot arond the outline and perturb it a bit to avoid + # stacking up commands if they run the extension multiple times + position = index / float(total) + position += random() * 0.1 + + return outline.interpolate(position, normalized=True) + + def remove_legacy_param(self, element, command): + if command == "trim" or command == "stop": + # If they had the old "TRIM after" or "STOP after" attributes set, + # automatically delete them. THe new commands will do the same + # thing. + # + # If we didn't delete these here, then things would get confusing. + # If the user were to delete a "trim" symbol added by this extension + # but the "embroider_trim_after" attribute is still set, then the + # trim would keep happening. + + attribute = "embroider_%s_after" % command + + if attribute in element.node.attrib: + del element.node.attrib[attribute] + + def add_command(self, element, commands): + for i, command in enumerate(commands): + self.remove_legacy_param(element, command) + + pos = self.get_command_pos(element, i, len(commands)) + + symbol = inkex.etree.SubElement(element.node.getparent(), SVG_USE_TAG, + { + "id": self.uniqueId("use"), + XLINK_HREF: "#inkstitch_%s" % command, + "height": "100%", + "width": "100%", + "x": str(pos.x), + "y": str(pos.y), + "transform": self.get_correction_transform(element.node) + } + ) + + self.add_connector(symbol, element) + + def effect(self): + if not self.get_elements(): + return + + if not self.selected: + inkex.errormsg(_("Please select one or more objects to which to attach commands.")) + return + + self.svg = self.document.getroot() + + commands = [command for command in self.COMMANDS if getattr(self.options, command)] + + if not commands: + inkex.errormsg(_("Please choose one or more commands to attach.")) + return + + for command in commands: + self.ensure_symbol(command) + + # Each object (node) in the SVG may correspond to multiple Elements of different + # types (e.g. stroke + fill). We only want to process each one once. + seen_nodes = set() + + for element in self.elements: + if element.node not in seen_nodes: + self.add_command(element, commands) + seen_nodes.add(element.node) diff --git a/lib/extensions/embroider.py b/lib/extensions/embroider.py index a213be64..1e994e27 100644 --- a/lib/extensions/embroider.py +++ b/lib/extensions/embroider.py @@ -44,8 +44,7 @@ class Embroider(InkstitchExtension): if self.options.output_file: output_path = os.path.join(self.options.path, self.options.output_file) else: - svg_filename = self.document.getroot().get(inkex.addNS('docname', 'sodipodi'), "embroidery.svg") - csv_filename = svg_filename.replace('.svg', '.%s' % self.options.output_format) + csv_filename = '%s.%s' % (self.get_base_file_name(), self.options.output_format) output_path = os.path.join(self.options.path, csv_filename) def add_suffix(path, suffix): diff --git a/lib/extensions/flip.py b/lib/extensions/flip.py new file mode 100644 index 00000000..d8d78cb5 --- /dev/null +++ b/lib/extensions/flip.py @@ -0,0 +1,40 @@ +import sys +import inkex +import cubicsuperpath +from shapely import geometry as shgeo + +from .base import InkstitchExtension +from ..i18n import _ +from ..elements import SatinColumn + +class Flip(InkstitchExtension): + def subpath_to_linestring(self, subpath): + return shgeo.LineString() + + def flip(self, satin): + csp = satin.path + + if len(csp) > 1: + flattened = satin.flatten(csp) + + # find the rails (the two longest paths) and swap them + indices = range(len(csp)) + indices.sort(key=lambda i: shgeo.LineString(flattened[i]).length, reverse=True) + + first = indices[0] + second = indices[1] + csp[first], csp[second] = csp[second], csp[first] + + satin.node.set("d", cubicsuperpath.formatPath(csp)) + + def effect(self): + if not self.get_elements(): + return + + if not self.selected: + inkex.errormsg(_("Please select one or more satin columns to flip.")) + return + + for element in self.elements: + if isinstance(element, SatinColumn): + self.flip(element) diff --git a/lib/extensions/input.py b/lib/extensions/input.py index 251859c5..cb5ac452 100644 --- a/lib/extensions/input.py +++ b/lib/extensions/input.py @@ -3,49 +3,29 @@ from os.path import realpath, dirname, join as path_join import sys from inkex import etree import inkex - -# help python find libembroidery when running in a local repo clone -if getattr(sys, 'frozen', None) is None: - sys.path.append(realpath(path_join(dirname(__file__), '..', '..'))) - -from libembroidery import * +import pyembroidery from ..svg import PIXELS_PER_MM, render_stitch_plan from ..svg.tags import INKSCAPE_LABEL from ..i18n import _ -from ..stitch_plan import StitchPlan +from ..stitch_plan import StitchPlan, ColorBlock +from ..utils.io import save_stdout class Input(object): - def pattern_stitches(self, pattern): - stitch_pointer = pattern.stitchList - while stitch_pointer: - yield stitch_pointer.stitch - stitch_pointer = stitch_pointer.next - - def affect(self, args): embroidery_file = args[0] - pattern = embPattern_create() - embPattern_read(pattern, embroidery_file) - embPattern_flipVertical(pattern) + pattern = pyembroidery.read(embroidery_file) stitch_plan = StitchPlan() color_block = None - current_color = None - - for stitch in self.pattern_stitches(pattern): - if stitch.color != current_color: - thread = embThreadList_getAt(pattern.threadList, stitch.color) - color = thread.color - color_block = stitch_plan.new_color_block((color.r, color.g, color.b)) - current_color = stitch.color - if not stitch.flags & END: - color_block.add_stitch(stitch.xx * PIXELS_PER_MM, stitch.yy * PIXELS_PER_MM, - jump=stitch.flags & JUMP, - color_change=stitch.flags & STOP, - trim=stitch.flags & TRIM) + for raw_stitches, thread in pattern.get_as_colorblocks(): + color_block = stitch_plan.new_color_block(thread) + for x, y, command in raw_stitches: + color_block.add_stitch(x * PIXELS_PER_MM / 10.0, y * PIXELS_PER_MM / 10.0, + jump=(command == pyembroidery.JUMP), + trim=(command == pyembroidery.TRIM)) extents = stitch_plan.extents svg = etree.Element("svg", nsmap=inkex.NSS, attrib= diff --git a/lib/extensions/palettes.py b/lib/extensions/install.py index f7a6c7a5..42a92113 100644 --- a/lib/extensions/palettes.py +++ b/lib/extensions/install.py @@ -1,3 +1,5 @@ +# -*- coding: UTF-8 -*- + import sys import traceback import os @@ -11,29 +13,29 @@ import logging import wx import inkex -from ..utils import guess_inkscape_config_path +from ..utils import guess_inkscape_config_path, get_bundled_dir -class InstallPalettesFrame(wx.Frame): +class InstallerFrame(wx.Frame): def __init__(self, *args, **kwargs): wx.Frame.__init__(self, *args, **kwargs) - default_path = os.path.join(guess_inkscape_config_path(), "palettes") + self.path = guess_inkscape_config_path() panel = wx.Panel(self) sizer = wx.BoxSizer(wx.VERTICAL) - text = wx.StaticText(panel, label=_("Directory in which to install palettes:")) - font = wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL) - text.SetFont(font) - sizer.Add(text, proportion=0, flag=wx.ALL|wx.EXPAND, border=10) + text_sizer = wx.BoxSizer(wx.HORIZONTAL) - path_sizer = wx.BoxSizer(wx.HORIZONTAL) - self.path_input = wx.TextCtrl(panel, wx.ID_ANY, value=default_path) - path_sizer.Add(self.path_input, proportion=3, flag=wx.RIGHT|wx.EXPAND, border=20) - chooser_button = wx.Button(panel, wx.ID_OPEN, _('Choose another directory...')) - path_sizer.Add(chooser_button, proportion=1, flag=wx.EXPAND) - sizer.Add(path_sizer, proportion=0, flag=wx.ALL|wx.EXPAND, border=10) + text = _('Ink/Stitch can install files ("add-ons") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:') + \ + "\n\n • " + _("thread manufacturer color palettes") + \ + "\n • " + _("Ink/Stitch visual commands (Object -> Symbols...)") + + static_text = wx.StaticText(panel, label=text) + font = wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL) + static_text.SetFont(font) + text_sizer.Add(static_text, proportion=0, flag=wx.ALL|wx.EXPAND, border=10) + sizer.Add(text_sizer, proportion=3, flag=wx.ALL|wx.EXPAND, border=0) buttons_sizer = wx.BoxSizer(wx.HORIZONTAL) install_button = wx.Button(panel, wx.ID_ANY, _("Install")) @@ -41,15 +43,11 @@ class InstallPalettesFrame(wx.Frame): buttons_sizer.Add(install_button, proportion=0, flag=wx.ALIGN_RIGHT|wx.ALL, border=5) cancel_button = wx.Button(panel, wx.ID_CANCEL, _("Cancel")) buttons_sizer.Add(cancel_button, proportion=0, flag=wx.ALIGN_RIGHT|wx.ALL, border=5) - sizer.Add(buttons_sizer, proportion=0, flag=wx.ALIGN_RIGHT) + sizer.Add(buttons_sizer, proportion=1, flag=wx.ALIGN_RIGHT|wx.ALIGN_BOTTOM) - outer_sizer = wx.BoxSizer(wx.HORIZONTAL) - outer_sizer.Add(sizer, proportion=0, flag=wx.ALIGN_CENTER_VERTICAL) - - panel.SetSizer(outer_sizer) + panel.SetSizer(sizer) panel.Layout() - chooser_button.Bind(wx.EVT_BUTTON, self.chooser_button_clicked) cancel_button.Bind(wx.EVT_BUTTON, self.cancel_button_clicked) install_button.Bind(wx.EVT_BUTTON, self.install_button_clicked) @@ -57,36 +55,31 @@ class InstallPalettesFrame(wx.Frame): self.Destroy() def chooser_button_clicked(self, event): - dialog = wx.DirDialog(self, _("Choose Inkscape palettes directory")) + dialog = wx.DirDialog(self, _("Choose Inkscape directory")) if dialog.ShowModal() != wx.ID_CANCEL: self.path_input.SetValue(dialog.GetPath()) def install_button_clicked(self, event): try: - self.install_palettes() + self.install_addons('palettes') + self.install_addons('symbols') except Exception, e: wx.MessageDialog(self, - _('Thread palette installation failed') + ': \n' + traceback.format_exc(), + _('Inkscape add-on installation failed') + ': \n' + traceback.format_exc(), _('Installation Failed'), wx.OK).ShowModal() else: wx.MessageDialog(self, - _('Thread palette files have been installed. Please restart Inkscape to load the new palettes.'), + _('Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons.'), _('Installation Completed'), wx.OK).ShowModal() self.Destroy() - def install_palettes(self): - path = self.path_input.GetValue() - palettes_dir = self.get_bundled_palettes_dir() - self.copy_files(glob(os.path.join(palettes_dir, "*")), path) - - def get_bundled_palettes_dir(self): - if getattr(sys, 'frozen', None) is not None: - return realpath(os.path.join(sys._MEIPASS, '..', 'palettes')) - else: - return os.path.join(dirname(realpath(__file__)), 'palettes') + def install_addons(self, type): + path = os.path.join(self.path, type) + src_dir = get_bundled_dir(type) + self.copy_files(glob(os.path.join(src_dir, "*")), path) if (sys.platform == "win32"): # If we try to just use shutil.copy it says the operation requires elevation. @@ -104,9 +97,9 @@ class InstallPalettesFrame(wx.Frame): for palette_file in files: shutil.copy(palette_file, dest) -class Palettes(inkex.Effect): +class Install(inkex.Effect): def effect(self): app = wx.App() - installer_frame = InstallPalettesFrame(None, title=_("Ink/Stitch Thread Palette Installer"), size=(450, 200)) + installer_frame = InstallerFrame(None, title=_("Ink/Stitch Add-ons Installer"), size=(550, 250)) installer_frame.Show() app.MainLoop() diff --git a/lib/extensions/output.py b/lib/extensions/output.py new file mode 100644 index 00000000..1dc8d19d --- /dev/null +++ b/lib/extensions/output.py @@ -0,0 +1,48 @@ +import sys +import traceback +import os +import inkex +import tempfile + +from .base import InkstitchExtension +from ..i18n import _ +from ..output import write_embroidery_file +from ..stitch_plan import patches_to_stitch_plan +from ..svg import render_stitch_plan, PIXELS_PER_MM +from ..utils.io import save_stdout + +class Output(InkstitchExtension): + def __init__(self, *args, **kwargs): + InkstitchExtension.__init__(self) + self.OptionParser.add_option("-c", "--collapse_len_mm", + action="store", type="float", + dest="collapse_length_mm", default=3.0, + help="max collapse length (mm)") + self.OptionParser.add_option("-f", "--format", + dest="file_extension", + help="file extension to output (example: DST)") + + def effect(self): + if not self.get_elements(): + return + + patches = self.elements_to_patches(self.elements) + stitch_plan = patches_to_stitch_plan(patches, self.options.collapse_length_mm * PIXELS_PER_MM) + + temp_file = tempfile.NamedTemporaryFile(suffix=".%s" % self.options.file_extension, delete=False) + + # in windows, failure to close here will keep the file locked + temp_file.close() + + write_embroidery_file(temp_file.name, stitch_plan, self.document.getroot()) + + # inkscape will read the file contents from stdout and copy + # to the destination file that the user chose + with open(temp_file.name) as output_file: + sys.stdout.write(output_file.read()) + + # clean up the temp file + os.remove(temp_file.name) + + # don't let inkex output the SVG! + sys.exit(0) diff --git a/lib/extensions/params.py b/lib/extensions/params.py index 03a6f3cc..58fedd6b 100644 --- a/lib/extensions/params.py +++ b/lib/extensions/params.py @@ -19,6 +19,7 @@ from ..stitch_plan import patches_to_stitch_plan from ..elements import EmbroideryElement, Fill, AutoFill, Stroke, SatinColumn from ..utils import save_stderr, restore_stderr from ..simulator import EmbroiderySimulator +from ..commands import is_command def presets_path(): @@ -354,6 +355,9 @@ class SettingsFrame(wx.Frame): self.simulate_thread = None self.simulate_refresh_needed = Event() + # used when closing to avoid having the window reopen at the last second + self.disable_simulate_window = False + wx.CallLater(1000, self.update_simulator) self.presets_box = wx.StaticBox(self, wx.ID_ANY, label=_("Presets")) @@ -392,6 +396,9 @@ class SettingsFrame(wx.Frame): self.simulate_window.stop() self.simulate_window.clear() + if self.disable_simulate_window: + return + if not self.simulate_thread or not self.simulate_thread.is_alive(): self.simulate_thread = Thread(target=self.simulate_worker) self.simulate_thread.daemon = True @@ -586,6 +593,7 @@ class SettingsFrame(wx.Frame): self.close() def use_last(self, event): + self.disable_simulate_window = True self._load_preset("__LAST__") self.apply(event) @@ -632,6 +640,9 @@ class SettingsFrame(wx.Frame): self.Layout() # end wxGlade +class NoValidObjects(Exception): + pass + class Params(InkstitchExtension): def __init__(self, *args, **kwargs): self.cancelled = False @@ -645,7 +656,7 @@ class Params(InkstitchExtension): classes.append(AutoFill) classes.append(Fill) - if element.get_style("stroke"): + if element.get_style("stroke") and not is_command(node): classes.append(Stroke) if element.get_style("stroke-dasharray") is None: @@ -689,6 +700,11 @@ class Params(InkstitchExtension): def create_tabs(self, parent): tabs = [] + nodes_by_class = self.get_nodes_by_class() + + if not nodes_by_class: + raise NoValidObjects() + for cls, nodes in self.get_nodes_by_class(): params = cls.get_params() @@ -745,12 +761,15 @@ class Params(InkstitchExtension): self.cancelled = True def effect(self): - app = wx.App() - frame = SettingsFrame(tabs_factory=self.create_tabs, on_cancel=self.cancel) - frame.Show() - app.MainLoop() - - if self.cancelled: - # This prevents the superclass from outputting the SVG, because we - # may have modified the DOM. - sys.exit(0) + try: + app = wx.App() + frame = SettingsFrame(tabs_factory=self.create_tabs, on_cancel=self.cancel) + frame.Show() + app.MainLoop() + + if self.cancelled: + # This prevents the superclass from outputting the SVG, because we + # may have modified the DOM. + sys.exit(0) + except NoValidObjects: + self.no_elements_error() diff --git a/lib/extensions/print_pdf.py b/lib/extensions/print_pdf.py index baeb7eba..6e2eff58 100644 --- a/lib/extensions/print_pdf.py +++ b/lib/extensions/print_pdf.py @@ -21,7 +21,7 @@ import requests from .base import InkstitchExtension from ..i18n import _, translation as inkstitch_translation from ..svg import PIXELS_PER_MM, render_stitch_plan -from ..svg.tags import SVG_GROUP_TAG +from ..svg.tags import SVG_GROUP_TAG, INKSCAPE_GROUPMODE from ..stitch_plan import patches_to_stitch_plan from ..threads import ThreadCatalog @@ -94,6 +94,8 @@ class PrintPreviewServer(Thread): self.html = kwargs.pop('html') self.metadata = kwargs.pop('metadata') self.stitch_plan = kwargs.pop('stitch_plan') + self.realistic_overview_svg = kwargs.pop('realistic_overview_svg') + self.realistic_color_block_svgs = kwargs.pop('realistic_color_block_svgs') Thread.__init__(self, *args, **kwargs) self.daemon = True self.last_request_time = None @@ -202,6 +204,14 @@ class PrintPreviewServer(Thread): return jsonify(threads) + @self.app.route('/realistic/block<int:index>', methods=['GET']) + def get_realistic_block(index): + return Response(self.realistic_color_block_svgs[index], mimetype='image/svg+xml') + + @self.app.route('/realistic/overview', methods=['GET']) + def get_realistic_overview(): + return Response(self.realistic_overview_svg, mimetype='image/svg+xml') + def stop(self): # for whatever reason, shutting down only seems possible in # the context of a flask request, so we'll just make one @@ -295,38 +305,24 @@ class Print(InkstitchExtension): return env - def strip_namespaces(self): + def strip_namespaces(self, svg): # namespace prefixes seem to trip up HTML, so get rid of them - for element in self.document.iter(): + for element in svg.iter(): if element.tag[0]=='{': element.tag = element.tag[element.tag.index('}',1) + 1:] - def effect(self): - # It doesn't really make sense to print just a couple of selected - # objects. It's almost certain they meant to print the whole design. - # If they really wanted to print just a few objects, they could set - # the rest invisible temporarily. - self.selected = {} + def render_svgs(self, stitch_plan, realistic=False): + svg = deepcopy(self.document).getroot() + render_stitch_plan(svg, stitch_plan, realistic) - if not self.get_elements(): - return - - self.hide_all_layers() - - patches = self.elements_to_patches(self.elements) - stitch_plan = patches_to_stitch_plan(patches) - palette = ThreadCatalog().match_and_apply_palette(stitch_plan, self.get_inkstitch_metadata()['thread-palette']) - render_stitch_plan(self.document.getroot(), stitch_plan) - - self.strip_namespaces() + self.strip_namespaces(svg) # Now the stitch plan layer will contain a set of groups, each # corresponding to a color block. We'll create a set of SVG files # corresponding to each individual color block and a final one # for all color blocks together. - svg = self.document.getroot() - layers = svg.findall("./g[@{http://www.inkscape.org/namespaces/inkscape}groupmode='layer']") + layers = svg.findall("./g[@%s='layer']" % INKSCAPE_GROUPMODE) stitch_plan_layer = svg.find(".//*[@id='__inkstitch_stitch_plan__']") # First, delete all of the other layers. We don't need them and they'll @@ -335,9 +331,9 @@ class Print(InkstitchExtension): if layer is not stitch_plan_layer: svg.remove(layer) - overview_svg = inkex.etree.tostring(self.document) - + overview_svg = inkex.etree.tostring(svg) color_block_groups = stitch_plan_layer.getchildren() + color_block_svgs = [] for i, group in enumerate(color_block_groups): # clear the stitch plan layer @@ -347,12 +343,15 @@ class Print(InkstitchExtension): stitch_plan_layer.append(group) # save an SVG preview - stitch_plan.color_blocks[i].svg_preview = inkex.etree.tostring(self.document) + color_block_svgs.append(inkex.etree.tostring(svg)) + return overview_svg, color_block_svgs + + def render_html(self, stitch_plan, overview_svg, selected_palette): env = self.build_environment() template = env.get_template('index.html') - html = template.render( + return template.render( view = {'client_overview': False, 'client_detailedview': False, 'operator_overview': True, 'operator_detailedview': True}, logo = {'src' : '', 'title' : 'LOGO'}, date = date.today(), @@ -371,14 +370,38 @@ class Print(InkstitchExtension): svg_overview = overview_svg, color_blocks = stitch_plan.color_blocks, palettes = ThreadCatalog().palette_names(), - selected_palette = palette, + selected_palette = selected_palette, ) - # We've totally mucked with the SVG. Restore it so that we can save - # metadata into it. - self.document = deepcopy(self.original_document) + def effect(self): + # It doesn't really make sense to print just a couple of selected + # objects. It's almost certain they meant to print the whole design. + # If they really wanted to print just a few objects, they could set + # the rest invisible temporarily. + self.selected = {} + + if not self.get_elements(): + return + + patches = self.elements_to_patches(self.elements) + stitch_plan = patches_to_stitch_plan(patches) + palette = ThreadCatalog().match_and_apply_palette(stitch_plan, self.get_inkstitch_metadata()['thread-palette']) + + overview_svg, color_block_svgs = self.render_svgs(stitch_plan, realistic=False) + realistic_overview_svg, realistic_color_block_svgs = self.render_svgs(stitch_plan, realistic=True) + + for i, svg in enumerate(color_block_svgs): + stitch_plan.color_blocks[i].svg_preview = svg + + html = self.render_html(stitch_plan, overview_svg, palette) - print_server = PrintPreviewServer(html=html, metadata=self.get_inkstitch_metadata(), stitch_plan=stitch_plan) + print_server = PrintPreviewServer( + html=html, + metadata=self.get_inkstitch_metadata(), + stitch_plan=stitch_plan, + realistic_overview_svg=realistic_overview_svg, + realistic_color_block_svgs=realistic_color_block_svgs + ) print_server.start() time.sleep(1) diff --git a/lib/extensions/zip.py b/lib/extensions/zip.py new file mode 100644 index 00000000..02f29e8a --- /dev/null +++ b/lib/extensions/zip.py @@ -0,0 +1,74 @@ +import sys +import traceback +import os +import inkex +import tempfile +from zipfile import ZipFile +import pyembroidery + +from .base import InkstitchExtension +from ..i18n import _ +from ..output import write_embroidery_file +from ..stitch_plan import patches_to_stitch_plan +from ..svg import render_stitch_plan, PIXELS_PER_MM +from ..utils.io import save_stdout + + +class Zip(InkstitchExtension): + def __init__(self, *args, **kwargs): + InkstitchExtension.__init__(self) + self.OptionParser.add_option("-c", "--collapse_len_mm", + action="store", type="float", + dest="collapse_length_mm", default=3.0, + help="max collapse length (mm)") + + # it's kind of obnoxious that I have to do this... + self.formats = [] + for format in pyembroidery.supported_formats(): + if 'writer' in format and format['category'] == 'embroidery': + extension = format['extension'] + self.OptionParser.add_option('--format-%s' % extension, type="inkbool", dest=extension) + self.formats.append(extension) + + def effect(self): + if not self.get_elements(): + return + + patches = self.elements_to_patches(self.elements) + stitch_plan = patches_to_stitch_plan(patches, self.options.collapse_length_mm * PIXELS_PER_MM) + + base_file_name = self.get_base_file_name() + path = tempfile.mkdtemp() + + files = [] + + for format in self.formats: + if getattr(self.options, format): + output_file = os.path.join(path, "%s.%s" % (base_file_name, format)) + write_embroidery_file(output_file, stitch_plan, self.document.getroot()) + files.append(output_file) + + if not files: + self.errormsg(_("No embroidery file formats selected.")) + + temp_file = tempfile.NamedTemporaryFile(suffix=".zip", delete=False) + + # in windows, failure to close here will keep the file locked + temp_file.close() + + with ZipFile(temp_file.name, "w") as zip_file: + for file in files: + zip_file.write(file, os.path.basename(file)) + + # inkscape will read the file contents from stdout and copy + # to the destination file that the user chose + with open(temp_file.name) as output_file: + sys.stdout.write(output_file.read()) + + os.remove(temp_file.name) + for file in files: + os.remove(file) + os.rmdir(path) + + # don't let inkex output the SVG! + sys.exit(0) diff --git a/lib/output.py b/lib/output.py index 84128a25..0d7f9918 100644 --- a/lib/output.py +++ b/lib/output.py @@ -1,4 +1,4 @@ -import libembroidery +import pyembroidery import inkex import simpletransform import shapely.geometry as shgeo @@ -7,36 +7,17 @@ from .utils import Point from .svg import PIXELS_PER_MM, get_doc_size, get_viewbox_transform -def make_thread(color): - thread = libembroidery.EmbThread() - thread.color = libembroidery.embColor_make(*color.rgb) - - thread.description = color.name - thread.catalogNumber = "" - - return thread - -def add_thread(pattern, thread): - """Add a thread to a pattern and return the thread's index""" - - libembroidery.embPattern_addThread(pattern, thread) - - return libembroidery.embThreadList_count(pattern.threadList) - 1 - -def get_flags(stitch): - flags = 0 - +def get_command(stitch): if stitch.jump: - flags |= libembroidery.JUMP - - if stitch.trim: - flags |= libembroidery.TRIM - - if stitch.color_change: - flags |= libembroidery.STOP - - return flags - + return pyembroidery.JUMP + elif stitch.trim: + return pyembroidery.TRIM + elif stitch.color_change: + return pyembroidery.COLOR_CHANGE + elif stitch.stop: + return pyembroidery.STOP + else: + return pyembroidery.NEEDLE_AT def _string_to_floats(string): floats = string.split(',') @@ -102,27 +83,32 @@ def get_origin(svg): def write_embroidery_file(file_path, stitch_plan, svg): origin = get_origin(svg) - pattern = libembroidery.embPattern_create() + pattern = pyembroidery.EmbPattern() for color_block in stitch_plan: - add_thread(pattern, make_thread(color_block.color)) + pattern.add_thread(color_block.color.pyembroidery_thread) for stitch in color_block: - if stitch.stop: - # This is the start of the extra color block added by the - # "STOP after" handler (see stitch_plan/stop.py). Assign it - # the same color. - add_thread(pattern, make_thread(color_block.color)) + command = get_command(stitch) + pattern.add_stitch_absolute(command, stitch.x, stitch.y) - flags = get_flags(stitch) - libembroidery.embPattern_addStitchAbs(pattern, stitch.x - origin.x, stitch.y - origin.y, flags, 1) - - libembroidery.embPattern_addStitchAbs(pattern, stitch.x - origin.x, stitch.y - origin.y, libembroidery.END, 1) + pattern.add_stitch_absolute(pyembroidery.END, stitch.x, stitch.y) # convert from pixels to millimeters - libembroidery.embPattern_scale(pattern, 1/PIXELS_PER_MM) + # also multiply by 10 to get tenths of a millimeter as required by pyembroidery + scale = 10 / PIXELS_PER_MM + + settings = { + # correct for the origin + "translate": -origin, + + # convert from pixels to millimeters + # also multiply by 10 to get tenths of a millimeter as required by pyembroidery + "scale": (scale, scale), - # SVG and embroidery disagree on the direction of the Y axis - libembroidery.embPattern_flipVertical(pattern) + # This forces a jump at the start of the design and after each trim, + # even if we're close enough not to need one. + "full_jump": True, + } - libembroidery.embPattern_write(pattern, file_path) + pyembroidery.write(pattern, file_path, settings) diff --git a/lib/stitch_plan/stitch.py b/lib/stitch_plan/stitch.py index 12642a60..5230efec 100644 --- a/lib/stitch_plan/stitch.py +++ b/lib/stitch_plan/stitch.py @@ -2,7 +2,7 @@ from ..utils.geometry import Point class Stitch(Point): - def __init__(self, x, y, color=None, jump=False, stop=False, trim=False, color_change=False, no_ties=False): + def __init__(self, x, y, color=None, jump=False, stop=False, trim=False, color_change=False, fake_color_change=False, no_ties=False): self.x = x self.y = y self.color = color @@ -10,10 +10,20 @@ class Stitch(Point): self.trim = trim self.stop = stop self.color_change = color_change + self.fake_color_change = fake_color_change self.no_ties = no_ties def __repr__(self): - return "Stitch(%s, %s, %s, %s, %s, %s, %s)" % (self.x, self.y, self.color, "JUMP" if self.jump else " ", "TRIM" if self.trim else " ", "STOP" if self.stop else " ", "NO TIES" if self.no_ties else " ") + return "Stitch(%s, %s, %s, %s, %s, %s, %s, %s%s)" % (self.x, + self.y, + self.color, + "JUMP" if self.jump else " ", + "TRIM" if self.trim else " ", + "STOP" if self.stop else " ", + "NO TIES" if self.no_ties else " ", + "FAKE " if self.fake_color_change else "", + "COLOR CHANGE" if self.color_change else " " + ) def copy(self): return Stitch(self.x, self.y, self.color, self.jump, self.stop, self.trim, self.color_change, self.no_ties) diff --git a/lib/stitch_plan/stitch_plan.py b/lib/stitch_plan/stitch_plan.py index 93bcd195..682ea09f 100644 --- a/lib/stitch_plan/stitch_plan.py +++ b/lib/stitch_plan/stitch_plan.py @@ -1,6 +1,4 @@ from .stitch import Stitch -from .stop import process_stop -from .trim import process_trim from .ties import add_ties from ..svg import PIXELS_PER_MM from ..utils.geometry import Point @@ -16,62 +14,45 @@ def patches_to_stitch_plan(patches, collapse_len=3.0 * PIXELS_PER_MM): """ stitch_plan = StitchPlan() - color_block = stitch_plan.new_color_block() - need_trim = False + if not patches: + return stitch_plan + + color_block = stitch_plan.new_color_block(color=patches[0].color) + for patch in patches: if not patch.stitches: continue - if not color_block.has_color(): - # set the color for the first color block - color_block.color = patch.color - - if color_block.color == patch.color: - if need_trim: - process_trim(color_block, patch.stitches[0]) - need_trim = False - - # add a jump stitch between patches if the distance is more - # than the collapse length - if color_block.last_stitch: - if (patch.stitches[0] - color_block.last_stitch).length() > collapse_len: - color_block.add_stitch(patch.stitches[0].x, patch.stitches[0].y, jump=True) - - else: - # add a color change (only if we didn't just do a "STOP after") - if not color_block.last_stitch.color_change: - stitch = color_block.last_stitch.copy() - stitch.color_change = True - color_block.add_stitch(stitch) + if color_block.color != patch.color: + if len(color_block) == 0: + # We just processed a stop, which created a new color block. + # We'll just claim this new block as ours: + color_block.color = patch.color + else: + # end the previous block with a color change + color_block.add_stitch(color_change=True) - color_block = stitch_plan.new_color_block() - color_block.color = patch.color + # make a new block of our color + color_block = stitch_plan.new_color_block(color=patch.color) - color_block.filter_duplicate_stitches() color_block.add_stitches(patch.stitches, no_ties=patch.stitch_as_is) if patch.trim_after: - # a trim needs to be followed by a jump to the next stitch, so - # we'll process it when we start the next patch - need_trim = True + color_block.add_stitch(trim=True) if patch.stop_after: - process_stop(color_block) - - add_jumps(stitch_plan) - add_ties(stitch_plan) - - return stitch_plan + color_block.add_stitch(stop=True) + color_block = stitch_plan.new_color_block(color_block.color) + if len(color_block) == 0: + # last block ended in a stop, so now we have an empty block + del stitch_plan.color_blocks[-1] -def add_jumps(stitch_plan): - """Add a JUMP stitch at the start of each color block.""" + stitch_plan.filter_duplicate_stitches() + stitch_plan.add_ties() - for color_block in stitch_plan: - stitch = color_block.stitches[0].copy() - stitch.jump = True - color_block.stitches.insert(0, stitch) + return stitch_plan class StitchPlan(object): @@ -85,6 +66,17 @@ class StitchPlan(object): self.color_blocks.append(color_block) return color_block + def add_color_block(self, color_block): + self.color_blocks.append(color_block) + + def filter_duplicate_stitches(self): + for color_block in self: + color_block.filter_duplicate_stitches() + + def add_ties(self): + # see ties.py + add_ties(self) + def __iter__(self): return iter(self.color_blocks) @@ -100,8 +92,12 @@ class StitchPlan(object): return len({block.color for block in self}) @property + def num_color_blocks(self): + return len(self.color_blocks) + + @property def num_stops(self): - return sum(block.num_stops for block in self) + return sum(1 for block in self if block.stop_after) @property def num_trims(self): @@ -137,6 +133,13 @@ class StitchPlan(object): dimensions = self.dimensions return (dimensions[0] / PIXELS_PER_MM, dimensions[1] / PIXELS_PER_MM) + @property + def last_color_block(self): + if self.color_blocks: + return self.color_blocks[-1] + else: + return None + class ColorBlock(object): """Holds a set of stitches, all with the same thread color.""" @@ -148,6 +151,9 @@ class ColorBlock(object): def __iter__(self): return iter(self.stitches) + def __len__(self): + return len(self.stitches) + def __repr__(self): return "ColorBlock(%s, %s)" % (self.color, self.stitches) @@ -180,20 +186,18 @@ class ColorBlock(object): return len(self.stitches) @property - def num_stops(self): - """Number of pauses in this color block.""" - - # Stops are encoded using two STOP stitches each. See the comment in - # stop.py for an explanation. - - return sum(1 for stitch in self if stitch.stop) / 2 - - @property def num_trims(self): """Number of trims in this color block.""" return sum(1 for stitch in self if stitch.trim) + @property + def stop_after(self): + if self.last_stitch is not None: + return self.last_stitch.stop + else: + return False + def filter_duplicate_stitches(self): if not self.stitches: return @@ -201,12 +205,12 @@ class ColorBlock(object): stitches = [self.stitches[0]] for stitch in self.stitches[1:]: - if stitches[-1].jump or stitch.stop or stitch.trim: - # Don't consider jumps, stops, or trims as candidates for filtering + if stitches[-1].jump or stitch.stop or stitch.trim or stitch.color_change: + # Don't consider jumps, stops, color changes, or trims as candidates for filtering pass else: l = (stitch - stitches[-1]).length() - if l <= 0.1: + if l <= 0.1 * PIXELS_PER_MM: # duplicate stitch, skip this one continue @@ -215,11 +219,21 @@ class ColorBlock(object): self.stitches = stitches def add_stitch(self, *args, **kwargs): + if not args: + # They're adding a command, e.g. `color_block.add_stitch(stop=True)``. + # Use the position from the last stitch. + if self.last_stitch: + args = (self.last_stitch.x, self.last_stitch.y) + else: + raise ValueError("internal error: can't add a command to an empty stitch block") + if isinstance(args[0], Stitch): self.stitches.append(args[0]) elif isinstance(args[0], Point): self.stitches.append(Stitch(args[0].x, args[0].y, *args[1:], **kwargs)) else: + if not args and self.last_stitch: + args = (self.last_stitch.x, self.last_stitch.y) self.stitches.append(Stitch(*args, **kwargs)) def add_stitches(self, stitches, *args, **kwargs): diff --git a/lib/stitch_plan/stop.py b/lib/stitch_plan/stop.py deleted file mode 100644 index 81dec1da..00000000 --- a/lib/stitch_plan/stop.py +++ /dev/null @@ -1,43 +0,0 @@ -def process_stop(color_block): - """Handle the "stop after" checkbox. - - The user wants the machine to pause after this patch. This can - be useful for applique and similar on multi-needle machines that - normally would not stop between colors. - - In machine embroidery files, there's no such thing as an actual - "STOP" instruction. All that exists is a "color change" command - (which libembroidery calls STOP just to be confusing). - - On multi-needle machines, the user assigns needles to the colors in - the design before starting stitching. C01, C02, etc are normal - needles, but C00 is special. For a block of stitches assigned - to C00, the machine will continue sewing with the last color it - had and pause after it completes the C00 block. - - That means we need to add an artificial color change instruction - shortly before the current stitch so that the user can set that color - block to C00. We'll go back 3 stitches and mark the start of the C00 - block: - """ - - if len(color_block.stitches) >= 3: - # make a copy of the stitch and set it as a color change - stitch = color_block.stitches[-3].copy() - stitch.color_change = True - - # mark this stitch as a "stop" so that we can avoid - # adding tie stitches in ties.py - stitch.stop = True - - # insert it after the stitch - color_block.stitches.insert(-2, stitch) - - # and also add a color change on this stitch, completing the C00 - # block: - - stitch = color_block.stitches[-1].copy() - stitch.color_change = True - color_block.add_stitch(stitch) - - # reference for the above: https://github.com/lexelby/inkstitch/pull/29#issuecomment-359175447 diff --git a/lib/stitch_plan/ties.py b/lib/stitch_plan/ties.py index 6d07ac71..573469f5 100644 --- a/lib/stitch_plan/ties.py +++ b/lib/stitch_plan/ties.py @@ -30,15 +30,16 @@ def add_tie_in(stitches, upcoming_stitches): def add_ties(stitch_plan): """Add tie-off before and after trims, jumps, and color changes.""" + need_tie_in = True for color_block in stitch_plan: - need_tie_in = True new_stitches = [] for i, stitch in enumerate(color_block.stitches): - # Tie before and after TRIMs, JUMPs, and color changes, but ignore - # the fake color change introduced by a "STOP after" (see stop.py). - is_special = stitch.trim or stitch.jump or (stitch.color_change and not stitch.stop) + is_special = stitch.trim or stitch.jump or stitch.color_change or stitch.stop - if is_special and not need_tie_in: + # see stop.py for an explanation of the fake color change + is_fake = stitch.fake_color_change + + if is_special and not is_fake and not need_tie_in: add_tie_off(new_stitches) new_stitches.append(stitch) need_tie_in = True @@ -49,7 +50,8 @@ def add_ties(stitch_plan): else: new_stitches.append(stitch) - if not need_tie_in: - add_tie_off(new_stitches) - color_block.replace_stitches(new_stitches) + + if not need_tie_in: + # tie off at the end if we haven't already + add_tie_off(color_block.stitches) diff --git a/lib/stitch_plan/trim.py b/lib/stitch_plan/trim.py deleted file mode 100644 index f692a179..00000000 --- a/lib/stitch_plan/trim.py +++ /dev/null @@ -1,23 +0,0 @@ -def process_trim(color_block, next_stitch): - """Handle the "trim after" checkbox. - - DST (and maybe other formats?) has no actual TRIM instruction. - Instead, 3 sequential JUMPs cause the machine to trim the thread. - - To support both DST and other formats, we'll add a TRIM and two - JUMPs. The TRIM will be converted to a JUMP by libembroidery - if saving to DST, resulting in the 3-jump sequence. - """ - - delta = next_stitch - color_block.last_stitch - delta = delta * (1/4.0) - - pos = color_block.last_stitch - - for i in xrange(3): - pos += delta - color_block.add_stitch(pos.x, pos.y, jump=True) - - # first one should be TRIM instead of JUMP - color_block.stitches[-3].jump = False - color_block.stitches[-3].trim = True diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 518a2812..6326ced2 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -2,7 +2,7 @@ import sys import shapely import networkx import math -from itertools import groupby +from itertools import groupby, izip from collections import deque from .fill import intersect_region_with_grating, row_num, stitch_row @@ -14,18 +14,38 @@ from ..utils.geometry import Point as InkstitchPoint class MaxQueueLengthExceeded(Exception): pass +class PathEdge(object): + OUTLINE_KEYS = ("outline", "extra", "initial") + SEGMENT_KEY = "segment" -def auto_fill(shape, angle, row_spacing, end_row_spacing, max_stitch_length, running_stitch_length, staggers, starting_point=None): + def __init__(self, nodes, key): + self.nodes = nodes + self._sorted_nodes = tuple(sorted(self.nodes)) + self.key = key + + def __getitem__(self, item): + return self.nodes[item] + + def __hash__(self): + return hash((self._sorted_nodes, self.key)) + + def __eq__(self, other): + return self._sorted_nodes == other._sorted_nodes and self.key == other.key + + def is_outline(self): + return self.key in self.OUTLINE_KEYS + + def is_segment(self): + return self.key == self.SEGMENT_KEY + +def auto_fill(shape, angle, row_spacing, end_row_spacing, max_stitch_length, running_stitch_length, staggers, starting_point, ending_point=None): stitches = [] rows_of_segments = intersect_region_with_grating(shape, angle, row_spacing, end_row_spacing) segments = [segment for row in rows_of_segments for segment in row] graph = build_graph(shape, segments, angle, row_spacing) - path = find_stitch_path(graph, segments) - - if starting_point: - stitches.extend(connect_points(shape, starting_point, path[0][0], running_stitch_length)) + path = find_stitch_path(graph, segments, starting_point, ending_point) stitches.extend(path_to_stitches(graph, path, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers)) @@ -134,8 +154,6 @@ def build_graph(shape, segments, angle, row_spacing): else: edge_set = 1 - #print >> sys.stderr, outline_index, "es", edge_set, "rn", row_num, inkstitch.Point(*nodes[0]) * self.north(angle), inkstitch.Point(*nodes[1]) * self.north(angle) - # add an edge between each successive node for i, (node1, node2) in enumerate(zip(nodes, nodes[1:] + [nodes[0]])): graph.add_edge(node1, node2, key="outline") @@ -157,14 +175,20 @@ def node_list_to_edge_list(node_list): def bfs_for_loop(graph, starting_node, max_queue_length=2000): to_search = deque() - to_search.appendleft(([starting_node], set(), 0)) + to_search.append((None, set())) while to_search: if len(to_search) > max_queue_length: raise MaxQueueLengthExceeded() - path, visited_edges, visited_segments = to_search.pop() - ending_node = path[-1] + path, visited_edges = to_search.pop() + + if path is None: + # This is the very first time through the loop, so initialize. + path = [] + ending_node = starting_node + else: + ending_node = path[-1][-1] # get a list of neighbors paired with the key of the edge I can follow to get there neighbors = [ @@ -178,26 +202,21 @@ def bfs_for_loop(graph, starting_node, max_queue_length=2000): for next_node, key in neighbors: # skip if I've already followed this edge - edge = (tuple(sorted((ending_node, next_node))), key) + edge = PathEdge((ending_node, next_node), key) if edge in visited_edges: continue - new_path = path + [next_node] - - if key == "segment": - new_visited_segments = visited_segments + 1 - else: - new_visited_segments = visited_segments + new_path = path + [edge] if next_node == starting_node: # ignore trivial loops (down and back a doubled edge) if len(new_path) > 3: - return node_list_to_edge_list(new_path), new_visited_segments + return new_path new_visited_edges = visited_edges.copy() new_visited_edges.add(edge) - to_search.appendleft((new_path, new_visited_edges, new_visited_segments)) + to_search.appendleft((new_path, new_visited_edges)) def find_loop(graph, starting_nodes): @@ -216,14 +235,6 @@ def find_loop(graph, starting_nodes): somewhere else. """ - #loop = self.simple_loop(graph, starting_nodes[-2]) - - #if loop: - # print >> sys.stderr, "simple_loop success" - # starting_nodes.pop() - # starting_nodes.pop() - # return loop - loop = None retry = [] max_queue_length = 2000 @@ -231,7 +242,6 @@ def find_loop(graph, starting_nodes): while not loop: while not loop and starting_nodes: starting_node = starting_nodes.pop() - #print >> sys.stderr, "find loop from", starting_node try: # Note: if bfs_for_loop() returns None, no loop can be @@ -240,12 +250,7 @@ def find_loop(graph, starting_nodes): # case we discard that node and try the next. loop = bfs_for_loop(graph, starting_node, max_queue_length) - #if not loop: - #print >> dbg, "failed on", starting_node - #dbg.flush() except MaxQueueLengthExceeded: - #print >> dbg, "gave up on", starting_node - #dbg.flush() # We're giving up on this node for now. We could try # this node again later, so add it to the bottm of the # stack. @@ -272,7 +277,7 @@ def insert_loop(path, loop): start and end point. The points will be specified in order, such that they will look like this: - ((p1, p2), (p2, p3), (p3, p4) ... (pn, p1)) + ((p1, p2), (p2, p3), (p3, p4), ...) path will be modified in place. """ @@ -282,11 +287,59 @@ def insert_loop(path, loop): for i, (start, end) in enumerate(path): if start == loop_start: break + else: + # if we didn't find the start of the loop in the list at all, it must + # be the endpoint of the last segment + i += 1 path[i:i] = loop +def nearest_node_on_outline(graph, point, outline_index=0): + point = shapely.geometry.Point(*point) + outline_nodes = [node for node, data in graph.nodes(data=True) if data['index'] == outline_index] + nearest = min(outline_nodes, key=lambda node: shapely.geometry.Point(*node).distance(point)) -def find_stitch_path(graph, segments): + return nearest + +def get_outline_nodes(graph, outline_index=0): + outline_nodes = [(node, data['projection']) \ + for node, data \ + in graph.nodes(data=True) \ + if data['index'] == outline_index] + outline_nodes.sort(key=lambda (node, projection): projection) + outline_nodes = [node for node, data in outline_nodes] + + return outline_nodes + +def find_initial_path(graph, starting_point, ending_point=None): + starting_node = nearest_node_on_outline(graph, starting_point) + + if ending_point is None: + # If they didn't give an ending point, pick either neighboring node + # along the outline -- doesn't matter which. We do this because + # the algorithm requires we start with _some_ path. + neighbors = [n for n, keys in graph.adj[starting_node].iteritems() if 'outline' in keys] + return [PathEdge((starting_node, neighbors[0]), "initial")] + else: + ending_node = nearest_node_on_outline(graph, ending_point) + outline_nodes = get_outline_nodes(graph) + + # Multiply the outline_nodes list by 2 (duplicate it) because + # the ending_node may occur first. + outline_nodes *= 2 + start_index = outline_nodes.index(starting_node) + end_index = outline_nodes.index(ending_node, start_index) + nodes = outline_nodes[start_index:end_index + 1] + + # we have a series of sequential points, but we need to + # turn it into an edge list + path = [] + for start, end in izip(nodes[:-1], nodes[1:]): + path.append(PathEdge((start, end), "initial")) + + return path + +def find_stitch_path(graph, segments, starting_point=None, ending_point=None): """find a path that visits every grating segment exactly once Theoretically, we just need to find an Eulerian Path in the graph. @@ -294,13 +347,14 @@ def find_stitch_path(graph, segments): The edges on the outline of the region are only there to help us get from one grating segment to the next. - We'll build a "cycle" (a path that ends where it starts) using - Hierholzer's algorithm. We'll stop once we've visited every grating - segment. + We'll build a Eulerian Path using Hierholzer's algorithm. A true + Eulerian Path would visit every single edge (including all the extras + we inserted in build_graph()),but we'll stop short once we've visited + every grating segment since that's all we really care about. Hierholzer's algorithm says to select an arbitrary starting node at each step. In order to produce a reasonable stitch path, we'll select - the vertex carefully such that we get back-and-forth traversal like + the starting node carefully such that we get back-and-forth traversal like mowing a lawn. To do this, we'll use a simple heuristic: try to start from nodes in @@ -313,40 +367,42 @@ def find_stitch_path(graph, segments): segments_visited = 0 nodes_visited = deque() - # start with a simple loop: down one segment and then back along the - # outer border to the starting point. - path = [segments[0], list(reversed(segments[0]))] + if starting_point is None: + starting_point = segments[0][0] + + path = find_initial_path(graph, starting_point, ending_point) - graph.remove_edges_from(path) + # Our graph is Eulerian: every node has an even degree. An Eulerian graph + # must have an Eulerian Circuit which visits every edge and ends where it + # starts. + # + # However, we're starting with a path and _not_ removing the edges of that + # path from the graph. By doing this, we're implicitly adding those edges + # to the graph, after which the starting and ending point (and only those + # two) will now have odd degree. A graph that's Eulerian except for two + # nodes must have an Eulerian Path that starts and ends at those two nodes. + # That's how we force the starting and ending point. - segments_visited += 1 - nodes_visited.extend(segments[0]) + nodes_visited.append(path[0][0]) while segments_visited < num_segments: - result = find_loop(graph, nodes_visited) + loop = find_loop(graph, nodes_visited) - if not result: + if not loop: print >> sys.stderr, _("Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github.") break - loop, segments = result - - #print >> dbg, "found loop:", loop - #dbg.flush() - - segments_visited += segments - nodes_visited += [edge[0] for edge in loop] + segments_visited += sum(1 for edge in loop if edge.is_segment()) + nodes_visited.extend(edge[0] for edge in loop) graph.remove_edges_from(loop) insert_loop(path, loop) - #if segments_visited >= 12: - # break - - # Now we have a loop that covers every grating segment. It returns to - # where it started, which is unnecessary, so we'll snip the last bit off. - #while original_graph.has_edge(*path[-1], key="outline"): - # path.pop() + if ending_point is None: + # If they didn't specify an ending point, then the end of the path travels + # around the outline back to the start (see find_initial_path()). This + # isn't necessary, so remove it. + trim_end(path) return path @@ -363,10 +419,10 @@ def collapse_sequential_outline_edges(graph, path): new_path = [] for edge in path: - if graph.has_edge(*edge, key="segment"): + if edge.is_segment(): if start_of_run: # close off the last run - new_path.append((start_of_run, edge[0])) + new_path.append(PathEdge((start_of_run, edge[0]), "collapsed")) start_of_run = None new_path.append(edge) @@ -376,7 +432,7 @@ def collapse_sequential_outline_edges(graph, path): if start_of_run: # if we were still in a run, close it off - new_path.append((start_of_run, edge[1])) + new_path.append(PathEdge((start_of_run, edge[1]), "collapsed")) return new_path @@ -416,9 +472,6 @@ def connect_points(shape, start, end, running_stitch_length): direction = math.copysign(1.0, distance) one_stitch = running_stitch_length * direction - #print >> dbg, "connect_points:", outline_index, start, end, distance, stitches, direction - #dbg.flush() - stitches = [InkstitchPoint(*outline.interpolate(pos).coords[0])] for i in xrange(num_stitches): @@ -430,11 +483,11 @@ def connect_points(shape, start, end, running_stitch_length): if (end - stitches[-1]).length() > 0.1 * PIXELS_PER_MM: stitches.append(end) - #print >> dbg, "end connect_points" - #dbg.flush() - return stitches +def trim_end(path): + while path and path[-1].is_outline(): + path.pop() def path_to_stitches(graph, path, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers): path = collapse_sequential_outline_edges(graph, path) @@ -442,7 +495,7 @@ def path_to_stitches(graph, path, shape, angle, row_spacing, max_stitch_length, stitches = [] for edge in path: - if graph.has_edge(*edge, key="segment"): + if edge.is_segment(): stitch_row(stitches, edge[0], edge[1], angle, row_spacing, max_stitch_length, staggers) else: stitches.extend(connect_points(shape, edge[0], edge[1], running_stitch_length)) diff --git a/lib/svg/__init__.py b/lib/svg/__init__.py index 1895bba4..8e846555 100644 --- a/lib/svg/__init__.py +++ b/lib/svg/__init__.py @@ -1,2 +1,3 @@ from .svg import color_block_to_point_lists, render_stitch_plan from .units import * +from .path import apply_transforms, get_node_transform diff --git a/lib/svg/path.py b/lib/svg/path.py new file mode 100644 index 00000000..2d9c0ff3 --- /dev/null +++ b/lib/svg/path.py @@ -0,0 +1,25 @@ +import simpletransform +import cubicsuperpath + +from .units import get_viewbox_transform + +def apply_transforms(path, node): + transform = get_node_transform(node) + + # apply the combined transform to this node's path + simpletransform.applyTransformToPath(transform, path) + + return path + +def get_node_transform(node): + # start with the identity transform + transform = [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]] + + # combine this node's transform with all parent groups' transforms + transform = simpletransform.composeParents(node, transform) + + # add in the transform implied by the viewBox + viewbox_transform = get_viewbox_transform(node.getroottree().getroot()) + transform = simpletransform.composeTransform(viewbox_transform, transform) + + return transform diff --git a/lib/svg/realistic_rendering.py b/lib/svg/realistic_rendering.py new file mode 100644 index 00000000..e31534da --- /dev/null +++ b/lib/svg/realistic_rendering.py @@ -0,0 +1,129 @@ +import simplepath +import math + +from .units import PIXELS_PER_MM +from ..utils import cache, Point + +# The stitch vector path looks like this: +# _______ +# (_______) +# +# It's 0.32mm high, which is the approximate thickness of common machine +# embroidery threads. + +# 1.216 pixels = 0.32mm +stitch_height = 1.216 + +# This vector path starts at the upper right corner of the stitch shape and +# proceeds counter-clockwise.and contains a placeholder (%s) for the stitch +# length. +# +# It contains two invisible "whiskers" of zero width that go above and below +# to ensure that the SVG renderer allocates a large enough canvas area when +# computing the gaussian blur steps. Otherwise, we'd have to expand the +# width and height attributes of the <filter> tag to add more buffer space. +# The width and height are specified in multiples of the bounding box +# size, It's the bounding box aligned with the global SVG canvas's axes, not +# the axes of the stitch itself. That means that having a big enough value +# to add enough padding on the long sides of the stitch would waste a ton +# of space on the short sides and significantly slow down rendering. +stitch_path = "M0,0c0.4,0,0.4,0.3,0.4,0.6c0,0.3,-0.1,0.6,-0.4,0.6v0.2,-0.2h-%sc-0.4,0,-0.4,-0.3,-0.4,-0.6c0,-0.3,0.1,-0.6,0.4,-0.6v-0.2,0.2z" + +# This filter makes the above stitch path look like a real stitch with lighting. +realistic_filter = """ + <filter + style="color-interpolation-filters:sRGB" + id="realistic-stitch-filter" + x="-0.1" + width="1.2" + y="-0.1" + height="1.2"> + <feGaussianBlur + stdDeviation="1.5" + id="feGaussianBlur1542-6" + in="SourceAlpha" /> + <feComponentTransfer + id="feComponentTransfer1544-7" + result="result1"> + <feFuncR + id="feFuncR1546-5" + type="identity" /> + <feFuncG + id="feFuncG1548-3" + type="identity" /> + <feFuncB + id="feFuncB1550-5" + type="identity" + slope="4.5300000000000002" /> + <feFuncA + id="feFuncA1552-6" + type="gamma" + slope="0.14999999999999999" + intercept="0" + amplitude="3.1299999999999999" + offset="-0.33000000000000002" /> + </feComponentTransfer> + <feComposite + in2="SourceAlpha" + id="feComposite1558-2" + operator="in" /> + <feGaussianBlur + stdDeviation="0.089999999999999997" + id="feGaussianBlur1969" /> + <feMorphology + id="feMorphology1971" + operator="dilate" + radius="0.10000000000000001" /> + <feSpecularLighting + id="feSpecularLighting1973" + result="result2" + specularConstant="0.70899999" + surfaceScale="30"> + <fePointLight + id="fePointLight1975" + z="10" /> + </feSpecularLighting> + <feGaussianBlur + stdDeviation="0.040000000000000001" + id="feGaussianBlur1979" /> + <feComposite + in2="SourceGraphic" + id="feComposite1977" + operator="arithmetic" + k2="1" + k3="1" + result="result3" + k1="0" + k4="0" /> + <feComposite + in2="SourceAlpha" + id="feComposite1981" + operator="in" /> + </filter> +""" + +def realistic_stitch(start, end): + """Generate a stitch vector path given a start and end point.""" + + end = Point(*end) + start = Point(*start) + + stitch_length = (end - start).length() + stitch_center = (end + start) / 2.0 + stitch_direction = (end - start) + stitch_angle = math.atan2(stitch_direction.y, stitch_direction.x) + + stitch_length = max(0, stitch_length - 0.2 * PIXELS_PER_MM) + + # create the path by filling in the length in the template + path = simplepath.parsePath(stitch_path % stitch_length) + + # rotate the path to match the stitch + rotation_center_x = -stitch_length / 2.0 + rotation_center_y = stitch_height / 2.0 + simplepath.rotatePath(path, stitch_angle, cx=rotation_center_x, cy=rotation_center_y) + + # move the path to the location of the stitch + simplepath.translatePath(path, stitch_center.x - rotation_center_x, stitch_center.y - rotation_center_y) + + return simplepath.formatPath(path) diff --git a/lib/svg/svg.py b/lib/svg/svg.py index 852215f2..48b1343a 100644 --- a/lib/svg/svg.py +++ b/lib/svg/svg.py @@ -1,7 +1,8 @@ import simpletransform, simplestyle, inkex from .units import get_viewbox_transform -from .tags import SVG_GROUP_TAG, INKSCAPE_LABEL, INKSCAPE_GROUPMODE, SVG_PATH_TAG +from .tags import SVG_GROUP_TAG, INKSCAPE_LABEL, INKSCAPE_GROUPMODE, SVG_PATH_TAG, SVG_DEFS_TAG +from .realistic_rendering import realistic_stitch, realistic_filter from ..i18n import _ from ..utils import cache @@ -32,6 +33,31 @@ def get_correction_transform(svg): return transform +def color_block_to_realistic_stitches(color_block, svg): + paths = [] + + for point_list in color_block_to_point_lists(color_block): + if not point_list: + continue + + color = color_block.color.visible_on_white.darker.to_hex_str() + start = point_list[0] + for point in point_list[1:]: + paths.append(inkex.etree.Element( + SVG_PATH_TAG, + {'style': simplestyle.formatStyle( + { + 'fill': color, + 'stroke': 'none', + 'filter': 'url(#realistic-stitch-filter)' + }), + 'd': realistic_stitch(start, point), + 'transform': get_correction_transform(svg) + })) + start = point + + return paths + def color_block_to_paths(color_block, svg): paths = [] # We could emit just a single path with one subpath per point list, but @@ -56,8 +82,7 @@ def color_block_to_paths(color_block, svg): return paths - -def render_stitch_plan(svg, stitch_plan): +def render_stitch_plan(svg, stitch_plan, realistic=False): layer = svg.find(".//*[@id='__inkstitch_stitch_plan__']") if layer is None: layer = inkex.etree.Element(SVG_GROUP_TAG, @@ -76,6 +101,17 @@ def render_stitch_plan(svg, stitch_plan): SVG_GROUP_TAG, {'id': '__color_block_%d__' % i, INKSCAPE_LABEL: "color block %d" % (i + 1)}) - group.extend(color_block_to_paths(color_block, svg)) + if realistic: + group.extend(color_block_to_realistic_stitches(color_block, svg)) + else: + group.extend(color_block_to_paths(color_block, svg)) svg.append(layer) + + if realistic: + defs = svg.find(SVG_DEFS_TAG) + + if defs is None: + defs = inkex.etree.SubElement(svg, SVG_DEFS_TAG) + + defs.append(inkex.etree.fromstring(realistic_filter)) diff --git a/lib/svg/tags.py b/lib/svg/tags.py index fee59957..7eb87540 100644 --- a/lib/svg/tags.py +++ b/lib/svg/tags.py @@ -5,8 +5,14 @@ SVG_PATH_TAG = inkex.addNS('path', 'svg') SVG_POLYLINE_TAG = inkex.addNS('polyline', 'svg') SVG_DEFS_TAG = inkex.addNS('defs', 'svg') SVG_GROUP_TAG = inkex.addNS('g', 'svg') +SVG_SYMBOL_TAG = inkex.addNS('symbol', 'svg') +SVG_USE_TAG = inkex.addNS('use', 'svg') INKSCAPE_LABEL = inkex.addNS('label', 'inkscape') INKSCAPE_GROUPMODE = inkex.addNS('groupmode', 'inkscape') +CONNECTION_START = inkex.addNS('connection-start', 'inkscape') +CONNECTION_END = inkex.addNS('connection-end', 'inkscape') +CONNECTOR_TYPE = inkex.addNS('connector-type', 'inkscape') +XLINK_HREF = inkex.addNS('href', 'xlink') EMBROIDERABLE_TAGS = (SVG_PATH_TAG, SVG_POLYLINE_TAG) diff --git a/lib/svg/units.py b/lib/svg/units.py index 015da60e..126027bc 100644 --- a/lib/svg/units.py +++ b/lib/svg/units.py @@ -75,11 +75,24 @@ def convert_length(length): raise ValueError(_("Unknown unit: %s") % units) +@cache +def get_viewbox(svg): + return svg.get('viewBox').strip().replace(',', ' ').split() + @cache def get_doc_size(svg): - doc_width = convert_length(svg.get('width')) - doc_height = convert_length(svg.get('height')) + width = svg.get('width') + height = svg.get('height') + + if width is None or height is None: + # fall back to the dimensions from the viewBox + viewbox = get_viewbox(svg) + width = viewbox[2] + height = viewbox[3] + + doc_width = convert_length(width) + doc_height = convert_length(height) return doc_width, doc_height @@ -88,7 +101,7 @@ def get_viewbox_transform(node): # somewhat cribbed from inkscape-silhouette doc_width, doc_height = get_doc_size(node) - viewbox = node.get('viewBox').strip().replace(',', ' ').split() + viewbox = get_viewbox(node) dx = -float(viewbox[0]) dy = -float(viewbox[1]) diff --git a/lib/threads/color.py b/lib/threads/color.py index af474127..cc6c0c48 100644 --- a/lib/threads/color.py +++ b/lib/threads/color.py @@ -1,7 +1,7 @@ import simplestyle import re import colorsys - +from pyembroidery.EmbThread import EmbThread class ThreadColor(object): hex_str_re = re.compile('#([0-9a-z]{3}|[0-9a-z]{6})', re.I) @@ -9,6 +9,12 @@ class ThreadColor(object): def __init__(self, color, name=None, number=None, manufacturer=None): if color is None: self.rgb = (0, 0, 0) + elif isinstance(color, EmbThread): + self.name = color.description + self.number = color.catalog_number + self.manufacturer = color.brand + self.rgb = (color.get_red(), color.get_green(), color.get_blue()) + return elif isinstance(color, (list, tuple)): self.rgb = tuple(color) elif self.hex_str_re.match(color): @@ -39,6 +45,15 @@ class ThreadColor(object): return "#%s" % self.hex_digits @property + def pyembroidery_thread(self): + return { + "name": self.name, + "id": self.number, + "manufacturer": self.manufacturer, + "rgb": int(self.hex_digits, 16), + } + + @property def hex_digits(self): return "%02X%02X%02X" % self.rgb @@ -80,3 +95,18 @@ class ThreadColor(object): color = tuple(value * 255 for value in color) return ThreadColor(color, name=self.name, number=self.number, manufacturer=self.manufacturer) + + @property + def darker(self): + hls = list(colorsys.rgb_to_hls(*self.rgb_normalized)) + + # Capping lightness should make the color visible without changing it + # too much. + hls[1] *= 0.75 + + color = colorsys.hls_to_rgb(*hls) + + # convert back to values in the range of 0-255 + color = tuple(value * 255 for value in color) + + return ThreadColor(color, name=self.name, number=self.number, manufacturer=self.manufacturer) diff --git a/lib/utils/__init__.py b/lib/utils/__init__.py index ff06d4a9..78d037f1 100644 --- a/lib/utils/__init__.py +++ b/lib/utils/__init__.py @@ -2,3 +2,4 @@ from geometry import * from cache import cache from io import * from inkscape import * +from paths import * diff --git a/lib/utils/geometry.py b/lib/utils/geometry.py index 61b98bcb..d0cb96cf 100644 --- a/lib/utils/geometry.py +++ b/lib/utils/geometry.py @@ -65,12 +65,21 @@ class Point: else: raise ValueError("cannot multiply Point by %s" % type(other)) + def __neg__(self): + return self * -1 + def __rmul__(self, other): if isinstance(other, (int, float)): return self.__mul__(other) else: raise ValueError("cannot multiply Point by %s" % type(other)) + def __div__(self, other): + if isinstance(other, (int, float)): + return self * (1.0 / other) + else: + raise ValueErorr("cannot divide Point by %s" % type(other)) + def __repr__(self): return "Point(%s,%s)" % (self.x, self.y) diff --git a/lib/utils/io.py b/lib/utils/io.py index be1fdf24..e5a246f3 100644 --- a/lib/utils/io.py +++ b/lib/utils/io.py @@ -7,12 +7,27 @@ def save_stderr(): # GTK likes to spam stderr, which inkscape will show in a dialog. null = open(os.devnull, 'w') sys.stderr_dup = os.dup(sys.stderr.fileno()) + sys.real_stderr = os.fdopen(sys.stderr_dup, 'w') os.dup2(null.fileno(), 2) - sys.stderr_backup = sys.stderr sys.stderr = StringIO() def restore_stderr(): os.dup2(sys.stderr_dup, 2) - sys.stderr_backup.write(sys.stderr.getvalue()) - sys.stderr = sys.stderr_backup + sys.real_stderr.write(sys.stderr.getvalue()) + sys.stderr = sys.real_stderr + +# It's probably possible to generalize this code, but when I tried, +# the result was incredibly unreadable. +def save_stdout(): + null = open(os.devnull, 'w') + sys.stdout_dup = os.dup(sys.stdout.fileno()) + sys.real_stdout = os.fdopen(sys.stdout_dup, 'w') + os.dup2(null.fileno(), 1) + sys.stdout = StringIO() + + +def restore_stdout(): + os.dup2(sys.stdout_dup, 1) + sys.real_stdout.write(sys.stdout.getvalue()) + sys.stdout = sys.real_stdout diff --git a/lib/utils/paths.py b/lib/utils/paths.py new file mode 100644 index 00000000..863e8e69 --- /dev/null +++ b/lib/utils/paths.py @@ -0,0 +1,10 @@ +import sys +import os +from os.path import dirname, realpath + + +def get_bundled_dir(name): + if getattr(sys, 'frozen', None) is not None: + return realpath(os.path.join(sys._MEIPASS, "..", name)) + else: + return realpath(os.path.join(dirname(realpath(__file__)), '..', '..', name)) diff --git a/messages.po b/messages.po index 7b2ca815..19400443 100644 --- a/messages.po +++ b/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-05-01 21:21-0400\n" +"POT-Creation-Date: 2018-07-25 21:18-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,153 +17,199 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.3\n" +#: lib/elements/auto_fill.py:11 msgid "Auto-Fill" msgstr "" +#: lib/elements/auto_fill.py:14 msgid "Automatically routed fill stitching" msgstr "" +#: lib/elements/auto_fill.py:33 msgid "Running stitch length (traversal between sections)" msgstr "" +#: lib/elements/auto_fill.py:38 msgid "Underlay" msgstr "" +#: lib/elements/auto_fill.py:38 lib/elements/auto_fill.py:43 +#: lib/elements/auto_fill.py:54 lib/elements/auto_fill.py:60 +#: lib/elements/auto_fill.py:70 msgid "AutoFill Underlay" msgstr "" +#: lib/elements/auto_fill.py:43 msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" +#: lib/elements/auto_fill.py:54 msgid "Row spacing (default: 3x fill row spacing)" msgstr "" +#: lib/elements/auto_fill.py:60 msgid "Max stitch length" msgstr "" +#: lib/elements/auto_fill.py:67 msgid "Inset" msgstr "" -msgid "TRIM after" +#: lib/elements/auto_fill.py:78 +msgid "Expand" msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" -msgstr "" - -msgid "STOP after" -msgstr "" - -msgid "" -"Add STOP instruction after this object (for supported machines and file " -"formats)" +#: lib/elements/element.py:232 +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" +#: lib/elements/fill.py:12 msgid "Fill" msgstr "" +#: lib/elements/fill.py:18 msgid "Manually routed fill stitching" msgstr "" +#: lib/elements/fill.py:23 msgid "Angle of lines of stitches" msgstr "" +#: lib/elements/fill.py:34 msgid "Flip fill (start right-to-left)" msgstr "" +#: lib/elements/fill.py:39 msgid "Spacing between rows" msgstr "" +#: lib/elements/fill.py:48 msgid "Maximum fill stitch length" msgstr "" +#: lib/elements/fill.py:53 msgid "Stagger rows this many times before repeating" msgstr "" +#: lib/elements/satin_column.py:10 msgid "Satin Column" msgstr "" +#: lib/elements/satin_column.py:16 msgid "Custom satin column" msgstr "" +#: lib/elements/satin_column.py:25 lib/elements/stroke.py:35 msgid "Zig-zag spacing (peak-to-peak)" msgstr "" +#: lib/elements/satin_column.py:31 msgid "Pull compensation" msgstr "" +#: lib/elements/satin_column.py:39 msgid "Contour underlay" msgstr "" +#: lib/elements/satin_column.py:39 lib/elements/satin_column.py:46 +#: lib/elements/satin_column.py:51 msgid "Contour Underlay" msgstr "" +#: lib/elements/satin_column.py:46 lib/elements/satin_column.py:64 msgid "Stitch length" msgstr "" +#: lib/elements/satin_column.py:51 msgid "Contour underlay inset amount" msgstr "" +#: lib/elements/satin_column.py:57 msgid "Center-walk underlay" msgstr "" +#: lib/elements/satin_column.py:57 lib/elements/satin_column.py:64 msgid "Center-Walk Underlay" msgstr "" +#: lib/elements/satin_column.py:69 msgid "Zig-zag underlay" msgstr "" +#: lib/elements/satin_column.py:69 lib/elements/satin_column.py:74 +#: lib/elements/satin_column.py:79 msgid "Zig-zag Underlay" msgstr "" +#: lib/elements/satin_column.py:74 msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" +#: lib/elements/satin_column.py:79 msgid "Inset amount (default: half of contour underlay inset)" msgstr "" +#: lib/elements/satin_column.py:112 +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" +msgstr "" + +#: lib/elements/satin_column.py:138 msgid "" "One or more rails crosses itself, and this is not allowed. Please split " "into multiple satin columns." msgstr "" +#: lib/elements/satin_column.py:145 msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" +#: lib/elements/satin_column.py:145 lib/elements/satin_column.py:147 msgid "Each rail should intersect both rungs once." msgstr "" +#: lib/elements/satin_column.py:147 msgid "" "satin column: One or more of the rungs intersects the rails more than " "once." msgstr "" +#: lib/elements/satin_column.py:188 #, python-format msgid "satin column: object %s has a fill (but should not)" msgstr "" +#: lib/elements/satin_column.py:192 #, python-format msgid "" "satin column: object %(id)s has two paths with an unequal number of " "points (%(length1)d and %(length2)d)" msgstr "" +#: lib/elements/stroke.py:17 msgid "Satin stitch along paths" msgstr "" +#: lib/elements/stroke.py:30 msgid "Running stitch length" msgstr "" +#: lib/elements/stroke.py:41 msgid "Repeats" msgstr "" +#: lib/elements/stroke.py:61 msgid "Manual stitch placement" msgstr "" +#: lib/elements/stroke.py:61 msgid "" "Stitch every node in the path. Stitch length and zig-zag spacing are " "ignored." msgstr "" +#: lib/elements/stroke.py:92 msgid "" "Legacy running stitch setting detected!\n" "\n" @@ -172,131 +218,189 @@ msgid "" "be dashed to indicate running stitch. Any kind of dash will work." msgstr "" +#: lib/extensions/base.py:108 msgid "No embroiderable paths selected." msgstr "" +#: lib/extensions/base.py:110 msgid "No embroiderable paths found in document." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#: lib/extensions/base.py:111 +msgid "Tip: use Path -> Object to Path to convert non-paths." +msgstr "" + +#: lib/extensions/commands.py:140 +msgid "Please select one or more objects to which to attach commands." +msgstr "" + +#: lib/extensions/commands.py:148 +msgid "Please choose one or more commands to attach." msgstr "" +#: lib/extensions/embroider.py:41 msgid "" "\n" "\n" "Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Directory in which to install palettes:" +#: lib/extensions/flip.py:35 +msgid "Please select one or more satin columns to flip." +msgstr "" + +#: lib/extensions/install.py:30 +msgid "" +"Ink/Stitch can install files (\"add-ons\") that make it easier to use " +"Inkscape to create machine embroidery designs. These add-ons will be " +"installed:" +msgstr "" + +#: lib/extensions/install.py:31 +msgid "thread manufacturer color palettes" msgstr "" -msgid "Choose another directory..." +#: lib/extensions/install.py:32 +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" +#: lib/extensions/install.py:41 msgid "Install" msgstr "" +#: lib/extensions/install.py:44 lib/extensions/params.py:380 msgid "Cancel" msgstr "" -msgid "Choose Inkscape palettes directory" +#: lib/extensions/install.py:58 +msgid "Choose Inkscape directory" msgstr "" -msgid "Thread palette installation failed" +#: lib/extensions/install.py:68 +msgid "Inkscape add-on installation failed" msgstr "" +#: lib/extensions/install.py:69 msgid "Installation Failed" msgstr "" +#: lib/extensions/install.py:73 msgid "" -"Thread palette files have been installed. Please restart Inkscape to " -"load the new palettes." +"Inkscape add-on files have been installed. Please restart Inkscape to " +"load the new add-ons." msgstr "" +#: lib/extensions/install.py:74 msgid "Installation Completed" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#: lib/extensions/install.py:103 +msgid "Ink/Stitch Add-ons Installer" msgstr "" +#: lib/extensions/params.py:244 msgid "These settings will be applied to 1 object." msgstr "" +#: lib/extensions/params.py:246 #, python-format msgid "These settings will be applied to %d objects." msgstr "" +#: lib/extensions/params.py:249 msgid "" "Some settings had different values across objects. Select a value from " "the dropdown or enter a new one." msgstr "" +#: lib/extensions/params.py:253 #, python-format msgid "Disabling this tab will disable the following %d tabs." msgstr "" +#: lib/extensions/params.py:255 msgid "Disabling this tab will disable the following tab." msgstr "" +#: lib/extensions/params.py:258 #, python-format msgid "Enabling this tab will disable %s and vice-versa." msgstr "" +#: lib/extensions/params.py:288 msgid "Inkscape objects" msgstr "" +#: lib/extensions/params.py:346 msgid "Embroidery Params" msgstr "" +#: lib/extensions/params.py:363 msgid "Presets" msgstr "" +#: lib/extensions/params.py:368 msgid "Load" msgstr "" +#: lib/extensions/params.py:371 msgid "Add" msgstr "" +#: lib/extensions/params.py:374 msgid "Overwrite" msgstr "" +#: lib/extensions/params.py:377 msgid "Delete" msgstr "" +#: lib/extensions/params.py:384 msgid "Use Last Settings" msgstr "" +#: lib/extensions/params.py:387 msgid "Apply and Quit" msgstr "" +#: lib/extensions/params.py:436 msgid "Preview" msgstr "" +#: lib/extensions/params.py:454 msgid "Internal Error" msgstr "" +#: lib/extensions/params.py:507 msgid "Please enter or select a preset name first." msgstr "" +#: lib/extensions/params.py:507 lib/extensions/params.py:513 +#: lib/extensions/params.py:541 msgid "Preset" msgstr "" +#: lib/extensions/params.py:513 #, python-format msgid "Preset \"%s\" not found." msgstr "" +#: lib/extensions/params.py:541 #, python-format msgid "" "Preset \"%s\" already exists. Please use another name or press " "\"Overwrite\"" msgstr "" +#: lib/extensions/print_pdf.py:134 msgid "Closing..." msgstr "" +#: lib/extensions/print_pdf.py:134 msgid "It is safe to close this window now." msgstr "" +#: lib/extensions/print_pdf.py:265 msgid "" "A print preview has been opened in your web browser. This window will " "stay open in order to communicate with the JavaScript code running in " @@ -306,181 +410,302 @@ msgid "" " or you can close it manually if necessary." msgstr "" +#: lib/extensions/print_pdf.py:411 msgid "Ink/Stitch Print" msgstr "" +#: lib/extensions/simulate.py:24 msgid "Embroidery Simulation" msgstr "" +#: lib/extensions/zip.py:52 +msgid "No embroidery file formats selected." +msgstr "" + +#: lib/stitches/auto_fill.py:167 msgid "" "Unable to autofill. This most often happens because your shape is made " "up of multiple sections that aren't connected." msgstr "" +#: lib/stitches/auto_fill.py:392 msgid "" "Unexpected error while generating fill stitches. Please send your SVG " "file to lexelby@github." msgstr "" +#: lib/svg/svg.py:90 msgid "Stitch Plan" msgstr "" +#: lib/svg/units.py:44 #, python-format msgid "parseLengthWithUnits: unknown unit %s" msgstr "" +#: lib/svg/units.py:76 #, python-format msgid "Unknown unit: %s" msgstr "" +#: print/templates/color_swatch.html:8 print/templates/color_swatch.html:40 +#: print/templates/operator_detailedview.html:9 msgid "Color" msgstr "" +#: print/templates/color_swatch.html:11 print/templates/color_swatch.html:41 msgid "rgb" msgstr "" +#: print/templates/color_swatch.html:15 print/templates/color_swatch.html:42 msgid "thread" msgstr "" +#: print/templates/color_swatch.html:19 print/templates/color_swatch.html:43 +#: print/templates/operator_detailedview.html:62 msgid "# stitches" msgstr "" -msgid "# stops" +#: print/templates/color_swatch.html:23 print/templates/color_swatch.html:44 +msgid "# trims" msgstr "" -msgid "# trims" +#: print/templates/color_swatch.html:24 print/templates/color_swatch.html:45 +#: print/templates/operator_detailedview.html:66 +msgid "stop after?" +msgstr "" + +#: print/templates/color_swatch.html:24 print/templates/color_swatch.html:45 +#: print/templates/operator_detailedview.html:66 +msgid "yes" msgstr "" +#: print/templates/color_swatch.html:24 print/templates/color_swatch.html:45 +#: print/templates/operator_detailedview.html:66 +msgid "no" +msgstr "" + +#: print/templates/footer.html:2 msgid "Page" msgstr "" +#: print/templates/headline.html:5 msgid "Click to choose another logo" msgstr "" +#: print/templates/headline.html:10 msgid "Enter job title..." msgstr "" +#: print/templates/headline.html:11 msgid "CLIENT" msgstr "" +#: print/templates/headline.html:11 msgid "Enter client name..." msgstr "" +#: print/templates/headline.html:12 msgid "PURCHASE ORDER #:" msgstr "" +#: print/templates/headline.html:12 msgid "Enter purchase order number..." msgstr "" +#: print/templates/headline.html:15 #, python-format msgid "%Y.%m.%d" msgstr "" +#: print/templates/operator_detailedview.html:10 msgid "Thread Consumption" msgstr "" +#: print/templates/operator_detailedview.html:11 msgid "Stops and Trims" msgstr "" +#: print/templates/operator_detailedview.html:12 msgid "Notes" msgstr "" +#: print/templates/operator_detailedview.html:24 +#: print/templates/operator_overview.html:6 +#: print/templates/print_overview.html:6 msgid "Unique Colors" msgstr "" +#: print/templates/operator_detailedview.html:25 +#: print/templates/operator_overview.html:7 +#: print/templates/print_overview.html:7 msgid "Color Blocks" msgstr "" +#: print/templates/operator_detailedview.html:28 +#: print/templates/operator_overview.html:14 +#: print/templates/print_overview.html:14 msgid "Design box size" msgstr "" +#: print/templates/operator_detailedview.html:29 +#: print/templates/operator_overview.html:16 +#: print/templates/print_overview.html:16 msgid "Total thread used" msgstr "" +#: print/templates/operator_detailedview.html:30 +#: print/templates/operator_overview.html:15 +#: print/templates/print_overview.html:15 msgid "Total stitch count" msgstr "" -msgid "Total nr stops" +#: print/templates/operator_detailedview.html:33 +#: print/templates/operator_overview.html:8 +#: print/templates/print_overview.html:8 +msgid "Total stops" msgstr "" -msgid "Total nr trims" +#: print/templates/operator_detailedview.html:34 +#: print/templates/operator_overview.html:9 +#: print/templates/print_overview.html:9 +msgid "Total trims" msgstr "" +#: print/templates/operator_detailedview.html:61 msgid "thread used" msgstr "" +#: print/templates/operator_detailedview.html:65 +msgid "trims" +msgstr "" + +#: print/templates/operator_detailedview.html:69 msgid "Enter operator notes..." msgstr "" +#: print/templates/operator_overview.html:21 +#: print/templates/print_overview.html:21 msgid "Job estimated time" msgstr "" +#: print/templates/operator_overview.html:28 +#: print/templates/print_detail.html:18 print/templates/print_overview.html:28 msgid "Ctrl + Scroll to Zoom" msgstr "" -msgid "Scale" -msgstr "" - -msgid "Fit" -msgstr "" - -msgid "Apply to all" -msgstr "" - +#: print/templates/print_detail.html:6 msgid "COLOR" msgstr "" +#: print/templates/print_detail.html:11 msgid "Estimated time" msgstr "" +#: print/templates/print_overview.html:39 msgid "Client Signature" msgstr "" +#: print/templates/ui.html:2 msgid "Ink/Stitch Print Preview" msgstr "" +#: print/templates/ui.html:4 msgid "Print" msgstr "" +#: print/templates/ui.html:5 print/templates/ui.html:15 msgid "Settings" msgstr "" +#: print/templates/ui.html:6 msgid "Close" msgstr "" +#: print/templates/ui.html:9 msgid "âš lost connection to Ink/Stitch" msgstr "" +#: print/templates/ui.html:18 print/templates/ui.html:23 msgid "Page Setup" msgstr "" +#: print/templates/ui.html:19 print/templates/ui.html:47 +msgid "Design" +msgstr "" + +#: print/templates/ui.html:26 msgid "Printing Size" msgstr "" +#: print/templates/ui.html:35 msgid "Print Layouts" msgstr "" +#: print/templates/ui.html:36 +msgid "Client Overview" +msgstr "" + +#: print/templates/ui.html:37 +msgid "Client Detailed View" +msgstr "" + +#: print/templates/ui.html:38 +msgid "Operator Overview" +msgstr "" + +#: print/templates/ui.html:39 +msgid "Operator Detailed View" +msgstr "" + +#: print/templates/ui.html:40 +msgid "Thumbnail size" +msgstr "" + +#: print/templates/ui.html:43 msgid "Includes these Page Setup settings and also the icon." msgstr "" +#: print/templates/ui.html:43 msgid "Save as defaults" msgstr "" -msgid "Design" +#: print/templates/ui.html:48 +msgid "Thread Palette" msgstr "" -msgid "Thread Palette" +#: print/templates/ui.html:51 +msgid "None" msgstr "" +#: print/templates/ui.html:65 msgid "" "Changing the thread palette will cause thread names and catalog numbers " "to be recalculated based on the new palette. Any changes you have made " "to color or thread names will be lost. Are you sure?" msgstr "" +#: print/templates/ui.html:68 msgid "Yes" msgstr "" +#: print/templates/ui.html:69 msgid "No" msgstr "" +#: print/templates/ui_svg_action_buttons.html:1 +msgid "Scale" +msgstr "" + +#: print/templates/ui_svg_action_buttons.html:3 +msgid "Fit" +msgstr "" + +#: print/templates/ui_svg_action_buttons.html:5 +msgid "Apply to all" +msgstr "" + +#: print/templates/ui_svg_action_buttons.html:8 +msgid "Realistic" +msgstr "" + diff --git a/palettes/ARC Polyester.gpl b/palettes/InkStitch ARC Polyester.gpl index a9d2b2cd..a9d2b2cd 100644 --- a/palettes/ARC Polyester.gpl +++ b/palettes/InkStitch ARC Polyester.gpl diff --git a/palettes/ARC Rayon.gpl b/palettes/InkStitch ARC Rayon.gpl index 909aebb2..909aebb2 100644 --- a/palettes/ARC Rayon.gpl +++ b/palettes/InkStitch ARC Rayon.gpl diff --git a/palettes/Admelody Polyester.gpl b/palettes/InkStitch Admelody Polyester.gpl index 1bad74a3..1bad74a3 100644 --- a/palettes/Admelody Polyester.gpl +++ b/palettes/InkStitch Admelody Polyester.gpl diff --git a/palettes/Admelody Rayon.gpl b/palettes/InkStitch Admelody Rayon.gpl index d80ec7fb..d80ec7fb 100644 --- a/palettes/Admelody Rayon.gpl +++ b/palettes/InkStitch Admelody Rayon.gpl diff --git a/palettes/Anchor.gpl b/palettes/InkStitch Anchor.gpl index 96a88b2f..96a88b2f 100644 --- a/palettes/Anchor.gpl +++ b/palettes/InkStitch Anchor.gpl diff --git a/palettes/Aurifil Lana.gpl b/palettes/InkStitch Aurifil Lana.gpl index 81180771..81180771 100644 --- a/palettes/Aurifil Lana.gpl +++ b/palettes/InkStitch Aurifil Lana.gpl diff --git a/palettes/Aurifil Mako.gpl b/palettes/InkStitch Aurifil Mako.gpl index b8ed79af..b8ed79af 100644 --- a/palettes/Aurifil Mako.gpl +++ b/palettes/InkStitch Aurifil Mako.gpl diff --git a/palettes/Aurifil Polyester.gpl b/palettes/InkStitch Aurifil Polyester.gpl index 6a8ead87..6a8ead87 100644 --- a/palettes/Aurifil Polyester.gpl +++ b/palettes/InkStitch Aurifil Polyester.gpl diff --git a/palettes/Aurifil Rayon.gpl b/palettes/InkStitch Aurifil Rayon.gpl index bf608c9a..bf608c9a 100644 --- a/palettes/Aurifil Rayon.gpl +++ b/palettes/InkStitch Aurifil Rayon.gpl diff --git a/palettes/Aurifil Royal.gpl b/palettes/InkStitch Aurifil Royal.gpl index d997298f..d997298f 100644 --- a/palettes/Aurifil Royal.gpl +++ b/palettes/InkStitch Aurifil Royal.gpl diff --git a/palettes/BFC Polyester.gpl b/palettes/InkStitch BFC Polyester.gpl index 766f104f..766f104f 100644 --- a/palettes/BFC Polyester.gpl +++ b/palettes/InkStitch BFC Polyester.gpl diff --git a/palettes/Brildor AC.gpl b/palettes/InkStitch Brildor AC.gpl index 114638e6..114638e6 100644 --- a/palettes/Brildor AC.gpl +++ b/palettes/InkStitch Brildor AC.gpl diff --git a/palettes/Brildor CO.gpl b/palettes/InkStitch Brildor CO.gpl index 4f7e8dc3..4f7e8dc3 100644 --- a/palettes/Brildor CO.gpl +++ b/palettes/InkStitch Brildor CO.gpl diff --git a/palettes/Brildor MF.gpl b/palettes/InkStitch Brildor MF.gpl index 588e3687..588e3687 100644 --- a/palettes/Brildor MF.gpl +++ b/palettes/InkStitch Brildor MF.gpl diff --git a/palettes/Brildor NY.gpl b/palettes/InkStitch Brildor NY.gpl index 68faab6b..68faab6b 100644 --- a/palettes/Brildor NY.gpl +++ b/palettes/InkStitch Brildor NY.gpl diff --git a/palettes/Brildor PB.gpl b/palettes/InkStitch Brildor PB.gpl index 60ccae7f..60ccae7f 100644 --- a/palettes/Brildor PB.gpl +++ b/palettes/InkStitch Brildor PB.gpl diff --git a/palettes/Brother Country.gpl b/palettes/InkStitch Brother Country.gpl index c15e8989..c15e8989 100644 --- a/palettes/Brother Country.gpl +++ b/palettes/InkStitch Brother Country.gpl diff --git a/palettes/Brother Embroidery.gpl b/palettes/InkStitch Brother Embroidery.gpl index 915989ed..915989ed 100644 --- a/palettes/Brother Embroidery.gpl +++ b/palettes/InkStitch Brother Embroidery.gpl diff --git a/palettes/Coats Alcazar Jazz.gpl b/palettes/InkStitch Coats Alcazar Jazz.gpl index f9cd6c9d..f9cd6c9d 100644 --- a/palettes/Coats Alcazar Jazz.gpl +++ b/palettes/InkStitch Coats Alcazar Jazz.gpl diff --git a/palettes/Coats Alcazar.gpl b/palettes/InkStitch Coats Alcazar.gpl index e1891b03..e1891b03 100644 --- a/palettes/Coats Alcazar.gpl +++ b/palettes/InkStitch Coats Alcazar.gpl diff --git a/palettes/Coats Sylko USA.gpl b/palettes/InkStitch Coats Sylko USA.gpl index af220f69..af220f69 100644 --- a/palettes/Coats Sylko USA.gpl +++ b/palettes/InkStitch Coats Sylko USA.gpl diff --git a/palettes/Coats Sylko.gpl b/palettes/InkStitch Coats Sylko.gpl index 50960152..50960152 100644 --- a/palettes/Coats Sylko.gpl +++ b/palettes/InkStitch Coats Sylko.gpl diff --git a/palettes/DMC.gpl b/palettes/InkStitch DMC.gpl index 38d68bc8..38d68bc8 100644 --- a/palettes/DMC.gpl +++ b/palettes/InkStitch DMC.gpl diff --git a/palettes/Embroidex.gpl b/palettes/InkStitch Embroidex.gpl index 06d75f75..06d75f75 100644 --- a/palettes/Embroidex.gpl +++ b/palettes/InkStitch Embroidex.gpl diff --git a/palettes/Emmel.gpl b/palettes/InkStitch Emmel.gpl index 908ab78f..908ab78f 100644 --- a/palettes/Emmel.gpl +++ b/palettes/InkStitch Emmel.gpl diff --git a/palettes/Fil-Tec Glide.gpl b/palettes/InkStitch Fil-Tec Glide.gpl index 7e7d30c0..7e7d30c0 100644 --- a/palettes/Fil-Tec Glide.gpl +++ b/palettes/InkStitch Fil-Tec Glide.gpl diff --git a/palettes/Floriani Polyester.gpl b/palettes/InkStitch Floriani Polyester.gpl index 36f76390..36f76390 100644 --- a/palettes/Floriani Polyester.gpl +++ b/palettes/InkStitch Floriani Polyester.gpl diff --git a/palettes/FuFu Polyester.gpl b/palettes/InkStitch FuFu Polyester.gpl index fe7cb8f6..fe7cb8f6 100644 --- a/palettes/FuFu Polyester.gpl +++ b/palettes/InkStitch FuFu Polyester.gpl diff --git a/palettes/FuFu Rayon.gpl b/palettes/InkStitch FuFu Rayon.gpl index 2f649173..2f649173 100644 --- a/palettes/FuFu Rayon.gpl +++ b/palettes/InkStitch FuFu Rayon.gpl diff --git a/palettes/Gunold.gpl b/palettes/InkStitch Gunold.gpl index efa91272..efa91272 100644 --- a/palettes/Gunold.gpl +++ b/palettes/InkStitch Gunold.gpl diff --git a/palettes/Gutermann Creativ Dekor.gpl b/palettes/InkStitch Gutermann Creativ Dekor.gpl index aec5e3f1..aec5e3f1 100644 --- a/palettes/Gutermann Creativ Dekor.gpl +++ b/palettes/InkStitch Gutermann Creativ Dekor.gpl diff --git a/palettes/Hemingworth.gpl b/palettes/InkStitch Hemingworth.gpl index 23438122..23438122 100644 --- a/palettes/Hemingworth.gpl +++ b/palettes/InkStitch Hemingworth.gpl diff --git a/palettes/Isacord Polyester.gpl b/palettes/InkStitch Isacord Polyester.gpl index a0e14c95..a0e14c95 100644 --- a/palettes/Isacord Polyester.gpl +++ b/palettes/InkStitch Isacord Polyester.gpl diff --git a/palettes/Isafil Rayon.gpl b/palettes/InkStitch Isafil Rayon.gpl index 5e82a6d8..5e82a6d8 100644 --- a/palettes/Isafil Rayon.gpl +++ b/palettes/InkStitch Isafil Rayon.gpl diff --git a/palettes/Isalon Polyester.gpl b/palettes/InkStitch Isalon Polyester.gpl index 5374bba2..5374bba2 100644 --- a/palettes/Isalon Polyester.gpl +++ b/palettes/InkStitch Isalon Polyester.gpl diff --git a/palettes/Janome.gpl b/palettes/InkStitch Janome.gpl index 44113b29..44113b29 100644 --- a/palettes/Janome.gpl +++ b/palettes/InkStitch Janome.gpl diff --git a/palettes/King Star.gpl b/palettes/InkStitch King Star.gpl index bf2020c1..bf2020c1 100644 --- a/palettes/King Star.gpl +++ b/palettes/InkStitch King Star.gpl diff --git a/palettes/MTB - Embroidex.gpl b/palettes/InkStitch MTB - Embroidex.gpl index 378f92fd..378f92fd 100644 --- a/palettes/MTB - Embroidex.gpl +++ b/palettes/InkStitch MTB - Embroidex.gpl diff --git a/palettes/Madeira Burmilana.gpl b/palettes/InkStitch Madeira Burmilana.gpl index 996c9963..996c9963 100644 --- a/palettes/Madeira Burmilana.gpl +++ b/palettes/InkStitch Madeira Burmilana.gpl diff --git a/palettes/Madeira Matt.gpl b/palettes/InkStitch Madeira Matt.gpl index 47973362..47973362 100644 --- a/palettes/Madeira Matt.gpl +++ b/palettes/InkStitch Madeira Matt.gpl diff --git a/palettes/Madeira Polyneon.gpl b/palettes/InkStitch Madeira Polyneon.gpl index 065330eb..065330eb 100644 --- a/palettes/Madeira Polyneon.gpl +++ b/palettes/InkStitch Madeira Polyneon.gpl diff --git a/palettes/Madeira Rayon.gpl b/palettes/InkStitch Madeira Rayon.gpl index 8f85b628..8f85b628 100644 --- a/palettes/Madeira Rayon.gpl +++ b/palettes/InkStitch Madeira Rayon.gpl diff --git a/palettes/Marathon Polyester.gpl b/palettes/InkStitch Marathon Polyester.gpl index 4bae92d1..4bae92d1 100644 --- a/palettes/Marathon Polyester.gpl +++ b/palettes/InkStitch Marathon Polyester.gpl diff --git a/palettes/Marathon Rayon V3.gpl b/palettes/InkStitch Marathon Rayon V3.gpl index 31eb396d..31eb396d 100644 --- a/palettes/Marathon Rayon V3.gpl +++ b/palettes/InkStitch Marathon Rayon V3.gpl diff --git a/palettes/Marathon Rayon.gpl b/palettes/InkStitch Marathon Rayon.gpl index c70f8646..c70f8646 100644 --- a/palettes/Marathon Rayon.gpl +++ b/palettes/InkStitch Marathon Rayon.gpl diff --git a/palettes/Metro.gpl b/palettes/InkStitch Metro.gpl index 9ba6dd2d..9ba6dd2d 100644 --- a/palettes/Metro.gpl +++ b/palettes/InkStitch Metro.gpl diff --git a/palettes/Mettler Embroidery.gpl b/palettes/InkStitch Mettler Embroidery.gpl index 5a7993b9..5a7993b9 100644 --- a/palettes/Mettler Embroidery.gpl +++ b/palettes/InkStitch Mettler Embroidery.gpl diff --git a/palettes/Mettler Poly Sheen.gpl b/palettes/InkStitch Mettler Poly Sheen.gpl index d1d91fa8..d1d91fa8 100644 --- a/palettes/Mettler Poly Sheen.gpl +++ b/palettes/InkStitch Mettler Poly Sheen.gpl diff --git a/palettes/Outback Embroidery Rayon.gpl b/palettes/InkStitch Outback Embroidery Rayon.gpl index 3344ecc5..3344ecc5 100644 --- a/palettes/Outback Embroidery Rayon.gpl +++ b/palettes/InkStitch Outback Embroidery Rayon.gpl diff --git a/palettes/Poly X40.gpl b/palettes/InkStitch Poly X40.gpl index c8336589..c8336589 100644 --- a/palettes/Poly X40.gpl +++ b/palettes/InkStitch Poly X40.gpl diff --git a/palettes/Princess.gpl b/palettes/InkStitch Princess.gpl index 237fcb9e..237fcb9e 100644 --- a/palettes/Princess.gpl +++ b/palettes/InkStitch Princess.gpl diff --git a/palettes/RAL.gpl b/palettes/InkStitch RAL.gpl index 22028e0a..22028e0a 100644 --- a/palettes/RAL.gpl +++ b/palettes/InkStitch RAL.gpl diff --git a/palettes/Radiant Rayon.gpl b/palettes/InkStitch Radiant Rayon.gpl index 428a9d17..428a9d17 100644 --- a/palettes/Radiant Rayon.gpl +++ b/palettes/InkStitch Radiant Rayon.gpl diff --git a/palettes/Robison-Anton Polyester.gpl b/palettes/InkStitch Robison-Anton Polyester.gpl index 4899053e..4899053e 100644 --- a/palettes/Robison-Anton Polyester.gpl +++ b/palettes/InkStitch Robison-Anton Polyester.gpl diff --git a/palettes/Robison-Anton Rayon.gpl b/palettes/InkStitch Robison-Anton Rayon.gpl index d2db91ec..d2db91ec 100644 --- a/palettes/Robison-Anton Rayon.gpl +++ b/palettes/InkStitch Robison-Anton Rayon.gpl diff --git a/palettes/Royal Polyester.gpl b/palettes/InkStitch Royal Polyester.gpl index efc142d6..efc142d6 100644 --- a/palettes/Royal Polyester.gpl +++ b/palettes/InkStitch Royal Polyester.gpl diff --git a/palettes/Royal Viscose Rayon.gpl b/palettes/InkStitch Royal Viscose Rayon.gpl index 375e588a..375e588a 100644 --- a/palettes/Royal Viscose Rayon.gpl +++ b/palettes/InkStitch Royal Viscose Rayon.gpl diff --git a/palettes/Sigma.gpl b/palettes/InkStitch Sigma.gpl index 0c95201c..0c95201c 100644 --- a/palettes/Sigma.gpl +++ b/palettes/InkStitch Sigma.gpl diff --git a/palettes/Simthread Polyester.gpl b/palettes/InkStitch Simthread Polyester.gpl index aae11d37..aae11d37 100644 --- a/palettes/Simthread Polyester.gpl +++ b/palettes/InkStitch Simthread Polyester.gpl diff --git a/palettes/Simthread Rayon.gpl b/palettes/InkStitch Simthread Rayon.gpl index ec166d59..ec166d59 100644 --- a/palettes/Simthread Rayon.gpl +++ b/palettes/InkStitch Simthread Rayon.gpl diff --git a/palettes/Sulky Polyester.gpl b/palettes/InkStitch Sulky Polyester.gpl index 10ebb5f2..10ebb5f2 100644 --- a/palettes/Sulky Polyester.gpl +++ b/palettes/InkStitch Sulky Polyester.gpl diff --git a/palettes/Sulky Rayon.gpl b/palettes/InkStitch Sulky Rayon.gpl index a30e11db..a30e11db 100644 --- a/palettes/Sulky Rayon.gpl +++ b/palettes/InkStitch Sulky Rayon.gpl diff --git a/palettes/Swist Rayon.gpl b/palettes/InkStitch Swist Rayon.gpl index 2e6a90e7..2e6a90e7 100644 --- a/palettes/Swist Rayon.gpl +++ b/palettes/InkStitch Swist Rayon.gpl diff --git a/palettes/Tristar Polyester.gpl b/palettes/InkStitch Tristar Polyester.gpl index f3a9f642..f3a9f642 100644 --- a/palettes/Tristar Polyester.gpl +++ b/palettes/InkStitch Tristar Polyester.gpl diff --git a/palettes/Tristar Rayon.gpl b/palettes/InkStitch Tristar Rayon.gpl index 1b0954be..1b0954be 100644 --- a/palettes/Tristar Rayon.gpl +++ b/palettes/InkStitch Tristar Rayon.gpl diff --git a/palettes/Viking Palette.gpl b/palettes/InkStitch Viking Palette.gpl index f25af56f..f25af56f 100644 --- a/palettes/Viking Palette.gpl +++ b/palettes/InkStitch Viking Palette.gpl diff --git a/palettes/Vyapar Rayon.gpl b/palettes/InkStitch Vyapar Rayon.gpl index 4a846cab..4a846cab 100644 --- a/palettes/Vyapar Rayon.gpl +++ b/palettes/InkStitch Vyapar Rayon.gpl diff --git a/palettes/Wonderfil Polyester.gpl b/palettes/InkStitch Wonderfil Polyester.gpl index 0430d4a1..0430d4a1 100644 --- a/palettes/Wonderfil Polyester.gpl +++ b/palettes/InkStitch Wonderfil Polyester.gpl diff --git a/palettes/Wonderfil Rayon.gpl b/palettes/InkStitch Wonderfil Rayon.gpl index 28e82005..28e82005 100644 --- a/palettes/Wonderfil Rayon.gpl +++ b/palettes/InkStitch Wonderfil Rayon.gpl diff --git a/print/resources/favicon.ico b/print/resources/favicon.ico Binary files differnew file mode 100644 index 00000000..1b5455bd --- /dev/null +++ b/print/resources/favicon.ico diff --git a/print/resources/inkstitch.js b/print/resources/inkstitch.js index 67690df2..9f67bc90 100644 --- a/print/resources/inkstitch.js +++ b/print/resources/inkstitch.js @@ -7,12 +7,95 @@ $.postJSON = function(url, data, success=null) { }); }; +var realistic_rendering = {}; +var realistic_cache = {}; +var normal_rendering = {}; + function ping() { $.get("/ping") .done(function() { setTimeout(ping, 1000) }) .fail(function() { $('#errors').attr('class', 'show') }); } +//function to chunk opd view into pieces + // source: https://stackoverflow.com/questions/3366529/wrap-every-3-divs-in-a-div +$.fn.chunk = function(size) { + var arr = []; + for (var i = 0; i < this.length; i += size) { + arr.push(this.slice(i, i + size)); + } + return this.pushStack(arr, "chunk", size); +} + +// build operator detailed view (opd) +function buildOpd(thumbnail_size = $('#operator-detailedview-thumbnail-size').val() ) { + + var thumbnail_size = parseInt(thumbnail_size); + var thumbnail_size_mm = thumbnail_size + 'mm'; + + var thumbnail_layout = (thumbnail_size >= 60) ? 'medium' : 'small'; + + // remove old settings + $( "div.page.operator-detailedview header" ).remove(); + $( "div.page.operator-detailedview footer" ).remove(); + $( "div.page.operator-detailedview .job-headline" ).remove(); + $('div.page.operator-detailedview .opd-color-block').parentsUntil('div.page.operator-detailedview').addBack().unwrap(); + $('.opd-color-block').removeClass('medium large'); + $('.opd-color-block').removeAttr('style'); + + // set thumbnail size + $('.operator-svg.operator-preview').css({ + 'width': thumbnail_size_mm, + 'height': thumbnail_size_mm, + 'max-width': thumbnail_size_mm + }); + + // calculate number of blocks per page + var num_blocks_per_page = 1; + if(thumbnail_layout == 'medium') { + $('.opd-color-block').addClass('medium'); + // set width to be able to calculate the height + $('.opd-color-block').css({ 'width': thumbnail_size_mm }); + // calculate max height -> source: https://stackoverflow.com/questions/6060992/element-with-the-max-height-from-a-set-of-elements + var color_box_height = Math.max.apply(null, $('.opd-color-block').map(function () { return $(this).height(); }).get()); + var container_height = $('#opd-info').height(); + var num_rows = Math.floor(container_height / color_box_height); + var num_columns = Math.floor(175 / thumbnail_size); + // if only two blocks fit into one row, use 50% of the space for each of them + if(num_columns == 2) { $('.opd-color-block').css({ 'width': 'calc(50% - 2mm)' }); } + // set equal height for all color blocks + $('.opd-color-block').css({ 'height': color_box_height }); + // set number of color blocks per page for medium thumbnails + num_blocks_per_page = num_columns * num_rows; + // use layout for large thumbnails if only 2 or less color blocks fit on one page + if(num_blocks_per_page <= 2) { + $('.opd-color-block').removeClass('medium').removeAttr('style').addClass('large'); + thumbnail_layout = 'large'; + // set number of color blocks per page for large thumbnails + num_blocks_per_page = 2; + } + } else { + // set number of color blocks per page for small thumbnails + num_blocks_per_page = Math.floor(220 / thumbnail_size); + } + // set number of color blocks per page to 1 if it defaults to zero + // this should never happen, but we want to avoid the browser to crash + num_blocks_per_page = (num_blocks_per_page <= 0) ? '1' : num_blocks_per_page; + + // adjust to new settings + var header = $('#opd-info header').prop('outerHTML'); + var footer = $('#opd-info footer').prop('outerHTML'); + var job_headline = $('#opd-info .job-headline').prop('outerHTML'); + var opd_visibility = ($('#operator-detailedview').is(':checked')) ? 'block' :'none'; + var paper_size = $('#printing-size').val(); + $('.opd-color-block').chunk(num_blocks_per_page).wrap('<div class="page operator-detailedview ' + paper_size + ' ' + thumbnail_layout +'" style="display:'+ opd_visibility +'"><main class="operator-detailedview"><div class="operator-job-info"></div></main></div>'); + $('div.operator-detailedview').prepend(header); + $('.operator-job-info').prepend(job_headline); + $('div.operator-detailedview').append(footer); + // update page numbers + setPageNumbers(); +} + // set pagenumbers function setPageNumbers() { var totalPageNum = $('body').find('.page:visible').length; @@ -42,11 +125,13 @@ function scaleSVG(element, scale = 'fit') { element.find('.scale').text(label); } -// set preview svg scale to fit into its box if transform is not set +// set preview svg scale to fit into its box if display block and transform is not set function scaleAllSvg() { $('.page').each(function() { - if( $(this).find('.inksimulation svg').css('transform') == 'none') { - scaleSVG($(this).find('.inksimulation'), 'fit'); + if( $(this).css('display') == 'block' ) { + if( $(this).find('.inksimulation svg').css('transform') == 'none') { + scaleSVG($(this).find('.inksimulation'), 'fit'); + } } }); } @@ -70,8 +155,6 @@ function setSVGTransform(figure, transform) { $(function() { setTimeout(ping, 1000); - setPageNumbers(); - /* SCALING AND MOVING SVG */ /* Mousewheel scaling */ @@ -142,6 +225,11 @@ $(function() { setSVGTransform($(this), $(this).find('svg').css('transform')); }); + // ignore mouse events on the buttons (Fill, 100%, Apply to All) + $('figure.inksimulation div').on('mousedown mouseup', function(e) { + e.stopPropagation(); + }); + /* Apply transforms to All */ $('button.svg-apply').click(function() { var transform = $(this).parent().siblings('svg').css('transform'); @@ -183,6 +271,9 @@ $(function() { item.attr('src', value); } else if (item.is('select')) { item.val(value).trigger('initialize'); + } else if (item.is('input[type=range]')) { + item.val(value).trigger('initialize'); + $('#display-thumbnail-size').html(value + 'mm'); } else if (item.is('figure.inksimulation')) { setSVGTransform(item, value); } else { @@ -190,8 +281,12 @@ $(function() { } }); }); - // wait until page size is set (if they've specified one) and then scale SVGs to fit - setTimeout(function() { scaleAllSvg() }, 500); + + // wait until page size is set (if they've specified one) and then scale SVGs to fit and build operator detailed view + setTimeout(function() { + scaleAllSvg(); + buildOpd(); + }, 500); }); $('[contenteditable="true"]').keypress(function(e) { @@ -211,7 +306,7 @@ $(function() { $('button.close').click(function() { $.post('/shutdown', {}) - .done(function(data) { + .always(function(data) { window.close(); /* Chrome and Firefox both have a rule: scripts can only close windows @@ -248,12 +343,37 @@ $(function() { /* Settings */ + // Settings Tabs + $('#tabs button').click(function() { + var active_fieldset_position = $(this).index() +1; + $('#settings-ui #fieldsets-ui > fieldset').css({'display': 'none'}); + $('#settings-ui #fieldsets-ui > fieldset:nth-child('+active_fieldset_position+')').css({'display': 'block'}); + $('#tabs .tab.active').removeClass("active"); + $(this).addClass("active"); + }); + // Paper Size $('select#printing-size').on('change initialize', function(){ $('.page').toggleClass('a4', $(this).find(':selected').val() == 'a4'); }).on('change', function() { $.postJSON('/settings/paper-size', {value: $(this).find(':selected').val()}); }); + + // Operator detailed view: thumbnail size setting + $(document).on('input', '#operator-detailedview-thumbnail-size', function() { + var thumbnail_size_mm = $(this).val() + 'mm'; + $('#display-thumbnail-size').html( thumbnail_size_mm ); + }); + + // Operator detailed view: thumbnail size setting action + $('#operator-detailedview-thumbnail-size').change(function() { + // set thumbnail size + var thumbnail_size = $(this).val(); + // set page break positions + buildOpd(thumbnail_size); + + $.postJSON('/settings/operator-detailedview-thumbnail-size', {value: thumbnail_size}); + }); // Thread Palette $('select#thread-palette').change(function(){ @@ -288,16 +408,87 @@ $(function() { $('.modal').hide(); }); - //Checkbox - $(':checkbox').on('change initialize', function() { + // View selection checkboxes + $(':checkbox.view').on('change initialize', function() { var field_name = $(this).attr('data-field-name'); $('.' + field_name).toggle($(this).prop('checked')); + scaleAllSvg(); setPageNumbers(); }).on('change', function() { + var field_name = $(this).attr('data-field-name'); $.postJSON('/settings/' + field_name, {value: $(this).prop('checked')}); }); + // Realistic rendering checkboxes + $(':checkbox.realistic').on('change', function(e) { + console.log("realistic rendering checkbox"); + + var item = $(this).data('field-name'); + var figure = $(this).closest('figure'); + var svg = figure.find('svg'); + var transform = svg.css('transform'); + var checked = $(this).prop('checked'); + + console.log("" + item + " " + transform); + + function finalize(svg_content) { + svg[0].outerHTML = svg_content; + // can't use the svg variable here because setting outerHTML created a new tag + figure.find('svg').css({transform: transform}); + } + + // do this later to allow this event handler to return now, + // which will cause the checkbox to be checked or unchecked + // immediately even if SVG rendering takes awhile + setTimeout(function() { + if (checked) { + if (!(item in normal_rendering)) { + normal_rendering[item] = svg[0].outerHTML; + } + + if (!(item in realistic_cache)) { + // pre-render the realistic SVG to a raster image to spare the poor browser + var image = document.createElement('img'); + image.onload = function() { + console.log("rendering!"); + var canvas = document.createElement('canvas'); + + // maybe make DPI configurable? for now, use 600 + canvas.width = image.width / 96 * 600; + canvas.height = image.height / 96 * 600; + + var ctx = canvas.getContext('2d'); + + // rendering slows down the browser enough that we can miss sending + // pings, so tell the server side to wait for us + $.get("/printing/start") + .done(function() { + ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height); + realistic_cache[item] = '<svg width=' + image.width + ' height=' + image.height + ' xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">' + + '<image x=0 y=0 width=' + image.width + ' height=' + image.height + ' xlink:href="' + canvas.toDataURL() + '" />' + + '</svg>'; + finalize(realistic_cache[item]); + $.get("/printing/end"); + }); + }; + image.src = '/realistic/' + item; + } else { + finalize(realistic_cache[item]); + } + } else { + finalize(normal_rendering[item]); + } + }, 100); + + e.stopPropagation(); + return true; + }); + + $('button.svg-realistic').click(function(e){ + $(this).find('input').click(); + }); + // Logo $('#logo-picker').change(function(e) { var file = e.originalEvent.currentTarget.files[0]; @@ -317,6 +508,7 @@ $(function() { settings["client-detailedview"] = $("[data-field-name='client-detailedview']").is(':checked'); settings["operator-overview"] = $("[data-field-name='operator-overview']").is(':checked'); settings["operator-detailedview"] = $("[data-field-name='operator-detailedview']").is(':checked'); + settings["operator-detailedview-thumbnail-size"] = $("[data-field-name='operator-detailedview-thumbnail-size']").val(); settings["paper-size"] = $('select#printing-size').find(':selected').val(); var logo = $("figure.brandlogo img").attr('src'); diff --git a/print/resources/style.css b/print/resources/style.css index 58ec8714..174b21dd 100644 --- a/print/resources/style.css +++ b/print/resources/style.css @@ -42,65 +42,6 @@ src: url(barlow-condensed-extra-bold.ttf) format('truetype'); } -@media screen { - .page { - margin-top: 20mm !important; - outline: 1px dotted grey; - } - - .header-field::before { - content: attr(data-label); - padding-right: 0.5em; - } - - [contenteditable=true]:empty::after{ - content: attr(data-placeholder); - color: rgb(200, 200, 200); - font-weight: normal; - } -} - -@media print { - body { - margin-bottom: 0 !important; - } - - .page { - page-break-after: always; - margin: 0 !important; - } - - figure.inksimulation div { - display: none; - } - - .ui { - display: none; - } - - #settings-ui { - display: none !important; - } - - #errors { - display: none !important; - } - - .header-field:not(:empty)::before { - content: attr(data-label); - padding-right: 0.5em; - } - - span.logo-instructions { - display: none; - } -} - -@page { - size: auto; /* auto is the initial value */ - margin: 0; -} - body { font-family: "Barlow", sans-serif; font-size: 8pt; @@ -131,7 +72,24 @@ body { height: 292mm; padding: 15mm; } + + .page.client-overview.a4 header, .page.operator-overview.a4 header { + height: 50mm; + flex-direction: row; + } + + .page.client-overview.a4 div.job-details, .page.operator-overview.a4 div.job-details { + width: 100%; + } + .page.client-overview.a4 .client-overview-main figure.inksimulation { + height: 150mm; + } + + .page.client-overview.a4 figure.brandlogo, .page.operator-overview.a4 figure.brandlogo { + margin: -6mm 2.5mm; + } + /* Settings */ .ui { @@ -230,9 +188,71 @@ body { border-radius: 5px; cursor: pointer; } + + #settings-ui #tabs { + margin-left: 20px; + z-index: 1; + } + + #settings-ui button { + background: transparent; + border: 1px solid #413232; + padding: 5px; + } + + #settings-ui button.active { + border-bottom: 1px solid white; + } + + #settings-ui #ui-design { + display: none; + } + + #settings-ui > #fieldsets-ui > fieldset > legend { + display: none; + } #settings-ui fieldset { + margin-top: -1px; margin-bottom: 1em; + border: 1px solid rgb(80,80,80); + z-index: 2; + } + + #settings-ui div { + position: relative; + } + + #settings-ui .select-container { + position: relative; + display: inline-block; + } + + #settings-ui select { + margin-left: 1em; + height: 35px; + padding: 0px 25px 0 5px; + font-size: 16px; + background-color: transparent; + border: 1px solid rgb(80,80,80); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + } + + #settings-ui select::-ms-expand { + display: none; + } + + #settings-ui .select-container::after { + content: 'â–¾'; + position: absolute; + right: 0; + top: 0; + padding: 0 5px; + border-left: 1px solid rgb(80,80,80); + line-height: 35px; + pointer-events: none; } #modal-background { @@ -287,8 +307,8 @@ body { display: block; width: 100%; height: 100%; - line-height: 30mm; text-align: center; + position: relative; } figure.brandlogo img { @@ -304,18 +324,19 @@ body { #logo-picker { width: 0px; height: 0px; - opacity: 0%; + opacity: 0; } .logo-instructions { - white-space: nowrap; - - /* chrome ignores this :( + display: block; text-align: center; - */ - + font-weight: bold; font-size: 10px; - color: rgb(192, 192, 192); + color: rgb(117, 117, 117); + background: rgba(255,255,255, 0.8); + position: absolute; + bottom: 3mm; + cursor: pointer; } .operator-detailedview figure.brandlogo { @@ -473,6 +494,24 @@ body { border: none; background: grey; color: white; + display: inline-block; + font-size: 16px; + font-family: "Barlow", sans-serif; + padding-left: 3px; + padding-right: 3px; + margin: 0px 1px 0px 1px; + } + + input.realistic { + transform: scale(0.7); + margin: 0; + vertical-align: bottom; + } + + /* prevents Chrome from sending a double event for the checkbox + and the containing <button> */ + .realistic { + pointer-events: none; } /* Color Swatches */ @@ -577,26 +616,26 @@ body { height: 230mm; } - .operator-job-info { + .operator-detailedview.small .operator-job-info { display: table; width: 100%; } - .operator-job-info div { + .operator-detailedview.small .operator-job-info div { display: table-row; } - div.job-headline { + .operator-detailedview.small div.job-headline { display: table-header-group; font-size: 9pt; font-weight: bold; } - div.job-headline p { + .operator-detailedview.small div.job-headline p { height: 1em; } - .operator-job-info p { + .operator-detailedview.small .operator-job-info p { height: 15mm; max-width: 15mm; display: table-cell; @@ -606,11 +645,11 @@ body { border: 1px solid rgb(239,239,239); } - .operator-job-info span { + .operator-detailedview.small .operator-job-info span { display: block; } - .operator-job-info span.color-index { + .operator-detailedview.small .operator-job-info span.color-index { position: absolute; top: 0; left: 0; @@ -618,25 +657,126 @@ body { width: 10mm; } - .operator-svg.operator-colorswatch { - width: 15mm; + .operator-detailedview.small .operator-svg.operator-colorswatch { + width: 10mm; } - .operator-svg.operator-preview { - min-width: 15mm; - max-width: 20mm; + .operator-detailedview.small .operator-svg.operator-preview { + width: 15mm; height: 15mm; } - .operator-svg svg { + .operator-detailedview.small .operator-svg svg { position: absolute; top: 0; left: 0; - width: auto; - max-width: 30mm; + right: 0; + width: 100%; + height: 100%; + } + + /* opd medium/large thumbnails */ + + .operator-detailedview.medium div.job-headline, + .operator-detailedview.large div.job-headline { + display: none; + } + + .opd-color-block.medium, + .opd-color-block.large { + overflow: hidden; + position: relative; + border: 0.5mm solid rgb(239,239,239); + } + + .opd-color-block.medium .operator-colorswatch, + .opd-color-block.large .operator-colorswatch { + position: absolute; + top: 0; + padding: 0; + margin: 0; + width: 10mm; + height: 10mm; + border-right: 0.5mm solid rgb(239,239,239); + border-bottom: 0.5mm solid rgb(239,239,239); + } + + .opd-color-block.medium .operator-colorswatch svg, + .opd-color-block.medium .opd-summary p:first-child span, + .opd-color-block.medium .operator-preview svg, + .opd-color-block.large .operator-colorswatch svg, + .opd-color-block.large .opd-summary p:first-child span, + .opd-color-block.large .operator-preview svg { height: 100%; + width: 100%; + } + + /* opd medium thumbnails */ + + .opd-color-block.medium { + display: inline-block; + float: left; + margin: 1mm; + } + + .opd-color-block.medium p { + margin: 0 auto; + } + + .opd-color-block.medium p:last-child { + margin-bottom: 1mm; + } + + .opd-color-block.medium .operator-preview { + margin: 1mm auto 0 auto; + } + + .opd-color-block.medium.opd-summary .operator-colorswatch { + display: none; + } + + .opd-color-block.medium span::before { + content: ' \00B7 '; + line-height: 0; + display: inline-block; + margin: 0 1mm; + vertical-align: super; + } + + .opd-color-block.medium span:first-child::before { + content: ''; + } + + /* opd large thumbnails */ + + .opd-color-block.large { + display: block; + margin: 5mm 0; + } + + .opd-color-block.large:first-child { + margin-top: 0; } + .opd-color-block.large .operator-preview { + margin: 0; + } + + .opd-color-block.large .operator-preview { + float: left; + } + + .opd-color-block.large p { + text-align: left; + } + + .opd-color-block.large p:nth-child(3) { + margin-top: 5mm; + } + + .opd-color-block.large span { + display: block; + } /* Footer */ @@ -808,3 +948,62 @@ body { height: calc(100% / 5); width: calc(100% / 12); } + +@media screen { + .page { + margin-top: 20mm !important; + outline: 1px dotted grey; + } + + .header-field::before { + content: attr(data-label); + padding-right: 0.5em; + } + + [contenteditable=true]:empty::after{ + content: attr(data-placeholder); + color: rgb(200, 200, 200); + font-weight: normal; + } +} + +@media print { + body { + margin-bottom: 0 !important; + } + + .page { + page-break-after: always; + margin: 0 !important; + } + + figure.inksimulation div { + display: none; + } + + .ui { + display: none; + } + + #settings-ui { + display: none !important; + } + + #errors { + display: none !important; + } + + .header-field:not(:empty)::before { + content: attr(data-label); + padding-right: 0.5em; + } + + span.logo-instructions { + display: none; + } +} + +@page { + size: auto; /* auto is the initial value */ + margin: 0; +} diff --git a/print/templates/color_swatch.html b/print/templates/color_swatch.html index 6785b080..71022f6f 100644 --- a/print/templates/color_swatch.html +++ b/print/templates/color_swatch.html @@ -20,8 +20,8 @@ {% endif %} {# We don't want to see stops and trims if we have more than 13 colorSwatches to show #} {% if color_blocks|length < 13 %} - <tspan dy="1.2em" x="2mm" class="swatch-stops">{{ _('# stops') }}: {{ color_block.num_stops }}</tspan> <tspan dy="1.2em" x="2mm" class="swatch-trims">{{ _('# trims') }}: {{ color_block.num_trims }}</tspan> + <tspan dy="1.2em" x="2mm" class="swatch-stops">{{ _('stop after?') }}: {{ _("yes") if color_block.stop_after else _("no") }}</tspan> {% endif %} </text> </svg> @@ -41,8 +41,8 @@ <p><span class="color-rgb">{{ _('rgb') }}:</span><span>{{ color_block.color.rgb }}</span></p> <p><span class="swatch-thread">{{ _('thread') }}:</span><span data-field-name="thread-{{ color_block.color.hex_digits }}" contenteditable="true">{{ color_block.color.manufacturer }} {{ "#" + color_block.color.number if color_block.color.number }}</span></p> <p><span class="swatch-stitches">{{ _('# stitches') }}:</span><span>{{ color_block.num_stitches }}</span></p> - <p><span class="swatch-stops">{{ _('# stops') }}:</span><span>{{ color_block.num_stops }}</span></p> <p><span class="swatch-trims">{{ _('# trims') }}:</span><span>{{ color_block.num_trims }}</span></p> + <p><span class="swatch-stops">{{ _('stop after?') }}:</span><span>{{ _("yes") if color_block.stop_after else _("no") }}</span></p> </div> </div> </div> diff --git a/print/templates/headline.html b/print/templates/headline.html index 7a7059b9..369c370e 100644 --- a/print/templates/headline.html +++ b/print/templates/headline.html @@ -2,8 +2,8 @@ <label for="logo-picker"> <img src="{{ logo.src or "resources/inkstitch-logo.svg" }}" alt="{{ logo.title }}" title="{{ logo.title }}" data-field-name="logo"> <input type=file id="logo-picker" /> + <span class="logo-instructions">{{ _("Click to choose another logo") }}</span> </label> - <span class="logo-instructions">{{ _("Click to choose another logo") }}</span> </figure> <div class="headline"> <div class="pageTitle"> diff --git a/print/templates/index.html b/print/templates/index.html index 0c9cedfd..c7fa5d74 100644 --- a/print/templates/index.html +++ b/print/templates/index.html @@ -5,6 +5,7 @@ <script src="resources/jquery-3.3.1.min.js"></script> <script src="resources/inkstitch.js"></script> <link rel="stylesheet" href="resources/style.css" /> + <link rel="shortcut icon" type="image/png" href="/favicon.png"/> </head> <body> {% include 'ui.html' %} @@ -23,10 +24,7 @@ <div class="page operator-overview" style="display: {{ 'block' if view.operator_overview else 'none' }}">{% include 'operator_overview.html' %}</div> {# operator detailed view #} - {% for color_block_part in color_blocks | batch(12) %} - {% set outer_loop = loop %} - <div class="page operator-detailedview" style="display: {{ 'block' if view.operator_detailedview else 'none' }}">{% include 'operator_detailedview.html' %}</div> - {% endfor %} + {% include 'operator_detailedview.html' %} </body> </html> diff --git a/print/templates/operator_detailedview.html b/print/templates/operator_detailedview.html index 0b948cb0..e3c0d441 100644 --- a/print/templates/operator_detailedview.html +++ b/print/templates/operator_detailedview.html @@ -1,76 +1,72 @@ + <div id="opd-info" style="display: none; height: 220mm; width: 175mm;"> <header> {% include 'headline.html' %} </header> + {% include 'footer.html' %} + <div class="job-headline"> + <p class="operator-svg operator-colorswatch">{# svg color #}</p> + <p>{# svg preview #}</p> + <p>{{ _('Color') }}</p> + <p>{{ _('Thread Consumption') }}</p> + <p>{{ _('Stops and Trims') }}</p> + <p>{{ _('Notes') }}</p> + </div> + </div> - <main> - <div class="operator-job-info"> - <div class="job-headline"> - <p class="operator-svg operator-colorswatch">{# svg color #}</p> - <p>{# svg preview #}</p> - <p>{{ _('Color') }}</p> - <p>{{ _('Thread Consumption') }}</p> - <p>{{ _('Stops and Trims') }}</p> - <p>{{ _('Notes') }}</p> - </div> - {% if outer_loop.index == 1 %} - <div> - <p> - <span>##</span> - </p> - <p class="operator-svg operator-preview"> - {{ svg_overview|safe }} - </p> - <p> - <span>{{ _('Unique Colors') }}: {{ job.num_colors }}</span> - <span>{{ _('Color Blocks') }}: {{ job.num_color_blocks }}</span> - </p> - <p> - <span>{{ _('Design box size') }}: {{ "%0.1fmm X %0.1fmm" | format(*job.dimensions) }}</span> - <span>{{ _('Total thread used') }}: {{job.estimated_thread }}</span> - <span>{{ _('Total stitch count') }}: {{job.num_stitches }}</span> - </p> - <p> - <span>{{ _('Total nr stops') }}: {{ job.num_stops }}</span> - <span>{{ _('Total nr trims') }}: {{ job.num_trims }}</span> - </p> - <p> - <span></span> - </p> - </div> - {% endif %} - {% for color_block in color_block_part %} + <div class="opd-summary opd-color-block"> + <p class="operator-svg operator-colorswatch"> + <span>##</span> + </p> + <p class="operator-svg operator-preview"> + {{ svg_overview|safe }} + </p> + <p> + <span>{{ _('Unique Colors') }}: {{ job.num_colors }}</span> + <span>{{ _('Color Blocks') }}: {{ job.num_color_blocks }}</span> + </p> + <p> + <span>{{ _('Design box size') }}: {{ "%0.1fmm X %0.1fmm" | format(*job.dimensions) }}</span> + <span>{{ _('Total thread used') }}: {{job.estimated_thread }}</span> + <span>{{ _('Total stitch count') }}: {{job.num_stitches }}</span> + </p> + <p> + <span>{{ _('Total stops') }}: {{ job.num_stops }}</span> + <span>{{ _('Total trims') }}: {{ job.num_trims }}</span> + </p> + <p> + <span></span> + </p> + </div> - <div style="display: table-row;"> - <p class="operator-svg operator-colorswatch"> - <svg xmlns="http://www.w3.org/2000/svg"> - <rect fill="rgb{{ color_block.color.rgb }}" width="15mm" height="100%" /> - <text fill="rgb{{ color_block.color.font_color }}"> - <tspan x="4mm" y="7.5mm" class="color-index">#{{ loop.index + outer_loop.index0 * 12 }}</tspan> - </text> - </svg> - </p> - <p class="operator-svg operator-preview"> - {{ color_block.svg_preview|safe }} - </p> - <p> - <span data-field-name="color-{{ color_block.color.hex_digits }}" contenteditable="true" data-placeholder="Enter thread name...">{{ color_block.color.name }}</span> - <span>{{ color_block.color.rgb }}</span> - <span data-field-name="thread-{{ color_block.color.hex_digits }}" contenteditable="true">{{ color_block.color.manufacturer }} {{ "#" + color_block.color.number if color_block.color.number }}</span> - </p> - <p> - <span>{{ _('thread used') }}:</span> - <span>{{ _('# stitches') }}: {{ color_block.num_stitches }}</span> - </p> - <p> - <span>{{ _('# stops') }}: {{ color_block.num_stops }}</span> - <span>{{ _('# trims') }}: {{ color_block.num_trims }}</span> - </p> - <p> - <span class="notes" contenteditable="true" data-field-name="operator-notes-block{{ loop.index0 + outer_loop.index0 * 12 }}" data-placeholder="{{ _("Enter operator notes...") }}"></span> - </p> - </div> - {% endfor %} - </div> - </main> + {% for color_block in color_blocks %} - {% include 'footer.html' %} + <div class="opd-color-block"> + <p class="operator-svg operator-colorswatch"> + <svg xmlns="http://www.w3.org/2000/svg"> + <rect fill="rgb{{ color_block.color.rgb }}" width="15mm" height="100%" /> + <text fill="rgb{{ color_block.color.font_color }}"> + <tspan x="2mm" y="5mm" class="color-index">#{{ loop.index }}</tspan> + </text> + </svg> + </p> + <p class="operator-svg operator-preview"> + {{ color_block.svg_preview|safe }} + </p> + <p> + <span data-field-name="color-{{ color_block.color.hex_digits }}" contenteditable="true" data-placeholder="Enter thread name...">{{ color_block.color.name }}</span> + <span>{{ color_block.color.rgb }}</span> + <span data-field-name="thread-{{ color_block.color.hex_digits }}" contenteditable="true">{{ color_block.color.manufacturer }} {{ "#" + color_block.color.number if color_block.color.number }}</span> + </p> + <p> + <span>{{ _('thread used') }}:</span> + <span>{{ _('# stitches') }}: {{ color_block.num_stitches }}</span> + </p> + <p> + <span>{{ _('trims') }}: {{ color_block.num_trims }}</span> + <span>{{ _('stop after?') }}: {{ _("yes") if color_block.stop_after else _("no") }}</span> + </p> + <p> + <span class="notes" contenteditable="true" data-field-name="operator-notes-block{{ loop.index }}" data-placeholder="{{ _("Enter operator notes...") }}"></span> + </p> + </div> + {% endfor %} diff --git a/print/templates/operator_overview.html b/print/templates/operator_overview.html index 367d6d2b..048fd58e 100644 --- a/print/templates/operator_overview.html +++ b/print/templates/operator_overview.html @@ -5,8 +5,8 @@ <div class="table"> <p><span>{{ _('Unique Colors') }}:</span><span>{{ job.num_colors }}</span></p> <p><span>{{ _('Color Blocks') }}:</span><span>{{ job.num_color_blocks }}</span></p> - <p><span>{{ _('Total nr stops') }}:</span><span>{{ job.num_stops }}</span></p> - <p><span>{{ _('Total nr trims') }}:</span><span>{{ job.num_trims }}</span></p> + <p><span>{{ _('Total stops') }}:</span><span>{{ job.num_stops }}</span></p> + <p><span>{{ _('Total trims') }}:</span><span>{{ job.num_trims }}</span></p> </div> </div> <div> @@ -27,12 +27,7 @@ <main> <figure class="inksimulation operator" data-field-name="operator-overview-transform" style="height: 210mm;" title="{{ _('Ctrl + Scroll to Zoom') }}"> {{ svg_overview|safe }} - <figcaption>{{ _('Scale') }} <span class="scale" data-field-name="svg-scale" contenteditable="true" data-placeholder=""></span>%</figcaption> - <div> - <button class="svg-fit">{{ _('Fit') }}</button> - <button class="svg-full">100%</button> - <button class="svg-apply">{{ _('Apply to all') }}</button> - </div> + {% include 'ui_svg_action_buttons.html' %} </figure> </main> {% include 'footer.html' %} diff --git a/print/templates/print_detail.html b/print/templates/print_detail.html index 714d33a2..241ac88b 100644 --- a/print/templates/print_detail.html +++ b/print/templates/print_detail.html @@ -17,14 +17,8 @@ <main> <figure class="inksimulation" data-field-name="client-detail-transform-block{{ loop.index0 }}" title="{{ _('Ctrl + Scroll to Zoom') }}"> {{color_block.svg_preview|safe}} - <figcaption>{{ _('Scale') }} <span class="scale" data-field-name="svg-scale" contenteditable="true" data-placeholder=""></span>%</figcaption> - <div> - <button class="svg-fit">Fit</button> - <button class="svg-full">100%</button> - <button class="svg-apply">Apply to all</button> - </div> - </figure> - + {% include 'ui_svg_action_buttons.html' %} + </figure> <div class="color-palette detailed"> {% include 'color_swatch.html' %} </div> diff --git a/print/templates/print_overview.html b/print/templates/print_overview.html index efcf5b2e..cfbb81d1 100644 --- a/print/templates/print_overview.html +++ b/print/templates/print_overview.html @@ -5,8 +5,8 @@ <div class="table"> <p><span>{{ _('Unique Colors') }}:</span><span>{{ job.num_colors }}</span></p> <p><span>{{ _('Color Blocks') }}:</span><span>{{ job.num_color_blocks }}</span></p> - <p><span>{{ _('Total nr stops') }}:</span><span>{{ job.num_stops }}</span></p> - <p><span>{{ _('Total nr trims') }}:</span><span>{{ job.num_trims }}</span></p> + <p><span>{{ _('Total stops') }}:</span><span>{{ job.num_stops }}</span></p> + <p><span>{{ _('Total trims') }}:</span><span>{{ job.num_trims }}</span></p> </div> </div> <div> @@ -27,19 +27,14 @@ <main class="client-overview-main"> <figure class="inksimulation" data-field-name="client-overview-transform" title="{{ _('Ctrl + Scroll to Zoom') }}"> {{ svg_overview|safe }} - <figcaption>{{ _('Scale') }} <span class="scale" data-field-name="svg-scale" contenteditable="true" data-placeholder=""></span>%</figcaption> - <div> - <button class="svg-fit">Fit</button> - <button class="svg-full">100%</button> - <button class="svg-apply">Apply to all</button> - </div> - </figure> - + {% include 'ui_svg_action_buttons.html' %} + </figure> + <div class="color-palette"> {% for color_block in color_blocks %} {% include 'color_swatch.html' %} - {% endfor %} - + {% endfor %} + </div> <div class="signature">{{ _('Client Signature') }}</div> </main> diff --git a/print/templates/ui.html b/print/templates/ui.html index b09dc941..bc6c57b9 100644 --- a/print/templates/ui.html +++ b/print/templates/ui.html @@ -13,41 +13,51 @@ <div id="settings-ui"> <p id="close-settings">X</p> <h1>{{ _('Settings') }}</h1> - <fieldset> - <legend>{{ _('Page Setup') }}</legend> - <div> - <p>{{ _('Printing Size') }}: - <select id="printing-size" data-field-name="paper-size"> - <option value="letter" selected="selected">Letter</option> - <option value="a4">A4</option> + + <div id="tabs"> + <button class="tab active">{{ _('Page Setup') }}</button> + <button class="tab">{{ _('Design') }}</button> + </div> + <div id="fieldsets-ui"> + <fieldset id="ui-page-setup"> + <legend>{{ _('Page Setup') }}</legend> + <div> + <p class="select-container"> + <label for="printing-size">{{ _('Printing Size') }}:</label> + <select id="printing-size" data-field-name="paper-size"> + <option value="letter" selected="selected">Letter</option> + <option value="a4">A4</option> + </select> + </p> + </div> + <div> + <fieldset> + <legend>{{ _('Print Layouts') }}</legend> + <p><input type="checkbox" class="view" id="client-overview" data-field-name="client-overview" /><label for="client-overview">{{ _('Client Overview') }}</label></p> + <p><input type="checkbox" class="view" id="client-detailedview" data-field-name="client-detailedview" /><label for="client-detailedview">{{ _('Client Detailed View') }}</label></p> + <p><input type="checkbox" class="view" id="operator-overview" data-field-name="operator-overview" CHECKED /><label for="operator-overview">{{ _('Operator Overview') }}</label></p> + <p><input type="checkbox" class="view" id="operator-detailedview" data-field-name="operator-detailedview" CHECKED /><label for="operator-detailedview">{{ _('Operator Detailed View') }}</label></p> + <p style="text-indent: 1.5em;">{{ _('Thumbnail size') }}: <input type="range" min="15" max="110" value="15" step="5" id="operator-detailedview-thumbnail-size" data-field-name="operator-detailedview-thumbnail-size" style="vertical-align: middle;"> <span id="display-thumbnail-size">15mm</span> + </p> + </fieldset> + <button id="save-settings" title="{{ _("Includes these Page Setup settings and also the icon.") }}">{{ _("Save as defaults") }}</button> + </div> + </fieldset> + <fieldset id="ui-design"> + <legend>{{ _('Design') }}</legend> + <p class="select-container"><label for="thread-palette">{{ _('Thread Palette') }}:</label> + <select id="thread-palette" data-field-name="thread-palette"> + {% if selected_palette is none %} + <option value="" selected>{{ _('None') }}</option> + {% endif %} + {% for palette in palettes %} + <option value="{{ palette }}" {{ "selected" if palette == selected_palette.name else "" }}>{{ palette }}</option> + {% endfor %} </select> </p> - </div> - <div> - <fieldset> - <legend>{{ _('Print Layouts') }}</legend> - <p><input type="checkbox" id="client-overview" data-field-name="client-overview" /><label for="client-overview">Client Overview</label></p> - <p><input type="checkbox" id="client-detailedview" data-field-name="client-detailedview" /><label for="client-detailedview">Client Detailed View</label></p> - <p><input type="checkbox" id="operator-overview" data-field-name="operator-overview" CHECKED /><label for="operator-overview">Operator Overview</label></p> - <p><input type="checkbox" id="operator-detailedview" data-field-name="operator-detailedview" CHECKED /><label for="operator-detailedview">Operator Detailed View</label></p> - </fieldset> - <button id="save-settings" title="{{ _("Includes these Page Setup settings and also the icon.") }}">{{ _("Save as defaults") }}</button> - </div> - </fieldset> - <fieldset> - <legend>{{ _('Design') }}</legend> - <p>{{ _('Thread Palette') }}: - <select id="thread-palette" data-field-name="thread-palette"> - {% if selected_palette is none %} - <option value="" selected>None</option> - {% endif %} - {% for palette in palettes %} - <option value="{{ palette }}" {{ "selected" if palette == selected_palette.name else "" }}>{{ palette }}</option> - {% endfor %} - </select> - </p> - </fieldset> - </div> + </fieldset> + </div><!-- END FIELDSETS-UI --> + </div><!-- END SETTINGS-UI--> <div id="modal-background" class="modal"></div> <div id="modal-content" class="modal"> diff --git a/print/templates/ui_svg_action_buttons.html b/print/templates/ui_svg_action_buttons.html new file mode 100644 index 00000000..c111d634 --- /dev/null +++ b/print/templates/ui_svg_action_buttons.html @@ -0,0 +1,10 @@ +<figcaption>{{ _('Scale') }} <span class="scale" data-field-name="svg-scale" contenteditable="true" data-placeholder=""></span>%</figcaption> +<div> + <button class="svg-fit">{{ _('Fit') }}</button> + <button class="svg-full">100%</button> + <button class="svg-apply">{{ _('Apply to all') }}</button> + <button class="svg-realistic"> + <input type="checkbox" id="realistic-operator-overview" data-field-name="overview" class="realistic" /> + <label for="realistic-operator-overview" class="realistic">{{ _('Realistic') }}</label> + </button> +</div> diff --git a/requirements.txt b/requirements.txt index 314a2b0e..8d487a2c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +pyembroidery >=1.2.12, <1.3.0 backports.functools_lru_cache wxPython networkx diff --git a/symbols/inkstitch.svg b/symbols/inkstitch.svg new file mode 100644 index 00000000..4497e679 --- /dev/null +++ b/symbols/inkstitch.svg @@ -0,0 +1,189 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<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="100mm" + height="100mm" + viewBox="0 0 377.95276 377.95276" + id="svg8375" + version="1.1" + inkscape:version="0.92.3 (unknown)" + sodipodi:docname="inkstitch.svg"> + <sodipodi:namedview + inkscape:snap-object-midpoints="true" + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4" + inkscape:cx="30.48931" + inkscape:cy="293.08326" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="mm" + inkscape:window-width="1366" + inkscape:window-height="705" + inkscape:window-x="-4" + inkscape:window-y="-4" + inkscape:window-maximized="1" + inkscape:measure-start="128.23,226.536" + inkscape:measure-end="114.217,226.536" + inkscape:snap-global="true" + showguides="false" + inkscape:snap-others="true" + inkscape:object-nodes="false" + inkscape:snap-nodes="false"> + <inkscape:grid + type="xygrid" + id="grid5001" + units="mm" + spacingx="18.897638" + spacingy="18.897638" + color="#f03fff" + opacity="0.1254902" + empspacing="2" /> + </sodipodi:namedview> + <title + id="title9425">Ink/Stitch Commands</title> + <defs + id="defs8377"> + <symbol + id="inkstitch_fill_end"> + <title + id="inkstitch_title9427">Fill stitch ending point</title> + <path + id="inkstitch_circle13166" + d="m 9.220113,0.0792309 c -1.9e-6,5.106729 -4.1398241,9.24655 -9.246553,9.24655 -5.1067293,0 -9.2465521,-4.139821 -9.246554,-9.24655 1e-7,-2.452338 0.9741879,-4.804235 2.7082531,-6.538301 1.7340653,-1.734065 4.0859624,-2.708252 6.5383009,-2.708252 5.1067301,0 9.2465528,4.139823 9.246553,9.246553 0,0 0,0 0,0" + style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06500006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19500017, 3.19500017;stroke-dashoffset:0;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.27154255;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4.81866985, 4.81866985;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" + d="m -4.570439,-4.5704391 c 0,0 9.140878,0 9.140878,0 0,0 0,9.14087 0,9.14087 0,0 -9.140878,0 -9.140878,0 0,0 0,-9.14087 0,-9.14087" + id="inkstitch_rect5371-2" + inkscape:connector-curvature="0" /> + </symbol> + <symbol + id="inkstitch_trim"> + <title + id="inkstitch_title9282">Trim the thread after sewing this object.</title> + <path + id="inkstitch_circle13405" + d="m 9.2465284,-8.6e-6 c 1.8e-6,2.452339 -0.9741847,4.804237 -2.7082493,6.538304 C 4.8042146,8.2723614 2.4523174,9.2465504 -2.1625959e-5,9.2465514 -2.4523623,9.2465534 -4.8042621,8.2723654 -6.5383288,6.5382984 -8.2723956,4.8042314 -9.2465834,2.4523324 -9.2465816,-8.6e-6 c 6e-7,-2.452339 0.9741895,-4.804237 2.708256,-6.538301 1.7340665,-1.734065 4.0859648,-2.708252 6.538303974041,-2.70825 C 5.1067066,-9.2465576 9.2465271,-5.1067366 9.2465284,-8.6e-6 c 0,0 0,0 0,0" + style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06500006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19500017, 3.19500017;stroke-dashoffset:0;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#050505;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.41421342;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m -3.0000256,-5.9834096 c -1.30575,0 -2.375,1.06924 -2.375,2.375 0,1.30575 1.06925,2.375 2.375,2.375 0.58687,0 1.11944,-0.22369 1.53516,-0.58007 0,0 0.61717997,1.62109 0.61717997,1.62109 0,0 -2.29881997,6.01758 -2.29881997,6.01758 0.98655,-0.12511 1.23728,-0.26171 1.67382,-0.97461 0,0 1.33007997,-3.18945 1.33007997,-3.18945 0,0 1.23633003,3.25 1.23633003,3.25 0.23227,0.77906 0.84315,0.79218 1.57813,1.07226 0,0 -2.05469003,-6.14258 -2.05469003,-6.14258 0,0 0.73047003,-1.75 0.73047003,-1.75 0.42849,0.41682 1.01136,0.67578 1.65234,0.67578 1.30575,0 2.375,-1.06925 2.375,-2.375 0,-1.30576 -1.06925,-2.375 -2.375,-2.375 -1.06233,0 -1.95701,0.71265 -2.25781003,1.67969 0,0 -0.0117,-0.0156 -0.0117,-0.0156 0,0 -0.80274,2.10156 -0.80274,2.10156 0,0 -0.59179,-1.76562 -0.59179,-1.76562 -0.18242,-1.12808 -1.15864997,-2 -2.33593997,-2 0,0 -2e-5,-3e-5 -2e-5,-3e-5 m 0,1 c 0.76531,0 1.375,0.60968 1.375,1.375 0,0.76531 -0.60969,1.375 -1.375,1.375 -0.76531,0 -1.375,-0.60969 -1.375,-1.375 0,-0.76532 0.60969,-1.375 1.375,-1.375 0,0 0,0 0,0 m 6,0 c 0.76531,0 1.375,0.60968 1.375,1.375 0,0.76531 -0.60969,1.375 -1.375,1.375 -0.76531,0 -1.375,-0.60969 -1.375,-1.375 0,-0.76532 0.60969,-1.375 1.375,-1.375 0,0 0,0 0,0" + id="inkstitch_path13416" + inkscape:connector-curvature="0" /> + </symbol> + <symbol + id="inkstitch_fill_start"> + <title + id="inkstitch_title9432">Fill stitch starting point</title> + <path + id="inkstitch_circle13166-6" + d="m 9.2465269,-2.6e-6 c -1.9e-6,5.106729 -4.1398247,9.24655 -9.246554026709,9.24655 C -5.106756,9.2465474 -9.2465782,5.1067264 -9.2465801,-2.6e-6 c 2e-7,-5.10673 4.1398229,-9.246553 9.246552973291,-9.246553 2.452338526709,0 4.804235626709,0.974187 6.538300926709,2.708252 1.7340652,1.734066 2.708253,4.085963 2.7082531,6.538301 0,0 0,0 0,0" + style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06501234;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19503705, 3.19503705;stroke-dashoffset:0;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.74180555;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 6.5728129,0.0035574 c 0,0 -10.4514,6.03412 -10.4514,6.03412 0,0 0,-12.06823 0,-12.06823 0,0 10.4514,6.03411 10.4514,6.03411" + id="inkstitch_path4183" + inkscape:connector-curvature="0" /> + </symbol> + <symbol + id="inkstitch_stop"> + <title + id="inkstitch_title13328">Stop the machine after sewing this object (for applique, etc)</title> + <path + id="inkstitch_circle13330" + d="m 9.2465269,-2.6e-6 c -1.9e-6,5.106729 -4.1398241,9.24655 -9.246553026709,9.24655 C -5.1067554,9.2465474 -9.2465782,5.1067264 -9.2465801,-2.6e-6 c 10e-8,-2.452338 0.9741879,-4.804235 2.7082531,-6.538301 1.7340653,-1.734065 4.0859624,-2.708252 6.538300873291,-2.708252 C 5.106704,-9.2465556 9.2465267,-5.1067326 9.2465269,-2.6e-6 c 0,0 0,0 0,0" + style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06501234;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19503705, 3.19503705;stroke-dashoffset:0;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + id="inkstitch_path13332" + d="m -3.1690251,-4.6497026 c 0,0 2.51587797,0 2.51587797,0 0,0 0,9.14087 0,9.14087 0,0 -2.51587797,0 -2.51587797,0 0,0 0,-9.14087 0,-9.14087" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.60622311;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4.81866985, 4.81866985;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" + inkscape:connector-curvature="0" /> + <path + id="inkstitch_path13333" + d="m 0.83097287,-4.6497026 c 0,0 2.51588003,0 2.51588003,0 0,0 0,9.14087 0,9.14087 0,0 -2.51588003,0 -2.51588003,0 0,0 0,-9.14087 0,-9.14087" + style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.60622311;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4.81866985, 4.81866985;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" + inkscape:connector-curvature="0" /> + </symbol> + </defs> + <metadata + id="metadata8380"> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + style="display:inline"> + <flowRoot + transform="translate(0,58.409503)" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;text-anchor:start;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#050505;stroke-width:1.06500006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:3.19500017, 3.19500017;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" + id="flowRoot37658" + xml:space="preserve"><flowRegion + id="flowRegion37660"><rect + y="71.702759" + x="20.75" + height="62.5" + width="217.5" + id="rect37662" /></flowRegion><flowPara + style="fill:#000000;fill-opacity:1;stroke:none" + id="flowPara37664">Create symbols carefully! They must be centered about the origin before being converted to a symbol.</flowPara></flowRoot> <use + xlink:href="#inkstitch_fill_end" + id="use9454" + x="0" + y="0" + width="100%" + height="100%" + transform="translate(37.82169,75.511319)" /> + <use + xlink:href="#inkstitch_trim" + id="use9461" + x="0" + y="0" + width="100%" + height="100%" + transform="translate(75.590552,75.590552)" /> + <use + xlink:href="#inkstitch_fill_start" + id="use9468" + x="0" + y="0" + width="100%" + height="100%" + transform="translate(113.38583,75.590552)" /> + <use + xlink:href="#inkstitch_stop" + id="use9476" + x="0" + y="0" + width="100%" + height="100%" + transform="translate(151.1811,75.590552)" /> + </g> +</svg> diff --git a/templates/embroider_input.inx b/templates/embroider_input.inx index 24bba7e4..15ccdef8 100644 --- a/templates/embroider_input.inx +++ b/templates/embroider_input.inx @@ -15,4 +15,3 @@ <command reldir="extensions" interpreter="python">inkstitch.py</command> </script> </inkscape-extension> - diff --git a/templates/embroider_output.inx b/templates/embroider_output.inx new file mode 100644 index 00000000..4f971fb3 --- /dev/null +++ b/templates/embroider_output.inx @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> + <_name>{{ format | upper }} file output</_name> + <id>org.inkstitch.output.{{ format }}</id> + <dependency type="executable" location="extensions">inkstitch.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <output> + <extension>.{{ format }}</extension> + <mimetype>application/x-embroidery-{{ format }}</mimetype> + <_filetypename>Ink/Stitch: {{ description }} (.{{ format }})</_filetypename> + <_filetypetooltip>Save design in {{ format | upper }} format using Ink/Stitch</_filetypetooltip> + <dataloss>true</dataloss> + </output> + <param name="extension" type="string" gui-hidden="true">output</param> + <param name="format" type="string" gui-hidden="true">{{ format }}</param> + <script> + <command reldir="extensions" interpreter="python">inkstitch.py</command> + </script> +</inkscape-extension> diff --git a/templates/embroider_zip_output.inx b/templates/embroider_zip_output.inx new file mode 100644 index 00000000..5d162357 --- /dev/null +++ b/templates/embroider_zip_output.inx @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> + <_name>embroidery ZIP file output</_name> + <id>org.inkstitch.output.zip</id> + <dependency type="executable" location="extensions">inkstitch.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + <output> + <extension>.zip</extension> + <mimetype>application/zip</mimetype> + <_filetypename>Ink/Stitch: ZIP export multiple formats (.zip)</_filetypename> + <_filetypetooltip>Create a ZIP with multiple embroidery file formats using Ink/Stitch</_filetypetooltip> + <dataloss>true</dataloss> + </output> +{% for format, description in formats %} + <param name="format-{{format}}" type="boolean" _gui-text=".{{format | upper}}: {{description}}">false</param> +{% endfor %} + <param name="extension" type="string" gui-hidden="true">zip</param> + <script> + <command reldir="extensions" interpreter="python">inkstitch.py</command> + </script> +</inkscape-extension> diff --git a/translations/messages_af_ZA.po b/translations/messages_af_ZA.po index 86926149..0148a5b8 100644 --- a/translations/messages_af_ZA.po +++ b/translations/messages_af_ZA.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:30-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:30\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Afrikaans\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: af_ZA\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_ar_SA.po b/translations/messages_ar_SA.po index a7acbf0a..fb8beec2 100644 --- a/translations/messages_ar_SA.po +++ b/translations/messages_ar_SA.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Arabic\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: ar_SA\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_ca_ES.po b/translations/messages_ca_ES.po index e91af523..8ff62893 100644 --- a/translations/messages_ca_ES.po +++ b/translations/messages_ca_ES.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Catalan\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: ca_ES\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_cs_CZ.po b/translations/messages_cs_CZ.po index aee3ce0b..2346667f 100644 --- a/translations/messages_cs_CZ.po +++ b/translations/messages_cs_CZ.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Czech\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: cs_CZ\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_da_DK.po b/translations/messages_da_DK.po index 1b7478bd..fec76bd5 100644 --- a/translations/messages_da_DK.po +++ b/translations/messages_da_DK.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Danish\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: da_DK\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_de_DE.po b/translations/messages_de_DE.po index 0bbd4927..50a8daa6 100644 --- a/translations/messages_de_DE.po +++ b/translations/messages_de_DE.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-07-04 07:03\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: German\n" "MIME-Version: 1.0\n" @@ -17,145 +17,6 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: de_DE\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." -msgstr "\n\n" -" Sehen Sie eine Meldung \"keine solche Option\"? Zum beheben bitte Inkscape neu starten." - -msgid "Directory in which to install palettes:" -msgstr "" - -msgid "Choose another directory..." -msgstr "" - -msgid "Install" -msgstr "" - -msgid "Cancel" -msgstr "Abbrechen" - -msgid "Choose Inkscape palettes directory" -msgstr "" - -msgid "Thread palette installation failed" -msgstr "" - -msgid "Installation Failed" -msgstr "" - -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." -msgstr "" - -msgid "Installation Completed" -msgstr "" - -msgid "Ink/Stitch Thread Palette Installer" -msgstr "" - -msgid "These settings will be applied to 1 object." -msgstr "Diese Einstellung wird auf 1 Objekt angewendet." - -#, python-format -msgid "These settings will be applied to %d objects." -msgstr "Diese Einstellungen werden auf %d Objekte angewendet." - -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." -msgstr "Einige Einstellungen hatten unterschiedliche Werte der Objekte. Bitte einen Wert aus der Liste auswählen oder einen neuen Namen eingeben." - -#, python-format -msgid "Disabling this tab will disable the following %d tabs." -msgstr "Deaktivierung dieser Registerkarte, deaktiviert die folgenden %d Registerkarten." - -msgid "Disabling this tab will disable the following tab." -msgstr "Deaktivierung dieser Registerkarte, deaktiviert die folgende Registerkarte." - -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." -msgstr "Aktivierung dieser Registerkarte deaktiviert %s und umgekehrt." - -msgid "Inkscape objects" -msgstr "Inkscape Objekte" - -msgid "Embroidery Params" -msgstr "Stickparameter" - -msgid "Presets" -msgstr "Voreinstellungen" - -msgid "Load" -msgstr "Öffnen" - -msgid "Add" -msgstr "Hinzufügen" - -msgid "Overwrite" -msgstr "Überschreiben" - -msgid "Delete" -msgstr "Löschen" - -msgid "Use Last Settings" -msgstr "Letzte Einstellungen verwenden" - -msgid "Apply and Quit" -msgstr "Anwenden und schließen" - -msgid "Preview" -msgstr "Vorschau" - -msgid "Internal Error" -msgstr "Interner Fehler" - -msgid "Please enter or select a preset name first." -msgstr "Bitte geben Sie einen Namen ein, oder wählen Sie zuerst einen vordefinierten Namen aus." - -msgid "Preset" -msgstr "Voreinstellung" - -#, python-format -msgid "Preset \"%s\" not found." -msgstr "Einstellung \"%s\" nicht gefunden." - -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" -msgstr "Einstellung \"%s\" bereits vorhanden. Bitte verwenden Sie einen anderen Namen oder drücken Sie \"Überschreiben\"" - -msgid "Closing..." -msgstr "" - -msgid "It is safe to close this window now." -msgstr "" - -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." -msgstr "" - -msgid "Ink/Stitch Print" -msgstr "" - -msgid "Embroidery Simulation" -msgstr "Stick Simulation" - -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" -msgstr "AnalysiereLängeMitEinheiten: Unbekannte Einheit %s" - -#, python-format -msgid "Unknown unit: %s" -msgstr "Unbekannte Einheit: %s" - -msgid "No embroiderable paths selected." -msgstr "Keine zu stickenden Pfade ausgewählt." - -msgid "No embroiderable paths found in document." -msgstr "Keine zu stickenden Pfade im Dokument gefunden." - -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." -msgstr "Tipp: Verwende Pfad -> Objekt zu Pfad umwandeln, um nicht-Pfade vor dem Sticken zu konvertieren." - -msgid "Stitch Plan" -msgstr "" - msgid "Auto-Fill" msgstr "Auto-Füllung" @@ -181,7 +42,14 @@ msgid "Max stitch length" msgstr "Maximale Stichlänge" msgid "Inset" -msgstr "" +msgstr "Einzug" + +msgid "Expand" +msgstr "Erweitern" + +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" +msgstr "%(id)s beinhaltet mehr als einen Befehl vom Typ '%(command)s'" msgid "TRIM after" msgstr "Danach TRIM Befehl" @@ -258,6 +126,10 @@ msgstr "Zick-Zack Abstand (Spitze zu Spitze)" msgid "Inset amount (default: half of contour underlay inset)" msgstr "Einrückung (Standard: Halbe Einrückung der Konturunterlage)" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" +msgstr "Satinkolumne: %(id)s: es werden mindestens zwei Pfade benötigt (%(num)d gefunden)" + msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "Eine oder mehrere Konturen überschneiden sich, dies ist nicht erlaubt. Bitte in mehrere Satinkolumnen aufteilen." @@ -288,14 +160,150 @@ msgid "Repeats" msgstr "Wiederholungen" msgid "Manual stitch placement" -msgstr "" +msgstr "Manuelle Stichpositionierung" msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." -msgstr "" +msgstr "Stickt jeden Punkt des Pfades. Laufstichlänge und Zick-Zack-Abstand werden ignoriert." msgid "Legacy running stitch setting detected!\n\n" "It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." -msgstr "" +msgstr "Veraltete Laufstich-Einstellung erkannt!\n\n" +"Es sieht so aus, als ob für einen Laufstich eine Linie verwendet wurde, die schmaler als 0.5 Einheiten ist. Diese Methode ist veraltet. Bitte eine gestrichelte Linie für diesen Zweck benutzen. Die genaue Linienart spielt dabei keine Rolle, Hauptsache es ist keine durchgehende Linie." + +msgid "No embroiderable paths selected." +msgstr "Keine zu stickenden Pfade ausgewählt." + +msgid "No embroiderable paths found in document." +msgstr "Keine zu stickenden Pfade im Dokument gefunden." + +msgid "Tip: use Path -> Object to Path to convert non-paths." +msgstr "Tipp: Verwende Pfad -> Objekt zu Pfad umwandeln, um nicht-Pfade vor dem Sticken zu konvertieren." + +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgstr "\n\n" +" Sehen Sie eine Meldung \"keine solche Option\"? Zum beheben bitte Inkscape neu starten." + +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" +msgstr "Ink/Stitch kann Dateien (\"Erweiterungen\") installieren, um das Erstellen von Maschinenstickdateien unter Inkscape zu erleichtern. Diese Erweiterungen werden installiert:" + +msgid "thread manufacturer color palettes" +msgstr "Garnhersteller-Farbpaletten" + +msgid "Ink/Stitch visual commands (Object -> Symbols...)" +msgstr "Ink/Stitch visuelle Befehle (Objekt -> Symbole ...)" + +msgid "Install" +msgstr "Installieren" + +msgid "Cancel" +msgstr "Abbrechen" + +msgid "Choose Inkscape directory" +msgstr "Inkscape-Verzeichnis auswählen" + +msgid "Inkscape add-on installation failed" +msgstr "Installation der Inkscape Erweiterung gescheitert" + +msgid "Installation Failed" +msgstr "Installation fehlgeschlagen" + +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." +msgstr "Inkscape Add-ons wurden installiert. Bitte starten Sie Inkscape erneut um die neuen Add-ons zu laden." + +msgid "Installation Completed" +msgstr "Installation abgeschlossen" + +msgid "Ink/Stitch Add-ons Installer" +msgstr "Ink/Stitch Add-ons Installer" + +msgid "These settings will be applied to 1 object." +msgstr "Diese Einstellung wird auf 1 Objekt angewendet." + +#, python-format +msgid "These settings will be applied to %d objects." +msgstr "Diese Einstellungen werden auf %d Objekte angewendet." + +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgstr "Einige Einstellungen hatten unterschiedliche Werte der Objekte. Bitte einen Wert aus der Liste auswählen oder einen neuen Namen eingeben." + +#, python-format +msgid "Disabling this tab will disable the following %d tabs." +msgstr "Deaktivierung dieser Registerkarte, deaktiviert die folgenden %d Registerkarten." + +msgid "Disabling this tab will disable the following tab." +msgstr "Deaktivierung dieser Registerkarte, deaktiviert die folgende Registerkarte." + +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." +msgstr "Aktivierung dieser Registerkarte deaktiviert %s und umgekehrt." + +msgid "Inkscape objects" +msgstr "Inkscape Objekte" + +msgid "Embroidery Params" +msgstr "Stickparameter" + +msgid "Presets" +msgstr "Voreinstellungen" + +msgid "Load" +msgstr "Öffnen" + +msgid "Add" +msgstr "Hinzufügen" + +msgid "Overwrite" +msgstr "Überschreiben" + +msgid "Delete" +msgstr "Löschen" + +msgid "Use Last Settings" +msgstr "Letzte Einstellungen verwenden" + +msgid "Apply and Quit" +msgstr "Anwenden und schließen" + +msgid "Preview" +msgstr "Vorschau" + +msgid "Internal Error" +msgstr "Interner Fehler" + +msgid "Please enter or select a preset name first." +msgstr "Bitte geben Sie einen Namen ein, oder wählen Sie zuerst einen vordefinierten Namen aus." + +msgid "Preset" +msgstr "Voreinstellung" + +#, python-format +msgid "Preset \"%s\" not found." +msgstr "Einstellung \"%s\" nicht gefunden." + +#, python-format +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgstr "Einstellung \"%s\" bereits vorhanden. Bitte verwenden Sie einen anderen Namen oder drücken Sie \"Überschreiben\"" + +msgid "Closing..." +msgstr "Beende..." + +msgid "It is safe to close this window now." +msgstr "Es ist jetzt sicher, das Fenster zu schließen." + +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgstr "Eine Druckvorschau wurde im Webbrowser geöffnet. Dieses Fenster dient zur Sicherstellung der Kommunikation zwischen Inkscape und dem Browser.\n\n" +"Dieses Fenster schließt automatisch, wenn die Druckvorschau geschlossen wird. Es kann auch manuell beendet werden, falls nötig." + +msgid "Ink/Stitch Print" +msgstr "Ink/Stitch Drucken" + +msgid "Embroidery Simulation" +msgstr "Stick Simulation" + +msgid "No embroidery file formats selected." +msgstr "Keine Stick-Dateiformate ausgewählt." msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." msgstr "Automatische Füllung nicht möglich. Dies geschieht, weil Ihre Form aus mehreren und nicht verbundenen Abschnitten besteht." @@ -303,151 +311,162 @@ msgstr "Automatische Füllung nicht möglich. Dies geschieht, weil Ihre Form au msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "Unerwarteter Fehler beim Generieren der Füllstiche. Bitte senden Sie die SVG-Datei an lexelby@github." +msgid "Stitch Plan" +msgstr "Stich-Plan" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "AnalysiereLängeMitEinheiten: Unbekannte Einheit %s" + +#, python-format +msgid "Unknown unit: %s" +msgstr "Unbekannte Einheit: %s" + msgid "Color" -msgstr "" +msgstr "Farbe" msgid "rgb" -msgstr "" +msgstr "RGB" msgid "thread" -msgstr "" +msgstr "Garn" msgid "# stitches" -msgstr "" +msgstr "# Stiche" msgid "# stops" -msgstr "" +msgstr "# Stops" msgid "# trims" -msgstr "" +msgstr "# Trims" msgid "Page" -msgstr "" +msgstr "Seite" msgid "Click to choose another logo" -msgstr "" +msgstr "Klicken, um ein anderes Logo zu wählen" msgid "Enter job title..." -msgstr "" +msgstr "Titel eingeben..." msgid "CLIENT" -msgstr "" +msgstr "KUNDE" msgid "Enter client name..." -msgstr "" +msgstr "Name des Kunden eingeben..." msgid "PURCHASE ORDER #:" -msgstr "" +msgstr "AUFTRAGSNUMMER #:" msgid "Enter purchase order number..." -msgstr "" +msgstr "Auftragsnummer eingeben..." #, python-format msgid "%Y.%m.%d" -msgstr "" +msgstr "%d.%m.%Y" msgid "Thread Consumption" -msgstr "" +msgstr "Garnverbrauch" msgid "Stops and Trims" -msgstr "" +msgstr "Stops und Trims" msgid "Notes" -msgstr "" +msgstr "Notizen" msgid "Unique Colors" -msgstr "" +msgstr "Farben" msgid "Color Blocks" -msgstr "" +msgstr "Farbwechsel" msgid "Design box size" -msgstr "" +msgstr "Design Boxgröße" msgid "Total thread used" -msgstr "" +msgstr "Garnverbrauch gesamt" msgid "Total stitch count" -msgstr "" +msgstr "Gesamtstichanzahl" msgid "Total nr stops" -msgstr "" +msgstr "Stops gesamt" msgid "Total nr trims" -msgstr "" +msgstr "Gesamtzahl Trims" msgid "thread used" -msgstr "" +msgstr "Garnverbrauch" msgid "Enter operator notes..." -msgstr "" +msgstr "Bedienhinweise eingeben..." msgid "Job estimated time" -msgstr "" +msgstr "Voraussichtliche Dauer" msgid "Ctrl + Scroll to Zoom" -msgstr "" +msgstr "Strg + Scrollen zum Zoomen" msgid "Scale" -msgstr "" +msgstr "Maßstab" msgid "Fit" -msgstr "" +msgstr "An Fenstergröße anpassen" msgid "Apply to all" -msgstr "" +msgstr "Auf alle anwenden" msgid "COLOR" -msgstr "" +msgstr "FARBE" msgid "Estimated time" -msgstr "" +msgstr "Voraussichtliche Dauer" msgid "Client Signature" -msgstr "" +msgstr "Unterschrift Kunde" msgid "Ink/Stitch Print Preview" -msgstr "" +msgstr "Ink/Stitch Druckvorschau" msgid "Print" -msgstr "" +msgstr "Drucken" msgid "Settings" -msgstr "" +msgstr "Einstellungen" msgid "Close" -msgstr "" +msgstr "Schließen" msgid "âš lost connection to Ink/Stitch" -msgstr "" +msgstr "âš Verbindung zu Ink/Stich verloren" msgid "Page Setup" -msgstr "" +msgstr "Dokumenteinstellungen" msgid "Printing Size" -msgstr "" +msgstr "Papierformat" msgid "Print Layouts" -msgstr "" +msgstr "Druck-Layouts" msgid "Includes these Page Setup settings and also the icon." -msgstr "" +msgstr "Dies umfasst die Dokumenteinstellungen und das Logo." msgid "Save as defaults" -msgstr "" +msgstr "Als Standardeinstellung speichern" msgid "Design" -msgstr "" +msgstr "Design" msgid "Thread Palette" -msgstr "" +msgstr "Garnpalette" msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" -msgstr "" +msgstr "Bei einer Änderung der Garnpalette werden die Garnnamen und Bestellnummern neu berechnet. Vorherige Änderungen gehen dabei verloren. Soll die Aktion ausgeführt werden?" msgid "Yes" -msgstr "" +msgstr "Ja" msgid "No" -msgstr "" +msgstr "Nein" diff --git a/translations/messages_el_GR.po b/translations/messages_el_GR.po index 9a1660cd..e17f427e 100644 --- a/translations/messages_el_GR.po +++ b/translations/messages_el_GR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Greek\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: el_GR\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_en_US.po b/translations/messages_en_US.po index 358c2104..476f43bb 100644 --- a/translations/messages_en_US.po +++ b/translations/messages_en_US.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: English\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: en_US\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_es_ES.po b/translations/messages_es_ES.po index 1fcb7852..6b32f08c 100644 --- a/translations/messages_es_ES.po +++ b/translations/messages_es_ES.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:30-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:30\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: es_ES\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_fi_FI.po b/translations/messages_fi_FI.po index de37a111..ac05ac84 100644 --- a/translations/messages_fi_FI.po +++ b/translations/messages_fi_FI.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Finnish\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: fi_FI\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_fr_FR.po b/translations/messages_fr_FR.po index 39d7c464..59f6926f 100644 --- a/translations/messages_fr_FR.po +++ b/translations/messages_fr_FR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-05-05 21:28-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: French\n" "MIME-Version: 1.0\n" @@ -17,144 +17,6 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: fr_FR\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." -msgstr "Vous voyez un message 'aucune option' ? Veuillez redémarrer Inkscape pour corriger." - -msgid "Directory in which to install palettes:" -msgstr "" - -msgid "Choose another directory..." -msgstr "" - -msgid "Install" -msgstr "" - -msgid "Cancel" -msgstr "Quitter" - -msgid "Choose Inkscape palettes directory" -msgstr "" - -msgid "Thread palette installation failed" -msgstr "" - -msgid "Installation Failed" -msgstr "" - -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." -msgstr "" - -msgid "Installation Completed" -msgstr "" - -msgid "Ink/Stitch Thread Palette Installer" -msgstr "" - -msgid "These settings will be applied to 1 object." -msgstr "Ces paramètres seront appliqués à 1 objet." - -#, python-format -msgid "These settings will be applied to %d objects." -msgstr "Ces paramètres seront appliqués aux %d objets." - -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." -msgstr "Certains paramètres ont des valeurs différentes d'un objet à l'autre. Sélectionnez une valeur dans la liste déroulante ou entrez-en une nouvelle." - -#, python-format -msgid "Disabling this tab will disable the following %d tabs." -msgstr "La désactivation de cet onglet désactivera les onglets %d suivants." - -msgid "Disabling this tab will disable the following tab." -msgstr "La désactivation de cet onglet désactivera l'onglet suivant." - -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." -msgstr "Activer cet onglet désactivera %s et vice-versa." - -msgid "Inkscape objects" -msgstr "Objets Inkscape" - -msgid "Embroidery Params" -msgstr "Paramètres de broderie" - -msgid "Presets" -msgstr "Présélection" - -msgid "Load" -msgstr "Charger" - -msgid "Add" -msgstr "Ajouter" - -msgid "Overwrite" -msgstr "Écraser" - -msgid "Delete" -msgstr "Effacer" - -msgid "Use Last Settings" -msgstr "Utiliser les derniers paramètres" - -msgid "Apply and Quit" -msgstr "Appliquer et Quitter" - -msgid "Preview" -msgstr "Aperçu" - -msgid "Internal Error" -msgstr "Erreur interne" - -msgid "Please enter or select a preset name first." -msgstr "Veuillez entrer ou sélectionner un nom prédéfini en premier." - -msgid "Preset" -msgstr "Préréglage" - -#, python-format -msgid "Preset \"%s\" not found." -msgstr "Le préréglage \"%s\" n'a pas été trouvé." - -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" -msgstr "Le préréglage \"%s\" existe déjà . Veuillez utiliser un autre nom ou appuyez sur \"Écraser\"" - -msgid "Closing..." -msgstr "" - -msgid "It is safe to close this window now." -msgstr "" - -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." -msgstr "Un aperçu avant impression a été ouvert dans votre navigateur web. Cette fenêtre reste ouverte pour communiquer avec le code JavaScript s’exécutant dans votre navigateur. Cette fenêtre se fermera après avoir fermer l’aperçu avant impression dans le navigateur, vous pouvez la fermer manuellement si nécessaire." - -msgid "Ink/Stitch Print" -msgstr "Imprimer Ink/Stitch" - -msgid "Embroidery Simulation" -msgstr "Simulation de broderie" - -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" -msgstr "analyser Longueur avec Unités: unité inconnue %s" - -#, python-format -msgid "Unknown unit: %s" -msgstr "Unité inconnue: %s" - -msgid "No embroiderable paths selected." -msgstr "Aucun chemin brodable sélectionné." - -msgid "No embroiderable paths found in document." -msgstr "Aucun chemin brodable trouvé dans le document." - -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." -msgstr "Astuce: utilisez Path -> Object to Path pour convertir les non-chemins avant de broder." - -msgid "Stitch Plan" -msgstr "" - msgid "Auto-Fill" msgstr "Remplissage automatique" @@ -180,6 +42,13 @@ msgid "Max stitch length" msgstr "Longueur de point maximal" msgid "Inset" +msgstr "Incrustation" + +msgid "Expand" +msgstr "Elargir" + +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" msgid "TRIM after" @@ -204,7 +73,7 @@ msgid "Angle of lines of stitches" msgstr "Angle des lignes de points" msgid "Flip fill (start right-to-left)" -msgstr "" +msgstr "Invertir remplissage (début droite vers la gauche)" msgid "Spacing between rows" msgstr "Espacement entre les lignes" @@ -225,7 +94,7 @@ msgid "Zig-zag spacing (peak-to-peak)" msgstr "Espacement Zig-Zag (crête à crête)" msgid "Pull compensation" -msgstr "" +msgstr "Compensation d'étirement" msgid "Contour underlay" msgstr "Sous-couche de contour" @@ -237,7 +106,7 @@ msgid "Stitch length" msgstr "Longueur de point" msgid "Contour underlay inset amount" -msgstr "" +msgstr "Montant de l'incrustation de la sous-couche de contour" msgid "Center-walk underlay" msgstr "Sous-couche de marche centrale" @@ -257,6 +126,10 @@ msgstr "Espacement Zig-Zag (crête à crête)" msgid "Inset amount (default: half of contour underlay inset)" msgstr "Montant de l'incrustation (par défaut: la moitié de l'incrustation de sous-couche de contour)" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" +msgstr "colonne satinée : %(id)s: au moins deux sous-tracés requis (%(num)d trouvés)" + msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "Un ou plusieurs rails se croisent, ce qui n'est pas autorisé. S'il vous plaît diviser en plusieurs colonnes de satin." @@ -287,13 +160,146 @@ msgid "Repeats" msgstr "répétez" msgid "Manual stitch placement" -msgstr "" +msgstr "Placement manuel de points" msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." -msgstr "" +msgstr "Broder chaque nÅ“ud dans le tracé. La longueur de points et l’espacement du zig-zag sont ignorés." msgid "Legacy running stitch setting detected!\n\n" "It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgstr "Détection d'une définition obsolète de point droit ! Il semble que vous utilisez une largeur inférieure à 0,5 unités pour indiquer un point droit, qui est obsolète. Au lieu de cela, veuillez configurer votre tracé avec des pointillés. N’importe quel genre de trait fonctionne." + +msgid "No embroiderable paths selected." +msgstr "Aucun chemin brodable sélectionné." + +msgid "No embroiderable paths found in document." +msgstr "Aucun chemin brodable trouvé dans le document." + +msgid "Tip: use Path -> Object to Path to convert non-paths." +msgstr "" + +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgstr "Vous voyez un message 'aucune option' ? Veuillez redémarrer Inkscape pour corriger." + +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" +msgstr "" + +msgid "thread manufacturer color palettes" +msgstr "" + +msgid "Ink/Stitch visual commands (Object -> Symbols...)" +msgstr "" + +msgid "Install" +msgstr "" + +msgid "Cancel" +msgstr "Quitter" + +msgid "Choose Inkscape directory" +msgstr "" + +msgid "Inkscape add-on installation failed" +msgstr "" + +msgid "Installation Failed" +msgstr "" + +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." +msgstr "" + +msgid "Installation Completed" +msgstr "" + +msgid "Ink/Stitch Add-ons Installer" +msgstr "" + +msgid "These settings will be applied to 1 object." +msgstr "Ces paramètres seront appliqués à 1 objet." + +#, python-format +msgid "These settings will be applied to %d objects." +msgstr "Ces paramètres seront appliqués aux %d objets." + +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgstr "Certains paramètres ont des valeurs différentes d'un objet à l'autre. Sélectionnez une valeur dans la liste déroulante ou entrez-en une nouvelle." + +#, python-format +msgid "Disabling this tab will disable the following %d tabs." +msgstr "La désactivation de cet onglet désactivera les onglets %d suivants." + +msgid "Disabling this tab will disable the following tab." +msgstr "La désactivation de cet onglet désactivera l'onglet suivant." + +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." +msgstr "Activer cet onglet désactivera %s et vice-versa." + +msgid "Inkscape objects" +msgstr "Objets Inkscape" + +msgid "Embroidery Params" +msgstr "Paramètres de broderie" + +msgid "Presets" +msgstr "Présélection" + +msgid "Load" +msgstr "Charger" + +msgid "Add" +msgstr "Ajouter" + +msgid "Overwrite" +msgstr "Écraser" + +msgid "Delete" +msgstr "Effacer" + +msgid "Use Last Settings" +msgstr "Utiliser les derniers paramètres" + +msgid "Apply and Quit" +msgstr "Appliquer et Quitter" + +msgid "Preview" +msgstr "Aperçu" + +msgid "Internal Error" +msgstr "Erreur interne" + +msgid "Please enter or select a preset name first." +msgstr "Veuillez entrer ou sélectionner un nom prédéfini en premier." + +msgid "Preset" +msgstr "Préréglage" + +#, python-format +msgid "Preset \"%s\" not found." +msgstr "Le préréglage \"%s\" n'a pas été trouvé." + +#, python-format +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgstr "Le préréglage \"%s\" existe déjà . Veuillez utiliser un autre nom ou appuyez sur \"Écraser\"" + +msgid "Closing..." +msgstr "" + +msgid "It is safe to close this window now." +msgstr "" + +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgstr "Un aperçu avant impression a été ouvert dans votre navigateur web. Cette fenêtre reste ouverte pour communiquer avec le code JavaScript s’exécutant dans votre navigateur. Cette fenêtre se fermera après avoir fermer l’aperçu avant impression dans le navigateur, vous pouvez la fermer manuellement si nécessaire." + +msgid "Ink/Stitch Print" +msgstr "Imprimer Ink/Stitch" + +msgid "Embroidery Simulation" +msgstr "Simulation de broderie" + +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "Impossible de remplir automatiquement. Cela arrive le plus souvent parce msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "Erreur inattendue lors de la génération des points de remplissage. Veuillez envoyer votre fichier SVG à lexelby@github." +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "analyser Longueur avec Unités: unité inconnue %s" + +#, python-format +msgid "Unknown unit: %s" +msgstr "Unité inconnue: %s" + msgid "Color" msgstr "Couleur" diff --git a/translations/messages_he_IL.po b/translations/messages_he_IL.po index f43f7732..262214e2 100644 --- a/translations/messages_he_IL.po +++ b/translations/messages_he_IL.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: he_IL\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_hu_HU.po b/translations/messages_hu_HU.po index c850e14c..3f520c3e 100644 --- a/translations/messages_hu_HU.po +++ b/translations/messages_hu_HU.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Hungarian\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: hu_HU\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_it_IT.po b/translations/messages_it_IT.po index 0ee67143..029ccd9c 100644 --- a/translations/messages_it_IT.po +++ b/translations/messages_it_IT.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Italian\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: it_IT\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_ja_JP.po b/translations/messages_ja_JP.po index 09f2bde6..9f2cec04 100644 --- a/translations/messages_ja_JP.po +++ b/translations/messages_ja_JP.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:30-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:30\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: ja_JP\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_ko_KR.po b/translations/messages_ko_KR.po index 61c09404..58665e79 100644 --- a/translations/messages_ko_KR.po +++ b/translations/messages_ko_KR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: ko_KR\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_nl_NL.po b/translations/messages_nl_NL.po index d14ddfc7..cc6c33e9 100644 --- a/translations/messages_nl_NL.po +++ b/translations/messages_nl_NL.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Dutch\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: nl_NL\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_no_NO.po b/translations/messages_no_NO.po index 7b223cd2..c29555c3 100644 --- a/translations/messages_no_NO.po +++ b/translations/messages_no_NO.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Norwegian\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: no_NO\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_pl_PL.po b/translations/messages_pl_PL.po index 17e869d9..05a23de3 100644 --- a/translations/messages_pl_PL.po +++ b/translations/messages_pl_PL.po @@ -2,298 +2,304 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Polish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.3\n" -"Plural-Forms: nplurals=4; plural=((n == 1) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || n%10 == 1 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 12 && n%100 <= 14)) ? 2 : 3));\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" "X-Generator: crowdin.com\n" "X-Crowdin-Project: inkstitch\n" "X-Crowdin-Language: pl\n" "X-Crowdin-File: /master/messages.po\n" "Language: pl_PL\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_pt_BR.po b/translations/messages_pt_BR.po index 43d4226a..5985473c 100644 --- a/translations/messages_pt_BR.po +++ b/translations/messages_pt_BR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:30\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Portuguese, Brazilian\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: pt_BR\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_pt_PT.po b/translations/messages_pt_PT.po index 29970744..8a88974f 100644 --- a/translations/messages_pt_PT.po +++ b/translations/messages_pt_PT.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-30 12:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Portuguese\n" "MIME-Version: 1.0\n" @@ -17,144 +17,6 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: pt_PT\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." -msgstr "Vê uma mensagem \"não existe tal opção\"? Por favor reiniciar o Inkscape." - -msgid "Directory in which to install palettes:" -msgstr "Pasta na qual instalar 'palettes':" - -msgid "Choose another directory..." -msgstr "Escolha outra pasta..." - -msgid "Install" -msgstr "Instalar" - -msgid "Cancel" -msgstr "Cancelar" - -msgid "Choose Inkscape palettes directory" -msgstr "Escolha o directório de 'palette's do Inkscape" - -msgid "Thread palette installation failed" -msgstr "" - -msgid "Installation Failed" -msgstr "Instalação falhou" - -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." -msgstr "" - -msgid "Installation Completed" -msgstr "Instalação concluÃda" - -msgid "Ink/Stitch Thread Palette Installer" -msgstr "" - -msgid "These settings will be applied to 1 object." -msgstr "Definições serão aplicadas a 1 objecto." - -#, python-format -msgid "These settings will be applied to %d objects." -msgstr "Definições serão aplicadas a %d objectos." - -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." -msgstr "Algumas definições com valores diferentes entre objectos. Seleccione um valor da lista ou digite novo valor." - -#, python-format -msgid "Disabling this tab will disable the following %d tabs." -msgstr "Desactivar esta aba desactivará as seguintes %d abas." - -msgid "Disabling this tab will disable the following tab." -msgstr "Desactivar esta aba desactivará a seguinte aba." - -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." -msgstr "Activar esta aba desactivará %s e vice-versa." - -msgid "Inkscape objects" -msgstr "Objectos do Inkscape" - -msgid "Embroidery Params" -msgstr "Parametros de Bordado" - -msgid "Presets" -msgstr "Pré-definições" - -msgid "Load" -msgstr "Carregar" - -msgid "Add" -msgstr "Adicionar" - -msgid "Overwrite" -msgstr "Substituir" - -msgid "Delete" -msgstr "Eliminar" - -msgid "Use Last Settings" -msgstr "Usar ultimas definições" - -msgid "Apply and Quit" -msgstr "Aplicar e Sair" - -msgid "Preview" -msgstr "Pré-visualização" - -msgid "Internal Error" -msgstr "Erro Interno" - -msgid "Please enter or select a preset name first." -msgstr "Seleccione ou insira uma pré-definição primeiro." - -msgid "Preset" -msgstr "Pré-definição" - -#, python-format -msgid "Preset \"%s\" not found." -msgstr "Pré-definição \"%s\" não encontrada." - -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" -msgstr "Pré-definição \"%s\" já existe. Use outro nome ou clique \"Substituir\"" - -msgid "Closing..." -msgstr "A fechar..." - -msgid "It is safe to close this window now." -msgstr "É agora seguro fechar esta janela." - -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." -msgstr "" - -msgid "Ink/Stitch Print" -msgstr "" - -msgid "Embroidery Simulation" -msgstr "Simulação de Bordado" - -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" -msgstr "parseLengthWithUnits: Unidade desconhecida %s" - -#, python-format -msgid "Unknown unit: %s" -msgstr "Unidade desconhecida: %s" - -msgid "No embroiderable paths selected." -msgstr "Nenhum caminho bordável seleccionado." - -msgid "No embroiderable paths found in document." -msgstr "Nenhum caminho bordável encontrado no documento." - -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." -msgstr "Dica: Use opção -> Object to Path para converter objectos em caminhos antes de bordar." - -msgid "Stitch Plan" -msgstr "Plano de pontos/bordado" - msgid "Auto-Fill" msgstr "Auto-preenchimento" @@ -182,6 +44,13 @@ msgstr "Distância máxima de ponto" msgid "Inset" msgstr "" +msgid "Expand" +msgstr "" + +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" +msgstr "" + msgid "TRIM after" msgstr "Cortar a seguir \"TRIM\"" @@ -257,6 +126,10 @@ msgstr "Espaçamento Zig-zag (crista-a-crista)" msgid "Inset amount (default: half of contour underlay inset)" msgstr "Quantidade de offset interior (valor por omissão: Metade do offset interior da sub-camada de contorno)" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" +msgstr "" + msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "Operação não permitida: Um ou mais caminhos intersectam-se a eles mesmos. Dividida o matiz em várias colunas." @@ -296,12 +169,156 @@ msgid "Legacy running stitch setting detected!\n\n" "It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" +msgid "No embroiderable paths selected." +msgstr "Nenhum caminho bordável seleccionado." + +msgid "No embroiderable paths found in document." +msgstr "Nenhum caminho bordável encontrado no documento." + +msgid "Tip: use Path -> Object to Path to convert non-paths." +msgstr "" + +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgstr "Vê uma mensagem \"não existe tal opção\"? Por favor reiniciar o Inkscape." + +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" +msgstr "" + +msgid "thread manufacturer color palettes" +msgstr "" + +msgid "Ink/Stitch visual commands (Object -> Symbols...)" +msgstr "" + +msgid "Install" +msgstr "Instalar" + +msgid "Cancel" +msgstr "Cancelar" + +msgid "Choose Inkscape directory" +msgstr "" + +msgid "Inkscape add-on installation failed" +msgstr "" + +msgid "Installation Failed" +msgstr "Instalação falhou" + +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." +msgstr "" + +msgid "Installation Completed" +msgstr "Instalação concluÃda" + +msgid "Ink/Stitch Add-ons Installer" +msgstr "" + +msgid "These settings will be applied to 1 object." +msgstr "Definições serão aplicadas a 1 objecto." + +#, python-format +msgid "These settings will be applied to %d objects." +msgstr "Definições serão aplicadas a %d objectos." + +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgstr "Algumas definições com valores diferentes entre objectos. Seleccione um valor da lista ou digite novo valor." + +#, python-format +msgid "Disabling this tab will disable the following %d tabs." +msgstr "Desactivar esta aba desactivará as seguintes %d abas." + +msgid "Disabling this tab will disable the following tab." +msgstr "Desactivar esta aba desactivará a seguinte aba." + +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." +msgstr "Activar esta aba desactivará %s e vice-versa." + +msgid "Inkscape objects" +msgstr "Objectos do Inkscape" + +msgid "Embroidery Params" +msgstr "Parametros de Bordado" + +msgid "Presets" +msgstr "Pré-definições" + +msgid "Load" +msgstr "Carregar" + +msgid "Add" +msgstr "Adicionar" + +msgid "Overwrite" +msgstr "Substituir" + +msgid "Delete" +msgstr "Eliminar" + +msgid "Use Last Settings" +msgstr "Usar ultimas definições" + +msgid "Apply and Quit" +msgstr "Aplicar e Sair" + +msgid "Preview" +msgstr "Pré-visualização" + +msgid "Internal Error" +msgstr "Erro Interno" + +msgid "Please enter or select a preset name first." +msgstr "Seleccione ou insira uma pré-definição primeiro." + +msgid "Preset" +msgstr "Pré-definição" + +#, python-format +msgid "Preset \"%s\" not found." +msgstr "Pré-definição \"%s\" não encontrada." + +#, python-format +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgstr "Pré-definição \"%s\" já existe. Use outro nome ou clique \"Substituir\"" + +msgid "Closing..." +msgstr "A fechar..." + +msgid "It is safe to close this window now." +msgstr "É agora seguro fechar esta janela." + +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgstr "" + +msgid "Ink/Stitch Print" +msgstr "" + +msgid "Embroidery Simulation" +msgstr "Simulação de Bordado" + +msgid "No embroidery file formats selected." +msgstr "" + msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." msgstr "Enchimento automático falhou. Verificar se a forma não é composta por múltiplas desconectadas." msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "Erro inesperado ao gerar pontos de enchimento. Por favor envie o seu SVG para lexelby@github." +msgid "Stitch Plan" +msgstr "Plano de pontos/bordado" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "parseLengthWithUnits: Unidade desconhecida %s" + +#, python-format +msgid "Unknown unit: %s" +msgstr "Unidade desconhecida: %s" + msgid "Color" msgstr "Cor" diff --git a/translations/messages_ro_RO.po b/translations/messages_ro_RO.po index f58a3f5b..954ad8ee 100644 --- a/translations/messages_ro_RO.po +++ b/translations/messages_ro_RO.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:30-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:30\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: ro_RO\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_ru_RU.po b/translations/messages_ru_RU.po index b9a9ea3e..c6528ab3 100644 --- a/translations/messages_ru_RU.po +++ b/translations/messages_ru_RU.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:30-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:30\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: ru_RU\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" -msgstr "Отмена" - -msgid "Choose Inkscape palettes directory" +msgid "AutoFill Underlay" msgstr "" -msgid "Thread palette installation failed" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Installation Failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Max stitch length" msgstr "" -msgid "Installation Completed" +msgid "Inset" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +msgid "Expand" msgstr "" -msgid "These settings will be applied to 1 object." +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "TRIM after" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "STOP after" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Fill" msgstr "" -msgid "Inkscape objects" +msgid "Manually routed fill stitching" msgstr "" -msgid "Embroidery Params" +msgid "Angle of lines of stitches" msgstr "" -msgid "Presets" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Load" +msgid "Spacing between rows" msgstr "" -msgid "Add" +msgid "Maximum fill stitch length" msgstr "" -msgid "Overwrite" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Delete" -msgstr "Удалить" +msgid "Satin Column" +msgstr "" -msgid "Use Last Settings" +msgid "Custom satin column" msgstr "" -msgid "Apply and Quit" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Preview" +msgid "Pull compensation" msgstr "" -msgid "Internal Error" +msgid "Contour underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Contour Underlay" msgstr "" -msgid "Preset" +msgid "Stitch length" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-walk underlay" msgstr "" -msgid "Closing..." +msgid "Center-Walk Underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-zag Underlay" msgstr "" -msgid "Ink/Stitch Print" +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Embroidery Simulation" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" #, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -msgid "No embroiderable paths selected." +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths found in document." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Auto-Fill" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Satin stitch along paths" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Running stitch length" msgstr "" -msgid "Underlay" +msgid "Repeats" msgstr "" -msgid "AutoFill Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths selected." msgstr "" -msgid "Inset" +msgid "No embroiderable paths found in document." msgstr "" -msgid "TRIM after" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "STOP after" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Fill" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Manually routed fill stitching" +msgid "Install" msgstr "" -msgid "Angle of lines of stitches" +msgid "Cancel" +msgstr "Отмена" + +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" +msgstr "Удалить" + +msgid "Use Last Settings" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Apply and Quit" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Preview" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Internal Error" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_sr_SP.po b/translations/messages_sr_SP.po index 366f9b75..3e584f64 100644 --- a/translations/messages_sr_SP.po +++ b/translations/messages_sr_SP.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:30-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:30\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Serbian (Cyrillic)\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: sr_SP\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_sv_SE.po b/translations/messages_sv_SE.po index ee57bf54..dc0da754 100644 --- a/translations/messages_sv_SE.po +++ b/translations/messages_sv_SE.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:30-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:30\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Swedish\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: sv_SE\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_tr_TR.po b/translations/messages_tr_TR.po index dcfd1474..20d24b05 100644 --- a/translations/messages_tr_TR.po +++ b/translations/messages_tr_TR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:30-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:30\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: tr_TR\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_uk_UA.po b/translations/messages_uk_UA.po index fc39461c..24a74d9b 100644 --- a/translations/messages_uk_UA.po +++ b/translations/messages_uk_UA.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:30-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:30\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Ukrainian\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: uk_UA\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_vi_VN.po b/translations/messages_vi_VN.po index 437cbf2c..c1dbee0a 100644 --- a/translations/messages_vi_VN.po +++ b/translations/messages_vi_VN.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Vietnamese\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: vi_VN\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_zh_CN.po b/translations/messages_zh_CN.po index 0137660c..ec2b938f 100644 --- a/translations/messages_zh_CN.po +++ b/translations/messages_zh_CN.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Chinese Simplified\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: zh_CN\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" diff --git a/translations/messages_zh_TW.po b/translations/messages_zh_TW.po index 83e10747..f2ebb5e6 100644 --- a/translations/messages_zh_TW.po +++ b/translations/messages_zh_TW.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-04-29 21:29-0400\n" -"PO-Revision-Date: 2018-04-29 21:31-0400\n" +"POT-Creation-Date: 2018-06-28 20:32-0400\n" +"PO-Revision-Date: 2018-06-30 01:31\n" "Last-Translator: lexelby <github.com@lexneva.name>\n" "Language-Team: Chinese Traditional\n" "MIME-Version: 1.0\n" @@ -17,283 +17,289 @@ msgstr "" "X-Crowdin-File: /master/messages.po\n" "Language: zh_TW\n" -msgid "\n\n" -"Seeing a 'no such option' message? Please restart Inkscape to fix." +msgid "Auto-Fill" msgstr "" -msgid "Directory in which to install palettes:" +msgid "Automatically routed fill stitching" msgstr "" -msgid "Choose another directory..." +msgid "Running stitch length (traversal between sections)" msgstr "" -msgid "Install" +msgid "Underlay" msgstr "" -msgid "Cancel" +msgid "AutoFill Underlay" msgstr "" -msgid "Choose Inkscape palettes directory" +msgid "Fill angle (default: fill angle + 90 deg)" msgstr "" -msgid "Thread palette installation failed" +msgid "Row spacing (default: 3x fill row spacing)" msgstr "" -msgid "Installation Failed" +msgid "Max stitch length" msgstr "" -msgid "Thread palette files have been installed. Please restart Inkscape to load the new palettes." +msgid "Inset" msgstr "" -msgid "Installation Completed" +msgid "Expand" msgstr "" -msgid "Ink/Stitch Thread Palette Installer" +#, python-format +msgid "%(id)s has more than one command of type '%(command)s' linked to it" msgstr "" -msgid "These settings will be applied to 1 object." +msgid "TRIM after" msgstr "" -#, python-format -msgid "These settings will be applied to %d objects." +msgid "Trim thread after this object (for supported machines and file formats)" msgstr "" -msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." +msgid "STOP after" msgstr "" -#, python-format -msgid "Disabling this tab will disable the following %d tabs." +msgid "Add STOP instruction after this object (for supported machines and file formats)" msgstr "" -msgid "Disabling this tab will disable the following tab." +msgid "Fill" msgstr "" -#, python-format -msgid "Enabling this tab will disable %s and vice-versa." +msgid "Manually routed fill stitching" msgstr "" -msgid "Inkscape objects" +msgid "Angle of lines of stitches" msgstr "" -msgid "Embroidery Params" +msgid "Flip fill (start right-to-left)" msgstr "" -msgid "Presets" +msgid "Spacing between rows" msgstr "" -msgid "Load" +msgid "Maximum fill stitch length" msgstr "" -msgid "Add" +msgid "Stagger rows this many times before repeating" msgstr "" -msgid "Overwrite" +msgid "Satin Column" msgstr "" -msgid "Delete" +msgid "Custom satin column" msgstr "" -msgid "Use Last Settings" +msgid "Zig-zag spacing (peak-to-peak)" msgstr "" -msgid "Apply and Quit" +msgid "Pull compensation" msgstr "" -msgid "Preview" +msgid "Contour underlay" msgstr "" -msgid "Internal Error" +msgid "Contour Underlay" msgstr "" -msgid "Please enter or select a preset name first." +msgid "Stitch length" msgstr "" -msgid "Preset" +msgid "Contour underlay inset amount" msgstr "" -#, python-format -msgid "Preset \"%s\" not found." +msgid "Center-walk underlay" msgstr "" -#, python-format -msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" +msgid "Center-Walk Underlay" msgstr "" -msgid "Closing..." +msgid "Zig-zag underlay" msgstr "" -msgid "It is safe to close this window now." +msgid "Zig-zag Underlay" msgstr "" -msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" -"This window will close after you close the print preview in your browser, or you can close it manually if necessary." +msgid "Zig-Zag spacing (peak-to-peak)" msgstr "" -msgid "Ink/Stitch Print" +msgid "Inset amount (default: half of contour underlay inset)" msgstr "" -msgid "Embroidery Simulation" +#, python-format +msgid "satin column: %(id)s: at least two subpaths required (%(num)d found)" msgstr "" -#, python-format -msgid "parseLengthWithUnits: unknown unit %s" +msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." msgstr "" -#, python-format -msgid "Unknown unit: %s" +msgid "satin column: One or more of the rungs doesn't intersect both rails." msgstr "" -msgid "No embroiderable paths selected." +msgid "Each rail should intersect both rungs once." msgstr "" -msgid "No embroiderable paths found in document." +msgid "satin column: One or more of the rungs intersects the rails more than once." msgstr "" -msgid "Tip: use Path -> Object to Path to convert non-paths before embroidering." +#, python-format +msgid "satin column: object %s has a fill (but should not)" msgstr "" -msgid "Stitch Plan" +#, python-format +msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" msgstr "" -msgid "Auto-Fill" +msgid "Satin stitch along paths" msgstr "" -msgid "Automatically routed fill stitching" +msgid "Running stitch length" msgstr "" -msgid "Running stitch length (traversal between sections)" +msgid "Repeats" msgstr "" -msgid "Underlay" +msgid "Manual stitch placement" msgstr "" -msgid "AutoFill Underlay" +msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." msgstr "" -msgid "Fill angle (default: fill angle + 90 deg)" +msgid "Legacy running stitch setting detected!\n\n" +"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." msgstr "" -msgid "Row spacing (default: 3x fill row spacing)" +msgid "No embroiderable paths selected." msgstr "" -msgid "Max stitch length" +msgid "No embroiderable paths found in document." msgstr "" -msgid "Inset" +msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" -msgid "TRIM after" +msgid "\n\n" +"Seeing a 'no such option' message? Please restart Inkscape to fix." msgstr "" -msgid "Trim thread after this object (for supported machines and file formats)" +msgid "Ink/Stitch can install files (\"add-ons\") that make it easier to use Inkscape to create machine embroidery designs. These add-ons will be installed:" msgstr "" -msgid "STOP after" +msgid "thread manufacturer color palettes" msgstr "" -msgid "Add STOP instruction after this object (for supported machines and file formats)" +msgid "Ink/Stitch visual commands (Object -> Symbols...)" msgstr "" -msgid "Fill" +msgid "Install" msgstr "" -msgid "Manually routed fill stitching" +msgid "Cancel" msgstr "" -msgid "Angle of lines of stitches" +msgid "Choose Inkscape directory" msgstr "" -msgid "Flip fill (start right-to-left)" +msgid "Inkscape add-on installation failed" msgstr "" -msgid "Spacing between rows" +msgid "Installation Failed" msgstr "" -msgid "Maximum fill stitch length" +msgid "Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons." msgstr "" -msgid "Stagger rows this many times before repeating" +msgid "Installation Completed" msgstr "" -msgid "Satin Column" +msgid "Ink/Stitch Add-ons Installer" msgstr "" -msgid "Custom satin column" +msgid "These settings will be applied to 1 object." msgstr "" -msgid "Zig-zag spacing (peak-to-peak)" +#, python-format +msgid "These settings will be applied to %d objects." msgstr "" -msgid "Pull compensation" +msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one." msgstr "" -msgid "Contour underlay" +#, python-format +msgid "Disabling this tab will disable the following %d tabs." msgstr "" -msgid "Contour Underlay" +msgid "Disabling this tab will disable the following tab." msgstr "" -msgid "Stitch length" +#, python-format +msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -msgid "Contour underlay inset amount" +msgid "Inkscape objects" msgstr "" -msgid "Center-walk underlay" +msgid "Embroidery Params" msgstr "" -msgid "Center-Walk Underlay" +msgid "Presets" msgstr "" -msgid "Zig-zag underlay" +msgid "Load" msgstr "" -msgid "Zig-zag Underlay" +msgid "Add" msgstr "" -msgid "Zig-Zag spacing (peak-to-peak)" +msgid "Overwrite" msgstr "" -msgid "Inset amount (default: half of contour underlay inset)" +msgid "Delete" msgstr "" -msgid "One or more rails crosses itself, and this is not allowed. Please split into multiple satin columns." +msgid "Use Last Settings" msgstr "" -msgid "satin column: One or more of the rungs doesn't intersect both rails." +msgid "Apply and Quit" msgstr "" -msgid "Each rail should intersect both rungs once." +msgid "Preview" msgstr "" -msgid "satin column: One or more of the rungs intersects the rails more than once." +msgid "Internal Error" +msgstr "" + +msgid "Please enter or select a preset name first." +msgstr "" + +msgid "Preset" msgstr "" #, python-format -msgid "satin column: object %s has a fill (but should not)" +msgid "Preset \"%s\" not found." msgstr "" #, python-format -msgid "satin column: object %(id)s has two paths with an unequal number of points (%(length1)d and %(length2)d)" +msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\"" msgstr "" -msgid "Satin stitch along paths" +msgid "Closing..." msgstr "" -msgid "Running stitch length" +msgid "It is safe to close this window now." msgstr "" -msgid "Repeats" +msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n" +"This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -msgid "Manual stitch placement" +msgid "Ink/Stitch Print" msgstr "" -msgid "Stitch every node in the path. Stitch length and zig-zag spacing are ignored." +msgid "Embroidery Simulation" msgstr "" -msgid "Legacy running stitch setting detected!\n\n" -"It looks like you're using a stroke smaller than 0.5 units to indicate a running stitch, which is deprecated. Instead, please set your stroke to be dashed to indicate running stitch. Any kind of dash will work." +msgid "No embroidery file formats selected." msgstr "" msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected." @@ -302,6 +308,17 @@ msgstr "" msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." msgstr "" +msgid "Stitch Plan" +msgstr "" + +#, python-format +msgid "parseLengthWithUnits: unknown unit %s" +msgstr "" + +#, python-format +msgid "Unknown unit: %s" +msgstr "" + msgid "Color" msgstr "" |
