© 1992-2014 Arahne, d.o.o.
Download the source from here:
apaint4.1r.tar.bz2 (673 KB) May 2014
Why should you try it?
Because this program was not written as someone's lesson in programming, but to solve a real need.
It is used by hundreds of people to do real work, during their day job.
If you just want to try it, without compiling it, then please download the ArahWeave demo, which also contains ArahPaint4.
Why do we need another paint program?
This package contains ArahPaint4, a textile oriented paint program. Textile oriented means that:
- it has good tools for working with reduced color images (palette)
- for color reduction
- for drawing in repeat
- for drawing in aspect ratio different than 1:1, as this is necessary for weaving
- works well with large images (16000x16000 and more)
- allows pixel level precision at drawing and positioning of selections
- incorporates a nice image browser
- has unlimited undo/redo
- filters work in repeat
- has keyboard shortcuts equal to Photoshop whenever possible
- has a couple of functions you will not find in any other program
This is a pixel pushing program, not a photo retouching program. You should look at Photoshop or GIMP if you need red eye reduction. The user's manual, keyboard shortcuts list and screenshots are available from Arahne's web site
With ArahPaint4, easy things remain easy, while complicated ones remain impossible ;-)
ArahPaint4 is licensed under GPL2, and the libraries it uses are licensed under LGPL.
ArahPaint4 is usually delivered as a part of ArahWeave CAD/CAM for weaving. Arahne has released ArahPaint4 as open source, together with some custom libraries which ArahPaint4 uses. For this reason, ArahPaint4 uses non-standard build method, since the libraries stay at their place as if it was still part of ArahWeave, to minimize the changes to the code. In this way, it is easier for Arahne to continue the development of open source and non-open source programs in parallel.
To compile ArahPaint4, you will need a C and C++ compiler and development environment for:
- TrollTech's Qt version 3 or later, but not 4
After uncompressing the source files with command
tar -jxf apaint4.1r.tar.bz2
you will need the edit one configuration file with a text editor of your choice.
In that file, you need to edit the line
so that it will reference the directory in which you have placed the source. You need to replace
/home/dusan with your development directory.
You may also change the line
make -j 4
so that the number after -j reflects the number of CPU cores of your computer. Your compilation will be much faster in parallel. Later, if you wish you can also change the file
makeReleaseIcc (if you use Intel C/C++ compiler) or
makeDebug (if you wish to make a version with debug symbols). This was the only way we could customize compile Qt environment, without requiring root permissions. The rest should be easy.
The easiest way to build ArahPaint4 is to type
in apaint4 directory.
If all goes well, you should be able to type
and be able to run the program.
If it fails, here are the steps involved: cd into each of the library directories
make in each of those directories. Then go in the
main directory and type
to clean up the garbage from any previous build, and type
to compile the whole ArahPaint4 program.
If you wish, and know how to configure the beast, you can also use Qt designer to compile and debug the program. On OpenSuse 10.3, you can run the Qt designer with command
If ArahPaint4 runs correctly, and you want to use your own version, it is best if you just make a link to the desktop to the script
Due to some strange bug in qt3 library, the qt library shipped with OpenSUSE 11.0 or 11.1, program runs, and mostly works, but drawing operations (draw line, circle, rectangle), do not work. In order to fix this problem, you need to take the qt library from OpenSUSE 10.3, and it will work. Copy the file libqt-mt.so.3 to
main/common/lib, so program will use this library and it will start working correctly.
Making a stand alone distribution
If you want to make a little stand-alone ArahPaint4 distribution, you will need the following files:
|main/msg/*.msg||all text files for different languages, all texts are UTF8 encoded|
|main/apaint||script to run the program|
|main/common/icons||directory with all the icons needed by the program (many are also from ArahWeave). All icons need to be 32 bit PNG with alpha channel transparency.|
|main/common/lib/libAload.so||library for all file formats for loading|
|main/common/lib/libAprint.so||library for printing and saving all supported image formats|
|main/common/lib/libAiconio.so||library which handles creation of icons for image browsing|
|main/common/aspawngp||program to print via gimp-print as a separate process|
|main/common/agutenp||program to print via gutenprint as a separate process|
|main/common/profile/screen||screen color profile, unused in ArahPaint4|
If you wish, you may also put the extra libraries in a different location, but you will need to modify the LD_LIBRARY_PATH in the apaint script, to reflect that change.
ArahPaint4 configuration settings
ArahPaint4 also reads the
configuration file from the user's home directory.
If you use ArahWeave DEMO, you will already have it in place and you do not need to worry about anything. ArahPaint can also write the configuration file, ever time you choose Help > Save setup > flag with language.
Language will be changed during the next startup. Program will also save default directory of images, default image browser settings, and some other more exotic setting. You may inspect the configuration file with an editor and change other settings, which you dislike.
||choose the program language: chi, cht, dut, eng, fin, fre, ger, ita, pol, slo, spa, tha, tur|
||printer x dpi x 1000|
||printer y dpi x 1000|
||selected printer name|
||left print border in mm|
||upper print border in mm|
||print width in mm|
||print height in mm|
||change default image directory|
||do we prefer metric or imperial system (for ruler)|
||command to send the binary print file to printer|
||after how many days of inactivity should unused icons be cleared from icon cache|
||should the program open with visible ruler or not|
||the printer name of selected printer from printcap|
||small screen font size (in points)|
||normal screen font size (in points)|
||enable antialiased fonts, bold, italic|
||antialiased font name|
||should the program immediately open with browse window to load image|
||should filter fields be enabled by default on browse window|
||default size of main window|
||default size of image browse window|
||should we use MIT SHM extension to get faster refreshes.|
||should we hide Save menu and leave just Save as... so people do not overwrite their files by mistake|
||should the unused colors from the colormap be kept when loading new image|
||is first pallete color number 0 or 1|
||defines default settings of image browser; several bits coded in one number|
The original ArahWeave's .arahne configuration file contains many more options (currently 270), but ArahPaint will not overwrite the unused options.
How to contribute and debug?
If you wish to contribute to ArahPaint development, or if you find a bug, please contact Arahne at
Please provide the image which manifests the bug, and step by step instructions to reproduce the bug.
If you want to debug a problem more in detail, you can compile a debug version by typing
Then you can run the program in ddd debugger by typing
This is is most useful if you have a core dump, which you are able to reproduce, and you want to check where in the source does it happen, and what is the state of the variables at that moment.
If you suspect a small memory overwrite or a subtle bug which does not manifest in immediate crash, you can also try running the program with valgrind by typing
This will give you positions of errors in the source, with descriptions of the errors. It is especially useful for memory leaks and memory overwrites. But program runs much slower.
Obviously, you need to have ddd or valgrind installed to use the respective tools.
Good luck in compiling,
Arahne development team