1========================== 2 P. R. I. C. E. 3========================== 4 5 6 7 written by Riccardo Mottola 8 rm@gnu.org 9 10 11Home on Sourceforge: http://price.sourceforge.net 12 http://sourceforge.net/projects/price/ 13Document Revision: 7 January 2015 14Current Version: 1.3.0 15 16WHAT IS IT ? 17------------ 18 19PRICE, which stands for Precision Raster Image Convolution Engine, aims to be a high quality 20Image filtering, enhancing and manipulation program. It is written in Objective-C and AppKit, thus designed for Cocoa and GNUstep. 21 22 23TO DO 24----- 25- numeric input checking for convolution fields 26- Implement color median filter for luma only ? 27 28? Filter Paramteres need to be autoreleased ? 29? Undo should reset correct view scale 30? bilinear scaling seems to add a black border sometimes (50%) but nearest neighbour not 31 32 33NOTES 34----- 35- development and testing is currently done on MacOS-X 10.3, 10.4 and a G3, G4; 36 10.6 on i386, please report problems on other versions. 37 10.1/10.2 are now rarely tested but appear to continue to work, will probably deprecated in the future. 38- GNUstep versions have been tested by me on Solaris, Linux, MkLinux-ppc, OpenBSD, FreeBSD, NetBSD, MinGW on different CPU's 39 (x86-32, x86-64, SPARC, PPC, MIPS and older versions on 68k) 40 41HISTORY 42------- 43 44-- what's new in 1.3.0 -- 45(7 January 2015) 46+ Scaling, cropping, Greyscale, Brigthness+Contrast, Curves, Median, Equalization, Convolution now support/preserve alpha-channel 47+ Edge tracing ignores alpha-channel instead of refusing to filter 48+ Curves now support direct manipulation of splines 49+ Curves now supports better reset and other minor fixes 50+ Crop border add bug-fixes, Crop supports any byte depth 51+ Crop finally updated to PRFilterController architecture, thus it gains preview 52+ Preview window supports scaling 53+ Grayscale and inversion support 16 bit images 54+ bug fixes for imags which are byte-aligned and have more bytesPerPixel than samplesPerPixel 55+ on MacOS, handle through initial conversion alpha-first images (e.g. iPhone images) 56+ Filter parameters checked before sending self-update during live preview, helps for a more responsive interface 57+ enhanced support for 10.6, including UTIs 58 59-- what's new in 1.2.0 -- 60(25 December 2012) 61+ support for JPEG as save format 62+ In curves the transformed histogram is now drawn specular on top and not left 63+ various bug fixes (e.g. Erratic histogram calculation, Curves Reset) 64 65-- what's new in 1.1.0 -- 66(23 April 2012) 67+ Bilinear scaling 68+ bug fixes in custom edge tracer 69+ filters now close preview on Cancel 70+ Curves level correction 71+ GNUstep convolve matrix now acts on end-editing and not on enter, fixing year old limitation! 72 73-- what's new in 1.0.0 -- 74(08 August 2010) 75+ Preview for filters 76+ improvements and cleanup in the filter architecture 77 78-- what's new in 0.9.1 -- 79(31 December 2009) 80+ cleaned and fixed notifications and outlets of the window controller, which fixes a crash on GNUstep. Mac wasn't affected. 81 82-- what's new in 0.9.0 83(25 December 2009) 84+ fixes to build on current glibc and current compilers with optimizations enabled. 85+ new, unified, PRFilter architecture which simplifies all the controllers and unifies parameter passing with an Array 86+ all PRTransform actions (rotations, flips, transposition) now support both color and grayscale and preserve alpha channel 87+ complete update of all filters to support Cocoa >= 10.4 which pads the NSBitmapImageRep rows 88+ faster access to bitmap data by using PRImage instead of recreating the bitmap image rep. Used now pervasively, for example in the custom edge tracer: much faster 89 90-- what's new in 0.8.3 91(24 August 2008) 92+ performance and memory usage improvments 93+ license is now GPL v2 or later 94 95-- what's new in 0.8.2 96(20 February 2008) 97+ selectable method for greyscale conversion (rgb average and luminance of YCrCb) 98+ image inversion for both color and greyscale images 99+ in the GNUstep version an interface was corrected since it was corrupted and caused crashes 100 101-- what's new in 0.8.1 102(5 November 2006) 103+ equalization on the Y coordinate of the YCrCb colorspace 104 105-- what's new in 0.8.0 106(29 April 2006) 107+ the image representation is now a PRImage class which allows to access some fieds without fetching the TIFF image representation. This yields some speed up in some stages, like when fetching the original dimensions. 108+ the 5x5 convolution engine now works in color mode (separate RGB channels) too 109+ a small fix for the convolve progress panel that wasn't updating properly 110+ median filter has support for color filtering! (separate channel in RGB) 111+ implemented separable linear scaling 112+ implemented copy & paste 113+ faster FFT 114 115-- what's new in 0.7.0 116(26 June 2006) 117+ fixed a memory release bug that occoured when greyscale images needed to be converted in colorspace on load 118+ new interface for the "zoom" view of an image based on a pop-up button 119+ a small info line at the bottom of the image 120+ fixed zoom scale problem when doing undo/redo (it did always reset to 100%) 121 122-- what's new in 0.6.1 123(10 June 2005) 124+ automatic window scaling on open 125+ implemented a preference panel 126+ an Icon, finally! There are two versions of it, one for Macos-X and one for GNUstep. 127 128-- what's new in 0.6.0 129(11 April 2005) 130+ Brightness and Contrast adjustment 131+ histogram fixes 132 133-- what's new in 0.5 134(02 March 2005) 135+ Scale image added 136+ Crop image added 137+ undo aspect ratio update fixed 138+ many small tweaks in the UI (redesigned some panels, rearranged and relabeled those ugly Ok buttons) 139 140-- what's new in 0.4.1 141(19 January 2005) 142+ progress display for several filters (low and high pass, convolve, median, custom edge tracer) 143+ Undo fundamentals implemented, one level of image undo is held! 144+ Revert to saved works finally (thanks to the undo and some small fixes) 145+ fixed refresh of transpose, rotate90 and rotate270 146 147-- what's new in 0.4.0 148+ memory managment clean up (and some leak fixes) 149+ automatic conversion to grayscale for many filters if the image was in color 150+ further work in Custom edge tracer, algorithms now more complete and a third image can be used 151+ improved zero corssing / non zero crossing for the edge tracer(s) 152 153-- what's new in 0.3.0 154+ fixed a bug in the transposition of color images 155+ fixed a bug in the slider of the GNUstep Median filter interface 156+ added image rotation of 90/180/70 degrees 157+ added vertical and horizontal image flipping 158+ fixed some naming in the panel titles 159 160-- what's new in 0.2.9 161+ separate RGB color image equalization implemented 162+ colored display of Histogram and cumulative Hitogram 163+ memory deallocation fixes 164+ implemented zero-cross display for laplacian filters 165+ implemented customizable median filter (different forms and size) 166+ implemented the basis for a more customizable edge tracer 167+ fixed a bug in the DFTHighPass interface on GNUstep 168 169-- what's new in 0.2.8 -- 170+ NSImageView works now in gnustep (no more clipping) 171+ edge tracing is implemented (with selectable filters) 172+ fixed a weak comparison for color spaces in MyDocument.m and included the check of both Calibrated and Device color space so it works more reliably across different platforms. 173 174-- what's new in 0.2.7 -- 175+ histogram and cumulative histogram display 176+ fixed equalization, but improvment space remains. 177 178-- what's new in 0.2.6 -- 179+ DFT low pass now uses a rised cosine for the transition improving the smoothness 180+ the DFT low-pass controller now checks for the input range, also directly entering the numerical values works 181+ rewrote pointer access in the Convolve 5x5 and did some clean up 182+ auto-range for DFT based filters works now much, much better due to a careless bug I had left in 183 184-- what's new in 0.2.5 -- 185+ FFT is now displayed shifted with the 0 in the center of the image 186+ the DFT - inverse-DFT of the low and high-pass filters works now great without adding spurious lines. Now the actual filtering part remains to be done correctly. 187+ several GNUstep bugs were solved 188+ DFT based Low and High pass are now skectechd out and roughly functional 189 190-- what's new in 0.2.4 -- 191(26 Oct 2003) 192+ 2D FFT is now displayed in logarithmic scale, to ease visualization 193+ Save works (TIFF output) 194 195-- what's new in 0.2.3 -- 196(13 Oct 2003) 197+ 2D FFT is now usable, although it serves only as display (since only the real part is displayed and it is auto-scaled). But it should work on non square and non-power-of-two image sizes too! 198+ DFT filter at the first (useless) implementation, basically the image is transformed and back-transformed 199 200-- what's new in 0.2.2 -- 201+ key order in the convolution matrix is now correct 202+ white and black color spaces are now correctly recongnized, although I don't like my current conversion method. 203+ great FFT progress 204 205-- what's new in 0.2.1 -- 206(1 feb 2003) 207+ manual entering of convolution finally works (and not only when closing and reopening the panel!) 208+ "Auto Scale" correctly enables and disables manual controls, even on reopen. 209+ convolution now works fine, it wraps and mirrors over the edges as it should 210 211-- what's new in 0.2 -- 212(30 jan 2003) 213+ grayscale conversion 214+ first work on the convolution engine 215+ first work on filter preference panels. 216 217-- what's new in 0.1 -- 218(21 dic 2002) 219+ first initial draft, first layouts 220 221 222 223LIMITATIONS 224----------- 225- currently FFT and convolutions work only on grayscale images 226 227 228LICENSE and DISCLAIMER 229----------------------- 230 231PRICE Copyright (C) 2002-2015 Riccardo Mottola 232 233This program is free software; you can redistribute it and/or modify it under 234the terms of the GNU General Public License as published by the Free Software 235Foundation; version 2 of the License, or (at your option) any later version. 236 237This program is distributed in the hope that it will be useful, but WITHOUT 238ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 239FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 240 241You should have received a copy of the GNU General Public License along with 242this program; if not, write to the 243Software Foundation, Inc., 24451 Franklin Street, Fifth Floor, 245Boston, MA 02110-1301, USA. 246