CinePaint and Perl

These developer notes are for the benefit of those working on adding Perl support to CinePaint…

Image courtesy of photographer Terry Lane

There’s no Perl in CinePaint now. In CVS I have a little Perl batch script I wrote to create thumbnailed web pages from a directory of images, but that uses GraphicsMagick.

There are two open Perl CinePaint tasks. One is to add CinePaint support for Cons, a clever 3-thousand-line Perl script that replaces Make and Autotools. The other is to support Perl as a scripting language in CinePaint.

Embedding Perl

CinePaint supports Scheme and Python as scripting languages now. We want to add Perl (and also Java). Perl’s been implemented for GIMP, although active support there seems to have ceased. It should be feasible to adapt GIMP code to bring Perl into CinePaint.

O’Reilly “Advanced Perl Programming” has a chapter on embedding Perl. You may want to review that before starting. Limited C knowledge should be sufficient. Embedding Perl is integration of existing code from GIMP, not a coding project. 

IMPORTANT! Do not post any plea for assistance from GIMP. They 
consider CinePaint their rival. It just makes them mad to mention we exist.

We probably want to use recent GIMP source code and may also want to refer to GIMP 1.0.4 from 1999 (when CinePaint was forked from GIMP). There hasn’t been much attention to GIMP Perl. It may be nothing has changed in a decade.

Building CinePaint Using Perl Cons

We need to create Cons build files for CinePaint. We want to use Cons before getting into improving it. You can look at the existing CMake or Autotools build scripts for clues what to put in the Cons build files.

Cons is in CinePaint CVS. Cons is orphan open source software. There is no support. There is documentation with it in our CVS. Using Cons 2.2.0, the last stable version.

At this point, don’t worry about getting fancy with detecting library paths in Cons, just go ahead and specify those absolutely to your distro locations. Unless somebody discovers a secret auto-detect mechanism in Cons, we will create an auto-detect function later using pkg-config. After we get Cons to build CinePaint, we can look into Cons code clean-up, which is needed for readability and extendability.

Love you guys!


  1. Perl is the best scripting language for Text processing and handle regex. I have posted few articles related to those at my blog

    Also Perl’s Cpan has lots of support that I don’t even need to think extra while developing project. I didn’t find such help on other programming language except Java and .NET

  2. Hi. First let me say that I am very happy to see that this project is still alive and well. You have been making groundbreaking headway into this field for years and I tip my hat to you. I was wondering what you mean by “deep paint” on the title of your blog. Is it 3D paint? (as in deep paint 3d or bodypaint) or is it deep bit depth as in 32bit? I’m guessing it’s the latter as I have not been able to fnd a 3d function. However, I do think that a 3D module would really rock. 32bit editing for textures is really important theses days especially for displacement maps, and having cinepaint with those features would simply be amazing.

  3. Hi!

    Excuse me for asking (still new with CinePaint), but why you're loking for another build system considering there are autoconf & cmake?

    Anything wrong with e.g. cmake?


Leave a Reply