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
Turned off Github Issues
by Martin Owens
Dear all,
Hopefully this won't effect anything, but the not-yet in use github
page had it's issues tracker switched on and was collecting bug
reports.
https://github.com/inkscape/inkscape
I've gone ahead and switched it off, but there was 10 or so issues that
we may have to think about translating to launchpad.
Best Regards, Martin owens
6 years, 12 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
7 years
YAML (libyaml-dev, libyaml-0-2) version >= 0.1.7-1 becomes hard dependency for inkscape
by Dmitry Zhulanov
I'm going to merge in my "xverbs" branch which requires YAML.
So it's still possible to guard all code behind a WITH_XVERBS if we
cannot add that lib as a hard dependency, but in the current state of
things yaml would become a hard dependency of inkscape.
If anyone has any problems with that (compatibility on some platforms
maybe?), please tell before the merge
Best regards,
Dmitry Zhulanov
7 years
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
Introduction
by Justin LaRose
Hello All -
I wanted to take a minute to introduce myself on here, my name is Justin
LaRose and I hope to soon be a contributor and start working on some code.
I've worked mainly with C# and Visual Basic in the past but am looking
forward to working with C++ and learning more about it.
I was having some issues with dependencies when trying to build the
developer instance on my laptop (Ubuntu 16.04) and was wondering if anyone
might have some time to help me get everything built so I can start to work
on some bugs?
I'm looking forward to getting to know everyone better as I learn more
about the project and the code base.
Thanks!
Justin LaRose
7 years
Here's a crashing .svg file
by Miguel Lopez
I'm just gonna leave a crashing .svg file here for developers to look at since it been crashing upon opening, and I was using mirror, rotate copies extension. It crashed when I attempted to scale the entire watch, and then I couldn't open earlier version of the watch. Oh, and I think that arrange tool might need a "center of page" instead of having to type in axis for the rotate part. That would make this watch a lot easier.
Other than that, I'm really liking where Inkscape is getting at. I must say that I am using it alongside with Illustrator to get the best of both world.
7 years
Code complexity survey
by Vard Antinyan
Dear inkscape developers,
We have undertaken a task to assess code complexity triggers and generate recommendations for developing simple and understandable code. Our intension is to share the results with you, developers, so everyone can learn the triggers behind complex software.
We need your help for rigorous results. My request to you is - if you get 5-10 min. time, would you please consider to answer the questions of this survey on code complexity?
https://goo.gl/forms/h9WXZ8VSEw7BUyHg1
You are welcome to learn preliminary results through this link:
https://www.facebook.com/SoftwareCodeQuality/photos/?tab=album&album_id=1...
The results will be shared in a public webpage and everyone possible will be invited to learn and discuss them.
Your knowledge and experience is vital for achieving substantial and generalizable results, and your effort is much appreciated!
Sincerely
Vard Antinyan
PhD candidate in University of Gothenburg, Sweden
Tel: 0046317725707
7 years