Inkscape for embroidery
by Michael Soegtrop
Dear Inkscape Developers,
I added a few features to Inkscape for use in embroidery, because the
commercial tools available don't offer the artistic flexibility I want.
I would like to have your opinion on if you think it makes sense to
integrate such functionality into the Inkscape mainline, or if it would
be too much of a stretch. It boils down to some LPEs and an export
format. The commercial tool I have from Bernina (a Swiss sewing machine
manufacturer) is based on Corel Draw.
Below is a list of the additions I did / I am working on.
Please let me know what you think about this. With these additions,
Inkscape offers substantially more flexibility than affordable
commercial SW (and affordable here means 500..1000$).
Best regards,
Michael
1.) Ways to fill an area with clusters of contours
Inkscape already offers 2 path interpolation LPEs which allow this. I
plan to add a 3rd one which creates a set of equidistant inset/outset paths.
2.) A way to connect sub path of a path into one continuous path
I added an LPE to do this with various options of end interpolation.
Maybe if I use bool-ops I need to extend it with some sort of sorting,
cutting and auto reversing mechanism to keep the connections short.
3.) A way to cut a path into stitches (straight line segments) in a
controlled way.
I added an LPE to do this, but it is quite primitive as yet.
4.) Bool ops on paths because in embroidery you cannot simply hide an
object below another one.
I just added a bool-op LPE for this - needs some additional work to cut
contours against a closed path.
5.) A tool to convert graphics output to some format an embroidery /
sewing machines can read.
I wrote an external tool to convert HPGL to a common embroidery format
(stitch/DST), but could also integrate this into Inkscape.
6.) Maybe a tool to hide connections between path segments below filled
areas. For a sewing machine it is quite complicated to do a "pen up" -
it has to cut the threads, so one typically hides connection paths below
some embroidery to avoid thread cutting.
Currently I do this semi-manually. Doing this automatically might be
quite complicated.
6 years, 10 months
performance problems and possible remedies?
by Yale Zhang
Hi. I'm using Inkscape to author a comic and the slow speed for certain
things is very annoying. I'm already have OpenMP turned on and using 4
cores.
1. *large blurs are slow* - I'm an expert with writing SIMD code, so I was
thinking about vectorizing the Gaussian IIR filter with SIMD intrinsics,
even though it's harder than for a FIR. But I noticed there isn't any SIMD
code in Inkscape so does that mean it's something to avoid.
I'm pretty sure no current compiler is smart enough to vectorize it, and
besides, Inkscape is compiled with -O2, meaning -ftree-vectorize isn't on
by default.
2. *when there's a large image (raster based) background - scrolling in a
zoomed region is very slow*
I compiled the latest 0.49 code with GCC profiling and it shows this:
33.98 22.47 22.47 exp2l
21.29 36.55 14.08 log2l
17.57 48.17 11.62 pow
7.12 52.88 4.71 658 0.01 0.01
ink_cairo_surface_srgb_to_linear(_cairo_surface*)
6.72 57.32 4.44 563 0.01 0.01
ink_cairo_surface_linear_to_srgb(_cairo_surface*)
5.51 60.96 3.64 1216 0.00 0.00
Inkscape::Filters::FilterGaussian::~FilterGaussian()
5.23 64.42 3.46 internal_modf
0.59 64.81 0.39 _mcount_private
0.41 65.08 0.27 __fentry__
0.12 65.16 0.08 GC_mark_from
0.09 65.22 0.06 5579 0.00 0.00
Geom::parse_svg_path(char const*, Geom::SVGPathSink&)
0.06 65.26 0.04 35320 0.00 0.00
bounds_exact_transformed(std::vector<Geom::Path,
std::allocator<Geom::Path> > const&, Geom::Affine const&)
0.06 65.30 0.04 8 0.01 0.01
convert_pixbuf_normal_to_argb32(_GdkPixbuf*)
0.05 65.33 0.03 885444 0.00 0.00
std::vector<Geom::Linear, std::allocator<Geom::Linear>
>::_M_fill_insert(__gnu_cxx::__normal_iterator<Geom::Linear*,
std::vector<Geom::Linear, std::allocator<Geom::Linear> > >, unsigned long
long, Geom::Linear const&)
The cost is absolutely dominated by ink_cairo_surface_srgb_to_linear() and
ink_cairo_surface_linear_to_srgb(). My first instinct was to optimize
those 2 functions, but then I thought why are those even being called every
time I scroll through the image?
Why not convert the images up front to linear and stay that way in memory?
If that can't be done, then my optimization approach is:
1. replace ink_cairo_surface_srgb_to_linear() with a simple 3rd degree
polynomial approximation (0.902590573087882 - 0.010238759806148x +
0.002825455367280x^2 + 0.000004414767235x^3) and vectorize with SSE
intrinsics. The approximation was calculated by minimizing the square error
(maxError = 0.313) over the range [10, 255]. For x < 10, it uses simple
scaling.
2. replace ink_surface_linear_to_srgb() with a vectorized implementation
of pow(). Unlike srgb_to_linear(), a low degree polynomial can't be used
due to the curve having larger high order derivatives. An alternative would
be piece wise, low order polynomials.
The main question I have is what degree of accuracy is desired? Certainly,
it doesn't need double precision pow() since the input is only 8 bits! Is
+- 0.5 from the true value (before quantization) OK or do people depend on
getting pixel perfect results?
UJ
6 years, 12 months
xverbs
by Dmitry Zhulanov
Hi, all!
Im a game developer and using the inkscape for layouting my game
screens. Loading_screen_layout.svg one of them. It have g with id
pause_button and rect with id sandclock_bound which I use for animation
placement.
The verbs feature which inkscape already have is have some limitations.
The MAX_PATH for example. Also some verbs required user interactions, so
I need some eXtended verbs here.
Using python script I have load layout as xml and collecting
element-id's of interactive elements with "onclick" attribute, for
example. Using this element-id list I generate .yaml, which is some sort
of batch file. Here is the .yaml file which is used with Inkscape to
clean up layout and put button image in separated file with
pause_button.svg filename. Also I count undoable actions to restore
state generating verb EditUndo.
command: inkscape -B loading_screen_layout.yaml
----------- loading_screen_layout.yaml ---------
run:
- xverb-id: XFileOpen, loading_screen_layout.svg
- xverb-id: XUndoLabel, fresh_document
- xverb-id: XSelectElement, pause_button
- verb-id: EditInvert
- verb-id: EditDelete
- verb-id: FitCanvasToDrawing
- xverb-id: XFileSaveAs, pause_button.svg # save with stupid name
- xverb-id: UndoToLabel, fresh_document
- xverb-id: XSelectElement, pause_button
- verb-id: EditDelete
- xverb-id: XUndoLabel, fresh_document
- xverb-id: XSelectElement, sandclock_bounds
- verb-id: EditDelete
- xverb-id: XUndoLabel, fresh_document
- xverb-id: XFileSaveAs, loading_screen_layout_release.svg # save
with stupid name
- verb-id: FileQuit
------------------ CUT HERE --------------------
I guess you can get readonly access on my launchpad page.
https://code.launchpad.net/~dmitry-zhulanov/+junk/inkscape-xverbs
Code is tested with mingw+windows7+VS2010 sdk.
If you would like to merge the feature, I will clean up code to
conforming code style, remove printf's & so on
Any help or advice are appreciated!
P.S. sorry for my bad english :)
Best Regards,
Dmitry Zhulanov
7 years
Stroke to path
by Jabiertxo Arraiza Cenoz
Hi to all.
This is a requets tor change "path->stroke to path" menu item to
another definition -string- based in a new code.
My proposal is path->to path
This new code basicaly do a convert stroked item to path retaining
paint-order, fills and markers.
The patch is here:
https://bugs.launchpad.net/inkscape/+bug/1556592
Cheers, Jabier.
7 years
Arcs in the path editor.
by unknown@example.com
Hi,
I've not contributed to inkscape before, this is my first time.
I have created a branch which supports editing elliptical arcs in
the node editor.
I'm new to bazaar (and inexperienced with launchpad) so I think I've
done the right thing with a merge request here:
https://code.launchpad.net/~danieljabailey/inkscape/arc_node_editor/+merg...
(but thought I'd check by asking on this list.)
Is this an interesting feature?
If so I can polish it up for merging into the main repo.
Thanks.
Dan.
7 years, 2 months
Release 0.92 plan
by Bryce Harrington
A year ago we kicked off a rapid 0.92 release, but turns out it wasn't
so rapid! But I'd like to re-kickoff 0.92, with renewed hopes of
getting through the remainder of the release process swiftly.
The main thing the release got hung up on was the cmake transition, but
at this point it's actually close to done and I think we can proceed.
We've accumulated a lot of nice features for this release. Please
review (and make sure your own items are listed!)
http://wiki.inkscape.org/wiki/index.php/Release_notes/0.92
I'd like to propose the following expedited plan for getting the release
out, with Chill being today, Frost in about a week, and Freeze a week or
so.
Bryce
# Period Tasks Notes
--------------------------------------------------------------------------------
√1. Open development.
√Implement new build system
√Begin switching packaging to use new build system
2. Chill. Development focuses on wrapping up
Post inkscape-0.92-pre0.tar.gz
Today Disable features that aren't finished
Identify 'make distcheck' issues
Identify remaining writing needed for Release Notes.
Identify any release blocker bugs [scislac]
Start an About Screen contest
√ Recruit Release Wardens for Hard Freeze
3. Frost. Only production-ready code committed to Mainline
Finalize any major changes to platform packaging
May 15 Inkscape must pass 'make distcheck'
(1 wk) Finalize about screen
Finalize Release Notes except Known Issues
Post additional inkscape-0.92-pre*.tar.gz releases
Packagers test creating pkgs of the -pre* releases
4. Freeze. Stable Branch is forked from Mainline
Regular development resumes on Mainline.
May 22nd-ish Only Release Wardens can commit to Stable Branch
Cherrypick bug fixes from Mainline to Stable
Complete any late work under advisement of Wardens
Focus on release-critical bug fixing.
String Freeze No further string changes allowed on Stable Branch.
Translators work on translations.
Finalize all extensions
Finalize codebase translations
Finalize Known Issues section of Release Notes
Finalize packaging scripts
Post additional inkscape-0.92-pre*.tar.gz releases
5. Release. Post inkscape-0.92.tar.gz
Post packages
Post official announcements
Plan 0.92.1+ release(s), if needed
6. Open development.
== Postponed ==
Decide new unit testing system
Ensure Windows uninstall works
Integrate new swatch dialog
Migrate mailing lists off sourceforge
(Other bits off roadmap...)
Triage and prioritize bugs report this year
Finalize tutorials to be shipped with release
Finalize other docs included in the release
7 years, 3 months
Style dialog
by Tavmjong Bah
Hi,
One of the proposed GSOC projects is better CSS style sheet support.
There are a number of simple things that can be done to improve
Inkscape's use of style sheets and there is one big thing... adding a
Style editing dialog. I've made a first stab at designing such a
dialog.
The dialog presents a list of CSS selectors.
* Clicking on selector
Selects all matching objects in the SVG document.
* Double clicking on selector
Selects all matching objects in the SVG document and opens CSS
dialog.
* Dragging selector
Allows reordering selectors.
* Click on object
Selects all matching selectors.
* Modifying property
If "Sheet" enabled: modifies CSS of highlighted selector if only one
selector highlighted otherwise produces error message. If "Attribute"
selected: modifies inline style attribute.
* Clicking on '+' in front of selector
Adds selected objects to selector.
* Clicking on 'x' in front of object
Removes object from selector.
* Clicking on '+' at bottom
Opens up text dialog to add new selector. If the selector is a Class
selector, adds the class attribute to the selected objects with the
value of the selector name. If the class attribute already exists,
appends the selector name to the class attribute value (the class
attribute can include more than one class name).
* Clicking on 'x' at bottom
Removes selected selectors unless selector is a Class selector. If it
is a Class selector: if the selector was selected by clicking on it,
remove the selector; if the selector was selected by selecting objects,
removes the selector name from all selected objects class attribute.
This dialog could replace the "Selection Sets" dialog, using CSS class
attributes to define sets.
Please comment on the dialog here or at:
http://wiki.inkscape.org/wiki/index.php/Style_Editor
Tav
7 years, 3 months
Inkscape 0.92pre0 Mac OSX 10.11.5 Compile Error
by Partha Bagchi
Tried compiling on the Mac. Get the following error:
make[2]: *** No rule to make target `src/inkscape-version.cpp', needed by
> `src/CMakeFiles/inkscape_base.dir/inkscape-version.cpp.o'. Stop.
> make[1]: *** [src/CMakeFiles/inkscape_base.dir/all] Error 2
> make: *** [all] Error 2
My command line invocation:
CXX="g++ -stdlib=libc++ " cmake -DCMAKE_CXX_FLAGS="-std=c++11
> -Wno-error=c++11-narrowing -Wc++11-extensions -O3 -ffast-math
> -ftree-vectorize -mmacosx-version-min=10.8"
> -DCMAKE_EXE_LINKER_FLAGS="-headerpad_max_install_names"
> -DCMAKE_INSTALL_PREFIX=./Release -DWITH_GTK3_EXPERIMENTAL=YES
> -DCMAKE_BUILD_TYPE=Release ..
7 years, 3 months