Symmetry Painting in GIMP ready to be merged

Hi all,

So I started a small crowdfunding for mirror painting in GIMP some time ago. It took some time since I had other priority (like our ZeMarmot film project) and my only time restriction was to get it out before GIMP 2.10 is out. And I knew it would take some time anyway.
Also I wanted to do things well. I know that some people were complaining that I could already release the code from the early demo I showed a video of, long ago. But seriously this was horrible crappy broken code. As a developer with some self-respect, I would never release such a code publicly, which was clearly done only to give an “idea” of what it could look like, not for solid code base of a good application.

Well I finally reached this state of a solid code base. I actually saw very quickly the need for something much more generic than just “mirror” painting. So I implemented what I called a generic “Multi-Stroke” feature, though Mitch did not like this naming at all and proposed to just call it “symmetry” (which I, in turn, don’t think defines the feature well, since it allows more than only symmetries, but well…). Basically from a single stroke coordinates, a “symmetry” would outputs 1 or more strokes (at different coordinates, but also with optional brush transformation too, using the new GEGL engine of GIMP).
With this base feature, which takes most of the code, I implemented the originally funded mirror symmetry, as well as a rotational symmetry, and a tiling symmetry (once the base code is there, adding any kind of “symmetry” is just a matter of minutes).
Well a video is worth any words. So here is the current state of the code:

For those who are interested into the resulting code or want to test, it is available publicly in a branch (hopefully soon to be merged to master): https://git.gnome.org/browse/gimp/?h=multi-stroke
Probably the next step of such a feature would be to have an API to allow plug-in developers to easily implement their own symmetries. I believe this would not be very complicated to implement too.
Enjoy!

About the authors of ZeMarmot

ZeMarmot logo

“ZeMarmot” project is currently being made by 2 people: Aryeom and Jehan. I guess it is time to present ourselves:

Aryeom Han
Aryeom Han, photo by Patrick David

Aryeom is a young South Korean independant animation film director and animation artists. She studied for 4 years in Sangmyung University in the Fine Arts department, with “Animation Film” specialty. Her first co-directed short animation, “Grandma Ocean” got screened in more than a dozen festivals and won 2 prices: “Best Short” in category “Traveling shorts in Korea” at 10th Asiana International Short Film Festival, and second price in the 3rd Busan Women’s Film Festival 2012.

She is now an artist in residency in the association LILA in Paris, and is trying to create her own animation studio, Studio Girin. Also she is an awesome user of GIMP.
Aryeom is the movie co-scenarist and film director.

Jehan
Jehan, photo by Patrick David

Jehan has been an actor as a young kid for a dozen of years, especially for movie dubbings, and also won an “Outstanding Youth Actor in a Foreign Film” award in the Young Artist Awards 1995 for his acting in the cinema movie “Dust of Life” by Rachid Bouchareb. Nowadays he spends time as a software developer (among others for GIMP…).

Jehan spent a few years traveling the world alone on a motorcycle (from France to Japan, crossing all Europe and Asia through Turkey, Kazakhstan, Mongolia, Russia, etc.), then he traveled with Aryeom across South Korea, Japan and New Zealand. Their travels are inspirational of ZeMarmot’s story.
Jehan is the movie co-scenarist.

Note that the Marmot is even more physical that one might think since Jehan has always been traveling with a plush toy (Marmot actually “pretends” to be a plush toy, in order to pass borders safely of course! But ssshhhh that’s a secret…) as a “copilot” on his bike and on every trip.
Here is the original Marmot, crossing by motorbike the vast desertic steppes of Mongolia (this is not a joke!):

Marmot Crossing Mongolia
Marmot Crossing Mongolia