Konstantin's weekly report #6

Hi there! It’s time for another report!

Ivan have finished some basic functionality for the new packed file format:

  • User can “Save As” to zip format
  • When saved as zip, all BMP and PNG files are packed into zip file as well
  • User can “Save As” zip file back into sif, then all contained images are unpacked into directory

see the commit history

The linked sif files are not packed inside during the “Save As” operation yet - this is a work to do next.
The current implementation already includes a LOT of internal changes, so Ivan considering to propose a pull request to merge the current progress into master. This would allow to avoid merge problems in the future. If the pull request will be accepted, then everyone will be able to play with the new feature in the next snapshots.

This week I was investigating the possibility to migrate our web infrastructure to more powerful servers. And found some interesting results. The solution is not that cheap as we have now, but offers good perspectives for further growing. This is not directly related to development, but I guess I am not the only one who annoyed by the quirks happening with the forum’s database.

Next, we have updated our character template, if you remember such one. Now it uses the advantages offered by new version of Synfig - “Exclude from Rendering” and “Parameter-defined Interpolation” features. To be more clear: all control widgets are automatically hidden now and use constant interpolation for correct switching. Since those changes are intended for use with “not-released-yet” version of Synfig, they are located in the special development branch for now. You can download it here.

Last week I also was lucky to finish some long-awaited feature - group layers now can be scaled interactively using the handle. Better to look yourself - youtu.be/jGLPuwOekvk

Carlos keeps working on the new approach to split tangents. The basic implementation is done. Now it’s pending to add UI menu elements and also he mentioned some problems with handles interaction to resolve.

We also got contributions from Djay - he have fixed several crashes, related with adding new keyframe, and keybindings.

Finally, one more thing to mention - Yu Chen have prepared a special icon set for “Parameter-defined interpolation” feature.

That’s all for today. The snapshot packages are still in the process of uploading. Impatient ones can already grab Linux/Windows snapshots from here - sourceforge.net/projects/synfig/files/snapshots/. See you next week!

We must keep the momentum of this development/debugging inertia!

The snapshots are uploaded now - synfig.org/cms/en/download/development


I still have mixed feelings about merging the “zip-container” branch into master.

From one hand, this branch is a huge revamp to the file-saving infrastructure. Thus, delaying this merge can lead to the troubles later, especially if we have some changes related to saving in the master branch.

On the other hand, I amp pretty sure that merging “zip-container” feature will delay the release of 0.64.1, because we will need time for additional testing and there are extra bugs may come. I don’t want that stress.

So, my proposal is:

  • Declare a feature freeze for 0.64.1
  • From the current status of “master” branch create a new branch called “0.64.1”. We will put all final touches and last-time fixes there (I mean apply localizations, fix last bugs - I believe all those changes will be minor and won’t touch the file-saving infrastructure)
  • Merge “zip-container” into “master”.

Thus, you and Ivan can continue developing features in the master branch and I will finish ASAP with the 0.64.1 release.
When 0.64.1 will be released, I will merge we will merge it into master and development will be continued as usual.
BTW, this approach is very similar as we did for releasing Windows version of 0.64.0.

I agree on that. In fact I was wondering how much more time would we were waiting to release 0.64.1. In any case, Ivan, me and any other that are working on a feature must merge/rebase the branch to the latest master. If possible (preferred) rebase if not, merge. This way, the next rebase to 0.64.1 when release will be smoother.

So, message for the coders! If you want your feature to be included into 0.64.1, hurry up!!!

I’m almost finished with the new feature of the Tangents handling:
github.com/genete/synfig/commit … tangents-2
Now you can:
Split/merge tangents by angle or by radius or by both
Feature keeps the functionality of the old files
It removes the “Split” member of the ValueNode_Composite for BLinePoints
Also it adds “Radius Split” and “Angle Split” members.

Now I’m working on mouse gestures to split the tangents without need to use the contextual menu.
Currently the behavior is that if tangents are merged (full) then if you press SHIFT while dragging one tangent, its splits (full) them.
So the question is:
Which is the preferred combination of keys to split/merge with gestures the tangents?

We have three possible keys: SHIFT, CTRL, ALT and its combinations.
We can have the following gestures:

Full merge(split) to full split(merge)
Radius merge(split) to radius split(merge)
Angle merge(split) to angle split(merge)

It gives a total of 6 cases.

My proposal is:
CTRL splits if merged
ALT merges if split

If it is full merged
CTRL gives radius split
If Radius is already split
CTRL gives angle split

If it is full split
ALT gives angle merge
If angle is already merge
ALT gives radius merge

This way we reduce the number of keys but allows the user to split sequentially.


I was wondering if there could be a ppa of the trunk version like inkscape launchpad.net/~inkscape.dev/+archive/trunk since new changes are coming regularly.

Continuing with the tangent thing, this is how it works at the moment (no mouse gestures yet):

plus.google.com/112323516314854 … ExDyDCHwra


I think the behavior is : Shift + Click on tangent --> split (full) them. Then you can drag splitted tangent without Shift. (but shift+click/drag is a shortcut)

