* Add some const in function parameters, just to make sure.
* Cleanup the comments, because I got lost in my own code...
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1881 416bcca6-2ee7-4201-b75f-2eb2f807beb1
* Split clusters according to their volume (narrow covering) instead of occurence count. This ensures clusters representating a lot
of colors are split; and a lot of pixels with near colors are grouped together, which is what we want for low-color work.
* Rework memory management of clusters. Some of them were not malloc'ed but put on the stack, and then inserted in the list. Also
avoid copying+deleting a cluster in CT_Get, return the original instead.
* Use an union in the cluster struct to pack it a bit, since some data is used only in the color reduction phase, and some only in
the palette lookup.
The result is maybe slower, but looks much, much better. Fixes issues 63 and 441.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1878 416bcca6-2ee7-4201-b75f-2eb2f807beb1
* Further optimization to the colortree, now allocated in one single chunk of 4090 bytes (2051 times better than original code!).
Not doing all the malloc/frees should be slightly faster, and it also helps with cache locality (the whole tree can fit in the
cache).
* Remove the useless color "balancing" multipliers that did more harm than good.
We still need some improvements on the median cut, or maybe switch to a smarter algorithm; or add some cheats. See the JFIF quirks
for an example.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1876 416bcca6-2ee7-4201-b75f-2eb2f807beb1
There is room for optimization and maybe bugfixing.
The cluster table size is now:
511*15 = 7665bytes, this is 1094 times better than the color table.
Please test and report your results !
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1874 416bcca6-2ee7-4201-b75f-2eb2f807beb1
The 8megabytes conversion table is replaced by an octree taking 10kbytes (800 times better !)
The conversion is done with full 24bit precision instead of 19 bits (8 green, 6 red, 5 blue) previously.
Not added to makefile and integrated yet, because I need to bugfix first.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1873 416bcca6-2ee7-4201-b75f-2eb2f807beb1
* Remove useless and undocumented function getbrushtransparentcolor (does the same as getbackcolor)
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1832 416bcca6-2ee7-4201-b75f-2eb2f807beb1
* Display error code to terminal when loading an image fails. Mainly for debugging purposes.
* Use different error codes for different errors in ILBM loader.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1818 416bcca6-2ee7-4201-b75f-2eb2f807beb1
Note this alsoincludes the "oldies" branch.
This has the following consequences :
[C64]
* Loading and saving of screen-only, and color-only C64 picture is removed
* Loading and saving in FLI mode is now possible
* FLI constraint checker : tries to convert your image to FLI format, and put all the areas where it couldn't find a solution in a separate layer for you to fixup
* This is currently accessible only with a shortcut. Menu will come next.
[Amstrad CPC]
* Loading and saving of pictures in "Mode 5" is now possible. This custom format allows overscan mode 1 with rasters on 2 inks and split rasters on a 3rd one.
* Mode 5 constraint enforcer : will ensure you can only draw pictures that are valid in mode 5. Each ink is seen as a layer.
* This is accessible from a new button in the FX menu.
[Generic]
* Added patch as I saw it : platform that don't support reporting "free space" on disk will not display anything (instead of "0 bytesÃ" as before)
* For other platforms, when the free space is 0, we now have a disk full message.
The merge was not straight forward. I hope I didn't break too much things.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1810 416bcca6-2ee7-4201-b75f-2eb2f807beb1