inkscape crash recovery
by younes mesbah
hey everyone ,
We want to create a dialog box to revover files in case of crash and we still don't know how to open the crash-recovery box at the start of inkscape .
thanks for your help .
9 years, 9 months
[CAD] Status
by jaseg
Hi,
This week, again I feel I spent way too much time in gdb
I moved the code from using SPKnot for handles to ui/tool/ControlPoint. I did this not for dragging (SPKnot has built-in dragging) but for the selection feature of SelectableControlPoint s.
Connector creation by dragging or clicking both ends works now, live preview works, saving connectors works.
Remaining are a couple of segfaults: One when closing inkscape without saving just after a Connector has been created while the connector tool is still active, and one when I try to drag an endpoint of the connector. This one is actually quite tricky, I have not yet been able to track down its cause properly.
Another issue is that when a Connector is created with two clicks (but *not* when it is created via dragging), I have a leftover SPPoint at its start. I think I know where this comes from, but I have not yet found out how to properly delete a SVG object in inkscape without segfaulting.
And finally, though I can save SPPoints and SPConnectors just fine to SVG, I can't load them yet.
I would appreciate some eyes on the connector creation code in SPConnector.cpp with respect to the SPPoint dragging segfaults.
I am not very confident of my work in ref/unrefing things in the connector context.
The code can be found at [0]. To compile it, add -std=c++11 to your CPPFLAGS. It still needs that for a little variadic template I wrote. I will change this to a bunch of non-variadic ones for pre-C++11 before integrating.
Best regards,
Sebastian
[0] https://code.launchpad.net/~h-e-6/inkscape/connector-wip
9 years, 9 months
Gtk+ 3 test-binaries now in PPA
by Alex Valavanis
Hi All,
Daily builds of Inkscape with experimental support for Gtk+ 3 are now
available in the trunk PPA. I've named the package
"inkscape-trunk-gtk3". So...
1. We now get early warnings about build-failures with Gtk+ 3.
However, please remember to do a local test build with Gtk+ 3 support
before pushing any major GUI changes to trunk.
2. It's now easy to test the Gtk+ 3 version on Ubuntu without needing
to manually build from source
Note that there's a bug tag "gtk3" for tracking the (numerous) runtime
errors [1]. If you spot any new issues, or know how to fix anything
in the tracker then please get involved!
Cheers,
AV
[1] https://bugs.launchpad.net/inkscape/+bugs?field.tag=gtk3
9 years, 9 months
Boolean ops (again!)
by Eric Greveson
Hi devs,
I'm looking at Boolean operations (particularly Difference ops) on
real-world SVG files again, and I've come across another bug, which I've
reported here for posterity:
https://bugs.launchpad.net/inkscape/+bug/1209281. This comes with a sample
SVG file which might reproduce the bug. Note that I say "might" because it
is reproduced on the current trunk on my x86 Ubuntu 12.04, but not on the
latest Windows build I'm running (0.48.4).
I aim to have a look into what's going on here and hopefully come up with a
patch - I've looked through the livarot code in a bit of detail now, and I
think I understand at a basic level how the various path-intersection
algorithms are implemented (particularly wrt quantization of coordinates
and the implications for the sweep-line method).
Meanwhile, a couple of questions:
1) While I expect I'll be able to fix the current unstable behaviour
(occasional copying of topmost path's coords into bottom-most path during
difference operations, for too-small paths that "fall through" the
quantization grid), the whole requirement for quantization in livarot is a
bit unsatisfactory. Longer-term, it might be nice to switch to a
path-intersection algorithm without the quantization restriction, and that
deals better with degenerate cases - perhaps something like the CGAL 2D
intersection methods (
http://www.cgal.org/Manual/beta/doc_html/cgal_manual/packages.html#part_V...
I believe this part of CGAL is GPL licensed, is this an issue? Thoughts?
2) I keep coming across code in Inkscape that could be improved with the
RAII pattern (particularly, things like:
{
Thing *t = new Thing();
... do stuff with t ...
delete t;
}
When writing new code, I'd much prefer to use smart pointers, e.g.
{
std::unique_ptr<Thing> t(new Thing());
... do stuff with t ...
}
Obviously things like std::unique_ptr and std::shared_ptr require (part of)
C++11. I note that parts of inkscape use boost::shared_ptr - is use of
boost the way to go in this case, to keep support for older (non-C++11)
compilers?
Thanks
Eric
9 years, 9 months
Pre-merge checks
by Alex Valavanis
Hi All,
A minor error in yesterday's merge of the (otherwise great)
unit-refactoring branch was picked up by the automated testing in the
PPA. Basically, a couple of dead files were not removed from the
POTFILES.in list.
Can I, therefore, suggest that we always run a "make check" on
branches before merging them to avoid this happening again.
Thanks,
AV
9 years, 9 months
Staging website blueprints up
by Jared Meidal
All the current webpages are now reflected in blueprints for the staging website:
https://blueprints.launchpad.net/inkscape-web
I've used the nomenclature of "+" to indicate child pages, and to include the parent page in the title.
There are a number of blank pages still existing:
*about+overview
*about+screenshots (at least not much)
*community
*community+gallery (limited)
*learn
*contribute
*contribute+contributor-stats
*develop (not much more than descriptions and links to the child content)
What stands out to be in this review is that _many of the parent pages are blank_. I also understand that this is the staging site which has not been completed. I would prefer we not simply fill a void by adding content, or simply add links to the content on the child pages. Rather, is there a strong reason for these parent pages to exist at all, beside simply adding a category for the necessary child pages? If there is a vision for these pages I would like to see that reflected in our blueprints. Otherwise I think we may see need to consider a revision of the menu structure to keep a simple site and not loose users in the multiplicity of pages.
I would love to contribute more in filling content, if suggestions can be made within these blueprints or through the mailing list! Thanks.
--Jared
9 years, 9 months
Re: [Inkscape-devel] display/sodipodi-ctrl.cpp
by Johan Engelen
On 5-8-2013 23:13, Krzysztof Kosiński wrote:
> 2013/8/5 Johan Engelen <jbc.engelen@...2592...>:
>> Hi all,
>> Hope that someone who knows a bit about /src/display/sodipodi-ctrl
>> can help me with these lines:
>>
>> for (y = 0; y < side; y++){
>> px = reinterpret_cast<guint32*>(data + y * r);
>> for (x = 0; x < side; x++) {
>> *p++ = *px++;
>> }
>> }
>>
>> The "px++" is not necessary right? Should just be "px" the way I see it.
> No, the increment is necesary, because this line is copying an image
> row by row. Otherwise it would fill p with copies of the first pixel
> in the row.
>
> The only thing to do here is to perhaps move the declaration of px
> inside the loop.
Ah, lol, getting late :-) Missed the for loop completely, doh!
Thanks for paying attention better than me.
Cheers,
Johan
9 years, 9 months
extension/internal/cairo-render-context.cpp
by Johan Engelen
Hi all,
in CairoRenderContext::renderGlyphtext, the variable 'size' is never
used. Somewhere halfway, there is some error checking it seems, that
sets size explicitly to some hardcoded default value of 12.0. But again
this is never used in the method. Is it a bug? Or should it be
removed/commented out?
Thanks,
Johan
9 years, 9 months
[CAD] Next steps, a trivia question and discussion of the semantics for what objects a connector should avoid
by Sebastian Götte
Hi,
I'm moving on refactoring the connectors code. I just changed the toolbar a little bit so every connector type has its own button. During refactoring, two questions arised:
1. What does "Ege" as in "EgeAdjustmentAction" mean?
2. What semantics do we want concerning which objects are to be avoided by a connector?
A little elaboration on the second question:
Currently, Inkscape uses libavoid to route object-avoiding connectors. All object which should be avoided by the router are added an "inkscape:connector-avoid" attribute. This does not, e.g., allow an object to be avoided by certain connectors and ignored by others.
I can currently see three obvious solutions to that problem:
* Avoid objects based on group/layer membership. E.g. avoid any objects on the same top-level layer but ignore others.
* Avoid objects based on a "tag". This is not unlike the current approach, but I would really use a class instead of an own attribute for this to be easily interoperable with other implementations of this, especially a potential javascript router as discussed with Doug Schepers from w3c, who is currently working on a SVG connectors spec.
Personally, I favor the second solution since I think it is less hacky and more flexible. I think it would be a sane choice to have connectors avoid objects by default and to explicitely mark objects to be ignored while routing. If you wanted a connector ignoring any objects you could just use the non-libavoid routing types I am just adding.
* Any combination of the above
If you have any thoughts on this, please share them with me ;)
I'm now moving on to implement (somewhat minimalistic) "points" as described in [0] so I can then head towards renovating connector-context.cpp. My latest commit to launchpad breaks in an assertion when drawing a connector since it needs these changes. The commit before that should work, though.
These "points" will be placed whenever one places a connector's end, except if one places a connector's end on an existing "point". When drawing a connector, all visible points will be rendered as knots. This enables template-based diagram elements which are just are groups that contain a shape and one or more points for the connector to attach.
I will remove any logic from connector-context responsible for handling anything but two endpoints (if you want to draw a connector with multiple "stops", just chain together multiple connectors) and remove the "snap connector end point to connector's intersection with destination shape outline"-logic since I do not think this is too useful.
Best regards, Sebastian
[0] http://dev.w3.org/SVG/modules/connector/SVGConnector.html#PointElement
9 years, 9 months
dom/cssreader.cpp
by Johan Engelen
Hi all,
For those who know about dom/cssreader.cpp, is this code correct?
In CssReader::getPage(int p0):
int p = p0;
.....
XMLCh ch = get(p);
if (p != '{') {
error("@page requires '{' before declarations");
}
Shouldn't that be
if (ch != '{')
?
It happens a number of times in that function and looks like a bug to
me. If it is indeed correct the way it is now, please add comments to
those locations, because it is quite confusing.
Thanks,
Johan
9 years, 9 months