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