Has Shift+Click is already in mind to split both radius and tangent, can make sense to keep it and “upgrade” his behavior.

My proposal is:
SHIFT+Click full splits if merged (Has actual)
CTRL+Click full merges if split

SHIFT+R+Click gives radius split
SHIFT+A+Click gives angle split

CTRL+SHIFT+A+Click gives angle merge
CTRL+SHIFT+R+Click gives radius merge

My proposal is more tricky about key learning, but has two advantages

  • do not have sequential but direct access to split/merge functionality
  • we can choose to split the angle without have to split the radius.

Nota : I prefer to not choose ALT+Click(drag) has in most gnu/linux window manager it’s use to move window from anywhere

Linked subject : What about a Shift+Drag function who just fix the actual splitted angle like in inkscape ?

This is absolutely wonderful work so far, and I really enjoyed watching the demonstration on Google+.

I think a nice enhancement to this feature would be for tangents where the angle is split to have a different duck shape - still orange, but a diamond as in Inkscape. This is because this sort of node is used for corners and not for smooth curves, and therefore it’s very important not to have this sort of node the wrong place before you start animating.

CTRL+click conflicts with ‘add handle to selection’ which might cause accidental merge when selecting ducks.
CTRL+SHIFT+A click conflicts with ‘Select all Layers’.

On the other hand,

CTRL+click drag conflicts with Rotate
ALT+click drag conflicts with Scale

But maybe we can override them when selection is only one handle. Same applies to your proposals… hmmm


It is nice. But,. …
We need to review all the keys combination to make them consistent. :frowning: Currently, SHIFT in Inkscape over a single vertex, doesn’t keep the axis value, like we do (they use CTRL). On contrary, we use CTRL to add to selection where Inkscape uses SHIFT… oh dear…

Can we use the third button (pressing down the mouse wheel) on the mouse - if I was over a duck and pressed third button to split and un-split the angle and then shift and third mouse button to split and un-split the radius?

I would find that a huge help and very quick, although we’d still need shortcuts for people without three-button mice.

Yep why not… but mac users generally just have one… !

why ? if users do CTRL+A+SHIFT … i agree… but that’s different. Anyway has Ctrl+Click is already used… my proposition is no more consistent.

I’ve noticed on the Blenderart forum that most of the Mac artists use a three button mouse for Blender - I don’t know whether Carlos or Yu use a three button mouse on their Macs.

nowadays, most of mac users ship a three+ buttons mouse as standard input device. We can safely to make three buttons as minimum requirements when using Synfig Studio to produce animation seriously.

My proposal for split-tangents keybindings:

Ctrl + Left mouse button = Full split for tangents (angle + radius)
Shift + Left mouse button = Split tangent radius only
Ctr + Shift + Left mouse button = Merge both angle and radius

I don’t think we need anything else.

Also, my preference is to have “Linktangent angles” option instead of “Split angle”. The same for radius: “Link tangents radius” instead of “Split radius”. Of course it’s have inversed meaning. I think such names will be easier to understand for user.

Again: CTRL + click on a handle implies “add handle to selection”, so it would make impossible select two tangents handle (to linking for example) without full split them.

I think I don’t understand that. “Link” is not the same than “Merge” or “Split”.

For me “Link” means: “discard one of the two value nodes and use the other as the one for both”
And “Merge” means: “Calculate the average of the current value and set that value it in both value nodes at that time”. It also implies that from now on, modify one tangent radius (angle)(both) implies modify the other too.
And “Split” means: “From now on the modification of one tangent radius (angle)(both) doesn’t imply the modification of the other too”. Values aren’t modified when you split the tangent’s radius (angle)(both).
But always taking in consideration that we are talking about setting a value not replacing a value node, like we do when linking. So when you perform those current actions (merge or split) over an animated value node, a new waypoint is set where applicable and the value node is nor replaced in any case.


Right. Then I’ll correct my proposal:

Alt + Left mouse button = Full split for tangents (angle + radius)
Shift + Left mouse button = Split tangent radius only
Alt + Shift + Left mouse button = Merge both angle and radius

Although, I don’t like the usage of Alt modifier, because it’s usually occupied by window-manager in Linux…
I don’t know how hard it is bind full spit onto just the “S” key? I.e. if you have one or many tangents selected, then press “S” and they become splitted.

I am talking about the option renaming, only that. So it will be easier to understand for users.
Just renaming “Split angle” to “Link tangent angles” will make life easier.
Of course, the behavior of the checkobox will be inverted then:
(Split angle = on) == (Link tangent angles = off)
(Split angle = off) == (Link tangent angles = on)
That’s it.

I agree this point with Genete. I think it’s more confusing for users to use Link terminology in other thing than linking layers parameters (chain icon).

Split synonym : break, separate, divide, part, dissociate, disunite, disjoint


+1 , because i like the duck reference !

Another Proposal
CTRL+U (unite)
CTRL+SHIFT+U (opposite to unite)

with sequential idea of genete, angle then radius unify and radius then angle disunify (i still prefer direct and full feature access than sequential)

Nota: synfig kb shortcut